diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 0000000000000000000000000000000000000000..99ab470ea3861b10ce3e1871680bb6b188a3164e
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1,7 @@
+# These are supported funding model platforms
+
+ko_fi: fusiondirectory
+liberapay: fusiondirectory
+open_collective: fusiondirectory
+community_bridge: fusiondirectory
+github: fusiondirectory
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 93bc7d5228fa768050e06716b25652debaf89da9..980c8af627b5c6def45f65bc7b9792b921fd4b06 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -34,7 +34,7 @@ All projects and everyone participating in it is governed by [FusionDirectory Co
 
 We have an various channel of communications
 
-*  [#fusiondirectory, the irc channel of FusionDirectory on freenode](https://webchat.freenode.net/), channel #fusiondirectory
+*  [#fusiondirectory, the irc channel of FusionDirectory on Libera](https://web.libera.chat/), channel #fusiondirectory
 *  [FusionDirectory Users mailing list](https://lists.fusiondirectory.org/wws/info/users)
 *  [FusionDirectory dev mailing list](https://lists.fusiondirectory.org/wws/info/developpers)
 
diff --git a/Changelog b/Changelog
new file mode 100644
index 0000000000000000000000000000000000000000..bfdf0a8a682d96cc60aca85ab645f575d24866fd
--- /dev/null
+++ b/Changelog
@@ -0,0 +1,2 @@
+See Changelog.md
+
diff --git a/Changelog.md b/Changelog.md
index b37aadd11f972343b28b6ab4daf6199dada99bc4..4609da665a4c94ff80bf2f8de70cd34a74ff1daf 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,40 +1,67 @@
-## %"FusionDirectory 1.3.1" - 2019-07-04
+## %"FusionDirectory 1.3.1" - 2022-09-09
 
 ### Added
 
 #### fusiondirectory
 - fd#5985 We don't have LDAP tab on FusionDirectory configuration
+- fd#6152 Add subscription screen
 
 #### fusiondirectory-plugins
 - fd-plugins#5911 supannRefId field is missing for "etablissement"
 - fd-plugins#5938 Make %passwordClear% available to sambaAccount hooks
 - fd-plugins#5939 create icons for ipmi and weblink
 - fd-plugins#5940 We don't have LDAP tab on FusionDirectory configuration
+- fd-plugins#5956 add mapping sinaps to Fd mapping for diffusion
 - fd-plugins#5957 creating icons for the sinaps plugin
 
 ### Changed
 
+#### fusiondirectory
+- fd#6024 Cleanup session handling
+- fd#6038 Move the "Click the 'Edit' button" message to the left
+- fd#6220 [CodeStyle] - 1.3.1 Requires adaptation to align code style with 1.4
+- fd#6221 [Enhancement] - Change CI 1.3.1 - CodeStyle to refelect 1.4 rules
+
 #### fusiondirectory-plugins
+- fd-plugins#5897 When a user is removed from Sinaps, we need to send back a deletion acquisition
 - fd-plugins#5913 Avoid mass acquistion when editing group gidNumber
 - fd-plugins#5948 description of a user should'nt be updated from SINAPS
+- fd-plugins#5993 _getTabFooter has been renamed getTabFooter
+- fd-plugins#6103 Adapt 1.3-fixes code to subscription core merge
+- fd-plugins#6180 [CodeStyle] 1.3.1 Plugin - Requires adaptation to align code style with 1.4
 
 ### Removed
 
 #### fusiondirectory-plugins
 - fd-plugins#5901 Remove Google+ from personal social accounts tab
+- fd-plugins#5992 Email icon should be moved to core
 
 ### Fixed
 
 #### fusiondirectory
+- fd#5862 filtering and "Unknown element type specified: !"
 - fd#5942 PHP >= 7.2 triggering error when count() is called with invalid countable
 - fd#5967 Systems dashboard crashes
+- fd#5974 Workflow problem when applying a template to an object triggers errors
 - fd#5978 when renaming branch aka department roles are not updated correctly
 - fd#5983 Write ACL on user/userRoles/groupsMembership not working when not having full user/user read right
 - fd#5987 ImagickException are not catched when showing an ImageAttribute
+- fd#5995 Audit events DN are too long
 - fd#5997 Incorrect error message when the mail cannot be sent by recovery
+- fd#6005 Problem with gidNumber in posix group template
 - fd#6006 expiration date in dashboard is 02.01.1970
+- fd#6017 IntAttribute badly handle empty value when minimum is set
+- fd#6023 Email icon missing from core
+- fd#6030 correct the get help section in the readme.md
+- fd#6097 Smarty path is not set correctly by fusiondirectory-setup --write-vars
+- fd#6122 Problems with FD web setup
+- fd#6142 The filter for configuration is wrong in fusiondirectory-setup
+- fd#6173 PHP error: Array to string conversion in class_fiInventory.inc:199
+- fd#6222 [1.3.1] - Fixing LDAP Search filter code style
 
 #### fusiondirectory-plugins
+- fd-plugins#5825 LDAP error in audit plugin
+- fd-plugins#5912 Unable to spread a user to FD from sinaps if the user is affected to an etablissement
 - fd-plugins#5917 flag_ownmailbox cannot be used with partage mail method
 - fd-plugins#5918 SINAPS : acquisition couldn't be sent because primary affectation isn't set
 - fd-plugins#5923 cname record appear on another domain when they contain the machine cn
@@ -44,6 +71,28 @@
 - fd-plugins#5944 add addvalues/delvalues documentation
 - fd-plugins#5945 unable to add SINAPS Structure
 - fd-plugins#5949 Systems dashboard crashes
+- fd-plugins#5963 error in SINAPS workflow
+- fd-plugins#5966 dovecot connection error
+- fd-plugins#5976 Problem with gidNumber in posix group template
+- fd-plugins#5970 Compatibility error between sudo and mixedgroup plugins
+- fd-plugins#5978 GPG key addition crash
+- fd-plugins#5991 ORCID last character may be 'X' and not a number
+- fd-plugins#6000 correct the get help section in the readme.md
+- fd-plugins#6063 Argument 4 passed to DhcpHostsAttribute::postLdapSave() must be of the type array, string given
+- fd-plugins#6079 reload dns map from dns interface didn't work , but from server it works
+- fd-plugins#6125 PHP error: Array to string conversion in class_fiInventory.inc:199
+
+### Security
+
+#### fusiondirectory
+- fd#6021 Failed LDAP operations may appear as Success
+- fd#6135 Security problems uncovered by audit
+- fd#6086 XSS in login screen
+- fd#6136 Weak random generator use in fusiondirectory-setup
+- fd#6137 XSS in management filters
+- fd#6217 [Security] - Set Cookie settings to TRUE for option "HttpOnly"
+- fd#6219 [security] - Cookie session is not renewed or set after authentification
+
 
 ## %"FusionDirectory 1.3" - 2019-03-04
 
@@ -3270,3 +3319,505 @@
 
 #### fusiondirectory-plugins
 - fd-plugins#2140 the template don't escape the html inside itself
+
+## %"FusionDirectory 1.0.4" - 2012-06-30
+
+### Added
+
+#### fusiondirectory
+- fd#913 There should be a password recovery link on the login page
+- fd#1018 supportDaemon should allow to call modules method easily
+- fd#1038 Handle schema changes
+- fd#1041 we need to add a new parameter to fusiondirectory.conf manpage asteriskParameterDelimiter
+- fd#1118 Adresse email alternative pour Password recovery
+- fd#1173 javascript should contain an inArray function
+- fd#1204 add spanish venezuela into the setup
+- fd#1205 we need to add the locale dir and the config for transifex es_ve
+- fd#1209 add 2 more attributes in network printer
+- fd#1220 Automatic return to login page after password change
+- fd#1246 ambiguous error message in installation check
+- fd#1280 provide ldif update files for recovery.ldif and goto.ldif
+- fd#1308 add one more attribute in network printer
+- fd#1328 add the entries in fusiondirectory.conf for board plugin
+- fd#1402 merge simple-plugin 1.0 into core
+
+#### fusiondirectory-plugins
+- fd-plugins#1032 asterisk application parameter delimiter changed from | to , (gosa bug 1177)
+- fd-plugins#1207 add 2 more attributes in network printer
+- fd-plugins#1260 we want to provision Windows pc from the interface
+- fd-plugins#1266 having the mac address next to the ip address in filter system list
+- fd-plugins#1356 integrating board into fusiondirectory-plugins
+- fd-plugins#1374 Handle schema changes
+
+### Changed
+
+#### fusiondirectory
+- fd#674 cleaning code for php 5.4
+- fd#984 accept-to-gettext should be re-wrote
+- fd#1069 Check for group conflicts case-insensitively
+- fd#1096 FusionDirectory menu should use plInfo
+- fd#1100 Plugin header system should allow to have multiple plugins on the same page
+- fd#1134 dn2base should handle a sesond parameter
+- fd#1211 style.css should be adapted to have some css about simplePlugin
+- fd#1243 Rewrite password recovery plugin with simplePlugin framework
+- fd#1270 remove the artificial limit to two different objects in objects group
+- fd#1277 rework the README.cnconfig
+- fd#1278 all the manpages from fusiondirectory should be updated
+- fd#1358 in the setup it still show we need more than 64MB it should be 128
+- fd#1359 the wording is not just in setup for windows pc we said "workstations" but that should be Windows pc
+- fd#1438 board plugin must go in addons
+
+#### fusiondirectory-plugins
+- fd-plugins#675 cleaning code for php 5.4
+- fd-plugins#1238 standardazing the argonaut menu service entries
+- fd-plugins#1239 standardazing the spam and antivirus menu service entries
+- fd-plugins#1240 standardizing log service entries
+- fd-plugins#1241 standardizing fax service entries
+- fd-plugins#1276 the ip should be mandatory on server, terminal and printer objects
+- fd-plugins#1309 Board should use simplePlugin
+- fd-plugins#1414 getFAIstatus.php should not be packaged in main
+- fd-plugins#1421 move the include/jsonRPCClient.php to the argonaut pacakge
+
+### Removed
+
+#### fusiondirectory
+- fd#1216 remove the check for the library as fusiondirectory-makentpassword use it internaly
+- fd#1224 we should remove the code activation ob_start as it not recommended way of compression
+- fd#1257 moving the update-locales script to management tools
+- fd#1271 remove the code showing the type of object in object group title member objects
+- fd#1302 Step 2 of password recovery should be removed
+- fd#1327 remove repositoryBranchHook from manpage
+- fd#1382 the supportDaemon.inc class should be moved the argonaut plugin
+- fd#1415 Argonaut does not support message sending, the feature should be removed
+- fd#1416 getFAIstatus.php should not be packaged in main
+- fd#1420 move the include/jsonRPCClient.php to the argonaut pacakge
+- fd#1448 remove dead code from the source
+
+#### fusiondirectory-plugins
+- fd-plugins#1037 update_entries function should be remove from supportDaemon
+- fd-plugins#1254 remove old code saving goSyslogServer
+- fd-plugins#1261 removing all obsolete opsi code from various plugins
+- fd-plugins#1273 this code is not correct now that the fusiondirectory.conf contains all the entries
+
+### Fixed
+
+#### fusiondirectory
+- fd#508 pre/post script not working properly with mail command
+- fd#586 FSF address incorrect in source code and documentation files
+- fd#999 Problem of auto inclusion of the class_pdf.inc
+- fd#1011 smarty3 with gettext generate funky errors :/
+- fd#1021 recovery.schema should follow LDAP naming rules
+- fd#1031 Web interface silently fails with passwords > 40 characters in length (gosa bug 1168)
+- fd#1039 wrong my $path in fusiondirectory-insert-schema
+- fd#1084 password Hook is called in different manner in password and userManagement.
+- fd#1106 setup.php must use an absolute path for the template
+- fd#1120 In style.css, line-height line 1528 seems wrong
+- fd#1121 The date picker is not working anymore
+- fd#1163 fusiondirectory-setup is wrong in connection to ldap
+- fd#1180 Pop-up error when locking/unlocking user
+- fd#1181 Line 310 of class_msgPool.inc is wrong
+- fd#1183 class_filterLDAP.inc don't check correctly the base and objectStorage
+- fd#1214 Wizard goes into an infinite loop if the popen function is not available
+- fd#1221 French accents in password recovery mailbody
+- fd#1225 when i click on the link for password recovery on the main page, it say not activated but as you can see in debug text its not
+- fd#1226 option -i not in fusiondirectory-insert-schema manual
+- fd#1230 Type:8, Message:Trying to get property of non-object $date in headers.tpl
+- fd#1242 Password recovery doesn't use the configured set address
+- fd#1245 installation doesn't continue after installing "missing" driver
+- fd#1248 [wizard] Add non blocking test for MDB2 drivers on wizard checks step.
+- fd#1256 error in rsyslog view
+- fd#1264 Debian 6 - commande : fusiondirectory-insert-schema
+- fd#1275 this code is not correct now that the fusiondirectory.conf contains all the entries
+- fd#1281 change the name of the reponsible person inside all the schema and ldif
+- fd#1299 fusiondirectory-insert-schema dont work correctly
+- fd#1333 supportDaemon can cause some PHP errors
+- fd#1334 the passwordRecoveryUseAlternate fonction is no longer in the code
+- fd#1346 when restarting a service trought argonaut some LDAP error appear
+- fd#1347 in 1.0.4 with patch to support Service.manage like action it doesn't work
+- fd#1360 complete the INSTALL to mention how to work with or without mdb2.php from tar.gz
+- fd#1410 password recovery translation
+- fd#1424 wrong copyright
+- fd#1464 error in update-goserver.ldif and update-goto.ldif
+
+#### fusiondirectory-plugins
+- fd-plugins#848 save_object is called twice on services
+- fd-plugins#1019 Some systems plugins call for deprecated ldap2zone action
+- fd-plugins#1022 fdQuota.schema and argonaut.schema should follow LDAP naming rules
+- fd-plugins#1036 Incorrect directory for the supann schema.
+- fd-plugins#1104 Some plugins have bad names in plInfo
+- fd-plugins#1160 Failed to add packages in "Package list" dialog
+- fd-plugins#1215 check if popen is allowed before using it
+- fd-plugins#1228 the code for adding icons into applications is broken
+- fd-plugins#1229 the code for reading image is broken in getfax.php
+- fd-plugins#1232 popup not working with smarty3 :/
+- fd-plugins#1252 error in rsyslog view
+- fd-plugins#1258 FSF address incorrect in source code and documentation files
+- fd-plugins#1267 the refresh dns is not correct from the system generic page
+- fd-plugins#1269 Input of already existing IP
+- fd-plugins#1274 filter for windows workstations come into conflict with the network device one
+- fd-plugins#1283 the check for existing winstations is not working
+- fd-plugins#1284 copy paste is not working for winstations
+- fd-plugins#1285 in copy paste for terminal, server, printer, workstations mac an ip are not mandatory
+- fd-plugins#1286 in phone we cannot change ip and mac when doing copy/paste
+- fd-plugins#1306 List DHCP not displayed in full
+- fd-plugins#1321 When updating a winstation cn the uid is not updated
+- fd-plugins#1332 fd crash when mailmethod is in config file and the entry contains a mail addresss
+- fd-plugins#1349 in 1.0.4 with patch to support Service.manage like action it doesn't work
+- fd-plugins#1350 error smarty with addressbook plugins
+- fd-plugins#1380 switch off action does not do anything on servGeneric
+- fd-plugins#1399 [board-plugin] Missing counters for some elements
+- fd-plugins#1400 [board-plugin] Missing uppercases.
+- fd-plugins#1401 [board-plugin] Missing icon for systems counter
+- fd-plugins#1890 gotoGroupAdminPrinter attribute is missing in system-fd.schema
+
+## %"FusionDirectory 1.0.3" - 2012-04-30
+
+### Added
+
+#### fusiondirectory
+- fd#43 Lost password feature in Gosa
+- fd#119 add cn generation parameter on install screen
+- fd#273 add sasl support for password
+- fd#454 Features from GOsa 2.7 that should be in FusionDirectory
+- fd#471 fusiondirectory-setup parameters must be settable in command-line
+- fd#483 adding --check-config to fusiondirectory-setup
+- fd#506 FAQ: scripts for Pre and Post events
+- fd#528 Possibility to use the pam_check_host_attr feature when using the trust model
+- fd#554 catalan support in fusiondirectory
+- fd#598 in object group we cannot select windows pc
+- fd#632 an abstraction layer so be used to allow different databases to be used
+- fd#665 modify fusiondirectory-insert-schema to install ldapns.schema
+- fd#668 add the missing passwordMethod::is_harmless in class_password.inc
+- fd#716 migrate-repositories option of fusiondirectory-setup will migrate network repos
+- fd#736 making a client argonaut service
+- fd#773 we must test for mdb2 in the setup
+- fd#805 fusiondirectory-setup must generate the SUPANN_DIR also
+- fd#806 all the templates should be read from /var/cache/fusiondirectory/mail
+- fd#807 all the templates should be read from /var/cache/fusiondirectory/system
+- fd#808 all the templates should be read from /var/cache/fusiondirectory/asterisk
+- fd#810 fusiondirectory-setup must generate the ASTERISK_DIR also
+- fd#811 fusiondirectory-setup must generate the SYSTEMS_DIR also
+- fd#812 fusiondirectory-setup must generate the MAIL_DIR also
+- fd#822 fusiondirectory-setup should create the mail, systems, asterisk and supann dir in the fusiondirectory cache
+- fd#824 the fusiondirectory.conf should contains all the service definition and other needed entries for all the plugins
+- fd#829 adding a default ou for netgroupRDN
+- fd#831 we need to modify fusiondirectory insert-schema to insert the recovery schema by default
+- fd#883 Architectures should be in FAIrepository value
+- fd#909 Add custom repositorories
+- fd#914 creating a new favicon for fusiondirectory
+- fd#916 No picture for the Openstack compute plugin
+- fd#917 password recovery doesnt have an icon for the main menu
+- fd#922 when suppan is installed but mapping in fd conf is not we got this error, we should provide a default branch in class_config.inc
+- fd#936 add (Czech Republic) to the locale
+- fd#941 DNS record : SRV type is properly useable in dns plugin
+- fd#942 fusiondirectory-insert-schema installation of others schema
+- fd#944 add the missing option to the fusiondirectory-setup manpages
+- fd#977 the sasl password method should have an option for exop operations
+- fd#978 the saslRealm and saslExop should be put in the fusiondirectory manpage
+
+#### fusiondirectory-plugins
+- fd-plugins#357 button to launch ladp2bind from the DNS configuration page
+- fd-plugins#490 cleaning goto / systems plugins
+- fd-plugins#585 i18n nb.po for NIS netgroups plugin
+- fd-plugins#625 in getxls.php the path should be in variables.inc
+- fd-plugins#634 add new AUTHORS
+- fd-plugins#679 integrate the nova user ldap plugin into FusionDirectory
+- fd-plugins#729 making a client argonaut service
+- fd-plugins#735 putting suppan plugin into core plugins
+- fd-plugins#739 we must create a service to store the config of all the argonaut tools
+- fd-plugins#742 fai branc not created when adding a repository
+- fd-plugins#863 ext4 is missing in the fai plugin
+- fd-plugins#884 Architectures should be in FAIrepository value
+- fd-plugins#889 an icon in the system list showing that there is an argonaut service presnt on this system
+- fd-plugins#896 Add custom repositorories
+- fd-plugins#918 we added the support of the custom release to system deployment plugin but the fai.schema miss an attribute for this
+- fd-plugins#937 add (Czech Republic) to the locale
+- fd-plugins#953 the netgroup plugin doesnt have an icon in the list wiew
+- fd-plugins#959 putting quoat into official plugins
+
+### Changed
+
+#### fusiondirectory
+- fd#502 Remove the smarty plugins file from the include directory
+- fd#520 removing fixed path from setup
+- fd#541 the version number is not visible enough
+- fd#588 the branch for computers should be ou=computers no ou=winstations by default
+- fd#592 cleaning goto / systems plugins
+- fd#620 rewrite the mail collector
+- fd#621 the plinfo fonction should always be the latest function in the .inc files
+- fd#628 gosamba.pl should be rewrote and put in fusiondirectory-setup
+- fd#633 change the HTTP_GOSA_KEY to HTTP_FD_KEY
+- fd#637 move all xsd files into contrib and see if there is an issue
+- fd#655 move class from include/utils to include to be more consistant
+- fd#670 windows workstations are now in ou=computers
+- fd#672 this function from class_posixAccount.inc should be in function.inc
+- fd#673 this function should be in functions.inc
+- fd#718 install-directories needs to be rewrote
+- fd#721 Indentation consistency and useless ldap attributes in supportDaemon
+- fd#724 useless ldap attributes in supportDaemon
+- fd#725 changing the sentence at the end of setup of fusiondirectory
+- fd#768 session should time out after 10 min
+- fd#800 all the templates should be read from /var/cache/fusiondirectory/supann
+- fd#823 the posix plugin should read is template from SYSTEMS_DIR
+- fd#859 put all the docs togheter inside contrib/docs
+- fd#861 Not enough memory for the PHP module
+- fd#866 change color banner and go_logo
+- fd#931 the message explaining to use fusiondirectory-setup to fix classes loading is wrong
+- fd#945 remove the debian centrics path into fusiondirectory-setup
+- fd#949 we should remove the debian centric dir in contrib/fusiondirectory-apache.conf
+- fd#954 rewrite the INSTALL document on how to install fusiondirectory from tar.gz
+- fd#969 change explication in "Restoring object snapshots"
+- fd#976 the keyword should be renamed as saslRealm to be more in sync with other keywords
+
+#### fusiondirectory-plugins
+- fd-plugins#597 in applications remove the restriction for c:\
+- fd-plugins#619 show opsi based clients should be removed ?
+- fd-plugins#626 fix_munged.php to be converted to perl
+- fd-plugins#631 update the datbase schema in gophon
+- fd-plugins#651 the plinfo fonction should always be the latest function in the .inc files
+- fd-plugins#728 replacing the code that loo into the config file for argonautServer
+- fd-plugins#814 all the templates should be read from /var/cache/fusiondirectory/asterisk
+- fd-plugins#815 all the templates should be read from /var/cache/fusiondirectory/system
+- fd-plugins#816 all the templates should be read from /var/cache/fusiondirectory/mail
+- fd-plugins#817 moving /etc contents to contrib to be more correct for the mail plugin
+- fd-plugins#819 removing the encoding file from /etc and putting it in contrib in the system plugin
+- fd-plugins#843 file from the gofon etc/asterisk plugin should go to contrib/asterisk
+- fd-plugins#865 in the fai partion disk plugin the setup storage checkbox should be checked by default
+- fd-plugins#894 split the argonautconfig service
+- fd-plugins#924 Service names should go into the LDAP
+- fd-plugins#930 renaming the netatalk plugin to netatalkAccount to be more in sync with other plugins
+- fd-plugins#961 gofon plugin is not structured correclty relating to directories
+- fd-plugins#962 gofax plugins dir are wrong
+
+### Removed
+
+#### fusiondirectory
+- fd#171 second mandatory field in department / country is not checked for empty
+- fd#485 removing samba rid and sid from setup
+- fd#495 removing all old GOsaSupportdaemon code
+- fd#496 the mailqueue plugin use goto si for his functions
+- fd#501 i propose to remove the click trough gpl for fusiondirectory setup
+- fd#591 remove leftover of old mysql logging system
+- fd#594 remove the internet explorer 6 suppor for png
+- fd#622 remove the goto-si code in function.inc
+- fd#623 get_gosa_version() should be removed and replace by a static var in variables.inc
+- fd#641 svn_version can be removed in functions.inc
+- fd#647 remove non used function in functions.inc
+- fd#648 remove non used function function obj_is_readable($dn, $object, $attribute) in functions.inc
+- fd#649 remove non used function function saveFilter($a_filter, $values) in functions.inc
+- fd#650 remove obsolete function function set_acl($acl) from class_tabs.inc
+- fd#683 remove the opsi stuff from the fusiondirectory.conf
+- fd#687 now that fusiondirectory is only for kolab22 we should remove kolab from config
+- fd#694 removing the obsoleted and non maintened plugin for phpgw
+- fd#818 removing the encoding file from /etc and putting it in contrib in the system plugin
+- fd#948 remove the fusiondirectory-migrate-users program its has been merge into fusiondirectory-setup
+
+#### fusiondirectory-plugins
+- fd-plugins#618 mail addons should be removed
+- fd-plugins#627 remove goto-si code from class_termDns.inc
+- fd-plugins#630 removing the code for kolab1
+- fd-plugins#638 look if this can really be removed from class_servApacheEditVhost.inc
+- fd-plugins#653 the export xls should be removed from ldapmanager plugin
+- fd-plugins#693 removing the obsoleted and non maintened plugin for phpgw
+- fd-plugins#825 Remove all non needed readme in the plugins
+- fd-plugins#878 the cleanup option should be removed from the argonaut config service because its mandatory
+- fd-plugins#964 remove show opsi based client from the code
+
+### Fixed
+
+#### fusiondirectory
+- fd#330 FSF address incorrect in source code and documentation files
+- fd#409 shadowLastChange Not set if POSIX extensions added latter
+- fd#431 ACL to allow enabling / disabling of user accounts
+- fd#473 fusiondirectory-setup -  Bad tests on directories rights
+- fd#475 fusiondirectory setup --install-plugins should launch the update of FD locales / cache
+- fd#476 problem in fd setup when migrating from gosa2.6
+- fd#477 LDAP query failed : 'root object' is missing
+- fd#484 bug when generating config with the wizard when snapshot not selected
+- fd#488 configuration file path not settable in variables.inc
+- fd#489 error : argonautServer not defined in config - suite
+- fd#491 Hardcoded dir name in install_plugins function
+- fd#492 No tests on directory path entered by user for plugin installation
+- fd#500 the glp licence use for the setup is an old version we sould put there the new version
+- fd#504 Cache subdirectories creation missing step in INSTALL file
+- fd#514 Classes and Locales not correctly upgraded
+- fd#518 skip space in login
+- fd#519 fusiondirectory-setup not operational with perl version < 5.10
+- fd#521 the vacation dir should be a in variables.inc also
+- fd#522 fixed path in setup for php
+- fd#523 searching for fixed path in fusiondirectory
+- fd#556 Incorrect description of posixGroup created
+- fd#565 jpegPhoto automatically changed/altered when updating user information
+- fd#567 FD allows DNS entries with '_' (underscores) in hostnames
+- fd#577 Package descriptions don't work if "+" in name
+- fd#589 Erreur PHP "Undefined variable: _SERVERREMOTE_ADDR"
+- fd#639 when there is no argonaut server we got an error in the log
+- fd#640 when there is no dir with data from fai for the system we got errors in the logs
+- fd#642 in functions.inc the  sambaMachineAccountRDN should be ou=computers
+- fd#646 remove leftover var from copypastehandler.inc
+- fd#654 the export xls should be removed from ldapmanager plugin
+- fd#662 when just typing the fusiondirectory-schem2ldif i got an error
+- fd#663 when running fusiondirectory-schema2ldif i got this error
+- fd#664 fusiondirectory-schema2ldif doesnt insert the return carriage correctly
+- fd#666 fusiondirectory-insert-schema doesnt install goto-mime.schema
+- fd#667 The selection filter for the samba plugins workstations in the user tab don't show windows pc
+- fd#669 in the objectgroup the filter for applications is missing in the select box
+- fd#671 uid=pcwin005$,ou=computers,dc=labo,dc=opensides,dc=be is not a user and should not be show to be migrated in the user section
+- fd#709 the cn of the system admin is not right in fusiondirectory setup
+- fd#714 Duplicated code in index.php
+- fd#715 migrate-repositories option of fusiondirectory-setup should check FAIclass
+- fd#727 replacing the code that loo into the config file for argonautServer
+- fd#730 PHP errors in class_supportDaemon.inc
+- fd#732 error when gosaunittag not defined in ldap in class_supportDaemon.inc
+- fd#741 PHP errors in support Daemon
+- fd#757 PHP_DIR is wrongly put in the include PHP path
+- fd#761 Inconsistency in coding guidelines
+- fd#777 PHP error in password.tpl
+- fd#778 tokens is treated like it needs to be migrated
+- fd#779 Weird french translation in migrate step
+- fd#795 Erreur documentation
+- fd#839 The name of the password generator for nt changed names, so we need to change in the setup
+- fd#844 PHP errors when asking logs on a new server
+- fd#860 Incorrect include path in php_setup.inc file
+- fd#886 the protocol of json rpc (http or https) should not be encoded in the code and be saved into the ldap
+- fd#891 Unable to load the User Nova tab
+- fd#901 check the copyright is correct on all files
+- fd#928 The icon path for password recovery is wrong
+- fd#950 fusiondirectory-setup should not go into the contrib dir
+- fd#952 fusiondirectory-setup doesnt install the plugin correctly from tar.gz
+- fd#960 restoring snapshot isn't working anymore
+- fd#963 spaces into response to prompt break the fusiondirectory setup command
+- fd#973 when switching a user to sasl it doesnt remove the samba hases from the user entry in ldap
+- fd#974 when switching a user to sasl and going to password change it accept to change and generate an error
+- fd#975 when creating a new user and selecting sasl as password method it still write samba entries
+- fd#982 FD-core: setup wizard starts in English regardless of language requested by browser
+- fd#983 FD-core: language list in setup wizard is always (partly) translated into Czech, even in case when wizard started in English
+- fd#990 when the keyword is missing we get php errors in salspassword method
+- fd#992 In setup, automatic option for language should be the first one
+- fd#1005 when there is more than one argonaut server configured it doesnt work at all it just say nothing is there
+
+#### fusiondirectory-plugins
+- fd-plugins#284 provided fusiondirectory dhcp schema modified without changing openldap OID
+- fd-plugins#287 invalid structural object class chain (account/person)
+- fd-plugins#312 dhcp/Parent node on Winstation object not changeable
+- fd-plugins#505 Software Deployment - Debug message visible in production mode
+- fd-plugins#553 dhcpHost not removed if system is removed
+- fd-plugins#562 Error message when I click on the tab "Deployment summary" of a workstation
+- fd-plugins#572 The required field 'NTP server' is empty!
+- fd-plugins#695 Wrong icon for "Systems" option on main FD interface
+- fd-plugins#710 in the nova plugin we don't have the remove button
+- fd-plugins#726 we missed the start/stop/restart button on the argonaut service
+- fd-plugins#731 PHP errors in class_workstationService.inc
+- fd-plugins#733 showing the log interface without log on a unsaved workstation
+- fd-plugins#734 there is a problem when there is not an ntp server added to the workstations, the saving fails
+- fd-plugins#737 PHP errors in goto plugin
+- fd-plugins#748 PHP error caused by servDHCP
+- fd-plugins#766 Address book should follow code guidelines
+- fd-plugins#776 LDAP Manager: incomplete change of field ("," -> ";") separator for CSV files
+- fd-plugins#836 when creating a terminal it yell at me that wake event doesnt exist
+- fd-plugins#841 [openstack-compute] - Mismatch in directory naming
+- fd-plugins#842 [mail-plugin] missing mailMethodKolab class
+- fd-plugins#867 the argonaut-fuse config service display an error vhen saving to ldap
+- fd-plugins#885 the protocol of json rpc (http or https) should not be encoded in the code and be saved into the ldap
+- fd-plugins#890 now we have all the release on the mirror evne non installable one on the filer list in  List of deployment classes and products
+- fd-plugins#897 the serverrepository service should not create ou=xxx,ou=fai if its not an install release
+- fd-plugins#902 check the copyright is correct on all files
+- fd-plugins#920 the package class creation in system deployement has to store the custom release if used into the package class
+- fd-plugins#929 renaming the novauser to novaaccount to be in sync with other plugins
+- fd-plugins#940 DNS record : SRV type is properly useable in dns plugin
+- fd-plugins#958 ACLs should be used in templates
+- fd-plugins#970 Quota interface
+- fd-plugins#972 in the rsyslog plugin we got an error when we try to use the system log plugin
+- fd-plugins#985 when clicking on the rsyslog addons i got ton of error about static methods
+- fd-plugins#986 error when clicking into the nova icon in the my account
+- fd-plugins#988 error when saving a dns service after editing it
+- fd-plugins#989 Problem on Copy & paste wizard for a server or workstation
+- fd-plugins#1000 the dhcp service misses the stop/start/restart button in the service view
+
+## %"FusionDirectory 1.0.2" - 2011-09-26
+
+### Added
+
+#### fusiondirectory
+- fd#138 script for .schema to .ldif conversion
+- fd#371 Please allow a way to do the LDAP integrity checks after FD is installed
+- fd#406 update ldif files to be used in cn=config directly
+- fd#417 Plugins Installation - Lack of documentation
+
+#### fusiondirectory-plugins
+- fd-plugins#379 Add tls management in update_vacation script
+
+### Changed
+
+#### fusiondirectory
+- fd#388 Spool directory hardcoded
+- fd#389 Temporary dir hardcoded in copyPasteHandler class
+- fd#390 fusiondirectory.conf file hardcoded
+- fd#391 Embedeed smarty removal
+- fd#399 the fusion-setup command should be rewritten in perl
+- fd#401 mkntpasswd should be written in perl and check the availability of the library
+- fd#405 repace the actual README.cnconfig by the content from the website
+
+### Removed
+
+#### fusiondirectory
+- fd#274 Same contrib files available in two plugins (krb5 and heimdal)
+
+#### fusiondirectory-plugins
+- fd-plugins#362 removing the syslog part from the log plugin and create a syslog plugin
+- fd-plugins#366 removing the opsi plugin from the official plugins
+
+### Fixed
+
+#### fusiondirectory
+- fd#272 PHP error on client IP detection
+- fd#275 Generic user information: Incorrect Warning
+- fd#281 Last rows of page overlapping with a lot of objects
+- fd#328 [Wizard] Bad temporary file name in Step 1
+- fd#332 fixing the scrolling height in firefox 5
+- fd#334 mkntpasswd creation page
+- fd#349 timezone Berlin is missing
+- fd#365 include check in update-fusiondirectory for cache problems
+- fd#368 FD can end up creating an invalid configuration file
+- fd#370 FD complains about "Missing GOsa extensions" in the generic attributes
+- fd#372 Setup wizard won't fix users in all cases
+- fd#373 updated the loading of the cache file
+- fd#376 Hardened error_handler
+- fd#377 fixed Smarty handling for GOsa 2.6
+- fd#385 modify schema2lidf to not add by default a x-origin tag to the schema file
+- fd#387 changing update-fusiondirectory into fusiondirectory-setup
+- fd#393 "Gérer" instead of "Gèrer"
+- fd#403 test php safe mode
+- fd#404 rewrite the INSTALL doc
+- fd#410 dateofBirth not taken while importing with CSV
+- fd#418 replace update-fusiondirectory by fusiondirectory-setup in all files
+- fd#439 Rpm/Centos/Imagemagick
+- fd#450 Wrong data import for Samba Idmap
+- fd#457 the fusiondirectory-insert-schema should look if the samba.schema is in the ldap tree
+- fd#460 Shell environment variables different in Mageia
+- fd#466 it seems that adding the -y broke the multi parameter in fusiondirectory-setup
+- fd#467 using fusiondirectory-setup to install from tar.gz
+- fd#472 fusiondirectory-setup - Apache_user variable is not defined
+
+#### fusiondirectory-plugins
+- fd-plugins#232 askignfor goto-si even when nothing is in the fusiondirectory.conf
+- fd-plugins#420 the example in queue management for the cvs entry to be put is wrong
+- fd-plugins#464 php error while clic on "apply" after FAI plugin's installation
+- fd-plugins#465 debug screen in FD after FAI plugin installation
+
+## %"FusionDirectory 1.0.1" - 2011-05-02
+
+ - Removed advanced options from setup
+ - Corrected online help
+ - Corrected wording on plugins
+ - Removed the need for magic_quotes_gpc
+ - Removed the fusiondirectory-desktop package
+ - Removed program version checking from svn
+ - Added the apache plugin
+ - Put final logo
+ - Full italian language
+
+## %"FusionDirectory 1.0" - 2011-03-20
+
+- First stable release
+
diff --git a/README.md b/README.md
index fb3160056eb797b6d8e3486d491a3d94b0e2107b..041aad2a17af31bee9c7aa3cc599ddc66d12bab1 100644
--- a/README.md
+++ b/README.md
@@ -39,12 +39,48 @@ This question can be solved by creating:
 * A plugin for its management in FusionDirectory with the simple plugin api
 * An Argonaut module for the client installed on the server
 
+## Installation and upgrade of FusionDirectory
+
+The installation and upgrade information is available on [Install FusionDirectory][fusiondirectory-install]
+
+## Migration to FusionDirectory
+
+To migrate an existing LDAP tree, you've to do all steps [Install FusionDirectory][fusiondirectory-install],
+plus some modifications:
+
+* FusionDirectory only shows users that have the objectClass inetOrgPerson
+
+* FusionDirectory only recognizes subtrees (or departments in FusionDirectory's view of things) that have the objectClass gosaDepartment.
+  You can hide subtrees from FusionDirectory by not putting this objectClass inside.
+
+The FusionDirectory setup may be used to do these migrations, but it is not meant
+to work in every possible circumstance. Please be carefull when using it on
+productive system.
+
+That should be all. Entries should be visible in FusionDirectory now.
+Be aware that if your naming policy of user cn's differs from the way FusionDirectory handles it, the entries get rewritten to a FusionDirectory style dn.
+
 ## Get help
 
-There are a couple ways you can try [to get help][get help].You can also join the `#fusiondirectory` IRC channel at freenode.net.
+### Community support
+
+There are a couple ways you can try [to get help][get help].You can also join the `#fusiondirectory` IRC channel at libera.chat.
+
+### Professional support
+
+Professional support is provided through of subscription.
+
+We have two type of subscription :
+
+* [FusionDirectory][subscription-fusiondirectory] : Global subscription for FusionDirectory and all the plugins
+* [FusionDirectory Plus][subscription-fusiondirectory-plus] : Expert Support on Education, Deployement and Infrastructure plugins
+
+The subscription provides access to FusionDirectory's stable enterprise repository, providing reliable software updates and security enhancements,
+as well as technical help and support.
 
-You can [register on our system][register] and enter issues [FusionDirectory][issues-core] for the core program, and 
-[FusionDirectory Plugins][issues-plugins] for plugins.
+Choose the plan that's right for you. Our subscriptions are flexible and scalable according to your needs
+
+The subscription period is one year from the date of purchase and gives you access to the extensive infrastructure of enterprise-class software and services.
 
 ## IRC Etiquette
 
@@ -55,10 +91,22 @@ You can [register on our system][register] and enter issues [FusionDirectory][is
 * You should treat IRC as what it is: asynchronous chat.  Sure the messages can
   be instant but in most channels people are in different time zones.  At times
   chat replies can be in excess of 24hrs.
+
+### Best practice badge
+
+[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/351/badge)](https://bestpractices.coreinfrastructure.org/projects/351)
   
-## Donate
+## Crowfunding
+
+If you like us and want to send us a small contribution you can use the following crowfunding services
+
+* [donate-liberapay]
+
+* [donate-kofi]
+
+* [donate-opencollective]
 
-If you like [FusionDirectory][FusionDirectory] and would like to [donate][donate-liberapay] even a small amount you can go to our Liberapay account
+* [donate-communitybridge]
   
 ## License
 
@@ -66,12 +114,20 @@ If you like [FusionDirectory][FusionDirectory] and would like to [donate][donate
 
 [FusionDirectory]: https://www.fusiondirectory.org/
 
-[get help]: https://www.fusiondirectory.org/contact-us/
+[fusiondirectory-install]: https://fusiondirectory-user-manual.readthedocs.io/en/1.3/fusiondirectory/install/index.html
 
-[register]: https://register.fusiondirectory.org
+[get help]: https://www.fusiondirectory.org/en/communaute/
+
+[subscription-fusiondirectory]: https://www.fusiondirectory.org/en/subscription-fusiondirectory/
 
-[issues-core]: https://gitlab.fusiondirectory.org/fusiondirectory/fd/issues
+[subscription-fusiondirectory-plus]: https://www.fusiondirectory.org/en/subscriptions-fusiondirectory-plus/
 
-[issues-plugins]: https://gitlab.fusiondirectory.org/fusiondirectory/fd-plugins/issues
+[register]: https://register.fusiondirectory.org
 
 [donate-liberapay]: https://liberapay.com/fusiondirectory/donate
+
+[donate-kofi]: https://ko-fi.com/fusiondirectory
+
+[donate-opencollective]: https://opencollective.com/fusiondirectory
+
+[donate-communitybridge]: https://funding.communitybridge.org/projects/fusiondirectory
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 0000000000000000000000000000000000000000..6eb0a87ed8e021b0f4d7bbd9b4f3b83de1225dcb
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,22 @@
+### Reporting Security Vulnerabilities
+
+Although we try to be proactive in preventing security concerns, it is unfortunately inevitable that security breaches will be discovered in all software, including our own.
+
+It is common practice in open source to disclose a security concern to the vendor in a responsible and private manner prior to publication, so that a patch can be prepared, and so that we can take proactive measures to protect FusionDirectory users.
+
+### What is a “security” issue ?
+
+A security issue is a type of bug that can affect the security of FusionDirectory installations.
+
+Specifically, it is a report of a bug that you have found in the code for FusionDirectory and that you have determined can be used to gain some level of access to a site running FusionDirectory that you should not have.
+
+### Where do I report security issues ?
+
+If you would like to contact us with a security vulnerability or possible vulnerability, please contact us via email [security@fusiondirectory.org](mailto:security@fusiondirectory.org).
+
+Your email can be signed with the following public gpg key :
+
+Benoit Mortier : **32BA 180F 6E14 7B5F 52BE 6322 EF2F F1E4 8638 EAD1**
+
+**In any case, you should not share details with anyone else until the bug fix has been officially released.**
+
diff --git a/alias/admin/alias/class_aliasManagement.inc b/alias/admin/alias/class_aliasManagement.inc
index a5d77c28de3caa1a485a9ea1c8127c3f3fe3eddd..6e1555b003977bd4889f29a3dee7eaea0f0ecd1a 100644
--- a/alias/admin/alias/class_aliasManagement.inc
+++ b/alias/admin/alias/class_aliasManagement.inc
@@ -22,25 +22,25 @@
 class aliasManagement extends simpleManagement
 {
   // Tab definition
-  protected $objectTypes  = array('mailAliasDistribution','mailAliasRedirection');
+  protected $objectTypes  = ['mailAliasDistribution','mailAliasRedirection'];
 
-  protected $autoFilterAttributes = array('dn', 'cn', 'description', 'aliasExpirationDate');
+  protected $autoFilterAttributes = ['dn', 'cn', 'description', 'aliasExpirationDate'];
 
   /* Return plugin information for acl handling  */
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Aliases'),
       'plDescription' => _('Alias management'),
       'plIcon'        => 'geticon.php?context=applications&icon=alias&size=48',
       'plSection'     => 'accounts',
       'plPriority'    => 26,
-      'plCategory'    => array('alias' => array('description'  => _('Mail aliases'),
-                                                'objectClass'  => array('mailAliasRedirection','mailAliasDistribution'))),
-      'plManages'     => array('mailAliasDistribution','mailAliasRedirection'),
+      'plCategory'    => ['alias' => ['description'  => _('Mail aliases'),
+                                                'objectClass'  => ['mailAliasRedirection','mailAliasDistribution']]],
+      'plManages'     => ['mailAliasDistribution','mailAliasRedirection'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 
   function configureHeadpage ()
@@ -54,17 +54,17 @@ class aliasManagement extends simpleManagement
     $data = parent::parseXML($file);
     $data['list']['table']['layout'] = '|20px;c|||110px;c|100px;r|';
     $data['list']['table']['column'][4] = $data['list']['table']['column'][3];
-    $data['list']['table']['column'][3] = array(
+    $data['list']['table']['column'][3] = [
       'label'         => 'Expiration date',
       'sortAttribute' => 'aliasExpirationDate',
       'sortType'      => 'integer',
       'value'         => '%{filter:filterDate(aliasExpirationDate)}',
       'export'        => 'true',
-    );
+    ];
     return $data;
   }
 
-  static function filterDate()
+  static function filterDate ()
   {
     if (func_num_args() == 0) {
       return '&nbsp;';
diff --git a/alias/admin/alias/class_mailAliasDistribution.inc b/alias/admin/alias/class_mailAliasDistribution.inc
index a5f6619f84eabec662f87e8be251aa23d6aacbf0..a771cd7a29ec26fc53686d2858e07ab9b718983f 100644
--- a/alias/admin/alias/class_mailAliasDistribution.inc
+++ b/alias/admin/alias/class_mailAliasDistribution.inc
@@ -22,51 +22,51 @@ class mailAliasDistribution extends simplePlugin
 {
   var $mainTab = TRUE;
 
-  var $objectclasses = array('top', 'mailAliasDistribution');
+  var $objectclasses = ['top', 'mailAliasDistribution'];
 
   /* Return plugin information for acl handling  */
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Temporary mail distribution'),
       'plDescription' => _('Temporary mail distribution'),
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array('mailAliasDistribution' => array(
+      'plObjectType'  => ['mailAliasDistribution' => [
         'name'        => _('Temporary mail distribution'),
         'filter'      => 'objectClass=mailAliasDistribution',
         'aclCategory' => 'alias',
         'icon'        => 'geticon.php?context=applications&icon=alias-distribution&size=16',
         'ou'          => get_ou('aliasRDN'),
-      )),
+      ]],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Mail distribution'),
-        'attrs' => array(
-          new BaseSelectorAttribute (get_ou('aliasRDN')),
-          new HostNameAttribute (_('Name'), _('Name to identify this alias'), 'cn', TRUE),
-          new TextAreaAttribute (
+        'attrs' => [
+          new BaseSelectorAttribute(get_ou('aliasRDN')),
+          new HostNameAttribute(_('Name'), _('Name to identify this alias'), 'cn', TRUE),
+          new TextAreaAttribute(
             _('Description'), _('Description of this alias'),
             'description', FALSE
           ),
-          new MailAttribute (
+          new MailAttribute(
             _('Email address'), _('Email address'),
             'mail', TRUE
           ),
           new SetAttribute(
-            new MailAttribute (
+            new MailAttribute(
               _('Email aliases'), _('Aliases for this email address'),
               'gosaMailAlternateAddress', TRUE
             )
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Mail server'), _('Mail server for this alias'),
             'gosaMailServer', FALSE,
             array_keys(mailMethod::getMailServers())
@@ -78,9 +78,9 @@ class mailAliasDistribution extends simplePlugin
             'U',
             ''
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 
diff --git a/alias/admin/alias/class_mailAliasRedirection.inc b/alias/admin/alias/class_mailAliasRedirection.inc
index 808e6c9c5e34e424c3b73bc470d6bd417b7003d3..c16fb832a0382ef311d9f1c9f8ad300a9c1d77e4 100644
--- a/alias/admin/alias/class_mailAliasRedirection.inc
+++ b/alias/admin/alias/class_mailAliasRedirection.inc
@@ -22,49 +22,49 @@ class mailAliasRedirection extends simplePlugin
 {
   var $mainTab = TRUE;
 
-  var $objectclasses = array('top', 'mailAliasRedirection');
+  var $objectclasses = ['top', 'mailAliasRedirection'];
 
   /* Return plugin information for acl handling  */
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Temporary mail redirection'),
       'plDescription' => _('Temporary mail redirection'),
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array('mailAliasRedirection' => array(
+      'plObjectType'  => ['mailAliasRedirection' => [
         'name'        => _('Temporary mail redirection'),
         'filter'      => 'objectClass=mailAliasRedirection',
         'aclCategory' => 'alias',
         'icon'        => 'geticon.php?context=applications&icon=alias-redirection&size=16',
         'ou'          => get_ou('aliasRDN'),
-      )),
+      ]],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
-    return array(
+    return [
       // Attributes are grouped by section
-      'main' => array(
+      'main' => [
         'name'  => _('Mail redirection'),
-        'attrs' => array(
-          new BaseSelectorAttribute (get_ou('aliasRDN')),
-          new HostNameAttribute (_('Name'), _('Name to identify this redirection'), 'cn', TRUE),
-          new TextAreaAttribute (
+        'attrs' => [
+          new BaseSelectorAttribute(get_ou('aliasRDN')),
+          new HostNameAttribute(_('Name'), _('Name to identify this redirection'), 'cn', TRUE),
+          new TextAreaAttribute(
             _('Description'), _('Description of this redirection'),
             'description', FALSE
           ),
           new SetAttribute(
-            new MailAttribute (
+            new MailAttribute(
               _('Redirect from'), _('Mail address from which you want to redirect'),
               'mail', TRUE
             )
           ),
           new SetAttribute(
-            new MailAttribute (
+            new MailAttribute(
               _('Redirect to'), _('Destination of this redirection'),
               'gosaMailForwardingAddress', TRUE
             )
@@ -76,9 +76,9 @@ class mailAliasRedirection extends simplePlugin
             'U',
             ''
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 
diff --git a/alias/config/alias/class_aliasConfig.inc b/alias/config/alias/class_aliasConfig.inc
index 7af9cd30192330a76c2ab0ee97f1de0d3f36a761..d391f267a9ae7205c3cd7d54f39ce561b1de4d4b 100644
--- a/alias/config/alias/class_aliasConfig.inc
+++ b/alias/config/alias/class_aliasConfig.inc
@@ -20,35 +20,35 @@
 
 class aliasConfig extends simplePlugin
 {
-  var $objectclasses  = array("fdAliasPluginConf");
+  var $objectclasses  = ["fdAliasPluginConf"];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       "plShortName"     => _("Alias configuration"),
       "plDescription"   => _("FusionDirectory alias plugin configuration"),
       "plSelfModify"    => FALSE,
-      "plCategory"      => array("configuration"),
-      "plObjectType"    => array("smallConfig"),
+      "plCategory"      => ["configuration"],
+      "plObjectType"    => ["smallConfig"],
 
       "plProvidedAcls"  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Alias'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Alias RDN'), _('Branch in which aliases will be stored'),
             'fdAliasRDN', TRUE,
             'ou=alias'
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/alias/locale/af_ZA/fusiondirectory.po b/alias/locale/af_ZA/fusiondirectory.po
index 9e374850a04be334633c35e7ebf8f0b7ba451563..11fdec22a7864ab3447b042147b61dd4605b8c57 100644
--- a/alias/locale/af_ZA/fusiondirectory.po
+++ b/alias/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/alias/locale/ar/fusiondirectory.po b/alias/locale/ar/fusiondirectory.po
index 7ab4f53b622322103cad0d3c9e98dc4e109907e9..061a91b38b48589306ba4878c83034751005ff32 100644
--- a/alias/locale/ar/fusiondirectory.po
+++ b/alias/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/alias/locale/ca/fusiondirectory.po b/alias/locale/ca/fusiondirectory.po
index 77826e715663ed09f719a4ac47c879622e7777f8..053d07e5a1cd58a442ef3bbda7bf9103c2b911bb 100644
--- a/alias/locale/ca/fusiondirectory.po
+++ b/alias/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/alias/locale/cs_CZ/fusiondirectory.po b/alias/locale/cs_CZ/fusiondirectory.po
index 6b6648f9db3d4bb6416db7d758c0c5b1722b4354..9fb88584e20f4bd299db528db83aaac4065aa65f 100644
--- a/alias/locale/cs_CZ/fusiondirectory.po
+++ b/alias/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/alias/locale/de/fusiondirectory.po b/alias/locale/de/fusiondirectory.po
index 82410d807ee21548458a395a2f8b4c274193ea2c..b4735fa62f6c4607f36e492a2414329186d90ba8 100644
--- a/alias/locale/de/fusiondirectory.po
+++ b/alias/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/alias/locale/el_GR/fusiondirectory.po b/alias/locale/el_GR/fusiondirectory.po
index fd61443316f0d62a0c4fb6fb54b1b8842802d848..5cee4d434c66578437b01bf79ec1e358f8f74012 100644
--- a/alias/locale/el_GR/fusiondirectory.po
+++ b/alias/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/alias/locale/en/fusiondirectory.po b/alias/locale/en/fusiondirectory.po
index 3b4924e8b09183ce368b58601af7793b64129d18..159d1d4389b4b2ca6cdd9aa553a011e21530a6ee 100644
--- a/alias/locale/en/fusiondirectory.po
+++ b/alias/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -37,102 +37,102 @@ msgstr ""
 msgid "Branch in which aliases will be stored"
 msgstr ""
 
-#: admin/alias/class_mailAliasRedirection.inc:31
-#: admin/alias/class_mailAliasRedirection.inc:32
-#: admin/alias/class_mailAliasRedirection.inc:35
-msgid "Temporary mail redirection"
+#: admin/alias/class_mailAliasDistribution.inc:31
+#: admin/alias/class_mailAliasDistribution.inc:32
+#: admin/alias/class_mailAliasDistribution.inc:35
+msgid "Temporary mail distribution"
 msgstr ""
 
-#: admin/alias/class_mailAliasRedirection.inc:52
-msgid "Mail redirection"
+#: admin/alias/class_mailAliasDistribution.inc:51
+msgid "Mail distribution"
 msgstr ""
 
-#: admin/alias/class_mailAliasRedirection.inc:55
 #: admin/alias/class_mailAliasDistribution.inc:54
+#: admin/alias/class_mailAliasRedirection.inc:55
 msgid "Name"
 msgstr ""
 
-#: admin/alias/class_mailAliasRedirection.inc:55
-msgid "Name to identify this redirection"
+#: admin/alias/class_mailAliasDistribution.inc:54
+msgid "Name to identify this alias"
 msgstr ""
 
-#: admin/alias/class_mailAliasRedirection.inc:57
 #: admin/alias/class_mailAliasDistribution.inc:56
+#: admin/alias/class_mailAliasRedirection.inc:57
 msgid "Description"
 msgstr ""
 
-#: admin/alias/class_mailAliasRedirection.inc:57
-msgid "Description of this redirection"
+#: admin/alias/class_mailAliasDistribution.inc:56
+msgid "Description of this alias"
 msgstr ""
 
-#: admin/alias/class_mailAliasRedirection.inc:62
-msgid "Redirect from"
+#: admin/alias/class_mailAliasDistribution.inc:60
+msgid "Email address"
 msgstr ""
 
-#: admin/alias/class_mailAliasRedirection.inc:62
-msgid "Mail address from which you want to redirect"
+#: admin/alias/class_mailAliasDistribution.inc:65
+msgid "Email aliases"
 msgstr ""
 
-#: admin/alias/class_mailAliasRedirection.inc:68
-msgid "Redirect to"
+#: admin/alias/class_mailAliasDistribution.inc:65
+msgid "Aliases for this email address"
 msgstr ""
 
-#: admin/alias/class_mailAliasRedirection.inc:68
-msgid "Destination of this redirection"
+#: admin/alias/class_mailAliasDistribution.inc:70
+msgid "Mail server"
 msgstr ""
 
-#: admin/alias/class_mailAliasRedirection.inc:73
-#: admin/alias/class_mailAliasDistribution.inc:75
-msgid "Expiration date"
+#: admin/alias/class_mailAliasDistribution.inc:70
+msgid "Mail server for this alias"
 msgstr ""
 
+#: admin/alias/class_mailAliasDistribution.inc:75
 #: admin/alias/class_mailAliasRedirection.inc:73
-msgid ""
-"Date after which the redirection should be deleted. Leave empty for no "
-"deletion."
+msgid "Expiration date"
 msgstr ""
 
-#: admin/alias/class_mailAliasDistribution.inc:31
-#: admin/alias/class_mailAliasDistribution.inc:32
-#: admin/alias/class_mailAliasDistribution.inc:35
-msgid "Temporary mail distribution"
+#: admin/alias/class_mailAliasDistribution.inc:75
+msgid ""
+"Date after which the alias should be deleted. Leave empty for no deletion."
 msgstr ""
 
-#: admin/alias/class_mailAliasDistribution.inc:51
-msgid "Mail distribution"
+#: admin/alias/class_mailAliasRedirection.inc:31
+#: admin/alias/class_mailAliasRedirection.inc:32
+#: admin/alias/class_mailAliasRedirection.inc:35
+msgid "Temporary mail redirection"
 msgstr ""
 
-#: admin/alias/class_mailAliasDistribution.inc:54
-msgid "Name to identify this alias"
+#: admin/alias/class_mailAliasRedirection.inc:52
+msgid "Mail redirection"
 msgstr ""
 
-#: admin/alias/class_mailAliasDistribution.inc:56
-msgid "Description of this alias"
+#: admin/alias/class_mailAliasRedirection.inc:55
+msgid "Name to identify this redirection"
 msgstr ""
 
-#: admin/alias/class_mailAliasDistribution.inc:60
-msgid "Email address"
+#: admin/alias/class_mailAliasRedirection.inc:57
+msgid "Description of this redirection"
 msgstr ""
 
-#: admin/alias/class_mailAliasDistribution.inc:65
-msgid "Email aliases"
+#: admin/alias/class_mailAliasRedirection.inc:62
+msgid "Redirect from"
 msgstr ""
 
-#: admin/alias/class_mailAliasDistribution.inc:65
-msgid "Aliases for this email address"
+#: admin/alias/class_mailAliasRedirection.inc:62
+msgid "Mail address from which you want to redirect"
 msgstr ""
 
-#: admin/alias/class_mailAliasDistribution.inc:70
-msgid "Mail server"
+#: admin/alias/class_mailAliasRedirection.inc:68
+msgid "Redirect to"
 msgstr ""
 
-#: admin/alias/class_mailAliasDistribution.inc:70
-msgid "Mail server for this alias"
+#: admin/alias/class_mailAliasRedirection.inc:68
+msgid "Destination of this redirection"
 msgstr ""
 
-#: admin/alias/class_mailAliasDistribution.inc:75
+#: admin/alias/class_mailAliasRedirection.inc:73
 msgid ""
-"Date after which the alias should be deleted. Leave empty for no deletion."
+"Date after which the redirection should be deleted. Leave empty for no "
+"deletion."
 msgstr ""
 
 #: admin/alias/class_aliasManagement.inc:33
diff --git a/alias/locale/es/fusiondirectory.po b/alias/locale/es/fusiondirectory.po
index 8570fcf3fe01160ca67e566f9df734d02f4b0139..d7a36d41960bf10d4fb34a36a0071a57690f8bf8 100644
--- a/alias/locale/es/fusiondirectory.po
+++ b/alias/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/alias/class_mailAliasDistribution.inc:31
 #: admin/alias/class_mailAliasDistribution.inc:32
diff --git a/alias/locale/es_CO/fusiondirectory.po b/alias/locale/es_CO/fusiondirectory.po
index 9cf14a20d9a28f317d6be441ddbff581f9560c13..a29998b6324232fa4d1d2b23fd8201046d6e66f3 100644
--- a/alias/locale/es_CO/fusiondirectory.po
+++ b/alias/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/alias/class_mailAliasDistribution.inc:31
 #: admin/alias/class_mailAliasDistribution.inc:32
diff --git a/alias/locale/es_VE/fusiondirectory.po b/alias/locale/es_VE/fusiondirectory.po
index e4ef03e7f77f2590a4a97f69a7e0ff74b33a16fa..f007066f3079190d9293733a866a98fa922ce1a8 100644
--- a/alias/locale/es_VE/fusiondirectory.po
+++ b/alias/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/alias/class_mailAliasDistribution.inc:31
 #: admin/alias/class_mailAliasDistribution.inc:32
diff --git a/alias/locale/fa_IR/fusiondirectory.po b/alias/locale/fa_IR/fusiondirectory.po
index 34c2e9f090937a7e177c4bd8666888c339415208..6e4754c75bbdbc10105a59650d2ad5b58315f8f0 100644
--- a/alias/locale/fa_IR/fusiondirectory.po
+++ b/alias/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/alias/locale/fi_FI/fusiondirectory.po b/alias/locale/fi_FI/fusiondirectory.po
index 089d0115a1793863aa333f00fb258d746a577480..77621db0cbd938c36e98e26e5e4c19a4d035debd 100644
--- a/alias/locale/fi_FI/fusiondirectory.po
+++ b/alias/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/alias/locale/fr/fusiondirectory.po b/alias/locale/fr/fusiondirectory.po
index 90bb3d4b9b1e7d2013e6ae6a38f94e2bb4a06b82..120cc47d6cb67c636cb3d10bdc81846b302807a2 100644
--- a/alias/locale/fr/fusiondirectory.po
+++ b/alias/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/alias/class_mailAliasDistribution.inc:31
 #: admin/alias/class_mailAliasDistribution.inc:32
diff --git a/alias/locale/hu_HU/fusiondirectory.po b/alias/locale/hu_HU/fusiondirectory.po
index 500ebacdba2dc07027906e4a4261375ce192ba96..b6b1b08083d3049d89654c4312ca0c0419723388 100644
--- a/alias/locale/hu_HU/fusiondirectory.po
+++ b/alias/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
diff --git a/alias/locale/id/fusiondirectory.po b/alias/locale/id/fusiondirectory.po
index 5850d81feac5e6985ec1f4b52873175dfcb26460..285edd77d3832629038b0a43004447ae5ea51cc6 100644
--- a/alias/locale/id/fusiondirectory.po
+++ b/alias/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/alias/locale/it_IT/fusiondirectory.po b/alias/locale/it_IT/fusiondirectory.po
index 3b16b3c1611ced1a581e3e2107baab9af3ac3883..b28b75d3a34f43b7d1360c7c4b95ccb11b84bae9 100644
--- a/alias/locale/it_IT/fusiondirectory.po
+++ b/alias/locale/it_IT/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: Paola Penati <paola.penati@opensides.be>, 2018\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -20,7 +20,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/alias/class_mailAliasDistribution.inc:31
 #: admin/alias/class_mailAliasDistribution.inc:32
diff --git a/alias/locale/ja/fusiondirectory.po b/alias/locale/ja/fusiondirectory.po
index 4bf93149509c858a853bc475e713abba4f46832b..51dea7a061425f5618afc3e7d532cc4bcd965cc4 100644
--- a/alias/locale/ja/fusiondirectory.po
+++ b/alias/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/alias/locale/ko/fusiondirectory.po b/alias/locale/ko/fusiondirectory.po
index 49bb99c5e3f379e1e3c5297c3112bcc34df6a83a..b76cc191a99a0d118bff624b66d23e96a0562e40 100644
--- a/alias/locale/ko/fusiondirectory.po
+++ b/alias/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/alias/locale/lv/fusiondirectory.po b/alias/locale/lv/fusiondirectory.po
index 2ebbfd396e548d05e07e78e34be8eb7a55e25204..d22e0923ec2954f8c0121222544859f814b66619 100644
--- a/alias/locale/lv/fusiondirectory.po
+++ b/alias/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/alias/locale/nb/fusiondirectory.po b/alias/locale/nb/fusiondirectory.po
index af79e6e05310a2ac926d94a8fbe08b80083ae138..144d6c6d83bb1254619804f4f48602906e752e6c 100644
--- a/alias/locale/nb/fusiondirectory.po
+++ b/alias/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/alias/locale/nl/fusiondirectory.po b/alias/locale/nl/fusiondirectory.po
index b8404367c3929e60072d0770f30d3b79309e1ba4..0e80b2c1a41b179eecfc8ed3be861b3efdac3850 100644
--- a/alias/locale/nl/fusiondirectory.po
+++ b/alias/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/alias/locale/pl/fusiondirectory.po b/alias/locale/pl/fusiondirectory.po
index 042cd0b341bbdb0b8c04e502785752c7570c9cf0..a682396e0bb9f860d1a38961e6ed0205ae2655bf 100644
--- a/alias/locale/pl/fusiondirectory.po
+++ b/alias/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/alias/locale/pt/fusiondirectory.po b/alias/locale/pt/fusiondirectory.po
index c212dd88fa48d3d590eef55e8d3e3a0678d3dfff..d4ecc215f09252dd57438508f6de2c8cc9ee37ab 100644
--- a/alias/locale/pt/fusiondirectory.po
+++ b/alias/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/alias/class_mailAliasDistribution.inc:31
 #: admin/alias/class_mailAliasDistribution.inc:32
diff --git a/alias/locale/pt_BR/fusiondirectory.po b/alias/locale/pt_BR/fusiondirectory.po
index b7761509d230454c67fc8c322d5a9baf059e195b..70d2857c6807057c5ef7960efd205ec134f2e2cc 100644
--- a/alias/locale/pt_BR/fusiondirectory.po
+++ b/alias/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/alias/class_mailAliasDistribution.inc:31
 #: admin/alias/class_mailAliasDistribution.inc:32
diff --git a/alias/locale/ru/fusiondirectory.po b/alias/locale/ru/fusiondirectory.po
index 0f71aeec5401f0dbc25b8b480c1d55bc4bd6a332..5d48f7a5ad250f84178a95ea2669256893db9c22 100644
--- a/alias/locale/ru/fusiondirectory.po
+++ b/alias/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/alias/locale/ru@petr1708/fusiondirectory.po b/alias/locale/ru@petr1708/fusiondirectory.po
index af3ad693c2c4dd1b0b3d860b8143dbed2705d599..2892ed18f6ac80d91d255a4b80c7c0afdba966a1 100644
--- a/alias/locale/ru@petr1708/fusiondirectory.po
+++ b/alias/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/alias/locale/sv/fusiondirectory.po b/alias/locale/sv/fusiondirectory.po
index 0e4901d90fee6b54b29f9e23a65ad7b81622d2a8..ca521a3c89775df01900017642938a0a0c0bd08a 100644
--- a/alias/locale/sv/fusiondirectory.po
+++ b/alias/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/alias/locale/tr_TR/fusiondirectory.po b/alias/locale/tr_TR/fusiondirectory.po
index 68e06bb3f83bbb5d62f30e7019034330b85e7c87..b5cbe19abc902a170cb0b19f7b7df8fd3c8fa1b1 100644
--- a/alias/locale/tr_TR/fusiondirectory.po
+++ b/alias/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/alias/locale/ug/fusiondirectory.po b/alias/locale/ug/fusiondirectory.po
index ec5fa009e5b24446eae81fb285ef6cf9a571640b..9b9d01dd296b4eb3db6db969dbd07eaac9f8f3ae 100644
--- a/alias/locale/ug/fusiondirectory.po
+++ b/alias/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/alias/class_mailAliasDistribution.inc:31
 #: admin/alias/class_mailAliasDistribution.inc:32
diff --git a/alias/locale/vi_VN/fusiondirectory.po b/alias/locale/vi_VN/fusiondirectory.po
index 9a1e541c7f67070ff542344b0981780ccf45ae78..aa3ea0433ccfda5f3902476fcf1b707b3ccaa8b8 100644
--- a/alias/locale/vi_VN/fusiondirectory.po
+++ b/alias/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/alias/locale/zh/fusiondirectory.po b/alias/locale/zh/fusiondirectory.po
index 7e698a17c93d5e74810a63f2455bd34fb1761358..302083bd429cdc2aea65ab28ea543725d31e2ad5 100644
--- a/alias/locale/zh/fusiondirectory.po
+++ b/alias/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/alias/locale/zh_TW/fusiondirectory.po b/alias/locale/zh_TW/fusiondirectory.po
index a86f8364585634103194d4f10d191aa560b4dd7c..90162df75237f013833fb883f72a53b4fd5ce088 100644
--- a/alias/locale/zh_TW/fusiondirectory.po
+++ b/alias/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/applications/admin/applications/class_applicationGeneric.inc b/applications/admin/applications/class_applicationGeneric.inc
index e4f4d94c5c4982dcccbdfe14016dbbb2c21e98ee..b5e0fefe5a973267b380262019b17cf6e03c8b36 100644
--- a/applications/admin/applications/class_applicationGeneric.inc
+++ b/applications/admin/applications/class_applicationGeneric.inc
@@ -21,62 +21,62 @@
 
 class application extends simplePlugin
 {
-  var $objectclasses = array('fdDesktopApplication');
+  var $objectclasses = ['fdDesktopApplication'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Application'),
       'plDescription' => _('Application information'),
-      'plObjectType'  => array('application' => array(
+      'plObjectType'  => ['application' => [
         'name'    => _('Application'),
         'filter'  => 'objectClass=fdDesktopApplication',
         'ou'      => get_ou('applicationsRDN'),
         'icon'    => 'geticon.php?context=mimetypes&icon=application-x-executable&size=16',
-      )),
+      ]],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Application'),
-        'attrs' => array(
+        'attrs' => [
           new BaseSelectorAttribute(get_ou('applicationsRDN')),
-          new HostNameAttribute (
+          new HostNameAttribute(
             _('Application name'), _('The name of this application'),
             'cn', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Description'), _('A short description of this application'),
             'description', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Execute'), _('The application to be executed'),
             'fdApplicationExecutePath', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Display name'), _('The displayed name for this application'),
             'fdApplicationTitle', FALSE
           ),
-        )
-      ),
-      'icon' => array(
+        ]
+      ],
+      'icon' => [
         'name'  => _('Icon'),
-        'attrs' => array(
-          new ImageAttribute (
+        'attrs' => [
+          new ImageAttribute(
             '', _('The icon for this application'),
             'fdApplicationImage', FALSE,
             48, 48, 'png'
           ),
-        )
-      ),
-      'options' => array(
+        ]
+      ],
+      'options' => [
         'name'  => _('Options'),
-        'attrs' => array(
+        'attrs' => [
           new BooleanAttribute(
             _('Only executable for member'), _('Only executable by the memebers of the group'),
             'flag_group', FALSE, FALSE, '',
@@ -104,11 +104,11 @@ class application extends simplePlugin
           ),
           new FlagsAttribute(
             'fdApplicationFlags',
-            array('flag_group','flag_overwrite','flag_desktop','flag_menu','flag_launchbar')
+            ['flag_group','flag_overwrite','flag_desktop','flag_menu','flag_launchbar']
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -120,9 +120,9 @@ class application extends simplePlugin
     $filename = './plugins/applications/images/default_icon.png';
 
     if (file_exists($filename)) {
-      $fd = fopen ($filename, 'rb');
-      $this->attributesAccess['fdApplicationImage']->setDefaultValue(fread ($fd, filesize ($filename)));
-      fclose ($fd);
+      $fd = fopen($filename, 'rb');
+      $this->attributesAccess['fdApplicationImage']->setDefaultValue(fread($fd, filesize($filename)));
+      fclose($fd);
       if (empty($this->fdApplicationImage)) {
         $this->attributesAccess['fdApplicationImage']->resetToDefault();
       }
diff --git a/applications/admin/applications/class_applicationManagement.inc b/applications/admin/applications/class_applicationManagement.inc
index bdafd3238fbff1570d12dff907d5d094a2e165b0..18795b21e0d4bbd550f4b6566522e97e128f24d7 100644
--- a/applications/admin/applications/class_applicationManagement.inc
+++ b/applications/admin/applications/class_applicationManagement.inc
@@ -20,50 +20,50 @@
 
 class applicationManagement extends simpleManagement
 {
-  protected $objectTypes  = array('application', 'webApplication');
+  protected $objectTypes  = ['application', 'webApplication'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Applications'),
       'plDescription' => _('Application management'),
       'plIcon'        => 'geticon.php?context=categories&icon=applications-other&size=48',
       'plSection'     => 'accounts',
       'plPriority'    => 60,
-      'plManages'     => array('application', 'webApplication'),
+      'plManages'     => ['application', 'webApplication'],
 
       'plMenuProvider'  => TRUE,
-      'plProvidedAcls'  => array()
-    );
+      'plProvidedAcls'  => []
+    ];
   }
 
-  static function getMenuEntries()
+  static function getMenuEntries ()
   {
     global $config, $ui;
     $mode = $config->get_cfg_value('WebappsMenu', 'none');
     if ($mode == 'none') {
-      return array(array(), array());
+      return [[], []];
     }
     $ldap = $config->get_ldap_link();
     if ($mode == 'all') {
       /* using raw to have the same results than with allowed mode */
       $apps = objects::ls(
         'webApplication',
-        array(
+        [
           'cn'                          => 'raw',
           'description'                 => 'raw',
           'labeledURI'                  => 'raw',
           'fdApplicationTitle'          => 'raw',
           'fdApplicationImageLocation'  => 'raw',
           'fdApplicationImage'          => 'raw',
-        )
+        ]
       );
     } else { /* allowed */
-      $apps   = array();
+      $apps   = [];
       if (is_object($ui) && isset($ui->dn)) {
         $roles  = objects::ls(
           'role',
-          array('fdApplicationAllowed' => '*'),
+          ['fdApplicationAllowed' => '*'],
           NULL,
           '(&(objectClass=fdApplicationRights)(roleOccupant='.$ui->dn.'))'
         );
@@ -83,25 +83,25 @@ class applicationManagement extends simpleManagement
       }
     }
     ksort($apps);
-    $sections = array(
-      'webapps' => array('name' => _('Web applications'), 'priority' => 100)
-    );
-    $entries = array(
-      'webapps' => array()
-    );
+    $sections = [
+      'webapps' => ['name' => _('Web applications'), 'priority' => 100]
+    ];
+    $entries = [
+      'webapps' => []
+    ];
     foreach ($apps as $dn => $app) {
       $base = preg_replace('/^[^,]+,'.preg_quote(get_ou('webappsRDN'), '/').'/', '', $dn);
       $section = 'webapps';
       if ($base != $config->current['BASE']) {
-        $ldap->cat($base, array('dn', 'ou', 'description'), '(&(ou=*)(description=*))');
+        $ldap->cat($base, ['dn', 'ou', 'description'], '(&(ou=*)(description=*))');
         if ($attrs = $ldap->fetch()) {
           $section = $attrs['ou'][0];
           if (!isset($sections[$section])) {
-            $sections[$section] = array(
+            $sections[$section] = [
               'name'      => $attrs['description'][0],
               'priority'  => 101
-            );
-            $entries[$section] = array();
+            ];
+            $entries[$section] = [];
           }
         }
       }
@@ -116,18 +116,18 @@ class applicationManagement extends simpleManagement
       }
       $name   = $app['cn'][0];
       $title  = (isset($app['fdApplicationTitle'][0]) ? $app['fdApplicationTitle'][0] : $name);
-      $entries[$section][] = array(
+      $entries[$section][] = [
         'NAME'        => $name,
         'TITLE'       => $title,
         'DESCRIPTION' => (isset($app['description'][0]) ? $app['description'][0] : $title),
         'LINK'        => $app['labeledURI'][0],
         'ICONPATH'    => $path,
-      );
+      ];
     }
-    return array(
+    return [
       $sections,
       $entries
-    );
+    ];
   }
 }
 ?>
diff --git a/applications/admin/applications/class_webApplication.inc b/applications/admin/applications/class_webApplication.inc
index 6bb8324ee8f37e7e1bb8fba135dbedb41eb12d6a..4cdf1abd96a5cb65d3647a3ae9e83cc0b9b5d852 100644
--- a/applications/admin/applications/class_webApplication.inc
+++ b/applications/admin/applications/class_webApplication.inc
@@ -20,64 +20,64 @@
 
 class webApplication extends simplePlugin
 {
-  var $objectclasses = array('fdWebApplication');
+  var $objectclasses = ['fdWebApplication'];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Web application'),
       'plDescription' => _('Web applicationts names, icons and links'),
-      'plObjectType'  => array('webApplication' => array(
+      'plObjectType'  => ['webApplication' => [
         'name'        => _('Web application'),
         'filter'      => 'objectClass=fdWebApplication',
         'ou'          => get_ou('webappsRDN'),
         'icon'        => 'geticon.php?context=categories&icon=applications-internet&size=16'
-      )),
+      ]],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Application'),
-        'attrs' => array(
-          new BaseSelectorAttribute (get_ou('webappsRDN')),
-          new HostNameAttribute (
+        'attrs' => [
+          new BaseSelectorAttribute(get_ou('webappsRDN')),
+          new HostNameAttribute(
             _('Name'), _('Name or id for application'),
             'cn', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Description'), _('A short description of this application'),
             'description', FALSE
           ),
-          new URLAttribute (
+          new URLAttribute(
             _('URL'), _('Link to this application'),
             'labeledURI', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Display Name'), _('Displayed name for links to this application'),
             'fdApplicationTitle', TRUE
           ),
-        )
-      ),
-      'icon' => array(
+        ]
+      ],
+      'icon' => [
         'name'  => _('Icon'),
-        'attrs' => array(
-          new ImageAttribute (
+        'attrs' => [
+          new ImageAttribute(
             '', _('The icon for this application'),
             'fdApplicationImage', FALSE,
             48, 48, 'png'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Icon location'), _('Usual path to this application icon'),
             'fdApplicationImageLocation', FALSE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/applications/admin/roles/class_applicationRights.inc b/applications/admin/roles/class_applicationRights.inc
index 46f5062278bae77c924e8f3ff8ef4c6bdc7b0332..556c0062f4c4fd7c51169122906bd3ae7ecf5b88 100644
--- a/applications/admin/roles/class_applicationRights.inc
+++ b/applications/admin/roles/class_applicationRights.inc
@@ -20,39 +20,39 @@
 
 class applicationRights extends simplePlugin
 {
-  var $objectclasses = array('fdApplicationRights');
+  var $objectclasses = ['fdApplicationRights'];
 
   var $displayHeader = TRUE;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Applications'),
       'plDescription' => _('Applications allowed for this role'),
-      'plObjectType'  => array('role'),
-      'plForeignKeys' => array(
+      'plObjectType'  => ['role'],
+      'plForeignKeys' => [
         'fdApplicationAllowed' => 'webApplication',
-      ),
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Application list'),
-        'attrs' => array(
-          new SetAttribute (
-            new SelectAttribute (
+        'attrs' => [
+          new SetAttribute(
+            new SelectAttribute(
               _('Applications'), _('The applications users with this role are allowed to launch'),
               'fdApplicationAllowed', TRUE
             )
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
diff --git a/applications/config/applications/class_applicationsPluginConfig.inc b/applications/config/applications/class_applicationsPluginConfig.inc
index cedbd0c7ce93486598db921f24c2f9f61ee4f66c..948cd88e5a7c87e4dc017551e224fe6ee4fd9916 100644
--- a/applications/config/applications/class_applicationsPluginConfig.inc
+++ b/applications/config/applications/class_applicationsPluginConfig.inc
@@ -20,44 +20,44 @@
 
 class applicationsPluginConfig extends simplePlugin
 {
-  var $objectclasses = array('fdApplicationsPluginConf');
+  var $objectclasses = ['fdApplicationsPluginConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Applications'),
       'plDescription'   => _('Applications plugin configuration'),
-      'plObjectType'    => array('smallConfig'),
+      'plObjectType'    => ['smallConfig'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'rdns' => array(
+    return [
+      'rdns' => [
         'name'  => _('Applications'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Application RDN'), _('Branch in which applications will be stored'),
             'fdApplicationsRDN', TRUE,
             'ou=apps'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Web applications RDN'), _('Branch in which web applications will be stored'),
             'fdWebappsRDN', TRUE,
             'ou=apps'
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Show web applications in menu'), _('Whether to show web applications in FD main menu'),
             'fdWebappsMenu', TRUE,
-            array('none', 'allowed', 'all'), 'none',
-            array(_('None'), _('Only allowed'), _('All'))
+            ['none', 'allowed', 'all'], 'none',
+            [_('None'), _('Only allowed'), _('All')]
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 }
 ?>
diff --git a/applications/locale/af_ZA/fusiondirectory.po b/applications/locale/af_ZA/fusiondirectory.po
index c032659ec484d5a51912bed969cd9b1f594be2de..5593da129547afa16d6b2f7f328a1e276037deef 100644
--- a/applications/locale/af_ZA/fusiondirectory.po
+++ b/applications/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/applications/locale/ar/fusiondirectory.po b/applications/locale/ar/fusiondirectory.po
index d123ad1319f4b2ec2f5f634a7975de25015ff286..4c304b2adb58a748229e0d182bc55c65e67a8e5f 100644
--- a/applications/locale/ar/fusiondirectory.po
+++ b/applications/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/applications/locale/ca/fusiondirectory.po b/applications/locale/ca/fusiondirectory.po
index 4537e269b71c92fe191f28d62dfece67acccecd8..875059f2d86881a361c15a74f3ea94dd5b807cae 100644
--- a/applications/locale/ca/fusiondirectory.po
+++ b/applications/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/applications/locale/cs_CZ/fusiondirectory.po b/applications/locale/cs_CZ/fusiondirectory.po
index e8440e59a022abd9c14c0b678cbd844469ddd103..179a53e43861c6615184a7166f275b852445f488 100644
--- a/applications/locale/cs_CZ/fusiondirectory.po
+++ b/applications/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/applications/locale/de/fusiondirectory.po b/applications/locale/de/fusiondirectory.po
index 3d845517d3f0ea905a5c76a89ab3afc67977abaf..a8e39d1f51cfe91e06596ce569a75d804c429b94 100644
--- a/applications/locale/de/fusiondirectory.po
+++ b/applications/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/applications/locale/el_GR/fusiondirectory.po b/applications/locale/el_GR/fusiondirectory.po
index c01e2fea2c269eb1e88b9205687bcd3e0bd9ca7a..448c13a5c514f9cf00735d6fbc6c31c31d0a8678 100644
--- a/applications/locale/el_GR/fusiondirectory.po
+++ b/applications/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/applications/locale/en/fusiondirectory.po b/applications/locale/en/fusiondirectory.po
index aa67fb3010ad3f84c55aa00c0bab00515861b016..f400357df15cb0a1fdee9d3c101b4da63bb6eda3 100644
--- a/applications/locale/en/fusiondirectory.po
+++ b/applications/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
diff --git a/applications/locale/es/fusiondirectory.po b/applications/locale/es/fusiondirectory.po
index 6ac1d928a0ab3d3a9102788cb7d96ff4d7018f30..64ec58ba01d72e3ded73819051f079d2ce22c389 100644
--- a/applications/locale/es/fusiondirectory.po
+++ b/applications/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/applications/class_applicationManagement.inc:28
 #: admin/roles/class_applicationRights.inc:30
diff --git a/applications/locale/es_CO/fusiondirectory.po b/applications/locale/es_CO/fusiondirectory.po
index ba1a4c1c626148f9f7cc5599da59c39b9fad37cd..e3e6c43fbf2073a9797dd8494f1a3b7dd18326c5 100644
--- a/applications/locale/es_CO/fusiondirectory.po
+++ b/applications/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/applications/class_applicationManagement.inc:28
 #: admin/roles/class_applicationRights.inc:30
diff --git a/applications/locale/es_VE/fusiondirectory.po b/applications/locale/es_VE/fusiondirectory.po
index 2a70cb2fa695b97ff5d652ad0a43768fe8e960c2..8510e4b0571802655d440a99da0f4f9c5c2c5add 100644
--- a/applications/locale/es_VE/fusiondirectory.po
+++ b/applications/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/applications/class_applicationManagement.inc:28
 #: admin/roles/class_applicationRights.inc:30
diff --git a/applications/locale/fa_IR/fusiondirectory.po b/applications/locale/fa_IR/fusiondirectory.po
index db85b04f1063d720ad7a08c23866ce11830497c6..8b2573f3ee6396c13f0a3d32d59e5a5907d25813 100644
--- a/applications/locale/fa_IR/fusiondirectory.po
+++ b/applications/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/applications/locale/fi_FI/fusiondirectory.po b/applications/locale/fi_FI/fusiondirectory.po
index 936522bb39468d7c7f86fbf30427daffe0880a1b..f8d2b713c6bc9fd003f4ac670b14b0b823116ec7 100644
--- a/applications/locale/fi_FI/fusiondirectory.po
+++ b/applications/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/applications/locale/fr/fusiondirectory.po b/applications/locale/fr/fusiondirectory.po
index 01c458abf876792bef60c0d8b0ff4ca643a483cb..d8d5ee41a392b2233a064b081de55581bc789924 100644
--- a/applications/locale/fr/fusiondirectory.po
+++ b/applications/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/applications/class_applicationManagement.inc:28
 #: admin/roles/class_applicationRights.inc:30
diff --git a/applications/locale/hu_HU/fusiondirectory.po b/applications/locale/hu_HU/fusiondirectory.po
index ab2d9143f7d968c59cf6d47b3fbd94ddaf602136..6f6462202cd6f87cf73950ed76154c6b7cee271e 100644
--- a/applications/locale/hu_HU/fusiondirectory.po
+++ b/applications/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
diff --git a/applications/locale/id/fusiondirectory.po b/applications/locale/id/fusiondirectory.po
index 9db1260cd4b67bdc8adbf763ca6b22a29d8621ae..3832f80382ddb90e32ab20563636009e345b8c49 100644
--- a/applications/locale/id/fusiondirectory.po
+++ b/applications/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/applications/locale/it_IT/fusiondirectory.po b/applications/locale/it_IT/fusiondirectory.po
index 434bd6148f89d2dd6abe6a03eb03c5d26a4241cb..aa1f72b1227b55081c0fd5b48b3ee11292c1d83e 100644
--- a/applications/locale/it_IT/fusiondirectory.po
+++ b/applications/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/applications/class_applicationManagement.inc:28
 #: admin/roles/class_applicationRights.inc:30
diff --git a/applications/locale/ja/fusiondirectory.po b/applications/locale/ja/fusiondirectory.po
index 0bf959ad8ca051397304f7624afd84c66a4607f8..443579d17fa4f1a5a7c7461fb95e079bff81bc6e 100644
--- a/applications/locale/ja/fusiondirectory.po
+++ b/applications/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/applications/locale/ko/fusiondirectory.po b/applications/locale/ko/fusiondirectory.po
index 7f81b4f0cbe62e0cbebdb9eaa90c2e7b57244f63..a37e695807f83b95bd806aaeaa42a2f87d232b52 100644
--- a/applications/locale/ko/fusiondirectory.po
+++ b/applications/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/applications/locale/lv/fusiondirectory.po b/applications/locale/lv/fusiondirectory.po
index 82e7b755832cd67158a41e13d8c9bca1e1ccee23..7ed778b353c7ed41046effc535e47ce4d736ed6c 100644
--- a/applications/locale/lv/fusiondirectory.po
+++ b/applications/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/applications/locale/nb/fusiondirectory.po b/applications/locale/nb/fusiondirectory.po
index 3cebae7b10cd08c539e7f5afd222540d49b6a68b..8e51ea3b0c88861b6088dbd1fe446f0e17f32caf 100644
--- a/applications/locale/nb/fusiondirectory.po
+++ b/applications/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/applications/locale/nl/fusiondirectory.po b/applications/locale/nl/fusiondirectory.po
index a834a938b269c7fc4fb6e712cf483514ad518d2c..ae8bf9f5aa46da74f1b932f4a76b8be7a9c7346e 100644
--- a/applications/locale/nl/fusiondirectory.po
+++ b/applications/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/applications/locale/pl/fusiondirectory.po b/applications/locale/pl/fusiondirectory.po
index 4c79654cd15647ff65fe05b3b7c3949e64954be0..6f9111f44313412f6923d3d617cd17e3ef5bd181 100644
--- a/applications/locale/pl/fusiondirectory.po
+++ b/applications/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/applications/locale/pt/fusiondirectory.po b/applications/locale/pt/fusiondirectory.po
index fcf6e98758b2739103d1f6f7b673c6ba0cd3bdaa..608abcc8b80e96bb63089c22489b6477585392a0 100644
--- a/applications/locale/pt/fusiondirectory.po
+++ b/applications/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/applications/class_applicationManagement.inc:28
 #: admin/roles/class_applicationRights.inc:30
diff --git a/applications/locale/pt_BR/fusiondirectory.po b/applications/locale/pt_BR/fusiondirectory.po
index bb4efde1a94cdc51b457ba2ffff1bf1c173ebe96..fc6e1275c7455edf6f12395b017a765ecf6cba98 100644
--- a/applications/locale/pt_BR/fusiondirectory.po
+++ b/applications/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/applications/class_applicationManagement.inc:28
 #: admin/roles/class_applicationRights.inc:30
diff --git a/applications/locale/ru/fusiondirectory.po b/applications/locale/ru/fusiondirectory.po
index a45919ace002a81fe7a6a80cb4da84ab8181b1fc..b2e77c563dd55ba85900c347df4b74d34c29c52b 100644
--- a/applications/locale/ru/fusiondirectory.po
+++ b/applications/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/applications/locale/ru@petr1708/fusiondirectory.po b/applications/locale/ru@petr1708/fusiondirectory.po
index 66382916d0060f38dd217596c2f50d937abf337e..ec412d8f15b6f88d1da187b22fe1247264133d45 100644
--- a/applications/locale/ru@petr1708/fusiondirectory.po
+++ b/applications/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/applications/locale/sv/fusiondirectory.po b/applications/locale/sv/fusiondirectory.po
index 98a0d91b4fa54b5e0e0b233592e86dff7110ea2a..5c97ca5e1dcc5fd7ab341e22e6413d171f32bcff 100644
--- a/applications/locale/sv/fusiondirectory.po
+++ b/applications/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/applications/locale/tr_TR/fusiondirectory.po b/applications/locale/tr_TR/fusiondirectory.po
index ca5a94b3a30a9945b34fc97ba6fe6e515fa974de..a82a203809aeee74422f99f4a207c6bfd452e60e 100644
--- a/applications/locale/tr_TR/fusiondirectory.po
+++ b/applications/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/applications/locale/ug/fusiondirectory.po b/applications/locale/ug/fusiondirectory.po
index db7d13da54ba8da7ac42245340596c2ea093e6a9..1aca066077410e8bb4b186e07881202573619b24 100644
--- a/applications/locale/ug/fusiondirectory.po
+++ b/applications/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/applications/class_applicationManagement.inc:28
 #: admin/roles/class_applicationRights.inc:30
diff --git a/applications/locale/vi_VN/fusiondirectory.po b/applications/locale/vi_VN/fusiondirectory.po
index 8e02f3af6e26b47efc21b34f79d1fb61065e4282..3f879906c2c00c871c3500015e4013fd9a976fb4 100644
--- a/applications/locale/vi_VN/fusiondirectory.po
+++ b/applications/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/applications/locale/zh/fusiondirectory.po b/applications/locale/zh/fusiondirectory.po
index a11bffdb425703b2f5be81ae5bd51f3b28807003..695c3839a784f320a9e17efeb38a79172ce9c37c 100644
--- a/applications/locale/zh/fusiondirectory.po
+++ b/applications/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/applications/locale/zh_TW/fusiondirectory.po b/applications/locale/zh_TW/fusiondirectory.po
index 2823698277410a5ae7d4c94866b202c826f5258b..9ced1ff0711f9200f0d2314a943f0578c339b7b7 100644
--- a/applications/locale/zh_TW/fusiondirectory.po
+++ b/applications/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/argonaut/addons/argonaut/class_argonautAction.inc b/argonaut/addons/argonaut/class_argonautAction.inc
index d335b7c18c7e3226cc6cd07942f2a15f6385ff7c..69684ea44b6e8175ff2cf42e6d739e43d8c5bfa6 100644
--- a/argonaut/addons/argonaut/class_argonautAction.inc
+++ b/argonaut/addons/argonaut/class_argonautAction.inc
@@ -22,36 +22,36 @@ class MacsAttribute extends GenericDialogAttribute
 {
   protected $dialogClass = 'SystemSelectDialog';
 
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $display_attr = 'cn', $acl = '')
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $display_attr = 'cn', $acl = '')
   {
-    parent::__construct ($label, $description, $ldapName, $required, $defaultValue, 'macAddress', $display_attr, $acl);
+    parent::__construct($label, $description, $ldapName, $required, $defaultValue, 'macAddress', $display_attr, $acl);
   }
 }
 
 class argonautAction extends simplePlugin
 {
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Argonaut task'),
       'plDescription' => _('Schedule an argonaut task'),
-      'plObjectType'  => array('argonautTask' => array(
+      'plObjectType'  => ['argonautTask' => [
         'name'        => _('Argonaut task'),
         'aclCategory' => 'argonautQueue',
         'icon'        => 'geticon.php?context=applications&icon=argonaut&size=16',
-      )),
+      ]],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
     $events = argonautEventTypes::get_event_types();
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Schedule'),
-        'attrs' => array(
+        'attrs' => [
           new SelectAttribute(
             _('Action'), _('The action you are about to schedule'),
             'action', TRUE,
@@ -79,7 +79,7 @@ class argonautAction extends simplePlugin
           ),
           new CompositeAttribute(
             _('How often this task should be repeated'), 'period',
-            array(
+            [
               new IntAttribute(
                 '', '',
                 'periodValue', FALSE,
@@ -88,51 +88,51 @@ class argonautAction extends simplePlugin
               new SelectAttribute(
                 '', '',
                 'periodType', TRUE,
-                array('minutes',    'hours',    'days',     'weeks',    'months'), 'days',
-                array(_('Minutes'), _('Hours'), _('Days'),  _('Weeks'), _('Months'))
+                ['minutes',    'hours',    'days',     'weeks',    'months'], 'days',
+                [_('Minutes'), _('Hours'), _('Days'),  _('Weeks'), _('Months')]
               )
-            ),
+            ],
             '/^(\d+)_(minutes|hours|days|weeks|months)$/',
             '%s_%s',
             '',
             _('Period')
           )
-        )
-      ),
-      'targets' => array(
+        ]
+      ],
+      'targets' => [
         'name'  => _('Targets'),
-        'attrs' => array(
+        'attrs' => [
           new MacsAttribute(
             '', _('Targets for this task'),
             'targets', TRUE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
-  public function __construct($action, array $targets, $scheduled)
+  public function __construct ($action, array $targets, $scheduled)
   {
     global $config;
     parent::__construct($config->current['BASE']);
 
     $this->attributesAccess['scheduled']->setManagedAttributes(
-      array(
-        'erase' => array (
-          FALSE => array (
+      [
+        'erase' => [
+          FALSE => [
             'datetime', 'period'
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
     $this->attributesAccess['periodical']->setManagedAttributes(
-      array(
-        'disable' => array (
-          FALSE => array (
+      [
+        'disable' => [
+          FALSE => [
             'period'
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
     $this->attributesAccess['period']->setLinearRendering(TRUE);
 
@@ -143,7 +143,7 @@ class argonautAction extends simplePlugin
     $this->scheduled  = $scheduled;
   }
 
-  protected function loadAttributes()
+  protected function loadAttributes ()
   {
     foreach ($this->attributesAccess as &$attribute) {
       $attribute->setInLdap(FALSE);
@@ -152,7 +152,7 @@ class argonautAction extends simplePlugin
     parent::loadAttributes();
   }
 
-  function execute()
+  function execute ()
   {
     return parent::execute().$this->getFooter();
   }
@@ -160,7 +160,7 @@ class argonautAction extends simplePlugin
   /*! \brief  Returns the plugin footer (save cancel), displayed in the template.
     @return String  HTML footer part.
    */
-  protected function getFooter()
+  protected function getFooter ()
   {
     if (!$this->displayPlugin) {
       return '';
@@ -175,10 +175,10 @@ class argonautAction extends simplePlugin
     That should be written.
     @return Array e.g. 'status' => 'bla blub'
    */
-  public function computeData()
+  public function computeData ()
   {
     timezone::get_default_timezone();
-    $ret = array('args' => array());
+    $ret = ['args' => []];
     if ($this->scheduled) {
       $timestamp = strtotime($this->datetime);
       if ($timestamp === FALSE) {
diff --git a/argonaut/addons/argonaut/class_argonautEventTypes.inc b/argonaut/addons/argonaut/class_argonautEventTypes.inc
index d67589b4c071ae64bc4bb609e83bc920cede38f3..45b01a9c64cc561c2e363c152e7b3979e28f184d 100644
--- a/argonaut/addons/argonaut/class_argonautEventTypes.inc
+++ b/argonaut/addons/argonaut/class_argonautEventTypes.inc
@@ -23,13 +23,13 @@ class argonautEventTypes
   /*! \brief  Returns a complete list of all available events.
     @return   Array   Containing info for all available events.
    */
-  static public function get_event_types()
+  static public function get_event_types ()
   {
     global $class_mapping;
     if (session::is_set('argonautEventTypes::get_event_types')) {
       return session::get('argonautEventTypes::get_event_types');
     } else {
-      $ret = array();
+      $ret = [];
       foreach (array_keys($class_mapping) as $class) {
         if (preg_match('/^argonautEventTypes.+$/', $class)) {
           $ret = array_merge($ret, $class::get_event_types_list());
@@ -43,7 +43,7 @@ class argonautEventTypes
   /*! \brief  Returns event information, like menu strings, images ...
     @return   Array Event information.
    */
-  static public function get_event_info($action)
+  static public function get_event_info ($action)
   {
     $events = static::get_event_types();
     if (isset($events[$action])) {
@@ -60,51 +60,51 @@ class argonautEventTypes
 
 class argonautEventTypesSystem
 {
-  static public function get_event_types_list()
+  static public function get_event_types_list ()
   {
-    return array(
-      'System.halt' => array(
+    return [
+      'System.halt' => [
         'name'  => _('Switch off'),
         'img'   => 'geticon.php?context=actions&icon=system-shutdown&size=16'
-      )
-    );
+      ]
+    ];
   }
 }
 
 class argonautEventTypesDeployment
 {
-  static public function get_event_types_list()
+  static public function get_event_types_list ()
   {
-    return array(
-      'Deployment.reboot' => array(
+    return [
+      'Deployment.reboot' => [
         'name'  => _('Reboot'),
         'img'   => 'geticon.php?context=actions&icon=system-reboot&size=16'
-      ),
-      'Deployment.wake' => array(
+      ],
+      'Deployment.wake' => [
         'name'  => _('Wake up'),
         'img'   => 'geticon.php?context=status&icon=task-running&size=16'
-      ),
-      'Deployment.update' => array(
+      ],
+      'Deployment.update' => [
         'name'  => _('Software update'),
         'img'   => 'geticon.php?context=actions&icon=system-update&size=16'
-      ),
-      'Deployment.reinstall' => array(
+      ],
+      'Deployment.reinstall' => [
         'name'  => _('(Re)Install'),
         'img'   => 'geticon.php?context=actions&icon=system-reinstall&size=16'
-      ),
-    );
+      ],
+    ];
   }
 }
 
 class argonautEventTypesLdap2zone
 {
-  static public function get_event_types_list()
+  static public function get_event_types_list ()
   {
-    return array(
-      'Ldap2Zone.slaves' => array(
+    return [
+      'Ldap2Zone.slaves' => [
         'name'  => _('Refresh slave files (ldap2zone)'),
         'img'   => 'geticon.php?context=actions&icon=view-refresh&size=16'
-      )
-    );
+      ]
+    ];
   }
 }
diff --git a/argonaut/addons/argonaut/class_argonautImportFile.inc b/argonaut/addons/argonaut/class_argonautImportFile.inc
index 07b49d1bcc95afc1923ca4bba9dfa876a62e894c..aa20ce73c2c5aff31ee5df48f9026eb5e292696d 100644
--- a/argonaut/addons/argonaut/class_argonautImportFile.inc
+++ b/argonaut/addons/argonaut/class_argonautImportFile.inc
@@ -20,63 +20,63 @@
 
 class argonautImportFile extends simplePlugin
 {
-  protected $csv_fields = array(
+  protected $csv_fields = [
     '0' => 'TIMESTAMP',
     '1' => 'MAC',
     '2' => 'HEADER',
     '3' => 'OGROUP'
-  );
+  ];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Argonaut task import'),
       'plDescription' => _('Imports argonaut tasks from CSV file'),
-      'plObjectType'  => array('argonautQueueImport' => array(
+      'plObjectType'  => ['argonautQueueImport' => [
         'name'        => _('Argonaut task import'),
         'aclCategory' => 'argonautQueue',
         'icon'        => 'geticon.php?context=applications&icon=argonaut&size=16',
-      )),
+      ]],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Import actions from CSV file'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
-          new CompositeAttribute (
+        'class' => ['fullwidth'],
+        'attrs' => [
+          new CompositeAttribute(
             _('Import a list of task into argonaut'),
             'import',
-            array(
-              new FileAttribute (
+            [
+              new FileAttribute(
                 '', '',
                 'import_file', FALSE
               ),
-              new ButtonAttribute (
+              new ButtonAttribute(
                 '', '',
                 'import_submit',
                 _('Upload')
               )
-            ),
+            ],
             '', '%s%s', '',
             _('Import file')
           )
-        )
-      ),
-      'events' => array(
+        ]
+      ],
+      'events' => [
         'name'      => _('Imported tasks'),
-        'attrs'     => array(new FakeAttribute('events')),
+        'attrs'     => [new FakeAttribute('events')],
         'template'  => get_template_path('import_events.tpl', TRUE, dirname(__FILE__)),
-      ),
-    );
+      ],
+    ];
   }
 
-  public function __construct($parent)
+  public function __construct ($parent)
   {
     global $config;
     parent::__construct($config->current['BASE'], NULL, $parent);
@@ -84,11 +84,11 @@ class argonautImportFile extends simplePlugin
     $this->attributesAccess['import']->setInLdap(FALSE);
     $this->attributesAccess['import']->setLinearRendering(TRUE);
 
-    $this->events         = array();
+    $this->events         = [];
     $this->daemon_events  = argonautEventTypes::get_event_types();
   }
 
-  function execute()
+  function execute ()
   {
     $smarty = get_smarty();
     $smarty->assign('jobtypes', join(',', array_keys($this->daemon_events)));
@@ -99,12 +99,12 @@ class argonautImportFile extends simplePlugin
     '</p>';
   }
 
-  function handle_import_submit()
+  function handle_import_submit ()
   {
     $this->parse_csv($this->import);
   }
 
-  function save_object()
+  function save_object ()
   {
     /* Import started */
     if (isset($_POST['start_import'])) {
@@ -129,11 +129,11 @@ class argonautImportFile extends simplePlugin
         foreach ($events as $key => $event) {
           /* Create event */
           if (empty($event['TIMESTAMP'])) {
-            $data = array();
+            $data = [];
           } else {
-            $data = array('timestamp' => $event['TIMESTAMP']);
+            $data = ['timestamp' => $event['TIMESTAMP']];
           }
-          $this->parent->o_queue->append_call($event['HEADER'], array($event['MAC']), $data);
+          $this->parent->o_queue->append_call($event['HEADER'], [$event['MAC']], $data);
           if ($this->parent->o_queue->is_error()) {
             msg_dialog::display(_('Infrastructure service'), msgPool::siError($this->parent->o_queue->get_error()), ERROR_DIALOG);
             $fail++;
@@ -149,7 +149,7 @@ class argonautImportFile extends simplePlugin
     parent::save_object();
   }
 
-  private function parse_csv($str)
+  private function parse_csv ($str)
   {
     /* Some file checks */
     $lines = preg_split('/\n/', $str);
@@ -159,7 +159,7 @@ class argonautImportFile extends simplePlugin
     }
 
     /* Reset current events */
-    $events = array();
+    $events = [];
 
     /* Parse each line of the given file */
     foreach ($lines as $line) {
@@ -170,7 +170,7 @@ class argonautImportFile extends simplePlugin
 
       /* Load values from file */
       $fields = explode(';', $line);
-      $event  = array();
+      $event  = [];
       foreach ($this->csv_fields as $key => $val) {
         $event[$val] = '';
         if (isset($fields[$key])) {
diff --git a/argonaut/addons/argonaut/class_argonautQueue.inc b/argonaut/addons/argonaut/class_argonautQueue.inc
index a66d4f9eb650cdaeaa3e3e00ea2579d1404f0b4c..86e926abb3e8b897a237f8d1e49e068bc4ee9c59 100644
--- a/argonaut/addons/argonaut/class_argonautQueue.inc
+++ b/argonaut/addons/argonaut/class_argonautQueue.inc
@@ -36,23 +36,23 @@ class argonautQueue extends simpleManagement
   var $acl_base;
   protected $aclCategory = 'argonautQueue/';
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Deployment queue'),
       'plDescription' => _('Provide a mechanism to automatically activate systems'),
       'plIcon'        => 'geticon.php?context=applications&icon=argonaut&size=48',
       'plSection'     => 'systems',
       'plPriority'    => 30,
-      'plCategory'    => array('argonautQueue' => array('objectClass' => 'none', 'description' => _('Deployment queue'))),
+      'plCategory'    => ['argonautQueue' => ['objectClass' => 'none', 'description' => _('Deployment queue')]],
 
-      'plProvidedAcls' => array(
+      'plProvidedAcls' => [
         'deploymentQueue' => _('Deployment queue')
-      )
-    );
+      ]
+    ];
   }
 
-  function __construct()
+  function __construct ()
   {
     global $config;
     $this->filterXMLPath  = get_template_path('deploy-filter.xml', TRUE, dirname(__FILE__));
@@ -81,7 +81,7 @@ class argonautQueue extends simpleManagement
     $this->headpage->registerElementFilter('filterStatus',    'argonautQueue::filterStatus');
   }
 
-  function importEvents()
+  function importEvents ()
   {
     $this->dialogObject = new argonautImportFile($this);
   }
@@ -89,13 +89,13 @@ class argonautQueue extends simpleManagement
   /*! \brief    Queue selected objects to be removed.
    *            Checks ACLs, Locks and ask for confirmation.
    */
-  protected function removeEntryRequested($action, array $target, array $all)
+  protected function removeEntryRequested ($action, array $target, array $all)
   {
-    $nodelete   = array();
-    $disallowed = array();
-    $this->dns  = array();
+    $nodelete   = [];
+    $disallowed = [];
+    $this->dns  = [];
 
-    @DEBUG (DEBUG_SI, __LINE__, __FUNCTION__, __FILE__, $target, 'Entry removal requested!');
+    @DEBUG(DEBUG_SI, __LINE__, __FUNCTION__, __FILE__, $target, 'Entry removal requested!');
 
     // Check permissons for each target
     foreach ($target as $dn) {
@@ -112,7 +112,7 @@ class argonautQueue extends simpleManagement
 
       if ($this->acl_is_removeable($task['TARGETDN'])) {
         /* Only remove WAITING or ERROR entries */
-        if (in_array($task['STATUS'], array('waiting','error','processed')) ||
+        if (in_array($task['STATUS'], ['waiting','error','processed']) ||
             ($task['STATUS'] == 'processing' && !preg_match('/install/', $task['HEADERTAG'])) ) {
           $this->dns[] = $dn;
         } else {
@@ -133,25 +133,25 @@ class argonautQueue extends simpleManagement
 
     // We've at least one entry to delete.
     if (count($this->dns)) {
-      $objects = array();
+      $objects = [];
       foreach ($this->dns as $dn) {
         $tmp  = $this->headpage->getEntry($dn);
         $task = $tmp['EVENT'];
         $infos = argonautEventTypes::get_event_info($task['HEADERTAG']);
         if ($infos) {
-          $objects[] = array(
+          $objects[] = [
             'name'  => $infos['name'],
             'dn'    => $dn,
             'icon'  => $infos['img'],
             'type'  => 'task'
-          );
+          ];
         } else {
-          $objects[] = array(
+          $objects[] = [
             'name'  => $task['HEADERTAG'],
             'dn'    => $dn,
             'icon'  => '',
             'type'  => 'task'
-          );
+          ];
         }
       }
 
@@ -163,10 +163,10 @@ class argonautQueue extends simpleManagement
     }
   }
 
-  function removeEntryConfirmed($action, array $target, array $all)
+  function removeEntryConfirmed ($action, array $target, array $all)
   {
     timezone::get_default_timezone();
-    $ids = array();
+    $ids = [];
     foreach ($this->dns as $dn) {
       $entry  = $this->headpage->getEntry($dn);
       if ($this->acl_is_removeable($entry['EVENT']['TARGETDN'])) {
@@ -178,10 +178,10 @@ class argonautQueue extends simpleManagement
 
   /*! \brief  Force queue job to be aborted.
    */
-  function abortEvent($action, array $target)
+  function abortEvent ($action, array $target)
   {
-    $macs     = array();
-    $taskids  = array();
+    $macs     = [];
+    $taskids  = [];
     $headpage = $this->getHeadpage();
     foreach ($target as $id) {
       $tmp        = $headpage->getEntry($id);
@@ -189,7 +189,7 @@ class argonautQueue extends simpleManagement
       $taskids[]  = $tmp['EVENT']['ID'];
     }
 
-    $this->o_queue->append_call('wakeup', $macs, array());
+    $this->o_queue->append_call('wakeup', $macs, []);
     if ($this->o_queue->is_error()) {
       msg_dialog::display(_('Info'), sprintf(_('%s'), $this->o_queue->get_error()), INFO_DIALOG);
     }
@@ -197,18 +197,18 @@ class argonautQueue extends simpleManagement
     $this->o_queue->remove_entries($taskids);
   }
 
-  function processNow($action, array $target)
+  function processNow ($action, array $target)
   {
     $this->execute_queue_entries($target);
   }
 
-  function retryAction($action, array $target)
+  function retryAction ($action, array $target)
   {
     $entry = $this->getHeadpage()->getEntry($target[0]);
-    $this->dialogObject = new argonautAction($entry['HEADERTAG'][0], array($entry['MACADDRESS'][0]), FALSE);
+    $this->dialogObject = new argonautAction($entry['HEADERTAG'][0], [$entry['MACADDRESS'][0]], FALSE);
   }
 
-  function showErrorEntry($action, array $target)
+  function showErrorEntry ($action, array $target)
   {
     if (count($target) == 1) {
       $entry  = $this->headpage->getEntry($target[0]);
@@ -217,7 +217,7 @@ class argonautQueue extends simpleManagement
     }
   }
 
-  function detectPostActions()
+  function detectPostActions ()
   {
     $action = parent::detectPostActions();
     if (isset($_POST['import_abort'])) {
@@ -233,7 +233,7 @@ class argonautQueue extends simpleManagement
   /*! \brief  Save event dialogs.
    *          And append the new Argonaut event.
    */
-  function saveEventDialog()
+  function saveEventDialog ()
   {
     $this->dialogObject->save_object();
     $msgs = $this->dialogObject->check();
@@ -248,28 +248,28 @@ class argonautQueue extends simpleManagement
     $this->closeDialogs();
   }
 
-  protected function _getTabFooter()
+  protected function getTabFooter ()
   {
     if ($this->dialogObject instanceof faiLogView) {
       return  '<p class="plugbottom">'.
               ' <input type="submit" name="edit_cancel" value="'.msgPool::backButton().'"/>'.
               '</p>';
     } else {
-      return parent::_getTabFooter();
+      return parent::getTabFooter();
     }
   }
 
   /*! \brief  Force queue job to be done as far as possible.
    *  @return Boolean TRUE in case of success, else FALSE.
    */
-  private function execute_queue_entries($ids)
+  private function execute_queue_entries ($ids)
   {
     /* Only allow execution of paused or waiting entries */
-    $update_ids = array();
+    $update_ids = [];
     foreach ($ids as $id) {
       $tmp    = $this->headpage->getEntry($id);
       $entry  = $tmp['EVENT'];
-      if (in_array($entry['STATUS'], array('paused','waiting'))) {
+      if (in_array($entry['STATUS'], ['paused','waiting'])) {
         $update_ids[] = $entry['ID'];
       }
     }
@@ -284,7 +284,7 @@ class argonautQueue extends simpleManagement
     return TRUE;
   }
 
-  private function acl_is_removeable($dn)
+  private function acl_is_removeable ($dn)
   {
     if ($this->read_only) {
       return FALSE;
@@ -293,7 +293,7 @@ class argonautQueue extends simpleManagement
     return (strpos($ui->get_permissions($dn, $this->aclCategory.get_class($this), '0'), 'd') !== FALSE);
   }
 
-  static function filterHostName($mac, $name = '', $targetdn = '', $targettype = '')
+  static function filterHostName ($mac, $name = '', $targetdn = '', $targettype = '')
   {
     $text = '';
     if (isset($name[0]) && $name[0] != 'none') {
@@ -308,7 +308,7 @@ class argonautQueue extends simpleManagement
     }
   }
 
-  static function filterTask($tag, $progress)
+  static function filterTask ($tag, $progress)
   {
     $tag      = $tag[0];
     $progress = $progress[0];
@@ -337,7 +337,7 @@ class argonautQueue extends simpleManagement
     return $str;
   }
 
-  static function filterPeriod($periodic = array())
+  static function filterPeriod ($periodic = [])
   {
     $period = "&nbsp;-";
     if (isset($periodic[0]) && !preg_match("/none/i", $periodic[0])) {
@@ -349,7 +349,7 @@ class argonautQueue extends simpleManagement
     return $period;
   }
 
-  static function filterSchedule($stamp)
+  static function filterSchedule ($stamp)
   {
     if ($stamp['0'] == '19700101000000') {
       return _('immediately');
@@ -358,7 +358,7 @@ class argonautQueue extends simpleManagement
     }
   }
 
-  static function filterStatus($row, $status, $substatus)
+  static function filterStatus ($row, $status, $substatus)
   {
     $status     = $status[0];
     $substatus  = $substatus[0];
diff --git a/argonaut/addons/argonaut/class_filterArgonautEvents.inc b/argonaut/addons/argonaut/class_filterArgonautEvents.inc
index a9c376fd3d222f443272951fb855ccb1778fdffa..c4cb24fac64fff22dd4a52b9e37690a68b114e34 100644
--- a/argonaut/addons/argonaut/class_filterArgonautEvents.inc
+++ b/argonaut/addons/argonaut/class_filterArgonautEvents.inc
@@ -21,7 +21,7 @@
 
 class filterArgonautEvents extends  filterLDAP
 {
-  static function query($parent, $base, $scope, $filter, $attributes, $category, $objectStorage = "")
+  static function query ($parent, $base, $scope, $filter, $attributes, $category, $objectStorage = "")
   {
     global $config;
 
@@ -29,7 +29,7 @@ class filterArgonautEvents extends  filterLDAP
     $events  = argonautEventTypes::get_event_types();
 
     /* Get tags that will be used in queue searches */
-    $event_tags = array("none");
+    $event_tags = ["none"];
     foreach ($events as $action => $evt) {
       $event_tags[] = $action;
     }
@@ -37,12 +37,12 @@ class filterArgonautEvents extends  filterLDAP
     $entries = $o_queue->get_queued_entries($event_tags, 0, 9999999, "id");
     if ($o_queue->is_error()) {
       msg_dialog::display(_("Error"), sprintf(_("Cannot load queue entries: %s"), "<br><br>".$o_queue->get_error()), ERROR_DIALOG);
-      return array();
+      return [];
     }
 
     /* Assign entries by id.
      */
-    $data = array();
+    $data = [];
     $ui   = get_userinfo();
 
 
@@ -66,7 +66,7 @@ class filterArgonautEvents extends  filterLDAP
 
       /* If WAITING add priority action
        */
-      if (in_array($entry['STATUS'], array("waiting")) && $acl_is_writeable) {
+      if (in_array($entry['STATUS'], ["waiting"]) && $acl_is_writeable) {
         $entry['objectClass'][] = "FAKE_OC__prioUp";
         $entry['objectClass'][] = "FAKE_OC__prioDown";
         $entry['objectClass'][] = "FAKE_OC__prioPause";
@@ -74,45 +74,45 @@ class filterArgonautEvents extends  filterLDAP
 
       /* If PAUSED add resume action
        */
-      if (in_array($entry['STATUS'], array("paused")) && $acl_is_writeable) {
+      if (in_array($entry['STATUS'], ["paused"]) && $acl_is_writeable) {
         $entry['objectClass'][] = "FAKE_OC__prioResume";
       }
 
       /* If PAUSED or WAITING add execution action
        */
-      if (in_array($entry['STATUS'], array("paused","waiting")) && $acl_is_writeable) {
+      if (in_array($entry['STATUS'], ["paused","waiting"]) && $acl_is_writeable) {
         $entry['objectClass'][] = "FAKE_OC__processNow";
       }
 
       /* If PAUSED or WAITING add edit action
        */
-      if (in_array($entry['STATUS'], array("waiting")) && $acl_is_writeable) {
+      if (in_array($entry['STATUS'], ["waiting"]) && $acl_is_writeable) {
         $entry['objectClass'][] = "FAKE_OC__edit";
       }
 
 
       /* If PROCESSING add abort action
        */
-      if (in_array($entry['STATUS'], array("processing")) && preg_match("/install/", $entry['HEADERTAG']) && $acl_is_writeable) {
+      if (in_array($entry['STATUS'], ["processing"]) && preg_match("/install/", $entry['HEADERTAG']) && $acl_is_writeable) {
         $entry['objectClass'][] = "FAKE_OC__abort";
       }
 
       /* If ERROR add retry action
        */
-      if (in_array($entry['STATUS'], array("error")) && $acl_is_writeable) {
+      if (in_array($entry['STATUS'], ["error"]) && $acl_is_writeable) {
         $entry['objectClass'][] = "FAKE_OC__retry";
       }
 
       /* If WAITING or ERROR add remove action
        */
-      if ( $acl_is_removeable && in_array($entry['STATUS'], array("waiting","error","processed"))) {
+      if ( $acl_is_removeable && in_array($entry['STATUS'], ["waiting","error","processed"])) {
         $entry['objectClass'][] = "FAKE_OC__remove";
       }
-      if ($acl_is_writeable && in_array($entry['STATUS'], array("processing")) && !preg_match("/install/", $entry['HEADERTAG'])) {
+      if ($acl_is_writeable && in_array($entry['STATUS'], ["processing"]) && !preg_match("/install/", $entry['HEADERTAG'])) {
         $entry['objectClass'][] = "FAKE_OC__remove";
       }
 
-      $item = array();
+      $item = [];
       $item['count']  = 0;
       $item['EVENT']  = $entry;
       $item['dn']     = $entry['MACADDRESS'].",".$entry['TIMESTAMP'];
@@ -120,7 +120,7 @@ class filterArgonautEvents extends  filterLDAP
       foreach ($entry as $name => $value) {
         $item[] = $name;
         if (!is_array($value)) {
-          $item[$name] = array('count' => 1, $value);
+          $item[$name] = ['count' => 1, $value];
         } else {
           $item[$name] = $value;
           $item[$name]['count'] = count($value);
diff --git a/argonaut/admin/systems/argonaut/class_argonautClient.inc b/argonaut/admin/systems/argonaut/class_argonautClient.inc
index 1f417f262f562d9fb94f061dc696f3106891d831..44b6da4be7a3892072498ac13ca61f27779c2725 100644
--- a/argonaut/admin/systems/argonaut/class_argonautClient.inc
+++ b/argonaut/admin/systems/argonaut/class_argonautClient.inc
@@ -21,7 +21,7 @@
 
 class ArgonautServiceNameAttribute extends CompositeAttribute
 {
-  static private $argonautService_defaults = array(
+  static private $argonautService_defaults = [
     "folder"              => "/etc/init.d",
     "serviceCUPS"         => "cups",
     "serviceMail"         => "postfix",
@@ -39,17 +39,17 @@ class ArgonautServiceNameAttribute extends CompositeAttribute
     "argonautServer"      => "argonaut-server",
     "argonautFAIMonitor"  => "argonaut-fai-monitor",
     "argonautFuseConfig"  => "argonaut-fuse",
-  );
+  ];
 
-  static private $argonautService_blacklist = array(
+  static private $argonautService_blacklist = [
     "argonautDNSConfig",
     "argonautMirrorConfig",
     "serviceRepository",
-  );
+  ];
 
   function __construct ($description, $ldapName, $acl = "")
   {
-    parent::__construct ($description, $ldapName, array(), "", "", $acl);
+    parent::__construct($description, $ldapName, [], "", "", $acl);
   }
 
   function setParent (&$plugin)
@@ -61,11 +61,11 @@ class ArgonautServiceNameAttribute extends CompositeAttribute
   function loadServiceNames ()
   {
     global $config;
-    $this->attributes = array();
+    $this->attributes = [];
     // Get services tabs list from config
     $services = $config->data['TABS']['SERVERSERVICE'];
     // Add fake "folder" tab at the beginning
-    $services = array_merge(array(array('CLASS' => 'folder')), $services);
+    $services = array_merge([['CLASS' => 'folder']], $services);
 
     foreach ($services as $tab) {
       $name = $tab['CLASS'];
@@ -73,7 +73,7 @@ class ArgonautServiceNameAttribute extends CompositeAttribute
         continue;
       }
       $value = (isset(static::$argonautService_defaults[$name]) ? static::$argonautService_defaults[$name] : "");
-      $this->attributes[$name] = new StringAttribute ($name, "Service $name",
+      $this->attributes[$name] = new StringAttribute($name, "Service $name",
                                                       "service_$name", FALSE,
                                                       $value, $this->getAcl());
     }
@@ -116,102 +116,102 @@ class ArgonautServiceNameAttribute extends CompositeAttribute
 
 class argonautClient extends simplePlugin
 {
-  var $objectclasses  = array('argonautClient');
+  var $objectclasses  = ['argonautClient'];
   var $displayHeader  = TRUE;
 
-  var $inheritance = array('gosaGroupOfNames' => 'member');
+  var $inheritance = ['gosaGroupOfNames' => 'member'];
 
   static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Argonaut client'),
       'plDescription'   => _('Edit argonaut client settings'),
       'plSelfModify'    => FALSE,
-      'plObjectType'    => array('workstation','server','terminal','ogroup-dynamic'),
+      'plObjectType'    => ['workstation','server','terminal','ogroup-dynamic'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _("Argonaut client settings"),
-        'attrs' => array(
-          new IntAttribute (
+        'attrs' => [
+          new IntAttribute(
             _('Client port'), _('Port used by argonaut client for JSON-RPC'),
             'argonautClientPort', TRUE,
             0 /*min*/, FALSE /*no max*/, 8081 /*default value*/
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Protocol'), _('Protocol to use for argonaut'),
             'argonautClientProtocol', TRUE,
-            array('http', 'https')
+            ['http', 'https']
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('WakeOnLan interface'), _('Interface used by argonaut for WakeOnLan'),
             'argonautClientWakeOnLanInterface', TRUE,
             'eth0'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('TaskId file'), _('File which argonaut will use to store its task id when booting'),
             'argonautTaskIdFile', TRUE,
             '/tmp/argonaut'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Log directory'), _('Directory in which argonaut client should write its logs'),
             'argonautClientLogDir', TRUE,
             '/var/log/argonaut'
           ),
-        )
-      ),
-      'ssl' => array (
+        ]
+      ],
+      'ssl' => [
         'name'  => _('SSL paths'),
-        'attrs' => array (
-          new TrimmedStringAttribute (
+        'attrs' => [
+          new TrimmedStringAttribute(
             _('Key'), _('Path to the private key file on Argonaut client'),
             'argonautClientKeyPath', FALSE,
             '/etc/ssl/private/argonaut.key'
           ),
-          new TrimmedStringAttribute (
+          new TrimmedStringAttribute(
             _('Certificate'), _('Path to the certificate file on Argonaut client'),
             'argonautClientCertPath', FALSE,
             '/etc/ssl/certs/argonaut.cert'
           ),
-          new TrimmedStringAttribute (
+          new TrimmedStringAttribute(
             _('CA certificate'), _('Path to the CA certificate file on Argonaut client'),
             'argonautClientCaCertPath', FALSE,
             '/etc/ssl/certs/ca.cert'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('CN of the certificate'), _('The CN in this client certificate'),
             'argonautClientCertCN', FALSE
           ),
-        )
-      ),
-      'serviceNames' => array(
+        ]
+      ],
+      'serviceNames' => [
         'name'  => _("Service names"),
-        'attrs' => array(
-          new ArgonautServiceNameAttribute (_("Argonaut service names"), "argonautServiceName"),
-        )
-      ),
-    );
+        'attrs' => [
+          new ArgonautServiceNameAttribute(_("Argonaut service names"), "argonautServiceName"),
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
   {
     parent::__construct($dn, $object, $parent, $mainTab);
     $this->attributesAccess['argonautClientProtocol']->setManagedAttributes(
-      array(
-        'disable' => array (
-          'http' => array (
+      [
+        'disable' => [
+          'http' => [
             'argonautClientKeyPath','argonautClientCertPath','argonautClientCaCertPath',
             'argonautClientCertCN'
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
   }
 }
diff --git a/argonaut/admin/systems/argonaut/class_deploymentTimeframe.inc b/argonaut/admin/systems/argonaut/class_deploymentTimeframe.inc
index 05e0c1b5f0619495716d0746a2085cff5ec7371d..8db44b849fe31dc7f6b2fa53900e842a2bfbe7e8 100644
--- a/argonaut/admin/systems/argonaut/class_deploymentTimeframe.inc
+++ b/argonaut/admin/systems/argonaut/class_deploymentTimeframe.inc
@@ -20,52 +20,52 @@
 
 class deploymentTimeframe extends simplePlugin
 {
-  var $objectclasses  = array('argonautDeploymentOptions');
+  var $objectclasses  = ['argonautDeploymentOptions'];
   var $displayHeader  = TRUE;
 
-  var $inheritance = array('gosaGroupOfNames' => 'member');
+  var $inheritance = ['gosaGroupOfNames' => 'member'];
 
   static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Deployment time frame'),
       'plDescription'   => _('Edit deployment time frame'),
-      'plObjectType'    => array('workstation','server','terminal','ogroup-dynamic'),
+      'plObjectType'    => ['workstation','server','terminal','ogroup-dynamic'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Time frames'),
-        'attrs' => array(
+        'attrs' => [
           new OrderedArrayAttribute(
             new CharSeparatedCompositeAttribute(
               _('Time frames in which deployment is authorized'),
               'argonautDeploymentTimeframe',
-              array(
-                new TimeHiAttribute (
+              [
+                new TimeHiAttribute(
                   '', _('Opening time for this frame as HH:MM'),
                   'begin', TRUE
                 ),
-                new TimeHiAttribute (
+                new TimeHiAttribute(
                   _('->'), _('Closing time for this frame as HH:MM'),
                   'end', TRUE
                 )
-              ),
+              ],
               '-',
               '',
               _('Time frames')
             ),
-            FALSE, array(), TRUE
+            FALSE, [], TRUE
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 
diff --git a/argonaut/admin/systems/services/argonaut/class_argonautDNSConfig.inc b/argonaut/admin/systems/services/argonaut/class_argonautDNSConfig.inc
index 3a31f8a56aa28997f7d234cf568556617b8940d7..5fb7d6b607afb6f6dbebd16e02c529d80d3db3c9 100644
--- a/argonaut/admin/systems/services/argonaut/class_argonautDNSConfig.inc
+++ b/argonaut/admin/systems/services/argonaut/class_argonautDNSConfig.inc
@@ -22,18 +22,18 @@ class argonautDNSConfig extends simpleService
 {
   protected static $showActions = FALSE;
 
-  var $objectclasses  = array('argonautDNSConfig');
+  var $objectclasses  = ['argonautDNSConfig'];
 
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Argonaut DNS settings'),
       'plDescription'   => _('Argonaut DNS settings').' ('._('Services').')',
       'plIcon'          => 'geticon.php?context=applications&icon=argonaut-dns&size=16',
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
 
@@ -46,21 +46,21 @@ class argonautDNSConfig extends simpleService
     if (class_available('ZoneNameAttribute')) {
       $zoneAttributeClass = 'ZoneNameAttribute';
     }
-    return array (
-      'main' => array (
+    return  [
+      'main' => [
         'name'  => _('Ldap2zone global settings'),
-        'attrs' => array (
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Bind directory'), _('The directory in which conf file must be created'),
             'argonautLdap2zoneBindDir', TRUE,
             '/etc/bind'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Bind cache directory'), _('The directory in which zone files must be created'),
             'argonautLdap2zoneBindCacheDir', TRUE,
             '/var/cache/bind'
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('TTL'),
             _('Time to live'),
             'argonautLdap2zoneTTL',
@@ -69,55 +69,55 @@ class argonautDNSConfig extends simpleService
             FALSE,
             500
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('rndc path'),
             _('path to rndc binary'),
             'argonautLdap2zoneRndc',
             FALSE,
             '/usr/sbin/rndc'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Search base'), _('LDAP base in which ldap2zone should search. Only usefull if you got several nodes for the same zone.'),
             'argonautLdap2zoneSearchBase', FALSE
           ),
-        )
-      ),
-      'master' => array (
+        ]
+      ],
+      'master' => [
         'name'  => _('Ldap2zone master settings'),
-        'attrs' => array (
-          new BooleanAttribute (
+        'attrs' => [
+          new BooleanAttribute(
             _('Ignore reverse zone'), _('Do not write reverse zone'),
             'argonautLdap2zoneNoReverse', FALSE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Notify'), '',
             'argonautLdap2zoneNotify', FALSE,
-            array('yes','no','explicit')
+            ['yes','no','explicit']
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Allow update'), _('Allow update (semicolon separated and ended)'),
             'argonautLdap2zoneAllowUpdate', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Allow transfer'), _('Allow transfer (semicolon separated and ended)'),
             'argonautLdap2zoneAllowTransfer', FALSE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Check names'), _('Cause any host name for the zone to be checked for compliance with RFC 952 and RFC 1123 and take the defined action'),
             'argonautLdap2zoneCheckNames', FALSE,
-            array('','warn','fail','ignore'), ''
+            ['','warn','fail','ignore'], ''
           ),
-        )
-      ),
-      'slave' => array (
+        ]
+      ],
+      'slave' => [
         'name'  => _('Ldap2zone slave settings'),
-        'class' => array('fullwidth'),
-        'attrs' => array (
+        'class' => ['fullwidth'],
+        'attrs' => [
           new OrderedArrayAttribute(
             new PipeSeparatedCompositeAttribute(
               _('Manage DNS Slaves'),
               'argonautLdap2zoneSlaveZones',
-              array(
+              [
                 new $zoneAttributeClass(
                   _('zone'), _('DNS zone this server should be declared as slave of'),
                   'Ldap2zoneSlaveZone', TRUE
@@ -132,17 +132,17 @@ class argonautDNSConfig extends simpleService
                   TRUE, '',
                   'reverse', 'noreverse'
                 )
-              ),
+              ],
               '',
               _('DNS slaves')
             ),
             FALSE,
-            array(),
+            [],
             TRUE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $parent = NULL)
@@ -152,7 +152,7 @@ class argonautDNSConfig extends simpleService
     try {
       $zones = objects::ls('dnsZone', NULL, NULL, '', TRUE);
     } catch (NonExistingObjectTypeException $e) {
-      $zones = array();
+      $zones = [];
     }
     if (!empty($zones)) {
       $attributes = $attributesInfo['slave']['attrs'][0]->attribute->attributes;
diff --git a/argonaut/admin/systems/services/argonaut/class_argonautFuseConfig.inc b/argonaut/admin/systems/services/argonaut/class_argonautFuseConfig.inc
index 513da52b7d7875f65a055fc1745031208e9bafe4..98440e0301817cb8c5873fee9cbe1b055415542f 100644
--- a/argonaut/admin/systems/services/argonaut/class_argonautFuseConfig.inc
+++ b/argonaut/admin/systems/services/argonaut/class_argonautFuseConfig.inc
@@ -21,18 +21,18 @@
 
 class argonautFuseConfig extends simpleService
 {
-  var $objectclasses  = array('argonautFuseConfig');
+  var $objectclasses  = ['argonautFuseConfig'];
 
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Argonaut Fuse'),
       'plDescription'   => _('Argonaut Fuse settings'),
       'plIcon'          => 'geticon.php?context=applications&icon=argonaut-fuse&size=16',
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   /*!
@@ -40,39 +40,39 @@ class argonautFuseConfig extends simpleService
    */
   static function getAttributesInfo ()
   {
-    return array (
-      'main' => array (
+    return  [
+      'main' => [
         'name'  => _('Basic settings'),
-        'attrs' => array (
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Default mode'),
             '',
             'argonautFuseDefaultMode',
             TRUE,
             'install'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Log directory'),
             _('Directory in which argonaut-fuse will store its log'),
             'argonautFuseLogDir',
             TRUE,
             '/var/log/argonaut'
           ),
-        )
-      ),
-      'tftp' => array (
+        ]
+      ],
+      'tftp' => [
         'name'  => _('TFTP'),
-        'attrs' => array (
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Pxelinux cfg path'),
             _('Path where argonaut-fuse should store pxelinux.cfg'),
             'argonautFusePxelinuxCfg',
             TRUE,
             '/srv/tftp/pxelinux.cfg'
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $parent = NULL)
@@ -81,11 +81,11 @@ class argonautFuseConfig extends simpleService
     parent::__construct($dn, $parent);
 
     /* Load modules */
-    $this->plugin = array();
+    $this->plugin = [];
     foreach ($config->data['TABS']['FUSEMODULETABS'] as $plug) {
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $plug['CLASS'], "Loading Fuse module");
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $plug['CLASS'], "Loading Fuse module");
       if (!plugin_available($plug['CLASS'])) {
-        @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $plug['CLASS'], "Fuse module not available");
+        @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $plug['CLASS'], "Fuse module not available");
         continue;
       }
       $name = $plug['CLASS'];
@@ -119,7 +119,7 @@ class argonautFuseConfig extends simpleService
 
 
   /* Save data to object */
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
     if (isset($_POST[get_class($this)."_posted"])) {
@@ -130,7 +130,7 @@ class argonautFuseConfig extends simpleService
     }
   }
 
-  function check()
+  function check ()
   {
     $message = parent::check();
 
@@ -144,7 +144,7 @@ class argonautFuseConfig extends simpleService
     return $message;
   }
 
-  function set_acl_category($cat)
+  function set_acl_category ($cat)
   {
     parent::set_acl_category($cat);
     foreach ($this->plugin as &$plugin) {
@@ -153,7 +153,7 @@ class argonautFuseConfig extends simpleService
     unset($plugin);
   }
 
-  function set_acl_base($base)
+  function set_acl_base ($base)
   {
     parent::set_acl_base($base);
     foreach ($this->plugin as &$plugin) {
@@ -163,7 +163,7 @@ class argonautFuseConfig extends simpleService
   }
 
   /* Save to LDAP */
-  function save()
+  function save ()
   {
     $errors = parent::save();
     if (!empty($errors)) {
@@ -185,9 +185,9 @@ class argonautFuseConfig extends simpleService
     unset($plugin);
   }
 
-  function remove($fulldelete = FALSE)
+  function remove ($fulldelete = FALSE)
   {
-    $errors = array();
+    $errors = [];
     /* Remove objects */
     foreach ($this->plugin as &$plugin) {
       $plugin->dn = $this->dn;
diff --git a/argonaut/admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc b/argonaut/admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc
index 185571bfe63bb2f4e752e9ded3dd3169fe2958f8..28f1d4502649fb488767eee28fe112e31602779c 100644
--- a/argonaut/admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc
+++ b/argonaut/admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc
@@ -20,59 +20,59 @@
 
 class argonautFuseFAIConfig extends simplePlugin
 {
-  var $objectclasses  = array('argonautFuseFAIConfig');
+  var $objectclasses  = ['argonautFuseFAIConfig'];
   var $showActions    = FALSE;
   var $displayHeader  = TRUE;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Argonaut Fuse FAI module settings'),
       'plDescription'   => _('Argonaut Fuse FAI module settings'),
-      'plCategory'      => array('server'),
-      'plObjectType'    => array('fusemodule'),
+      'plCategory'      => ['server'],
+      'plObjectType'    => ['fusemodule'],
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array (
-      'fai' => array (
+    return  [
+      'fai' => [
         'name'  => _('FAI'),
-        'attrs' => array (
-          new IntAttribute (
+        'attrs' => [
+          new IntAttribute(
             _('FAI version'), _('Version of FAI installed on the server'),
             'argonautFuseFaiVersion', TRUE,
             4, 5, 5
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('FAI flags'), _('Flags to pass to FAI'),
             'argonautFuseFaiFlags', FALSE,
             'verbose,sshd,syslogd,createvt,reboot'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('NFS root'), '',
             'argonautFuseNfsRoot', TRUE,
             '/srv/fai/nfsroot'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('FAI 4 command line'), _('Command line for FAI 4 - should be "ip=dhcp root=/dev/nfs boot=live union=aufs"'),
             'argonautFuseFai4Cmdline', TRUE,
             'ip=dhcp root=/dev/nfs boot=live union=aufs'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('FAI 5 command line'), _('Command line for FAI 5 - should be "ip=dhcp rootovl"'),
             'argonautFuseFai5Cmdline', TRUE,
             'ip=dhcp rootovl'
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Multiple distro mode'), _('This enables a mode for multiple distributions usage which adds the release as a suffix to kernel, initrd and nfsroot in the PXE file'),
             'argonautFuseMultipleReleaseMode'
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE, $attributesInfo = NULL)
@@ -80,16 +80,16 @@ class argonautFuseFAIConfig extends simplePlugin
     parent::__construct($dn, $object, $parent, $mainTab, $attributesInfo);
 
     $this->attributesAccess['argonautFuseFaiVersion']->setManagedAttributes(
-      array(
-        'disable' => array (
-          4 => array (
+      [
+        'disable' => [
+          4 => [
             'argonautFuseFai5Cmdline'
-          ),
-          5 => array (
+          ],
+          5 => [
             'argonautFuseFai4Cmdline'
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
   }
 }
diff --git a/argonaut/admin/systems/services/argonaut/class_argonautFuseLTSPConfig.inc b/argonaut/admin/systems/services/argonaut/class_argonautFuseLTSPConfig.inc
index bb89b0edce3bdaf7079fa80d8f9ee1e2d85b3a90..58ce4e2a7bf3580d95db3896572f70d316e9d9c6 100644
--- a/argonaut/admin/systems/services/argonaut/class_argonautFuseLTSPConfig.inc
+++ b/argonaut/admin/systems/services/argonaut/class_argonautFuseLTSPConfig.inc
@@ -21,20 +21,20 @@
 
 class argonautFuseLTSPConfig extends simplePlugin
 {
-  var $objectclasses  = array('argonautFuseLTSPConfig');
+  var $objectclasses  = ['argonautFuseLTSPConfig'];
   var $showActions    = FALSE;
   var $displayHeader  = TRUE;
 
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Argonaut Fuse LTSP module settings'),
       'plDescription'   => _('Argonaut Fuse LTSP module settings').' ('._('Services').')',
-      'plCategory'      => array('server'),
-      'plObjectType'    => array('fusemodule'),
+      'plCategory'      => ['server'],
+      'plObjectType'    => ['fusemodule'],
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   /*!
@@ -42,17 +42,17 @@ class argonautFuseLTSPConfig extends simplePlugin
    */
   static function getAttributesInfo ()
   {
-    return array (
-      'ltsp' => array (
+    return  [
+      'ltsp' => [
         'name'  => _('LTSP'),
-        'attrs' => array (
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('LTSP server'),
             '',
             'argonautFuseLtspServer'
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 }
diff --git a/argonaut/admin/systems/services/argonaut/class_argonautFuseOPSIConfig.inc b/argonaut/admin/systems/services/argonaut/class_argonautFuseOPSIConfig.inc
index 4df4a9ca05c5c986276f08341b8206a1a5712cb3..0c4bb46a0361c2550d92912954ab8ab995501cc6 100644
--- a/argonaut/admin/systems/services/argonaut/class_argonautFuseOPSIConfig.inc
+++ b/argonaut/admin/systems/services/argonaut/class_argonautFuseOPSIConfig.inc
@@ -21,20 +21,20 @@
 
 class argonautFuseOPSIConfig extends simplePlugin
 {
-  var $objectclasses  = array("argonautFuseOPSIConfig");
+  var $objectclasses  = ["argonautFuseOPSIConfig"];
   var $showActions    = FALSE;
   var $displayHeader     = TRUE;
 
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       "plShortName"     => _("Argonaut Fuse OPSI module settings"),
       "plDescription"   => _("Argonaut Fuse OPSI module settings")." ("._("Services").")",
-      "plCategory"      => array("server"),
-      "plObjectType"    => array("fusemodule"),
+      "plCategory"      => ["server"],
+      "plObjectType"    => ["fusemodule"],
       "plProvidedAcls"  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   /*!
@@ -42,32 +42,32 @@ class argonautFuseOPSIConfig extends simplePlugin
    */
   static function getAttributesInfo ()
   {
-    return array (
-      'opsi' => array (
+    return  [
+      'opsi' => [
         'name'  => _('OPSI'),
-        'attrs' => array (
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Opsi admin'),
             '',
             'argonautFuseOpsiAdmin'
           ),
-          new PasswordAttribute (
+          new PasswordAttribute(
             _('Opsi password'),
             '',
             'argonautFuseOpsiPassword'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Opsi server'),
             '',
             'argonautFuseOpsiServer'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Opsi lang'),
             '',
             'argonautFuseOpsiLang'
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 }
diff --git a/argonaut/admin/systems/services/argonaut/class_argonautMirrorConfig.inc b/argonaut/admin/systems/services/argonaut/class_argonautMirrorConfig.inc
index 249cbd5f1d8a25f58f85e2413813a296e5cd5be9..420b2ecd9c19d68fe6c2bab53a937217226527fc 100644
--- a/argonaut/admin/systems/services/argonaut/class_argonautMirrorConfig.inc
+++ b/argonaut/admin/systems/services/argonaut/class_argonautMirrorConfig.inc
@@ -22,87 +22,87 @@ class argonautMirrorConfig extends simpleService
 {
   protected static $showActions = FALSE;
 
-  var $objectclasses  = array('argonautMirrorConfig');
+  var $objectclasses  = ['argonautMirrorConfig'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Argonaut Mirror settings'),
       'plDescription'   => _('Argonaut Mirror settings'),
       'plIcon'          => 'geticon.php?context=applications&icon=argonaut-mirror&size=16',
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array (
-    'section1' => array (
+    return  [
+    'section1' => [
         'name'  => _('Argonaut mirror settings'),
-        'attrs' => array (
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Local Debian mirror directory'),
             '',
             'argonautMirrorDir', FALSE,
             '/srv/www/debian'
           )
-        )
-      ),
-      'section2' => array (
+        ]
+      ],
+      'section2' => [
         'name' => _('Argonaut Debconf Crawler configuration'),
-        'attrs' => array (
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Local packages folder'),
             _('Folder in which the crawler will store packages during analysis'),
             'argonautCrawlerPackagesFolder', FALSE,
             '/var/cache/argonaut/packages'
           )
-        )
-      ),
-      'section3' => array (
+        ]
+      ],
+      'section3' => [
         'name' => _('Argonaut Repository configuration'),
-        'attrs' => array (
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Proxy'),
             _('Specifies the http proxy (like Squid) to use for http and hftp method'),
             'argonautLdap2repProxy', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Log directory'), _('Directory in which logs should be stored'),
             'argonautLdap2repLogDir', FALSE,
             '/var/log/argonaut/'
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Ignore errors'),
             _('Causes debmirror to ignore missing or broken deb and source files but still be pedantic about checking meta files'),
             'argonautLdap2repErrors', FALSE,
             FALSE
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Source'), _('Include source in the mirror'),
             'argonautLdap2repSource', FALSE,
             TRUE
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('GPG Check'), _('Fail if the Release.gpg file is missing'),
             'argonautLdap2repGPGCheck', FALSE,
             TRUE
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Contents'),
             _('Additionally download Contents.<arch>.gz files (Note that these files can be relatively big and can change frequently)'),
             'argonautLdap2repContents', FALSE,
             FALSE
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Verbose'), _('Wether to activate verbose mode'),
             'argonautLdap2repVerbose', FALSE,
             FALSE
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 }
 ?>
diff --git a/argonaut/admin/systems/services/argonaut/class_argonautServer.inc b/argonaut/admin/systems/services/argonaut/class_argonautServer.inc
index aa605276d56fcbe9148dabc590d5264eb85d8c30..d866f7d2eacd3bb40dcceb6a6bea04389f600884 100644
--- a/argonaut/admin/systems/services/argonaut/class_argonautServer.inc
+++ b/argonaut/admin/systems/services/argonaut/class_argonautServer.inc
@@ -22,22 +22,22 @@
 class argonautServer extends simpleService
 {
   /* This plugin only writes its objectClass */
-  var $objectclasses  = array("argonautServer");
+  var $objectclasses  = ["argonautServer"];
 
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
     $acls = parent::generatePlProvidedAcls(static::getAttributesInfo());
     unset($acls['simpleServiceStart']);
     unset($acls['simpleServiceStop']);
     unset($acls['simpleServiceRestart']);
-    return array(
+    return [
       'plShortName'   => _('Argonaut server'),
       'plDescription' => _('Argonaut server').' ('._('Services').')',
       'plIcon'        => 'geticon.php?context=applications&icon=argonaut&size=16',
 
       'plProvidedAcls'  => $acls,
-    );
+    ];
   }
 
     /*!
@@ -45,90 +45,90 @@ class argonautServer extends simpleService
    */
   static function getAttributesInfo ()
   {
-    return array (
-      'server' => array (
+    return  [
+      'server' => [
         'name'  => _('Argonaut server'),
-        'attrs' => array (
-          new BooleanAttribute (
+        'attrs' => [
+          new BooleanAttribute(
             _('Delete finished tasks'),
             _('Wether or not argonaut server should delete successfully finished tasks'),
             'argonautDeleteFinished', FALSE,
             TRUE
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Get packages information'),
             _('Wether or not argonaut server should get packages information from repositories at start and then once a day. Needed for FAI package list creation.'),
             'argonautFetchPackages', FALSE,
             TRUE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Protocol'), _('Protocol to use for argonaut'),
             'argonautProtocol', TRUE,
-            array('http', 'https')
+            ['http', 'https']
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Port'),
             _('Port on which the argonaut server will be listening'),
             'argonautPort', TRUE,
             0 /*min*/, FALSE /*no max*/, 8080 /*default value*/
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Timeout'),
             _('Time in seconds before to consider an argonaut client or server as down'),
             'argonautTimeout', FALSE,
             1 /*min*/, FALSE /*no max*/,
             10
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Log directory'),
             _('Directory in which argonaut will store its log'),
             'argonautLogDir', FALSE,
             '/var/log/argonaut'
           )
-        )
-      ),
-      'wakeonlan' => array (
+        ]
+      ],
+      'wakeonlan' => [
         'name'  => _('Wake on lan'),
-        'attrs' => array (
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Interface'),
             _('Interface to use for sending WakeOnLan requests'),
             'argonautWakeOnLanInterface', FALSE,
             'eth0'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('IP tool'), _('IP tool to use'),
             'argonautIpTool', FALSE,
             '/sbin/ifconfig'
           ),
-        )
-      ),
-      'ssl' => array (
+        ]
+      ],
+      'ssl' => [
         'name'  => _('SSL paths'),
-        'attrs' => array (
-          new TrimmedStringAttribute (
+        'attrs' => [
+          new TrimmedStringAttribute(
             _('Key'), _('Path to the private key file on Argonaut server'),
             'argonautKeyPath', FALSE,
             '/etc/ssl/private/argonaut.key'
           ),
-          new TrimmedStringAttribute (
+          new TrimmedStringAttribute(
             _('Certificate'), _('Path to the certificate file on Argonaut server'),
             'argonautCertPath', FALSE,
             '/etc/ssl/certs/argonaut.cert'
           ),
-          new TrimmedStringAttribute (
+          new TrimmedStringAttribute(
             _('CA certificate'), _('Path to the CA certificate file on Argonaut server'),
             'argonautCaCertPath', FALSE,
             '/etc/ssl/certs/ca.cert'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('CN of the certificate'), _('The CN in the server certificate'),
             'argonautCertCN', FALSE
           ),
-          new HiddenAttribute ('argonautServerToken'),
-        )
-      )
-    );
+          new HiddenAttribute('argonautServerToken'),
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $parent = NULL)
@@ -138,18 +138,18 @@ class argonautServer extends simpleService
       $this->argonautServerToken = md5(random_int(0, PHP_INT_MAX));
     }
     $this->attributesAccess['argonautProtocol']->setManagedAttributes(
-      array(
-        'disable' => array (
-          'http' => array (
+      [
+        'disable' => [
+          'http' => [
             'argonautKeyPath','argonautCertPath','argonautCaCertPath','argonautCertCN'
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
   }
 
   /*! \brief Get service information for serverService plugin */
-  function getListEntry()
+  function getListEntry ()
   {
     $fields = parent::getListEntry();
 
diff --git a/argonaut/html/getFAIstatus.php b/argonaut/html/getFAIstatus.php
index 595737367cedbe02af06422d2dd70edf76f0eafb..08b281c6e1b3e5d0e2d862d3e8d97da44b7b721e 100644
--- a/argonaut/html/getFAIstatus.php
+++ b/argonaut/html/getFAIstatus.php
@@ -23,17 +23,17 @@
 /* Basic setup, remove eventually registered sessions */
 @require_once ("../include/php_setup.inc");
 @require_once ("functions.inc");
-@require_once ("variables.inc");
+@require_once("variables.inc");
 
 
 session_cache_limiter("private");
 session::start();
-session::global_set('errorsAlreadyPosted', array());
+session::global_set('errorsAlreadyPosted', []);
 
 /* Logged in? Simple security check */
 if (!session::global_is_set('ui')) {
-  logging::log('security', 'unknown', '', array(), 'Error: getFAIstatus.php called without session');
-  header ('Location: index.php');
+  logging::log('security', 'unknown', '', [], 'Error: getFAIstatus.php called without session');
+  header('Location: index.php');
   exit;
 }
 
diff --git a/argonaut/include/class_supportDaemon.inc b/argonaut/include/class_supportDaemon.inc
index 144cede7ffe3b9de444d42d07c2d019678535244..d2b12dbca7db2ec3fbbfb76a0d397d0d5368cde4 100644
--- a/argonaut/include/class_supportDaemon.inc
+++ b/argonaut/include/class_supportDaemon.inc
@@ -34,8 +34,8 @@ class supportDaemon
 {
   private $s_host       = "";
   private $host_error   = "";
-  private $http_options = array();
-  private $ssl_options  = array();
+  private $http_options = [];
+  private $ssl_options  = [];
 
   private $s_error      = "";
   private $b_error      = FALSE;
@@ -48,7 +48,7 @@ class supportDaemon
   /*!
    * \brief constructor
    */
-  public function __construct()
+  public function __construct ()
   {
     global $config;
     /* This should only be the case if we call this from setup.
@@ -72,32 +72,32 @@ class supportDaemon
   /*!
    * \brief Load argonaut server config from argonaut service in ldap
    */
-  public function get_argonaut_host()
+  public function get_argonaut_host ()
   {
     global $config;
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
     $ldap->search(
       "(objectClass=argonautServer)",
-      array(
+      [
         'cn','ipHostNumber','argonautProtocol','argonautPort',
         'argonautTimeout','argonautCertCN',
         'argonautServerToken'
-      )
+      ]
     );
     if ($ldap->count() == 1) {
       $ldap_infos = $ldap->fetch();
       if (isset($ldap_infos['argonautTimeout'][0])) {
-        $this->http_options = array(
+        $this->http_options = [
           'timeout' => $ldap_infos['argonautTimeout'][0]
-        );
+        ];
         if ($ldap_infos['argonautProtocol'][0] == 'https') {
-          $this->ssl_options = array(
+          $this->ssl_options = [
             'cafile'            => $config->get_cfg_value('SslCaCertPath'),
             'peer_name'         => $ldap_infos['argonautCertCN'][0],
             'verify_peer'       => TRUE,
             'verify_peer_name'  => TRUE,
-          );
+          ];
           $sshaMethod = new passwordMethodssha();
           $this->http_options['header'] = 'Authorization: Basic '.base64_encode('fd:'.$sshaMethod->generate_hash($ldap_infos['argonautServerToken'][0]));
         }
@@ -116,7 +116,7 @@ class supportDaemon
    *
    * \return boolean TRUE if the server pings, FALSE otherwise
    */
-  public function is_available()
+  public function is_available ()
   {
     if ($this->s_host == "") {
       $this->set_error($this->host_error);
@@ -164,14 +164,14 @@ class supportDaemon
     return TRUE;
   }
 
-  private function new_state($state_value)
+  private function new_state ($state_value)
   {
-    @DEBUG (DEBUG_SI, __LINE__, __FUNCTION__, __FILE__, $this->s_error, date('H.i.s').' Setting state ('.$state_value.') to ');
-    session::global_set('argonaut_state', array(
+    @DEBUG(DEBUG_SI, __LINE__, __FUNCTION__, __FILE__, $this->s_error, date('H.i.s').' Setting state('.$state_value.') to ');
+    session::global_set('argonaut_state', [
       'date'  => time(),
       'error' => $this->s_error,
       'value' => $state_value
-    ));
+    ]);
     return $state_value;
   }
 
@@ -182,7 +182,7 @@ class supportDaemon
    *
    * \return TRUE if correctly appended FALSE otherwise
    */
-  public function append($event)
+  public function append ($event)
   {
     if (!($event instanceof argonautAction)) {
       $this->set_error('Event object passed to append was not of the expected argonautAction type');
@@ -209,9 +209,9 @@ class supportDaemon
    *
    * \return the returned value if correctly executed and FALSE otherwise
    */
-  public function append_call($action, $targets, $data)
+  public function append_call ($action, $targets, $data)
   {
-    @DEBUG (DEBUG_SI, __LINE__, __FUNCTION__, __FILE__, array('action' => $action, 'targets' => $targets, 'data' => $data), date('H.i.s').' Appending call to');
+    @DEBUG(DEBUG_SI, __LINE__, __FUNCTION__, __FILE__, ['action' => $action, 'targets' => $targets, 'data' => $data], date('H.i.s').' Appending call to');
     if ($this->s_host == '') {
       $this->set_error($this->host_error);
       return FALSE;
@@ -224,12 +224,12 @@ class supportDaemon
     try {
       $client = new jsonRPCClient($this->s_host, $this->http_options, $this->ssl_options);
       if (!is_array($targets)) {
-        $tmpTargets = array($targets);
+        $tmpTargets = [$targets];
       } else {
         $tmpTargets = $targets;
       }
       $status = $client->action($action, $tmpTargets, $data);
-      @DEBUG (DEBUG_SI, __LINE__, __FUNCTION__, __FILE__, $status, date('H.i.s').' Answer');
+      @DEBUG(DEBUG_SI, __LINE__, __FUNCTION__, __FILE__, $status, date('H.i.s').' Answer');
       $this->reset_error();
       $this->new_state(TRUE);
       if (is_array($status) && !is_array($targets) && isset($status[0])) {
@@ -254,9 +254,9 @@ class supportDaemon
    *
    * \param  String $str The Error message,
    */
-  private function set_error($str)
+  private function set_error ($str)
   {
-    @DEBUG (DEBUG_SI, __LINE__, __FUNCTION__, __FILE__, $str, date('H.i.s').' Setting error to');
+    @DEBUG(DEBUG_SI, __LINE__, __FUNCTION__, __FILE__, $str, date('H.i.s').' Setting error to');
     $this->b_error = TRUE;
     $this->s_error = $str;
   }
@@ -265,7 +265,7 @@ class supportDaemon
   /*!
    * \brief  Resets the error message.
    */
-  private function reset_error()
+  private function reset_error ()
   {
     $this->b_error = FALSE;
     $this->s_error = "";
@@ -277,7 +277,7 @@ class supportDaemon
    *
    * \return boolean returns TRUE or FALSE, whether there is an error or not.
    */
-  public function is_error()
+  public function is_error ()
   {
     return $this->b_error;
   }
@@ -288,7 +288,7 @@ class supportDaemon
    *
    * \return string Returns the last error.
    */
-  public function get_error()
+  public function get_error ()
   {
     $str = $this->s_error;
     $ret = "";
@@ -310,12 +310,12 @@ class supportDaemon
    *
    * \return array The entries formatted
    */
-  private function format_entries($entries)
+  private function format_entries ($entries)
   {
     global $config;
     timezone::get_default_timezone();
-    $entries_r  = array();
-    $macInfos   = array();
+    $entries_r  = [];
+    $macInfos   = [];
     $ldap       = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
     foreach ($entries as &$entry) {
@@ -324,18 +324,18 @@ class supportDaemon
 
       /* Do an ldap search only if we haven't done it for the same mac before */
       if (!isset($macInfos[$entry_r['MACADDRESS']])) {
-        $types = array('workstation','server','terminal');
+        $types = ['workstation','server','terminal'];
         foreach ($types as $type) {
-          $objects = objects::ls($type, array('dn' => 'raw', 'cn' => 1), NULL, '(macAddress='.$entry_r['MACADDRESS'].')');
+          $objects = objects::ls($type, ['dn' => 'raw', 'cn' => 1], NULL, '(macAddress='.$entry_r['MACADDRESS'].')');
           if (count($objects) > 1) {
             trigger_error('Duplicated mac address '.$entry_r['MACADDRESS'].' in LDAP');
           }
           if (count($objects) > 0) {
-            $macInfos[$entry_r['MACADDRESS']] = array(
+            $macInfos[$entry_r['MACADDRESS']] = [
               'dn'    => reset($objects)['dn'],
               'type'  => $type,
               'cn'    => reset($objects)['cn']
-            );
+            ];
             break;
           }
         }
@@ -369,7 +369,7 @@ class supportDaemon
    *
    * \return array All queued entries as an array or FALSE if there is an error.
    */
-  public function get_queued_entries()
+  public function get_queued_entries ()
   {
     if ($this->s_host == "") {
       $this->set_error($this->host_error);
@@ -399,7 +399,7 @@ class supportDaemon
    *
    * \return array  Array of the requested entries.
   */
-  public function get_entries_by_id($ids)
+  public function get_entries_by_id ($ids)
   {
     return $this->get_entries("get_entries_by_id", $ids);
   }
@@ -411,7 +411,7 @@ class supportDaemon
    *
    * \return boolean TRUE on success FALSE otherwise.
    */
-  public function remove_entries($ids)
+  public function remove_entries ($ids)
   {
     if (!is_array($ids)) {
       trigger_error("Requires an array as parameter.");
@@ -448,9 +448,9 @@ class supportDaemon
    *
    * \return Boolean TRUE on success.
   */
-  public function remove_entry($id)
+  public function remove_entry ($id)
   {
-    return $this->remove_entries(array($id));
+    return $this->remove_entries([$id]);
   }
 
   /*!
@@ -460,9 +460,9 @@ class supportDaemon
    *
    * \return array  array of the requested entry.
   */
-  public function get_entry_by_id($id)
+  public function get_entry_by_id ($id)
   {
-    return $this->get_entries_by_id(array($id));
+    return $this->get_entries_by_id([$id]);
   }
 
   /*!
@@ -472,7 +472,7 @@ class supportDaemon
    *
    * \return boolean Returns TRUE on success FALSE otherwise.
   */
-  public function process_entries_now($ids)
+  public function process_entries_now ($ids)
   {
     if (!is_array($ids)) {
       trigger_error("Requires an array as first parameter.");
@@ -509,13 +509,13 @@ class supportDaemon
    *
    * \return boolean Returns TRUE if currently installing FALSE otherwise.
    */
-  public function is_currently_installing($mac)
+  public function is_currently_installing ($mac)
   {
-    $evts = $this->get_entries_by_mac(array($mac));
+    $evts = $this->get_entries_by_mac([$mac]);
     if ($evts) {
       foreach ($evts as $evt) {
         if (($evt['STATUS'] == "processing") &&
-            in_array($evt['HEADERTAG'], array("reinstall","update"))) {
+            in_array($evt['HEADERTAG'], ["reinstall","update"])) {
 
           return TRUE;
         }
@@ -531,7 +531,7 @@ class supportDaemon
    *
    * \return array  The entries for the requested mac addresses.
    */
-  public function get_entries_by_mac($macs)
+  public function get_entries_by_mac ($macs)
   {
     return $this->get_entries("get_entries_by_mac", $macs);
   }
@@ -545,7 +545,7 @@ class supportDaemon
    *
    * \return Array   The entries for the requested addresses.
    */
-  private function get_entries($func, $address)
+  private function get_entries ($func, $address)
   {
     if (!is_array($address)) {
       trigger_error("Requires an array as parameter.");
@@ -589,7 +589,7 @@ class supportDaemon
    *  MAC_00_01_6C_9D_B9_FA['install_20080311_090900']['FILES'][1]=syslog.log
    * \endcode
    */
-  public function get_log_info_for_mac($mac)
+  public function get_log_info_for_mac ($mac)
   {
     if (empty($mac)) {
       return FALSE;
@@ -604,7 +604,7 @@ class supportDaemon
       /* directory does not exists */
       return FALSE;
     }
-    $ret = array();
+    $ret = [];
     foreach ($dates as $date) {
       if ($date == "." || $date == "..") {
           continue;
@@ -631,7 +631,7 @@ class supportDaemon
    * \param string $file The log filename.
    *
    */
-  public function get_log_file($mac, $date, $file)
+  public function get_log_file ($mac, $date, $file)
   {
     $path = $this->logdir.strtolower("/$mac")."/$date/$file";
     if (is_file($path)) {
@@ -654,7 +654,7 @@ class supportDaemon
    *
    * \return boolean TRUE if the workstation is running an argonaut daemon
   */
-  public function ping($mac)
+  public function ping ($mac)
   {
     if ($this->s_host == "") {
       $this->set_error($this->host_error);
@@ -697,14 +697,14 @@ class supportDaemon
    *
    * \return Array   List of packages that fit the given parameters.
   */
-  public function FAI_get_packages($release, $attrs, $filters, $from = -1, $to = -1, $package_list = FALSE)
+  public function FAI_get_packages ($release, $attrs, $filters, $from = -1, $to = -1, $package_list = FALSE)
   {
     if ($this->s_host == "") {
       $this->set_error($this->host_error);
-      return array();
+      return [];
     }
     if ($this->saved_state() == FALSE) {
-      return array();
+      return [];
     }
 
     // filters is a package name list
@@ -717,7 +717,7 @@ class supportDaemon
     try {
       $client = new jsonRPCClient($this->s_host, $this->http_options, $this->ssl_options);
       $res = $client->get_packages($release, $attrs, $filters, $from, $to);
-      $to_return = array();
+      $to_return = [];
       $attrs = array_map('strtoupper', $attrs);
       foreach ($res as $distribution => $packages) {
         $words = preg_split("/\//", $distribution);
@@ -746,11 +746,11 @@ class supportDaemon
       $this->set_error($e->getMessage());
       // connection is OK
       $this->new_state(TRUE);
-      return array();
+      return [];
     } catch (jsonRPCClientNetworkErrorException $e) {
       $this->set_error($e->getMessage());
       $this->new_state(FALSE);
-      return array();
+      return [];
     }
   }
 
@@ -761,10 +761,10 @@ class supportDaemon
    *
    * \return string Escaped string
   */
-  public function escape_perl_chars($str)
+  public function escape_perl_chars ($str)
   {
-    $patterns = array("/\+/", "/\*/", "/\./");
-    $escaped  = array("\+",   "\*",   "\."  );
+    $patterns = ["/\+/", "/\*/", "/\./"];
+    $escaped  = ["\+",   "\*",   "\."  ];
     return preg_replace($patterns, $escaped, $str);
   }
 
@@ -774,9 +774,9 @@ class supportDaemon
    *
    * \return array  All kernel packages for the given release
   */
-  public function FAI_get_kernels($release)
+  public function FAI_get_kernels ($release)
   {
-    $kernels = $this->FAI_get_packages($release, array("package"), array("linux-image", '^kernel$'));
+    $kernels = $this->FAI_get_packages($release, ["package"], ["linux-image", '^kernel$']);
     foreach ($kernels as &$kernel) {
       $kernel = $kernel['PACKAGE'];
     }
@@ -791,7 +791,7 @@ class supportDaemon
    *
    * \return TRUE if success or FALSE otherwise
   */
-  public function clean_queue_from_mac($macs)
+  public function clean_queue_from_mac ($macs)
   {
     if ($this->s_host == "") {
       $this->set_error($this->host_error);
@@ -805,7 +805,7 @@ class supportDaemon
       return TRUE;
     }
     if (!is_array($macs)) {
-      $macs = array($macs);
+      $macs = [$macs];
     }
 
     try {
diff --git a/argonaut/include/jsonRPCClient.php b/argonaut/include/jsonRPCClient.php
index 92d2b9669c6538297c732307e02eaccddfeacfeb..e66f5cd270e5830a4b85d0ed38f0ac3b1ed71494 100644
--- a/argonaut/include/jsonRPCClient.php
+++ b/argonaut/include/jsonRPCClient.php
@@ -104,7 +104,7 @@ class jsonRPCClient {
    *
    * \param boolean $debug false
    */
-  public function __construct($url, $http_options = array(), $ssl_options = array(), $debug = FALSE)
+  public function __construct ($url, $http_options = [], $ssl_options = [], $debug = FALSE)
   {
     // server URL
     $this->url = $url;
@@ -129,7 +129,7 @@ class jsonRPCClient {
    *
    * \param boolean $notification
    */
-  public function setRPCNotification($notification)
+  public function setRPCNotification ($notification)
   {
     empty($notification) ?
               $this->notification = FALSE
@@ -146,7 +146,7 @@ class jsonRPCClient {
    *
    * \return array
    */
-  public function __call($method, $params)
+  public function __call ($method, $params)
   {
     $debug = "";
 
@@ -171,26 +171,26 @@ class jsonRPCClient {
     }
 
     // prepares the request
-    $request = array(
+    $request = [
             'method' => $method,
             'params' => $params,
             'id' => $currentId
-            );
+            ];
     $request = json_encode($request);
     $this->debug && $debug .= '***** Request *****'."\n".$request."\n".'***** End Of request *****'."\n\n";
 
     // performs the HTTP(S) POST
-    $opts = array (
+    $opts = [
       'http' => array_merge(
-        array (
+         [
           'method'  => 'POST',
           'header'  => 'Content-type: application/json',
           'content' => $request
-        ),
-        $this->http_options
+         ],
+         $this->http_options
       ),
       'ssl' => $this->ssl_options
-    );
+    ];
 
     $context  = stream_context_create($opts);
     $fp = fopenWithErrorHandling($this->url, 'r', FALSE, $context);
diff --git a/argonaut/locale/af_ZA/fusiondirectory.po b/argonaut/locale/af_ZA/fusiondirectory.po
index da9ffd1e92851340ad385df92880767f4a903ee8..9f4467a10bcc596c5d8b8d6d982d101ca3dd4706 100644
--- a/argonaut/locale/af_ZA/fusiondirectory.po
+++ b/argonaut/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/argonaut/locale/ar/fusiondirectory.po b/argonaut/locale/ar/fusiondirectory.po
index 7fcfdec92dba2084a57e2f0646ea5a4d1d6a2bdc..b75858d6e474819332cebb5a338158ad3ea9dbc0 100644
--- a/argonaut/locale/ar/fusiondirectory.po
+++ b/argonaut/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/argonaut/locale/ca/fusiondirectory.po b/argonaut/locale/ca/fusiondirectory.po
index 6a6d7c723f8a34185311858f2be65c519f830e86..dfbcf445e40182a082669bd14a36b9c83d0eac25 100644
--- a/argonaut/locale/ca/fusiondirectory.po
+++ b/argonaut/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/argonaut/locale/cs_CZ/fusiondirectory.po b/argonaut/locale/cs_CZ/fusiondirectory.po
index 6681b7468e8561f5640eba6a678d0f4dba76251f..5ef4861744e049463ed3ca560dfe9747180f6a61 100644
--- a/argonaut/locale/cs_CZ/fusiondirectory.po
+++ b/argonaut/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2019\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/argonaut/locale/de/fusiondirectory.po b/argonaut/locale/de/fusiondirectory.po
index 97d186d60eb06104d46166961b3d28998323470b..e529a4d9eee9dc1051cc6d5c4e68eb13f75185d7 100644
--- a/argonaut/locale/de/fusiondirectory.po
+++ b/argonaut/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/argonaut/locale/el_GR/fusiondirectory.po b/argonaut/locale/el_GR/fusiondirectory.po
index 51488ba33e0e9541cda668fda0c6bffcfacf8339..bf8b0cca6bc18e6c83ab5dfb029bf45f61329bfa 100644
--- a/argonaut/locale/el_GR/fusiondirectory.po
+++ b/argonaut/locale/el_GR/fusiondirectory.po
@@ -5,15 +5,16 @@
 # 
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2017
+# LOUKAS SKOUROLIAKOS, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
-"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
+"Last-Translator: LOUKAS SKOUROLIAKOS, 2021\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -690,7 +691,7 @@ msgstr "MAC"
 #: addons/argonaut/class_argonautImportFile.inc:185
 #: addons/argonaut/deploy-list.xml:14 addons/argonaut/import_events.tpl.c:26
 msgid "Event"
-msgstr ""
+msgstr "Γεγονός"
 
 #: addons/argonaut/class_argonautAction.inc:36
 #: addons/argonaut/class_argonautAction.inc:39
diff --git a/argonaut/locale/en/fusiondirectory.po b/argonaut/locale/en/fusiondirectory.po
index 303b95180c34714e0cc2eea0bceede9bb8eca794..3e15664c55943722cb3953aaab292f4205778f92 100644
--- a/argonaut/locale/en/fusiondirectory.po
+++ b/argonaut/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -25,783 +25,856 @@ msgstr ""
 msgid "There is no argonaut server configured"
 msgstr ""
 
-#: include/class_supportDaemon.inc:616
+#: include/class_supportDaemon.inc:641
 #, php-format
 msgid "Could not read \"%s\"!"
 msgstr ""
 
-#: include/class_supportDaemon.inc:620
+#: include/class_supportDaemon.inc:645
 #, php-format
 msgid "\"%s\" is not a file!"
 msgstr ""
 
-#: addons/argonaut/class_argonautQueue.inc:41
-#: addons/argonaut/class_argonautQueue.inc:46
-#: addons/argonaut/class_argonautQueue.inc:49
-msgid "Deployment queue"
+#: addons/argonaut/deploy-list.xml:10
+msgid "List of queued jobs"
 msgstr ""
 
-#: addons/argonaut/class_argonautQueue.inc:42
-msgid "Provide a mechanism to automatically activate systems"
+#: addons/argonaut/deploy-list.xml:14
+#: addons/argonaut/class_argonautImportFile.inc:185
+#: addons/argonaut/import_events.tpl.c:26
+msgid "Event"
 msgstr ""
 
-#: addons/argonaut/class_argonautQueue.inc:93
-msgid "Permission"
+#: addons/argonaut/deploy-list.xml:27
+msgid "Target"
 msgstr ""
 
-#: addons/argonaut/class_argonautQueue.inc:123
-#: addons/argonaut/deploy-list.xml:86 addons/argonaut/deploy-list.xml:136
-msgid "Remove"
+#: addons/argonaut/deploy-list.xml:35
+msgid "Task"
 msgstr ""
 
-#: addons/argonaut/class_argonautQueue.inc:124
-#, php-format
-msgid "The following jobs couldn't be deleted, they have to be aborted: %s"
+#: addons/argonaut/deploy-list.xml:43
+#: addons/argonaut/class_argonautAction.inc:98
+msgid "Period"
 msgstr ""
 
-#: addons/argonaut/class_argonautQueue.inc:188
-msgid "Info"
+#: addons/argonaut/deploy-list.xml:51
+#: addons/argonaut/class_argonautAction.inc:53
+#: addons/argonaut/class_argonautAction.inc:73
+msgid "Schedule"
 msgstr ""
 
-#: addons/argonaut/class_argonautQueue.inc:188
-#, php-format
-msgid "%s"
+#: addons/argonaut/deploy-list.xml:59
+msgid "Status"
 msgstr ""
 
-#: addons/argonaut/class_argonautQueue.inc:214
-msgid "Error detail"
+#: addons/argonaut/deploy-list.xml:67
+msgid "Actions"
 msgstr ""
 
-#: addons/argonaut/class_argonautQueue.inc:256
-#: addons/argonaut/class_argonautQueue.inc:340
-#: addons/argonaut/class_filterArgonautEvents.inc:39
-#: addons/argonaut/import_events.tpl.c:32
-msgid "Error"
+#: addons/argonaut/deploy-list.xml:79
+#: addons/argonaut/class_argonautImportFile.inc:97
+#: addons/argonaut/class_argonautImportFile.inc:121
+#: addons/argonaut/class_argonautImportFile.inc:145
+#: addons/argonaut/class_argonautImportFile.inc:157
+msgid "Import"
 msgstr ""
 
-#: addons/argonaut/class_argonautQueue.inc:256
-#, php-format
-msgid "Cannot update queue entries."
+#: addons/argonaut/deploy-list.xml:86 addons/argonaut/deploy-list.xml:136
+#: addons/argonaut/class_argonautQueue.inc:126
+msgid "Remove"
 msgstr ""
 
-#: addons/argonaut/class_argonautQueue.inc:324
-msgid "immediately"
+#: addons/argonaut/deploy-list.xml:97 addons/argonaut/deploy-list.xml:144
+msgid "Abort"
 msgstr ""
 
-#: addons/argonaut/class_argonautQueue.inc:336
-msgid "Waiting"
+#: addons/argonaut/deploy-list.xml:108
+msgid "Execute"
 msgstr ""
 
-#: addons/argonaut/class_argonautQueue.inc:339
-msgid "Show error"
+#: addons/argonaut/deploy-list.xml:120
+msgid "Process now"
 msgstr ""
 
-#: addons/argonaut/class_argonautQueue.inc:343
-msgid "Processed"
+#: addons/argonaut/deploy-list.xml:128
+msgid "Retry"
 msgstr ""
 
-#: addons/argonaut/class_argonautQueue.inc:352
-msgid "in progress"
+#: addons/argonaut/class_argonautImportFile.inc:33
+#: addons/argonaut/class_argonautImportFile.inc:36
+msgid "Argonaut task import"
 msgstr ""
 
-#: addons/argonaut/class_argonautEventTypes.inc:67
-msgid "Switch off"
+#: addons/argonaut/class_argonautImportFile.inc:34
+msgid "Imports argonaut tasks from CSV file"
 msgstr ""
 
-#: addons/argonaut/class_argonautEventTypes.inc:80
-msgid "Reboot"
+#: addons/argonaut/class_argonautImportFile.inc:49
+msgid "Import actions from CSV file"
 msgstr ""
 
-#: addons/argonaut/class_argonautEventTypes.inc:84
-msgid "Wake up"
+#: addons/argonaut/class_argonautImportFile.inc:53
+msgid "Import a list of task into argonaut"
 msgstr ""
 
-#: addons/argonaut/class_argonautEventTypes.inc:88
-msgid "Software update"
+#: addons/argonaut/class_argonautImportFile.inc:63
+msgid "Upload"
 msgstr ""
 
-#: addons/argonaut/class_argonautEventTypes.inc:92
-msgid "(Re)Install"
+#: addons/argonaut/class_argonautImportFile.inc:67
+msgid "Import file"
 msgstr ""
 
-#: addons/argonaut/class_argonautEventTypes.inc:105
-msgid "Refresh slave files (ldap2zone)"
+#: addons/argonaut/class_argonautImportFile.inc:72
+msgid "Imported tasks"
 msgstr ""
 
-#: addons/argonaut/class_argonautAction.inc:27
-#: addons/argonaut/class_argonautAction.inc:126
-msgid "Hours"
+#: addons/argonaut/class_argonautImportFile.inc:122
+msgid "Fix the errors in your CSV file first"
 msgstr ""
 
-#: addons/argonaut/class_argonautAction.inc:32
-#: addons/argonaut/class_argonautAction.inc:126
-msgid "Minutes"
+#: addons/argonaut/class_argonautImportFile.inc:138
+#: addons/argonaut/class_argonautQueue.inc:246
+msgid "Infrastructure service"
 msgstr ""
 
-#: addons/argonaut/class_argonautAction.inc:37
-msgid "Seconds"
+#: addons/argonaut/class_argonautImportFile.inc:145
+#, php-format
+msgid "Import complete: %s events successfully send, %s failed"
 msgstr ""
 
-#: addons/argonaut/class_argonautAction.inc:53
-msgid "Date"
+#: addons/argonaut/class_argonautImportFile.inc:157
+msgid "file is empty"
 msgstr ""
 
-#: addons/argonaut/class_argonautAction.inc:58
-msgid "Time"
+#: addons/argonaut/class_argonautImportFile.inc:182
+#: addons/argonaut/import_events.tpl.c:23
+msgid "MAC"
 msgstr ""
 
-#: addons/argonaut/class_argonautAction.inc:81
-#: addons/argonaut/class_argonautAction.inc:84
+#: addons/argonaut/class_argonautAction.inc:36
+#: addons/argonaut/class_argonautAction.inc:39
 msgid "Argonaut task"
 msgstr ""
 
-#: addons/argonaut/class_argonautAction.inc:82
+#: addons/argonaut/class_argonautAction.inc:37
 msgid "Schedule an argonaut task"
 msgstr ""
 
-#: addons/argonaut/class_argonautAction.inc:97
-#: addons/argonaut/class_argonautAction.inc:107
-#: addons/argonaut/deploy-list.xml:51
-msgid "Schedule"
+#: addons/argonaut/class_argonautAction.inc:56
+msgid "Action"
+msgstr ""
+
+#: addons/argonaut/class_argonautAction.inc:56
+msgid "The action you are about to schedule"
+msgstr ""
+
+#: addons/argonaut/class_argonautAction.inc:68
+msgid "Scheduled"
+msgstr ""
+
+#: addons/argonaut/class_argonautAction.inc:68
+msgid "Wether this job should be scheduled or ran right away"
 msgstr ""
 
-#: addons/argonaut/class_argonautAction.inc:111
+#: addons/argonaut/class_argonautAction.inc:77
 msgid "Periodical job"
 msgstr ""
 
-#: addons/argonaut/class_argonautAction.inc:111
+#: addons/argonaut/class_argonautAction.inc:77
 msgid "Wether this job should repeat in time"
 msgstr ""
 
-#: addons/argonaut/class_argonautAction.inc:115
+#: addons/argonaut/class_argonautAction.inc:81
 msgid "How often this task should be repeated"
 msgstr ""
 
-#: addons/argonaut/class_argonautAction.inc:126
+#: addons/argonaut/class_argonautAction.inc:92
+msgid "Minutes"
+msgstr ""
+
+#: addons/argonaut/class_argonautAction.inc:92
+msgid "Hours"
+msgstr ""
+
+#: addons/argonaut/class_argonautAction.inc:92
 msgid "Days"
 msgstr ""
 
-#: addons/argonaut/class_argonautAction.inc:126
+#: addons/argonaut/class_argonautAction.inc:92
 msgid "Weeks"
 msgstr ""
 
-#: addons/argonaut/class_argonautAction.inc:126
+#: addons/argonaut/class_argonautAction.inc:92
 msgid "Months"
 msgstr ""
 
-#: addons/argonaut/class_argonautAction.inc:132
-#: addons/argonaut/deploy-list.xml:43
-msgid "Period"
-msgstr ""
-
-#: addons/argonaut/class_argonautAction.inc:137
+#: addons/argonaut/class_argonautAction.inc:103
 msgid "Targets"
 msgstr ""
 
-#: addons/argonaut/class_argonautAction.inc:140
+#: addons/argonaut/class_argonautAction.inc:106
 msgid "Targets for this task"
 msgstr ""
 
-#: addons/argonaut/deploy-list.xml:10
-msgid "List of queued jobs"
+#: addons/argonaut/class_argonautEventTypes.inc:67
+msgid "Switch off"
 msgstr ""
 
-#: addons/argonaut/deploy-list.xml:14
-#: addons/argonaut/class_argonautImportFile.inc:185
-#: addons/argonaut/import_events.tpl.c:26
-msgid "Event"
+#: addons/argonaut/class_argonautEventTypes.inc:80
+msgid "Reboot"
 msgstr ""
 
-#: addons/argonaut/deploy-list.xml:27
-msgid "Target"
+#: addons/argonaut/class_argonautEventTypes.inc:84
+msgid "Wake up"
 msgstr ""
 
-#: addons/argonaut/deploy-list.xml:35
-msgid "Task"
+#: addons/argonaut/class_argonautEventTypes.inc:88
+msgid "Software update"
 msgstr ""
 
-#: addons/argonaut/deploy-list.xml:59
-msgid "Status"
+#: addons/argonaut/class_argonautEventTypes.inc:92
+msgid "(Re)Install"
 msgstr ""
 
-#: addons/argonaut/deploy-list.xml:67
-msgid "Actions"
+#: addons/argonaut/class_argonautEventTypes.inc:105
+msgid "Refresh slave files (ldap2zone)"
 msgstr ""
 
-#: addons/argonaut/deploy-list.xml:79
-#: addons/argonaut/class_argonautImportFile.inc:97
-#: addons/argonaut/class_argonautImportFile.inc:121
-#: addons/argonaut/class_argonautImportFile.inc:145
-#: addons/argonaut/class_argonautImportFile.inc:157
-msgid "Import"
+#: addons/argonaut/class_argonautQueue.inc:42
+#: addons/argonaut/class_argonautQueue.inc:47
+#: addons/argonaut/class_argonautQueue.inc:50
+msgid "Deployment queue"
 msgstr ""
 
-#: addons/argonaut/deploy-list.xml:97 addons/argonaut/deploy-list.xml:144
-msgid "Abort"
+#: addons/argonaut/class_argonautQueue.inc:43
+msgid "Provide a mechanism to automatically activate systems"
 msgstr ""
 
-#: addons/argonaut/deploy-list.xml:108
-msgid "Execute"
+#: addons/argonaut/class_argonautQueue.inc:127
+#, php-format
+msgid "The following jobs couldn't be deleted, they have to be aborted: %s"
 msgstr ""
 
-#: addons/argonaut/deploy-list.xml:120
-msgid "Process now"
+#: addons/argonaut/class_argonautQueue.inc:131
+msgid "Permission"
 msgstr ""
 
-#: addons/argonaut/deploy-list.xml:128
-msgid "View logs"
+#: addons/argonaut/class_argonautQueue.inc:194
+msgid "Info"
 msgstr ""
 
-#: addons/argonaut/class_argonautImportFile.inc:33
-#: addons/argonaut/class_argonautImportFile.inc:36
-msgid "Argonaut task import"
+#: addons/argonaut/class_argonautQueue.inc:194
+#, php-format
+msgid "%s"
 msgstr ""
 
-#: addons/argonaut/class_argonautImportFile.inc:34
-msgid "Imports argonaut tasks from CSV file"
+#: addons/argonaut/class_argonautQueue.inc:216
+msgid "Error detail"
 msgstr ""
 
-#: addons/argonaut/class_argonautImportFile.inc:49
-msgid "Import actions from CSV file"
+#: addons/argonaut/class_argonautQueue.inc:280
+#: addons/argonaut/class_argonautQueue.inc:371
+#: addons/argonaut/class_filterArgonautEvents.inc:39
+#: addons/argonaut/import_events.tpl.c:32
+msgid "Error"
 msgstr ""
 
-#: addons/argonaut/class_argonautImportFile.inc:53
-msgid "Import a list of task into argonaut"
+#: addons/argonaut/class_argonautQueue.inc:280
+#, php-format
+msgid "Cannot update queue entries."
 msgstr ""
 
-#: addons/argonaut/class_argonautImportFile.inc:63
-msgid "Upload"
+#: addons/argonaut/class_argonautQueue.inc:355
+msgid "immediately"
 msgstr ""
 
-#: addons/argonaut/class_argonautImportFile.inc:67
-msgid "Import file"
+#: addons/argonaut/class_argonautQueue.inc:367
+msgid "Waiting"
 msgstr ""
 
-#: addons/argonaut/class_argonautImportFile.inc:72
-msgid "Imported tasks"
+#: addons/argonaut/class_argonautQueue.inc:370
+msgid "Show error"
 msgstr ""
 
-#: addons/argonaut/class_argonautImportFile.inc:122
-msgid "Fix the errors in your CSV file first"
+#: addons/argonaut/class_argonautQueue.inc:374
+msgid "Processed"
 msgstr ""
 
-#: addons/argonaut/class_argonautImportFile.inc:138
-msgid "Infrastructure service"
+#: addons/argonaut/class_argonautQueue.inc:383
+msgid "in progress"
 msgstr ""
 
-#: addons/argonaut/class_argonautImportFile.inc:145
+#: addons/argonaut/class_filterArgonautEvents.inc:39
 #, php-format
-msgid "Import complete: %s events successfully send, %s failed"
+msgid "Cannot load queue entries: %s"
 msgstr ""
 
-#: addons/argonaut/class_argonautImportFile.inc:157
-msgid "file is empty"
+#: admin/systems/argonaut/class_deploymentTimeframe.inc:31
+msgid "Deployment time frame"
 msgstr ""
 
-#: addons/argonaut/class_argonautImportFile.inc:182
-#: addons/argonaut/import_events.tpl.c:23
-msgid "MAC"
+#: admin/systems/argonaut/class_deploymentTimeframe.inc:32
+msgid "Edit deployment time frame"
 msgstr ""
 
-#: addons/argonaut/class_filterArgonautEvents.inc:39
-#, php-format
-msgid "Cannot load queue entries: %s"
+#: admin/systems/argonaut/class_deploymentTimeframe.inc:44
+#: admin/systems/argonaut/class_deploymentTimeframe.inc:62
+msgid "Time frames"
+msgstr ""
+
+#: admin/systems/argonaut/class_deploymentTimeframe.inc:48
+msgid "Time frames in which deployment is authorized"
+msgstr ""
+
+#: admin/systems/argonaut/class_deploymentTimeframe.inc:52
+msgid "Opening time for this frame as HH:MM"
+msgstr ""
+
+#: admin/systems/argonaut/class_deploymentTimeframe.inc:56
+msgid "->"
+msgstr ""
+
+#: admin/systems/argonaut/class_deploymentTimeframe.inc:56
+msgid "Closing time for this frame as HH:MM"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:117
+#: admin/systems/argonaut/class_argonautClient.inc:127
 msgid "Argonaut client"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:118
+#: admin/systems/argonaut/class_argonautClient.inc:128
 msgid "Edit argonaut client settings"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:131
+#: admin/systems/argonaut/class_argonautClient.inc:141
 msgid "Argonaut client settings"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:134
+#: admin/systems/argonaut/class_argonautClient.inc:144
 msgid "Client port"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:134
+#: admin/systems/argonaut/class_argonautClient.inc:144
 msgid "Port used by argonaut client for JSON-RPC"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:139
-#: admin/systems/services/argonaut/class_argonautServer.inc:61
+#: admin/systems/argonaut/class_argonautClient.inc:149
+#: admin/systems/services/argonaut/class_argonautServer.inc:65
 msgid "Protocol"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:139
-#: admin/systems/services/argonaut/class_argonautServer.inc:61
+#: admin/systems/argonaut/class_argonautClient.inc:149
+#: admin/systems/services/argonaut/class_argonautServer.inc:65
 msgid "Protocol to use for argonaut"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:144
+#: admin/systems/argonaut/class_argonautClient.inc:154
 msgid "WakeOnLan interface"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:144
+#: admin/systems/argonaut/class_argonautClient.inc:154
 msgid "Interface used by argonaut for WakeOnLan"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:149
+#: admin/systems/argonaut/class_argonautClient.inc:159
 msgid "TaskId file"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:149
+#: admin/systems/argonaut/class_argonautClient.inc:159
 msgid "File which argonaut will use to store its task id when booting"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:154
+#: admin/systems/argonaut/class_argonautClient.inc:164
+#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:72
 #: admin/systems/services/argonaut/class_argonautFuseConfig.inc:55
-#: admin/systems/services/argonaut/class_argonautServer.inc:79
-#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:71
+#: admin/systems/services/argonaut/class_argonautServer.inc:83
 msgid "Log directory"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:154
+#: admin/systems/argonaut/class_argonautClient.inc:164
 msgid "Directory in which argonaut client should write its logs"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:161
-#: admin/systems/services/argonaut/class_argonautServer.inc:103
+#: admin/systems/argonaut/class_argonautClient.inc:171
+#: admin/systems/services/argonaut/class_argonautServer.inc:107
 msgid "SSL paths"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:164
-#: admin/systems/services/argonaut/class_argonautServer.inc:106
+#: admin/systems/argonaut/class_argonautClient.inc:174
+#: admin/systems/services/argonaut/class_argonautServer.inc:110
 msgid "Key"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:164
+#: admin/systems/argonaut/class_argonautClient.inc:174
 msgid "Path to the private key file on Argonaut client"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:169
-#: admin/systems/services/argonaut/class_argonautServer.inc:111
+#: admin/systems/argonaut/class_argonautClient.inc:179
+#: admin/systems/services/argonaut/class_argonautServer.inc:115
 msgid "Certificate"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:169
+#: admin/systems/argonaut/class_argonautClient.inc:179
 msgid "Path to the certificate file on Argonaut client"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:174
-#: admin/systems/services/argonaut/class_argonautServer.inc:116
+#: admin/systems/argonaut/class_argonautClient.inc:184
+#: admin/systems/services/argonaut/class_argonautServer.inc:120
 msgid "CA certificate"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:174
+#: admin/systems/argonaut/class_argonautClient.inc:184
 msgid "Path to the CA certificate file on Argonaut client"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:179
-#: admin/systems/services/argonaut/class_argonautServer.inc:121
+#: admin/systems/argonaut/class_argonautClient.inc:189
+#: admin/systems/services/argonaut/class_argonautServer.inc:125
 msgid "CN of the certificate"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:179
+#: admin/systems/argonaut/class_argonautClient.inc:189
 msgid "The CN in this client certificate"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:185
+#: admin/systems/argonaut/class_argonautClient.inc:195
 msgid "Service names"
 msgstr ""
 
-#: admin/systems/argonaut/class_argonautClient.inc:187
+#: admin/systems/argonaut/class_argonautClient.inc:197
 msgid "Argonaut service names"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautFuseOPSIConfig.inc:32
-#: admin/systems/services/argonaut/class_argonautFuseOPSIConfig.inc:33
-msgid "Argonaut Fuse OPSI module settings"
+#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:30
+#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:31
+msgid "Argonaut Mirror settings"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautFuseOPSIConfig.inc:33
-#: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:33
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:31
-#: admin/systems/services/argonaut/class_argonautFuseLTSPConfig.inc:33
-#: admin/systems/services/argonaut/class_argonautServer.inc:32
-msgid "Services"
+#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:42
+msgid "Argonaut mirror settings"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautFuseOPSIConfig.inc:47
-msgid "OPSI"
+#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:45
+msgid "Local Debian mirror directory"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautFuseOPSIConfig.inc:50
-msgid "Opsi admin"
+#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:53
+msgid "Argonaut Debconf Crawler configuration"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautFuseOPSIConfig.inc:55
-msgid "Opsi password"
+#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:56
+msgid "Local packages folder"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautFuseOPSIConfig.inc:60
-msgid "Opsi server"
+#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:57
+msgid "Folder in which the crawler will store packages during analysis"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautFuseOPSIConfig.inc:65
-msgid "Opsi lang"
+#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:64
+msgid "Argonaut Repository configuration"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:67
+msgid "Proxy"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:68
+msgid "Specifies the http proxy (like Squid) to use for http and hftp method"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:72
+msgid "Directory in which logs should be stored"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:77
+msgid "Ignore errors"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:78
+msgid ""
+"Causes debmirror to ignore missing or broken deb and source files but still "
+"be pedantic about checking meta files"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:83
+msgid "Source"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:83
+msgid "Include source in the mirror"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:88
+msgid "GPG Check"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:88
+msgid "Fail if the Release.gpg file is missing"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:93
+msgid "Contents"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:94
+msgid ""
+"Additionally download Contents.<arch>.gz files (Note that these files can be "
+"relatively big and can change frequently)"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:99
+msgid "Verbose"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:99
+msgid "Wether to activate verbose mode"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautFuseConfig.inc:30
+msgid "Argonaut Fuse"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:32
-#: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:33
+#: admin/systems/services/argonaut/class_argonautFuseConfig.inc:31
+msgid "Argonaut Fuse settings"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautFuseConfig.inc:45
+msgid "Basic settings"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautFuseConfig.inc:48
+msgid "Default mode"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautFuseConfig.inc:56
+msgid "Directory in which argonaut-fuse will store its log"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautFuseConfig.inc:64
+msgid "TFTP"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautFuseConfig.inc:67
+msgid "Pxelinux cfg path"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautFuseConfig.inc:68
+msgid "Path where argonaut-fuse should store pxelinux.cfg"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:30
+#: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:31
 msgid "Argonaut Fuse FAI module settings"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:47
+#: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:42
 msgid "FAI"
 msgstr ""
 
+#: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:45
+msgid "FAI version"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:45
+msgid "Version of FAI installed on the server"
+msgstr ""
+
 #: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:50
-msgid "Fai flags"
+msgid "FAI flags"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:57
+#: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:50
+msgid "Flags to pass to FAI"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:55
 msgid "NFS root"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:30
+#: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:60
+msgid "FAI 4 command line"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:60
+msgid ""
+"Command line for FAI 4 - should be \"ip=dhcp root=/dev/nfs boot=live "
+"union=aufs\""
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:65
+msgid "FAI 5 command line"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:65
+msgid "Command line for FAI 5 - should be \"ip=dhcp rootovl\""
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:70
+msgid "Multiple distro mode"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:70
+msgid ""
+"This enables a mode for multiple distributions usage which adds the release "
+"as a suffix to kernel, initrd and nfsroot in the PXE file"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautFuseLTSPConfig.inc:32
+#: admin/systems/services/argonaut/class_argonautFuseLTSPConfig.inc:33
+msgid "Argonaut Fuse LTSP module settings"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautFuseLTSPConfig.inc:33
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:32
+#: admin/systems/services/argonaut/class_argonautServer.inc:36
+#: admin/systems/services/argonaut/class_argonautFuseOPSIConfig.inc:33
+msgid "Services"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautFuseLTSPConfig.inc:47
+msgid "LTSP"
+msgstr ""
+
+#: admin/systems/services/argonaut/class_argonautFuseLTSPConfig.inc:50
+msgid "LTSP server"
+msgstr ""
+
 #: admin/systems/services/argonaut/class_argonautDNSConfig.inc:31
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:32
 msgid "Argonaut DNS settings"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:50
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:51
 msgid "Ldap2zone global settings"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:53
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:54
 msgid "Bind directory"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:53
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:54
 msgid "The directory in which conf file must be created"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:58
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:59
 msgid "Bind cache directory"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:58
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:59
 msgid "The directory in which zone files must be created"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:63
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:64
 msgid "TTL"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:64
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:65
 msgid "Time to live"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:72
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:73
 msgid "rndc path"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:73
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:74
 msgid "path to rndc binary"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:79
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:80
 msgid "Search base"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:79
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:80
 msgid ""
 "LDAP base in which ldap2zone should search. Only usefull if you got several "
 "nodes for the same zone."
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:85
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:86
 msgid "Ldap2zone master settings"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:88
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:89
 msgid "Ignore reverse zone"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:88
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:89
 msgid "Do not write reverse zone"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:92
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:93
 msgid "Notify"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:97
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:98
 msgid "Allow update"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:97
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:98
 msgid "Allow update (semicolon separated and ended)"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:101
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:102
 msgid "Allow transfer"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:101
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:102
 msgid "Allow transfer (semicolon separated and ended)"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:105
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:106
 msgid "Check names"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:105
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:106
 msgid ""
 "Cause any host name for the zone to be checked for compliance with RFC 952 "
 "and RFC 1123 and take the defined action"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:112
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:113
 msgid "Ldap2zone slave settings"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:117
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:118
 msgid "Manage DNS Slaves"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:121
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:122
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:160
 msgid "zone"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:121
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:122
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:160
 msgid "DNS zone this server should be declared as slave of"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:125
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:126
 msgid "master"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:125
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:126
 msgid "Master IP(s) for this zone"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:129
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:130
 msgid "reverses"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:129
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:130
 msgid "This server should be slave of reverses zones as well"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:136
+#: admin/systems/services/argonaut/class_argonautDNSConfig.inc:137
 msgid "DNS slaves"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautFuseLTSPConfig.inc:32
-#: admin/systems/services/argonaut/class_argonautFuseLTSPConfig.inc:33
-msgid "Argonaut Fuse LTSP module settings"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautFuseLTSPConfig.inc:47
-msgid "LTSP"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautFuseLTSPConfig.inc:50
-msgid "LTSP server"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautFuseConfig.inc:30
-msgid "Argonaut Fuse"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautFuseConfig.inc:31
-msgid "Argonaut Fuse settings"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautFuseConfig.inc:45
-msgid "Basic settings"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautFuseConfig.inc:48
-msgid "Default mode"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautFuseConfig.inc:56
-msgid "Directory in which argonaut-fuse will store its log"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautFuseConfig.inc:64
-msgid "TFTP"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautFuseConfig.inc:67
-msgid "Pxelinux cfg path"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautFuseConfig.inc:68
-msgid "Path where argonaut-fuse should store pxelinux.cfg"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautServer.inc:31
-#: admin/systems/services/argonaut/class_argonautServer.inc:32
-#: admin/systems/services/argonaut/class_argonautServer.inc:46
+#: admin/systems/services/argonaut/class_argonautServer.inc:35
+#: admin/systems/services/argonaut/class_argonautServer.inc:36
+#: admin/systems/services/argonaut/class_argonautServer.inc:50
 msgid "Argonaut server"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautServer.inc:49
+#: admin/systems/services/argonaut/class_argonautServer.inc:53
 msgid "Delete finished tasks"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautServer.inc:50
+#: admin/systems/services/argonaut/class_argonautServer.inc:54
 msgid "Wether or not argonaut server should delete successfully finished tasks"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautServer.inc:55
+#: admin/systems/services/argonaut/class_argonautServer.inc:59
 msgid "Get packages information"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautServer.inc:56
+#: admin/systems/services/argonaut/class_argonautServer.inc:60
 msgid ""
 "Wether or not argonaut server should get packages information from "
 "repositories at start and then once a day. Needed for FAI package list "
 "creation."
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautServer.inc:66
+#: admin/systems/services/argonaut/class_argonautServer.inc:70
 msgid "Port"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautServer.inc:67
+#: admin/systems/services/argonaut/class_argonautServer.inc:71
 msgid "Port on which the argonaut server will be listening"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautServer.inc:72
+#: admin/systems/services/argonaut/class_argonautServer.inc:76
 msgid "Timeout"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautServer.inc:73
+#: admin/systems/services/argonaut/class_argonautServer.inc:77
 msgid "Time in seconds before to consider an argonaut client or server as down"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautServer.inc:80
+#: admin/systems/services/argonaut/class_argonautServer.inc:84
 msgid "Directory in which argonaut will store its log"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautServer.inc:87
+#: admin/systems/services/argonaut/class_argonautServer.inc:91
 msgid "Wake on lan"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautServer.inc:90
+#: admin/systems/services/argonaut/class_argonautServer.inc:94
 msgid "Interface"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautServer.inc:91
+#: admin/systems/services/argonaut/class_argonautServer.inc:95
 msgid "Interface to use for sending WakeOnLan requests"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautServer.inc:96
+#: admin/systems/services/argonaut/class_argonautServer.inc:100
 msgid "IP tool"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautServer.inc:96
+#: admin/systems/services/argonaut/class_argonautServer.inc:100
 msgid "IP tool to use"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautServer.inc:106
+#: admin/systems/services/argonaut/class_argonautServer.inc:110
 msgid "Path to the private key file on Argonaut server"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautServer.inc:111
+#: admin/systems/services/argonaut/class_argonautServer.inc:115
 msgid "Path to the certificate file on Argonaut server"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautServer.inc:116
+#: admin/systems/services/argonaut/class_argonautServer.inc:120
 msgid "Path to the CA certificate file on Argonaut server"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautServer.inc:121
+#: admin/systems/services/argonaut/class_argonautServer.inc:125
 msgid "The CN in the server certificate"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:29
-#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:30
-msgid "Argonaut Mirror settings"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:41
-msgid "Argonaut mirror settings"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:44
-msgid "Local Debian mirror directory"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:52
-msgid "Argonaut Debconf Crawler configuration"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:55
-msgid "Local packages folder"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:56
-msgid "Folder in which the crawler will store packages during analysis"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:63
-msgid "Argonaut Repository configuration"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:66
-msgid "Proxy"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:67
-msgid "Specifies the http proxy (like Squid) to use for http and hftp method"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:71
-msgid "Directory in which logs should be stored"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:76
-msgid "Ignore errors"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:77
-msgid ""
-"Causes debmirror to ignore missing or broken deb and source files but still "
-"be pedantic about checking meta files"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:82
-msgid "Source"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:82
-msgid "Include source in the mirror"
-msgstr ""
-
-#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:87
-msgid "GPG Check"
+#: admin/systems/services/argonaut/class_argonautFuseOPSIConfig.inc:32
+#: admin/systems/services/argonaut/class_argonautFuseOPSIConfig.inc:33
+msgid "Argonaut Fuse OPSI module settings"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:87
-msgid "Fail if the Release.gpg file is missing"
+#: admin/systems/services/argonaut/class_argonautFuseOPSIConfig.inc:47
+msgid "OPSI"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:92
-msgid "Contents"
+#: admin/systems/services/argonaut/class_argonautFuseOPSIConfig.inc:50
+msgid "Opsi admin"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:93
-msgid ""
-"Additionally download Contents.<arch>.gz files (Note that these files can be "
-"relatively big and can change frequently)"
+#: admin/systems/services/argonaut/class_argonautFuseOPSIConfig.inc:55
+msgid "Opsi password"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:98
-msgid "Verbose"
+#: admin/systems/services/argonaut/class_argonautFuseOPSIConfig.inc:60
+msgid "Opsi server"
 msgstr ""
 
-#: admin/systems/services/argonaut/class_argonautMirrorConfig.inc:98
-msgid "Wether to activate verbose mode"
+#: admin/systems/services/argonaut/class_argonautFuseOPSIConfig.inc:65
+msgid "Opsi lang"
 msgstr ""
 
 #: addons/argonaut/import_events.tpl.c:2
diff --git a/argonaut/locale/es/fusiondirectory.po b/argonaut/locale/es/fusiondirectory.po
index 2c46da67dd0667a7a2611ddf3e93bd1302ed3bd9..1cf30c5dfd0dea7247bf3f6f70490462019c91c9 100644
--- a/argonaut/locale/es/fusiondirectory.po
+++ b/argonaut/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: include/class_supportDaemon.inc:107
 msgid "Multiple argonaut server found. Only one is supported"
diff --git a/argonaut/locale/es_CO/fusiondirectory.po b/argonaut/locale/es_CO/fusiondirectory.po
index c0e33f695ed3d6fc6b1d5a47bd69d31f557cb48a..7276250675944afc84fe62477bdd4a37517956ab 100644
--- a/argonaut/locale/es_CO/fusiondirectory.po
+++ b/argonaut/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: include/class_supportDaemon.inc:107
 msgid "Multiple argonaut server found. Only one is supported"
diff --git a/argonaut/locale/es_VE/fusiondirectory.po b/argonaut/locale/es_VE/fusiondirectory.po
index 414b60ec8e6937ee8e1bc074dfcd03a218ea88f6..5a7b02a4dca7453f6655b633b8dfe1d0db5c11db 100644
--- a/argonaut/locale/es_VE/fusiondirectory.po
+++ b/argonaut/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: include/class_supportDaemon.inc:107
 msgid "Multiple argonaut server found. Only one is supported"
diff --git a/argonaut/locale/fa_IR/fusiondirectory.po b/argonaut/locale/fa_IR/fusiondirectory.po
index 28e9e4b98c938441622f4dcfc71db16a3d3634bf..0d48c2bbad3f67cc07fbe40391726da4ccf3c69f 100644
--- a/argonaut/locale/fa_IR/fusiondirectory.po
+++ b/argonaut/locale/fa_IR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
diff --git a/argonaut/locale/fi_FI/fusiondirectory.po b/argonaut/locale/fi_FI/fusiondirectory.po
index fe324c56ca06d0d87c6605de890ba5e336e4ec9e..77ee3dafe1a7ab0f26a571c574041b8edee3e1d8 100644
--- a/argonaut/locale/fi_FI/fusiondirectory.po
+++ b/argonaut/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/argonaut/locale/fr/fusiondirectory.po b/argonaut/locale/fr/fusiondirectory.po
index e3dc9e2d090eb2336da72dac036d8243a31f74f4..28d95d78a4cef74a4fc1a55a9cd5c7a06b7d3a8a 100644
--- a/argonaut/locale/fr/fusiondirectory.po
+++ b/argonaut/locale/fr/fusiondirectory.po
@@ -5,22 +5,22 @@
 # 
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2017
-# Benoit Mortier <benoit.mortier@opensides.be>, 2019
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2019
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
-"Last-Translator: Benoit Mortier <benoit.mortier@opensides.be>, 2019\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2019\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: include/class_supportDaemon.inc:107
 msgid "Multiple argonaut server found. Only one is supported"
diff --git a/argonaut/locale/hu_HU/fusiondirectory.po b/argonaut/locale/hu_HU/fusiondirectory.po
index 899912618a74f6926e3c44ed45a015f5ec3f549e..540c493c2a43b0fa4d095400bc20b10f39322b2c 100644
--- a/argonaut/locale/hu_HU/fusiondirectory.po
+++ b/argonaut/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/argonaut/locale/id/fusiondirectory.po b/argonaut/locale/id/fusiondirectory.po
index 2398ba146c3d4dbc0beeeccab2ec748a9b107716..6af73fe5e6cfd3bcc03bed83624b25788e3ad655 100644
--- a/argonaut/locale/id/fusiondirectory.po
+++ b/argonaut/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/argonaut/locale/it_IT/fusiondirectory.po b/argonaut/locale/it_IT/fusiondirectory.po
index c514b91ded9fabc171142ccf17bc5cfbdbc3de9b..1d8d8d8d270fd478d6ab76bbda364b9f8f86555f 100644
--- a/argonaut/locale/it_IT/fusiondirectory.po
+++ b/argonaut/locale/it_IT/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: Paola Penati <paola.penati@opensides.be>, 2019\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -20,7 +20,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: include/class_supportDaemon.inc:107
 msgid "Multiple argonaut server found. Only one is supported"
diff --git a/argonaut/locale/ja/fusiondirectory.po b/argonaut/locale/ja/fusiondirectory.po
index b69f41b35be3c809e0073dd91114304b4be7803e..67cb8c2d56c64639db918e8001afee93d5ddaf67 100644
--- a/argonaut/locale/ja/fusiondirectory.po
+++ b/argonaut/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/argonaut/locale/ko/fusiondirectory.po b/argonaut/locale/ko/fusiondirectory.po
index 534fae9d261cfde2838e52b8aa0c9da7c5ab6bba..f1337315ce08520ed3876ce31a942e765d489706 100644
--- a/argonaut/locale/ko/fusiondirectory.po
+++ b/argonaut/locale/ko/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# Choi Chris <chulwon.choi@gmail.com>, 2018
+# Choi Chris <chulwon.choi@gmail.com>, 2019
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
-"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
+"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2019\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -82,19 +82,19 @@ msgstr "FAI"
 
 #: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:45
 msgid "FAI version"
-msgstr ""
+msgstr "FAI 버전"
 
 #: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:45
 msgid "Version of FAI installed on the server"
-msgstr ""
+msgstr "서버에 설치된 FAI 버전"
 
 #: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:50
 msgid "FAI flags"
-msgstr ""
+msgstr "FAI 플래그"
 
 #: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:50
 msgid "Flags to pass to FAI"
-msgstr ""
+msgstr "FAI로 전달된 플래그"
 
 #: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:55
 msgid "NFS root"
@@ -102,31 +102,31 @@ msgstr "NFS 루트"
 
 #: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:60
 msgid "FAI 4 command line"
-msgstr ""
+msgstr "FAI  4 커맨드 라인"
 
 #: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:60
 msgid ""
 "Command line for FAI 4 - should be \"ip=dhcp root=/dev/nfs boot=live "
 "union=aufs\""
-msgstr ""
+msgstr "FAI 4를 위한 커맨드 라인 - \"ip=dhcp root=/dev/nfs boot=live union=aufs\" 필수"
 
 #: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:65
 msgid "FAI 5 command line"
-msgstr ""
+msgstr "FAI 5 커맨드 라인"
 
 #: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:65
 msgid "Command line for FAI 5 - should be \"ip=dhcp rootovl\""
-msgstr ""
+msgstr "FAI 5를 위한 커맨드 라인 - \"ip=dhcp rootovl\" 필수"
 
 #: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:70
 msgid "Multiple distro mode"
-msgstr ""
+msgstr "다중 distro 모드"
 
 #: admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc:70
 msgid ""
 "This enables a mode for multiple distributions usage which adds the release "
 "as a suffix to kernel, initrd and nfsroot in the PXE file"
-msgstr ""
+msgstr "PXE 파일에서 커널, initrd 및 nfsroot에 접미사로 릴리스를 추가하는 다중 배포 사용 모드를 활성화합니다."
 
 #: admin/systems/services/argonaut/class_argonautServer.inc:35
 #: admin/systems/services/argonaut/class_argonautServer.inc:36
diff --git a/argonaut/locale/lv/fusiondirectory.po b/argonaut/locale/lv/fusiondirectory.po
index 8057e99960f6e72f92ac9a61e8ee55c6eccf73f2..afc95d37659422249c6678a6c558e50b7500ad29 100644
--- a/argonaut/locale/lv/fusiondirectory.po
+++ b/argonaut/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/argonaut/locale/nb/fusiondirectory.po b/argonaut/locale/nb/fusiondirectory.po
index c0d42406c57b8c7b57b78e61632dc9a7192b15b6..8f552198febaf5cbf1bb46ace62b1a19cb0ada3e 100644
--- a/argonaut/locale/nb/fusiondirectory.po
+++ b/argonaut/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/argonaut/locale/nl/fusiondirectory.po b/argonaut/locale/nl/fusiondirectory.po
index 8b65c73c993fc16c426106aba0101020373ffd1d..a78d7a71e6791fbdeecfc8bee7210072d9ef226d 100644
--- a/argonaut/locale/nl/fusiondirectory.po
+++ b/argonaut/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/argonaut/locale/pl/fusiondirectory.po b/argonaut/locale/pl/fusiondirectory.po
index 4d9714d38ac74c739642a2face59d5105569a3ba..9075d66dad6a15922693f8f147cf79087ff2517f 100644
--- a/argonaut/locale/pl/fusiondirectory.po
+++ b/argonaut/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/argonaut/locale/pt/fusiondirectory.po b/argonaut/locale/pt/fusiondirectory.po
index d4908ad4f803ae89e31a5ba5f565d02194cc811e..0cdbf80debb0db5248982c898f1cc58d572ff21e 100644
--- a/argonaut/locale/pt/fusiondirectory.po
+++ b/argonaut/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: include/class_supportDaemon.inc:107
 msgid "Multiple argonaut server found. Only one is supported"
diff --git a/argonaut/locale/pt_BR/fusiondirectory.po b/argonaut/locale/pt_BR/fusiondirectory.po
index ad8bef31f60fdc0dd2ecdee0d3f9d9d879363cdd..edb76cc24a9e7e164160092bcbac89650b822cda 100644
--- a/argonaut/locale/pt_BR/fusiondirectory.po
+++ b/argonaut/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: include/class_supportDaemon.inc:107
 msgid "Multiple argonaut server found. Only one is supported"
diff --git a/argonaut/locale/ru/fusiondirectory.po b/argonaut/locale/ru/fusiondirectory.po
index 561ee404a9ed8d7a0c2d837fdf47ca55ee3b7eb9..a4d1ca2f95a7c3bde632d1a2263b252df7bc3fc7 100644
--- a/argonaut/locale/ru/fusiondirectory.po
+++ b/argonaut/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/argonaut/locale/ru@petr1708/fusiondirectory.po b/argonaut/locale/ru@petr1708/fusiondirectory.po
index 812f8d309ad3e02ff31a6f17319c79132c93f2d3..e756e2424e452c69b652675e10161eb7171f7e58 100644
--- a/argonaut/locale/ru@petr1708/fusiondirectory.po
+++ b/argonaut/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/argonaut/locale/sv/fusiondirectory.po b/argonaut/locale/sv/fusiondirectory.po
index 6efc07e623effbe22be2fa6aa1ab70ed0aface18..feed418b9e463885c85d9d81b3ae7dc30c2c3936 100644
--- a/argonaut/locale/sv/fusiondirectory.po
+++ b/argonaut/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/argonaut/locale/tr_TR/fusiondirectory.po b/argonaut/locale/tr_TR/fusiondirectory.po
index d034c4abcefa1de8faacfe9b8aa93da84669e57e..a5a40024d0eafaa220113ee8bd6e7a74e2b987b4 100644
--- a/argonaut/locale/tr_TR/fusiondirectory.po
+++ b/argonaut/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2021
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2021\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -153,7 +157,7 @@ msgstr ""
 #: admin/systems/services/argonaut/class_argonautServer.inc:65
 #: admin/systems/argonaut/class_argonautClient.inc:149
 msgid "Protocol"
-msgstr ""
+msgstr "İletişim kuralı"
 
 #: admin/systems/services/argonaut/class_argonautServer.inc:65
 #: admin/systems/argonaut/class_argonautClient.inc:149
@@ -622,7 +626,7 @@ msgstr ""
 
 #: addons/argonaut/class_argonautImportFile.inc:63
 msgid "Upload"
-msgstr ""
+msgstr "Yükleme"
 
 #: addons/argonaut/class_argonautImportFile.inc:67
 msgid "Import file"
@@ -713,11 +717,11 @@ msgstr ""
 
 #: addons/argonaut/class_argonautAction.inc:92
 msgid "Minutes"
-msgstr ""
+msgstr "Dakikalar"
 
 #: addons/argonaut/class_argonautAction.inc:92
 msgid "Hours"
-msgstr ""
+msgstr "Saatler"
 
 #: addons/argonaut/class_argonautAction.inc:92
 msgid "Days"
@@ -749,7 +753,7 @@ msgstr ""
 #: addons/argonaut/class_argonautQueue.inc:371
 #: addons/argonaut/import_events.tpl.c:32
 msgid "Error"
-msgstr ""
+msgstr "Hata"
 
 #: addons/argonaut/class_filterArgonautEvents.inc:39
 #, php-format
@@ -769,7 +773,7 @@ msgstr ""
 #: addons/argonaut/class_argonautQueue.inc:126
 #: addons/argonaut/deploy-list.xml:86 addons/argonaut/deploy-list.xml:136
 msgid "Remove"
-msgstr ""
+msgstr "Kaldır"
 
 #: addons/argonaut/class_argonautQueue.inc:127
 #, php-format
diff --git a/argonaut/locale/ug/fusiondirectory.po b/argonaut/locale/ug/fusiondirectory.po
index ccd02c62875f3d436644bc07d6171b47c84a08c9..624fde588f9b0cf6dfd1586fecfedf5e9b7a1de6 100644
--- a/argonaut/locale/ug/fusiondirectory.po
+++ b/argonaut/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: include/class_supportDaemon.inc:107
 msgid "Multiple argonaut server found. Only one is supported"
diff --git a/argonaut/locale/vi_VN/fusiondirectory.po b/argonaut/locale/vi_VN/fusiondirectory.po
index 2fc769d8a4e5484551d031fab16d85b9f34b07d2..c5d513eef229d82e4f4a557f10f70e260cda3501 100644
--- a/argonaut/locale/vi_VN/fusiondirectory.po
+++ b/argonaut/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/argonaut/locale/zh/fusiondirectory.po b/argonaut/locale/zh/fusiondirectory.po
index c7a728e66b283d703b63b19cb36db1dd3379bdcb..42f448e98e7664d21866e53b4523f2cd585d2334 100644
--- a/argonaut/locale/zh/fusiondirectory.po
+++ b/argonaut/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/argonaut/locale/zh_TW/fusiondirectory.po b/argonaut/locale/zh_TW/fusiondirectory.po
index 5cf6a1a0076e6219bde531593244a046988c0e94..526f4edbee44e3442f0851f3729bb7e2f06fa89f 100644
--- a/argonaut/locale/zh_TW/fusiondirectory.po
+++ b/argonaut/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:42+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/audit/admin/audit/class_auditEvent.inc b/audit/admin/audit/class_auditEvent.inc
index cb6dfca971827a5ce9eec0320e27bd99c33a97fd..5a68981356a9c4687ac7d6e43bbd720d0c48bc5b 100644
--- a/audit/admin/audit/class_auditEvent.inc
+++ b/audit/admin/audit/class_auditEvent.inc
@@ -18,21 +18,6 @@
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 */
 
-class GeneralizedTimeDisplayAttribute extends GeneralizedTimeDateAttribute
-{
-  function getValue ()
-  {
-    return $this->computeLdapValue();
-  }
-
-  function renderFormInput ()
-  {
-    $date = $this->getDateValue();
-    $date->setTimezone(timezone::getDefaultTimeZone());
-    return htmlentities($date->format('Y-m-d, H:i:s'), ENT_COMPAT, 'UTF-8');
-  }
-}
-
 class UserLinkAttribute extends DisplayLDAPAttribute
 {
   function renderFormInput ()
@@ -49,46 +34,46 @@ class auditEvent extends simplePlugin
 {
   public $base;
 
-  var $objectclasses = array('fdAuditEvent');
+  var $objectclasses = ['fdAuditEvent'];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Audit event'),
       'plDescription' => _('An event like ldap modification which was registered by audit plugin'),
-      'plObjectType'  => array('auditEvent' => array(
+      'plObjectType'  => ['auditEvent' => [
         'name'        => _('Audit event'),
         'filter'      => 'objectClass=fdAuditEvent',
         'icon'        => 'geticon.php?context=applications&icon=audit&size=16',
         'ou'          => get_ou('auditRDN'),
         'mainAttr'    => FALSE,
-      )),
+      ]],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Event'),
-        'attrs' => array(
-          new HiddenAttribute ('fdAuditId'),
+        'attrs' => [
+          new HiddenAttribute('fdAuditId'),
           new GeneralizedTimeDisplayAttribute(
             _('Time'), _('Date and time this event happened'),
             'fdAuditDateTime', TRUE
           ),
-          new DisplayLDAPAttribute  (_('Action'),       _('Action type'),     'fdAuditAction',      TRUE),
-          new UserLinkAttribute     (_('Author'),       _('Action author'),   'fdAuditAuthorDN',    TRUE),
-          new DisplayLDAPAttribute  (_('Object type'),  _('Object type'),     'fdAuditObjectType',  TRUE),
-          new DisplayLDAPAttribute  (_('Object'),       _('Target object'),   'fdAuditObject',      TRUE),
+          new DisplayLDAPAttribute(_('Action'),       _('Action type'),     'fdAuditAction',      TRUE),
+          new UserLinkAttribute(_('Author'),       _('Action author'),   'fdAuditAuthorDN',    TRUE),
+          new DisplayLDAPAttribute(_('Object type'),  _('Object type'),     'fdAuditObjectType',  TRUE),
+          new DisplayLDAPAttribute(_('Object'),       _('Target object'),   'fdAuditObject',      TRUE),
           new DisplayLDAPArrayAttribute(_('Attributes'), _('Target attributes'), 'fdAuditAttributes', FALSE),
-          new DisplayLDAPAttribute  (_('Result'),       _('Result or error'), 'fdAuditResult',      FALSE),
-        )
-      ),
-    );
+          new DisplayLDAPAttribute(_('Result'),       _('Result or error'), 'fdAuditResult',      FALSE),
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE, $attributesInfo = NULL)
@@ -97,7 +82,7 @@ class auditEvent extends simplePlugin
     $this->fdAuditId = random_int(0, PHP_INT_MAX);
   }
 
-  function compute_dn()
+  function compute_dn ()
   {
     return $this->create_unique_dn('fdAuditDateTime', get_ou('auditRDN').$this->base);
   }
diff --git a/audit/admin/audit/class_auditManagement.inc b/audit/admin/audit/class_auditManagement.inc
index d149ff6cb045251fe6c5d6ae6a55916d2ee9e86f..9bf0e4f21494f7a61997aa6e920096ce83be2826 100644
--- a/audit/admin/audit/class_auditManagement.inc
+++ b/audit/admin/audit/class_auditManagement.inc
@@ -20,11 +20,11 @@
 
 class auditManagement extends simpleManagement
 {
-  protected $objectTypes  = array('auditEvent');
+  protected $objectTypes  = ['auditEvent'];
 
-  protected $autoFilterAttributes = array(
+  protected $autoFilterAttributes = [
     'dn','fdAuditDateTime','fdAuditAction','fdAuditAuthorDN','fdAuditObjectType',
-    'fdAuditObject','fdAuditAttributes','fdAuditResult');
+    'fdAuditObject','fdAuditAttributes','fdAuditResult'];
 
   protected $departmentBrowser      = FALSE;
   protected $departmentRootVisible  = FALSE;
@@ -35,17 +35,17 @@ class auditManagement extends simpleManagement
 
   public static $skipSnapshots = TRUE;
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Audit'),
       'plDescription' => _('Audit events display'),
       'plIcon'        => 'geticon.php?context=applications&icon=audit&size=48',
       'plSection'     => 'reporting',
-      'plManages'     => array('auditEvent'),
+      'plManages'     => ['auditEvent'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 
   function configureHeadpage ()
@@ -71,24 +71,24 @@ class auditManagement extends simpleManagement
 
       $tag    = 'STARTDATE';
       $filter .= '$'.$tag;
-      $this->filter->elements[$tag] = array(
+      $this->filter->elements[$tag] = [
         'type'    => 'date',
         'tag'     => $tag,
         'default' => '',
         'unset'   => '',
         'set'     => '(fdAuditDateTime>=$)'
-      );
+      ];
       $this->filter->elementValues[$tag] = '';
 
       $tag    = 'ENDDATE';
       $filter .= '$'.$tag;
-      $this->filter->elements[$tag] = array(
+      $this->filter->elements[$tag] = [
         'type'    => 'date',
         'tag'     => $tag,
         'default' => '',
         'unset'   => '',
         'set'     => '(fdAuditDateTime<=$)'
-      );
+      ];
       $this->filter->elementValues[$tag] = '';
 
       $attributes = array_values(array_unique($attributes));
@@ -106,68 +106,68 @@ class auditManagement extends simpleManagement
   {
     $data = parent::parseXML($file);
     $data['list']['table']['layout'] = '|20px;c||||||50px;r|';
-    $columns = array (
-      array(
+    $columns = [
+      [
         'label'         => _('Time'),
         'sortAttribute' => 'fdAuditDateTime',
         'sortType'      => 'string',
         'value'         => '%{filter:filterDateTime(pid,row,dn,fdAuditDateTime)}',
         'export'        => 'true',
-      ),
-      array(
+      ],
+      [
         'label'         => _('Author'),
         'sortAttribute' => 'fdAuditAuthorDN',
         'sortType'      => 'string',
         'value'         => '%{filter:link(row,dn,"%s",fdAuditAuthorDN)}',
         'export'        => 'true',
-      ),
-      array(
+      ],
+      [
         'label'         => _('Action'),
         'sortAttribute' => 'fdAuditAction',
         'sortType'      => 'string',
         'value'         => '%{filter:link(row,dn,"%s",fdAuditAction)}',
         'export'        => 'true',
-      ),
-      array(
+      ],
+      [
         'label'         => _('Type'),
         'sortAttribute' => 'fdAuditObjectType',
         'sortType'      => 'string',
         'value'         => '%{filter:link(row,dn,"%s",fdAuditObjectType)}',
         'export'        => 'true',
-      ),
-      array(
+      ],
+      [
         'label'         => _('Target'),
         'sortAttribute' => 'fdAuditObject',
         'sortType'      => 'string',
         'value'         => '%{filter:link(row,dn,"%s",fdAuditObject)}',
         'export'        => 'true',
-      ),
-    );
+      ],
+    ];
     array_splice($data['list']['table']['column'], 1, count($data['list']['table']['column']), $columns);
     return $data;
   }
 
-  function renderList()
+  function renderList ()
   {
     global $config;
     $smarty = get_smarty();
-    $filters = array(
-      array(
+    $filters = [
+      [
         'id'    => 'STARTDATE',
         'label' => _('Newer than')
-      ),
-      array(
+      ],
+      [
         'id'    => 'ENDDATE',
         'label' => _('Older than')
-      ),
-    );
+      ],
+    ];
     $smarty->assign('dateFilters', $filters);
     $this->headpage->update();
     $display = $this->headpage->render();
     return $this->getHeader().$display;
   }
 
-  static function filterDateTime()
+  static function filterDateTime ()
   {
     $pid    = func_get_arg(0);
     $row    = func_get_arg(1);
diff --git a/audit/config/audit/class_auditConfig.inc b/audit/config/audit/class_auditConfig.inc
index ee8b41defee484bcbacdaf2b8d257bc14c342b11..88113866fac8cab890c5de8f9ee06000d8d32b7d 100644
--- a/audit/config/audit/class_auditConfig.inc
+++ b/audit/config/audit/class_auditConfig.inc
@@ -20,47 +20,47 @@
 
 class auditConfig extends simplePlugin
 {
-  var $objectclasses  = array('fdAuditPluginConf');
+  var $objectclasses  = ['fdAuditPluginConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Audit configuration'),
       'plDescription'   => _('FusionDirectory audit plugin configuration'),
-      'plCategory'      => array('configuration'),
-      'plObjectType'    => array('smallConfig'),
+      'plCategory'      => ['configuration'],
+      'plObjectType'    => ['smallConfig'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Audit'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Audit RDN'), _('Branch in which audit events will be stored'),
             'fdAuditRDN', TRUE,
             'ou=audit'
           ),
-          new SetAttribute (
-            new SelectAttribute (
+          new SetAttribute(
+            new SelectAttribute(
               _('Actions to audit'), _('Which actions should be stored in LDAP audit log'),
               'fdAuditActions', TRUE,
               logging::$validActions
             ),
-            array('modify','create','remove')
+            ['modify','create','remove']
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Days to keep'), _('Number of days of audit to keep in the LDAP when cleaning'),
             'fdAuditRotationDelay', TRUE,
             1, FALSE, 120
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/audit/locale/af_ZA/fusiondirectory.po b/audit/locale/af_ZA/fusiondirectory.po
index a9e4e7f2d744ed4d2c95ef47732282671dbc4f97..54b487d44a4b968f7ecd0ada770be6e14ee5f72c 100644
--- a/audit/locale/af_ZA/fusiondirectory.po
+++ b/audit/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
@@ -17,75 +17,75 @@ msgstr ""
 "Language: af_ZA\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/audit/locale/ar/fusiondirectory.po b/audit/locale/ar/fusiondirectory.po
index cab930809c9a1c4a609d9ef3a29fff4086f75d13..abe3b30e272fa3e7b0938a523fcd5a9e53803de1 100644
--- a/audit/locale/ar/fusiondirectory.po
+++ b/audit/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
@@ -21,75 +21,75 @@ msgstr ""
 "Language: ar\n"
 "Plural-Forms: 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;\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/audit/locale/ca/fusiondirectory.po b/audit/locale/ca/fusiondirectory.po
index fb49fb7ef2dbb6cf23913e3787e02a91c6cc350b..35d1bef989d1eb31f1613165a7eeee22aeefb981 100644
--- a/audit/locale/ca/fusiondirectory.po
+++ b/audit/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
@@ -21,75 +21,75 @@ msgstr ""
 "Language: ca\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr "Objecte"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/audit/locale/cs_CZ/fusiondirectory.po b/audit/locale/cs_CZ/fusiondirectory.po
index 2b1611d2d55f62fe004037f60a70b62ce9607c19..bd3de2d3cf6c51f819f8d24ea4575564bfe69182 100644
--- a/audit/locale/cs_CZ/fusiondirectory.po
+++ b/audit/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
@@ -22,76 +22,76 @@ msgstr ""
 "Language: cs_CZ\n"
 "Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr "Neznámý uživatel: %s"
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr "Auditní událost"
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 "Úprava-událost v LDAP která byla zaznamenána auditním zásuvným modulem"
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr "Událost"
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr "ÄŒas"
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr "Datum a čas události"
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr "Akce"
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr "Typ akce"
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr "Autor"
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr "Autor akce"
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr "Typ objektu"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr "Objekt"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr "Cílový objekt"
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr "Atributy"
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr "Atributy cíle"
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr "Výsledek"
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr "Výsledek nebo chyba"
 
diff --git a/audit/locale/de/fusiondirectory.po b/audit/locale/de/fusiondirectory.po
index 53caf93fc014e3198e16adbb961a6344730df907..12ebad3f50dcbe6a1ffff9daf8194b92a03b0fec 100644
--- a/audit/locale/de/fusiondirectory.po
+++ b/audit/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
@@ -21,75 +21,75 @@ msgstr ""
 "Language: de\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr "Audit-Ereignis"
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr "Ereignis"
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr "Zeit"
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr "Aktion"
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr "Autor"
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr "Objecttyp"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr "Objekt"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr "Zielobjekt"
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr "Attribute"
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr "Zielattribute"
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr "Ergebnis"
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr "Ergebnis oder Fehler"
 
diff --git a/audit/locale/el_GR/fusiondirectory.po b/audit/locale/el_GR/fusiondirectory.po
index 369852e9886d4195ec70050415e3c1828507fe28..28487c778aa554ac4b1e6751548bb4049e009765 100644
--- a/audit/locale/el_GR/fusiondirectory.po
+++ b/audit/locale/el_GR/fusiondirectory.po
@@ -5,15 +5,16 @@
 # 
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2018
+# LOUKAS SKOUROLIAKOS, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
-"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
+"Last-Translator: LOUKAS SKOUROLIAKOS, 2021\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -21,75 +22,75 @@ msgstr ""
 "Language: el_GR\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
-msgstr ""
+msgstr "Γεγονός"
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
-msgstr ""
+msgstr "Χρόνος"
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
-msgstr ""
+msgstr "Ημέρα και χρόνος τέλεσης του συμβάντος"
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr "Ενέργεια"
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr "Τύπος αντικειμένου"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr "Αντικείμενο"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/audit/locale/en/fusiondirectory.po b/audit/locale/en/fusiondirectory.po
index 6e05710de1d37832a1f54abc58b2d3b2caafa1fd..cdd53c5fb871d39b7716a6207c92ed240a3db9a8 100644
--- a/audit/locale/en/fusiondirectory.po
+++ b/audit/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -26,7 +26,7 @@ msgid "FusionDirectory audit plugin configuration"
 msgstr ""
 
 #: config/audit/class_auditConfig.inc:41
-#: admin/audit/class_auditManagement.inc:40
+#: admin/audit/class_auditManagement.inc:41
 msgid "Audit"
 msgstr ""
 
@@ -54,81 +54,98 @@ msgstr ""
 msgid "Number of days of audit to keep in the LDAP when cleaning"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:53 admin/audit/class_auditEvent.inc:56
+#: admin/audit/class_auditEvent.inc:43
+#, php-format
+msgid "Unknown user: %s"
+msgstr ""
+
+#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:54
+#: admin/audit/class_auditEvent.inc:58
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:72
+#: admin/audit/class_auditEvent.inc:76
 msgid "Event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:75
-#: admin/audit/class_auditManagement.inc:69
+#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:75
+#: admin/audit/class_auditEvent.inc:80
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:78
-#: admin/audit/class_auditManagement.inc:83
+#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:78
+#: admin/audit/class_auditEvent.inc:83
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:79
-#: admin/audit/class_auditManagement.inc:76
+#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:79
+#: admin/audit/class_auditEvent.inc:84
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:85
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:81
+#: admin/audit/class_auditEvent.inc:86
 msgid "Object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:81
+#: admin/audit/class_auditEvent.inc:86
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:82
+#: admin/audit/class_auditEvent.inc:87
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:82
+#: admin/audit/class_auditEvent.inc:87
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:88
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:88
 msgid "Result or error"
 msgstr ""
 
-#: admin/audit/class_auditManagement.inc:41
+#: admin/audit/class_auditManagement.inc:42
 msgid "Audit events display"
 msgstr ""
 
-#: admin/audit/class_auditManagement.inc:90
+#: admin/audit/class_auditManagement.inc:132
 msgid "Type"
 msgstr ""
 
-#: admin/audit/class_auditManagement.inc:97
+#: admin/audit/class_auditManagement.inc:139
 msgid "Target"
 msgstr ""
+
+#: admin/audit/class_auditManagement.inc:157
+msgid "Newer than"
+msgstr ""
+
+#: admin/audit/class_auditManagement.inc:161
+msgid "Older than"
+msgstr ""
+
+#: admin/audit/audit-filter.tpl.c:2
+msgid "Filter"
+msgstr ""
diff --git a/audit/locale/es/fusiondirectory.po b/audit/locale/es/fusiondirectory.po
index ab93af75875d05bfe5d6d630a3b4806181d43d77..3de2730606d87a533ebad3589d699765cdf08a17 100644
--- a/audit/locale/es/fusiondirectory.po
+++ b/audit/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,77 +19,77 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr "Evento"
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr "Tiempo"
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr "Acción"
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr "Objeto"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/audit/locale/es_CO/fusiondirectory.po b/audit/locale/es_CO/fusiondirectory.po
index 60a590ebeaa09853b4ca826ab73318f3a5a79bed..85680a5d30bcf4d47e5026e90808c1fcbdacf95e 100644
--- a/audit/locale/es_CO/fusiondirectory.po
+++ b/audit/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,77 +19,77 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr "Objeto"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/audit/locale/es_VE/fusiondirectory.po b/audit/locale/es_VE/fusiondirectory.po
index 109a897f12dd8a87bf306e0156dccec900e5130e..894d5cf4245b64fc7b5438991b15c5dcc2de0999 100644
--- a/audit/locale/es_VE/fusiondirectory.po
+++ b/audit/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,77 +19,77 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr "Evento"
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr "Tiempo"
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr "Acción"
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr "Objeto"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/audit/locale/fa_IR/fusiondirectory.po b/audit/locale/fa_IR/fusiondirectory.po
index 22322d4319b7346994f6f88b50e3a9e08b026be9..cf43f466d95f87ad334e075f90c4f3949b7883e3 100644
--- a/audit/locale/fa_IR/fusiondirectory.po
+++ b/audit/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
@@ -17,75 +17,75 @@ msgstr ""
 "Language: fa_IR\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/audit/locale/fi_FI/fusiondirectory.po b/audit/locale/fi_FI/fusiondirectory.po
index 75f50d62cd2df1af030fe1c43bce7d3d4fadcf68..7b1a2f230d1f7532ed9b0ca9993ce704f2efd8b9 100644
--- a/audit/locale/fi_FI/fusiondirectory.po
+++ b/audit/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
@@ -21,75 +21,75 @@ msgstr ""
 "Language: fi_FI\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr "Tapahtuma"
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr "Aika"
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr "Tapahtuman päivämäärä ja kellonaika"
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr "Toiminto"
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr "Toimintotyyppi"
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr "Tekijä"
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr "Toiminnon tekijä"
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr "Ominaisuudet"
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr "Lopputulos"
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr "Lopputulos tai virhe"
 
diff --git a/audit/locale/fr/fusiondirectory.po b/audit/locale/fr/fusiondirectory.po
index 297377c554486eed09931baeb9f1eacda81708bb..123c9c14931bd910aae84080581df3b11eaf66eb 100644
--- a/audit/locale/fr/fusiondirectory.po
+++ b/audit/locale/fr/fusiondirectory.po
@@ -5,94 +5,94 @@
 # 
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2018
-# Benoit Mortier <benoit.mortier@opensides.be>, 2018
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
-"Last-Translator: Benoit Mortier <benoit.mortier@opensides.be>, 2018\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr "Utilisateur inconnu : %s"
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr "Événement d'audit"
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 "Un événement comme une modification LDAP qui a été enregistré par le plugin "
 "d'audit"
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr "Évènement"
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr "Temps"
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr "Date et heure à laquelle cet évènement est arrivé"
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr "Action"
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr "Type d'action"
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr "Auteur"
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr "Auteur de l'action"
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr "Type d'objet"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr "Objet"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr "Objet cible"
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr "Attributs"
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr "Attributs cibles"
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr "Résultat"
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr "Résultat ou erreur"
 
diff --git a/audit/locale/hu_HU/fusiondirectory.po b/audit/locale/hu_HU/fusiondirectory.po
index 4b39184c8eff2573ce535a24c89c71b93e8ae784..17c8c28d7ea00b97f01b2f8422a053c463f2cc51 100644
--- a/audit/locale/hu_HU/fusiondirectory.po
+++ b/audit/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
@@ -17,75 +17,75 @@ msgstr ""
 "Language: hu_HU\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/audit/locale/id/fusiondirectory.po b/audit/locale/id/fusiondirectory.po
index bf587e9611057edb542457c959b24054395407aa..7277c017e10e4a7df2bfd772f576e1a891edd97b 100644
--- a/audit/locale/id/fusiondirectory.po
+++ b/audit/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
@@ -17,75 +17,75 @@ msgstr ""
 "Language: id\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/audit/locale/it_IT/fusiondirectory.po b/audit/locale/it_IT/fusiondirectory.po
index ec3f0b151002e56161e4b58dd7f2b0f5e966976e..e819e3c310ca423996061a8c8906c21ca2be93a2 100644
--- a/audit/locale/it_IT/fusiondirectory.po
+++ b/audit/locale/it_IT/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Last-Translator: Paola Penati <paola.penati@opensides.be>, 2018\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -20,79 +20,79 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr "Utente sconosciuto : %s"
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr "Evento di controllo"
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 "Un evento come la modifica LDAP che è stato registrato dal plug-in di "
 "revisione"
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr "Evento"
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr "Tempo"
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr "Data e ora in cui questo evento é accaduto"
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr "Azione"
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr "Tipo di azione"
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr "Autore"
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr "Azione autore"
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr "Tipo di oggetto"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr "Oggetto"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr "Oggetto di destinazione"
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr "Attributi"
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr "Attributi di destinazione"
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr "Risultato"
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr "Risultato o errore"
 
diff --git a/audit/locale/ja/fusiondirectory.po b/audit/locale/ja/fusiondirectory.po
index 36e202b25e6fcc2cde8647d9b994305fcf5cf9d3..d8f14ac6014edd042b0ddb059ae5564e62aa16f6 100644
--- a/audit/locale/ja/fusiondirectory.po
+++ b/audit/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
@@ -17,75 +17,75 @@ msgstr ""
 "Language: ja\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/audit/locale/ko/fusiondirectory.po b/audit/locale/ko/fusiondirectory.po
index d54eaed192ebe2de6508ab0d6c89ded548cf072b..dd8c30898621be0ee18053615186a37badbcf43d 100644
--- a/audit/locale/ko/fusiondirectory.po
+++ b/audit/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
@@ -21,75 +21,75 @@ msgstr ""
 "Language: ko\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr "알 수 없는 사용자 : %s"
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr "감사 이벤트"
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr "감사 플러그인에 의해 등록된 LDAP 변경 등의 이벤트"
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr "이벤트"
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr "시간"
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr "이벤트가 발생한 날짜와 시간"
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr "ì•¡ì…˜"
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr "액션 타입"
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr "작성자"
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr "액션 작성자"
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr "오브젝트 타입"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr "오브젝트"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr "타겟 오브젝트"
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr "속성"
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr "타겟 속성"
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr "ê²°ê³¼"
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr "결과 또는 오류"
 
diff --git a/audit/locale/lv/fusiondirectory.po b/audit/locale/lv/fusiondirectory.po
index ceed036b1e713274d7893dc1a0f1d148a4fe8270..b5bc7b8c0e3120c4b12e1206596e66c9bfc55ce6 100644
--- a/audit/locale/lv/fusiondirectory.po
+++ b/audit/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
@@ -21,75 +21,75 @@ msgstr ""
 "Language: lv\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/audit/locale/nb/fusiondirectory.po b/audit/locale/nb/fusiondirectory.po
index d80a2c10898161e18945388a0287a5c15450075d..8f2cbeccd2d00bb672fbda45055d9b2e04ed1f53 100644
--- a/audit/locale/nb/fusiondirectory.po
+++ b/audit/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
@@ -21,75 +21,75 @@ msgstr ""
 "Language: nb\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/audit/locale/nl/fusiondirectory.po b/audit/locale/nl/fusiondirectory.po
index 0af2fcf09d8e52a40feb2d85338bea0959c494f3..86eb58ce857f038fb94d57ee99c93fc8fe5c94ad 100644
--- a/audit/locale/nl/fusiondirectory.po
+++ b/audit/locale/nl/fusiondirectory.po
@@ -13,7 +13,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
@@ -23,77 +23,77 @@ msgstr ""
 "Language: nl\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr "Audit gebeurtenis"
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 "Een gebeurtenis zoals ldap modificatie die geregistreerd was bij audit "
 "plugin"
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr "Gebeurtenis"
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr "Tijd"
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr "Datum en tijd van het plaats vinden van deze gebeurtenis"
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr "Actie"
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr "Actie type"
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr "Auteur"
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr "Actie Auteur"
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr "Object type"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr "Object"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr "Doel object"
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr "Attributen"
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr "Doel attributen"
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr "Resultaat"
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr "Resultaat van fout"
 
diff --git a/audit/locale/pl/fusiondirectory.po b/audit/locale/pl/fusiondirectory.po
index 0c9e9dd4e257498919733d32ae53884cbd00ffd8..23acd8cf55cbae58411c4bee417ec10738226ec3 100644
--- a/audit/locale/pl/fusiondirectory.po
+++ b/audit/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
@@ -21,75 +21,75 @@ msgstr ""
 "Language: pl\n"
 "Plural-Forms: 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);\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr "Akcja"
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr "Obiekt"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/audit/locale/pt/fusiondirectory.po b/audit/locale/pt/fusiondirectory.po
index 786f7cbf787fbb6bd004968bf7d146ef59d91769..1d474a3b807fc0cbfe01541f1dfabc65cf083329 100644
--- a/audit/locale/pt/fusiondirectory.po
+++ b/audit/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,77 +19,77 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr "Objeto"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/audit/locale/pt_BR/fusiondirectory.po b/audit/locale/pt_BR/fusiondirectory.po
index 216f9142fb160263c895e3922ce43e9440278030..4b55a04ff84833637bdb5b143b515577ad0c68d0 100644
--- a/audit/locale/pt_BR/fusiondirectory.po
+++ b/audit/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,77 +19,77 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr "Evento"
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr "Ação"
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr "Objeto"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/audit/locale/ru/fusiondirectory.po b/audit/locale/ru/fusiondirectory.po
index a3c2a492fbd439d84da964dbd24240e361c7a6bf..7bf65896065c0a7b68ce433cb6786fbbb9a5c42f 100644
--- a/audit/locale/ru/fusiondirectory.po
+++ b/audit/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
@@ -21,75 +21,75 @@ msgstr ""
 "Language: ru\n"
 "Plural-Forms: 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);\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr "Действие"
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr "Тип объекта"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr "Объект"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/audit/locale/ru@petr1708/fusiondirectory.po b/audit/locale/ru@petr1708/fusiondirectory.po
index e06ebb8befbf54c6ad57ab22067130fd81c4a538..53f3384f8e1ccd7c4928d7ba11c1abd80198b2d1 100644
--- a/audit/locale/ru@petr1708/fusiondirectory.po
+++ b/audit/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
@@ -17,75 +17,75 @@ msgstr ""
 "Language: ru@petr1708\n"
 "Plural-Forms: 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);\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/audit/locale/sv/fusiondirectory.po b/audit/locale/sv/fusiondirectory.po
index cb6ffc17ef1ddcbd8139c0b401ff0560607d272f..d2f6a02f71901b55421801d604b076c4b1818614 100644
--- a/audit/locale/sv/fusiondirectory.po
+++ b/audit/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
@@ -21,75 +21,75 @@ msgstr ""
 "Language: sv\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr "Åtgärd"
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr "Objekt"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/audit/locale/tr_TR/fusiondirectory.po b/audit/locale/tr_TR/fusiondirectory.po
index 3193b3a3f1aad35d838648429ff6f1efb261ecf3..d93adbe7e613b85ee5108f497ce3cd5e8c0f311a 100644
--- a/audit/locale/tr_TR/fusiondirectory.po
+++ b/audit/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2021
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2021\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -17,75 +21,75 @@ msgstr ""
 "Language: tr_TR\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
-msgstr ""
+msgstr "Zaman"
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
@@ -100,7 +104,7 @@ msgstr ""
 
 #: admin/audit/class_auditManagement.inc:132
 msgid "Type"
-msgstr ""
+msgstr "Tür"
 
 #: admin/audit/class_auditManagement.inc:139
 msgid "Target"
diff --git a/audit/locale/ug/fusiondirectory.po b/audit/locale/ug/fusiondirectory.po
index 269b808538142d4487f60cd84ab42518748fba2b..fb4faf41151e8e0928e9a3595f2e4b1d4684b1c1 100644
--- a/audit/locale/ug/fusiondirectory.po
+++ b/audit/locale/ug/fusiondirectory.po
@@ -8,84 +8,84 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/audit/locale/vi_VN/fusiondirectory.po b/audit/locale/vi_VN/fusiondirectory.po
index 7a0f470a9d430d87f742e5a10a86c6f0ce76721d..e478d5844aa62dfd59d7aed07c7d3277c75f14c1 100644
--- a/audit/locale/vi_VN/fusiondirectory.po
+++ b/audit/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
@@ -21,75 +21,75 @@ msgstr ""
 "Language: vi_VN\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr "đối tượng"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/audit/locale/zh/fusiondirectory.po b/audit/locale/zh/fusiondirectory.po
index 1447cd96634841684af5556e3b4a932556e8dd7c..c835da56dd209378fd2c80680026ee5c11e77c19 100644
--- a/audit/locale/zh/fusiondirectory.po
+++ b/audit/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
@@ -21,75 +21,75 @@ msgstr ""
 "Language: zh\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr "行动"
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr "对象"
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/audit/locale/zh_TW/fusiondirectory.po b/audit/locale/zh_TW/fusiondirectory.po
index 412fa1e4e9fcfa51cee13227a71fb3683bf1684e..03de3a0624416c5814bf4fd05b99bf43880251db 100644
--- a/audit/locale/zh_TW/fusiondirectory.po
+++ b/audit/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:43+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
@@ -17,75 +17,75 @@ msgstr ""
 "Language: zh_TW\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: admin/audit/class_auditEvent.inc:43
+#: admin/audit/class_auditEvent.inc:28
 #, php-format
 msgid "Unknown user: %s"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:57 admin/audit/class_auditEvent.inc:60
+#: admin/audit/class_auditEvent.inc:42 admin/audit/class_auditEvent.inc:45
 msgid "Audit event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:58
+#: admin/audit/class_auditEvent.inc:43
 msgid "An event like ldap modification which was registered by audit plugin"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:76
+#: admin/audit/class_auditEvent.inc:61
 msgid "Event"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 #: admin/audit/class_auditManagement.inc:111
 msgid "Time"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:80
+#: admin/audit/class_auditEvent.inc:65
 msgid "Date and time this event happened"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 #: admin/audit/class_auditManagement.inc:125
 msgid "Action"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:83
+#: admin/audit/class_auditEvent.inc:68
 msgid "Action type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 #: admin/audit/class_auditManagement.inc:118
 msgid "Author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:84
+#: admin/audit/class_auditEvent.inc:69
 msgid "Action author"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:85
+#: admin/audit/class_auditEvent.inc:70
 msgid "Object type"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:86
+#: admin/audit/class_auditEvent.inc:71
 msgid "Target object"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:87
+#: admin/audit/class_auditEvent.inc:72
 msgid "Target attributes"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result"
 msgstr ""
 
-#: admin/audit/class_auditEvent.inc:88
+#: admin/audit/class_auditEvent.inc:73
 msgid "Result or error"
 msgstr ""
 
diff --git a/autofs/admin/autofs/class_autofsManagement.inc b/autofs/admin/autofs/class_autofsManagement.inc
index 548fafad87314ec63f91e0067444114fd2d269e0..a21d3c8aee485c11aa5c4a54c5e00af4f419aefb 100644
--- a/autofs/admin/autofs/class_autofsManagement.inc
+++ b/autofs/admin/autofs/class_autofsManagement.inc
@@ -20,45 +20,45 @@
 
 class autofsManagement extends simpleManagement
 {
-  protected $objectTypes  = array('nisMap', 'nisObject');
+  protected $objectTypes  = ['nisMap', 'nisObject'];
 
-  protected $autoFilterAttributes = array('dn', 'cn', 'description', 'nisMapName', 'nisMapEntry');
+  protected $autoFilterAttributes = ['dn', 'cn', 'description', 'nisMapName', 'nisMapEntry'];
 
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Auto fs'),
       'plDescription' => _('Auto fs management'),
       'plIcon'        => 'geticon.php?context=applications&icon=autofs&size=48',
       'plSection'     => 'systems',
       'plPriority'    => 5,
-      'plManages'     => array('nisMap', 'nisObject'),
+      'plManages'     => ['nisMap', 'nisObject'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 
   function parseXML ($file)
   {
     $data = parent::parseXML($file);
     $data['list']['table']['layout'] = '|20px;c||||150px;r|';
-    $columns = array(
-      array(
+    $columns = [
+      [
         'label'         => 'Mount point',
         'sortAttribute' => 'nisMapName',
         'sortType'      => 'string',
         'value'         => '%{filter:link(row,dn,"%s",nisMapName)}',
         'export'        => 'true',
-      ),
-      array(
+      ],
+      [
         'label'         => 'Automount entry',
         'sortAttribute' => 'nisMapEntry',
         'sortType'      => 'string',
         'value'         => '%{filter:link(row,dn,"%s",nisMapEntry)}',
         'export'        => 'true',
-      ),
-    );
+      ],
+    ];
     array_splice($data['list']['table']['column'], 2, 1, $columns);
     return $data;
   }
diff --git a/autofs/admin/autofs/class_nisMap.inc b/autofs/admin/autofs/class_nisMap.inc
index 683c26178737caf4ce2683894a247f526303b2a7..b5cefa2d9517fe58f63ed08b70c7650bccd5d0f1 100644
--- a/autofs/admin/autofs/class_nisMap.inc
+++ b/autofs/admin/autofs/class_nisMap.inc
@@ -22,40 +22,40 @@ class nisMap extends simplePlugin
 {
   var $mainTab = TRUE;
 
-  var $objectclasses  = array('nisMap', 'top');
+  var $objectclasses  = ['nisMap', 'top'];
 
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Mount point'),
       'plDescription'   => _('Autofs mount point'),
-      'plObjectType'    => array('nisMap' => array(
+      'plObjectType'    => ['nisMap' => [
         'name'        => _('Mount point'),
         'filter'      => 'objectClass=nisMap',
         'ou'          => get_ou('autofsRDN'),
         'icon'        => 'geticon.php?context=applications&icon=autofs-nis-netmap&size=16',
         'mainAttr'    => 'nisMapName',
-      )),
+      ]],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Mount point'),
-        'attrs' => array(
+        'attrs' => [
           new BaseSelectorAttribute(get_ou('autofsRDN')),
-          new HostNameAttribute (
+          new HostNameAttribute(
             _('Name'), _('Name of the mount point'),
             'nisMapName', TRUE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 }
 
diff --git a/autofs/admin/autofs/class_nisObject.inc b/autofs/admin/autofs/class_nisObject.inc
index bb5f17056fa929136b9bd54719e7564f674eaf65..f5abb79f108a93d1c1ae78a769e237a7fb6c5fc8 100644
--- a/autofs/admin/autofs/class_nisObject.inc
+++ b/autofs/admin/autofs/class_nisObject.inc
@@ -22,56 +22,56 @@ class nisObject extends simplePlugin
 {
   var $mainTab = TRUE;
 
-  var $objectclasses  = array('nisObject');
+  var $objectclasses  = ['nisObject'];
 
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Directory'),
       'plDescription'   => _('Directory'),
-      'plObjectType'    => array('nisObject' => array(
+      'plObjectType'    => ['nisObject' => [
         'name'        => _('Directory'),
         'filter'      => 'objectClass=nisObject',
         'ou'          => get_ou('autofsRDN'),
         'icon'        => 'geticon.php?context=applications&icon=autofs-nis-object&size=16',
         'mainAttr'    => 'cn',
-      )),
-      'plForeignKeys'  => array(
-        'nisMapName'   => array(
-          array('nisMap', 'nisMapName'),
-        ),
-      ),
+      ]],
+      'plForeignKeys'  => [
+        'nisMapName'   => [
+          ['nisMap', 'nisMapName'],
+        ],
+      ],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Directory'),
-        'attrs' => array(
+        'attrs' => [
           new BaseSelectorAttribute(get_ou('autofsRDN')),
-          new StringAttribute (
+          new StringAttribute(
             _('Name'), _('Name of this directory'),
             'cn', TRUE,
             '', '',
             '/^[a-z0-9\.\-\/]*$/i', 'nfsPartage'
           ),
-          new TextAreaAttribute (
+          new TextAreaAttribute(
             _('Automount entry'), _("The entry of this directory for the automount daemon.\n For instance 'auto.u' or '-fstype=nfs domaine.tld:/mount/directory'"),
             'nisMapEntry', TRUE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Mount point'), _('The mount point this directory will be placed in'),
             'nisMapName', TRUE,
-            array()
+            []
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -80,7 +80,7 @@ class nisObject extends simplePlugin
     $this->attributesAccess['nisMapName']->setChoices($this->getMountPoints());
   }
 
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
     $this->attributesAccess['nisMapName']->setChoices($this->getMountPoints());
@@ -91,8 +91,8 @@ class nisObject extends simplePlugin
     global $config;
     $ldap = $config->get_ldap_link();
     $ldap->cd(get_ou('autofsRDN').$this->base);
-    $ldap->search('(objectClass=nisMap)', array('nisMapName'));
-    $nisMaps = array();
+    $ldap->search('(objectClass=nisMap)', ['nisMapName']);
+    $nisMaps = [];
     while ($attrs = $ldap->fetch()) {
       $nisMaps[] = $attrs['nisMapName'][0];
     }
@@ -100,13 +100,13 @@ class nisObject extends simplePlugin
   }
 
   /* We need to fix the base */
-  function get_allowed_bases()
+  function get_allowed_bases ()
   {
     $this->base = preg_replace('/^nisMapName=[^,]+,/', '', $this->base);
     return parent::get_allowed_bases();
   }
 
-  function compute_dn()
+  function compute_dn ()
   {
     return 'cn='.ldap_escape($this->attributesAccess['cn']->getValue(), '', LDAP_ESCAPE_DN).','.
             'nisMapName='.ldap_escape($this->nisMapName, '', LDAP_ESCAPE_DN).','.
diff --git a/autofs/config/autofs/class_autofsConfig.inc b/autofs/config/autofs/class_autofsConfig.inc
index 2cceac59340b7f9d5fef0b66d0cda599cfffb437..f640ddaf7a46c25b0a438544c19c6d26040944d2 100644
--- a/autofs/config/autofs/class_autofsConfig.inc
+++ b/autofs/config/autofs/class_autofsConfig.inc
@@ -20,35 +20,35 @@
 
 class autofsConfig extends simplePlugin
 {
-  var $objectclasses  = array("fdAutofsPluginConf");
+  var $objectclasses  = ["fdAutofsPluginConf"];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       "plShortName"     => _("Autofs configuration"),
       "plDescription"   => _("FusionDirectory autofs plugin configuration"),
       "plSelfModify"    => FALSE,
-      "plCategory"      => array("configuration"),
-      "plObjectType"    => array("smallConfig"),
+      "plCategory"      => ["configuration"],
+      "plObjectType"    => ["smallConfig"],
 
       "plProvidedAcls"  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('AutoFS'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('AutoFS RDN'), _('Branch in which automount info will be stored'),
             'fdAutofsRDN', TRUE,
             'ou=autofs'
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/autofs/locale/af_ZA/fusiondirectory.po b/autofs/locale/af_ZA/fusiondirectory.po
index f17cd1866f025ed42bac40623c6981471a0d4466..d9eb76c0409631afa12ee3cddc21b88f62cad594 100644
--- a/autofs/locale/af_ZA/fusiondirectory.po
+++ b/autofs/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/autofs/locale/ar/fusiondirectory.po b/autofs/locale/ar/fusiondirectory.po
index b88ee8ae416a7e617292b497cbb317eb8f60c798..cc501b14faff36d40ee833377a77aa337c228996 100644
--- a/autofs/locale/ar/fusiondirectory.po
+++ b/autofs/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/autofs/locale/ca/fusiondirectory.po b/autofs/locale/ca/fusiondirectory.po
index 92f9191c6702ef9b649b552458889aa4af5edc33..f07e5674ecf89d2acfcbf6a12cb39f71c0c58420 100644
--- a/autofs/locale/ca/fusiondirectory.po
+++ b/autofs/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/autofs/locale/cs_CZ/fusiondirectory.po b/autofs/locale/cs_CZ/fusiondirectory.po
index 28a9d9ab649ebd02e1ee100144ed081fd0a5ab90..17f320d5147dccd14ec231fe0acf71a49466acc2 100644
--- a/autofs/locale/cs_CZ/fusiondirectory.po
+++ b/autofs/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/autofs/locale/de/fusiondirectory.po b/autofs/locale/de/fusiondirectory.po
index a0c1e2e62b39ca55df991fecdec53f8340e1f0da..110144294cb1fb4e8b55e6dc7351989d767eea99 100644
--- a/autofs/locale/de/fusiondirectory.po
+++ b/autofs/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/autofs/locale/el_GR/fusiondirectory.po b/autofs/locale/el_GR/fusiondirectory.po
index 6507ba388a49e3d8e20a1fc449062598b9ee1314..e76b9e0bfd7e354c422eba5d8f84f929f2291126 100644
--- a/autofs/locale/el_GR/fusiondirectory.po
+++ b/autofs/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/autofs/locale/en/fusiondirectory.po b/autofs/locale/en/fusiondirectory.po
index a7157485f6eb83a85e9ab251211617562bb160c9..cfedc3fa74da244779c1348d6655de07512ebb45 100644
--- a/autofs/locale/en/fusiondirectory.po
+++ b/autofs/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -37,15 +37,36 @@ msgstr ""
 msgid "Branch in which automount info will be stored"
 msgstr ""
 
-#: admin/autofs/class_nisObject.inc:31 admin/autofs/class_nisObject.inc:32
-#: admin/autofs/class_nisObject.inc:34 admin/autofs/class_nisObject.inc:54
-msgid "Directory"
+#: admin/autofs/class_autofsManagement.inc:31
+msgid "Auto fs"
+msgstr ""
+
+#: admin/autofs/class_autofsManagement.inc:32
+msgid "Auto fs management"
+msgstr ""
+
+#: admin/autofs/class_nisMap.inc:31 admin/autofs/class_nisMap.inc:34
+#: admin/autofs/class_nisMap.inc:49 admin/autofs/class_nisObject.inc:68
+msgid "Mount point"
+msgstr ""
+
+#: admin/autofs/class_nisMap.inc:32
+msgid "Autofs mount point"
 msgstr ""
 
-#: admin/autofs/class_nisObject.inc:58 admin/autofs/class_nisMap.inc:53
+#: admin/autofs/class_nisMap.inc:53 admin/autofs/class_nisObject.inc:58
 msgid "Name"
 msgstr ""
 
+#: admin/autofs/class_nisMap.inc:53
+msgid "Name of the mount point"
+msgstr ""
+
+#: admin/autofs/class_nisObject.inc:31 admin/autofs/class_nisObject.inc:32
+#: admin/autofs/class_nisObject.inc:34 admin/autofs/class_nisObject.inc:54
+msgid "Directory"
+msgstr ""
+
 #: admin/autofs/class_nisObject.inc:58
 msgid "Name of this directory"
 msgstr ""
@@ -60,27 +81,6 @@ msgid ""
 " For instance 'auto.u' or '-fstype=nfs domaine.tld:/mount/directory'"
 msgstr ""
 
-#: admin/autofs/class_nisObject.inc:68 admin/autofs/class_nisMap.inc:31
-#: admin/autofs/class_nisMap.inc:34 admin/autofs/class_nisMap.inc:49
-msgid "Mount point"
-msgstr ""
-
 #: admin/autofs/class_nisObject.inc:68
 msgid "The mount point this directory will be placed in"
 msgstr ""
-
-#: admin/autofs/class_autofsManagement.inc:31
-msgid "Auto fs"
-msgstr ""
-
-#: admin/autofs/class_autofsManagement.inc:32
-msgid "Auto fs management"
-msgstr ""
-
-#: admin/autofs/class_nisMap.inc:32
-msgid "Autofs mount point"
-msgstr ""
-
-#: admin/autofs/class_nisMap.inc:53
-msgid "Name of the mount point"
-msgstr ""
diff --git a/autofs/locale/es/fusiondirectory.po b/autofs/locale/es/fusiondirectory.po
index 24608673d6cf8412871f431f384997e25a7c053a..93cb521fbb2f7e45a5cc28c0df95ed963f7ca3bc 100644
--- a/autofs/locale/es/fusiondirectory.po
+++ b/autofs/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/autofs/class_autofsManagement.inc:31
 msgid "Auto fs"
diff --git a/autofs/locale/es_CO/fusiondirectory.po b/autofs/locale/es_CO/fusiondirectory.po
index 2acb5b8f250d093b01000a9778e15d2d6e3a0bd2..25bca29ffdaba0835c2336c6a0047e5e71919ac7 100644
--- a/autofs/locale/es_CO/fusiondirectory.po
+++ b/autofs/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/autofs/class_autofsManagement.inc:31
 msgid "Auto fs"
diff --git a/autofs/locale/es_VE/fusiondirectory.po b/autofs/locale/es_VE/fusiondirectory.po
index 8c914c62dbc4a81e5d9d3eacbe746aedfca8bbe6..f1a0e56ec2748b3e7cd1983b9ba70535111be89f 100644
--- a/autofs/locale/es_VE/fusiondirectory.po
+++ b/autofs/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/autofs/class_autofsManagement.inc:31
 msgid "Auto fs"
diff --git a/autofs/locale/fa_IR/fusiondirectory.po b/autofs/locale/fa_IR/fusiondirectory.po
index fb19900fec381c8440daafe512b7038d267ef66b..c7c81eb343eb01082c7f74b668ab594c42277865 100644
--- a/autofs/locale/fa_IR/fusiondirectory.po
+++ b/autofs/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/autofs/locale/fi_FI/fusiondirectory.po b/autofs/locale/fi_FI/fusiondirectory.po
index 8e1d14bd62204adcc341d575efe82060a474eeab..b79bcadd86f74585bb6da80a058168acb97c06fe 100644
--- a/autofs/locale/fi_FI/fusiondirectory.po
+++ b/autofs/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/autofs/locale/fr/fusiondirectory.po b/autofs/locale/fr/fusiondirectory.po
index 2989cec513eba32c1940d5b7aea33c23571bb00e..28b1f9689f88a393ab85c8f6246baef0c68dc9c4 100644
--- a/autofs/locale/fr/fusiondirectory.po
+++ b/autofs/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/autofs/class_autofsManagement.inc:31
 msgid "Auto fs"
diff --git a/autofs/locale/hu_HU/fusiondirectory.po b/autofs/locale/hu_HU/fusiondirectory.po
index 0456284d24fee53000eedad14919f78ffe04f46f..83550350452e4ea6a7dd26e2db13c970854691ce 100644
--- a/autofs/locale/hu_HU/fusiondirectory.po
+++ b/autofs/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
diff --git a/autofs/locale/id/fusiondirectory.po b/autofs/locale/id/fusiondirectory.po
index 33fca0b89246d1910423d26ada4d1e00e585ea2e..27b8f8ae1abf4026d1f5d6cd25e7018502206837 100644
--- a/autofs/locale/id/fusiondirectory.po
+++ b/autofs/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/autofs/locale/it_IT/fusiondirectory.po b/autofs/locale/it_IT/fusiondirectory.po
index d409856be8f06428c7179c1d642c1e0fd7a763fa..063fe24aeb252a32dead35be1c8d14aa08c7d308 100644
--- a/autofs/locale/it_IT/fusiondirectory.po
+++ b/autofs/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/autofs/class_autofsManagement.inc:31
 msgid "Auto fs"
diff --git a/autofs/locale/ja/fusiondirectory.po b/autofs/locale/ja/fusiondirectory.po
index 187d5e449a366f6d81568e98132fa1fbe433eefb..31f58a7ac2b9493838b4873d6a50ee702804d4fc 100644
--- a/autofs/locale/ja/fusiondirectory.po
+++ b/autofs/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/autofs/locale/ko/fusiondirectory.po b/autofs/locale/ko/fusiondirectory.po
index 123cf6dd29703768825d82207174f7f59ca3c08b..3beee52176638021a3bb82a00003ecc6e05ef02c 100644
--- a/autofs/locale/ko/fusiondirectory.po
+++ b/autofs/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/autofs/locale/lv/fusiondirectory.po b/autofs/locale/lv/fusiondirectory.po
index dbb20977fe679e00a2d8238f862b315f393dd2bb..60b363c4ad4371bb320ba5ffe5c8d1540edabaef 100644
--- a/autofs/locale/lv/fusiondirectory.po
+++ b/autofs/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/autofs/locale/nb/fusiondirectory.po b/autofs/locale/nb/fusiondirectory.po
index 31d82ac4ae53ea15f47602ab527d01a45378cbe3..f80212ac6d3d4172e0e79c2ed00dac9533ed082e 100644
--- a/autofs/locale/nb/fusiondirectory.po
+++ b/autofs/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/autofs/locale/nl/fusiondirectory.po b/autofs/locale/nl/fusiondirectory.po
index 1a826ae23003e52a06142597673d14dfefb338e7..477c30a50026a4c0912301cae5381d650855e27f 100644
--- a/autofs/locale/nl/fusiondirectory.po
+++ b/autofs/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/autofs/locale/pl/fusiondirectory.po b/autofs/locale/pl/fusiondirectory.po
index 6da84a69a4ca7b832ff5d9cfad5218d00a76bfb3..64c2b7b7fb9258cd00efa9af579abf720c4f0d39 100644
--- a/autofs/locale/pl/fusiondirectory.po
+++ b/autofs/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/autofs/locale/pt/fusiondirectory.po b/autofs/locale/pt/fusiondirectory.po
index 54284b640fe90083b33a0514c776128ba42a21c3..53c7c8d9136d65712e8cc951a0d3658c08ae2ebb 100644
--- a/autofs/locale/pt/fusiondirectory.po
+++ b/autofs/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/autofs/class_autofsManagement.inc:31
 msgid "Auto fs"
diff --git a/autofs/locale/pt_BR/fusiondirectory.po b/autofs/locale/pt_BR/fusiondirectory.po
index 5561d88e7db7b0f20ab2f3801b5510b75bfb9e59..8ec7f40cef2bea0c8777046f91ef7db69468ab41 100644
--- a/autofs/locale/pt_BR/fusiondirectory.po
+++ b/autofs/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/autofs/class_autofsManagement.inc:31
 msgid "Auto fs"
diff --git a/autofs/locale/ru/fusiondirectory.po b/autofs/locale/ru/fusiondirectory.po
index c1a80a37147879b98b8c693eb03ab669a59266db..b871b17e05ddc44de34c4043a9abe53e5d1003f1 100644
--- a/autofs/locale/ru/fusiondirectory.po
+++ b/autofs/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/autofs/locale/ru@petr1708/fusiondirectory.po b/autofs/locale/ru@petr1708/fusiondirectory.po
index 15d495586958bcf04071218175ab5b58efa00bc0..84cb8ec7bf8c29e892af8f09f56ea8662cb8c48a 100644
--- a/autofs/locale/ru@petr1708/fusiondirectory.po
+++ b/autofs/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/autofs/locale/sv/fusiondirectory.po b/autofs/locale/sv/fusiondirectory.po
index 9e35964d9cfffbd5734af861265a7dbbb2e1e61d..2effea16e5b90e8531611e11db4fcb7fa75ac061 100644
--- a/autofs/locale/sv/fusiondirectory.po
+++ b/autofs/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/autofs/locale/tr_TR/fusiondirectory.po b/autofs/locale/tr_TR/fusiondirectory.po
index ca4e98c2a5e3cef70a38379515bdfafb2323eaae..9d73ebfbb160f0b10c1bd572a7f3365282877eb8 100644
--- a/autofs/locale/tr_TR/fusiondirectory.po
+++ b/autofs/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/autofs/locale/ug/fusiondirectory.po b/autofs/locale/ug/fusiondirectory.po
index b3982b4d1feb08b6e131a7f187723cd44038c83d..93d6252e8a788d9bb6a26175515e767dd4bf8fc3 100644
--- a/autofs/locale/ug/fusiondirectory.po
+++ b/autofs/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/autofs/class_autofsManagement.inc:31
 msgid "Auto fs"
diff --git a/autofs/locale/vi_VN/fusiondirectory.po b/autofs/locale/vi_VN/fusiondirectory.po
index f7a9a37cc2fb56feb1bed864efb88297644c3f35..c1f666ea6cc2772ea2c684ea27c0319568c32840 100644
--- a/autofs/locale/vi_VN/fusiondirectory.po
+++ b/autofs/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/autofs/locale/zh/fusiondirectory.po b/autofs/locale/zh/fusiondirectory.po
index e3eb32acd25d5d6758b5e0c2fc217c280a86f694..406068c44f018e0509aa5fd6f9cf916342e52082 100644
--- a/autofs/locale/zh/fusiondirectory.po
+++ b/autofs/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/autofs/locale/zh_TW/fusiondirectory.po b/autofs/locale/zh_TW/fusiondirectory.po
index 07191e00fa3b26623f7880503193ffa08c8c3cbd..e8dc556ccf03b105f174875d774a3532d96ee70b 100644
--- a/autofs/locale/zh_TW/fusiondirectory.po
+++ b/autofs/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:05+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/certificates/locale/af_ZA/fusiondirectory.po b/certificates/locale/af_ZA/fusiondirectory.po
index 4223bfba72175988091426e712c4467be64d67b1..3997e20b655a51ca212e22ccb24017e1b721f94b 100644
--- a/certificates/locale/af_ZA/fusiondirectory.po
+++ b/certificates/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/certificates/locale/ar/fusiondirectory.po b/certificates/locale/ar/fusiondirectory.po
index 8fbdfdb9ef516ef39ffe00a50b3a635f0bfd4ff8..d3d7554c5e1a6155f0eaab8b616b0140fb76d992 100644
--- a/certificates/locale/ar/fusiondirectory.po
+++ b/certificates/locale/ar/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
 "MIME-Version: 1.0\n"
diff --git a/certificates/locale/ca/fusiondirectory.po b/certificates/locale/ca/fusiondirectory.po
index f91ee190b1f45632e6f454491e74c905a94421c7..450ab59bade1f0cbbbddcab5d1dcdc68ed6f31da 100644
--- a/certificates/locale/ca/fusiondirectory.po
+++ b/certificates/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/certificates/locale/cs_CZ/fusiondirectory.po b/certificates/locale/cs_CZ/fusiondirectory.po
index 6c67d3e5965ba658f0849afe0daa15d91ef3b2cd..cb5785e6694aeefc1f0f74c9a13a6310e98bee58 100644
--- a/certificates/locale/cs_CZ/fusiondirectory.po
+++ b/certificates/locale/cs_CZ/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/certificates/locale/de/fusiondirectory.po b/certificates/locale/de/fusiondirectory.po
index 9efb331b3fadd2b197a19aa446b137660672b695..070ceeb4cf28a6f376202d47aa7ce56caca96d1a 100644
--- a/certificates/locale/de/fusiondirectory.po
+++ b/certificates/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/certificates/locale/el_GR/fusiondirectory.po b/certificates/locale/el_GR/fusiondirectory.po
index 114cf569c443a490914d4e6925aa25b4dc51b67b..0aab050239d600547237cde391b31376943ce8bc 100644
--- a/certificates/locale/el_GR/fusiondirectory.po
+++ b/certificates/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/certificates/locale/en/fusiondirectory.po b/certificates/locale/en/fusiondirectory.po
index 2a496bb17a1480a94302accc65a634426a467f5d..dcb5738c8ce1afd1cab493d733e1cf7c7c521a30 100644
--- a/certificates/locale/en/fusiondirectory.po
+++ b/certificates/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
diff --git a/certificates/locale/es/fusiondirectory.po b/certificates/locale/es/fusiondirectory.po
index 858c02c1e6842e52131c3f2d05ed237adcf0a42e..a6f422b6c8e8b41e72676d9ad000fc9fae2e67dc 100644
--- a/certificates/locale/es/fusiondirectory.po
+++ b/certificates/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/certificates/class_userCertificates.inc:31
 #: personal/certificates/class_userCertificates.inc:32
diff --git a/certificates/locale/es_CO/fusiondirectory.po b/certificates/locale/es_CO/fusiondirectory.po
index 6afb6311b6119045912cc875f51fe6b5b770abf7..25156ab6953f81df485a945b7945c80ee16d6cd8 100644
--- a/certificates/locale/es_CO/fusiondirectory.po
+++ b/certificates/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/certificates/class_userCertificates.inc:31
 #: personal/certificates/class_userCertificates.inc:32
diff --git a/certificates/locale/es_VE/fusiondirectory.po b/certificates/locale/es_VE/fusiondirectory.po
index 68a4619c94e2f5414c853dcd65584c2e2b0b8275..472c9de096b161712e3b5326502d14201e952e56 100644
--- a/certificates/locale/es_VE/fusiondirectory.po
+++ b/certificates/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/certificates/class_userCertificates.inc:31
 #: personal/certificates/class_userCertificates.inc:32
diff --git a/certificates/locale/fa_IR/fusiondirectory.po b/certificates/locale/fa_IR/fusiondirectory.po
index be282ca2d412b866fdf406b8ef9df39fe283458b..ed2ffd11106f7897a2248eb670f48e4fdf6da360 100644
--- a/certificates/locale/fa_IR/fusiondirectory.po
+++ b/certificates/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/certificates/locale/fi_FI/fusiondirectory.po b/certificates/locale/fi_FI/fusiondirectory.po
index 56fc3064986dc3cb8709cfb4839ab2901cbba8d4..a80768f29eca91363bad469d867591a05ebc34b2 100644
--- a/certificates/locale/fi_FI/fusiondirectory.po
+++ b/certificates/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/certificates/locale/fr/fusiondirectory.po b/certificates/locale/fr/fusiondirectory.po
index 1f104ae8e8268f323472e8fe9a46e8438476a63a..88b37661586ed5536afd3d630b4fc6f523de8120 100644
--- a/certificates/locale/fr/fusiondirectory.po
+++ b/certificates/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/certificates/class_userCertificates.inc:31
 #: personal/certificates/class_userCertificates.inc:32
diff --git a/certificates/locale/hu_HU/fusiondirectory.po b/certificates/locale/hu_HU/fusiondirectory.po
index c6a77f526b0751c77254a3b6a155a909042d7a94..46ebf856b2fa87087d9aaa4bf555e804f330a24e 100644
--- a/certificates/locale/hu_HU/fusiondirectory.po
+++ b/certificates/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/certificates/locale/id/fusiondirectory.po b/certificates/locale/id/fusiondirectory.po
index e14474a7426ff8859ea644c40ee6a4bc77afdbae..85c583f367664f790cc50c193a3ddc0bca7f83dd 100644
--- a/certificates/locale/id/fusiondirectory.po
+++ b/certificates/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/certificates/locale/it_IT/fusiondirectory.po b/certificates/locale/it_IT/fusiondirectory.po
index 6e0efb711aac5ea2c3a5df6d27eb30124e94756a..8c6f788c22e51ec03f9519fc9fb5e4f762a4a3ec 100644
--- a/certificates/locale/it_IT/fusiondirectory.po
+++ b/certificates/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/certificates/class_userCertificates.inc:31
 #: personal/certificates/class_userCertificates.inc:32
diff --git a/certificates/locale/ja/fusiondirectory.po b/certificates/locale/ja/fusiondirectory.po
index 82a74f6d8adb46eabd85a22a510ab4beb828f4be..74da39bcb1a0e4c4003fa356eaf978f63c6b4951 100644
--- a/certificates/locale/ja/fusiondirectory.po
+++ b/certificates/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/certificates/locale/ko/fusiondirectory.po b/certificates/locale/ko/fusiondirectory.po
index 11c5c943c6db3c8616f4e15da5805ff350daaac9..f1404b27fb16e336776633ecdd5fad38049339c3 100644
--- a/certificates/locale/ko/fusiondirectory.po
+++ b/certificates/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/certificates/locale/lv/fusiondirectory.po b/certificates/locale/lv/fusiondirectory.po
index 0809be79058db375e333cad2906aff6db4889561..a492d237260933bad53a90310589b541c1063aab 100644
--- a/certificates/locale/lv/fusiondirectory.po
+++ b/certificates/locale/lv/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
 "MIME-Version: 1.0\n"
diff --git a/certificates/locale/nb/fusiondirectory.po b/certificates/locale/nb/fusiondirectory.po
index 372585b769f70405b379f1fdd5d1636238f74611..8ca46c27d835ca276acc1fb4ad902989f2359e10 100644
--- a/certificates/locale/nb/fusiondirectory.po
+++ b/certificates/locale/nb/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
 "MIME-Version: 1.0\n"
diff --git a/certificates/locale/nl/fusiondirectory.po b/certificates/locale/nl/fusiondirectory.po
index 3fc8e5e6115fbf60885ecc5e093ae49e02db0ea9..6a1be09a97bede493ce0aa108bc6be13f4e37572 100644
--- a/certificates/locale/nl/fusiondirectory.po
+++ b/certificates/locale/nl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/certificates/locale/pl/fusiondirectory.po b/certificates/locale/pl/fusiondirectory.po
index e4a9cf0029e4d43a389223e504ac80fd9649c3e9..b37f332eef1ac39960738e865083799b29523780 100644
--- a/certificates/locale/pl/fusiondirectory.po
+++ b/certificates/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/certificates/locale/pt/fusiondirectory.po b/certificates/locale/pt/fusiondirectory.po
index 4881ec3b31afff58602677a5360f31a16c240390..ce6e23fee4609a498af163d3b56371e1489b6812 100644
--- a/certificates/locale/pt/fusiondirectory.po
+++ b/certificates/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/certificates/class_userCertificates.inc:31
 #: personal/certificates/class_userCertificates.inc:32
diff --git a/certificates/locale/pt_BR/fusiondirectory.po b/certificates/locale/pt_BR/fusiondirectory.po
index 917b977a8fc781623eacbade5dd1e3d9dca6f7ed..7feb9b922e1bdd135002e49ad09b0df9d4a50273 100644
--- a/certificates/locale/pt_BR/fusiondirectory.po
+++ b/certificates/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/certificates/class_userCertificates.inc:31
 #: personal/certificates/class_userCertificates.inc:32
diff --git a/certificates/locale/ru/fusiondirectory.po b/certificates/locale/ru/fusiondirectory.po
index b4c4395f8bfbace82cddecc159265942a3d8d0fb..49ef71f891b08305753553bd4f75126afc3333b5 100644
--- a/certificates/locale/ru/fusiondirectory.po
+++ b/certificates/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/certificates/locale/ru@petr1708/fusiondirectory.po b/certificates/locale/ru@petr1708/fusiondirectory.po
index 5ce9bed2dfff8fa04bd595241d43d95e3ade5533..6a23669844b2a52b58fcdd38bf40cfd50468e0e9 100644
--- a/certificates/locale/ru@petr1708/fusiondirectory.po
+++ b/certificates/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/certificates/locale/sv/fusiondirectory.po b/certificates/locale/sv/fusiondirectory.po
index 8cae7519e77d22d1c2ea8cdbee4071b9891d8233..4798cc68babb69436ee76f883155f7687c115b5e 100644
--- a/certificates/locale/sv/fusiondirectory.po
+++ b/certificates/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/certificates/locale/tr_TR/fusiondirectory.po b/certificates/locale/tr_TR/fusiondirectory.po
index 4907a2e9cbdcc4b658450d0932864d9c8f91ac1d..e2a09bb67c76d752336e000ec909755d916039c7 100644
--- a/certificates/locale/tr_TR/fusiondirectory.po
+++ b/certificates/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2021
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2021\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -20,7 +24,7 @@ msgstr ""
 #: personal/certificates/class_userCertificates.inc:31
 #: personal/certificates/class_userCertificates.inc:32
 msgid "Download"
-msgstr ""
+msgstr "İndir"
 
 #: personal/certificates/class_userCertificates.inc:75
 msgid "Unknown format"
diff --git a/certificates/locale/ug/fusiondirectory.po b/certificates/locale/ug/fusiondirectory.po
index 4bfce196c4cd6e1041c83c72459be7eac65f6c4b..1c30963d14970e802c0966c2856e9c1d46eeaee3 100644
--- a/certificates/locale/ug/fusiondirectory.po
+++ b/certificates/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: personal/certificates/class_userCertificates.inc:31
 #: personal/certificates/class_userCertificates.inc:32
diff --git a/certificates/locale/vi_VN/fusiondirectory.po b/certificates/locale/vi_VN/fusiondirectory.po
index b5e91d57fc23cea06baa7fac77d45e077041f7ad..ffb5ddaa6eaf7dfaaef1771e657634e15f1cb12a 100644
--- a/certificates/locale/vi_VN/fusiondirectory.po
+++ b/certificates/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/certificates/locale/zh/fusiondirectory.po b/certificates/locale/zh/fusiondirectory.po
index abe952bb0bfd4eb6f78f41c66470457428aeabcb..fe6672f2094752f33d5c7bcb8fff9905a08fcb50 100644
--- a/certificates/locale/zh/fusiondirectory.po
+++ b/certificates/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/certificates/locale/zh_TW/fusiondirectory.po b/certificates/locale/zh_TW/fusiondirectory.po
index fe58d3efad65a469ca0f8ead36e7ed1da6172c4f..bbfa94408ef03af1cb7276a1ab0f2396a69eeda3 100644
--- a/certificates/locale/zh_TW/fusiondirectory.po
+++ b/certificates/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/certificates/personal/certificates/class_userCertificates.inc b/certificates/personal/certificates/class_userCertificates.inc
index 3da4097c911f3ad33f850d2ad78940cb4a943155..214a5e6a734e3dcab81697844c51960cb10f84a7 100644
--- a/certificates/personal/certificates/class_userCertificates.inc
+++ b/certificates/personal/certificates/class_userCertificates.inc
@@ -20,25 +20,25 @@
 
 class CertificateOrderedArrayAttribute extends OrderedArrayAttribute
 {
-  protected function genRowIcons($key, $value)
+  protected function genRowIcons ($key, $value)
   {
     $id = $this->getHtmlId();
-    list ($img, $nbicons) = parent::genRowIcons($key, $value);
+    list($img, $nbicons) = parent::genRowIcons($key, $value);
     $img = $this->renderInputField(
       'image', $id.'_download_'.$key,
-      array(
+      [
         'src'   => 'geticon.php?context=actions&amp;icon=document-save&amp;size=16',
         'title' => _('Download'),
         'alt'   => _('Download'),
         'class' => 'center'
-      )
+      ]
     ).$img;
     $nbicons++;
 
-    return array ($img, $nbicons);
+    return  [$img, $nbicons];
   }
 
-  protected function handlePostValueActions($id, $postValue)
+  protected function handlePostValueActions ($id, $postValue)
   {
     if (parent::handlePostValueActions($id, $postValue)) {
       return TRUE;
@@ -72,9 +72,9 @@ class CertificateFileAttribute extends FileAttribute
     }
     $infos = openssl_x509_parse($value, TRUE);
     if (empty($infos)) {
-      return array(_('Unknown format'), $this->displayValue($this->getValue()), '');
+      return [_('Unknown format'), $this->displayValue($this->getValue()), ''];
     }
-    $values = array('','','');
+    $values = ['','',''];
     if (isset($infos['subject']['CN'])) {
       $values[0] = $infos['subject']['CN'];
     }
@@ -109,38 +109,38 @@ class CertificateFileAttribute extends FileAttribute
 class userCertificates extends simplePlugin
 {
   var $displayHeader = TRUE;
-  var $objectclasses = array('strongAuthenticationUser');
+  var $objectclasses = ['strongAuthenticationUser'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Certificates'),
       'plDescription'   => _('User certificates'),
       'plSelfModify'    => TRUE,
-      'plObjectType'    => array('user'),
+      'plObjectType'    => ['user'],
       'plIcon'          => 'geticon.php?context=types&icon=certificate&size=48',
       'plSmallIcon'     => 'geticon.php?context=types&icon=certificate&size=16',
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Certificates'),
-        'attrs' => array(
+        'attrs' => [
           new CertificateOrderedArrayAttribute(
-            new CertificateFileAttribute (
+            new CertificateFileAttribute(
               '', _('Certificate content'),
               'userCertificate;binary', TRUE
             ),
             FALSE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/community/admin/departments/community/class_communityOrganization.inc b/community/admin/departments/community/class_communityOrganization.inc
index cec0a52aee452a2e55959db745a3da9f58ef9444..4871ad348a6a7b90e84c4ac6585f6f1d4cb2784b 100644
--- a/community/admin/departments/community/class_communityOrganization.inc
+++ b/community/admin/departments/community/class_communityOrganization.inc
@@ -20,63 +20,63 @@
 
 class communityOrganization extends simplePlugin
 {
-  var $objectclasses  = array('fdCommunityOrganization');
+  var $objectclasses  = ['fdCommunityOrganization'];
   var $displayHeader  = TRUE;
 
   static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Community organization'),
       'plDescription'   => _('Community organization dates and alternate address'),
-      'plObjectType'    => array('organization'),
+      'plObjectType'    => ['organization'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
     global $config;
-    return array(
-      'membership' => array(
+    return [
+      'membership' => [
         'name'  => _('Membership'),
-        'attrs' => array(
-          new SelectAttribute (
+        'attrs' => [
+          new SelectAttribute(
             _('Membership type'), _('Membership type of this organization'),
             'fdCommunityMembershipType', FALSE,
-            $config->get_cfg_value('communityMembershipTypeChoices', array())
+            $config->get_cfg_value('communityMembershipTypeChoices', [])
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Agreement signed'), _('Did this member returned the agreement signed'),
             'fdCommunityMembershipAgreement', FALSE
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Active'), _('Is the membership of this organization active'),
             'fdCommunityMembershipActive', FALSE
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Hidden'), _('Should this membership be hidden from listings'),
             'fdCommunityMembershipHidden', FALSE
           )
-        )
-      ),
-      'dates' => array(
+        ]
+      ],
+      'dates' => [
         'name'  => _('Dates'),
-        'attrs' => array(
-          new GeneralizedTimeDateAttribute (
+        'attrs' => [
+          new GeneralizedTimeDateAttribute(
             _('Start date'), _('Date of the beginning'),
             'fdCommunityStartDate', TRUE
           ),
-          new GeneralizedTimeDateAttribute (
+          new GeneralizedTimeDateAttribute(
             _('End date'), _('Date of the end'),
             'fdCommunityEndDate', FALSE,
             ''
           ),
-        )
-      ),
-      'address' => array (
+        ]
+      ],
+      'address' => [
         'name'  => _('Contact'),
-        'attrs' => array (
+        'attrs' => [
           new StringAttribute(
             _('First name'), _('First name'),
             'fdOrganizationAlternateFirstName', FALSE
@@ -101,9 +101,9 @@ class communityOrganization extends simplePlugin
             _('Country'), _('Country'),
             'fdOrganizationAlternateCountry', FALSE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/community/admin/departments/community/class_communityProject.inc b/community/admin/departments/community/class_communityProject.inc
index c4f547242757f3944d320c5286eff96b2c42897c..fed9c80376156afa842b217f216bce873d45b104 100644
--- a/community/admin/departments/community/class_communityProject.inc
+++ b/community/admin/departments/community/class_communityProject.inc
@@ -20,38 +20,38 @@
 
 class communityProject extends communityOrganization
 {
-  var $objectclasses  = array('fdCommunityProject');
+  var $objectclasses  = ['fdCommunityProject'];
   var $displayHeader  = TRUE;
 
   static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Community project'),
       'plDescription'   => _('Community project dates and alternate address'),
-      'plObjectType'    => array('department'),
+      'plObjectType'    => ['department'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
     $infos = array_merge(
-      array(
-        'project' => array(
+      [
+        'project' => [
           'name'  => _('Project'),
-          'attrs' => array(
-            new StringAttribute (
+          'attrs' => [
+            new StringAttribute(
               _('Project full name'), _('Full name of this project'),
               'fdProjectFullName', FALSE
             ),
-            new StringAttribute (
+            new StringAttribute(
               _('Project key'), _('ID used for this project in other softwares or databases'),
               'fdProjectKey', FALSE
             ),
-          )
-        )
-      ),
+          ]
+        ]
+      ],
       parent::getAttributesInfo()
     );
     unset($infos['membership']);
diff --git a/community/config/community/class_communityConfig.inc b/community/config/community/class_communityConfig.inc
index d25b5f97c92f656695b1b3677fd118818f4fa6e9..b04c39981975ebf37526d83d4664362375e7c5df 100644
--- a/community/config/community/class_communityConfig.inc
+++ b/community/config/community/class_communityConfig.inc
@@ -20,36 +20,36 @@
 
 class communityConfig extends simplePlugin
 {
-  var $objectclasses  = array('fdCommunityPluginConf');
+  var $objectclasses  = ['fdCommunityPluginConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Community configuration'),
       'plDescription'   => _('FusionDirectory community plugin configuration'),
-      'plCategory'      => array('configuration'),
-      'plObjectType'    => array('smallConfig'),
+      'plCategory'      => ['configuration'],
+      'plObjectType'    => ['smallConfig'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Community'),
-        'attrs' => array(
+        'attrs' => [
           new SetAttribute(
-            new StringAttribute (
+            new StringAttribute(
               _('Membership type choices'), _('Community membership types available in the user community tab'),
               'fdCommunityMembershipTypeChoices', FALSE
             ),
-            array()
+            []
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/community/locale/af_ZA/fusiondirectory.po b/community/locale/af_ZA/fusiondirectory.po
index 58b02d0ecb6c68661b42e3496d7174aa87e20946..2a4c63383f68102f8289cafb89313c7c0127ab02 100644
--- a/community/locale/af_ZA/fusiondirectory.po
+++ b/community/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/community/locale/ar/fusiondirectory.po b/community/locale/ar/fusiondirectory.po
index f9ca5522ca947d8daa258a9bd95651b6578401d8..de975de155d6166be782a76679411f4af18c7def 100644
--- a/community/locale/ar/fusiondirectory.po
+++ b/community/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/community/locale/ca/fusiondirectory.po b/community/locale/ca/fusiondirectory.po
index 7dc967690f257d806f0f9549579d5c4c5c9a8c9c..7af59c9e494588d077143f591927b38167b7134d 100644
--- a/community/locale/ca/fusiondirectory.po
+++ b/community/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/community/locale/cs_CZ/fusiondirectory.po b/community/locale/cs_CZ/fusiondirectory.po
index b02d326ef8bea3006f801b4d7fc41a9dffbc345b..ba086eb49f31fbf09076992ade13e4754e4ff282 100644
--- a/community/locale/cs_CZ/fusiondirectory.po
+++ b/community/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/community/locale/de/fusiondirectory.po b/community/locale/de/fusiondirectory.po
index 93a24c157e13b76cb13552bfe0745a7ba2860418..b67d2c54a3bd88f8942beab97e403d191416a32f 100644
--- a/community/locale/de/fusiondirectory.po
+++ b/community/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/community/locale/el_GR/fusiondirectory.po b/community/locale/el_GR/fusiondirectory.po
index b571ba5d19960d549b2ef751b7827898d4bfb57e..6510d843f4316f3e8ca43108b7b54ea9f5fffdf3 100644
--- a/community/locale/el_GR/fusiondirectory.po
+++ b/community/locale/el_GR/fusiondirectory.po
@@ -5,15 +5,16 @@
 # 
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2016
+# LOUKAS SKOUROLIAKOS, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
-"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
+"Last-Translator: LOUKAS SKOUROLIAKOS, 2021\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -31,11 +32,11 @@ msgstr ""
 
 #: admin/departments/community/class_communityOrganization.inc:42
 msgid "Membership"
-msgstr ""
+msgstr "Μέλος Ομάδας"
 
 #: admin/departments/community/class_communityOrganization.inc:45
 msgid "Membership type"
-msgstr ""
+msgstr "Τύπος Μέλους Ομάδας"
 
 #: admin/departments/community/class_communityOrganization.inc:45
 msgid "Membership type of this organization"
@@ -43,7 +44,7 @@ msgstr ""
 
 #: admin/departments/community/class_communityOrganization.inc:50
 msgid "Agreement signed"
-msgstr ""
+msgstr "Συμφωνία υπογράφηκε "
 
 #: admin/departments/community/class_communityOrganization.inc:50
 msgid "Did this member returned the agreement signed"
@@ -51,7 +52,7 @@ msgstr ""
 
 #: admin/departments/community/class_communityOrganization.inc:54
 msgid "Active"
-msgstr ""
+msgstr "Ενεργό"
 
 #: admin/departments/community/class_communityOrganization.inc:54
 msgid "Is the membership of this organization active"
@@ -59,7 +60,7 @@ msgstr ""
 
 #: admin/departments/community/class_communityOrganization.inc:58
 msgid "Hidden"
-msgstr ""
+msgstr "Κρυφό"
 
 #: admin/departments/community/class_communityOrganization.inc:58
 msgid "Should this membership be hidden from listings"
@@ -67,11 +68,11 @@ msgstr ""
 
 #: admin/departments/community/class_communityOrganization.inc:64
 msgid "Dates"
-msgstr ""
+msgstr "Ημερομηνίες"
 
 #: admin/departments/community/class_communityOrganization.inc:67
 msgid "Start date"
-msgstr ""
+msgstr "Ημερομηνία Εκκίνησης "
 
 #: admin/departments/community/class_communityOrganization.inc:67
 msgid "Date of the beginning"
@@ -103,7 +104,7 @@ msgstr "Διεύθυνση"
 
 #: admin/departments/community/class_communityOrganization.inc:89
 msgid "A postal address"
-msgstr ""
+msgstr "Μία Ταχυδρομική διεύθυνση"
 
 #: admin/departments/community/class_communityOrganization.inc:93
 msgid "City"
@@ -119,7 +120,7 @@ msgstr "Χώρα"
 
 #: admin/departments/community/class_communityProject.inc:29
 msgid "Community project"
-msgstr ""
+msgstr "Έργο κοινότητας"
 
 #: admin/departments/community/class_communityProject.inc:30
 msgid "Community project dates and alternate address"
@@ -127,11 +128,11 @@ msgstr ""
 
 #: admin/departments/community/class_communityProject.inc:42
 msgid "Project"
-msgstr ""
+msgstr "Έργο"
 
 #: admin/departments/community/class_communityProject.inc:45
 msgid "Project full name"
-msgstr ""
+msgstr "Πλήρες όνομα Έργου"
 
 #: admin/departments/community/class_communityProject.inc:45
 msgid "Full name of this project"
@@ -147,7 +148,7 @@ msgstr ""
 
 #: config/community/class_communityConfig.inc:28
 msgid "Community configuration"
-msgstr ""
+msgstr "Ρύθμιση κοινότητας"
 
 #: config/community/class_communityConfig.inc:29
 msgid "FusionDirectory community plugin configuration"
@@ -155,7 +156,7 @@ msgstr ""
 
 #: config/community/class_communityConfig.inc:41
 msgid "Community"
-msgstr ""
+msgstr "Κοινότητα"
 
 #: config/community/class_communityConfig.inc:45
 msgid "Membership type choices"
diff --git a/community/locale/en/fusiondirectory.po b/community/locale/en/fusiondirectory.po
index 8c1011ae666f57f642a1595148100c33a0a49829..802855dcfe86cc1157984a172f38caa982e4868d 100644
--- a/community/locale/en/fusiondirectory.po
+++ b/community/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -86,69 +86,77 @@ msgid "Membership type of this organization"
 msgstr ""
 
 #: admin/departments/community/class_communityOrganization.inc:50
-msgid "Active"
+msgid "Agreement signed"
 msgstr ""
 
 #: admin/departments/community/class_communityOrganization.inc:50
-msgid "Is the membership of this organization active"
+msgid "Did this member returned the agreement signed"
 msgstr ""
 
 #: admin/departments/community/class_communityOrganization.inc:54
-msgid "Hidden"
+msgid "Active"
 msgstr ""
 
 #: admin/departments/community/class_communityOrganization.inc:54
+msgid "Is the membership of this organization active"
+msgstr ""
+
+#: admin/departments/community/class_communityOrganization.inc:58
+msgid "Hidden"
+msgstr ""
+
+#: admin/departments/community/class_communityOrganization.inc:58
 msgid "Should this membership be hidden from listings"
 msgstr ""
 
-#: admin/departments/community/class_communityOrganization.inc:60
+#: admin/departments/community/class_communityOrganization.inc:64
 msgid "Dates"
 msgstr ""
 
-#: admin/departments/community/class_communityOrganization.inc:63
+#: admin/departments/community/class_communityOrganization.inc:67
 msgid "Start date"
 msgstr ""
 
-#: admin/departments/community/class_communityOrganization.inc:63
+#: admin/departments/community/class_communityOrganization.inc:67
 msgid "Date of the beginning"
 msgstr ""
 
-#: admin/departments/community/class_communityOrganization.inc:67
+#: admin/departments/community/class_communityOrganization.inc:71
 msgid "End date"
 msgstr ""
 
-#: admin/departments/community/class_communityOrganization.inc:67
+#: admin/departments/community/class_communityOrganization.inc:71
 msgid "Date of the end"
 msgstr ""
 
-#: admin/departments/community/class_communityOrganization.inc:74
+#: admin/departments/community/class_communityOrganization.inc:78
 msgid "Contact"
 msgstr ""
 
-#: admin/departments/community/class_communityOrganization.inc:77
+#: admin/departments/community/class_communityOrganization.inc:81
 msgid "First name"
 msgstr ""
 
-#: admin/departments/community/class_communityOrganization.inc:81
+#: admin/departments/community/class_communityOrganization.inc:85
 msgid "Last name"
 msgstr ""
 
-#: admin/departments/community/class_communityOrganization.inc:85
+#: admin/departments/community/class_communityOrganization.inc:89
 msgid "Address"
 msgstr ""
 
-#: admin/departments/community/class_communityOrganization.inc:85
+#: admin/departments/community/class_communityOrganization.inc:89
 msgid "A postal address"
 msgstr ""
 
-#: admin/departments/community/class_communityOrganization.inc:89
+#: admin/departments/community/class_communityOrganization.inc:93
 msgid "City"
 msgstr ""
 
-#: admin/departments/community/class_communityOrganization.inc:93
+#: admin/departments/community/class_communityOrganization.inc:97
 msgid "State"
 msgstr ""
 
-#: admin/departments/community/class_communityOrganization.inc:97
+#: admin/departments/community/class_communityOrganization.inc:101
 msgid "Country"
 msgstr ""
diff --git a/community/locale/es/fusiondirectory.po b/community/locale/es/fusiondirectory.po
index f6a18c622c3b89da6857bbd0ed141693bf6b3e0e..b40382e694d4b23909421fbbaffd1a613ef17d7d 100644
--- a/community/locale/es/fusiondirectory.po
+++ b/community/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/departments/community/class_communityOrganization.inc:29
 msgid "Community organization"
diff --git a/community/locale/es_CO/fusiondirectory.po b/community/locale/es_CO/fusiondirectory.po
index c815f6683d3527cedd3c412cda72cbf5d094cb4e..bebda888ab40b4adfd758f68b6ce6e153d4774ba 100644
--- a/community/locale/es_CO/fusiondirectory.po
+++ b/community/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/departments/community/class_communityOrganization.inc:29
 msgid "Community organization"
diff --git a/community/locale/es_VE/fusiondirectory.po b/community/locale/es_VE/fusiondirectory.po
index 79b92e3659cfaa34731a54b31e35d8ce227c94d6..7f13c22512cb89b22e376b9f0a50db63e0bc8c78 100644
--- a/community/locale/es_VE/fusiondirectory.po
+++ b/community/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/departments/community/class_communityOrganization.inc:29
 msgid "Community organization"
diff --git a/community/locale/fa_IR/fusiondirectory.po b/community/locale/fa_IR/fusiondirectory.po
index 4dfd6b792f57d17967bb86b6ccccaa7f2892ee30..d878e9f167bbe9bcbad00114e607d4f75f269be3 100644
--- a/community/locale/fa_IR/fusiondirectory.po
+++ b/community/locale/fa_IR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
diff --git a/community/locale/fi_FI/fusiondirectory.po b/community/locale/fi_FI/fusiondirectory.po
index 2dd27c7afd9dfcfef614d79945d1cb303f75cbbb..85a24992c476ace880ceb6f192af055bfc5a1371 100644
--- a/community/locale/fi_FI/fusiondirectory.po
+++ b/community/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/community/locale/fr/fusiondirectory.po b/community/locale/fr/fusiondirectory.po
index e821abfdaa9549a21a0a4700695b499f6d9258a5..d35351b2e9eeeef8ccbaa7cf55cec0606a7eae1d 100644
--- a/community/locale/fr/fusiondirectory.po
+++ b/community/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/departments/community/class_communityOrganization.inc:29
 msgid "Community organization"
diff --git a/community/locale/hu_HU/fusiondirectory.po b/community/locale/hu_HU/fusiondirectory.po
index 61ec5b1d0c721a8bcae54ffbf7bb8cda2b99d768..066a2148194c98b62c729391374e8867f6363321 100644
--- a/community/locale/hu_HU/fusiondirectory.po
+++ b/community/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/community/locale/id/fusiondirectory.po b/community/locale/id/fusiondirectory.po
index e61f7ade733aff2a089462e1effc71f7e680d5e7..677478ad8d97b2d478c29245480d8924452724c4 100644
--- a/community/locale/id/fusiondirectory.po
+++ b/community/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/community/locale/it_IT/fusiondirectory.po b/community/locale/it_IT/fusiondirectory.po
index 626621a88fb91e2af36ebb2872e8ae2565019743..e9503407c730a26a7785a5b1bf40dc780148e0f2 100644
--- a/community/locale/it_IT/fusiondirectory.po
+++ b/community/locale/it_IT/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: Paola Penati <paola.penati@opensides.be>, 2018\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -20,7 +20,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/departments/community/class_communityOrganization.inc:29
 msgid "Community organization"
diff --git a/community/locale/ja/fusiondirectory.po b/community/locale/ja/fusiondirectory.po
index ea27177c2616f011c8269da404a2ff75537e90d9..97c02befcd8895b414dc019c25a8ee0beb01b69c 100644
--- a/community/locale/ja/fusiondirectory.po
+++ b/community/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/community/locale/ko/fusiondirectory.po b/community/locale/ko/fusiondirectory.po
index 833b0133241168f5cc30a8b1c029dcd24a9dbd71..10eeb26679f75e102bfed752a83ffbb8213fa26d 100644
--- a/community/locale/ko/fusiondirectory.po
+++ b/community/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/community/locale/lv/fusiondirectory.po b/community/locale/lv/fusiondirectory.po
index 0b655b0225f43371c10e1f24e1e4d81dbff75a4f..6c2245be0ef1f2f2968a7c7f494b0d53eb7e411d 100644
--- a/community/locale/lv/fusiondirectory.po
+++ b/community/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/community/locale/nb/fusiondirectory.po b/community/locale/nb/fusiondirectory.po
index c84c594b9361a88eed15e96eb4aac0cb32a1bdce..a98a657d8813c85bab09bc52c6b07243ffa05033 100644
--- a/community/locale/nb/fusiondirectory.po
+++ b/community/locale/nb/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
 "MIME-Version: 1.0\n"
diff --git a/community/locale/nl/fusiondirectory.po b/community/locale/nl/fusiondirectory.po
index f4e14d1b35fd3942737d2311a36be4411e897032..a87ee6da307148352914a1a972db8deb91d84e49 100644
--- a/community/locale/nl/fusiondirectory.po
+++ b/community/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/community/locale/pl/fusiondirectory.po b/community/locale/pl/fusiondirectory.po
index dd44e993cea136ee64b7f19318069933e3af5203..106ea1273f6d31744f0fced481d2d42e12d1a719 100644
--- a/community/locale/pl/fusiondirectory.po
+++ b/community/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/community/locale/pt/fusiondirectory.po b/community/locale/pt/fusiondirectory.po
index 300d358a17c1a5dfefbcf7ce263dd290df4b6751..c6e73b17b3401958f3925ed64a950949068ba694 100644
--- a/community/locale/pt/fusiondirectory.po
+++ b/community/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/departments/community/class_communityOrganization.inc:29
 msgid "Community organization"
diff --git a/community/locale/pt_BR/fusiondirectory.po b/community/locale/pt_BR/fusiondirectory.po
index e73eb629b47a66269407e077c6a1feaf9a444b74..010ebd7e2d34b051e21de5c3889ef80173c8a4e4 100644
--- a/community/locale/pt_BR/fusiondirectory.po
+++ b/community/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/departments/community/class_communityOrganization.inc:29
 msgid "Community organization"
diff --git a/community/locale/ru/fusiondirectory.po b/community/locale/ru/fusiondirectory.po
index 9904ae21c4a6c072556c34fd9bc557720308fee3..551daa4374a3c62def43fdc708e3c805e617b2a8 100644
--- a/community/locale/ru/fusiondirectory.po
+++ b/community/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/community/locale/ru@petr1708/fusiondirectory.po b/community/locale/ru@petr1708/fusiondirectory.po
index 8d9fb925cb0cacb59e423e734fe40e9bebf4315d..abb304f020d87503544154ad1ab925d159fb53f9 100644
--- a/community/locale/ru@petr1708/fusiondirectory.po
+++ b/community/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/community/locale/sv/fusiondirectory.po b/community/locale/sv/fusiondirectory.po
index fe9be89e68fe58cf149a69cbb23f510bf468c61c..bcd8a66d4112d370ffe4db8284fa12f4e2e5606e 100644
--- a/community/locale/sv/fusiondirectory.po
+++ b/community/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/community/locale/tr_TR/fusiondirectory.po b/community/locale/tr_TR/fusiondirectory.po
index cc6e462c816110f43b2e42420a3c7a8a188222bd..0b95d5abc735454f1f5b215a16f3426d2c2e7422 100644
--- a/community/locale/tr_TR/fusiondirectory.po
+++ b/community/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/community/locale/ug/fusiondirectory.po b/community/locale/ug/fusiondirectory.po
index 0936c7fa692798295ee225e19e9cc0ecb449b140..aac363eed36192945e6958a10b03c750206f3487 100644
--- a/community/locale/ug/fusiondirectory.po
+++ b/community/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/departments/community/class_communityOrganization.inc:29
 msgid "Community organization"
diff --git a/community/locale/vi_VN/fusiondirectory.po b/community/locale/vi_VN/fusiondirectory.po
index d10112480b3e4198c803b2413d24bb76943ee9a7..c8d4bbcfe0c4278c34abbc3e9443e3d8b4d5b436 100644
--- a/community/locale/vi_VN/fusiondirectory.po
+++ b/community/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/community/locale/zh/fusiondirectory.po b/community/locale/zh/fusiondirectory.po
index 2b0359b99c668f8d2992bf21434361fc597bbb40..ad106b66d1bf58538d04961d8d2975e64d02c8b1 100644
--- a/community/locale/zh/fusiondirectory.po
+++ b/community/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/community/locale/zh_TW/fusiondirectory.po b/community/locale/zh_TW/fusiondirectory.po
index 5990db173a0b2b3c2266544884e4c79e90dc7de1..c5a0734f4432897a35cfcb77deee23962e3a345a 100644
--- a/community/locale/zh_TW/fusiondirectory.po
+++ b/community/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:06+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/cyrus/admin/systems/services/cyrus/class_serviceCyrus.inc b/cyrus/admin/systems/services/cyrus/class_serviceCyrus.inc
index e65701a8ccd1cecaca3cf3ac4488ab6ef2330769..0363f4b5d5a24401a0b95fd8e2315fdf2f321de1 100644
--- a/cyrus/admin/systems/services/cyrus/class_serviceCyrus.inc
+++ b/cyrus/admin/systems/services/cyrus/class_serviceCyrus.inc
@@ -21,18 +21,18 @@
 
 class serviceCyrus extends simpleMailMethodService
 {
-  var $objectclasses = array('fdCyrusServer');
+  var $objectclasses = ['fdCyrusServer'];
 
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Cyrus (IMAP/POP3)'),
       'plDescription'   => _('Cyrus (IMAP/POP3)').' ('._('Services').')',
       'plIcon'          => 'geticon.php?context=applications&icon=cyrus&size=16',
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   /*!
@@ -40,14 +40,14 @@ class serviceCyrus extends simpleMailMethodService
    */
   static function getAttributesInfo ()
   {
-    return array (
-      'cyrus' => array (
+    return  [
+      'cyrus' => [
         'name'  => _('Cyrus settings'),
-        'attrs' => array (
-          new CompositeAttribute (
+        'attrs' => [
+          new CompositeAttribute(
             _('Connect URL for Cyrus server'),
             'fdCyrusConnect',
-            array(
+            [
               new StringAttribute(
                 _('Hostname'), _('Hostname of the Cyrus server'),
                 'cyrusConnectURL', TRUE
@@ -60,35 +60,35 @@ class serviceCyrus extends simpleMailMethodService
               new SelectAttribute(
                 _('Option'), _('Options for contacting Cyrus server'),
                 'cyrusConnectOptions1', TRUE,
-                array('notls', 'tls', 'ssl'), 'notls'
+                ['notls', 'tls', 'ssl'], 'notls'
               ),
               new SelectAttribute(
                 _('Valide certificats'), _('Weither or not to validate server certificate on connexion'),
                 'cyrusConnectOptions2', FALSE,
-                array('', '/validate-cert', '/novalidate-cert'), '',
-                array('', 'validate',       'no-validate')
+                ['', '/validate-cert', '/novalidate-cert'], '',
+                ['', 'validate',       'no-validate']
               )
-            ),
+            ],
             '/^{(.*):(\\d+)\\/([^\\/]+)(.*)}$/',
             '{%s:%d/%s%s}'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Admin user'), _('Imap server admin user'),
             'fdCyrusAdmin', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Password'), _('Admin user password'),
             'fdCyrusPassword', TRUE
           ),
-        )
-      ),
-      'sieve' => array (
+        ]
+      ],
+      'sieve' => [
         'name'  => _('Sieve settings'),
-        'attrs' => array (
-          new CompositeAttribute (
+        'attrs' => [
+          new CompositeAttribute(
             _('Sieve connect URL for Cyrus server'),
             'fdCyrusSieveServer',
-            array(
+            [
               new StringAttribute(
                 _('Hostname'), _('Hostname of the Cyrus sieve server'),
                 'cyrusSieveConnectURL', TRUE
@@ -101,15 +101,15 @@ class serviceCyrus extends simpleMailMethodService
               new SelectAttribute(
                 _('Option'), _('Options for contacting Cyrus sieve server'),
                 'cyrusSieveConnectOptions', TRUE,
-                array('notls', 'tls', 'ssl'), 'notls'
+                ['notls', 'tls', 'ssl'], 'notls'
               ),
-            ),
+            ],
             '/^{(.*):(\\d+)\\/([^\\/]+)}$/',
             '{%s:%d/%s}'
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 }
 ?>
diff --git a/cyrus/locale/af_ZA/fusiondirectory.po b/cyrus/locale/af_ZA/fusiondirectory.po
index 765d8e4eb23e8234375d0e5e0efd44fd889015cc..e3ddcfadf57aa351256f753035d18310dc6787fd 100644
--- a/cyrus/locale/af_ZA/fusiondirectory.po
+++ b/cyrus/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/cyrus/locale/ar/fusiondirectory.po b/cyrus/locale/ar/fusiondirectory.po
index 056b7bae685ae4cd33e2dde875491c499801c972..3b4cd0172f95ead0070a641cd65263ef8e344035 100644
--- a/cyrus/locale/ar/fusiondirectory.po
+++ b/cyrus/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/cyrus/locale/ca/fusiondirectory.po b/cyrus/locale/ca/fusiondirectory.po
index ca231b590f22a73a2ceadd00f0eb33d268f1b753..69282d8ba747e32f1663d77e41b8b687cac96d13 100644
--- a/cyrus/locale/ca/fusiondirectory.po
+++ b/cyrus/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/cyrus/locale/cs_CZ/fusiondirectory.po b/cyrus/locale/cs_CZ/fusiondirectory.po
index ccca9b44562d66817284782e7e4ee34039300c6e..48e0e19d265caa3385fa158d249ae16285806047 100644
--- a/cyrus/locale/cs_CZ/fusiondirectory.po
+++ b/cyrus/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/cyrus/locale/de/fusiondirectory.po b/cyrus/locale/de/fusiondirectory.po
index e4a1a260b35624a7e5a5fe07f85a4f61ac39cfff..aeb14afdfa1bcb1fe639390b82808e0f3ab476a7 100644
--- a/cyrus/locale/de/fusiondirectory.po
+++ b/cyrus/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/cyrus/locale/el_GR/fusiondirectory.po b/cyrus/locale/el_GR/fusiondirectory.po
index 2e5f20c8579f50b939436106842494cfc85e2e02..e62b72f533cae510a98efeb12b910df0565acde3 100644
--- a/cyrus/locale/el_GR/fusiondirectory.po
+++ b/cyrus/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/cyrus/locale/en/fusiondirectory.po b/cyrus/locale/en/fusiondirectory.po
index b639fb3278bdb1d0a3bc4d15b403e483aa609d44..2190670defa293e52283d98812f8cad102b78ddb 100644
--- a/cyrus/locale/en/fusiondirectory.po
+++ b/cyrus/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,54 +17,6 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: personal/mail/mail-methods/class_mail-methods-cyrus.inc:50
-msgid "There are no IMAP compatible mail servers defined!"
-msgstr ""
-
-#: personal/mail/mail-methods/class_mail-methods-cyrus.inc:55
-msgid "Mail server for this account is invalid!"
-msgstr ""
-
-#: personal/mail/mail-methods/class_mail-methods-cyrus.inc:241
-msgid "IMAP error"
-msgstr ""
-
-#: personal/mail/mail-methods/class_mail-methods-cyrus.inc:241
-#, php-format
-msgid "Cannot modify IMAP mailbox quota: %s"
-msgstr ""
-
-#: personal/mail/mail-methods/class_mail-methods-cyrus.inc:315
-msgid "Mail info"
-msgstr ""
-
-#: personal/mail/mail-methods/class_mail-methods-cyrus.inc:316
-#, php-format
-msgid ""
-"LDAP entry has been removed but cyrus mailbox (%s) is kept.\n"
-"Please delete it manually!"
-msgstr ""
-
-#: personal/mail/mail-methods/class_mail-methods-cyrus.inc:404
-#: personal/mail/mail-methods/class_mail-methods-cyrus.inc:442
-msgid "The module imap_getacl is not implemented!"
-msgstr ""
-
-#: personal/mail/mail-methods/class_mail-methods-cyrus.inc:510
-#, php-format
-msgid "Cannot retrieve SIEVE script: %s"
-msgstr ""
-
-#: personal/mail/mail-methods/class_mail-methods-cyrus.inc:578
-#, php-format
-msgid "Cannot store SIEVE script: %s"
-msgstr ""
-
-#: personal/mail/mail-methods/class_mail-methods-cyrus.inc:585
-#, php-format
-msgid "Cannot activate SIEVE script: %s"
-msgstr ""
-
 #: admin/systems/services/cyrus/class_serviceCyrus.inc:30
 #: admin/systems/services/cyrus/class_serviceCyrus.inc:31
 msgid "Cyrus (IMAP/POP3)"
@@ -152,3 +104,51 @@ msgstr ""
 #: admin/systems/services/cyrus/class_serviceCyrus.inc:102
 msgid "Options for contacting Cyrus sieve server"
 msgstr ""
+
+#: personal/mail/mail-methods/class_mail-methods-cyrus.inc:50
+msgid "There are no IMAP compatible mail servers defined!"
+msgstr ""
+
+#: personal/mail/mail-methods/class_mail-methods-cyrus.inc:55
+msgid "Mail server for this account is invalid!"
+msgstr ""
+
+#: personal/mail/mail-methods/class_mail-methods-cyrus.inc:241
+msgid "IMAP error"
+msgstr ""
+
+#: personal/mail/mail-methods/class_mail-methods-cyrus.inc:241
+#, php-format
+msgid "Cannot modify IMAP mailbox quota: %s"
+msgstr ""
+
+#: personal/mail/mail-methods/class_mail-methods-cyrus.inc:315
+msgid "Mail info"
+msgstr ""
+
+#: personal/mail/mail-methods/class_mail-methods-cyrus.inc:316
+#, php-format
+msgid ""
+"LDAP entry has been removed but cyrus mailbox (%s) is kept.\n"
+"Please delete it manually!"
+msgstr ""
+
+#: personal/mail/mail-methods/class_mail-methods-cyrus.inc:404
+#: personal/mail/mail-methods/class_mail-methods-cyrus.inc:442
+msgid "The module imap_getacl is not implemented!"
+msgstr ""
+
+#: personal/mail/mail-methods/class_mail-methods-cyrus.inc:510
+#, php-format
+msgid "Cannot retrieve SIEVE script: %s"
+msgstr ""
+
+#: personal/mail/mail-methods/class_mail-methods-cyrus.inc:578
+#, php-format
+msgid "Cannot store SIEVE script: %s"
+msgstr ""
+
+#: personal/mail/mail-methods/class_mail-methods-cyrus.inc:585
+#, php-format
+msgid "Cannot activate SIEVE script: %s"
+msgstr ""
diff --git a/cyrus/locale/es/fusiondirectory.po b/cyrus/locale/es/fusiondirectory.po
index c41fa4b8fc17b3ed5da93f0677174d3b1e99ca52..ed9f9d92c1d4245cb0486196fced2daaf8f66db8 100644
--- a/cyrus/locale/es/fusiondirectory.po
+++ b/cyrus/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/cyrus/class_serviceCyrus.inc:30
 #: admin/systems/services/cyrus/class_serviceCyrus.inc:31
diff --git a/cyrus/locale/es_CO/fusiondirectory.po b/cyrus/locale/es_CO/fusiondirectory.po
index 46f452ed360c80583c55ae454fe1c9e461ff5a07..35489b1d0fe542fbc181c164ba04e3e7da10b6fb 100644
--- a/cyrus/locale/es_CO/fusiondirectory.po
+++ b/cyrus/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/cyrus/class_serviceCyrus.inc:30
 #: admin/systems/services/cyrus/class_serviceCyrus.inc:31
diff --git a/cyrus/locale/es_VE/fusiondirectory.po b/cyrus/locale/es_VE/fusiondirectory.po
index 3615a365a9dbbfc1a1645319bf03091e7a7149ac..328967b70abc2fa836fdaee447e92e84bd3a96d4 100644
--- a/cyrus/locale/es_VE/fusiondirectory.po
+++ b/cyrus/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/cyrus/class_serviceCyrus.inc:30
 #: admin/systems/services/cyrus/class_serviceCyrus.inc:31
diff --git a/cyrus/locale/fa_IR/fusiondirectory.po b/cyrus/locale/fa_IR/fusiondirectory.po
index 7a501937be2efa506831adf3a5edb37508681326..468d196cc30105da49a467d6cb3b269158cd190e 100644
--- a/cyrus/locale/fa_IR/fusiondirectory.po
+++ b/cyrus/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/cyrus/locale/fi_FI/fusiondirectory.po b/cyrus/locale/fi_FI/fusiondirectory.po
index db0a309c1a5076ee4476e5bd5515fa6c740e13cd..aee6cee27ccaafdb45b7d0b996f7564b7cb84fcd 100644
--- a/cyrus/locale/fi_FI/fusiondirectory.po
+++ b/cyrus/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/cyrus/locale/fr/fusiondirectory.po b/cyrus/locale/fr/fusiondirectory.po
index d38a7c5f5b2c38c0ec340be94d1c2060e1114a6b..9d33666344ee0dac6d2a0eda3df4a0c8210129b5 100644
--- a/cyrus/locale/fr/fusiondirectory.po
+++ b/cyrus/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/cyrus/class_serviceCyrus.inc:30
 #: admin/systems/services/cyrus/class_serviceCyrus.inc:31
diff --git a/cyrus/locale/hu_HU/fusiondirectory.po b/cyrus/locale/hu_HU/fusiondirectory.po
index 30e0df9c512f04724512bba913e269ac3256c254..65c9a8cdc81f6a62c4c8af925a5bfe3abfd67b42 100644
--- a/cyrus/locale/hu_HU/fusiondirectory.po
+++ b/cyrus/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/cyrus/locale/id/fusiondirectory.po b/cyrus/locale/id/fusiondirectory.po
index 5a0f8967911c7f674e2413c373b96345a2845397..9757977d7efa14610a1347b9f24c1d36d20f395c 100644
--- a/cyrus/locale/id/fusiondirectory.po
+++ b/cyrus/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/cyrus/locale/it_IT/fusiondirectory.po b/cyrus/locale/it_IT/fusiondirectory.po
index 98b9fcc18e2d1b4e5171a1acf0bd29adfe33fb72..7ccacc2538e995eb3e464f2df3ec707132916e96 100644
--- a/cyrus/locale/it_IT/fusiondirectory.po
+++ b/cyrus/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/cyrus/class_serviceCyrus.inc:30
 #: admin/systems/services/cyrus/class_serviceCyrus.inc:31
diff --git a/cyrus/locale/ja/fusiondirectory.po b/cyrus/locale/ja/fusiondirectory.po
index 747aec762af803d589f43fa8a9118dfda713c8c2..6bead7c85ad0bc26b8d5bad1600fff378e2be8cc 100644
--- a/cyrus/locale/ja/fusiondirectory.po
+++ b/cyrus/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/cyrus/locale/ko/fusiondirectory.po b/cyrus/locale/ko/fusiondirectory.po
index d6786c3e84421dad87df31555ef982748fab01cb..24431f6ea344c1829ffe0c7c19a11f87d3db9d85 100644
--- a/cyrus/locale/ko/fusiondirectory.po
+++ b/cyrus/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/cyrus/locale/lv/fusiondirectory.po b/cyrus/locale/lv/fusiondirectory.po
index 17422f763e82296b528ca809735df14ee8fe56f0..d24ab18e2a39a0a4fbaa2e4418d1dd00a5180020 100644
--- a/cyrus/locale/lv/fusiondirectory.po
+++ b/cyrus/locale/lv/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
 "MIME-Version: 1.0\n"
diff --git a/cyrus/locale/nb/fusiondirectory.po b/cyrus/locale/nb/fusiondirectory.po
index 43d93faefaefdfa413bb3dcf1afde9e588e1f000..6833387bee8ac9bb834b4ae6cab50dc57ba70716 100644
--- a/cyrus/locale/nb/fusiondirectory.po
+++ b/cyrus/locale/nb/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
 "MIME-Version: 1.0\n"
diff --git a/cyrus/locale/nl/fusiondirectory.po b/cyrus/locale/nl/fusiondirectory.po
index bc740d31a78581632532baee0b2a34d7e5c119a4..b4a4028d8ed18cc34bac3f88e1b9e9681e324033 100644
--- a/cyrus/locale/nl/fusiondirectory.po
+++ b/cyrus/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/cyrus/locale/pl/fusiondirectory.po b/cyrus/locale/pl/fusiondirectory.po
index 396bf4aa9f2488369087cc230f38cbe047867fdc..787a9b159650915f6749b0ec18b542a6fc8c3adf 100644
--- a/cyrus/locale/pl/fusiondirectory.po
+++ b/cyrus/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/cyrus/locale/pt/fusiondirectory.po b/cyrus/locale/pt/fusiondirectory.po
index cf121d31667cd53a49955e23064ca3a610420d65..7a974747fcb02a606eeb370218a4eadea5aa1199 100644
--- a/cyrus/locale/pt/fusiondirectory.po
+++ b/cyrus/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/cyrus/class_serviceCyrus.inc:30
 #: admin/systems/services/cyrus/class_serviceCyrus.inc:31
diff --git a/cyrus/locale/pt_BR/fusiondirectory.po b/cyrus/locale/pt_BR/fusiondirectory.po
index a98739c21c0e567f9c977274c59d1df8b16b50e4..d79a00e84a18f31ccbaf54fcbe360053dc0eee58 100644
--- a/cyrus/locale/pt_BR/fusiondirectory.po
+++ b/cyrus/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/cyrus/class_serviceCyrus.inc:30
 #: admin/systems/services/cyrus/class_serviceCyrus.inc:31
diff --git a/cyrus/locale/ru/fusiondirectory.po b/cyrus/locale/ru/fusiondirectory.po
index 797039c2f7bd1ed94ac8cfccb5d9ca1291186349..fc3c1c8ac4bff9eafc78efee1f2d59f30e1076ee 100644
--- a/cyrus/locale/ru/fusiondirectory.po
+++ b/cyrus/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/cyrus/locale/ru@petr1708/fusiondirectory.po b/cyrus/locale/ru@petr1708/fusiondirectory.po
index 04647fd250ea35281755ade1ebb17e45b8b4874a..ce728fc08d010c9638eaa665873d1051f2217a4c 100644
--- a/cyrus/locale/ru@petr1708/fusiondirectory.po
+++ b/cyrus/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/cyrus/locale/sv/fusiondirectory.po b/cyrus/locale/sv/fusiondirectory.po
index 5d207f725d42a839a786af9bdaf860e6982e7363..f57436c64197ec7ccbf95fabb87ce62552563ab3 100644
--- a/cyrus/locale/sv/fusiondirectory.po
+++ b/cyrus/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/cyrus/locale/tr_TR/fusiondirectory.po b/cyrus/locale/tr_TR/fusiondirectory.po
index 95b002b29f9108f8d4a679c54aa5677e76cee8f2..12219f6c1273df9c792df817449fc24c480e5120 100644
--- a/cyrus/locale/tr_TR/fusiondirectory.po
+++ b/cyrus/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2021
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2021\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -79,7 +83,7 @@ msgstr ""
 
 #: admin/systems/services/cyrus/class_serviceCyrus.inc:80
 msgid "Password"
-msgstr ""
+msgstr "Parola"
 
 #: admin/systems/services/cyrus/class_serviceCyrus.inc:80
 msgid "Admin user password"
diff --git a/cyrus/locale/ug/fusiondirectory.po b/cyrus/locale/ug/fusiondirectory.po
index e65667117e60e4323932b1bd818f65a2d69f6b14..c2a65c91760d42d12bfa96ca0e99b3b72612096b 100644
--- a/cyrus/locale/ug/fusiondirectory.po
+++ b/cyrus/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/systems/services/cyrus/class_serviceCyrus.inc:30
 #: admin/systems/services/cyrus/class_serviceCyrus.inc:31
diff --git a/cyrus/locale/vi_VN/fusiondirectory.po b/cyrus/locale/vi_VN/fusiondirectory.po
index 210dde67cd39999e319dc4dd0a0165390dd9c62f..021828034a3edbf1b407a94bc80c8795f85e0596 100644
--- a/cyrus/locale/vi_VN/fusiondirectory.po
+++ b/cyrus/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/cyrus/locale/zh/fusiondirectory.po b/cyrus/locale/zh/fusiondirectory.po
index ccd971d706d1ba70b8bc6c1f64044de4aa0fc4e2..f243aa6e31aa8166df9e4ca4f68844eaa71b608e 100644
--- a/cyrus/locale/zh/fusiondirectory.po
+++ b/cyrus/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/cyrus/locale/zh_TW/fusiondirectory.po b/cyrus/locale/zh_TW/fusiondirectory.po
index 5058c995d30ef0c75baf0f2f25bb6145000be67f..433606d778b0506e5e992f6f616e8b21ef99c3e0 100644
--- a/cyrus/locale/zh_TW/fusiondirectory.po
+++ b/cyrus/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/cyrus/personal/mail/mail-methods/class_mail-methods-cyrus.inc b/cyrus/personal/mail/mail-methods/class_mail-methods-cyrus.inc
index bd68e7bc30695cd1367f9cd68c63701df88e4928..0c2977ce8b1716b5b268aa726b20e5b493e0506c 100644
--- a/cyrus/personal/mail/mail-methods/class_mail-methods-cyrus.inc
+++ b/cyrus/personal/mail/mail-methods/class_mail-methods-cyrus.inc
@@ -21,7 +21,7 @@
 
 class mailMethodCyrus extends mailMethod
 {
-  protected $ServerList   = array();
+  protected $ServerList   = [];
   protected $imap_handle  = NULL;
   protected $quota_loaded = FALSE;
 
@@ -35,25 +35,25 @@ class mailMethodCyrus extends mailMethod
   protected $enableVacationRange    = FALSE;
   protected $enableFolderTypes      = FALSE;
 
-  protected function init()
+  protected function init ()
   {
     parent::init();
     $this->ServerList = parent::getMailServers();
   }
 
-  public function connect()
+  public function connect ()
   {
     global $config;
     parent::connect();
 
     if (!count($this->ServerList)) {
       $this->error = _("There are no IMAP compatible mail servers defined!");
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,
           "<b>IMAP: No mail servers configured, check systems->server->service->imap.</b>", "");
       return FALSE;
     } elseif (!isset($this->ServerList[$this->parent->gosaMailServer])) {
       $this->error = _("Mail server for this account is invalid!");
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,
           "<b>IMAP: The selected mail server '".$this->parent->gosaMailServer."' is invalid.</b>", "");
       return FALSE;
     } else {
@@ -75,7 +75,7 @@ class mailMethodCyrus extends mailMethod
         else the FusionDirectory UI may freeze for 60 seconds.
        (PHP default is 'default_socket_timeout = 60') */
     $timeout = $config->get_cfg_value("imapTimeout", 10);
-    @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $timeout,
+    @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $timeout,
           "<b>IMAP: Setting imap connect timeout to</b> (seconds)");
     imap_timeout(1, $timeout);
 
@@ -85,24 +85,24 @@ class mailMethodCyrus extends mailMethod
     if ($this->imap_handle === FALSE) {
       $this->error = imap_last_error();
 
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>Failed</b> :".imap_last_error(),
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>Failed</b> :".imap_last_error(),
         "<b>IMAP:</b> ".$cfg['admin']."@".$cfg['connect']);
 
       $this->connected = FALSE;
       return FALSE;
     }
-    @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>successful</b>",
+    @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>successful</b>",
         "<b>IMAP:</b> ".$cfg['admin']."@".$cfg['connect']);
     $this->connected = TRUE;
 
     return TRUE;
   }
 
-  public function account_exists()
+  public function account_exists ()
   {
     if (!$this->is_connected() || !$this->imap_handle) {
       trigger_error("Method not connected, catch error.");
-      return array();
+      return [];
     }
 
     /* Get server config */
@@ -110,28 +110,28 @@ class mailMethodCyrus extends mailMethod
     $list = @imap_listmailbox($this->imap_handle, $cfg["connect"], $this->account_id);
     $res  = (is_array($list) && count($list));
     if ($res) {
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "", "<b>IMAP: Account exists in imap server.</b>");
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "", "<b>IMAP: Account exists in imap server.</b>");
     } else {
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "", "<b>IMAP: Account seems NOT to exists in imap server.</b>");
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "", "<b>IMAP: Account seems NOT to exists in imap server.</b>");
     }
     return $res;
   }
 
-  public function disconnect()
+  public function disconnect ()
   {
     parent::disconnect();
     if ($this->is_connected()) {
-      @imap_close ($this->imap_handle);
+      @imap_close($this->imap_handle);
     }
   }
 
-  public function is_connected()
+  public function is_connected ()
   {
     $ret = parent::is_connected();
     return ($ret && $this->imap_handle);
   }
 
-  protected function loadQuota()
+  protected function loadQuota ()
   {
     if (!$this->quotaEnabled()) {
       return TRUE;
@@ -144,7 +144,7 @@ class mailMethodCyrus extends mailMethod
     $this->reset_error();
 
     /* Load quota settings */
-    $result = array("quotaUsage" => "","gosaMailQuota" => "");
+    $result = ["quotaUsage" => "","gosaMailQuota" => ""];
     $quota_value = @imap_get_quota($this->imap_handle, $this->account_id);
 
     /* Reset error queue, imap_qet_quota() will fail if the quota wasn't set yet.
@@ -184,15 +184,15 @@ class mailMethodCyrus extends mailMethod
       } else {
         $quota = "(".$this->quotaUsage." / ".$this->quotaValue.")";
       }
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $quota,
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $quota,
           "<b>IMAP: Successfully received account quota</b>");
     } else {
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, imap_last_error(),
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, imap_last_error(),
           "<b>IMAP: Failed to receive account quota</b>");
     }
   }
 
-  public function getQuota($quota)
+  public function getQuota ($quota)
   {
     parent::getQuota($quota);
     if (!$this->quota_loaded) {
@@ -202,7 +202,7 @@ class mailMethodCyrus extends mailMethod
     return $this->quotaValue;
   }
 
-  public function getQuotaUsage()
+  public function getQuotaUsage ()
   {
     parent::getQuotaUsage();
     if (!$this->quota_loaded) {
@@ -212,7 +212,7 @@ class mailMethodCyrus extends mailMethod
     return $this->quotaUsage;
   }
 
-  public function setQuota($number)
+  public function setQuota ($number)
   {
     parent::setQuota($number);
 
@@ -240,16 +240,16 @@ class mailMethodCyrus extends mailMethod
     if (!imap_set_quota($this->imap_handle, $this->account_id, $this->quotaValue)) {
       msg_dialog::display(_("IMAP error"), sprintf(_("Cannot modify IMAP mailbox quota: %s"),
             '<br><br><i>'.imap_last_error().'</i>'), ERROR_DIALOG);
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>".$this->account_id.": (".$debug_number.")</b>",
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>".$this->account_id.": (".$debug_number.")</b>",
           "<b>IMAP: Set account quota</b> on server '".$this->parent->gosaMailServer."' <b>".imap_last_error()."</b>");
       return FALSE;
     }
-    @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>".$this->account_id.": (".$debug_number.")</b>",
+    @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>".$this->account_id.": (".$debug_number.")</b>",
         "<b>IMAP: Set account quota</b> on server :".$this->parent->gosaMailServer);
     return TRUE;
   }
 
-  public function updateMailbox()
+  public function updateMailbox ()
   {
     global $config;
     parent::updateMailbox();
@@ -259,12 +259,12 @@ class mailMethodCyrus extends mailMethod
       return FALSE;
     }
 
-    $this->build_account_id ();
+    $this->build_account_id();
     if ($this->is_connected()) {
       $cfg  = $this->ServerList[$this->parent->gosaMailServer];
       $list = imap_listmailbox($this->imap_handle, $cfg["connect"], $this->account_id);
       if ($list === FALSE) {
-        @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>".$this->account_id."</b>",
+        @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>".$this->account_id."</b>",
           "<b>IMAP: Add/Update account</b> on server :".$this->parent->gosaMailServer);
         if (!imap_createmailbox($this->imap_handle, $cfg["connect"].$this->account_id)) {
           $this->error = imap_last_error();
@@ -278,7 +278,7 @@ class mailMethodCyrus extends mailMethod
 
           // Walk thru list of specified folders
           foreach ($folders as $folder) {
-            @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, '<b>'.$this->account_id.'</b>',
+            @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, '<b>'.$this->account_id.'</b>',
               '<b>IMAP: Add/Update account folder '.$folder.'</b> on server :'.$this->parent->gosaMailServer);
             if (!imap_createmailbox($this->imap_handle, $cfg['connect'].$this->account_id.$cyrus_delim.$folder)) {
               $this->error = imap_last_error();
@@ -291,7 +291,7 @@ class mailMethodCyrus extends mailMethod
     return TRUE;
   }
 
-  public function deleteMailbox()
+  public function deleteMailbox ()
   {
     global $config;
     parent::deleteMailbox();
@@ -301,10 +301,10 @@ class mailMethodCyrus extends mailMethod
       return FALSE;
     }
 
-    $this->build_account_id ();
+    $this->build_account_id();
 
     $cfg = $this->ServerList[$this->parent->gosaMailServer];
-    @imap_setacl ($this->imap_handle, $this->account_id, $cfg["admin"], "lrswipcda");
+    @imap_setacl($this->imap_handle, $this->account_id, $cfg["admin"], "lrswipcda");
 
     if ($config->get_cfg_value("cyrusDeleteMailbox", "TRUE") == "TRUE") {
       if (!imap_deletemailbox($this->imap_handle, $cfg["connect"].$this->account_id)) {
@@ -319,14 +319,14 @@ class mailMethodCyrus extends mailMethod
     return TRUE;
   }
 
-  public function getMailboxList()
+  public function getMailboxList ()
   {
     if (!$this->is_connected() || !$this->imap_handle) {
       trigger_error("Method not connected, catch error.");
-      return array();
+      return [];
     }
 
-    $result = array();
+    $result = [];
 
     /* Get server config */
     $cfg = $this->ServerList[$this->parent->gosaMailServer];
@@ -371,18 +371,18 @@ class mailMethodCyrus extends mailMethod
         if ($with_domain) {
           $str = trim(preg_replace("/\@.*$/", "", $str));
         }
-        $str = preg_replace ("/^.*".preg_quote($folder, '/')."/", "INBOX",
+        $str = preg_replace("/^.*".preg_quote($folder, '/')."/", "INBOX",
           mb_convert_encoding($str, "UTF-8", "UTF7-IMAP"));
         $result[] = $str;
       }
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, trim(implode($result, ", "), ", "),
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, trim(implode($result, ", "), ", "),
           "<b>IMAP: Received mailbox folders.</b>");
       $this->error = imap_last_error();
     } else {
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, imap_last_error(),
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, imap_last_error(),
           "<b>IMAP: Cannot receive mailbox folders.</b>");
       $this->error = imap_last_error();
-      return array();
+      return [];
     }
 
     /* Append "INBOX" to the folder array if result is empty and request comes from user dialog */
@@ -395,14 +395,14 @@ class mailMethodCyrus extends mailMethod
 
   /*! \brief  Returns configured acls
    */
-  public function getFolderACLs($folder_acls)
+  public function getFolderACLs ($folder_acls)
   {
     $this->reset_error();
 
     /* imap_getacl available? */
     if (!function_exists('imap_getacl')) {
       $this->error = _("The module imap_getacl is not implemented!");
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "The imap_getacl module is missing!",
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "The imap_getacl module is missing!",
           "<b>IMAP: Cannot set folder acls.</b>");
       return $folder_acls;
     }
@@ -410,7 +410,7 @@ class mailMethodCyrus extends mailMethod
     /* Get ACLs and merge them with the already given acls (ldap)
      */
     $this->build_account_id();
-    $acls = imap_getacl ($this->imap_handle, $this->account_id);
+    $acls = imap_getacl($this->imap_handle, $this->account_id);
     foreach ($acls as $user => $acl) {
       if ($user == "anyone") {
         // Map to internal placeholder
@@ -433,14 +433,14 @@ class mailMethodCyrus extends mailMethod
 
   /*! \brief  Write ACLs back to imap or what ever
    */
-  public function setFolderACLs($permissions)
+  public function setFolderACLs ($permissions)
   {
     $this->reset_error();
 
     /* imap_getacl available? */
     if (!function_exists('imap_getacl')) {
       $this->error = _("The module imap_getacl is not implemented!");
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "The imap_getacl module is missing!",
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "The imap_getacl module is missing!",
           "<b>IMAP: Cannot set folder acls.</b>");
       return FALSE;
     }
@@ -451,13 +451,13 @@ class mailMethodCyrus extends mailMethod
       $folder_id = $this->create_folder_id($subfolder);
 
       /* Remove all acl's for this folder */
-      $users = @imap_getacl ($this->imap_handle, $folder_id);
+      $users = @imap_getacl($this->imap_handle, $folder_id);
 
       if (is_array($users)) {
         foreach ($users as $userid => $perms) {
           $userid = strtolower($userid);
-          imap_setacl ($this->imap_handle, $folder_id, $userid, "");
-          @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $folder_id." -> ".$userid,
+          imap_setacl($this->imap_handle, $folder_id, $userid, "");
+          @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $folder_id." -> ".$userid,
               "<b>IMAP: Removing folder permissions.</b>");
         }
       }
@@ -468,15 +468,15 @@ class mailMethodCyrus extends mailMethod
       $folder_id = $this->create_folder_id($subfolder);
 
       foreach ($permissions as $user => $acl) {
-        imap_setacl ($this->imap_handle, $folder_id, $user, $acl);
-        @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $folder_id." -> ".$user.": ".$acl,
+        imap_setacl($this->imap_handle, $folder_id, $user, $acl);
+        @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $folder_id." -> ".$user.": ".$acl,
             "<b>IMAP: Setting new folder permissions.</b>");
       }
     }
     return TRUE;
   }
 
-  public function saveSieveSettings()
+  public function saveSieveSettings ()
   {
     parent::saveSieveSettings();
 
@@ -493,7 +493,7 @@ class mailMethodCyrus extends mailMethod
     $sieve  = new sieve($cfg["sieve_server"], $cfg["sieve_port"], $this->getUAttribValue(),
                         $cfg["password"], $cfg["admin"], $cfg["sieve_option"]);
     if (!$sieve->sieve_login()) {
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $sieve->error_raw, "<b>SIEVE: login failed.</b>");
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $sieve->error_raw, "<b>SIEVE: login failed.</b>");
       $this->error = $sieve->error_raw;
       return FALSE;
     }
@@ -508,7 +508,7 @@ class mailMethodCyrus extends mailMethod
         $script = "";
         if (!$sieve->sieve_getscript('fusiondirectory')) {
           $this->error = sprintf(_('Cannot retrieve SIEVE script: %s'), to_string($sieve->error_raw));
-          @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $sieve->error_raw,
+          @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $sieve->error_raw,
               "<b>SIEVE: Cannot read 'fusiondirectory' sieve script.</b>");
           return FALSE;
         }
@@ -518,7 +518,7 @@ class mailMethodCyrus extends mailMethod
           if (empty($line)) {
             continue;
           }
-          if (preg_match ('/^###FUSIONDIRECTORY/', $line) && strlen($script) == 0) {
+          if (preg_match('/^###FUSIONDIRECTORY/', $line) && strlen($script) == 0) {
             $is_valid_script = TRUE;
           }
           $line   = rtrim($line);
@@ -526,12 +526,12 @@ class mailMethodCyrus extends mailMethod
         }
 
         if ($is_valid_script || strlen($script) == 0 || empty($script)) {
-          @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "",
+          @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "",
               "<b>SIEVE</b>: Sieve script 'fusiondirectory' was a valid FusionDirectory script and will be replaced.");
         } else {
           $new_name = "non_fusiondirectory_".date("Ymd_H-i-s");
           $sieve->sieve_sendscript($new_name, $script);
-          @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $this->sieve->error_raw,
+          @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $this->sieve->error_raw,
               "<b>SIEVE</b>: Non FusionDirectory sieve script. <b>Creating backup of the current sieve script '".$new_name."'.</b>");
         }
       }
@@ -576,7 +576,7 @@ class mailMethodCyrus extends mailMethod
     /* Upload script and make it the default one */
     if (!$sieve->sieve_sendscript("fusiondirectory", $script)) {
       $this->error = sprintf(_("Cannot store SIEVE script: %s"), to_string($sieve->error_raw));
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "Error was: ".to_string($sieve->error_raw),
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "Error was: ".to_string($sieve->error_raw),
         "<b>SIEVE: Writing new Sieve script failed!</b>");
       return FALSE;
     }
@@ -590,15 +590,15 @@ class mailMethodCyrus extends mailMethod
     return TRUE;
   }
 
-  static public function get_server_list()
+  static public function get_server_list ()
   {
     global $config;
-    $serverList = array();
+    $serverList = [];
 
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search ('(objectClass=fdCyrusServer)',
-                  array('cn', 'fdCyrusConnect', 'fdCyrusAdmin', 'fdCyrusPassword', 'fdCyrusSieveServer'));
+    $ldap->search('(objectClass=fdCyrusServer)',
+                  ['cn', 'fdCyrusConnect', 'fdCyrusAdmin', 'fdCyrusPassword', 'fdCyrusSieveServer']);
     while ($attrs = $ldap->fetch()) {
 
       /* Check if the given fdCyrusSieveServer is in the new style "{cn:port/option}"
@@ -612,7 +612,7 @@ class mailMethodCyrus extends mailMethod
         $sieve_port   = "";
       }
 
-      $serverList[$attrs['cn'][0]] = array(
+      $serverList[$attrs['cn'][0]] = [
         "server_dn"     => $attrs['dn'],
         "connect"       => $attrs['fdCyrusConnect'][0],
         "admin"         => $attrs['fdCyrusAdmin'][0],
@@ -620,7 +620,7 @@ class mailMethodCyrus extends mailMethod
         "sieve_server"  => $sieve_server,
         "sieve_option"  => $sieve_option,
         "sieve_port"    => $sieve_port
-      );
+      ];
     }
 
     return $serverList;
diff --git a/debconf/admin/debconfProfile/class_debconfProfileGeneric.inc b/debconf/admin/debconfProfile/class_debconfProfileGeneric.inc
index 7bec45b6f6b870f5fb4a31f71ceaedca1f416d6a..71598f01cb03358295bf90ab4c1d11a4cf8156c8 100644
--- a/debconf/admin/debconfProfile/class_debconfProfileGeneric.inc
+++ b/debconf/admin/debconfProfile/class_debconfProfileGeneric.inc
@@ -22,7 +22,7 @@ class DebconfEntriesAttribute extends CompositeAttribute
 {
   function __construct ($description, $ldapName, $acl = "")
   {
-    parent::__construct ($description, $ldapName, array(), "", "", $acl);
+    parent::__construct($description, $ldapName, [], "", "", $acl);
     $this->setInLdap(FALSE);
   }
 
@@ -37,7 +37,7 @@ class DebconfEntriesAttribute extends CompositeAttribute
   function loadEntries ()
   {
     global $config;
-    $this->attributes = array();
+    $this->attributes = [];
 
     /* Load template */
     $ldap = $config->get_ldap_link();
@@ -48,11 +48,9 @@ class DebconfEntriesAttribute extends CompositeAttribute
         $cn     = $entry['cn'][0];
         $desc   = (isset($entry['description'][0]) ? $entry['description'][0] : '');
         $default  = (isset($entry['value'][0]) ? $entry['default'][0] : '');
-        $this->attributes[$cn] = new StringAttribute ($cn, $desc, "debconfentry_$cn", FALSE, $default);
+        $this->attributes[$cn] = new StringAttribute($cn, $desc, "debconfentry_$cn", FALSE, $default);
         $this->attributes[$cn]->setInLdap(FALSE);
         $this->attributes[$cn]->setAcl($this->getAcl());
-        //~ 'choices'
-        //~ 'extendedDescription'
       }
     }
     $ldap->cd("ou=questions,".$this->plugin->dn);
@@ -64,9 +62,6 @@ class DebconfEntriesAttribute extends CompositeAttribute
           $this->attributes[$cn]->setValue($entry['value'][0]);
           // set initialValue
           $this->attributes[$cn]->loadValue(NULL);
-          //~ 'flags'
-          //~ 'owners'
-          //~ 'template'
         } else {
           msg_dialog::display(_("Error"),  _("There is no template for this profile"), ERROR_DIALOG);
         }
@@ -74,21 +69,21 @@ class DebconfEntriesAttribute extends CompositeAttribute
     }
   }
 
-  function saveInLdap()
+  function saveInLdap ()
   {
     global $config;
     $ldap = $config->get_ldap_link();
     foreach ($this->attributes as $cn => $attribute) {
       $dn = "cn=$cn,ou=questions,".$this->plugin->dn;
-      $ldap->cat($dn, array("objectClass"));
+      $ldap->cat($dn, ["objectClass"]);
       if ($ldap->count() != 1) {
         msg_dialog::display(_("Error"),
           sprintf(_("Can't find entry %s in LDAP for profile %s"), $cn, $this->plugin->dn),
           ERROR_DIALOG);
       } else {
-        $attrs = array(
-          'value' => array($attribute->getValue()),
-        );
+        $attrs = [
+          'value' => [$attribute->getValue()],
+        ];
         $ldap->cd($dn);
         $ldap->modify($attrs);
       }
@@ -100,7 +95,7 @@ class DebconfImportAttribute extends FileAttribute
 {
   function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = "", $acl = "")
   {
-    parent::__construct ($label, $description, $ldapName, $required, $defaultValue, $acl);
+    parent::__construct($label, $description, $ldapName, $required, $defaultValue, $acl);
     $this->setInLdap(FALSE);
   }
 
@@ -108,15 +103,15 @@ class DebconfImportAttribute extends FileAttribute
    *
    *  \param filehandle $handle The handle on the opened uploaded file
    */
-  function readFile($handle)
+  function readFile ($handle)
   {
     global $config;
-    $matches = array();
+    $matches = [];
     $str = fread($handle, 1024);
     // removing breaklines
-    $tmp = str_replace ("\n", "", $str);
+    $tmp = str_replace("\n", "", $str);
     // removing spaces
-    $tmp = str_replace (" ", "", $tmp);
+    $tmp = str_replace(" ", "", $tmp);
     if (preg_match( "/dn:.*,ou=templates,ou=([^,=]+),".get_ou("debconfRDN").
                     $config->current['BASE']."/",
                     // searching for dn: containing the template name
@@ -145,7 +140,7 @@ class DebconfImportAttribute extends FileAttribute
     }
   }
 
-  function renderFormInput()
+  function renderFormInput ()
   {
     global $config;
     return sprintf(_("In order to import a debconf file, please run the following command : <br/>".
@@ -159,43 +154,43 @@ class debconfProfileGeneric extends simplePlugin
 {
   var $mainTab = TRUE;
 
-  var $objectclasses   = array("top","organizationalUnit");
+  var $objectclasses   = ["top","organizationalUnit"];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Debconf profile'),
       'plDescription' => _('Debconf profile information'),
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array('debconfProfile' => array(
+      'plObjectType'  => ['debconfProfile' => [
         'name'      => _('Debconf profile'),
         'filter'    => '(&(objectClass=organizationalUnit)(!(objectClass=gosaDepartment)))',
         'ou'        => get_ou('debconfRDN'),
         'icon'      => 'geticon.php?context=applications&icon=debconf&size=16',
         'mainAttr'  => 'ou',
-      )),
+      ]],
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
+    return [
       // Attributes are grouped by section
-      'main' => array(
+      'main' => [
         'name'  => _("Name"),
-        'attrs' => array(
-          new DebconfImportAttribute ("", _("Import a debconf file"), "import"),
-          new StringAttribute (_("Name"), _("Name of this debconf template"), "ou", TRUE),
-        )
-      ),
-      'entries' => array(
+        'attrs' => [
+          new DebconfImportAttribute("", _("Import a debconf file"), "import"),
+          new StringAttribute(_("Name"), _("Name of this debconf template"), "ou", TRUE),
+        ]
+      ],
+      'entries' => [
         'name'  => _("Entries"),
-        'attrs' => array(
-          new DebconfEntriesAttribute (_("Debconf template answers"), "debconfEntries"),
-        )
-      ),
-    );
+        'attrs' => [
+          new DebconfEntriesAttribute(_("Debconf template answers"), "debconfEntries"),
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -214,7 +209,7 @@ class debconfProfileGeneric extends simplePlugin
     }
   }
 
-  function ldap_save()
+  function ldap_save ()
   {
     $errors = parent::ldap_save();
     if (!empty($errors)) {
diff --git a/debconf/admin/debconfProfile/class_debconfProfileManagement.inc b/debconf/admin/debconfProfile/class_debconfProfileManagement.inc
index 349fbe50f287cbb9774b9dfd864aa7ec3958fc1a..7c66c3b5cb540b4f31b71474d043f51bec8ff140 100644
--- a/debconf/admin/debconfProfile/class_debconfProfileManagement.inc
+++ b/debconf/admin/debconfProfile/class_debconfProfileManagement.inc
@@ -20,27 +20,27 @@
 
 class debconfProfileManagement extends simpleManagement
 {
-  protected $objectTypes  = array('debconfProfile');
+  protected $objectTypes  = ['debconfProfile'];
 
   protected $departmentBrowser      = FALSE;
   protected $departmentRootVisible  = FALSE;
   protected $baseMode               = FALSE;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Debconf'),
       'plDescription' => _('Debconf profile management'),
       'plIcon'        => 'geticon.php?context=applications&icon=debconf&size=48',
       'plSection'     => 'systems',
       'plPriority'    => 21,
-      'plManages'     => array('debconfProfile'),
+      'plManages'     => ['debconfProfile'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 
-  function __construct()
+  function __construct ()
   {
     $this->filterXMLPath  = get_template_path('debconfProfile-filter.xml', TRUE, dirname(__FILE__));
     parent::__construct();
diff --git a/debconf/admin/systems/debconf/class_debconfStartup.inc b/debconf/admin/systems/debconf/class_debconfStartup.inc
index a641e0e7550ba26b365790b7eb86a58a7973119d..f546ba1226051111807b541f82b6877ede8e380b 100644
--- a/debconf/admin/systems/debconf/class_debconfStartup.inc
+++ b/debconf/admin/systems/debconf/class_debconfStartup.inc
@@ -23,40 +23,40 @@ class debconfStartup extends simplePlugin
 {
   var $displayHeader = TRUE;
 
-  var $objectclasses = array('debconfStartup');
+  var $objectclasses = ['debconfStartup'];
 
-  var $inheritance = array('gosaGroupOfNames' => 'member');
+  var $inheritance = ['gosaGroupOfNames' => 'member'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Debconf'),
       'plDescription'   => _('Debconf preseed startup'),
       'plPriority'      => 9,
-      'plObjectType'    => array('workstation', 'server', 'ogroup-dynamic'),
+      'plObjectType'    => ['workstation', 'server', 'ogroup-dynamic'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Debconf settings'),
-        'attrs' => array(
-          new SelectAttribute (
+        'attrs' => [
+          new SelectAttribute(
             _('Profile'), _('Debconf preseed profile to be used for installation'),
             'debconfProfile', TRUE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Release'), _('Debian release to install'),
             'debconfDebianRelease', TRUE,
-            array('squeeze', 'unstable', 'wheezy')
+            ['squeeze', 'unstable', 'wheezy']
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -69,10 +69,10 @@ class debconfStartup extends simplePlugin
     $ldap->cd(get_ou('debconfRDN').$config->current['BASE']);
     $ldap->search(
       'objectClass=organizationalUnit',
-      array('ou'),
+      ['ou'],
       'one'
     );
-    $profiles = array();
+    $profiles = [];
     while ($attrs = $ldap->fetch()) {
       $profiles[] = $attrs['ou'][0];
     }
diff --git a/debconf/locale/af_ZA/fusiondirectory.po b/debconf/locale/af_ZA/fusiondirectory.po
index a31fb559912aaa2013443b35e4a4ba983e4c5b20..ee56f0dd6d931014327e3e7ff2c3fcbc8dccc3b9 100644
--- a/debconf/locale/af_ZA/fusiondirectory.po
+++ b/debconf/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
@@ -26,29 +26,29 @@ msgstr ""
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -57,38 +57,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr ""
 
diff --git a/debconf/locale/ar/fusiondirectory.po b/debconf/locale/ar/fusiondirectory.po
index 76966b0251899ceca3d1abe502c7f934503e6709..8e120a6f5654d3b86c68e3ddb42bc1ed9242f0a7 100644
--- a/debconf/locale/ar/fusiondirectory.po
+++ b/debconf/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
@@ -30,29 +30,29 @@ msgstr ""
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "خطأ"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -61,38 +61,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "الإسم"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr ""
 
diff --git a/debconf/locale/ca/fusiondirectory.po b/debconf/locale/ca/fusiondirectory.po
index 7bfeb133254ce0a79b16f740cb6d7a52cdd6f873..4fff4f9fb8b01e25bf2676424a54589c24214c2a 100644
--- a/debconf/locale/ca/fusiondirectory.po
+++ b/debconf/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
@@ -30,29 +30,29 @@ msgstr ""
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "Error"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr "Error d'LDAP"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -61,38 +61,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "Nom"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr ""
 
diff --git a/debconf/locale/cs_CZ/fusiondirectory.po b/debconf/locale/cs_CZ/fusiondirectory.po
index b7656d3c913a1289b20a96d9e57178bbdce566af..d064ef7fd77fdb8d0045148be38bcdd0f6c6870a 100644
--- a/debconf/locale/cs_CZ/fusiondirectory.po
+++ b/debconf/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
@@ -31,29 +31,29 @@ msgstr "Debconf"
 msgid "Debconf profile management"
 msgstr "Správa Debconf sady nastavení"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "Chyba"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr "Pro tento profil neexistuje šablona"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr "Pro sadu nastavení %s nebyla v LDAP nalezena položka %s"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr "Chyba LDAP"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr "Chyba v LDIF"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -66,38 +66,38 @@ msgstr ""
 "sablona.ldif </i><br/>S názvem souboru <b>nazev_souboru</b> a požadovaným "
 "názvem šablony <b>nazev</b>.<br/>"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr "Debconf sada nastavení"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr "Údaje o sadě nastavení Debconf"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "Název"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr "Importovat debconf soubor"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr "Název této debconf šablony"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr "Položky"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr "Odpovědi Debconf šablony"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr "import(ovat)"
 
diff --git a/debconf/locale/de/fusiondirectory.po b/debconf/locale/de/fusiondirectory.po
index 3fe8768829e62a31800e7b5f5c9b8be9f6a9f3df..3955ef114157ebe166907a1ac6fa2fd31bfe49df 100644
--- a/debconf/locale/de/fusiondirectory.po
+++ b/debconf/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
@@ -30,29 +30,29 @@ msgstr "Debconf"
 msgid "Debconf profile management"
 msgstr "Debconf Profilverwaltung"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "Fehler"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr "Es gibt keine Vorlage für dieses Profil"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr "Kann Eintrag %s in LDAP für Profil %s nicht finden"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr "LDAP-Fehler"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr "LDIF Fehler"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -65,38 +65,38 @@ msgstr ""
 "template.ldif </i><br/>Mit <b>filename</b> dem Dateinamen, und <b>name</b> "
 "dem gewünschten Namen für die Vorlage.<br/>"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr "Debconf Profil"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr "Debconf-Profilinformation"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "Name"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr "Importieren einer debconf Datei"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr "Name dieser debconf Vorlage"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr "Einträge"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr "Debconf Vorlage Antworten"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr "Importieren"
 
diff --git a/debconf/locale/el_GR/fusiondirectory.po b/debconf/locale/el_GR/fusiondirectory.po
index fb2cadd39563096f30141f56f52c9edce1f0c0f6..d9e260a9914fa96a217a135301e01cc5bd9a93b1 100644
--- a/debconf/locale/el_GR/fusiondirectory.po
+++ b/debconf/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
@@ -30,29 +30,29 @@ msgstr "Debconf"
 msgid "Debconf profile management"
 msgstr "Διαχείριση προφίλ Debconf "
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "Σφάλμα"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr "Δεν υπάρχει πρότυπο για αυτό το προφίλ"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr "Αδυναμία εύρεσης της καταχώρισης%s στο LDAP για το προφίλ %s"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr "Σφάλμα LDAP"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr "Σφάλμα LDIF"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -65,38 +65,38 @@ msgstr ""
 "template.ldif </i><br/>Με <b>filename</b> το όνομα αρχείου, και <b>name</b> "
 "το επιθυμητό όνομα για το πρότυπο.<br/>"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr "Προφίλ Debconf"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr "Πληροφορίες προφίλ Debconf "
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "Όνομα"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr "Εισαγωγή ενός αρχείου debconf"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr "Όνομα  για αυτό το πρότυπο debconf"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr "Καταχωρήσεις"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr "Απαντήσεις προτύπου Debconf"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr "Εισαγωγή"
 
diff --git a/debconf/locale/en/fusiondirectory.po b/debconf/locale/en/fusiondirectory.po
index 207e20b3ad47a6d0c0a5a79471d91254739c487a..dba7aa82dd749e15a5b141fef2ae93d849a45cca 100644
--- a/debconf/locale/en/fusiondirectory.po
+++ b/debconf/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,6 +17,39 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+#: admin/systems/debconf/class_debconfStartup.inc:33
+#: admin/debconfProfile/class_debconfProfileManagement.inc:32
+msgid "Debconf"
+msgstr ""
+
+#: admin/systems/debconf/class_debconfStartup.inc:34
+msgid "Debconf preseed startup"
+msgstr ""
+
+#: admin/systems/debconf/class_debconfStartup.inc:46
+msgid "Debconf settings"
+msgstr ""
+
+#: admin/systems/debconf/class_debconfStartup.inc:49
+msgid "Profile"
+msgstr ""
+
+#: admin/systems/debconf/class_debconfStartup.inc:49
+msgid "Debconf preseed profile to be used for installation"
+msgstr ""
+
+#: admin/systems/debconf/class_debconfStartup.inc:53
+msgid "Release"
+msgstr ""
+
+#: admin/systems/debconf/class_debconfStartup.inc:53
+msgid "Debian release to install"
+msgstr ""
+
+#: admin/debconfProfile/class_debconfProfileManagement.inc:33
+msgid "Debconf profile management"
+msgstr ""
+
 #: admin/debconfProfile/class_debconfProfileGeneric.inc:71
 #: admin/debconfProfile/class_debconfProfileGeneric.inc:85
 msgid "Error"
@@ -31,15 +64,15 @@ msgstr ""
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:139
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
 msgid "LDAP error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:142
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:152
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : <br/"
@@ -48,74 +81,41 @@ msgid ""
 "name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:172
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:169
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:187
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:194
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:196
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:211
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
 msgid "Import"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileManagement.inc:32
-#: admin/systems/debconf/class_debconfStartup.inc:33
-msgid "Debconf"
-msgstr ""
-
-#: admin/debconfProfile/class_debconfProfileManagement.inc:33
-msgid "Debconf profile management"
-msgstr ""
-
-#: admin/systems/debconf/class_debconfStartup.inc:34
-msgid "Debconf preseed startup"
-msgstr ""
-
-#: admin/systems/debconf/class_debconfStartup.inc:46
-msgid "Debconf settings"
-msgstr ""
-
-#: admin/systems/debconf/class_debconfStartup.inc:49
-msgid "Profile"
-msgstr ""
-
-#: admin/systems/debconf/class_debconfStartup.inc:49
-msgid "Debconf preseed profile to be used for installation"
-msgstr ""
-
-#: admin/systems/debconf/class_debconfStartup.inc:53
-msgid "Release"
-msgstr ""
-
-#: admin/systems/debconf/class_debconfStartup.inc:53
-msgid "Debian release to install"
-msgstr ""
-
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:2
 msgid "Filter"
 msgstr ""
diff --git a/debconf/locale/es/fusiondirectory.po b/debconf/locale/es/fusiondirectory.po
index 7cc40da191be96268f8e97ee25a582460a48125c..362bd508fe680f4827ff1cc4142d5bbdac797e1c 100644
--- a/debconf/locale/es/fusiondirectory.po
+++ b/debconf/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/debconfProfile/class_debconfProfileManagement.inc:32
 #: admin/systems/debconf/class_debconfStartup.inc:33
@@ -30,29 +30,29 @@ msgstr ""
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "Error"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr "Error LDAP"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -61,38 +61,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "Nombre"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr "Importar"
 
diff --git a/debconf/locale/es_CO/fusiondirectory.po b/debconf/locale/es_CO/fusiondirectory.po
index a98a1407697c1bbbd73b5cbdbeeb732c3157e85b..75e7c81742a52f81c761859b346b5d39df70f07b 100644
--- a/debconf/locale/es_CO/fusiondirectory.po
+++ b/debconf/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/debconfProfile/class_debconfProfileManagement.inc:32
 #: admin/systems/debconf/class_debconfStartup.inc:33
@@ -30,29 +30,29 @@ msgstr ""
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "Error"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr "Error LDAP"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -61,38 +61,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "Nombre"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr ""
 
diff --git a/debconf/locale/es_VE/fusiondirectory.po b/debconf/locale/es_VE/fusiondirectory.po
index 33aa33af02eeb77e6fe13e283a8c82382e78dfb5..300e789f5395b17eb179a44cb55d2b4102c736f7 100644
--- a/debconf/locale/es_VE/fusiondirectory.po
+++ b/debconf/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/debconfProfile/class_debconfProfileManagement.inc:32
 #: admin/systems/debconf/class_debconfStartup.inc:33
@@ -30,29 +30,29 @@ msgstr ""
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "Error"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr "Error de LDAP"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -61,38 +61,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "Nombre"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr "Importar"
 
diff --git a/debconf/locale/fa_IR/fusiondirectory.po b/debconf/locale/fa_IR/fusiondirectory.po
index 9fd1eccd59df609de6f1c6dce7992acad9347831..610291d856137e7736cbd0ea1f1c3aee737b88b7 100644
--- a/debconf/locale/fa_IR/fusiondirectory.po
+++ b/debconf/locale/fa_IR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
@@ -30,29 +30,29 @@ msgstr ""
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "خطا"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr "خطای LDAP"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -61,38 +61,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr ""
 
diff --git a/debconf/locale/fi_FI/fusiondirectory.po b/debconf/locale/fi_FI/fusiondirectory.po
index ce742ba38fa9d770ebb17fce37e9af409b31e43a..5fde9fae138a3f753647dea70266af0f31474d31 100644
--- a/debconf/locale/fi_FI/fusiondirectory.po
+++ b/debconf/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
@@ -30,29 +30,29 @@ msgstr ""
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "Virhe"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr "LDAP virhe"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -61,38 +61,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "Nimi"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr ""
 
diff --git a/debconf/locale/fr/fusiondirectory.po b/debconf/locale/fr/fusiondirectory.po
index e5521a56d6ea8056729be16df3f574f8b54a774e..d4082813112ec7f61739dbd07d9550e49a0ccd2b 100644
--- a/debconf/locale/fr/fusiondirectory.po
+++ b/debconf/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/debconfProfile/class_debconfProfileManagement.inc:32
 #: admin/systems/debconf/class_debconfStartup.inc:33
@@ -30,29 +30,29 @@ msgstr "Debconf"
 msgid "Debconf profile management"
 msgstr "Gestion des profils Debconf"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "Erreur"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr "Il n'y a pas de modèle pour ce profil"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr "Impossible de trouver l'entrée %s dans l'annuaire pour le profil %s"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr "Erreur LDAP"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr "Erreur LDIF"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -65,38 +65,38 @@ msgstr ""
 "template.ldif </i><br/>Avec <b>fichier</b> le nom du fichier debconf, et "
 "<b>nom</b> le nom désiré pour le modèle.<br/>"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr "Profil Debconf"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr "Informations du profil Debconf"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "Nom"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr "Importer un fichier Debconf"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr "Nom de ce modèle Debconf"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr "Entrées"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr "Réponses du modèle Debconf"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr "Importer"
 
diff --git a/debconf/locale/hu_HU/fusiondirectory.po b/debconf/locale/hu_HU/fusiondirectory.po
index 6977c79914d8e306bbf3c84504b741f9343d7916..0edbdb212d1856d0432a28a9f132b817736b6250 100644
--- a/debconf/locale/hu_HU/fusiondirectory.po
+++ b/debconf/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
@@ -30,29 +30,29 @@ msgstr ""
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -61,38 +61,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "Név"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr ""
 
diff --git a/debconf/locale/id/fusiondirectory.po b/debconf/locale/id/fusiondirectory.po
index efe0db280b5448d2003a9932edce22c11bae0996..a5132c7725569bb3aeb6a755697faab455823830 100644
--- a/debconf/locale/id/fusiondirectory.po
+++ b/debconf/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
@@ -26,29 +26,29 @@ msgstr ""
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -57,38 +57,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr ""
 
diff --git a/debconf/locale/it_IT/fusiondirectory.po b/debconf/locale/it_IT/fusiondirectory.po
index 5310e5c69225d7a90f23f1676a5091c6a185dffc..aac52e32a8d9cb23438deb704c06bd6d05a6919b 100644
--- a/debconf/locale/it_IT/fusiondirectory.po
+++ b/debconf/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/debconfProfile/class_debconfProfileManagement.inc:32
 #: admin/systems/debconf/class_debconfStartup.inc:33
@@ -30,29 +30,29 @@ msgstr "Debconf"
 msgid "Debconf profile management"
 msgstr "Gestione del profilo debconf"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "Errore"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr "Non ci sono modelli per questo profilo"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr "Non trovo nessuna voce %s per il profilo LDAP %s"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr "Errore LDAP"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr "Errore LDIF"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -65,38 +65,38 @@ msgstr ""
 "template.ldif </i><br/>Con <b>nome-del-file</b> il nome del file, e "
 "<b>nome</b> il nome che si desidera dare al modello.<br/>"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr "Profilo debconf"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr "Informazioni profilo debconf"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "Nome"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr "Importare un file debconf"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr "Nome di questo modello debconf"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr "Voci"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr "Risposte al modello Debconf"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr "Importa"
 
diff --git a/debconf/locale/ja/fusiondirectory.po b/debconf/locale/ja/fusiondirectory.po
index e927f0cd11c0a00544635a07c6cd962401ab5ca1..ff507a4979a043e72198ffdcd365b728877e57cb 100644
--- a/debconf/locale/ja/fusiondirectory.po
+++ b/debconf/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
@@ -26,29 +26,29 @@ msgstr ""
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -57,38 +57,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr ""
 
diff --git a/debconf/locale/ko/fusiondirectory.po b/debconf/locale/ko/fusiondirectory.po
index 7c665d36ba247a5211567158dc0b8e568016a591..081b832c84deeaa262fa0bcfc3bead7e0556b11f 100644
--- a/debconf/locale/ko/fusiondirectory.po
+++ b/debconf/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
@@ -30,29 +30,29 @@ msgstr "Debconf"
 msgid "Debconf profile management"
 msgstr "Debconf 프로필 관리"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "오류"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr "이 프로필에 대한 템플릿이 없습니다"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr "프로필 %s의 LDAP에서 항목 %s를 찾을 수 없습니다."
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr "lDAP 오류"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr "LDIF 오류"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -65,38 +65,38 @@ msgstr ""
 "<b>filename</b> the file name, and <b>name</b> the desired name for the "
 "template.<br/>"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr "Debconfi 프로필"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr "Debconf 프로필 정보"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "명칭"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr "debconf 파일 임포트"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr "debconf 템플릿의 이름"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr "항목"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr "Debconf 템플릿 응답"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr "임포트"
 
diff --git a/debconf/locale/lv/fusiondirectory.po b/debconf/locale/lv/fusiondirectory.po
index 7944c0a13e9b4841357012a09728ed03c89bc0fc..7dcab81a938c98d2e04f4bda61fa19e416d8f64c 100644
--- a/debconf/locale/lv/fusiondirectory.po
+++ b/debconf/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
@@ -30,29 +30,29 @@ msgstr ""
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "Kļūda"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr "LDAP kļūda"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -61,38 +61,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "Vārds "
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr ""
 
diff --git a/debconf/locale/nb/fusiondirectory.po b/debconf/locale/nb/fusiondirectory.po
index 45456ad2192abe91df345bd4285613ae2dd232c6..200d881155e949bdb9ca13c4f26205dab1cfc0d8 100644
--- a/debconf/locale/nb/fusiondirectory.po
+++ b/debconf/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
@@ -30,29 +30,29 @@ msgstr ""
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "Feil"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr "LDAP-feil"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -61,38 +61,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "Navn"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr ""
 
diff --git a/debconf/locale/nl/fusiondirectory.po b/debconf/locale/nl/fusiondirectory.po
index 4190ab3e30d11b71dfadfd144164dea152d46318..7c2e51a2922103fb7ca9b9b7d787e43738ba1806 100644
--- a/debconf/locale/nl/fusiondirectory.po
+++ b/debconf/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
@@ -31,29 +31,29 @@ msgstr "Debconf"
 msgid "Debconf profile management"
 msgstr "Debconf profile beheer"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "Fout"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr "Er is geen sjabloon voor dit profiel"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr "Kan ingave niet vinden %s in LDAP voor profiel %s"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr "LDAP fout"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr "LDIF fout"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -66,38 +66,38 @@ msgstr ""
 "template.ldif </i><br/>With<b>filename</b>the file name, and <b>name</b> the"
 " desired name for the template. <br/>"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr "Debconf profiel"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr "Debconf profiel informatie"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "Naam"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr "Importeer een debconf bestand"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr "Naam van dit debconf sjabloon"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr "Ingaves"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr "Debconf sjabloon antwoorden"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr "Importeren"
 
diff --git a/debconf/locale/pl/fusiondirectory.po b/debconf/locale/pl/fusiondirectory.po
index a0c92a6ae565621045dfcd86a1656176353c03e9..9376c0a0dd3a8c5000566c7ad0fc3e6619ba3d03 100644
--- a/debconf/locale/pl/fusiondirectory.po
+++ b/debconf/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
@@ -30,29 +30,29 @@ msgstr ""
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "Błąd"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr "błąd LDAP"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -61,38 +61,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "ImiÄ™"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr "Import"
 
diff --git a/debconf/locale/pt/fusiondirectory.po b/debconf/locale/pt/fusiondirectory.po
index 171d6b8398ce2da33ae5c45ea285b18e81735bc6..9c28c1b98aa40abfd04ac69428ea149ee0dcdc4c 100644
--- a/debconf/locale/pt/fusiondirectory.po
+++ b/debconf/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/debconfProfile/class_debconfProfileManagement.inc:32
 #: admin/systems/debconf/class_debconfStartup.inc:33
@@ -30,29 +30,29 @@ msgstr ""
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "Erro"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr "Erro de LDAP"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -61,38 +61,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "Nome"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr ""
 
diff --git a/debconf/locale/pt_BR/fusiondirectory.po b/debconf/locale/pt_BR/fusiondirectory.po
index 6d34e5f1d43710fb2e01122ef9461f689b0c47cb..7f1c600afb4583e649d2d5ca0385b10ec11c0043 100644
--- a/debconf/locale/pt_BR/fusiondirectory.po
+++ b/debconf/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/debconfProfile/class_debconfProfileManagement.inc:32
 #: admin/systems/debconf/class_debconfStartup.inc:33
@@ -30,29 +30,29 @@ msgstr "Debconf"
 msgid "Debconf profile management"
 msgstr "Gerenciador de perfil Debconf"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "Erro"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr "Não existe nenhum modelo para este perfil"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr "Não foi encontrado a entrada %s em LDAP para o perfil %s"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr "Erro de LDAP"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr "Erro LDIF"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -65,38 +65,38 @@ msgstr ""
 " template.ldif </i><br/>With <b>filename</b> the file name, and <b>name</b> "
 "the desired name for the template.<br/>"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr "Perfil Debconf"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "Nome"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr "Importar arquivo debconf"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr "Nome deste modelo debconf "
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr "Entradas"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr "Modelo de respostas Debconf"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr "Importar"
 
diff --git a/debconf/locale/ru/fusiondirectory.po b/debconf/locale/ru/fusiondirectory.po
index b56a07b2e130a995ce9391255fceeed7728ad14c..53d64af52344359327b61d737c7db1b45322af2b 100644
--- a/debconf/locale/ru/fusiondirectory.po
+++ b/debconf/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
@@ -30,29 +30,29 @@ msgstr "Debconf"
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "Ошибка"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr "Ошибка LDAP"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -61,38 +61,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "Фамилия"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr "Импортировать"
 
diff --git a/debconf/locale/ru@petr1708/fusiondirectory.po b/debconf/locale/ru@petr1708/fusiondirectory.po
index c152c0751b6b1216568b90a9b5f592038406810f..4cf2d55a4234bfc89750de426a29f4ce2260e9d8 100644
--- a/debconf/locale/ru@petr1708/fusiondirectory.po
+++ b/debconf/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
@@ -26,29 +26,29 @@ msgstr ""
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -57,38 +57,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr ""
 
diff --git a/debconf/locale/sv/fusiondirectory.po b/debconf/locale/sv/fusiondirectory.po
index 39d4be5cb2b547d90b90b417a47b72439f17ce88..6130a915c672145735171cb80e104966b91cc56f 100644
--- a/debconf/locale/sv/fusiondirectory.po
+++ b/debconf/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
@@ -30,29 +30,29 @@ msgstr "Debconf"
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "Fel"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr "LDAP-fel"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -61,38 +61,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "Namn"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr ""
 
diff --git a/debconf/locale/tr_TR/fusiondirectory.po b/debconf/locale/tr_TR/fusiondirectory.po
index b3baf69ce719630c9eb2ff6e0d8a111ff4b2fe5d..d70e6f5b3cc749d6a65643f3158863eaf773d48a 100644
--- a/debconf/locale/tr_TR/fusiondirectory.po
+++ b/debconf/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2020
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2020\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -26,29 +30,29 @@ msgstr ""
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
-msgstr ""
+msgstr "Hata"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -57,38 +61,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr ""
 
diff --git a/debconf/locale/ug/fusiondirectory.po b/debconf/locale/ug/fusiondirectory.po
index dec1930d6840fdfb6f2b2b96064d34f9610f44c3..6a82d45b3cde2a622b10826b5aed562560b39a68 100644
--- a/debconf/locale/ug/fusiondirectory.po
+++ b/debconf/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/debconfProfile/class_debconfProfileManagement.inc:32
 #: admin/systems/debconf/class_debconfStartup.inc:33
@@ -26,29 +26,29 @@ msgstr ""
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -57,38 +57,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr ""
 
diff --git a/debconf/locale/vi_VN/fusiondirectory.po b/debconf/locale/vi_VN/fusiondirectory.po
index d257655f7f60f4f2c6368886c0374db3bc9c5873..7ed03dc431190da60dfe85991c7a101eb15015f0 100644
--- a/debconf/locale/vi_VN/fusiondirectory.po
+++ b/debconf/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
@@ -30,29 +30,29 @@ msgstr ""
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "Lá»—i"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr "Lá»—i LDAP"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -61,38 +61,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "Tên"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr ""
 
diff --git a/debconf/locale/zh/fusiondirectory.po b/debconf/locale/zh/fusiondirectory.po
index a8a8c3d75ba02f62614f8d31546bd48e97033055..a4eac79d1b88c04f8814fd06cfa5a522c9b59883 100644
--- a/debconf/locale/zh/fusiondirectory.po
+++ b/debconf/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
@@ -30,29 +30,29 @@ msgstr ""
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr "错误"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr "LDAP 错误"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -61,38 +61,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr "名称"
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr "导入"
 
diff --git a/debconf/locale/zh_TW/fusiondirectory.po b/debconf/locale/zh_TW/fusiondirectory.po
index 3ff4d7e7cfc0588adaafd9b75bf152ba29e55c77..dd4c836730da3eaf9f7098956867ff1cc5546ce7 100644
--- a/debconf/locale/zh_TW/fusiondirectory.po
+++ b/debconf/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
@@ -26,29 +26,29 @@ msgstr ""
 msgid "Debconf profile management"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:85
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:80
 msgid "Error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:71
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:66
 msgid "There is no template for this profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:86
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:81
 #, php-format
 msgid "Can't find entry %s in LDAP for profile %s"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:138
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:133
 msgid "LDAP error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:141
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:136
 msgid "LDIF error"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:151
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:146
 #, php-format
 msgid ""
 "In order to import a debconf file, please run the following command : "
@@ -57,38 +57,38 @@ msgid ""
 "the desired name for the template.<br/>"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:167
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:171
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:162
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:166
 msgid "Debconf profile"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:168
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:163
 msgid "Debconf profile information"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:186
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:181
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 #: admin/debconfProfile/debconfProfile-filter.tpl.c:5
 msgid "Name"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:183
 msgid "Import a debconf file"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:189
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:184
 msgid "Name of this debconf template"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:193
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:188
 msgid "Entries"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:195
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:190
 msgid "Debconf template answers"
 msgstr ""
 
-#: admin/debconfProfile/class_debconfProfileGeneric.inc:210
+#: admin/debconfProfile/class_debconfProfileGeneric.inc:205
 msgid "Import"
 msgstr ""
 
diff --git a/developers/addons/debugHelp/class_debugHelp.inc b/developers/addons/debugHelp/class_debugHelp.inc
index aa9dcebee98c781276c1c28c28838f3c672a8be0..cbef31737a8021fbce723eb03123594c1a2ad9de 100644
--- a/developers/addons/debugHelp/class_debugHelp.inc
+++ b/developers/addons/debugHelp/class_debugHelp.inc
@@ -20,46 +20,46 @@
 
 class debugHelp extends simplePlugin
 {
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Debug help'),
       'plDescription' => _('Debug help tools'),
       'plSection'     => 'reporting',
       'plPriority'    => 1,
       'plIcon'        => 'geticon.php?context=categories&icon=applications-development&size=48',
-      'plObjectType'  => array('debug' => array(
+      'plObjectType'  => ['debug' => [
         'name'      => _('Debug help'),
         'mainAttr'  => FALSE
-      )),
+      ]],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'diagram' => array(
+    return [
+      'diagram' => [
         'name'      => _('Diagrams'),
-        'class'     => array('fullwidth'),
-        'attrs'     => array(
+        'class'     => ['fullwidth'],
+        'attrs'     => [
           new ButtonAttribute(
             _('Object types diagram'), '',
             'links',
             _('Get'), 'buildDiagram'
           )
-        )
-      ),
-      'objectTypes' => array(
+        ]
+      ],
+      'objectTypes' => [
         'name'      => _('Object Types'),
-        'class'     => array('fullwidth'),
-        'attrs'     => array(
+        'class'     => ['fullwidth'],
+        'attrs'     => [
           new FakeAttribute('dump')
-        ),
+        ],
         'template'  => get_template_path('debughelp.tpl', TRUE, dirname(__FILE__))
-      ),
-    );
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -69,26 +69,26 @@ class debugHelp extends simplePlugin
     $this->buildObjectTypesDump();
   }
 
-  function buildObjectTypesDump()
+  function buildObjectTypesDump ()
   {
     global $config;
-    $dump = array();
+    $dump = [];
     foreach ($config->data['OBJECTS'] as $type => $infos) {
       if (isset($infos['icon'])) {
         $img = $infos['icon'];
       } else {
         $img = 'images/empty.png';
       }
-      $node = array(
+      $node = [
         'img'       => $img,
         'name'      => $infos['name'],
-        'attrs'     => array(),
-        'subnodes'  => array()
-      );
-      foreach (array('aclCategory', 'mainAttr', 'ou', 'filter', 'tabClass', 'tabGroup', 'mainTab', 'management') as $key) {
+        'attrs'     => [],
+        'subnodes'  => []
+      ];
+      foreach (['aclCategory', 'mainAttr', 'ou', 'filter', 'tabClass', 'tabGroup', 'mainTab', 'management'] as $key) {
         if (isset($infos[$key])) {
           if ($infos[$key] != '') {
-            $node['attrs'][$key] = array($infos[$key]);
+            $node['attrs'][$key] = [$infos[$key]];
           } else {
             $node['attrs'][$key] = '&nbsp;';
           }
@@ -105,7 +105,7 @@ class debugHelp extends simplePlugin
     $this->dump = $dump;
   }
 
-  function execute()
+  function execute ()
   {
     $smarty = get_smarty();
     $smarty->assign('usePrototype', 'true');
diff --git a/developers/locale/af_ZA/fusiondirectory.po b/developers/locale/af_ZA/fusiondirectory.po
index 11311183aa596faed55d5ef45e52cd9d81a7f494..0281aabe86902ff3f63ac792c073a243eee978af 100644
--- a/developers/locale/af_ZA/fusiondirectory.po
+++ b/developers/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/developers/locale/ar/fusiondirectory.po b/developers/locale/ar/fusiondirectory.po
index 96a79b28cf0965703120674c11d62530eeadba8d..43b7eb2ef4a2089552ee728e7266544d91760752 100644
--- a/developers/locale/ar/fusiondirectory.po
+++ b/developers/locale/ar/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
 "MIME-Version: 1.0\n"
diff --git a/developers/locale/ca/fusiondirectory.po b/developers/locale/ca/fusiondirectory.po
index 54eeb696a7b5489c385e04f3b62aa74e1f7139ad..651ff93f7f475ab0659619b886ab990002ea73a1 100644
--- a/developers/locale/ca/fusiondirectory.po
+++ b/developers/locale/ca/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
 "MIME-Version: 1.0\n"
diff --git a/developers/locale/cs_CZ/fusiondirectory.po b/developers/locale/cs_CZ/fusiondirectory.po
index 0ff5879e4d6b509ca4d1282deb9952ad87fdef60..3c8aab428700ec834b1db2ed9505d0813aa071e9 100644
--- a/developers/locale/cs_CZ/fusiondirectory.po
+++ b/developers/locale/cs_CZ/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/developers/locale/de/fusiondirectory.po b/developers/locale/de/fusiondirectory.po
index 6af8db776977d0efded660fff88cd573dbdabd30..6a1c9e2318e13c702ac56a122eef763f13ca37fc 100644
--- a/developers/locale/de/fusiondirectory.po
+++ b/developers/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/developers/locale/el_GR/fusiondirectory.po b/developers/locale/el_GR/fusiondirectory.po
index f9280900a0c38eccb26754ac41937419adfd1cfd..d60ada5dd4e9348e9c53b0390da09d66a42a4223 100644
--- a/developers/locale/el_GR/fusiondirectory.po
+++ b/developers/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/developers/locale/en/fusiondirectory.po b/developers/locale/en/fusiondirectory.po
index 49333ceceffe2bce67808a66394ad66b22d3e0c2..1ba8ef077520e21152599de2d86af436c2f1cc74 100644
--- a/developers/locale/en/fusiondirectory.po
+++ b/developers/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-10-15 17:15+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,31 +17,31 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: debug-help/addons/debug-help/class_debugHelp.inc:26
-#: debug-help/addons/debug-help/class_debugHelp.inc:32
+#: addons/debugHelp/class_debugHelp.inc:26
+#: addons/debugHelp/class_debugHelp.inc:32
 msgid "Debug help"
 msgstr ""
 
-#: debug-help/addons/debug-help/class_debugHelp.inc:27
+#: addons/debugHelp/class_debugHelp.inc:27
 msgid "Debug help tools"
 msgstr ""
 
-#: debug-help/addons/debug-help/class_debugHelp.inc:44
+#: addons/debugHelp/class_debugHelp.inc:44
 msgid "Diagrams"
 msgstr ""
 
-#: debug-help/addons/debug-help/class_debugHelp.inc:48
+#: addons/debugHelp/class_debugHelp.inc:48
 msgid "Object types diagram"
 msgstr ""
 
-#: debug-help/addons/debug-help/class_debugHelp.inc:50
+#: addons/debugHelp/class_debugHelp.inc:50
 msgid "Get"
 msgstr ""
 
-#: debug-help/addons/debug-help/class_debugHelp.inc:55
+#: addons/debugHelp/class_debugHelp.inc:55
 msgid "Object Types"
 msgstr ""
 
-#: debug-help/addons/debug-help/debughelp.tpl.c:2
+#: addons/debugHelp/debughelp.tpl.c:2
 msgid "Insufficient rights"
 msgstr ""
diff --git a/developers/locale/es/fusiondirectory.po b/developers/locale/es/fusiondirectory.po
index 581b61e66dc0ad9d8695c239f6f3061c89380d0c..b674e5b2b79f1a00df9c17bde58d56e5194e1ec9 100644
--- a/developers/locale/es/fusiondirectory.po
+++ b/developers/locale/es/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/debugHelp/class_debugHelp.inc:26
 #: addons/debugHelp/class_debugHelp.inc:32
diff --git a/developers/locale/es_CO/fusiondirectory.po b/developers/locale/es_CO/fusiondirectory.po
index b2927a8ead2f32d014eabf497355fd82f106739b..25bee7b12ed5c2c5fe028c947820c12c1f66e757 100644
--- a/developers/locale/es_CO/fusiondirectory.po
+++ b/developers/locale/es_CO/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/debugHelp/class_debugHelp.inc:26
 #: addons/debugHelp/class_debugHelp.inc:32
diff --git a/developers/locale/es_VE/fusiondirectory.po b/developers/locale/es_VE/fusiondirectory.po
index 4931c372e09e3ceccfb2fe27f4a42f9388fdf841..7c1f21f2a2085dff559fa0226bd17e1686085f9f 100644
--- a/developers/locale/es_VE/fusiondirectory.po
+++ b/developers/locale/es_VE/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/debugHelp/class_debugHelp.inc:26
 #: addons/debugHelp/class_debugHelp.inc:32
diff --git a/developers/locale/fa_IR/fusiondirectory.po b/developers/locale/fa_IR/fusiondirectory.po
index e8f8a444c08ae8cb3a781792d58c2008592c18da..a4b2ac8a98c459b761fa026274467e08a642fb23 100644
--- a/developers/locale/fa_IR/fusiondirectory.po
+++ b/developers/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/developers/locale/fi_FI/fusiondirectory.po b/developers/locale/fi_FI/fusiondirectory.po
index f51915eb577f64186eb7c1f7803e8e7aed2e8cb2..0ab462f563879884da5aa3350d8d2a57c0a1c9b9 100644
--- a/developers/locale/fi_FI/fusiondirectory.po
+++ b/developers/locale/fi_FI/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
 "MIME-Version: 1.0\n"
diff --git a/developers/locale/fr/fusiondirectory.po b/developers/locale/fr/fusiondirectory.po
index 59439bfa76bcc1c31b6f361deabb2aae1589c175..f15f7f3fc13e48c69ff74da4806ae2eda515182a 100644
--- a/developers/locale/fr/fusiondirectory.po
+++ b/developers/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/debugHelp/class_debugHelp.inc:26
 #: addons/debugHelp/class_debugHelp.inc:32
diff --git a/developers/locale/hu_HU/fusiondirectory.po b/developers/locale/hu_HU/fusiondirectory.po
index 0f244e9fdc20db912e9450b5340094ef7790119c..d9f2d261cfd0605e8113565884ea5db732dee393 100644
--- a/developers/locale/hu_HU/fusiondirectory.po
+++ b/developers/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/developers/locale/id/fusiondirectory.po b/developers/locale/id/fusiondirectory.po
index f4fffb2ace17d368f833677caf2d243da4b3bf7c..2d506011777c9e5c1b51e61789c22b3fab409c33 100644
--- a/developers/locale/id/fusiondirectory.po
+++ b/developers/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/developers/locale/it_IT/fusiondirectory.po b/developers/locale/it_IT/fusiondirectory.po
index ac944b6043207fa5fc60a1ed435dcdb2e4888772..8fa0bcb10d08a97e300d8b8f18776e8ee559279d 100644
--- a/developers/locale/it_IT/fusiondirectory.po
+++ b/developers/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/debugHelp/class_debugHelp.inc:26
 #: addons/debugHelp/class_debugHelp.inc:32
diff --git a/developers/locale/ja/fusiondirectory.po b/developers/locale/ja/fusiondirectory.po
index e4fe9bd337e3b35e169a080ff9bc127814e19ac8..1ad1a1f91bbd727f535aaffac4c3366788b0ba48 100644
--- a/developers/locale/ja/fusiondirectory.po
+++ b/developers/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/developers/locale/ko/fusiondirectory.po b/developers/locale/ko/fusiondirectory.po
index c6af435d6efa42f60d682b71181fccc4ce6dbdef..a66e084cb66fa4d3c0c9caee118a97204f2b60ae 100644
--- a/developers/locale/ko/fusiondirectory.po
+++ b/developers/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/developers/locale/lv/fusiondirectory.po b/developers/locale/lv/fusiondirectory.po
index 8552927587c7a48470e7a0a7fd427fb7cb2e92aa..1ca62c38f3067271ef71fced7888fe8b49bcc540 100644
--- a/developers/locale/lv/fusiondirectory.po
+++ b/developers/locale/lv/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
 "MIME-Version: 1.0\n"
diff --git a/developers/locale/nb/fusiondirectory.po b/developers/locale/nb/fusiondirectory.po
index 1639a93f802c5d457984d7d851894682b8c2c174..09c179d5e304adb1028478b9a97262a7b3cf0158 100644
--- a/developers/locale/nb/fusiondirectory.po
+++ b/developers/locale/nb/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
 "MIME-Version: 1.0\n"
diff --git a/developers/locale/nl/fusiondirectory.po b/developers/locale/nl/fusiondirectory.po
index 6a4592ad0772d41b32a4938963e77c9c13aecce0..f88cc599a724dd9c65ce035d37ab93bb2f22530f 100644
--- a/developers/locale/nl/fusiondirectory.po
+++ b/developers/locale/nl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/developers/locale/pl/fusiondirectory.po b/developers/locale/pl/fusiondirectory.po
index 32207ba3a05e5089b1b2c36e7a5469133f091511..baeb2dfa11c370964a0fc84b0b935a98b3c970ff 100644
--- a/developers/locale/pl/fusiondirectory.po
+++ b/developers/locale/pl/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
 "MIME-Version: 1.0\n"
diff --git a/developers/locale/pt/fusiondirectory.po b/developers/locale/pt/fusiondirectory.po
index b26b8f515a2948f80d072f43150d7e81005d1903..c51fa99eda7a8e6e3aa6ca47c93c18f7079feafa 100644
--- a/developers/locale/pt/fusiondirectory.po
+++ b/developers/locale/pt/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/debugHelp/class_debugHelp.inc:26
 #: addons/debugHelp/class_debugHelp.inc:32
diff --git a/developers/locale/pt_BR/fusiondirectory.po b/developers/locale/pt_BR/fusiondirectory.po
index 47ed2e8437c55468310d62cbc7674c9bc93ae2c1..2e89ce5f53ec5591658f604f41bef885667d3157 100644
--- a/developers/locale/pt_BR/fusiondirectory.po
+++ b/developers/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/debugHelp/class_debugHelp.inc:26
 #: addons/debugHelp/class_debugHelp.inc:32
diff --git a/developers/locale/ru/fusiondirectory.po b/developers/locale/ru/fusiondirectory.po
index 24574e2340011b7ed23029ae56ae283670c1bddd..9b6c7b76f428a2280618d561fbc3cc7590cdf59c 100644
--- a/developers/locale/ru/fusiondirectory.po
+++ b/developers/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/developers/locale/ru@petr1708/fusiondirectory.po b/developers/locale/ru@petr1708/fusiondirectory.po
index ace5d8dbd0befed2fb74b6f9df336c154a302503..8694bd8d98cf4685bcf07cb04f4660af65629413 100644
--- a/developers/locale/ru@petr1708/fusiondirectory.po
+++ b/developers/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/developers/locale/sv/fusiondirectory.po b/developers/locale/sv/fusiondirectory.po
index 87f81aaf882f246cd91d0d5a62d0d56a77f03579..ca2cf3b86c157b9a6441a1f9283da5d5179bff15 100644
--- a/developers/locale/sv/fusiondirectory.po
+++ b/developers/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/developers/locale/tr_TR/fusiondirectory.po b/developers/locale/tr_TR/fusiondirectory.po
index 6ae25cf1161bd50e54a79f0511406d943b265a26..aa6a0e51fffdc01be2440dd4dbcb9537f96727a9 100644
--- a/developers/locale/tr_TR/fusiondirectory.po
+++ b/developers/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/developers/locale/ug/fusiondirectory.po b/developers/locale/ug/fusiondirectory.po
index f4714061de0984173133aeac8e435083a8fbe7c6..f15b5f434824feba9544efb345d355b04ee75d01 100644
--- a/developers/locale/ug/fusiondirectory.po
+++ b/developers/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: addons/debugHelp/class_debugHelp.inc:26
 #: addons/debugHelp/class_debugHelp.inc:32
diff --git a/developers/locale/vi_VN/fusiondirectory.po b/developers/locale/vi_VN/fusiondirectory.po
index febc3f2f7e4d9d698f29e4b2124ff6956207bb1d..ae0c571d278486bfa45de81a4ccc87ac3418d6b1 100644
--- a/developers/locale/vi_VN/fusiondirectory.po
+++ b/developers/locale/vi_VN/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
 "MIME-Version: 1.0\n"
diff --git a/developers/locale/zh/fusiondirectory.po b/developers/locale/zh/fusiondirectory.po
index ee0860cf4732dd9f81c8b67e0bc854149d51006f..b4927cd88f43ff5d5efda96f18618624b9e1642e 100644
--- a/developers/locale/zh/fusiondirectory.po
+++ b/developers/locale/zh/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
 "MIME-Version: 1.0\n"
diff --git a/developers/locale/zh_TW/fusiondirectory.po b/developers/locale/zh_TW/fusiondirectory.po
index baadad1855f944d0b23e8153c8aa295b37087998..98dab353438d48b97fb29309a436be249f81da51 100644
--- a/developers/locale/zh_TW/fusiondirectory.po
+++ b/developers/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:07+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/dhcp/admin/dhcp/class_dhcpConfiguration.inc b/dhcp/admin/dhcp/class_dhcpConfiguration.inc
index 34cb647ae7c23fb9080e89f481a90ae3741eb0f8..8f559fd9a3ed8ca5ac354a0e2485d02e00382ae3 100644
--- a/dhcp/admin/dhcp/class_dhcpConfiguration.inc
+++ b/dhcp/admin/dhcp/class_dhcpConfiguration.inc
@@ -24,34 +24,34 @@ class DhcpSectionsAttribute extends DialogOrderedArrayAttribute
   protected $dialogClass = 'DhcpSectionCreationDialog';
 
   protected $subnet_expanded = FALSE;
-  protected $dhcpObjectCache = array();
+  protected $dhcpObjectCache = [];
 
-  protected function getAttributeArrayValue($key, $value)
+  protected function getAttributeArrayValue ($key, $value)
   {
     $id = $this->getHtmlId();
     $subnetExpandImg = $this->renderInputField(
       'image', $id.'_expandDHCP_'.$key,
-      array(
+      [
         'src'   => 'images/lists/expand.png',
         'title' => _('Expand DHCP subnet'),
         'alt'   => _('Expand'),
         'class' => 'center',
         'style' => 'padding:5px 6px 4px;'
-      )
+      ]
     );
     $subnetExpandedImg = $this->renderInputField(
       'image', $id.'_foldDHCP_'.$key,
-      array(
+      [
         'src'   => 'images/down-arrow.png',
         'title' => _('Fold DHCP subnet'),
         'alt'   => _('Fold'),
         'class' => 'center',
         'style' => 'padding:6px 5px 6px 4px;'
-      )
+      ]
     );
     $dn = $value[0];
     if (empty($this->dhcpObjectCache[$dn])) {
-      return array('not in cache',$dn,'');
+      return ['not in cache',$dn,''];
     }
 
     $link = $value[1];
@@ -65,11 +65,11 @@ class DhcpSectionsAttribute extends DialogOrderedArrayAttribute
         } else {
           $link = $subnetExpandImg.$link;
         }
-        return array(
-          array('html' => $link),
+        return [
+          ['html' => $link],
           '',
           '',
-        );
+        ];
       } else {
         if ($objtype == 'dhcpSubnet') {
           if ($dn === $this->subnet_expanded) {
@@ -78,25 +78,25 @@ class DhcpSectionsAttribute extends DialogOrderedArrayAttribute
             $link = '&nbsp;&nbsp;'.$subnetExpandImg.$link;
           }
         }
-        return array(
-          array('html' => $link),
-          array('html' => $dhcpObject->getOption('routers')),
+        return [
+          ['html' => $link],
+          ['html' => $dhcpObject->getOption('routers')],
           ''
-        );
+        ];
       }
     } else {
-      return array(
-        array('html' => $link),
-        array('html' => $dhcpObject->getStatement('fixed-address')),
-        array('html' => preg_replace('/^[^ ]+ /', '', isset($dhcpObject->dhcpHWAddress) ? $dhcpObject->dhcpHWAddress : '')),
-      );
+      return [
+        ['html' => $link],
+        ['html' => $dhcpObject->getStatement('fixed-address')],
+        ['html' => preg_replace('/^[^ ]+ /', '', isset($dhcpObject->dhcpHWAddress) ? $dhcpObject->dhcpHWAddress : '')],
+      ];
     }
   }
 
-  protected function genRowIcons($key, $value)
+  protected function genRowIcons ($key, $value)
   {
     $id = $this->getHtmlId();
-    list ($img, $nbicons) = parent::genRowIcons($key, $value);
+    list($img, $nbicons) = parent::genRowIcons($key, $value);
 
     if ($key == 0) {
       /* Remove delete button on first row */
@@ -105,19 +105,19 @@ class DhcpSectionsAttribute extends DialogOrderedArrayAttribute
 
     $img = $this->renderInputField(
       'image', $id.'_insertDHCP_'.$key,
-      array(
+      [
         'src'   => 'geticon.php?context=actions&amp;icon=document-new&amp;size=16',
         'title' => _('Insert new DHCP section'),
         'alt'   => _('Insert new DHCP section'),
         'class' => 'center',
-      )
+      ]
     ).$img;
     $nbicons++;
 
-    return array ($img, $nbicons);
+    return  [$img, $nbicons];
   }
 
-  protected function handlePostValueActions($id, $postValue)
+  protected function handlePostValueActions ($id, $postValue)
   {
     if (parent::handlePostValueActions($id, $postValue)) {
       return TRUE;
@@ -150,28 +150,28 @@ class DhcpSectionsAttribute extends DialogOrderedArrayAttribute
     return FALSE;
   }
 
-  protected function handleEdit($key)
+  protected function handleEdit ($key)
   {
     $dn           = $this->value[$key][0];
     $editingValue = $this->dhcpObjectCache[$dn];
     $this->plugin->openDialog(new $this->dialogClass($this->plugin, $this, $this->objectType($dn), $dn, $editingValue));
   }
 
-  function delPostValue($key)
+  function delPostValue ($key)
   {
     $dn = $this->postValue[$key][0];
-    $this->dhcpObjectCache[$dn] = array();
+    $this->dhcpObjectCache[$dn] = [];
     foreach ($this->postValue as $i => $value) {
       if (preg_match('/'.preg_quote($dn, '/').'$/', $value[0])) {
         unset($this->postValue[$i]);
-        $this->dhcpObjectCache[$value[0]] = array();
+        $this->dhcpObjectCache[$value[0]] = [];
       }
     }
     parent::delPostValue($key);
   }
 
   /* Should be addValue but we need more attributes */
-  function editEnded($dn, $object, $olddn = FALSE)
+  function editEnded ($dn, $object, $olddn = FALSE)
   {
     $this->dhcpObjectCache[$dn] = $object;
     if (($olddn !== FALSE) && ($olddn !== $dn)) {
@@ -181,38 +181,38 @@ class DhcpSectionsAttribute extends DialogOrderedArrayAttribute
           $new_dn = preg_replace("/,$olddn$/", ','.$dn, $key);
           $dsc['MODIFIED'] = TRUE;
           $this->dhcpObjectCache[$new_dn] = $dsc;
-          $this->dhcpObjectCache[$key]    = array();
+          $this->dhcpObjectCache[$key]    = [];
         }
       }
-      $this->dhcpObjectCache[$olddn]    = array();
+      $this->dhcpObjectCache[$olddn]    = [];
     }
     $this->reload(FALSE);
   }
 
   /* Used by dhcpHost */
-  function addHost($parentDn, $cn, $mac, $ip)
+  function addHost ($parentDn, $cn, $mac, $ip)
   {
     $dn = 'cn='.$cn.','.$parentDn;
-    $this->dhcpObjectCache[$dn] = array(
+    $this->dhcpObjectCache[$dn] = [
       'dn'              => $dn,
-      'objectClass'     => array('dhcpHost'),
-      'cn'              => array($cn),
-      'dhcpHWAddress'   => array('ethernet '.$mac),
-      'dhcpStatements'  => array(
+      'objectClass'     => ['dhcpHost'],
+      'cn'              => [$cn],
+      'dhcpHWAddress'   => ['ethernet '.$mac],
+      'dhcpStatements'  => [
         'fixed-address '.$ip
-      ),
-      'dhcpOption'      => array(),
-      'dhcpComments'    => array(),
+      ],
+      'dhcpOption'      => [],
+      'dhcpComments'    => [],
       'MODIFIED'        => TRUE,
-    );
+    ];
     $this->reload(FALSE);
   }
 
   /* Used by dhcpHost */
-  function delHost($dn)
+  function delHost ($dn)
   {
     if (($dn != '') && ($dn != 'new')) {
-      $this->dhcpObjectCache[$dn] = array();
+      $this->dhcpObjectCache[$dn] = [];
     }
   }
 
@@ -224,7 +224,7 @@ class DhcpSectionsAttribute extends DialogOrderedArrayAttribute
   function fillLdapValue (&$attrs)
   {
     /* Remove crap made by plugin */
-    unset ($attrs[$this->getLdapName()]);
+    unset($attrs[$this->getLdapName()]);
   }
 
   function setParent (&$plugin)
@@ -252,10 +252,10 @@ class DhcpSectionsAttribute extends DialogOrderedArrayAttribute
   }
 
   /* Subfonction of reload function */
-  protected function reload_readItemFromLDAP(&$ldap, $attrs, &$final, $erase)
+  protected function reload_readItemFromLDAP (&$ldap, $attrs, &$final, $erase)
   {
     global $config;
-    $sattrs = array();
+    $sattrs = [];
     $dn     = $attrs['dn'];
 
     if (isset($this->dhcpObjectCache[$dn]) && !$erase) {
@@ -285,7 +285,7 @@ class DhcpSectionsAttribute extends DialogOrderedArrayAttribute
     if ($dn === $this->subnet_expanded) {
       $ldap_subnet = $config->get_ldap_link();
       $ldap_subnet->cd($dn);
-      $ldap_subnet->search('(objectClass=dhcpHost)', array('*'), 'one');
+      $ldap_subnet->search('(objectClass=dhcpHost)', ['*'], 'one');
       while ($host_attrs = $ldap_subnet->fetch()) {
         $this->reload_readItemFromLDAP($ldap_subnet, $host_attrs, $final, $erase);
       }
@@ -293,7 +293,7 @@ class DhcpSectionsAttribute extends DialogOrderedArrayAttribute
   }
 
   /* Subfonction of reload function */
-  protected function reload_refreshListFromCache(&$final)
+  protected function reload_refreshListFromCache (&$final)
   {
     $firstdn = NULL;
     foreach ($this->dhcpObjectCache as $dn => $sattrs) {
@@ -345,15 +345,15 @@ class DhcpSectionsAttribute extends DialogOrderedArrayAttribute
     }
   }
 
-  function reload($erase = TRUE)
+  function reload ($erase = TRUE)
   {
     global $config;
-    @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $erase, 'reload');
+    @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $erase, 'reload');
     /* Init LDAP and load list */
     $ldap = $config->get_ldap_link();
 
-    $final  = array();
-    $ldap->cat($this->plugin->dn, array('cn'), '(objectClass=dhcpService)');
+    $final  = [];
+    $ldap->cat($this->plugin->dn, ['cn'], '(objectClass=dhcpService)');
 
     if ($value = $ldap->fetch()) {
       /* Set header */
@@ -367,7 +367,7 @@ class DhcpSectionsAttribute extends DialogOrderedArrayAttribute
 
       /* Read all sub entries to place here */
       $ldap->cd($value['dn']);
-      $ldap->search('(|(objectClass=dhcpService)(objectClass=dhcpClass)(objectClass=dhcpSubClass)(objectClass=dhcpGroup)(objectClass=dhcpPool)(objectClass=dhcpSubnet)(objectClass=dhcpSharedNetwork)(objectClass=dhcpTSigKey)(objectClass=dhcpDnsZone)(objectClass=dhcpFailOverPeer))', array());
+      $ldap->search('(|(objectClass=dhcpService)(objectClass=dhcpClass)(objectClass=dhcpSubClass)(objectClass=dhcpGroup)(objectClass=dhcpPool)(objectClass=dhcpSubnet)(objectClass=dhcpSharedNetwork)(objectClass=dhcpTSigKey)(objectClass=dhcpDnsZone)(objectClass=dhcpFailOverPeer))', []);
 
       while ($attrs = $ldap->fetch()) {
         $this->reload_readItemFromLDAP($ldap, $attrs, $final, $erase);
@@ -377,9 +377,9 @@ class DhcpSectionsAttribute extends DialogOrderedArrayAttribute
 
     /* Sort it... */
     natsort($final);
-    $this->value = array();
+    $this->value = [];
     foreach ($final as $dn => $val) {
-      $this->value[] = array($dn, preg_replace('/^[^!]+!(.*)$/', '\\1', $val));
+      $this->value[] = [$dn, preg_replace('/^[^!]+!(.*)$/', '\\1', $val)];
     }
 
     if (empty($final)) {
@@ -387,26 +387,26 @@ class DhcpSectionsAttribute extends DialogOrderedArrayAttribute
     }
   }
 
-  function add_global_node()
+  function add_global_node ()
   {
-    $attrs = array(
+    $attrs = [
       'dn'              => $this->plugin->dn,
-      'cn'              => array($this->plugin->cn),
-      'objectClass'     => array('top', 'dhcpService'),
-      'dhcpStatements'  => array(
+      'cn'              => [$this->plugin->cn],
+      'objectClass'     => ['top', 'dhcpService'],
+      'dhcpStatements'  => [
         'default-lease-time 600',
         'max-lease-time 7200',
         'authoritative',
         'ddns-update-style none'
-      ),
+      ],
       'MODIFIED' => TRUE,
-    );
+    ];
 
-    $this->value[] = array($this->plugin->dn, _('Global options'));
+    $this->value[] = [$this->plugin->dn, _('Global options')];
     $this->dhcpObjectCache[$this->plugin->dn]  = $attrs;
   }
 
-  function objectType($dn)
+  function objectType ($dn)
   {
     $types = array_keys($this->plugin->types);
 
@@ -422,7 +422,7 @@ class DhcpSectionsAttribute extends DialogOrderedArrayAttribute
     return '';
   }
 
-  function getCache()
+  function getCache ()
   {
     return $this->dhcpObjectCache;
   }
@@ -432,14 +432,14 @@ class DhcpSectionsAttribute extends DialogOrderedArrayAttribute
     return '';
   }
 
-  public function htmlIds()
+  public function htmlIds ()
   {
     $ids = parent::htmlIds();
     unset($ids[0]);
     return $ids;
   }
 
-  function foreignKeyUpdate($oldvalue, $newvalue, $source)
+  function foreignKeyUpdate ($oldvalue, $newvalue, $source)
   {
     if (($source['CLASS'] == 'serverGeneric') && ($source['FIELD'] == 'dn') && ($source['MODE'] == 'move')) {
       $globalNode = $this->value[0][0];
@@ -447,7 +447,7 @@ class DhcpSectionsAttribute extends DialogOrderedArrayAttribute
         if ($newvalue === NULL) {
           unset($this->dhcpObjectCache[$globalNode]['dhcpPrimaryDN']);
         } else {
-          $this->dhcpObjectCache[$globalNode]['dhcpPrimaryDN'] = array($newvalue);
+          $this->dhcpObjectCache[$globalNode]['dhcpPrimaryDN'] = [$newvalue];
         }
         $this->dhcpObjectCache[$globalNode]['MODIFIED'] = TRUE;
       }
@@ -455,7 +455,7 @@ class DhcpSectionsAttribute extends DialogOrderedArrayAttribute
         if ($newvalue === NULL) {
           unset($this->dhcpObjectCache[$globalNode]['dhcpSecondaryDN']);
         } else {
-          $this->dhcpObjectCache[$globalNode]['dhcpSecondaryDN'] = array($newvalue);
+          $this->dhcpObjectCache[$globalNode]['dhcpSecondaryDN'] = [$newvalue];
         }
         $this->dhcpObjectCache[$globalNode]['MODIFIED'] = TRUE;
       }
@@ -464,7 +464,7 @@ class DhcpSectionsAttribute extends DialogOrderedArrayAttribute
     }
   }
 
-  function foreignKeyCheck($value, $source)
+  function foreignKeyCheck ($value, $source)
   {
     if (($source['CLASS'] == 'serverGeneric') && ($source['FIELD'] == 'dn')) {
       $globalNode = $this->value[0][0];
@@ -480,7 +480,7 @@ class DhcpSectionsAttribute extends DialogOrderedArrayAttribute
     }
   }
 
-  function isIpInParentSubnet($dn, $ip)
+  function isIpInParentSubnet ($dn, $ip)
   {
     $parts = explode(',', $dn);
     do {
@@ -498,74 +498,74 @@ class dhcpConfiguration extends simplePlugin
 {
   public $mainTab = TRUE;
 
-  public $objectclasses = array('dhcpService');
+  public $objectclasses = ['dhcpService'];
 
-  public $types = array();
+  public $types = [];
 
-  static $sectionMap = array(
-    'dhcpService'       => array(
+  static $sectionMap = [
+    'dhcpService'       => [
       'dhcpSharedNetwork','dhcpSubnet','dhcpGroup',
       'dhcpHost','dhcpClass','dhcpTSigKey','dhcpDnsZone','dhcpFailOverPeer'
-    ),
-    'dhcpClass'         => array('dhcpSubClass'),
-    'dhcpSubClass'      => array(),
-    'dhcpHost'          => array(),
-    'dhcpGroup'         => array('dhcpHost'),
-    'dhcpPool'          => array(),
-    'dhcpSubnet'        => array(
+    ],
+    'dhcpClass'         => ['dhcpSubClass'],
+    'dhcpSubClass'      => [],
+    'dhcpHost'          => [],
+    'dhcpGroup'         => ['dhcpHost'],
+    'dhcpPool'          => [],
+    'dhcpSubnet'        => [
       'dhcpPool','dhcpGroup',
       'dhcpHost','dhcpClass','dhcpTSigKey','dhcpDnsZone','dhcpFailOverPeer'
-    ),
-    'dhcpSharedNetwork' => array('dhcpSubnet', 'dhcpPool','dhcpTSigKey','dhcpDnsZone','dhcpFailOverPeer'),
-    'dhcpFailOverPeer'  => array(),
-    'dhcpTSigKey'       => array(),
-    'dhcpDnsZone'       => array()
-  );
+    ],
+    'dhcpSharedNetwork' => ['dhcpSubnet', 'dhcpPool','dhcpTSigKey','dhcpDnsZone','dhcpFailOverPeer'],
+    'dhcpFailOverPeer'  => [],
+    'dhcpTSigKey'       => [],
+    'dhcpDnsZone'       => []
+  ];
 
-  static $quote_option = array('domain-name');
+  static $quote_option = ['domain-name'];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('DHCP configuration'),
       'plDescription' => _('DHCP configuration'),
-      'plObjectType'  => array('dhcpConfiguration' => array(
+      'plObjectType'  => ['dhcpConfiguration' => [
         'name'        => _('DHCP configuration'),
         'filter'      => '(objectClass=dhcpService)',
         'ou'          => get_ou('dhcpRDN'),
         'icon'        => 'geticon.php?context=applications&icon=dhcp&size=16'
-      )),
-      'plForeignKeys'   => array(
-        'dhcpSections' => array(
-          array('serverGeneric', 'dn', '(|(dhcpPrimaryDN=%oldvalue%)(dhcpSecondaryDN=%oldvalue%))'),
-        ),
-      ),
+      ]],
+      'plForeignKeys'   => [
+        'dhcpSections' => [
+          ['serverGeneric', 'dn', '(|(dhcpPrimaryDN=%oldvalue%)(dhcpSecondaryDN=%oldvalue%))'],
+        ],
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('DHCP Objects'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
+        'class' => ['fullwidth'],
+        'attrs' => [
           new BaseSelectorAttribute(get_ou('dhcpRDN')),
           new HiddenAttribute('cn'),
-          new DhcpSectionsAttribute (
+          new DhcpSectionsAttribute(
             '', _('The DHCP sections handled by this server'),
             'dhcpSections', FALSE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
   {
-    $this->types = array(
+    $this->types = [
       'dhcpLog'           => _('Logging'),
       'dhcpService'       => _('Global options'),
       'dhcpClass'         => _('Class'),
@@ -578,7 +578,7 @@ class dhcpConfiguration extends simplePlugin
       'dhcpSharedNetwork' => _('Shared network'),
       'dhcpTSigKey'       => _('DNS update key'),
       'dhcpDnsZone'       => _('DNS update zones')
-    );
+    ];
 
     parent::__construct($dn, $object, $parent, $mainTab);
 
@@ -586,24 +586,24 @@ class dhcpConfiguration extends simplePlugin
     $this->cn = $this->attributesAccess['dhcpSections']->getGlobalCn();
   }
 
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
     $this->cn = $this->attributesAccess['dhcpSections']->getGlobalCn();
   }
 
-  function save()
+  function save ()
   {
     $this->cn = $this->attributesAccess['dhcpSections']->getGlobalCn();
     return parent::save();
   }
 
-  protected function shouldSave()
+  protected function shouldSave ()
   {
     return TRUE;
   }
 
-  protected function ldap_save()
+  protected function ldap_save ()
   {
     global $config;
     $this->ldap_error = 'Success';
@@ -612,7 +612,7 @@ class dhcpConfiguration extends simplePlugin
     $ldap->cd($config->current['BASE']);
     $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn));
     $cache  = $this->attributesAccess['dhcpSections']->getCache();
-    $errors = array();
+    $errors = [];
     $new    = ($this->orig_dn == 'new');
     foreach ($cache as $dn => $data) {
       if (($this->dn != $this->orig_dn) && !$new) {
@@ -643,13 +643,13 @@ class dhcpConfiguration extends simplePlugin
         }
 
         /* Build new entry */
-        $attrs = array();
+        $attrs = [];
         foreach ($data as $attribute => $values) {
           if ($attribute == 'MODIFIED' || $attribute == 'dn') {
             continue;
           }
 
-          if (in_array($attribute, array('dhcpServerDN','dhcpFailOverPeerDN'))) {
+          if (in_array($attribute, ['dhcpServerDN','dhcpFailOverPeerDN'])) {
             foreach ($values as $v_key => $value) {
               $values[$v_key] = preg_replace('/'.preg_quote($this->orig_dn, '/').'$/i', $this->dn, $value);
             }
@@ -671,7 +671,7 @@ class dhcpConfiguration extends simplePlugin
               $attrs[$attribute] = $values;
             }
           } elseif ($modify) {
-            $attrs[$attribute] = array();
+            $attrs[$attribute] = [];
           }
         }
 
diff --git a/dhcp/admin/dhcp/class_dhcpManagement.inc b/dhcp/admin/dhcp/class_dhcpManagement.inc
index f6d056ece8b404d591c2277fbfaf62f0b0b9dac4..6d2c2fa3a4cc08b2871b96482d12dd89e0fb0b02 100644
--- a/dhcp/admin/dhcp/class_dhcpManagement.inc
+++ b/dhcp/admin/dhcp/class_dhcpManagement.inc
@@ -20,26 +20,26 @@
 
 class dhcpManagement extends simpleManagement
 {
-  protected $objectTypes  = array('dhcpConfiguration');
+  protected $objectTypes  = ['dhcpConfiguration'];
 
   protected $departmentBrowser      = TRUE;
   protected $departmentRootVisible  = TRUE;
   protected $baseMode               = TRUE;
 
-  protected $autoFilterAttributes = array('dn', 'cn', 'description');
+  protected $autoFilterAttributes = ['dn', 'cn', 'description'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('DHCP'),
       'plDescription' => _('DHCP Management'),
       'plIcon'        => 'geticon.php?context=applications&icon=dhcp&size=48',
-      'plSection'     => array('systems' => array('name' => _('Systems'), 'priority' => 10)),
+      'plSection'     => ['systems' => ['name' => _('Systems'), 'priority' => 10]],
       'plPriority'    => 2,
-      'plManages'     => array('dhcpConfiguration'),
+      'plManages'     => ['dhcpConfiguration'],
 
-      'plProvidedAcls'  => array()
-    );
+      'plProvidedAcls'  => []
+    ];
   }
 }
 ?>
diff --git a/dhcp/admin/dhcp/class_dhcpPlugin.inc b/dhcp/admin/dhcp/class_dhcpPlugin.inc
index 98d898eb903dae0e1c55e1e24c3642c77ec23de8..851e56e1b055de6d253a7bcaa3cbf65e3028597e 100644
--- a/dhcp/admin/dhcp/class_dhcpPlugin.inc
+++ b/dhcp/admin/dhcp/class_dhcpPlugin.inc
@@ -26,36 +26,36 @@ class dhcpPlugin extends simplePlugin
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('DHCP'),
-        'attrs' => array(
-          new HostNameAttribute (
+        'attrs' => [
+          new HostNameAttribute(
             _('Name'), _('Name of this DHCP configuration'),
             'cn', TRUE
           ),
-          new OrderedArrayAttribute (
+          new OrderedArrayAttribute(
             new StringAttribute(
               _('Options'), _('The DHCP options'),
               'dhcpOption', FALSE
             ),
             // Order disabled, Default values, Edit enabled
-            FALSE, array(), TRUE
+            FALSE, [], TRUE
           ),
-          new OrderedArrayAttribute (
+          new OrderedArrayAttribute(
             new StringAttribute(
               _('Statements'), _('The DHCP statements'),
               'dhcpStatements', FALSE
             ),
-            FALSE, array(), TRUE
+            FALSE, [], TRUE
           ),
-          new TextAreaAttribute (
+          new TextAreaAttribute(
             _('Comments'), _('Comments about this DHCP object'),
             'dhcpComments', FALSE
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($plugin, $dn, $attrs = NULL)
@@ -69,10 +69,10 @@ class dhcpPlugin extends simplePlugin
             $value['count'] = count($value);
           }
         } else {
-          $value = array(
+          $value = [
             $value,
             'count' => 1
-          );
+          ];
         }
       }
       unset($value);
@@ -93,7 +93,7 @@ class dhcpPlugin extends simplePlugin
     $this->set_acl_base($this->base);
   }
 
-  function execute()
+  function execute ()
   {
     return parent::execute()."\n".
     '<p class="plugbottom">'."\n".
@@ -102,24 +102,24 @@ class dhcpPlugin extends simplePlugin
     '</p>';
   }
 
-  function save()
+  function save ()
   {
     $this->dn = $this->compute_dn();
-    @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, 'save');
+    @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, 'save');
     $this->prepare_save();
-    $this->attrs['cn']          = array($this->cn);
+    $this->attrs['cn']          = [$this->cn];
     $this->attrs['objectClass'] = $this->objectclasses;
     $this->attrs['dn']          = $this->dn;
     $this->attrs['MODIFIED']    = TRUE;
     return $this->attrs;
   }
 
-  function compute_dn()
+  function compute_dn ()
   {
     return 'cn='.ldap_escape_dn($this->attributesAccess['cn']->computeLdapValue()).','.$this->base;
   }
 
-  function getOption($option)
+  function getOption ($option)
   {
     if (isset($this->dhcpOption)) {
       foreach ($this->dhcpOption as $line) {
@@ -131,7 +131,7 @@ class dhcpPlugin extends simplePlugin
     return NULL;
   }
 
-  function getStatement($statement)
+  function getStatement ($statement)
   {
     if (isset($this->dhcpStatements)) {
       foreach ($this->dhcpStatements as $line) {
diff --git a/dhcp/admin/dhcp/class_dhcpSectionCreationDialog.inc b/dhcp/admin/dhcp/class_dhcpSectionCreationDialog.inc
index 53d402f7a98e3242a741310711acd51c24be7c68..857500f7e884b369dc460eb02ade68047c36e89a 100644
--- a/dhcp/admin/dhcp/class_dhcpSectionCreationDialog.inc
+++ b/dhcp/admin/dhcp/class_dhcpSectionCreationDialog.inc
@@ -29,7 +29,7 @@ class DhcpSectionCreationDialog extends GenericDialog
   protected $initialObjectValue;
   protected $selectAttribute;
 
-  function __construct($simplePlugin, &$attribute, $classtype, $parentdn, $editingValue = NULL)
+  function __construct ($simplePlugin, &$attribute, $classtype, $parentdn, $editingValue = NULL)
   {
     $this->plugin     = $simplePlugin;
     $this->attribute  = $attribute;
@@ -43,7 +43,7 @@ class DhcpSectionCreationDialog extends GenericDialog
     $this->initialObjectValue = $editingValue;
 
     $sections = dhcpConfiguration::$sectionMap[$this->classtype];
-    $t_sections = array();
+    $t_sections = [];
     foreach ($sections as $section) {
       $t_sections[$section] = $this->plugin->types[$section];
     }
@@ -88,13 +88,13 @@ class DhcpSectionCreationDialog extends GenericDialog
     $smarty->assign('section',        _('Create new DHCP section'));
     $smarty->assign('sectionId',      'dhcpCreation');
     $smarty->assign('sectionClasses', '');
-    $attributes = array();
+    $attributes = [];
     $smarty->assign($this->selectAttribute->getAcl().'ACL', 'rwcdm');
     $this->selectAttribute->renderAttribute($attributes, FALSE);
     $smarty->assign('attributes', $attributes);
-    $sections = array(
+    $sections = [
       'dhcp' => $smarty->fetch(get_template_path('simpleplugin_section.tpl'))
-    );
+    ];
     $smarty->assign('sections', $sections);
     $smarty->assign('hiddenPostedInput', get_class($this).'_posted');
     $smarty->assign('focusedField', $this->selectAttribute->getLdapName());
@@ -127,7 +127,7 @@ class DhcpSectionCreationDialog extends GenericDialog
     return FALSE;
   }
 
-  function save_dhcp()
+  function save_dhcp ()
   {
     $this->dialog->save_object();
     $messages = $this->dialog->check();
diff --git a/dhcp/admin/dhcp/sections/class_dhcpClass.inc b/dhcp/admin/dhcp/sections/class_dhcpClass.inc
index a049001f40f3a1c09d6e1971c34b8fecd89d37d4..14dd7f93db5a798ef01e40de2a156109b4355935 100644
--- a/dhcp/admin/dhcp/sections/class_dhcpClass.inc
+++ b/dhcp/admin/dhcp/sections/class_dhcpClass.inc
@@ -20,15 +20,15 @@
 
 class dhcpClass extends dhcpPlugin
 {
-  public $objectclasses = array('dhcpClass');
+  public $objectclasses = ['dhcpClass'];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('DHCP class'),
       'plDescription'   => _('DHCP class'),
-      'plCategory'      => array('dhcpConfiguration'),
+      'plCategory'      => ['dhcpConfiguration'],
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 }
diff --git a/dhcp/admin/dhcp/sections/class_dhcpDnsZone.inc b/dhcp/admin/dhcp/sections/class_dhcpDnsZone.inc
index c22a80e6ea38e48d345ecf369557ff841fc0361e..00087a3454207a730664e455b1d9ab73c18acb31 100644
--- a/dhcp/admin/dhcp/sections/class_dhcpDnsZone.inc
+++ b/dhcp/admin/dhcp/sections/class_dhcpDnsZone.inc
@@ -20,52 +20,52 @@
 
 class dhcpDnsZone extends dhcpPlugin
 {
-  public $objectclasses = array('dhcpDnsZone');
+  public $objectclasses = ['dhcpDnsZone'];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('DHCP DNS update zone'),
       'plDescription'   => _('DHCP DNS update zone'),
-      'plCategory'      => array('dhcpConfiguration'),
+      'plCategory'      => ['dhcpConfiguration'],
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('DHCP'),
-        'attrs' => array(
-          new HostNameAttribute (
+        'attrs' => [
+          new HostNameAttribute(
             _('Name'), _('Name of this DHCP configuration'),
             'cn', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('DNS Zone Server'), _('Master server of the DNS Zone'),
             'dhcpDnsZoneServer', TRUE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Tsig key'), _('The TSig key DN'),
             'dhcpKeyDN', FALSE
           ),
-          new TextAreaAttribute (
+          new TextAreaAttribute(
             _('Comments'), _('Comments about this DHCP object'),
             'dhcpComments', FALSE
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($plugin, $dn, $attrs = NULL)
   {
     global $config;
     parent::__construct($plugin, $dn, $attrs);
-    $keys = array();
+    $keys = [];
     $ldap = $config->get_ldap_link();
-    $ldap->search('(objectClass=dhcpTSigKey)', array('dn','cn'));
+    $ldap->search('(objectClass=dhcpTSigKey)', ['dn','cn']);
     while ($attrs = $ldap->fetch()) {
       $keys[$attrs['dn']] = $attrs['cn'][0];
     }
diff --git a/dhcp/admin/dhcp/sections/class_dhcpFailOverPeer.inc b/dhcp/admin/dhcp/sections/class_dhcpFailOverPeer.inc
index db07f58e0568452b7c9df140b0527ccb4abbbcfa..b840b2297c8a4f8409315758737aaddf43e62a8c 100644
--- a/dhcp/admin/dhcp/sections/class_dhcpFailOverPeer.inc
+++ b/dhcp/admin/dhcp/sections/class_dhcpFailOverPeer.inc
@@ -20,81 +20,81 @@
 
 class dhcpFailOverPeer extends dhcpPlugin
 {
-  public $objectclasses = array('dhcpFailOverPeer');
+  public $objectclasses = ['dhcpFailOverPeer'];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('DHCP failover peer'),
       'plDescription'   => _('DHCP failover peer'),
-      'plCategory'      => array('dhcpConfiguration'),
+      'plCategory'      => ['dhcpConfiguration'],
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('DHCP'),
-        'attrs' => array(
-          new HostNameAttribute (
+        'attrs' => [
+          new HostNameAttribute(
             _('Name'), _('Name of this DHCP configuration'),
             'cn', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Primary server'), _('IP address or DNS name of the server playing primary role in DHC Load Balancing and Fail over'),
             'dhcpFailOverPrimaryServer', TRUE
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Primary port'), _('Port on which primary server listens for connections from its fail over peer (secondary server)'),
             'dhcpFailOverPrimaryPort', TRUE,
             0, FALSE, 519
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Secondary server'), _('IP address or DNS name of the server playing secondary role in DHC Load Balancing and Fail over'),
             'dhcpFailOverSecondaryServer', TRUE
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Secondary port'), _('Port on which secondary server listens for connections from its fail over peer (primary server)'),
             'dhcpFailOverSecondaryPort', TRUE,
             0, FALSE, 520
           ),
-          new TimeAttribute (
+          new TimeAttribute(
             _('Response delay'), _('Maximum response time in seconds, before Server assumes that connection to fail over peer has failed'),
             'dhcpFailOverResponseDelay', FALSE,
             0, FALSE, 60
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Unacked updates'), _('Number of BNDUPD messages that server can send before it receives BNDACK from its fail over peer'),
             'dhcpFailOverUnackedUpdates', FALSE,
             0, FALSE, 10
           ),
-          new TimeAttribute (
+          new TimeAttribute(
             _('Maximum Client Lead Time'), _('Maximum Client Lead Time configuration in seconds, as defined in DHCP Failover Protocol [FAILOVR]'),
             'dhcpMaxClientLeadTime', TRUE,
             0, FALSE, 3600
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Split'), _('Split between the primary and secondary servers for fail over purpose'),
             'dhcpFailOverSplit', TRUE,
             0, FALSE, 128
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('HashBucketAssignment'), _('HashBucketAssignment bit map for the DHCP Server, as defined in DHC Load Balancing Algorithm [RFC 3074]'),
             'dhcpHashBucketAssignment', FALSE
           ),
-          new TimeAttribute (
+          new TimeAttribute(
             _('Load balance time'), _('Cutoff time in seconds, after which load balance is disabled'),
             'dhcpFailOverLoadBalanceTime', FALSE,
             0, FALSE, 3
           ),
-          new TextAreaAttribute (
+          new TextAreaAttribute(
             _('Comments'), _('Comments about this DHCP object'),
             'dhcpComments', FALSE
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 }
diff --git a/dhcp/admin/dhcp/sections/class_dhcpGroup.inc b/dhcp/admin/dhcp/sections/class_dhcpGroup.inc
index e7e2c08dcb58c9ae8444e463d301b980ba38b39b..b2b07149dcc8c580db8e86ae43fe44726703e807 100644
--- a/dhcp/admin/dhcp/sections/class_dhcpGroup.inc
+++ b/dhcp/admin/dhcp/sections/class_dhcpGroup.inc
@@ -20,15 +20,15 @@
 
 class dhcpGroup extends dhcpPlugin
 {
-  public $objectclasses = array('dhcpGroup');
+  public $objectclasses = ['dhcpGroup'];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('DHCP group'),
       'plDescription'   => _('DHCP group'),
-      'plCategory'      => array('dhcpConfiguration'),
+      'plCategory'      => ['dhcpConfiguration'],
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 }
diff --git a/dhcp/admin/dhcp/sections/class_dhcpHost.inc b/dhcp/admin/dhcp/sections/class_dhcpHost.inc
index 00a8f24fc04f605e253772584bfc49da9cb50c45..38adc776ccb60acb7f28be743ae63761d249817e 100644
--- a/dhcp/admin/dhcp/sections/class_dhcpHost.inc
+++ b/dhcp/admin/dhcp/sections/class_dhcpHost.inc
@@ -20,52 +20,52 @@
 
 class dhcpHost extends dhcpPlugin
 {
-  public $objectclasses = array('dhcpHost');
+  public $objectclasses = ['dhcpHost'];
   private $parentPlugin;
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('DHCP host'),
       'plDescription'   => _('DHCP host'),
-      'plCategory'      => array('dhcpConfiguration'),
+      'plCategory'      => ['dhcpConfiguration'],
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
     $attributesInfo = parent::getAttributesInfo();
-    $attributesInfo['host'] = array(
+    $attributesInfo['host'] = [
       'name'  => _('Host'),
-      'attrs' => array(
+      'attrs' => [
         new CompositeAttribute(
           _('The client hardware address'), 'dhcpHWAddress',
-          array(
-            new SelectAttribute (
+          [
+            new SelectAttribute(
               '', _('The hardware address type'),
               'dhcpHWAddress_type', TRUE,
-              array(  'ethernet',   'fddi',   'token-ring'), 'ethernet',
-              array(_('Ethernet'),_('FDDI'),_('Token Ring'))
+              [  'ethernet',   'fddi',   'token-ring'], 'ethernet',
+              [_('Ethernet'),_('FDDI'),_('Token Ring')]
             ),
-            new StringAttribute (
+            new StringAttribute(
               '', _('The client hardware address'),
               'dhcpHWAddress_address', TRUE
             ),
-          ),
+          ],
           '/^([^ ]+) ([^ ]+)$/',
           '%s %s',
           '',
           _('Hardware address')
         )
-      )
-    );
+      ]
+    ];
     $attributesInfo['host']['attrs'][0]->setRequired(TRUE);
     $attributesInfo['host']['attrs'][0]->setLinearRendering(TRUE);
     $attributesInfo['main']['attrs'][2]->setDefaultValue(
-      array(
+      [
         'fixed-address ip',
-      )
+      ]
     );
     return $attributesInfo;
   }
@@ -76,7 +76,7 @@ class dhcpHost extends dhcpPlugin
     parent::__construct($plugin, $dn, $attrs);
   }
 
-  function check()
+  function check ()
   {
     $messages = parent::check();
     $dn = $this->dn;
diff --git a/dhcp/admin/dhcp/sections/class_dhcpPool.inc b/dhcp/admin/dhcp/sections/class_dhcpPool.inc
index e3bcbd613f0b264ca88ec0a977fddb64028d8041..a5ef0c7a23121e88e40db7f6585a641dbb9f561b 100644
--- a/dhcp/admin/dhcp/sections/class_dhcpPool.inc
+++ b/dhcp/admin/dhcp/sections/class_dhcpPool.inc
@@ -20,40 +20,40 @@
 
 class dhcpPool extends dhcpPlugin
 {
-  public $objectclasses = array('dhcpPool');
+  public $objectclasses = ['dhcpPool'];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('DHCP pool'),
       'plDescription'   => _('DHCP pool'),
-      'plCategory'      => array('dhcpConfiguration'),
+      'plCategory'      => ['dhcpConfiguration'],
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
     $attributesInfo = parent::getAttributesInfo();
-    $attributesInfo['pool'] = array(
+    $attributesInfo['pool'] = [
       'name'  => _('Pool'),
-      'attrs' => array(
-        new SetAttribute (
-          new StringAttribute (
+      'attrs' => [
+        new SetAttribute(
+          new StringAttribute(
             _('Range'), _('The starting & ending IP Addresses in the range (inclusive), separated by a space; if the range only contains one address, then just the address can be specified. Each range is defined as a separate value.'),
             'dhcpRange', TRUE,
             '', '',
             '/^[0-9\.:]+(\s[0-9\.:]+)?$/'
           )
         ),
-        new SetAttribute (
-          new StringAttribute (
+        new SetAttribute(
+          new StringAttribute(
             _('Permit list'), _('This attribute contains the permit lists associated with a pool. Each permit list is defined as a separate value.'),
             'dhcpPermitList', FALSE
           )
         ),
-      )
-    );
+      ]
+    ];
     return $attributesInfo;
   }
 }
diff --git a/dhcp/admin/dhcp/sections/class_dhcpService.inc b/dhcp/admin/dhcp/sections/class_dhcpService.inc
index ad01d994f0595da8c52599eb90e57171fd75cb81..5b33692d773d34837e4944a545a62c00a15b48f0 100644
--- a/dhcp/admin/dhcp/sections/class_dhcpService.inc
+++ b/dhcp/admin/dhcp/sections/class_dhcpService.inc
@@ -20,28 +20,28 @@
 
 class dhcpService extends dhcpPlugin
 {
-  public $objectclasses = array('dhcpService');
+  public $objectclasses = ['dhcpService'];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('DHCP service'),
       'plDescription'   => _('DHCP service'),
-      'plCategory'      => array('dhcpConfiguration'),
+      'plCategory'      => ['dhcpConfiguration'],
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
     $attributesInfo = parent::getAttributesInfo();
     $attributesInfo['main']['attrs'][2]->setDefaultValue(
-      array(
+      [
         'default-lease-time 600',
         'max-lease-time 7200',
         'authoritative',
         'ddns-update-style none'
-      )
+      ]
     );
     $attributesInfo['main']['attrs'][] = new ObjectSelectAttribute(_('DHCP Primary'), _('Primary DHCP server'), 'dhcpPrimaryDN', FALSE, 'server');
     $attributesInfo['main']['attrs'][] = new ObjectSelectAttribute(_('DHCP Secondary'), _('Secondary DHCP server'), 'dhcpSecondaryDN', FALSE, 'server');
diff --git a/dhcp/admin/dhcp/sections/class_dhcpSharedNetwork.inc b/dhcp/admin/dhcp/sections/class_dhcpSharedNetwork.inc
index 8c51423bae13ffc1d5b1324c873b4e3ec0fdd004..6b0afa9c77a471e6fd86d48118b30ed23cacb667 100644
--- a/dhcp/admin/dhcp/sections/class_dhcpSharedNetwork.inc
+++ b/dhcp/admin/dhcp/sections/class_dhcpSharedNetwork.inc
@@ -20,27 +20,27 @@
 
 class dhcpSharedNetwork extends dhcpPlugin
 {
-  public $objectclasses = array('dhcpSharedNetwork');
+  public $objectclasses = ['dhcpSharedNetwork'];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('DHCP shared network'),
       'plDescription'   => _('DHCP shared network'),
-      'plCategory'      => array('dhcpConfiguration'),
+      'plCategory'      => ['dhcpConfiguration'],
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
     $attributesInfo = parent::getAttributesInfo();
     $attributesInfo['main']['attrs'][2]->setDefaultValue(
-      array(
+      [
         'deny unknown-clients',
         'deny bootp',
         'deny booting',
-      )
+      ]
     );
     return $attributesInfo;
   }
diff --git a/dhcp/admin/dhcp/sections/class_dhcpSubClass.inc b/dhcp/admin/dhcp/sections/class_dhcpSubClass.inc
index 2ecc750a3356825e8124360ee42b7c1759191457..226c25a1ff1e25b58223e5b1da68d385a7a9c88a 100644
--- a/dhcp/admin/dhcp/sections/class_dhcpSubClass.inc
+++ b/dhcp/admin/dhcp/sections/class_dhcpSubClass.inc
@@ -20,15 +20,15 @@
 
 class dhcpSubClass extends dhcpPlugin
 {
-  public $objectclasses = array('dhcpSubClass');
+  public $objectclasses = ['dhcpSubClass'];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('DHCP subclass'),
       'plDescription'   => _('DHCP subclass'),
-      'plCategory'      => array('dhcpConfiguration'),
+      'plCategory'      => ['dhcpConfiguration'],
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 }
diff --git a/dhcp/admin/dhcp/sections/class_dhcpSubnet.inc b/dhcp/admin/dhcp/sections/class_dhcpSubnet.inc
index 42bbb944ca4d0f1a84fa91972326e0877b063389..903d9a1a3d725184955a08a16ed40253dfb841cb 100644
--- a/dhcp/admin/dhcp/sections/class_dhcpSubnet.inc
+++ b/dhcp/admin/dhcp/sections/class_dhcpSubnet.inc
@@ -20,39 +20,39 @@
 
 class dhcpSubnet extends dhcpPlugin
 {
-  public $objectclasses = array('dhcpSubnet');
+  public $objectclasses = ['dhcpSubnet'];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('DHCP subnet'),
       'plDescription'   => _('DHCP subnet'),
-      'plCategory'      => array('dhcpConfiguration'),
+      'plCategory'      => ['dhcpConfiguration'],
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
     $attributesInfo = parent::getAttributesInfo();
-    $attributesInfo['subnet'] = array(
+    $attributesInfo['subnet'] = [
       'name'  => _('Subnet'),
-      'attrs' => array(
-        new IntAttribute (
+      'attrs' => [
+        new IntAttribute(
           _('Mask length'), _('The subnet mask length for the subnet. The mask can be easily computed from this length.'),
           'dhcpNetMask', TRUE,
           0, 255, 24
         ),
-        new SetAttribute (
-          new StringAttribute (
+        new SetAttribute(
+          new StringAttribute(
             _('Range'), _('The starting & ending IP Addresses in the range (inclusive), separated by a space; if the range only contains one address, then just the address can be specified. Each range is defined as a separate value.'),
             'dhcpRange', FALSE,
             '', '',
             '/^[0-9\.:]+(\s[0-9\.:]+)?$/'
           )
         ),
-      )
-    );
+      ]
+    ];
     $attributesInfo['main']['attrs'][0] = new IPAttribute(
       _('Network address'), _('Network address of this subnet'),
       'cn', TRUE
diff --git a/dhcp/admin/dhcp/sections/class_dhcpTSigKey.inc b/dhcp/admin/dhcp/sections/class_dhcpTSigKey.inc
index 0c5cf5299812eb8d79be4b3f02fd82e9b6d09d87..35e078e65489a115c879c324141f951e8bd8dcdb 100644
--- a/dhcp/admin/dhcp/sections/class_dhcpTSigKey.inc
+++ b/dhcp/admin/dhcp/sections/class_dhcpTSigKey.inc
@@ -20,43 +20,43 @@
 
 class dhcpTSigKey extends dhcpPlugin
 {
-  public $objectclasses = array('dhcpTSigKey');
+  public $objectclasses = ['dhcpTSigKey'];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('DHCP DNS update key'),
       'plDescription'   => _('DHCP DNS update key'),
-      'plCategory'      => array('dhcpConfiguration'),
+      'plCategory'      => ['dhcpConfiguration'],
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('DHCP'),
-        'attrs' => array(
-          new HostNameAttribute (
+        'attrs' => [
+          new HostNameAttribute(
             _('Name'), _('Name of this DHCP configuration'),
             'cn', TRUE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Algorithm'), _('Algorithm to generate TSIG Key'),
             'dhcpKeyAlgorithm', TRUE,
-            array('HMAC-MD5','RSAMD5','RSASHA1','DSA','DH')
+            ['HMAC-MD5','RSAMD5','RSASHA1','DSA','DH']
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Secret'), _('Secret to generate TSIG Key'),
             'dhcpKeySecret', TRUE
           ),
-          new TextAreaAttribute (
+          new TextAreaAttribute(
             _('Comments'), _('Comments about this DHCP object'),
             'dhcpComments', FALSE
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 }
diff --git a/dhcp/admin/systems/class_dhcpSystem.inc b/dhcp/admin/systems/class_dhcpSystem.inc
index 53c2a5aac365582a9e678fd8d548196a67b38ae6..4c3d6ab24acb65a0f5dc689c3657a978fd44089c 100644
--- a/dhcp/admin/systems/class_dhcpSystem.inc
+++ b/dhcp/admin/systems/class_dhcpSystem.inc
@@ -20,14 +20,14 @@
 
 class DhcpHostsAttribute extends OrderedArrayAttribute
 {
-  private $nodesCache = array();
+  private $nodesCache = [];
   private static $templateValueSeparator = '^';
 
-  function __construct ($label, $description, $ldapName, array $values = array(), $acl = '')
+  function __construct ($label, $description, $ldapName, array $values = [], $acl = '')
   {
     $attribute = new CompositeAttribute(
       $description, $ldapName,
-      array(
+      [
         new SelectAttribute(
           '', _('The DHCP configuration or subsection in which this host should be added'),
           $ldapName.'_parent', TRUE
@@ -43,18 +43,18 @@ class DhcpHostsAttribute extends OrderedArrayAttribute
         new HiddenAttribute(
           'dn'
         )
-      ),
+      ],
       FALSE,
       FALSE,
       $acl,
       $label
     );
     parent::__construct($attribute, FALSE, $values, TRUE);
-    $this->setHeaders(array(
+    $this->setHeaders([
       _('Parent'),
       _('Mac'),
       _('IP')
-    ));
+    ]);
     $this->setInLdap(FALSE);
   }
 
@@ -62,7 +62,7 @@ class DhcpHostsAttribute extends OrderedArrayAttribute
   {
   }
 
-  protected function getAttributeArrayValue($key, $value)
+  protected function getAttributeArrayValue ($key, $value)
   {
     return array_slice($value, 0, 3);
   }
@@ -73,7 +73,7 @@ class DhcpHostsAttribute extends OrderedArrayAttribute
     if (is_object($this->plugin)) {
       $this->loadChoices();
       if ($this->plugin->is_template) {
-        $this->value = array();
+        $this->value = [];
         $this->loadAdditionalTemplatesValues();
       } else {
         $this->loadRecords();
@@ -92,22 +92,22 @@ class DhcpHostsAttribute extends OrderedArrayAttribute
     }
   }
 
-  function loadChoices()
+  function loadChoices ()
   {
     list($nodesChoices, $nodes) = dhcpSystem::getDhcpParentNodes();
     $macs   = $this->plugin->parent->getBaseObject()->macAddress;
     if (!is_array($macs)) {
-      $macs = array($macs);
+      $macs = [$macs];
     }
     $ips    = $this->plugin->parent->getBaseObject()->ipHostNumber;
     if (!is_array($ips)) {
-      $ips = array($ips);
+      $ips = [$ips];
     }
     $this->nodesCache = $nodes;
     $this->setChoices($nodesChoices, $macs, $ips);
   }
 
-  function setChoices(array $parentNodes, array $macs, array $ips)
+  function setChoices (array $parentNodes, array $macs, array $ips)
   {
     $this->attribute->attributes[0]->setChoices(array_keys($parentNodes), array_values($parentNodes));
     if (is_object($this->plugin) && $this->plugin->is_template) {
@@ -128,15 +128,15 @@ class DhcpHostsAttribute extends OrderedArrayAttribute
     }
   }
 
-  function loadRecords()
+  function loadRecords ()
   {
     global $config;
 
-    $this->value = array();
+    $this->value = [];
 
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(&(objectClass=dhcpHost)(cn='.$this->plugin->parent->getBaseObject()->cn.')(dhcpHWAddress=*))', array('dhcpStatements','dhcpHWAddress','dn'));
+    $ldap->search('(&(objectClass=dhcpHost)(cn='.$this->plugin->parent->getBaseObject()->cn.')(dhcpHWAddress=*))', ['dhcpStatements','dhcpHWAddress','dn']);
     while ($attrs = $ldap->fetch()) {
       $ip = '';
       foreach ($attrs['dhcpStatements'] as $statement) {
@@ -145,21 +145,34 @@ class DhcpHostsAttribute extends OrderedArrayAttribute
           break;
         }
       }
-      $this->value[] = array(
+      $this->value[] = [
         preg_replace('/^[^,]+,/', '', $attrs['dn']),
         preg_replace('/ethernet (([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2}))/', '\\1', $attrs['dhcpHWAddress'][0]),
         $ip,
         $attrs['dn']
-      );
+      ];
     }
     $this->initialValue = $this->getValue();
   }
 
   /* Special LDAP treatment that this attribute does after plugin ldap save */
-  function postLdapSave ($ldap, $fullrewrite, $ipchanged, array $oldips, array $newips, $macchanged, array $oldmacs, array $newmacs)
+  function postLdapSave ($ldap, $fullrewrite, $ipchanged, $oldips, $newips, $macchanged, $oldmacs, $newmacs)
   {
     global $config, $ui;
 
+    if (!is_array($oldips)) {
+      $oldips = [$oldips];
+    }
+    if (!is_array($newips)) {
+      $newips = [$newips];
+    }
+    if (!is_array($oldmacs)) {
+      $oldmacs = [$oldmacs];
+    }
+    if (!is_array($newmacs)) {
+      $newmacs = [$newmacs];
+    }
+
     if ($this->plugin->is_template) {
       return;
     }
@@ -220,7 +233,7 @@ class DhcpHostsAttribute extends OrderedArrayAttribute
       $errors = $dhcpTabs->save();
       msg_dialog::displayChecks($errors);
     }
-    $errors = array();
+    $errors = [];
     foreach ($values as $value) {
       $configDn = $value[0];
       if (preg_match('/([^,]+,'.preg_quote(get_ou('dhcpRDN')).'.*'.preg_quote($config->current['BASE']).')$/', $value[0], $m)) {
@@ -280,39 +293,39 @@ class DhcpHostsAttribute extends OrderedArrayAttribute
 
 class dhcpSystem extends simplePlugin
 {
-  var $objectclasses = array();
+  var $objectclasses = [];
 
   protected $zonesCache;
   protected $loaded = FALSE;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('DHCP'),
       'plDescription'   => _('Edit the DHCP zones of a system'),
       'plIcon'          => 'geticon.php?context=applications&icon=dhcp&size=48',
       'plSmallIcon'     => 'geticon.php?context=applications&icon=dhcp&size=16',
-      'plObjectType'    => array('server','workstation','terminal','printer','component','phone','mobilePhone'),
+      'plObjectType'    => ['server','workstation','terminal','printer','component','phone','mobilePhone'],
       'plPriority'      => 4,
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('DHCP zones'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
+        'class' => ['fullwidth'],
+        'attrs' => [
           new DhcpHostsAttribute(
             '', _('DHCP hosts declared for this system'),
             'dhcpHosts'
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -321,7 +334,7 @@ class dhcpSystem extends simplePlugin
     $this->ignore_account = FALSE;
   }
 
-  function is_this_account($attrs)
+  function is_this_account ($attrs)
   {
     /* Will not work when call from constructor (or when $attrs is not us)
      * See DhcpHostsAttribute::setParent which sets is_account later
@@ -335,22 +348,22 @@ class dhcpSystem extends simplePlugin
     $this->attributesAccess['dhcpHosts']->setParent($this);
   }
 
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
     $this->is_account = $this->is_this_account($this->attrs);
   }
 
-  static function getDhcpParentNodes()
+  static function getDhcpParentNodes ()
   {
     global $config;
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
     $ldap->search('(|(objectClass=dhcpService)(objectClass=dhcpGroup)'.
-                    '(objectClass=dhcpSubnet)(objectClass=dhcpSharedNetwork))', array('cn', 'dhcpNetMask'));
+                    '(objectClass=dhcpSubnet)(objectClass=dhcpSharedNetwork))', ['cn', 'dhcpNetMask']);
 
-    $nodes    = array();
-    $choices  = array();
+    $nodes    = [];
+    $choices  = [];
     while ($attrs = $ldap->fetch()) {
       $subdn = preg_replace('/,'.preg_quote(get_ou('dhcpRDN')).'.+$/', '', $attrs['dn']);
       $parts = ldap_explode_dn($subdn, 1);
@@ -363,11 +376,11 @@ class dhcpSystem extends simplePlugin
       }
       $nodes[$attrs['dn']] = $attrs;
     }
-    return array($choices, $nodes);
+    return [$choices, $nodes];
   }
 
   /* Returns error text if the IP is not in the given subnet LDAP node, or TRUE */
-  static function dhcpIsIpInSubnet($subnetAttrs, $ip)
+  static function dhcpIsIpInSubnet ($subnetAttrs, $ip)
   {
     if (isset($subnetAttrs['dhcpNetMask'][0])) {
       if (!tests::is_in_network($subnetAttrs['cn'][0], normalize_netmask($subnetAttrs['dhcpNetMask'][0]), $ip)) {
@@ -377,13 +390,13 @@ class dhcpSystem extends simplePlugin
     return TRUE;
   }
 
-  protected function shouldSave()
+  protected function shouldSave ()
   {
     /* We need ldap_save to always run */
     return TRUE;
   }
 
-  protected function ldap_save()
+  protected function ldap_save ()
   {
     global $config;
 
@@ -406,18 +419,18 @@ class dhcpSystem extends simplePlugin
     );
   }
 
-  protected function ldap_remove()
+  protected function ldap_remove ()
   {
     if ($this->is_template) {
       return parent::ldap_remove();
     } elseif (($this->dn != '') && ($this->dn != 'new')) {
       /* Remove all records */
-      $this->attributesAccess['dhcpHosts']->setValue(array());
+      $this->attributesAccess['dhcpHosts']->setValue([]);
       return $this->ldap_save();
     }
   }
 
-  function adapt_from_template($attrs, $skip = array())
+  function adapt_from_template ($attrs, $skip = [])
   {
     parent::adapt_from_template($attrs, $skip);
     $this->attributesAccess['dhcpHosts']->loadChoices();
diff --git a/dhcp/admin/systems/services/dhcp/class_serviceDHCP.inc b/dhcp/admin/systems/services/dhcp/class_serviceDHCP.inc
index 2df087564d3727eb542c32b459c95b8dc0d80eb8..c7db1399119a9db2970957c380dd9d025df78a54 100644
--- a/dhcp/admin/systems/services/dhcp/class_serviceDHCP.inc
+++ b/dhcp/admin/systems/services/dhcp/class_serviceDHCP.inc
@@ -20,38 +20,38 @@
 
 class serviceDHCP extends simpleService
 {
-  var $objectclasses = array('dhcpServer');
+  var $objectclasses = ['dhcpServer'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('DHCP service'),
       'plDescription' => _('DHCP service'),
       'plIcon'        => 'geticon.php?context=applications&icon=dhcp&size=16',
-      'plForeignKeys' => array(
+      'plForeignKeys' => [
         'dhcpServiceDN' => 'dhcpConfiguration',
-      ),
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('DHCP configurations'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
+        'class' => ['fullwidth'],
+        'attrs' => [
           new SetAttribute(
-            new SelectAttribute (
+            new SelectAttribute(
               '', _('The DN of dhcpService object(s) which contain the configuration information'),
               'dhcpServiceDN'
             )
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $parent = NULL)
diff --git a/dhcp/config/dhcp/class_dhcpConfig.inc b/dhcp/config/dhcp/class_dhcpConfig.inc
index 97d5ca94dc337d6d3b132de46a0ec2a013f2dd52..3ea230292f8f986311c4d1b7d0d2a48c5a9197ff 100644
--- a/dhcp/config/dhcp/class_dhcpConfig.inc
+++ b/dhcp/config/dhcp/class_dhcpConfig.inc
@@ -20,34 +20,34 @@
 
 class dhcpConfig extends simplePlugin
 {
-  var $objectclasses  = array('fdDhcpPluginConf');
+  var $objectclasses  = ['fdDhcpPluginConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('DHCP configuration'),
       'plDescription'   => _('FusionDirectory dhcp plugin configuration'),
-      'plCategory'      => array('configuration'),
-      'plObjectType'    => array('smallConfig'),
+      'plCategory'      => ['configuration'],
+      'plObjectType'    => ['smallConfig'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('DHCP config'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('DHCP RDN'), _('Branch in which DHCP configurations will be stored'),
             'fdDhcpRDN', TRUE,
             'ou=dhcp'
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/dhcp/locale/af_ZA/fusiondirectory.po b/dhcp/locale/af_ZA/fusiondirectory.po
index 1f9e81c521903c77e8f862fdb6958047a8525f41..4eef960f18e695c41c6a0e572670dad2aaf8b244 100644
--- a/dhcp/locale/af_ZA/fusiondirectory.po
+++ b/dhcp/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
@@ -21,7 +21,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr ""
 
@@ -497,31 +497,31 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/ar/fusiondirectory.po b/dhcp/locale/ar/fusiondirectory.po
index 82cc8dadfce8a97c1be5760699d2bb35c407d142..f6684c5a728343226c20657dd9f210abcf5e9466 100644
--- a/dhcp/locale/ar/fusiondirectory.po
+++ b/dhcp/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
@@ -25,7 +25,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr ""
 
@@ -501,31 +501,31 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/ca/fusiondirectory.po b/dhcp/locale/ca/fusiondirectory.po
index 9c2e652da298da393d9bdd447684a9b11ce4efb4..0967239ff780adde978362fa080cfacde6c0bc15 100644
--- a/dhcp/locale/ca/fusiondirectory.po
+++ b/dhcp/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
@@ -25,7 +25,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr ""
 
@@ -501,31 +501,31 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/cs_CZ/fusiondirectory.po b/dhcp/locale/cs_CZ/fusiondirectory.po
index a39ac3e1ccc8f44a2d78ef4eb2da11a6d1e9e56f..54fbc395ed8fa179cc04d2d83ca7a7c3999d95f1 100644
--- a/dhcp/locale/cs_CZ/fusiondirectory.po
+++ b/dhcp/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
@@ -26,7 +26,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr "DHCP"
 
@@ -528,7 +528,7 @@ msgstr "Mac"
 msgid "IP"
 msgstr "IP adresa"
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
@@ -537,24 +537,24 @@ msgstr ""
 "„%s“ je uzamčeno („%s“ od „%s“), není možné uložit úpravy v tomto DHCP "
 "nastavení"
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr "Hodnota pro vícehodnotovou kolonku „%s“ není pole"
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr "Upravit DHCP zóny systému"
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr "DHCP zóny"
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr "DHCP stroje deklarované pro tento systém"
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr "IP adresa %s není v síti %s/%d"
diff --git a/dhcp/locale/de/fusiondirectory.po b/dhcp/locale/de/fusiondirectory.po
index 9cfb492723aa6f5cf14c53cb981ad1343a9588f8..a2001a3b28b60b06f2c7378a5c1e97e84b066659 100644
--- a/dhcp/locale/de/fusiondirectory.po
+++ b/dhcp/locale/de/fusiondirectory.po
@@ -6,15 +6,16 @@
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2017
 # Jonah Bohlmann <jokabo66@gmail.com>, 2018
+# Ettore Atalan <atalanttore@googlemail.com>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
-"Last-Translator: Jonah Bohlmann <jokabo66@gmail.com>, 2018\n"
+"Last-Translator: Ettore Atalan <atalanttore@googlemail.com>, 2021\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -26,7 +27,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr "DHCP"
 
@@ -256,7 +257,7 @@ msgstr ""
 
 #: admin/dhcp/sections/class_dhcpPool.inc:51
 msgid "Permit list"
-msgstr ""
+msgstr "Erlaubnisliste"
 
 #: admin/dhcp/sections/class_dhcpPool.inc:51
 msgid ""
@@ -504,31 +505,31 @@ msgstr ""
 msgid "IP"
 msgstr "IP"
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr "DHCP-Zonen"
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/el_GR/fusiondirectory.po b/dhcp/locale/el_GR/fusiondirectory.po
index 86ec285ff5e8125812e314f57c0f75f09d17cdd4..e95df0b781bdafee10145b05f5ba4ee4ce9fcac5 100644
--- a/dhcp/locale/el_GR/fusiondirectory.po
+++ b/dhcp/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
@@ -25,7 +25,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr ""
 
@@ -501,31 +501,31 @@ msgstr ""
 msgid "IP"
 msgstr "IP"
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/en/fusiondirectory.po b/dhcp/locale/en/fusiondirectory.po
index aed6520e8a66166113a16f05a526f4e1a9b8da7c..53db2b9e60462339b80914b89d24fb7302980117 100644
--- a/dhcp/locale/en/fusiondirectory.po
+++ b/dhcp/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -18,9 +18,9 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 
 #: config/dhcp/class_dhcpConfig.inc:28
-#: admin/dhcp/class_dhcpConfiguration.inc:532
+#: admin/dhcp/class_dhcpConfiguration.inc:530
+#: admin/dhcp/class_dhcpConfiguration.inc:531
 #: admin/dhcp/class_dhcpConfiguration.inc:533
-#: admin/dhcp/class_dhcpConfiguration.inc:535
 msgid "DHCP configuration"
 msgstr ""
 
@@ -40,169 +40,208 @@ msgstr ""
 msgid "Branch in which DHCP configurations will be stored"
 msgstr ""
 
-#: admin/dhcp/class_dhcpManagement.inc:34 admin/dhcp/class_dhcpPlugin.inc:31
-#: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
-#: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/dhcp/sections/class_dhcpTSigKey.inc:39
-#: admin/systems/class_dhcpSystem.inc:280
-msgid "DHCP"
+#: admin/systems/class_dhcpSystem.inc:32
+msgid "The DHCP configuration or subsection in which this host should be added"
 msgstr ""
 
-#: admin/dhcp/class_dhcpManagement.inc:35
-msgid "DHCP Management"
+#: admin/systems/class_dhcpSystem.inc:36 admin/systems/class_dhcpSystem.inc:115
+msgid "The Mac address to use in the DHCP host record"
 msgstr ""
 
-#: admin/dhcp/class_dhcpManagement.inc:37
-msgid "Systems"
+#: admin/systems/class_dhcpSystem.inc:40 admin/systems/class_dhcpSystem.inc:120
+msgid "The IP address to use in the DHCP host record"
 msgstr ""
 
-#: admin/dhcp/class_dhcpConfiguration.inc:36
-msgid "Expand DHCP subnet"
+#: admin/systems/class_dhcpSystem.inc:54
+msgid "Parent"
 msgstr ""
 
-#: admin/dhcp/class_dhcpConfiguration.inc:37
-msgid "Expand"
+#: admin/systems/class_dhcpSystem.inc:55
+msgid "Mac"
 msgstr ""
 
-#: admin/dhcp/class_dhcpConfiguration.inc:46
-msgid "Fold DHCP subnet"
+#: admin/systems/class_dhcpSystem.inc:56
+msgid "IP"
 msgstr ""
 
-#: admin/dhcp/class_dhcpConfiguration.inc:47
-msgid "Fold"
+#: admin/systems/class_dhcpSystem.inc:233
+#, php-format
+msgid ""
+"\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
+"DHCP configuration"
 msgstr ""
 
-#: admin/dhcp/class_dhcpConfiguration.inc:111
-#: admin/dhcp/class_dhcpConfiguration.inc:112
-msgid "Insert new DHCP section"
+#: admin/systems/class_dhcpSystem.inc:256
+#, php-format
+msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/dhcp/class_dhcpConfiguration.inc:246
-#: admin/dhcp/class_dhcpPlugin.inc:34
-#: admin/dhcp/sections/class_dhcpFailOverPeer.inc:42
-#: admin/dhcp/sections/class_dhcpDnsZone.inc:42
-#: admin/dhcp/sections/class_dhcpTSigKey.inc:42
-msgid "Name"
+#: admin/systems/class_dhcpSystem.inc:291
+#: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
+#: admin/dhcp/sections/class_dhcpTSigKey.inc:39
+#: admin/dhcp/sections/class_dhcpDnsZone.inc:39
+#: admin/dhcp/class_dhcpPlugin.inc:31 admin/dhcp/class_dhcpManagement.inc:34
+msgid "DHCP"
 msgstr ""
 
-#: admin/dhcp/class_dhcpConfiguration.inc:366
-#: admin/dhcp/class_dhcpConfiguration.inc:407
-#: admin/dhcp/class_dhcpConfiguration.inc:576
-msgid "Global options"
+#: admin/systems/class_dhcpSystem.inc:292
+msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/dhcp/class_dhcpConfiguration.inc:422
-msgid "Error"
+#: admin/systems/class_dhcpSystem.inc:306
+msgid "DHCP zones"
+msgstr ""
+
+#: admin/systems/class_dhcpSystem.inc:310
+msgid "DHCP hosts declared for this system"
+msgstr ""
+
+#: admin/systems/class_dhcpSystem.inc:374
+#, php-format
+msgid "The ip %s is not in the network %s/%d"
 msgstr ""
 
-#: admin/dhcp/class_dhcpConfiguration.inc:422
+#: admin/systems/services/dhcp/class_serviceDHCP.inc:28
+#: admin/systems/services/dhcp/class_serviceDHCP.inc:29
+#: admin/dhcp/sections/class_dhcpService.inc:28
+#: admin/dhcp/sections/class_dhcpService.inc:29
+msgid "DHCP service"
+msgstr ""
+
+#: admin/systems/services/dhcp/class_serviceDHCP.inc:43
+msgid "DHCP configurations"
+msgstr ""
+
+#: admin/systems/services/dhcp/class_serviceDHCP.inc:48
 msgid ""
-"The DHCP configuration set is unkown. Please contact your system "
-"administrator."
+"The DN of dhcpService object(s) which contain the configuration information"
 msgstr ""
 
-#: admin/dhcp/class_dhcpConfiguration.inc:554
-msgid "DHCP Objects"
+#: admin/dhcp/sections/class_dhcpGroup.inc:28
+#: admin/dhcp/sections/class_dhcpGroup.inc:29
+msgid "DHCP group"
 msgstr ""
 
-#: admin/dhcp/class_dhcpConfiguration.inc:564
-msgid "The DHCP sections handled by this server"
+#: admin/dhcp/sections/class_dhcpService.inc:46
+msgid "DHCP Primary"
 msgstr ""
 
-#: admin/dhcp/class_dhcpConfiguration.inc:575
-msgid "Logging"
+#: admin/dhcp/sections/class_dhcpService.inc:46
+msgid "Primary DHCP server"
 msgstr ""
 
-#: admin/dhcp/class_dhcpConfiguration.inc:577
-msgid "Class"
+#: admin/dhcp/sections/class_dhcpService.inc:47
+msgid "DHCP Secondary"
 msgstr ""
 
-#: admin/dhcp/class_dhcpConfiguration.inc:578
-msgid "Subclass"
+#: admin/dhcp/sections/class_dhcpService.inc:47
+msgid "Secondary DHCP server"
+msgstr ""
+
+#: admin/dhcp/sections/class_dhcpHost.inc:29
+#: admin/dhcp/sections/class_dhcpHost.inc:30
+msgid "DHCP host"
 msgstr ""
 
-#: admin/dhcp/class_dhcpConfiguration.inc:579
 #: admin/dhcp/sections/class_dhcpHost.inc:40
+#: admin/dhcp/class_dhcpConfiguration.inc:573
 msgid "Host"
 msgstr ""
 
-#: admin/dhcp/class_dhcpConfiguration.inc:580
-msgid "Group"
+#: admin/dhcp/sections/class_dhcpHost.inc:43
+#: admin/dhcp/sections/class_dhcpHost.inc:52
+msgid "The client hardware address"
 msgstr ""
 
-#: admin/dhcp/class_dhcpConfiguration.inc:581
-#: admin/dhcp/sections/class_dhcpPool.inc:39
-msgid "Pool"
+#: admin/dhcp/sections/class_dhcpHost.inc:46
+msgid "The hardware address type"
 msgstr ""
 
-#: admin/dhcp/class_dhcpConfiguration.inc:582
-#: admin/dhcp/sections/class_dhcpSubnet.inc:39
-msgid "Subnet"
+#: admin/dhcp/sections/class_dhcpHost.inc:49
+msgid "Ethernet"
 msgstr ""
 
-#: admin/dhcp/class_dhcpConfiguration.inc:583
-msgid "Failover peer"
+#: admin/dhcp/sections/class_dhcpHost.inc:49
+msgid "FDDI"
 msgstr ""
 
-#: admin/dhcp/class_dhcpConfiguration.inc:584
-msgid "Shared network"
+#: admin/dhcp/sections/class_dhcpHost.inc:49
+msgid "Token Ring"
 msgstr ""
 
-#: admin/dhcp/class_dhcpConfiguration.inc:585
-msgid "DNS update key"
+#: admin/dhcp/sections/class_dhcpHost.inc:59
+msgid "Hardware address"
 msgstr ""
 
-#: admin/dhcp/class_dhcpConfiguration.inc:586
-msgid "DNS update zones"
+#: admin/dhcp/sections/class_dhcpHost.inc:90
+#, php-format
+msgid "\"%s\" is not a valid IP address."
 msgstr ""
 
-#: admin/dhcp/class_dhcpPlugin.inc:34
-#: admin/dhcp/sections/class_dhcpFailOverPeer.inc:42
-#: admin/dhcp/sections/class_dhcpDnsZone.inc:42
-#: admin/dhcp/sections/class_dhcpTSigKey.inc:42
-msgid "Name of this DHCP configuration"
+#: admin/dhcp/sections/class_dhcpSharedNetwork.inc:28
+#: admin/dhcp/sections/class_dhcpSharedNetwork.inc:29
+msgid "DHCP shared network"
 msgstr ""
 
-#: admin/dhcp/class_dhcpPlugin.inc:39
-msgid "Options"
+#: admin/dhcp/sections/class_dhcpPool.inc:28
+#: admin/dhcp/sections/class_dhcpPool.inc:29
+msgid "DHCP pool"
 msgstr ""
 
-#: admin/dhcp/class_dhcpPlugin.inc:39
-msgid "The DHCP options"
+#: admin/dhcp/sections/class_dhcpPool.inc:39
+#: admin/dhcp/class_dhcpConfiguration.inc:575
+msgid "Pool"
 msgstr ""
 
-#: admin/dhcp/class_dhcpPlugin.inc:47
-msgid "Statements"
+#: admin/dhcp/sections/class_dhcpPool.inc:43
+#: admin/dhcp/sections/class_dhcpSubnet.inc:48
+msgid "Range"
 msgstr ""
 
-#: admin/dhcp/class_dhcpPlugin.inc:47
-msgid "The DHCP statements"
+#: admin/dhcp/sections/class_dhcpPool.inc:43
+#: admin/dhcp/sections/class_dhcpSubnet.inc:48
+msgid ""
+"The starting & ending IP Addresses in the range (inclusive), separated by a "
+"space; if the range only contains one address, then just the address can be "
+"specified. Each range is defined as a separate value."
 msgstr ""
 
-#: admin/dhcp/class_dhcpPlugin.inc:53
-#: admin/dhcp/sections/class_dhcpFailOverPeer.inc:93
-#: admin/dhcp/sections/class_dhcpDnsZone.inc:54
-#: admin/dhcp/sections/class_dhcpTSigKey.inc:55
-msgid "Comments"
+#: admin/dhcp/sections/class_dhcpPool.inc:51
+msgid "Permit list"
 msgstr ""
 
-#: admin/dhcp/class_dhcpPlugin.inc:53
-#: admin/dhcp/sections/class_dhcpFailOverPeer.inc:93
-#: admin/dhcp/sections/class_dhcpDnsZone.inc:54
-#: admin/dhcp/sections/class_dhcpTSigKey.inc:55
-msgid "Comments about this DHCP object"
+#: admin/dhcp/sections/class_dhcpPool.inc:51
+msgid ""
+"This attribute contains the permit lists associated with a pool. Each permit "
+"list is defined as a separate value."
 msgstr ""
 
-#: admin/dhcp/class_dhcpSectionCreationDialog.inc:52
-msgid "Section"
+#: admin/dhcp/sections/class_dhcpSubnet.inc:28
+#: admin/dhcp/sections/class_dhcpSubnet.inc:29
+msgid "DHCP subnet"
 msgstr ""
 
-#: admin/dhcp/class_dhcpSectionCreationDialog.inc:52
-msgid "Choose section type to create"
+#: admin/dhcp/sections/class_dhcpSubnet.inc:39
+#: admin/dhcp/class_dhcpConfiguration.inc:576
+msgid "Subnet"
 msgstr ""
 
-#: admin/dhcp/class_dhcpSectionCreationDialog.inc:88
-msgid "Create new DHCP section"
+#: admin/dhcp/sections/class_dhcpSubnet.inc:42
+msgid "Mask length"
+msgstr ""
+
+#: admin/dhcp/sections/class_dhcpSubnet.inc:42
+msgid ""
+"The subnet mask length for the subnet. The mask can be easily computed from "
+"this length."
+msgstr ""
+
+#: admin/dhcp/sections/class_dhcpSubnet.inc:57
+msgid "Network address"
+msgstr ""
+
+#: admin/dhcp/sections/class_dhcpSubnet.inc:57
+msgid "Network address of this subnet"
 msgstr ""
 
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:28
@@ -210,6 +249,21 @@ msgstr ""
 msgid "DHCP failover peer"
 msgstr ""
 
+#: admin/dhcp/sections/class_dhcpFailOverPeer.inc:42
+#: admin/dhcp/sections/class_dhcpTSigKey.inc:42
+#: admin/dhcp/sections/class_dhcpDnsZone.inc:42
+#: admin/dhcp/class_dhcpConfiguration.inc:245
+#: admin/dhcp/class_dhcpPlugin.inc:34
+msgid "Name"
+msgstr ""
+
+#: admin/dhcp/sections/class_dhcpFailOverPeer.inc:42
+#: admin/dhcp/sections/class_dhcpTSigKey.inc:42
+#: admin/dhcp/sections/class_dhcpDnsZone.inc:42
+#: admin/dhcp/class_dhcpPlugin.inc:34
+msgid "Name of this DHCP configuration"
+msgstr ""
+
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:46
 msgid "Primary server"
 msgstr ""
@@ -306,35 +360,23 @@ msgstr ""
 msgid "Cutoff time in seconds, after which load balance is disabled"
 msgstr ""
 
-#: admin/dhcp/sections/class_dhcpDnsZone.inc:28
-#: admin/dhcp/sections/class_dhcpDnsZone.inc:29
-msgid "DHCP DNS update zone"
-msgstr ""
-
-#: admin/dhcp/sections/class_dhcpDnsZone.inc:46
-msgid "DNS Zone Server"
-msgstr ""
-
-#: admin/dhcp/sections/class_dhcpDnsZone.inc:46
-msgid "Master server of the DNS Zone"
-msgstr ""
-
-#: admin/dhcp/sections/class_dhcpDnsZone.inc:50
-msgid "Tsig key"
-msgstr ""
-
-#: admin/dhcp/sections/class_dhcpDnsZone.inc:50
-msgid "The TSig key DN"
+#: admin/dhcp/sections/class_dhcpFailOverPeer.inc:93
+#: admin/dhcp/sections/class_dhcpTSigKey.inc:55
+#: admin/dhcp/sections/class_dhcpDnsZone.inc:54
+#: admin/dhcp/class_dhcpPlugin.inc:53
+msgid "Comments"
 msgstr ""
 
-#: admin/dhcp/sections/class_dhcpSharedNetwork.inc:28
-#: admin/dhcp/sections/class_dhcpSharedNetwork.inc:29
-msgid "DHCP shared network"
+#: admin/dhcp/sections/class_dhcpFailOverPeer.inc:93
+#: admin/dhcp/sections/class_dhcpTSigKey.inc:55
+#: admin/dhcp/sections/class_dhcpDnsZone.inc:54
+#: admin/dhcp/class_dhcpPlugin.inc:53
+msgid "Comments about this DHCP object"
 msgstr ""
 
-#: admin/dhcp/sections/class_dhcpClass.inc:28
-#: admin/dhcp/sections/class_dhcpClass.inc:29
-msgid "DHCP class"
+#: admin/dhcp/sections/class_dhcpSubClass.inc:28
+#: admin/dhcp/sections/class_dhcpSubClass.inc:29
+msgid "DHCP subclass"
 msgstr ""
 
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:28
@@ -358,185 +400,141 @@ msgstr ""
 msgid "Secret to generate TSIG Key"
 msgstr ""
 
-#: admin/dhcp/sections/class_dhcpGroup.inc:28
-#: admin/dhcp/sections/class_dhcpGroup.inc:29
-msgid "DHCP group"
-msgstr ""
-
-#: admin/dhcp/sections/class_dhcpSubnet.inc:28
-#: admin/dhcp/sections/class_dhcpSubnet.inc:29
-msgid "DHCP subnet"
-msgstr ""
-
-#: admin/dhcp/sections/class_dhcpSubnet.inc:42
-msgid "Mask length"
-msgstr ""
-
-#: admin/dhcp/sections/class_dhcpSubnet.inc:42
-msgid ""
-"The subnet mask length for the subnet. The mask can be easily computed from "
-"this length."
+#: admin/dhcp/sections/class_dhcpDnsZone.inc:28
+#: admin/dhcp/sections/class_dhcpDnsZone.inc:29
+msgid "DHCP DNS update zone"
 msgstr ""
 
-#: admin/dhcp/sections/class_dhcpSubnet.inc:48
-#: admin/dhcp/sections/class_dhcpPool.inc:43
-msgid "Range"
+#: admin/dhcp/sections/class_dhcpDnsZone.inc:46
+msgid "DNS Zone Server"
 msgstr ""
 
-#: admin/dhcp/sections/class_dhcpSubnet.inc:48
-#: admin/dhcp/sections/class_dhcpPool.inc:43
-msgid ""
-"The starting & ending IP Addresses in the range (inclusive), separated by a "
-"space; if the range only contains one address, then just the address can be "
-"specified. Each range is defined as a separate value."
+#: admin/dhcp/sections/class_dhcpDnsZone.inc:46
+msgid "Master server of the DNS Zone"
 msgstr ""
 
-#: admin/dhcp/sections/class_dhcpSubnet.inc:57
-msgid "Network address"
+#: admin/dhcp/sections/class_dhcpDnsZone.inc:50
+msgid "Tsig key"
 msgstr ""
 
-#: admin/dhcp/sections/class_dhcpSubnet.inc:57
-msgid "Network address of this subnet"
+#: admin/dhcp/sections/class_dhcpDnsZone.inc:50
+msgid "The TSig key DN"
 msgstr ""
 
-#: admin/dhcp/sections/class_dhcpService.inc:28
-#: admin/dhcp/sections/class_dhcpService.inc:29
-#: admin/systems/services/dhcp/class_serviceDHCP.inc:46
-#: admin/systems/services/dhcp/class_serviceDHCP.inc:47
-msgid "DHCP service"
+#: admin/dhcp/sections/class_dhcpClass.inc:28
+#: admin/dhcp/sections/class_dhcpClass.inc:29
+msgid "DHCP class"
 msgstr ""
 
-#: admin/dhcp/sections/class_dhcpService.inc:46
-msgid "DHCP Primary"
+#: admin/dhcp/class_dhcpConfiguration.inc:36
+msgid "Expand DHCP subnet"
 msgstr ""
 
-#: admin/dhcp/sections/class_dhcpService.inc:46
-msgid "Primary DHCP server"
+#: admin/dhcp/class_dhcpConfiguration.inc:37
+msgid "Expand"
 msgstr ""
 
-#: admin/dhcp/sections/class_dhcpService.inc:47
-msgid "DHCP Secondary"
+#: admin/dhcp/class_dhcpConfiguration.inc:46
+msgid "Fold DHCP subnet"
 msgstr ""
 
-#: admin/dhcp/sections/class_dhcpService.inc:47
-msgid "Secondary DHCP server"
+#: admin/dhcp/class_dhcpConfiguration.inc:47
+msgid "Fold"
 msgstr ""
 
-#: admin/dhcp/sections/class_dhcpSubClass.inc:28
-#: admin/dhcp/sections/class_dhcpSubClass.inc:29
-msgid "DHCP subclass"
+#: admin/dhcp/class_dhcpConfiguration.inc:110
+#: admin/dhcp/class_dhcpConfiguration.inc:111
+msgid "Insert new DHCP section"
 msgstr ""
 
-#: admin/dhcp/sections/class_dhcpPool.inc:28
-#: admin/dhcp/sections/class_dhcpPool.inc:29
-msgid "DHCP pool"
+#: admin/dhcp/class_dhcpConfiguration.inc:365
+#: admin/dhcp/class_dhcpConfiguration.inc:405
+#: admin/dhcp/class_dhcpConfiguration.inc:570
+msgid "Global options"
 msgstr ""
 
-#: admin/dhcp/sections/class_dhcpPool.inc:51
-msgid "Permit list"
+#: admin/dhcp/class_dhcpConfiguration.inc:420
+msgid "Error"
 msgstr ""
 
-#: admin/dhcp/sections/class_dhcpPool.inc:51
+#: admin/dhcp/class_dhcpConfiguration.inc:420
 msgid ""
-"This attribute contains the permit lists associated with a pool. Each permit "
-"list is defined as a separate value."
-msgstr ""
-
-#: admin/dhcp/sections/class_dhcpHost.inc:29
-#: admin/dhcp/sections/class_dhcpHost.inc:30
-msgid "DHCP host"
-msgstr ""
-
-#: admin/dhcp/sections/class_dhcpHost.inc:43
-#: admin/dhcp/sections/class_dhcpHost.inc:52
-msgid "The client hardware address"
-msgstr ""
-
-#: admin/dhcp/sections/class_dhcpHost.inc:46
-msgid "The hardware address type"
+"The DHCP configuration set is unkown. Please contact your system "
+"administrator."
 msgstr ""
 
-#: admin/dhcp/sections/class_dhcpHost.inc:49
-msgid "Ethernet"
+#: admin/dhcp/class_dhcpConfiguration.inc:552
+msgid "DHCP Objects"
 msgstr ""
 
-#: admin/dhcp/sections/class_dhcpHost.inc:49
-msgid "FDDI"
+#: admin/dhcp/class_dhcpConfiguration.inc:558
+msgid "The DHCP sections handled by this server"
 msgstr ""
 
-#: admin/dhcp/sections/class_dhcpHost.inc:49
-msgid "Token Ring"
+#: admin/dhcp/class_dhcpConfiguration.inc:569
+msgid "Logging"
 msgstr ""
 
-#: admin/dhcp/sections/class_dhcpHost.inc:59
-msgid "Hardware address"
+#: admin/dhcp/class_dhcpConfiguration.inc:571
+msgid "Class"
 msgstr ""
 
-#: admin/dhcp/sections/class_dhcpHost.inc:90
-#, php-format
-msgid "\"%s\" is not a valid IP address."
+#: admin/dhcp/class_dhcpConfiguration.inc:572
+msgid "Subclass"
 msgstr ""
 
-#: admin/systems/services/dhcp/class_serviceDHCP.inc:29
-msgid "DHCP configurations"
+#: admin/dhcp/class_dhcpConfiguration.inc:574
+msgid "Group"
 msgstr ""
 
-#: admin/systems/services/dhcp/class_serviceDHCP.inc:34
-msgid ""
-"The DN of dhcpService object(s) which contain the configuration information"
+#: admin/dhcp/class_dhcpConfiguration.inc:577
+msgid "Failover peer"
 msgstr ""
 
-#: admin/systems/services/dhcp/class_serviceDHCP.inc:55
-msgid "Start service"
+#: admin/dhcp/class_dhcpConfiguration.inc:578
+msgid "Shared network"
 msgstr ""
 
-#: admin/systems/services/dhcp/class_serviceDHCP.inc:57
-msgid "Stop service"
+#: admin/dhcp/class_dhcpConfiguration.inc:579
+msgid "DNS update key"
 msgstr ""
 
-#: admin/systems/services/dhcp/class_serviceDHCP.inc:59
-msgid "Restart service"
+#: admin/dhcp/class_dhcpConfiguration.inc:580
+msgid "DNS update zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:32
-msgid "The DHCP configuration or subsection in which this host should be added"
+#: admin/dhcp/class_dhcpPlugin.inc:39
+msgid "Options"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:36
-#: admin/systems/class_dhcpSystem.inc:109
-msgid "The Mac address to use in the DHCP host record"
+#: admin/dhcp/class_dhcpPlugin.inc:39
+msgid "The DHCP options"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:40
-#: admin/systems/class_dhcpSystem.inc:114
-msgid "The IP address to use in the DHCP host record"
+#: admin/dhcp/class_dhcpPlugin.inc:47
+msgid "Statements"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:228
-#, php-format
-msgid ""
-"\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
-"DHCP configuration"
+#: admin/dhcp/class_dhcpPlugin.inc:47
+msgid "The DHCP statements"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:251
-#, php-format
-msgid "The value for multivaluated field \"%s\" is not an array"
+#: admin/dhcp/class_dhcpManagement.inc:35
+msgid "DHCP Management"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:281
-msgid "Edit the DHCP zones of a system"
+#: admin/dhcp/class_dhcpManagement.inc:37
+msgid "Systems"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:295
-msgid "DHCP zones"
+#: admin/dhcp/class_dhcpSectionCreationDialog.inc:52
+msgid "Section"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:299
-msgid "DHCP hosts declared for this system"
+#: admin/dhcp/class_dhcpSectionCreationDialog.inc:52
+msgid "Choose section type to create"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:363
-#, php-format
-msgid "The ip %s is not in the network %s/%d"
+#: admin/dhcp/class_dhcpSectionCreationDialog.inc:88
+msgid "Create new DHCP section"
 msgstr ""
diff --git a/dhcp/locale/es/fusiondirectory.po b/dhcp/locale/es/fusiondirectory.po
index 2b9dd4eddf4c752c2c0506c5b2dfbbfa8c9e2596..3fbe95ce04e502ac4309ba0562b4975269e5ce82 100644
--- a/dhcp/locale/es/fusiondirectory.po
+++ b/dhcp/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,13 +19,13 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/dhcp/class_dhcpPlugin.inc:31 admin/dhcp/class_dhcpManagement.inc:34
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr "DHCP"
 
@@ -503,31 +503,31 @@ msgstr ""
 msgid "IP"
 msgstr "IP"
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/es_CO/fusiondirectory.po b/dhcp/locale/es_CO/fusiondirectory.po
index 8190f7c87aec9e52943ccde5396bc0ec4da27d54..f70e3cd712e1fd4dc5a3b0350d3382ad0ef01fb8 100644
--- a/dhcp/locale/es_CO/fusiondirectory.po
+++ b/dhcp/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,13 +19,13 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/dhcp/class_dhcpPlugin.inc:31 admin/dhcp/class_dhcpManagement.inc:34
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr ""
 
@@ -501,31 +501,31 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/es_VE/fusiondirectory.po b/dhcp/locale/es_VE/fusiondirectory.po
index e50b35e46137ffbec01ea8b0fca6c5e3cb81f741..7e0bbc549b18034814012afe82c65a5e89d6da0b 100644
--- a/dhcp/locale/es_VE/fusiondirectory.po
+++ b/dhcp/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,13 +19,13 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/dhcp/class_dhcpPlugin.inc:31 admin/dhcp/class_dhcpManagement.inc:34
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr "DHCP"
 
@@ -503,31 +503,31 @@ msgstr ""
 msgid "IP"
 msgstr "IP"
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/fa_IR/fusiondirectory.po b/dhcp/locale/fa_IR/fusiondirectory.po
index eb1c8a8c0168d5ee723adf0dcf0eb0b26cad869b..4578af0fb78de70510c7b32db84539a90380f52d 100644
--- a/dhcp/locale/fa_IR/fusiondirectory.po
+++ b/dhcp/locale/fa_IR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
@@ -25,7 +25,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr ""
 
@@ -501,31 +501,31 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/fi_FI/fusiondirectory.po b/dhcp/locale/fi_FI/fusiondirectory.po
index 0e16ba1a083433fd1bbc099dd823c88d232e01b6..85a414cb916b3d26030e430b541ebbf06388e39d 100644
--- a/dhcp/locale/fi_FI/fusiondirectory.po
+++ b/dhcp/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
@@ -25,7 +25,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr ""
 
@@ -501,31 +501,31 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/fr/fusiondirectory.po b/dhcp/locale/fr/fusiondirectory.po
index 0ded76a901924b719a43322df94159f3757e0959..63b51f8202976337dbcf0570d6e45931878d97ed 100644
--- a/dhcp/locale/fr/fusiondirectory.po
+++ b/dhcp/locale/fr/fusiondirectory.po
@@ -5,27 +5,28 @@
 # 
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2017
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
-"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2021\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/dhcp/class_dhcpPlugin.inc:31 admin/dhcp/class_dhcpManagement.inc:34
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr "DHCP"
 
@@ -406,7 +407,7 @@ msgstr ""
 
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:74
 msgid "Maximum Client Lead Time"
-msgstr ""
+msgstr "Délai maximum du client"
 
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:74
 msgid ""
@@ -532,7 +533,7 @@ msgstr "Mac"
 msgid "IP"
 msgstr "IP"
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
@@ -541,24 +542,24 @@ msgstr ""
 "\"%s\" est verrouillé (par \"%s\" depuis %s), impossible d'enregistrer les "
 "modifications apportées à cette configuration DHCP"
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr "La valeur du champ multivalué \"%s\" n'est pas un tableau"
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr "Éditer les zones DHCP d'un système"
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr "Zones DHCP"
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr "Hôtes DHCP déclarés pour ce système"
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr "L'IP %s n'est pas dans le réseau %s/%d"
diff --git a/dhcp/locale/hu_HU/fusiondirectory.po b/dhcp/locale/hu_HU/fusiondirectory.po
index f9090df5ec1a793c8203a4fdc8cad58bf0932fad..5a7a65fdd8a12910069265f1125fe7cec33eadc3 100644
--- a/dhcp/locale/hu_HU/fusiondirectory.po
+++ b/dhcp/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
@@ -25,7 +25,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr ""
 
@@ -501,31 +501,31 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/id/fusiondirectory.po b/dhcp/locale/id/fusiondirectory.po
index 7ed00d366351939a89286c632f8cc5ac63c79fc4..7aeac276d51dd592a349dc236db87745200e7b0a 100644
--- a/dhcp/locale/id/fusiondirectory.po
+++ b/dhcp/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
@@ -21,7 +21,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr ""
 
@@ -497,31 +497,31 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/it_IT/fusiondirectory.po b/dhcp/locale/it_IT/fusiondirectory.po
index 574bae295293033be151102614fc1a397eee1c6c..33203fbf04481f8fa7a784abe67e4b4330a762a7 100644
--- a/dhcp/locale/it_IT/fusiondirectory.po
+++ b/dhcp/locale/it_IT/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: Paola Penati <paola.penati@opensides.be>, 2018\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -20,13 +20,13 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/dhcp/class_dhcpPlugin.inc:31 admin/dhcp/class_dhcpManagement.inc:34
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr "DHCP"
 
@@ -531,7 +531,7 @@ msgstr "Mac"
 msgid "IP"
 msgstr "IP"
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
@@ -540,24 +540,24 @@ msgstr ""
 "\"%s\" è bloccato (da \"%s\" da %s), non é stato possibile salvare le "
 "modifiche di questa configurazione DHCP"
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr "Il valore del campo \"%s\" multivalutato non é un array"
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr "Modifica le zone DHCP di un sistema"
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr "Zone DHCP"
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr "Hosts DHCP dichiarati per questo sistema"
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr "L'ip %s non è nella rete %s/%d"
diff --git a/dhcp/locale/ja/fusiondirectory.po b/dhcp/locale/ja/fusiondirectory.po
index 5b302d6dbb215217356133731b84fa972469cf78..79ec7f4cb16e91a195377c336171c95a474cfcab 100644
--- a/dhcp/locale/ja/fusiondirectory.po
+++ b/dhcp/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
@@ -21,7 +21,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr ""
 
@@ -497,31 +497,31 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/ko/fusiondirectory.po b/dhcp/locale/ko/fusiondirectory.po
index 0fa4ef5980629b35342cea110bb45e17b7f4ae82..750538bae18554fa51589380c892ec90cd78c3ca 100644
--- a/dhcp/locale/ko/fusiondirectory.po
+++ b/dhcp/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
@@ -25,7 +25,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr "DHCP"
 
@@ -503,31 +503,31 @@ msgstr "Mac"
 msgid "IP"
 msgstr "IP"
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr "\"%s\"은 (%s 이후로 \"%s\"에 의해) 잠겨 있으며 이 DHCP 구성에 대한 수정사항을 저장할 수 없습니다"
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr "다중화된 필드 \"%s\"의 값은 배열이 아닙니다."
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr "시스템의 DHCP 영역 편집"
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr "DHCP 영역"
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr "이 시스템에 대해 선언 된 DHCP 호스트"
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr "IP %s이 (가) 네트워크 %s / %d에 없습니다."
diff --git a/dhcp/locale/lv/fusiondirectory.po b/dhcp/locale/lv/fusiondirectory.po
index a4e0f815533166b640e429674a23c8a1b29f4383..e1c56d406579394aa41dc6c3016f024d065b91e7 100644
--- a/dhcp/locale/lv/fusiondirectory.po
+++ b/dhcp/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
@@ -25,7 +25,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr ""
 
@@ -501,31 +501,31 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/nb/fusiondirectory.po b/dhcp/locale/nb/fusiondirectory.po
index 49417d9680ea686837c189ad4dec62124a280619..e9fcee77e7b14383a7b7ed2d5f996e70e22e7ac8 100644
--- a/dhcp/locale/nb/fusiondirectory.po
+++ b/dhcp/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
@@ -25,7 +25,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr ""
 
@@ -501,31 +501,31 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/nl/fusiondirectory.po b/dhcp/locale/nl/fusiondirectory.po
index 6eed94d99a3d43644ebeb8518188a543d1a768a2..20f5a3291ab19cb5b5e222212c2ee9cafc29b37d 100644
--- a/dhcp/locale/nl/fusiondirectory.po
+++ b/dhcp/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
@@ -26,7 +26,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr "DHCP"
 
@@ -530,7 +530,7 @@ msgstr "MAC"
 msgid "IP"
 msgstr "IP"
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
@@ -539,24 +539,24 @@ msgstr ""
 "\"%s\" is locked (door \"%s\" since %s), kan veranderingen niet opslagen aan"
 " deze DHCP configuratie"
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr "De waarde van multi waarde velden \"%s\" is geen tabel"
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr "Editeer de DHCP-ranges van een systeem"
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr "DHCP zone"
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr "Gedeclareerde DHCP hosts "
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr "Het ip %s is niet aanwezig in het network %s/%d"
diff --git a/dhcp/locale/pl/fusiondirectory.po b/dhcp/locale/pl/fusiondirectory.po
index f2ab5492128cccc3af9677ddbc1133c0fb5646c3..5ebad13dd89cda2756cda21deb6ecfb1833b7184 100644
--- a/dhcp/locale/pl/fusiondirectory.po
+++ b/dhcp/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
@@ -25,7 +25,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr ""
 
@@ -501,31 +501,31 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/pt/fusiondirectory.po b/dhcp/locale/pt/fusiondirectory.po
index 74f2a4175581424e70d62dabbb08e607e0156b97..d362e517e14ad6a0e36c56d33e98f33abafc6049 100644
--- a/dhcp/locale/pt/fusiondirectory.po
+++ b/dhcp/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,13 +19,13 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/dhcp/class_dhcpPlugin.inc:31 admin/dhcp/class_dhcpManagement.inc:34
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr ""
 
@@ -501,31 +501,31 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/pt_BR/fusiondirectory.po b/dhcp/locale/pt_BR/fusiondirectory.po
index 45ad5cee5f5d730a64f834b8a8d02d1a138e0c5a..51a135a7edc4dbdca4ee8af2f56ab3557507d06b 100644
--- a/dhcp/locale/pt_BR/fusiondirectory.po
+++ b/dhcp/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,13 +19,13 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/dhcp/class_dhcpPlugin.inc:31 admin/dhcp/class_dhcpManagement.inc:34
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr ""
 
@@ -503,31 +503,31 @@ msgstr ""
 msgid "IP"
 msgstr "IP"
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/ru/fusiondirectory.po b/dhcp/locale/ru/fusiondirectory.po
index d35a551f2989072a57849375b3c67d2d1a31d848..b78a1f9eefcb706aa7e54cc5d0b1a244ea1f9c1a 100644
--- a/dhcp/locale/ru/fusiondirectory.po
+++ b/dhcp/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
@@ -25,7 +25,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr "DHCP"
 
@@ -501,31 +501,31 @@ msgstr ""
 msgid "IP"
 msgstr "IP"
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/ru@petr1708/fusiondirectory.po b/dhcp/locale/ru@petr1708/fusiondirectory.po
index efa8eb434a153e60fd932ccc49145c3b70c892c9..6a948db95cbc4555d8b369a7d34d0e1880aa7f6e 100644
--- a/dhcp/locale/ru@petr1708/fusiondirectory.po
+++ b/dhcp/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
@@ -21,7 +21,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr ""
 
@@ -497,31 +497,31 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/sv/fusiondirectory.po b/dhcp/locale/sv/fusiondirectory.po
index eb6a68e5e8afcde02da96d71229119215db64852..2f1f9ba777e18640399471f662f5aedc2c70c002 100644
--- a/dhcp/locale/sv/fusiondirectory.po
+++ b/dhcp/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
@@ -25,7 +25,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr ""
 
@@ -501,31 +501,31 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/tr_TR/fusiondirectory.po b/dhcp/locale/tr_TR/fusiondirectory.po
index 8e9ede81ec93db076b9cb087bbbdd8a7e21cd454..05cd0b4d1b0da474ffea3d775d1c88689980603d 100644
--- a/dhcp/locale/tr_TR/fusiondirectory.po
+++ b/dhcp/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2020
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2020\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -21,7 +25,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr ""
 
@@ -119,7 +123,7 @@ msgstr ""
 
 #: admin/dhcp/class_dhcpConfiguration.inc:420
 msgid "Error"
-msgstr ""
+msgstr "Hata"
 
 #: admin/dhcp/class_dhcpConfiguration.inc:420
 msgid ""
@@ -497,31 +501,31 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/ug/fusiondirectory.po b/dhcp/locale/ug/fusiondirectory.po
index 1546bb5e187fe82f3235ecd2a4b75b4ce154a205..1612b829850227dc70bd65e19e38c4379a3b2b56 100644
--- a/dhcp/locale/ug/fusiondirectory.po
+++ b/dhcp/locale/ug/fusiondirectory.po
@@ -8,20 +8,20 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/dhcp/class_dhcpPlugin.inc:31 admin/dhcp/class_dhcpManagement.inc:34
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr ""
 
@@ -497,31 +497,31 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/vi_VN/fusiondirectory.po b/dhcp/locale/vi_VN/fusiondirectory.po
index 4e4feaf7136157b755278a9d94811442b5895852..696ca14f9bb24cbf70fdb841ed01a539b6d42127 100644
--- a/dhcp/locale/vi_VN/fusiondirectory.po
+++ b/dhcp/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
@@ -25,7 +25,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr ""
 
@@ -501,31 +501,31 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/zh/fusiondirectory.po b/dhcp/locale/zh/fusiondirectory.po
index b4abdaff714ce62b52b874e008710e66669385fc..7acddbf8ef6256823f3a86f9186f113a5f2c59e5 100644
--- a/dhcp/locale/zh/fusiondirectory.po
+++ b/dhcp/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
@@ -25,7 +25,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr ""
 
@@ -501,31 +501,31 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dhcp/locale/zh_TW/fusiondirectory.po b/dhcp/locale/zh_TW/fusiondirectory.po
index 79fc3f350799a199a847241d189eaf728ea4e464..3b64942d6d12bf6783fa26b6f96d3746214eb96d 100644
--- a/dhcp/locale/zh_TW/fusiondirectory.po
+++ b/dhcp/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
@@ -21,7 +21,7 @@ msgstr ""
 #: admin/dhcp/sections/class_dhcpTSigKey.inc:39
 #: admin/dhcp/sections/class_dhcpFailOverPeer.inc:39
 #: admin/dhcp/sections/class_dhcpDnsZone.inc:39
-#: admin/systems/class_dhcpSystem.inc:291
+#: admin/systems/class_dhcpSystem.inc:304
 msgid "DHCP"
 msgstr ""
 
@@ -497,31 +497,31 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:233
+#: admin/systems/class_dhcpSystem.inc:246
 #, php-format
 msgid ""
 "\"%s\" is locked (by \"%s\" since %s), could not save modifications to this "
 "DHCP configuration"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:256
+#: admin/systems/class_dhcpSystem.inc:269
 #, php-format
 msgid "The value for multivaluated field \"%s\" is not an array"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:292
+#: admin/systems/class_dhcpSystem.inc:305
 msgid "Edit the DHCP zones of a system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:306
+#: admin/systems/class_dhcpSystem.inc:319
 msgid "DHCP zones"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:310
+#: admin/systems/class_dhcpSystem.inc:323
 msgid "DHCP hosts declared for this system"
 msgstr ""
 
-#: admin/systems/class_dhcpSystem.inc:374
+#: admin/systems/class_dhcpSystem.inc:387
 #, php-format
 msgid "The ip %s is not in the network %s/%d"
 msgstr ""
diff --git a/dns/admin/dns/class_DnsRecordAttribute.inc b/dns/admin/dns/class_DnsRecordAttribute.inc
index fd7620437c0526bc589bb938af70fae192b2b185..5dcc2f1f4186c81234c9aeda587c7c08f0a43ed6 100644
--- a/dns/admin/dns/class_DnsRecordAttribute.inc
+++ b/dns/admin/dns/class_DnsRecordAttribute.inc
@@ -26,10 +26,10 @@ class LocRecordAttribute extends CompositeAttribute
                   '(?P<long>[[:digit:] \.]+ [EW])\s+'.
                   '(?P<alt>[[:digit:]\.]+)m?'.
                   '(\s+(?P<size>[[:digit:]\.]+)m?(\s+(?P<hp>[[:digit:]\.]+)m?(\s+(?P<vp>[[:digit:]\.]+)m?)?)?)?$/';
-    parent::__construct ($description, $ldapName, $attributes, $readFormat, FALSE, $acl, $label);
+    parent::__construct($description, $ldapName, $attributes, $readFormat, FALSE, $acl, $label);
   }
 
-  function writeValues($values)
+  function writeValues ($values)
   {
     /* '%s %s %.2fm[ %.2fm[ %.2fm[ %.2fm]]]' */
     $str = sprintf('%s %s %.2fm', $values['lat'], $values['long'], $values['alt']);
@@ -54,13 +54,12 @@ class LocRecordLatLongAttribute extends CompositeAttribute
                   '(\s+(?P<minutes>[[:digit:]]+)(\s+(?P<seconds>[[:digit:]\.]+))?)?'.
                   '\s+(?P<dir>[NSEW])$/';
     $attributes['seconds']->setStep(.001);
-    parent::__construct ($description, $ldapName, $attributes, $readFormat, FALSE, $acl, $label);
+    parent::__construct($description, $ldapName, $attributes, $readFormat, FALSE, $acl, $label);
     $this->setLinearRendering(TRUE);
   }
 
-  function writeValues($values)
+  function writeValues ($values)
   {
-    /* The format is: d1 [m1 [s1]] {"N"|"S"|"E"|"W"} */
     $str = $values['degrees'];
     if ($values['minutes'] != '') {
       $str .= ' '.$values['minutes'];
@@ -75,52 +74,47 @@ class LocRecordLatLongAttribute extends CompositeAttribute
 
 class DnsRecordAttribute extends CompositeAttribute
 {
-  protected $parentIPs4 = array('');
-  protected $parentIPs6 = array('');
+  protected $parentIPs4 = [''];
+  protected $parentIPs6 = [''];
   protected $parentFQDN = '';
 
-  public static $types = array(
+  public static $types = [
     'aRecord'     => 'A',
-    //~ 'a6Record'    => 'A6',
     'aAAARecord'  => 'AAAA',
     'aFSDBRecord' => 'AFSDB',
     'certRecord'  => 'CERT',
     'cNAMERecord' => 'CNAME',
     'dSRecord'    => 'DS',
-    //~ 'hInfoRecord' => 'HINFO',
     'KeyRecord'   => 'KEY',
     'kXRecord'    => 'KX',
     'LocRecord'   => 'LOC',
-    //~ 'mDRecord'    => 'MD',
-    //~ 'mInfoRecord' => 'MINFO',
     'mXRecord'    => 'MX',
     'nAPTRRecord' => 'NAPTR',
     'nSRecord'    => 'NS',
     'nSECRecord'  => 'NSEC',
-    //~ 'nXTRecord'   => 'NXT',
     'pTRRecord'   => 'PTR',
     'rRSIGRecord' => 'RRSIG',
     'SigRecord'   => 'SIG',
     'sRVRecord'   => 'SRV',
     'sSHFPRecord' => 'SSHFP',
     'tXTRecord'   => 'TXT',
-  );
+  ];
 
   /* Types which might match reverse zone records */
-  public static $reverseTypes = array(
+  public static $reverseTypes = [
     'aRecord', 'aAAARecord'
-  );
+  ];
 
-  function __construct($label, $description, $ldapName, $required)
+  function __construct ($label, $description, $ldapName, $required)
   {
-    $attributes = array(
+    $attributes = [
       new SelectAttribute(_('Type'), '', $ldapName.'_type', $required, array_keys(static::$types), '', array_values(static::$types)),
       new HiddenAttribute($ldapName.'_nofield'),
       new SelectAttribute(
         _('Reverse zone'), _('Reverse zone this record should be in, if any'),
         'reverse', FALSE
       ),
-    );
+    ];
     parent::__construct($description, $ldapName, $attributes, FALSE, FALSE, '', $label);
     $this->setLinearRendering(TRUE);
     $this->attributes[0]->setSubmitForm(TRUE);
@@ -128,7 +122,7 @@ class DnsRecordAttribute extends CompositeAttribute
     $this->setRequired($required);
   }
 
-  function setParentIPs($ipv4, $ipv6, $fqdn)
+  function setParentIPs ($ipv4, $ipv6, $fqdn)
   {
     $this->parentIPs4   = $ipv4;
     $this->parentIPs4[] = '';
@@ -147,16 +141,16 @@ class DnsRecordAttribute extends CompositeAttribute
     }
   }
 
-  private function loadLocRecordFields($ldapName)
+  private function loadLocRecordFields ($ldapName)
   {
     $this->attributes[1] = new LocRecordAttribute(
       _('LOC Record'),
       $ldapName,
-      array(
+      [
         'lat' => new LocRecordLatLongAttribute(
           _('Latitude'), _('Latitude'),
           $ldapName.'_latitude',
-          array(
+          [
             'degrees' => new IntAttribute(
               '', _('Degrees'),
               $ldapName.'_lat_degrees', TRUE,
@@ -175,15 +169,15 @@ class DnsRecordAttribute extends CompositeAttribute
             'dir' => new SelectAttribute(
               '', _('North/South'),
               $ldapName.'_lat_direction', TRUE,
-              array('N', 'S'), '',
-              array(_('North'), _('South'))
+              ['N', 'S'], '',
+              [_('North'), _('South')]
             ),
-          )
+          ]
         ),
         'long' => new LocRecordLatLongAttribute(
           _('Longitude'), _('Longitude'),
           $ldapName.'_longitude',
-          array(
+          [
             'degrees' => new IntAttribute(
               '', _('Degrees'),
               $ldapName.'_long_degrees', TRUE,
@@ -202,10 +196,10 @@ class DnsRecordAttribute extends CompositeAttribute
             'dir' => new SelectAttribute(
               '', _('East/West'),
               $ldapName.'_long_direction', TRUE,
-              array('E', 'W'), '',
-              array(_('East'), _('West'))
+              ['E', 'W'], '',
+              [_('East'), _('West')]
             ),
-          )
+          ]
         ),
         'alt' => new FloatAttribute(
           _('Altitude (meters)'), '',
@@ -227,16 +221,16 @@ class DnsRecordAttribute extends CompositeAttribute
           $ldapName.'_vp', FALSE,
           0, 90000000, ''
         ),
-      )
+      ]
     );
   }
 
-  private function loadNaptrRecordFields($ldapName)
+  private function loadNaptrRecordFields ($ldapName)
   {
     $this->attributes[1] = new CharSeparatedCompositeAttribute(
       _('NAPTR Record'),
       $ldapName,
-      array(
+      [
         new IntAttribute(
           _('Order'), _('Integer specifying the order in which the NAPTR records MUST be processed to ensure the correct ordering of rules.  Low numbers are processed before high numbers.'),
           $ldapName.'_order', TRUE,
@@ -263,17 +257,17 @@ class DnsRecordAttribute extends CompositeAttribute
           _('Replacement'), _('The next NAME to query for NAPTR, SRV, or address records depending on the value of the flags field.'),
           $ldapName.'_replace', TRUE
         ),
-      ),
+      ],
       ' '
     );
   }
 
-  private function loadSrvRecordFields($ldapName)
+  private function loadSrvRecordFields ($ldapName)
   {
     $this->attributes[1] = new CharSeparatedCompositeAttribute(
       _('SRV Record'),
       $ldapName,
-      array(
+      [
         new IntAttribute(
           _('Priority'), _('Priority of the target host, lower value means more preferred'),
           $ldapName.'_priority', TRUE,
@@ -293,12 +287,12 @@ class DnsRecordAttribute extends CompositeAttribute
           _('Target'), _('Canonical hostname of the machine providing the service, ending in a dot'),
           $ldapName.'_target', TRUE
         ),
-      ),
+      ],
       ' '
     );
   }
 
-  protected function updateFields()
+  protected function updateFields ()
   {
     $type = $this->attributes[0]->getValue();
     $ldapName = $this->getLdapName().'_'.$type.'_content';
@@ -325,7 +319,7 @@ class DnsRecordAttribute extends CompositeAttribute
           $this->attributes[1] = new CharSeparatedCompositeAttribute(
             _('MX Record'),
             $ldapName,
-            array(
+            [
               new IntAttribute(
                 _('Priority'), _('Preference given to this RR among others at the same owner, lower values are preferred'),
                 $ldapName.'_priority', TRUE,
@@ -335,7 +329,7 @@ class DnsRecordAttribute extends CompositeAttribute
                 _('Target'), _('Domain name which specifies a host willing to act as a mail exchange for the owner name'),
                 $ldapName.'_target', TRUE
               ),
-            ),
+            ],
             ' '
           );
           break;
@@ -378,7 +372,7 @@ class DnsRecordAttribute extends CompositeAttribute
     $this->setAttributes($this->attributes);
   }
 
-  function applyPostValue()
+  function applyPostValue ()
   {
     parent::applyPostValue();
     $this->updateFields();
@@ -420,7 +414,7 @@ class DnsRecordAttribute extends CompositeAttribute
     }
   }
 
-  static function getReverseZoneInfo($ipv6, $ip, $reverse)
+  static function getReverseZoneInfo ($ipv6, $ip, $reverse)
   {
     $mask = preg_replace('/\.(in-addr|ip6)\.arpa\.?$/i', '', $reverse);
     if (preg_match('/^([[:digit:]]+[-\/][[:digit:]]+).([\.[:digit:]]+)$/', $mask, $m)) {
@@ -433,10 +427,10 @@ class DnsRecordAttribute extends CompositeAttribute
       $reversedIp = implode('.', array_reverse(explode('.', $ip)));
     }
 
-    return array($mask, $reversedIp);
+    return [$mask, $reversedIp];
   }
 
-  static function matchReverseZone($type, $ip, $reverse)
+  static function matchReverseZone ($type, $ip, $reverse)
   {
     list($mask, $testString) = static::getReverseZoneInfo(($type == 'aAAARecord'), $ip, $reverse);
 
diff --git a/dns/admin/dns/class_dnsAcl.inc b/dns/admin/dns/class_dnsAcl.inc
index a3bbfb7fede22fe5d3abc1b174447923607b776f..f89045969997bca7bc5c96e40ffc11e2053d0081 100644
--- a/dns/admin/dns/class_dnsAcl.inc
+++ b/dns/admin/dns/class_dnsAcl.inc
@@ -22,43 +22,43 @@ class dnsAcl extends simplePlugin
 {
   var $mainTab = TRUE;
 
-  var $objectclasses = array('fdDNSAcl');
+  var $objectclasses = ['fdDNSAcl'];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('DNS acl'),
       'plDescription' => _('DNS acl'),
-      'plObjectType'  => array('dnsAcl' => array(
+      'plObjectType'  => ['dnsAcl' => [
         'name'        => _('DNS acl'),
         'filter'      => '(objectClass=fdDNSAcl)',
         'ou'          => get_ou('dnsRDN'),
         'icon'        => 'geticon.php?context=categories&icon=acl&size=16'
-      )),
+      ]],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Acl'),
-        'attrs' => array(
+        'attrs' => [
           new BaseSelectorAttribute(get_ou('dnsRDN')),
-          new HostNameAttribute (
+          new HostNameAttribute(
             _('ACL name'), _('Name of this acl'),
             'cn', TRUE
           ),
-          new SetAttribute (
-            new StringAttribute (
+          new SetAttribute(
+            new StringAttribute(
               _('Address match list'), _('The ip address match list for this acl'),
               'fdDNSAclMatchList', FALSE
             )
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 }
diff --git a/dns/admin/dns/class_dnsManagement.inc b/dns/admin/dns/class_dnsManagement.inc
index b73ef2175a3678a5908a311fc4b9893cafd862be..f7553f3bc075a964e5fbf7f183c30eb023e860d1 100644
--- a/dns/admin/dns/class_dnsManagement.inc
+++ b/dns/admin/dns/class_dnsManagement.inc
@@ -20,26 +20,26 @@
 
 class dnsManagement extends simpleManagement
 {
-  protected $objectTypes  = array('dnsZone', 'dnsView', 'dnsAcl');
+  protected $objectTypes  = ['dnsZone', 'dnsView', 'dnsAcl'];
 
   protected $departmentBrowser      = TRUE;
   protected $departmentRootVisible  = TRUE;
   protected $baseMode               = TRUE;
 
-  protected $autoFilterAttributes = array('dn', 'cn', 'description', 'zoneName', 'relativeDomainName', 'sOARecord');
+  protected $autoFilterAttributes = ['dn', 'cn', 'description', 'zoneName', 'relativeDomainName', 'sOARecord'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('DNS'),
       'plDescription' => _('DNS Management'),
       'plIcon'        => 'geticon.php?context=applications&icon=dns&size=48',
-      'plSection'     => array('systems' => array('name' => _('Systems'), 'priority' => 10)),
+      'plSection'     => ['systems' => ['name' => _('Systems'), 'priority' => 10]],
       'plPriority'    => 1,
-      'plManages'     => array('dnsZone', 'dnsView', 'dnsAcl'),
+      'plManages'     => ['dnsZone', 'dnsView', 'dnsAcl'],
 
-      'plProvidedAcls'  => array()
-    );
+      'plProvidedAcls'  => []
+    ];
   }
 
   function configureHeadpage ()
@@ -51,29 +51,29 @@ class dnsManagement extends simpleManagement
         $this->headpage->xmlData['actionmenu']['action'],
         2,
         0,
-        array(
-          array(
+        [
+          [
             'name'  => 'zonerefresh',
             'type'  => 'entry',
             'image' => 'geticon.php?context=actions&icon=view-refresh&size=16',
             'label' => 'Refresh Zone',
             'acl'   => 'dnsZone/dnsZone[w]',
-          )
-        )
+          ]
+        ]
       );
       array_splice(
         $this->headpage->xmlData['actiontriggers']['action'],
         2,
         0,
-        array(
-          array(
+        [
+          [
             'name'  => 'zonerefresh',
             'type'  => 'entry',
             'image' => 'geticon.php?context=actions&icon=view-refresh&size=16',
             'label' => 'Refresh Zone',
             'acl'   => '%acl[w]',
-          )
-        )
+          ]
+        ]
       );
     }
   }
@@ -85,7 +85,7 @@ class dnsManagement extends simpleManagement
     }
     foreach ($targets as $zoneDn) {
       $entry = $this->getHeadpage()->getEntry($zoneDn);
-      list ($fqdn) = explode(' ', $entry['sOARecord'][0]);
+      list($fqdn) = explode(' ', $entry['sOARecord'][0]);
       $servers = static::findServerByFQDN($fqdn, $zoneDn);
       if (count($servers) > 1) {
         msg_dialog::display(_('Could not run ldap2zone'), _('More than one server matches the SOA'), ERROR_DIALOG);
@@ -104,7 +104,7 @@ class dnsManagement extends simpleManagement
               $target = $target[0];
             }
             $zoneName = $entry['zoneName'][0];
-            $s_daemon->append_call('Ldap2Zone.start', $target, array('args' => array($zoneName)));
+            $s_daemon->append_call('Ldap2Zone.start', $target, ['args' => [$zoneName]]);
             if ($s_daemon->is_error()) {
               msg_dialog::display(_('Could not get run ldap2zone'), msgPool::siError($s_daemon->get_error()), ERROR_DIALOG);
             } else {
@@ -118,14 +118,14 @@ class dnsManagement extends simpleManagement
     }
   }
 
-  public static function findServerByFQDN($fqdn, $zoneDn = NULL)
+  public static function findServerByFQDN ($fqdn, $zoneDn = NULL)
   {
     global $config;
-    list ($serverCn, $serverZone) = explode('.', $fqdn, 2);
+    list($serverCn, $serverZone) = explode('.', $fqdn, 2);
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ips = array();
-    $ldap->search('(&(|(aRecord=*)(aAAARecord=*))(relativeDomainName='.$serverCn.')(zoneName='.$serverZone.'))', array('aRecord', 'aAAARecord'));
+    $ips = [];
+    $ldap->search('(&(|(aRecord=*)(aAAARecord=*))(relativeDomainName='.$serverCn.')(zoneName='.$serverZone.'))', ['aRecord', 'aAAARecord']);
     while ($attrs = $ldap->fetch()) {
       if (isset($attrs['aRecord'])) {
         unset($attrs['aRecord']['count']);
@@ -143,7 +143,7 @@ class dnsManagement extends simpleManagement
       }
       return objects::ls('server', NULL, NULL, $filter);
     }
-    return array();
+    return [];
   }
 }
 ?>
diff --git a/dns/admin/dns/class_dnsView.inc b/dns/admin/dns/class_dnsView.inc
index 554c1f2eaade866f685e9d0c6811008c58c5d108..78d2af8ef6fc4897e8c910ad7f4b45518ea00f3c 100644
--- a/dns/admin/dns/class_dnsView.inc
+++ b/dns/admin/dns/class_dnsView.inc
@@ -20,44 +20,44 @@
 
 class dnsView extends simplePlugin
 {
-  var $objectclasses = array('fdDNSView');
+  var $objectclasses = ['fdDNSView'];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('DNS view'),
       'plDescription' => _('DNS view'),
-      'plObjectType'  => array('dnsView' => array(
+      'plObjectType'  => ['dnsView' => [
         'name'        => _('DNS view'),
         'filter'      => '(objectClass=fdDNSView)',
         'ou'          => get_ou('dnsRDN'),
         'icon'        => 'geticon.php?context=applications&icon=dns&size=16'
-      )),
+      ]],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('View'),
-        'attrs' => array(
+        'attrs' => [
           new BaseSelectorAttribute(get_ou('dnsRDN')),
-          new HostNameAttribute (
+          new HostNameAttribute(
             _('View name'), _('Name of this view'),
             'cn', TRUE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Match clients ACL'), _('Name of the ACL to use for the source IP address of the incoming requests'),
             'fdDNSViewMatchClientsAcl', FALSE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Match destinations ACL'), _('Name of the ACL to use for the destination IP address of the incoming requests'),
             'fdDNSViewMatchDestinationsAcl', FALSE
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Match recursive only'), _('Match only recursive queries in this view'),
             'fdDNSViewMatchRecursiveOnly', FALSE
           ),
@@ -67,9 +67,9 @@ class dnsView extends simplePlugin
               'fdDNSZoneDn', FALSE
             )
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
diff --git a/dns/admin/dns/class_dnsZone.inc b/dns/admin/dns/class_dnsZone.inc
index 266e47e1dc27f12b7d57722c652c8b446fc048d7..01af611976f00e378cf4269b135d704f4c79f90f 100644
--- a/dns/admin/dns/class_dnsZone.inc
+++ b/dns/admin/dns/class_dnsZone.inc
@@ -20,7 +20,7 @@
 
 class DnsRecordPlugin extends simplePlugin
 {
-  public static function plInfo()
+  public static function plInfo ()
   {
     $plProvidedAcls = parent::generatePlProvidedAcls(static::getAttributesInfo());
 
@@ -30,33 +30,33 @@ class DnsRecordPlugin extends simplePlugin
       $plProvidedAcls['dnsRecord_'.$id] = sprintf(_('%s record'), $name);
     }
 
-    return array(
+    return [
       'plShortName'     => _('DNS record'),
       'plDescription'   => _('DNS record'),
-      'plCategory'      => array('dnsZone'),
+      'plCategory'      => ['dnsZone'],
       'plProvidedAcls'  => $plProvidedAcls
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Record'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
-          new StringAttribute (
+        'class' => ['fullwidth'],
+        'attrs' => [
+          new StringAttribute(
             _('Subdomain'), _('Relative subdomain name'),
             'relativeSubdomainName', FALSE,
             '', 'dnsRecord'
           ),
-          new DnsRecordAttribute (
+          new DnsRecordAttribute(
             _('Record'), _('DNS Record'),
             'dnsRecord', TRUE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   /*
@@ -96,11 +96,11 @@ class DnsRecordPlugin extends simplePlugin
     $this->attributesAccess['dnsRecord']->attributes[2]->setChoices($attribute->getReverseZones());
   }
 
-  function save()
+  function save ()
   {
   }
 
-  function execute()
+  function execute ()
   {
     $smarty = get_smarty();
     $attr   = $this->attributesAccess['dnsRecord'];
@@ -119,7 +119,7 @@ class DnsRecordDialog extends GenericDialog
 
   protected $plugin;
 
-  function __construct($simplePlugin, &$attribute, $value = array())
+  function __construct ($simplePlugin, &$attribute, $value = [])
   {
     $this->attribute  = $attribute;
     $this->plugin     = $simplePlugin;
@@ -156,7 +156,7 @@ class DnsRecordDialog extends GenericDialog
     if ($relativeSubdomainName == '@') {
       $relativeSubdomainName = '';
     }
-    $ret = array_merge(array($relativeSubdomainName), $this->dialog->dnsRecord);
+    $ret = array_merge([$relativeSubdomainName], $this->dialog->dnsRecord);
     $this->attribute->addValue($ret);
     return FALSE;
   }
@@ -174,24 +174,24 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
 {
   protected $height       = 400;
   protected $dialogClass  = 'DnsRecordDialog';
-  protected $reverseZones = array();
+  protected $reverseZones = [];
   protected $zoneName;
   protected $zoneDn;
   protected $initialReverseZones;
 
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $acl = "")
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $acl = "")
   {
     parent::__construct($label, $description, $ldapName, $required, $defaultValue, $acl);
-    $this->setHeaders(array(
+    $this->setHeaders([
       _('Subdomain'),
       _('Type'),
       _('Content'),
       _('Reverse'),
       ''
-    ));
+    ]);
   }
 
-  function getZoneName()
+  function getZoneName ()
   {
     if ($this->plugin instanceof dnsZone) {
       return $this->plugin->zoneName;
@@ -200,7 +200,7 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
     }
   }
 
-  function getZoneDn()
+  function getZoneDn ()
   {
     if ($this->plugin instanceof dnsZone) {
       return $this->plugin->dn;
@@ -209,7 +209,7 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
     }
   }
 
-  function getReverseZones()
+  function getReverseZones ()
   {
     if ($this->plugin instanceof dnsZone) {
       return $this->plugin->reverseZones;
@@ -218,14 +218,14 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
     }
   }
 
-  protected function getAttributeArrayValue($key, $value)
+  protected function getAttributeArrayValue ($key, $value)
   {
-    return array(
+    return [
       $value[0],
       DnsRecordAttribute::$types[$value[1]],
       $value[2],
       $value[3]
-    );
+    ];
   }
 
   protected function loadReverseZones ($attrs)
@@ -235,8 +235,8 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
     /* Get reverse zones */
     $ldap = $config->get_ldap_link();
     $ldap->cd($attrs['dn']);
-    $ldap->search('(&(objectClass=dNSZone)(relativeDomainName=@)(zoneName=*))', array('zoneName','nSRecord','sOARecord'), 'one');
-    $reverseZones = array();
+    $ldap->search('(&(objectClass=dNSZone)(relativeDomainName=@)(zoneName=*))', ['zoneName','nSRecord','sOARecord'], 'one');
+    $reverseZones = [];
     while ($subattrs = $ldap->fetch()) {
       $reverseZones[$subattrs['dn']] = $subattrs;
     }
@@ -261,15 +261,15 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
   {
     global $config;
 
-    $this->value = array();
-    $aRecords = array(
-      'aRecord'     => array(),
-      'aAAARecord'  => array()
-    );
+    $this->value = [];
+    $aRecords = [
+      'aRecord'     => [],
+      'aAAARecord'  => []
+    ];
     foreach (array_keys(DnsRecordAttribute::$types) as $type) {
       if (isset($attrs[$type]['count'])) {
         for ($i = 0; $i < $attrs[$type]['count']; $i++) {
-          $this->value[] = array('', $type, $attrs[$type][$i], '');
+          $this->value[] = ['', $type, $attrs[$type][$i], ''];
           if (in_array($type, DnsRecordAttribute::$reverseTypes)) {
             end($this->value);
             $ip = $attrs[$type][$i];
@@ -284,7 +284,7 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
     if (isset($attrs['dn'])) {
       $ldap = $config->get_ldap_link();
       $ldap->cd($attrs['dn']);
-      $ldap->search('(&(objectClass=dNSZone)(zoneName='.$attrs['zoneName'][0].'))', array_merge(array('relativeDomainName'), array_keys(DnsRecordAttribute::$types)), 'one');
+      $ldap->search('(&(objectClass=dNSZone)(zoneName='.$attrs['zoneName'][0].'))', array_merge(['relativeDomainName'], array_keys(DnsRecordAttribute::$types)), 'one');
       while ($subattrs = $ldap->fetch()) {
         for ($i = 0; $i < $subattrs['count']; $i++) {
           $type = $subattrs[$i];
@@ -292,7 +292,7 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
             continue;
           }
           for ($j = 0; $j < $subattrs[$type]['count']; $j++) {
-            $this->value[] = array($subattrs['relativeDomainName'][0], $type, $subattrs[$type][$j], '');
+            $this->value[] = [$subattrs['relativeDomainName'][0], $type, $subattrs[$type][$j], ''];
             if (in_array($type, DnsRecordAttribute::$reverseTypes)) {
               end($this->value);
               $ip = $subattrs[$type][$j];
@@ -320,7 +320,7 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
           $baseIp = implode('.', array_reverse(explode('.', $baseIp)));
         }
         $ldap->cd($reverseZoneDn);
-        $ldap->search('(objectClass=dNSZone)', array('relativeDomainName', 'pTRRecord'), 'one');
+        $ldap->search('(objectClass=dNSZone)', ['relativeDomainName', 'pTRRecord'], 'one');
         while ($subattrs = $ldap->fetch()) {
           unset($subattrs['pTRRecord']['count']);
           foreach ($subattrs['pTRRecord'] as $ptrRecord) {
@@ -344,7 +344,7 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
       }
       $this->initialReverseZones = $reverseZones;
     } else {
-      $this->initialReverseZones = array();
+      $this->initialReverseZones = [];
     }
     sort($this->value);
   }
@@ -353,11 +353,11 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
   {
     foreach (array_keys(DnsRecordAttribute::$types) as $type) {
       if (!isset($attrs[$type])) {
-        $attrs[$type] = array();
+        $attrs[$type] = [];
       }
     }
     foreach ($this->value as $line) {
-      list ($domain, $type, $content) = $line;
+      list($domain, $type, $content) = $line;
       // Only save root records here
       if (empty($domain)) {
         $attrs[$type][] = $content;
@@ -365,16 +365,16 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
     }
   }
 
-  private function valueToNodes($value)
+  private function valueToNodes ($value)
   {
     /* Compute values into $nodes and $ptrs */
     $zoneDn     = $this->getZoneDn();
     $zoneName   = $this->getZoneName();
-    $nodes      = array();
-    $ptrs       = array();
-    $nsRecords  = array();
+    $nodes      = [];
+    $ptrs       = [];
+    $nsRecords  = [];
     foreach ($value as $line) {
-      list ($domain, $type, $content, $reverse) = $line;
+      list($domain, $type, $content, $reverse) = $line;
       if (!empty($reverse)) {
         if (!DnsRecordAttribute::matchReverseZone($type, $content, $reverse)) {
           msg_dialog::display(
@@ -384,10 +384,10 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
           );
         } else {
           if (!isset($ptrs[$reverse])) {
-            $ptrs[$reverse] = array();
+            $ptrs[$reverse] = [];
           }
           if (!isset($ptrs[$reverse][$content])) {
-            $ptrs[$reverse][$content] = array();
+            $ptrs[$reverse][$content] = [];
           }
           $ptrs[$reverse][$content][] = $domain;
         }
@@ -401,22 +401,22 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
       }
       $dn = 'relativeDomainName='.$domain.','.$zoneDn;
       if (!isset($nodes[$dn])) {
-        $nodes[$dn] = array(
-          'objectClass'         => array('dNSZone'),
+        $nodes[$dn] = [
+          'objectClass'         => ['dNSZone'],
           'relativeDomainName'  => $domain,
           'zoneName'            => $zoneName,
           'dNSClass'            => 'IN',
-        );
+        ];
       }
       if (!isset($nodes[$dn][$type])) {
-        $nodes[$dn][$type] = array();
+        $nodes[$dn][$type] = [];
       }
       $nodes[$dn][$type][] = $content;
     }
-    return array($nodes, $ptrs, $nsRecords);
+    return [$nodes, $ptrs, $nsRecords];
   }
 
-  protected function reverseZoneNeedUpdate(array $new, array $old, array $ptrs, array $initialPtrs, $reverseZone)
+  protected function reverseZoneNeedUpdate (array $new, array $old, array $ptrs, array $initialPtrs, $reverseZone)
   {
     // NS Record changes
     if (!empty($old['nSRecord'])) {
@@ -456,23 +456,23 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
     unset($newSoa[2]);
     $soaChanged = array_differs($initialSoa, $newSoa);
     /* Compute values into $nodes and $ptrs */
-    list ($nodes, $ptrs, $nsRecords) = $this->valueToNodes($this->value);
+    list($nodes, $ptrs, $nsRecords) = $this->valueToNodes($this->value);
     /* List all old nodes */
-    list ($initialNodes, $initialPtrs, ) = $this->valueToNodes($this->getInitialValue());
+    list($initialNodes, $initialPtrs, ) = $this->valueToNodes($this->getInitialValue());
     /* Update reverse zones top nodes */
     $oldReverseZones = $this->initialReverseZones;
     foreach ($this->reverseZones as $reverseZone) {
       /* Write this reverse under the zone dn */
       $reverseDn = 'zoneName='.$reverseZone.','.$zoneDn;
       /* Copy NS records and SOA from zone */
-      $node = array(
-        'objectClass'         => array('dNSZone'),
+      $node = [
+        'objectClass'         => ['dNSZone'],
         'zoneName'            => $reverseZone,
         'relativeDomainName'  => '@',
         'dNSClass'            => 'IN',
         'sOARecord'           => $this->plugin->sOARecord,
         'nSRecord'            => $nsRecords
-      );
+      ];
       $ldap->cd($reverseDn);
       if (isset($oldReverseZones[$reverseDn])) {
         if (!$soaChanged && !$this->reverseZoneNeedUpdate($node, $oldReverseZones[$reverseDn], $ptrs, $initialPtrs, $reverseZone)) {
@@ -519,7 +519,7 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
         }
         foreach (array_keys(DnsRecordAttribute::$types) as $type) {
           if (!isset($node[$type])) {
-            $node[$type] = array();
+            $node[$type] = [];
           }
         }
         $ldap->modify($node);
@@ -545,8 +545,8 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
           $relativeDomainName = preg_replace('/\.'.preg_quote($mask).'$/', '', $reversedIp);
           $dn = 'relativeDomainName='.$relativeDomainName.','.$reverseDn;
           $ldap->cd($dn);
-          $node = array(
-            'objectClass'         => array('dNSZone'),
+          $node = [
+            'objectClass'         => ['dNSZone'],
             'zoneName'            => $reverseZone,
             'dNSClass'            => 'IN',
             'pTRRecord'           => array_map(
@@ -556,7 +556,7 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
               $names
             ),
             'relativeDomainName'  => $relativeDomainName,
-          );
+          ];
           if (isset($initialPtrs[$reverseZone][$ip])) {
             $ldap->modify($node);
             if (!$ldap->success()) {
@@ -585,7 +585,7 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
     }
   }
 
-  function cnChanged($oldcn, $newcn)
+  function cnChanged ($oldcn, $newcn)
   {
     $nb = 0;
     foreach ($this->value as &$row) {
@@ -598,7 +598,7 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
     return $nb;
   }
 
-  function ipChanged($oldip, $newip)
+  function ipChanged ($oldip, $newip)
   {
     $nb = 0;
     foreach ($this->value as &$row) {
@@ -611,7 +611,7 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
     return $nb;
   }
 
-  function cnRemoved($oldcn)
+  function cnRemoved ($oldcn)
   {
     $nb = 0;
     foreach ($this->value as $key => $row) {
@@ -623,7 +623,7 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
     return $nb;
   }
 
-  function ipRemoved($oldips)
+  function ipRemoved ($oldips)
   {
     $nb = 0;
     foreach ($this->value as $key => $row) {
@@ -635,31 +635,31 @@ class DnsRecordsAttribute extends DialogOrderedArrayAttribute
     return $nb;
   }
 
-  protected function canWriteRecord($value)
+  protected function canWriteRecord ($value)
   {
     $ui     = get_userinfo();
     $rights = $ui->get_permissions($this->getZoneDn(), 'dnsZone/DnsRecordPlugin', 'dnsRecord_'.$value[1], $this->plugin->readOnly());
     return preg_match('/w/', $rights);
   }
 
-  protected function genRowIcons($key, $value)
+  protected function genRowIcons ($key, $value)
   {
-    list ($img, $nbicons) = parent::genRowIcons($key, $value);
+    list($img, $nbicons) = parent::genRowIcons($key, $value);
     if ($this->canWriteRecord($value)) {
-      return array($img, $nbicons);
+      return [$img, $nbicons];
     } else {
-      return array('', 0);
+      return ['', 0];
     }
   }
 
-  protected function handleEdit($key)
+  protected function handleEdit ($key)
   {
     if ($this->canWriteRecord($this->value[$key])) {
       return parent::handleEdit($key);
     }
   }
 
-  function delPostValue($key)
+  function delPostValue ($key)
   {
     if ($this->canWriteRecord($this->value[$key])) {
       return parent::delPostValue($key);
@@ -686,68 +686,68 @@ class FQDNAttribute extends StringAttribute
 
 class dnsZone extends simplePlugin
 {
-  var $objectclasses = array('dNSZone');
+  var $objectclasses = ['dNSZone'];
 
-  public static function finalDot()
+  public static function finalDot ()
   {
     global $config;
     return ($config->get_cfg_value('DNSFinalDot', 'TRUE') == 'TRUE');
   }
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('DNS zone'),
       'plDescription' => _('DNS zone'),
-      'plObjectType'  => array('dnsZone' => array(
+      'plObjectType'  => ['dnsZone' => [
         'name'        => _('DNS zone'),
         'filter'      => '(&(objectClass=dNSZone)(relativeDomainName=@)(!(|(zoneName=*.arpa)(zoneName=*.arpa.))))',
         'ou'          => get_ou('dnsRDN'),
         'icon'        => 'geticon.php?context=applications&icon=dns&size=16',
         'mainAttr'    => 'zoneName'
-      )),
+      ]],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo()),
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Zone'),
-        'attrs' => array(
+        'attrs' => [
           new BaseSelectorAttribute(get_ou('dnsRDN')),
-          new FQDNAttribute (
+          new FQDNAttribute(
             _('Zone name'), _('Zone name'),
             'zoneName', TRUE
           ),
-          new HiddenAttribute (
+          new HiddenAttribute(
             // Relative domain name
             'relativeDomainName', TRUE,
             '@'
           ),
-          new SetAttribute (
-            new StringAttribute (
+          new SetAttribute(
+            new StringAttribute(
               _('Reverse zones'), sprintf(_('Reverse zones for this zone in the form xx.xx.in-addr.arpa%1$s or x.x.ip6.arpa%1$s'), (dnsZone::finalDot() ? '.' : '')),
               'reverseZones', FALSE,
               '', '',
               '/^.*\.(in-addr|ip6)\.arpa'.(dnsZone::finalDot() ? '\.' : '').'$/i', '11.168.192.in-addr.arpa'.(dnsZone::finalDot() ? '.' : '')
             )
           ),
-          new HiddenAttribute (
+          new HiddenAttribute(
             'dNSClass', TRUE,
             'IN'
           ),
-        )
-      ),
-      'soa' => array(
+        ]
+      ],
+      'soa' => [
         'name'  => _('SOA record'),
-        'attrs' => array(
-          new CompositeAttribute (
+        'attrs' => [
+          new CompositeAttribute(
             _('SOA Record'),
             'sOARecord',
-            array(
+            [
               new FQDNAttribute(
                 _('Primary DNS server'), _('Domain name of the name server that was the original or primary source of data for this zone'),
                 'soaRecord_primary', TRUE
@@ -781,23 +781,23 @@ class dnsZone extends simplePlugin
                 'soaRecord_ttl', TRUE,
                 0, FALSE, 6400
               ),
-            ),
+            ],
             '/^(\S*) (\S*) (\S*) (\S*) (\S*) (\S*) (\S*)$/',
             '%s %s %s %s %s %s %s'
           ),
-        )
-      ),
-      'records' => array(
+        ]
+      ],
+      'records' => [
         'name'  => _('Records'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
+        'class' => ['fullwidth'],
+        'attrs' => [
           new DnsRecordsAttribute(
             '', _('The DNS records for this zone'),
             'dnsRecords', FALSE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -806,7 +806,7 @@ class dnsZone extends simplePlugin
     $this->attributesAccess['reverseZones']->setInLdap(FALSE);
   }
 
-  function prepareSavedAttributes()
+  function prepareSavedAttributes ()
   {
     parent::prepareSavedAttributes();
     foreach (array_keys(DnsRecordAttribute::$types) as $type) {
diff --git a/dns/admin/systems/class_dnsHost.inc b/dns/admin/systems/class_dnsHost.inc
index bd7cdaaf04b1dbf0cefee5ef94a478acbe5e3e87..30cc73226248ebe0ec14b7a65b8e33c50641ec96 100644
--- a/dns/admin/systems/class_dnsHost.inc
+++ b/dns/admin/systems/class_dnsHost.inc
@@ -23,9 +23,9 @@ class DnsRecordsFilteredAttribute extends DnsRecordsAttribute
 {
   private static $templateValueSeparator = '^';
 
-  function __construct ($label, $description, $ldapName, $zoneDn, $defaultValue = array(), $acl = "")
+  function __construct ($label, $description, $ldapName, $zoneDn, $defaultValue = [], $acl = "")
   {
-    parent::__construct ($label, $description, $ldapName, FALSE, $defaultValue, $acl);
+    parent::__construct($label, $description, $ldapName, FALSE, $defaultValue, $acl);
     $this->zoneDn = $zoneDn;
   }
 
@@ -40,7 +40,7 @@ class DnsRecordsFilteredAttribute extends DnsRecordsAttribute
       if (!$this->plugin->is_template) {
         $this->loadRecords();
       } else {
-        $this->value = array();
+        $this->value = [];
         $this->loadAdditionalTemplatesValues();
       }
     }
@@ -75,7 +75,7 @@ class DnsRecordsFilteredAttribute extends DnsRecordsAttribute
     $this->initialValue = $this->getValue();
   }
 
-  protected function getAttributeArrayValue($key, $value)
+  protected function getAttributeArrayValue ($key, $value)
   {
     $values = parent::getAttributeArrayValue($key, $value);
     if ($this->plugin->is_template) {
@@ -96,7 +96,7 @@ class DnsRecordsFilteredAttribute extends DnsRecordsAttribute
     ) {
       return $values;
     } else {
-      return array();
+      return [];
     }
   }
 
@@ -127,53 +127,53 @@ class DnsRecordsFilteredAttribute extends DnsRecordsAttribute
 
 class dnsHost extends simplePlugin
 {
-  var $objectclasses = array('fdDNSHost');
+  var $objectclasses = ['fdDNSHost'];
   var $displayHeader = TRUE;
 
   protected $zonesCache;
   protected $loaded = FALSE;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('DNS'),
       'plDescription'   => _('Edit the DNS zones of a system'),
       'plIcon'          => 'geticon.php?context=applications&icon=dns&size=48',
       'plSmallIcon'     => 'geticon.php?context=applications&icon=dns&size=16',
-      'plObjectType'    => array('server','workstation','terminal','printer','component','phone','mobilePhone'),
+      'plObjectType'    => ['server','workstation','terminal','printer','component','phone','mobilePhone'],
       'plPriority'      => 5,
-      'plForeignKeys'  => array(
+      'plForeignKeys'  => [
         'fdDNSZoneDn' => 'dnsZone'
-      ),
+      ],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'zones' => array(
+    return [
+      'zones' => [
         'name'  => _('DNS zones'),
-        'attrs' => array(
+        'attrs' => [
           new SetAttribute(
             new SelectAttribute(
               '', _('DNS zones for this host'),
               'fdDNSZoneDn', TRUE
             )
           )
-        )
-      ),
-      'soa' => array(
+        ]
+      ],
+      'soa' => [
         'name'  => _('SOA records'),
-        'attrs' => array()
-      ),
-      'records' => array(
+        'attrs' => []
+      ],
+      'records' => [
         'name'  => _('DNS Records'),
-        'class' => array('fullwidth'),
-        'attrs' => array()
-      ),
-    );
+        'class' => ['fullwidth'],
+        'attrs' => []
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -183,7 +183,7 @@ class dnsHost extends simplePlugin
     $this->reloadZoneChoices();
   }
 
-  protected function reloadZoneChoices()
+  protected function reloadZoneChoices ()
   {
     /* List DNS zones we can read */
     $this->zonesCache = objects::ls('dnsZone', NULL, NULL, '', TRUE);
@@ -202,7 +202,7 @@ class dnsHost extends simplePlugin
     $counts = array_count_values($this->zonesCache);
     foreach ($this->zonesCache as $dn => &$name) {
       if ($counts[$name] > 1) {
-        $name .= ' ('.preg_replace(array('/^[^,]+,/', '/,'.preg_quote($config->current['BASE']).'$/'), '', $dn).')';
+        $name .= ' ('.preg_replace(['/^[^,]+,/', '/,'.preg_quote($config->current['BASE']).'$/'], '', $dn).')';
       }
     }
     unset($name);
@@ -210,7 +210,7 @@ class dnsHost extends simplePlugin
     $this->attributesAccess['fdDNSZoneDn']->setSubmitForm('zoneChanged');
   }
 
-  function zoneChanged()
+  function zoneChanged ()
   {
     global $config;
     $ldap     = $config->get_ldap_link();
@@ -238,15 +238,15 @@ class dnsHost extends simplePlugin
         $cn = '';
       }
       $cn = preg_replace('/\$$/', '', $cn);
-      $this->attributesInfo['soa'] = array(
+      $this->attributesInfo['soa'] = [
         'name'  => _('Primary servers'),
-        'attrs' => array()
-      );
-      $this->attributesInfo['records'] = array(
+        'attrs' => []
+      ];
+      $this->attributesInfo['records'] = [
         'name'  => _('DNS Records'),
-        'class' => array('fullwidth'),
-        'attrs' => array()
-      );
+        'class' => ['fullwidth'],
+        'attrs' => []
+      ];
       foreach ($dnsZones as $dn) {
         if (isset($this->zonesCache[$dn])) {
           $name   = $this->zonesCache[$dn];
@@ -260,14 +260,14 @@ class dnsHost extends simplePlugin
           new DnsRecordsFilteredAttribute(
             $name, sprintf(_('The DNS records for zone "%s"'), $name),
             $attrId, $dn,
-            array(), 'dnsRecords'
+            [], 'dnsRecords'
           )
         );
 
         /* Fetch SOA record */
         $ldap->cat($dn);
         if ($attrs = $ldap->fetch()) {
-          list ($fqdn) = explode(' ', $attrs['sOARecord'][0]);
+          list($fqdn) = explode(' ', $attrs['sOARecord'][0]);
           $servers = dnsManagement::findServerByFQDN($fqdn, $dn);
           if (isset($servers[$this->dn])) {
             $fqdn = '<strong>'.$fqdn.'</strong>';
@@ -291,7 +291,7 @@ class dnsHost extends simplePlugin
     }
   }
 
-  function load()
+  function load ()
   {
     if (!$this->loaded) {
       $this->zoneChanged();
@@ -299,7 +299,7 @@ class dnsHost extends simplePlugin
     }
   }
 
-  function execute()
+  function execute ()
   {
     $this->load();
     $smarty = get_smarty();
@@ -327,7 +327,7 @@ class dnsHost extends simplePlugin
               if (is_array($target)) {
                 $target = $target[0];
               }
-              $s_daemon->append_call('Ldap2Zone.start', $target, array('args' => array($zone)));
+              $s_daemon->append_call('Ldap2Zone.start', $target, ['args' => [$zone]]);
               if ($s_daemon->is_error()) {
                 msg_dialog::display(_('Could not run ldap2zone'), msgPool::siError($s_daemon->get_error()), ERROR_DIALOG);
               } else {
@@ -342,7 +342,7 @@ class dnsHost extends simplePlugin
     }
   }
 
-  function save()
+  function save ()
   {
     global $config;
     $errors = parent::save();
@@ -355,7 +355,7 @@ class dnsHost extends simplePlugin
     /* Update records if IP or CN changed */
     if ($this->initially_was_account) {
       $baseObject = $this->parent->getBaseObject();
-      $messages   = array();
+      $messages   = [];
       $oldcn      = preg_replace('/\$$/', '', $baseObject->attributeInitialValue('cn'));
       $oldips     = $baseObject->attributeInitialValue('ipHostNumber');
 
@@ -424,7 +424,7 @@ class dnsHost extends simplePlugin
     /* Remove records of our IP or CN */
     if ($this->initially_was_account) {
       $baseObject = $this->parent->getBaseObject();
-      $messages   = array();
+      $messages   = [];
       $oldcn      = preg_replace('/\$$/', '', $baseObject->attributeInitialValue('cn'));
       $oldips     = $baseObject->attributeInitialValue('ipHostNumber');
 
@@ -447,7 +447,7 @@ class dnsHost extends simplePlugin
     return parent::post_remove();
   }
 
-  function adapt_from_template($attrs, $skip = array())
+  function adapt_from_template ($attrs, $skip = [])
   {
     parent::adapt_from_template($attrs, $skip);
     $this->reloadZoneChoices();
@@ -462,7 +462,7 @@ class dnsHost extends simplePlugin
 
   /* Record example: array('host', 'aRecord', '192.168.1.1', '')
    * Fields are relativeDomainName, record type, record content, reverse zone (for a/aaaa) */
-  function addRecord($zoneDn, array $record)
+  function addRecord ($zoneDn, array $record)
   {
     if (isset($this->zonesCache[$zoneDn])) {
       $zoneid = preg_replace('/[\/\-,.#:; =]/', '_', $zoneDn);
@@ -473,9 +473,9 @@ class dnsHost extends simplePlugin
     $this->attributesAccess[$attrId]->addValue($record);
   }
 
-  static function removeIpsFromZones(array $zoneDns, array $ips)
+  static function removeIpsFromZones (array $zoneDns, array $ips)
   {
-    $messages = array();
+    $messages = [];
     foreach ($zoneDns as $zoneDn) {
       try {
         $tabObject = objects::open($zoneDn, 'dnsZone');
@@ -495,9 +495,9 @@ class dnsHost extends simplePlugin
     return $messages;
   }
 
-  static function removeCnFromZones(array $zoneDns, $cn)
+  static function removeCnFromZones (array $zoneDns, $cn)
   {
-    $messages = array();
+    $messages = [];
     foreach ($zoneDns as $zoneDn) {
       try {
         $tabObject = objects::open($zoneDn, 'dnsZone');
diff --git a/dns/config/dns/class_dnsConfig.inc b/dns/config/dns/class_dnsConfig.inc
index 8ef25d92686f3500f75b5b6aa5ec2a89cb8f4de6..6c5188bd12b19c11a9f24b24203f598e687c6992 100644
--- a/dns/config/dns/class_dnsConfig.inc
+++ b/dns/config/dns/class_dnsConfig.inc
@@ -20,40 +20,40 @@
 
 class dnsConfig extends simplePlugin
 {
-  var $objectclasses  = array("fdDnsPluginConf");
+  var $objectclasses  = ["fdDnsPluginConf"];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       "plShortName"     => _("DNS configuration"),
       "plDescription"   => _("FusionDirectory dns plugin configuration"),
       "plSelfModify"    => FALSE,
-      "plCategory"      => array("configuration"),
-      "plObjectType"    => array("smallConfig"),
+      "plCategory"      => ["configuration"],
+      "plObjectType"    => ["smallConfig"],
 
       "plProvidedAcls"  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('DNS config'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('DNS RDN'), _('Branch in which DNS zones will be stored'),
             'fdDnsRDN', TRUE,
             'ou=dns'
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Store final dot in domains'), _('Should FD store a final dot at the end of domains?'),
             'fdDNSFinalDot', FALSE,
             TRUE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/dns/locale/af_ZA/fusiondirectory.po b/dns/locale/af_ZA/fusiondirectory.po
index 16b5ef7afd67d0a559c535d3715e4c2bd1981f68..e23d1689982bbe4aab76cb30a43753af13171ffb 100644
--- a/dns/locale/af_ZA/fusiondirectory.po
+++ b/dns/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
@@ -142,127 +142,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -270,129 +270,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/ar/fusiondirectory.po b/dns/locale/ar/fusiondirectory.po
index b7c0955da61c53fda81b2711ed7962f2bd549837..d25e3d2f6484837eaf623396264deedb384e4ae2 100644
--- a/dns/locale/ar/fusiondirectory.po
+++ b/dns/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
@@ -146,127 +146,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr "النوع"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -274,129 +274,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/ca/fusiondirectory.po b/dns/locale/ca/fusiondirectory.po
index eb64020787d87b4c389ea2a6b05eb9291e0b14d3..1dce5dbed91f6ed7dae941726cbfb8c56cbc0ddb 100644
--- a/dns/locale/ca/fusiondirectory.po
+++ b/dns/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
@@ -146,127 +146,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -274,129 +274,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/cs_CZ/fusiondirectory.po b/dns/locale/cs_CZ/fusiondirectory.po
index 484d6ec28b6a17295ff19553a0c376d90e6fb228..2233bb6f711423ad192b5eedb8e943927f602b81 100644
--- a/dns/locale/cs_CZ/fusiondirectory.po
+++ b/dns/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
@@ -149,94 +149,94 @@ msgstr "DNS zóny"
 msgid "DNS zones in this view"
 msgstr "DNS zóny v tomto pohledu"
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr "Typ"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr "Obrácená (reverzní) zóna"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr "Reverzní zóna ve které by tento záznam měl být (pokud je)"
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr "LOC záznam"
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr "Zeměpisná šířka"
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr "StupnÄ›"
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr "minuty"
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr "Sekund"
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr "Sever/Jih"
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr "Sever"
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr "Jih"
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr "Zeměpisná délka"
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr "Východ/západ"
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr "Východ"
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr "Západ"
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr "Nadmořská výška (v metrech)"
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr "Velikost (v metrech)"
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr "Přesnost vodorovně (metry)"
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr "Přesnost svisle (metry)"
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr "NAPTR záznam"
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr "Pořadí"
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
@@ -246,11 +246,11 @@ msgstr ""
 " se stejnými „order“ (pořadí) hodnotami, nízká čísla jsou zpracovány před "
 "těmi vyššími."
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr "Předvolby"
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
@@ -260,11 +260,11 @@ msgstr ""
 "záznamy se stejnými „order“ (pořadí) hodnotami, nízká čísla jsou zpracovány "
 "před těmi vyššími."
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr "Příznaky"
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
@@ -274,11 +274,11 @@ msgstr ""
 "Příznaky jsou jednoznakovové z množiny A až Z (bez diakritiky) a 0 až 9. "
 "Velikost písmen není důležitá."
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr "Služba"
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -289,11 +289,11 @@ msgstr ""
 "protokol který je použit pro komunikaci se službou. JE NUTNÉ zadat protokol "
 "pokud kolonka příznak uvádí, že NAPTR je terminál."
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr "Regulární výraz"
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
@@ -302,11 +302,11 @@ msgstr ""
 "ŘETĚZEC obsahující nahrazující výraz který bude použit na původní řetězec "
 "držený klientem aby vytvořil další doménový název který hledat."
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr "Nahrazení"
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
@@ -314,24 +314,24 @@ msgstr ""
 "Příští NAME kterého se dotazovat na záznamy NAPTR, SRV nebo adresy, v "
 "závislosti na hodnotě kolonky příznaků."
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr "SRV záznam"
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr "Priorita"
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr "Priorita cílového stroje, nižší hodnota znamená více upřednostňované"
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr "Důležitost"
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
@@ -339,40 +339,40 @@ msgstr ""
 "Relativní důležitost pro záznamy se stejnou prioritou, vyšší hodnota znamená"
 " více upřednostňované"
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr "port"
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr "TCP nebo UDP port na kterém se služba nachází"
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr "Cíl"
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr "Kanonický název stroje poskytujícího službu, zakončený tečkou"
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr "IPv4 adresa"
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr "IPv6 adresa"
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr "MX záznam"
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
@@ -380,7 +380,7 @@ msgstr ""
 "Přednost daná tomuto RR mezi ostatními při stejném vlastníkovi, nižší "
 "hodnoty znamenají více upřednostňované"
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
@@ -388,7 +388,7 @@ msgstr ""
 "Doménový název který určuje stroj ochotný fungovat jako vyměňovač e-mailů "
 "pro název vlastníka"
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
@@ -396,12 +396,12 @@ msgstr ""
 "Doménový název který určuje stroj který by měl být autoritativní pro zadanou"
 " třídu a doménu"
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr "Záznam"
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
@@ -409,23 +409,23 @@ msgstr ""
 "Obsah SSHFP záznamu. Je možné získat s použitím „ssh-keygen -r "
 "nejaky.stroj.tld“, nebo sshfp příkaz například"
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr "Přesměrovat na"
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr "Doména které je tato poddoména alternativním názvem"
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr "Obsah"
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr "Obsah tohoto záznamu"
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr "Zadaná IP adresa neodpovídá zvolené reverzní zóně"
 
diff --git a/dns/locale/de/fusiondirectory.po b/dns/locale/de/fusiondirectory.po
index d7cd328858f115dbd015ed406fc7ffe190936ca5..c9a7858ce608ed2795280a7faf5cb50668842160 100644
--- a/dns/locale/de/fusiondirectory.po
+++ b/dns/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
@@ -146,127 +146,127 @@ msgstr "DNS-Zonen"
 msgid "DNS zones in this view"
 msgstr "DNS-Zonen in dieser Ansicht"
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr "Typ"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr "Reverse Zone"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr "LOC-Eintrag"
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr "Breitengrad"
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr "Grade"
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr "Minuten"
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr "Sekunden"
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr "Nord/Süd"
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr "Nord"
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr "Süd"
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr "Längengrad"
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr "Ost/West"
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr "Ost"
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr "West"
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr "Höhe (Meter)"
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr "Größe (Meter)"
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr "Horizontale Genauigkeit (Meter)"
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr "Vertikale Genauigkeit (Meter)"
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr "NAPTR-Eintrag"
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr "Auftrag"
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr "Präferenz"
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr "Flags"
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr "Dienst"
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -274,129 +274,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr "Regulärer Ausdruck"
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr "Ersatz"
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr "SRV-Eintrag"
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr "Priorität"
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr "Gewicht"
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr "Anschluss"
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr "Ziel"
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr "Eine IPv4-Adresse"
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr "Eine IPv6-Adresse"
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr "MX-Eintrag"
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr "Eintrag"
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr "Umleiten zu"
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr "Inhalt"
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr "Inhalt dieses Eintrags"
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/el_GR/fusiondirectory.po b/dns/locale/el_GR/fusiondirectory.po
index 1cb264ff307bacf29170fb36680a7334816026b0..797dde9efe267107908bdc9ca796bc3f4f87c7f9 100644
--- a/dns/locale/el_GR/fusiondirectory.po
+++ b/dns/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
@@ -146,127 +146,127 @@ msgstr "Ζώνες DNS"
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr "Τύπος"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr "Αντίστροφη ζώνη"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr "Λεπτά"
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr "Σημάνσεις"
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr "Υπηρεσία"
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -274,129 +274,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr "Προτεραιότητα"
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr "Θύρα"
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr "Ανακατεύθυνση σε"
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr "Περιεχόμενο"
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/en/fusiondirectory.po b/dns/locale/en/fusiondirectory.po
index 28e389582b4a2ca328def29ca2f2b7f83969e99a..3e0ee9f327f9430531abe90b873ab5e2c64b69eb 100644
--- a/dns/locale/en/fusiondirectory.po
+++ b/dns/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -45,258 +45,202 @@ msgstr ""
 msgid "Should FD store a final dot at the end of domains?"
 msgstr ""
 
-#: admin/dns/class_dnsAcl.inc:30 admin/dns/class_dnsAcl.inc:31
-#: admin/dns/class_dnsAcl.inc:33
-msgid "DNS acl"
-msgstr ""
-
-#: admin/dns/class_dnsAcl.inc:47
-msgid "Acl"
-msgstr ""
-
-#: admin/dns/class_dnsAcl.inc:51
-msgid "ACL name"
-msgstr ""
-
-#: admin/dns/class_dnsAcl.inc:51
-msgid "Name of this acl"
-msgstr ""
-
-#: admin/dns/class_dnsAcl.inc:56
-msgid "Address match list"
-msgstr ""
-
-#: admin/dns/class_dnsAcl.inc:56
-msgid "The ip address match list for this acl"
-msgstr ""
-
-#: admin/dns/class_dnsView.inc:28 admin/dns/class_dnsView.inc:29
-#: admin/dns/class_dnsView.inc:31
-msgid "DNS view"
-msgstr ""
-
-#: admin/dns/class_dnsView.inc:45
-msgid "View"
-msgstr ""
-
-#: admin/dns/class_dnsView.inc:49
-msgid "View name"
-msgstr ""
-
-#: admin/dns/class_dnsView.inc:49
-msgid "Name of this view"
-msgstr ""
-
-#: admin/dns/class_dnsView.inc:53
-msgid "Match clients ACL"
-msgstr ""
-
-#: admin/dns/class_dnsView.inc:53
-msgid ""
-"Name of the ACL to use for the source IP address of the incoming requests"
-msgstr ""
-
-#: admin/dns/class_dnsView.inc:57
-msgid "Match destinations ACL"
+#: admin/systems/class_dnsHost.inc:139 admin/dns/class_dnsManagement.inc:34
+msgid "DNS"
 msgstr ""
 
-#: admin/dns/class_dnsView.inc:57
-msgid ""
-"Name of the ACL to use for the destination IP address of the incoming "
-"requests"
+#: admin/systems/class_dnsHost.inc:140
+msgid "Edit the DNS zones of a system"
 msgstr ""
 
-#: admin/dns/class_dnsView.inc:61
-msgid "Match recursive only"
+#: admin/systems/class_dnsHost.inc:157 admin/dns/class_dnsView.inc:66
+msgid "DNS zones"
 msgstr ""
 
-#: admin/dns/class_dnsView.inc:61
-msgid "Match only recursive queries in this view"
+#: admin/systems/class_dnsHost.inc:161
+msgid "DNS zones for this host"
 msgstr ""
 
-#: admin/dns/class_dnsView.inc:66 admin/systems/class_dnsHost.inc:141
-msgid "DNS zones"
+#: admin/systems/class_dnsHost.inc:168
+msgid "SOA records"
 msgstr ""
 
-#: admin/dns/class_dnsView.inc:66
-msgid "DNS zones in this view"
+#: admin/systems/class_dnsHost.inc:172 admin/systems/class_dnsHost.inc:246
+msgid "DNS Records"
 msgstr ""
 
-#: admin/dns/class_dnsManagement.inc:34 admin/systems/class_dnsHost.inc:123
-msgid "DNS"
+#: admin/systems/class_dnsHost.inc:242
+msgid "Primary servers"
 msgstr ""
 
-#: admin/dns/class_dnsManagement.inc:35
-msgid "DNS Management"
+#: admin/systems/class_dnsHost.inc:261
+#, php-format
+msgid "The DNS records for zone \"%s\""
 msgstr ""
 
-#: admin/dns/class_dnsManagement.inc:37
-msgid "Systems"
+#: admin/systems/class_dnsHost.inc:283
+#, php-format
+msgid "The primary server for zone \"%s\""
 msgstr ""
 
+#: admin/systems/class_dnsHost.inc:323 admin/systems/class_dnsHost.inc:332
 #: admin/dns/class_dnsManagement.inc:91 admin/dns/class_dnsManagement.inc:93
-#: admin/dns/class_dnsManagement.inc:99 admin/systems/class_dnsHost.inc:307
-#: admin/systems/class_dnsHost.inc:313
+#: admin/dns/class_dnsManagement.inc:99
 msgid "Could not run ldap2zone"
 msgstr ""
 
-#: admin/dns/class_dnsManagement.inc:91
-msgid "More than one server matches the SOA"
-msgstr ""
-
-#: admin/dns/class_dnsManagement.inc:93
-msgid "Could not find the primary server"
-msgstr ""
-
-#: admin/dns/class_dnsManagement.inc:106
-msgid "Could not get run ldap2zone"
-msgstr ""
-
-#: admin/dns/class_dnsManagement.inc:108 admin/systems/class_dnsHost.inc:315
+#: admin/systems/class_dnsHost.inc:334 admin/dns/class_dnsManagement.inc:111
 msgid "Ldap2zone"
 msgstr ""
 
-#: admin/dns/class_dnsManagement.inc:108 admin/systems/class_dnsHost.inc:315
+#: admin/systems/class_dnsHost.inc:334 admin/dns/class_dnsManagement.inc:111
 #, php-format
 msgid "Ldap2Zone called for zone \"%s\""
 msgstr ""
 
-#: admin/dns/class_dnsManagement.inc:112 admin/dns/class_dnsZone.inc:363
-#: admin/systems/class_dnsHost.inc:319
+#: admin/systems/class_dnsHost.inc:338 admin/dns/class_dnsZone.inc:381
+#: admin/dns/class_dnsManagement.inc:115
 msgid "Error"
 msgstr ""
 
-#: admin/dns/class_dnsManagement.inc:112 admin/systems/class_dnsHost.inc:319
+#: admin/systems/class_dnsHost.inc:338 admin/dns/class_dnsManagement.inc:115
 msgid "Argonaut client needs to be activated to use ldap2zone remotely"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:27
+#: admin/systems/class_dnsHost.inc:383 admin/systems/class_dnsHost.inc:402
 #, php-format
-msgid ""
-"\"%s\" must contain a fully qualified domain name in lowercase and end with "
-"a final dot.<br/><br/>Example: dns1.example.com."
+msgid "%d records were updated from %s to %s in zone %s"
+msgstr ""
+
+#: admin/systems/class_dnsHost.inc:415 admin/systems/class_dnsHost.inc:444
+msgid "DNS update"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:130
+#: admin/systems/class_dnsHost.inc:489 admin/systems/class_dnsHost.inc:510
+#, php-format
+msgid "%d records were removed in zone %s"
+msgstr ""
+
+#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:133
+#: admin/dns/class_DnsRecordAttribute.inc:120
 msgid "Reverse zone"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:133
+#: admin/dns/class_DnsRecordAttribute.inc:120
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
+#: admin/dns/class_DnsRecordAttribute.inc:153
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:170
+#: admin/dns/class_DnsRecordAttribute.inc:157
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:174
-#: admin/dns/class_DnsRecordAttribute.inc:201
+#: admin/dns/class_DnsRecordAttribute.inc:161
+#: admin/dns/class_DnsRecordAttribute.inc:188
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:166
+#: admin/dns/class_DnsRecordAttribute.inc:193
 msgid "Minutes"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:171
+#: admin/dns/class_DnsRecordAttribute.inc:198
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:189
+#: admin/dns/class_DnsRecordAttribute.inc:176
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:192
+#: admin/dns/class_DnsRecordAttribute.inc:179
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:192
+#: admin/dns/class_DnsRecordAttribute.inc:179
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:197
+#: admin/dns/class_DnsRecordAttribute.inc:184
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:203
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:219
+#: admin/dns/class_DnsRecordAttribute.inc:206
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:219
+#: admin/dns/class_DnsRecordAttribute.inc:206
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:224
+#: admin/dns/class_DnsRecordAttribute.inc:211
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:229
+#: admin/dns/class_DnsRecordAttribute.inc:216
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:234
+#: admin/dns/class_DnsRecordAttribute.inc:221
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:239
+#: admin/dns/class_DnsRecordAttribute.inc:226
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:250
+#: admin/dns/class_DnsRecordAttribute.inc:237
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:254
+#: admin/dns/class_DnsRecordAttribute.inc:241
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:254
+#: admin/dns/class_DnsRecordAttribute.inc:241
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to "
 "ensure the correct ordering of rules.  Low numbers are processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:246
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:246
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\" "
 "values SHOULD be processed, low numbers being processed before high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:264
+#: admin/dns/class_DnsRecordAttribute.inc:251
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:264
+#: admin/dns/class_DnsRecordAttribute.inc:251
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:268
+#: admin/dns/class_DnsRecordAttribute.inc:255
 msgid "Service"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:268
+#: admin/dns/class_DnsRecordAttribute.inc:255
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -304,129 +248,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:259
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:259
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:276
+#: admin/dns/class_DnsRecordAttribute.inc:263
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:276
+#: admin/dns/class_DnsRecordAttribute.inc:263
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:274
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:291
-#: admin/dns/class_DnsRecordAttribute.inc:343
+#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:330
 msgid "Priority"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:291
+#: admin/dns/class_DnsRecordAttribute.inc:278
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:296
+#: admin/dns/class_DnsRecordAttribute.inc:283
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:296
+#: admin/dns/class_DnsRecordAttribute.inc:283
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:301
+#: admin/dns/class_DnsRecordAttribute.inc:288
 msgid "Port"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:301
+#: admin/dns/class_DnsRecordAttribute.inc:288
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:306
-#: admin/dns/class_DnsRecordAttribute.inc:322
-#: admin/dns/class_DnsRecordAttribute.inc:329
-#: admin/dns/class_DnsRecordAttribute.inc:348
-#: admin/dns/class_DnsRecordAttribute.inc:360
+#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:347
 msgid "Target"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:306
+#: admin/dns/class_DnsRecordAttribute.inc:293
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:322
+#: admin/dns/class_DnsRecordAttribute.inc:309
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:316
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:339
+#: admin/dns/class_DnsRecordAttribute.inc:326
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:343
+#: admin/dns/class_DnsRecordAttribute.inc:330
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:348
+#: admin/dns/class_DnsRecordAttribute.inc:335
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the "
 "owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:360
+#: admin/dns/class_DnsRecordAttribute.inc:347
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:369 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:369
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\", "
 "or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:375
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Redirect to"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:375
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:381
+#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:381
+#: admin/dns/class_DnsRecordAttribute.inc:368
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:431
+#: admin/dns/class_DnsRecordAttribute.inc:418
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
@@ -443,7 +387,7 @@ msgstr ""
 msgid "DNS record"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:49
+#: admin/dns/class_dnsZone.inc:49 admin/dns/class_dnsZone.inc:186
 msgid "Subdomain"
 msgstr ""
 
@@ -455,175 +399,229 @@ msgstr ""
 msgid "DNS Record"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:364
+#: admin/dns/class_dnsZone.inc:189
+msgid "Reverse"
+msgstr ""
+
+#: admin/dns/class_dnsZone.inc:382
 #, php-format
 msgid "The IP %s does not match the selected reverse %s, it has been ignored"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:424 admin/dns/class_dnsZone.inc:437
-#: admin/dns/class_dnsZone.inc:446 admin/dns/class_dnsZone.inc:464
-#: admin/dns/class_dnsZone.inc:509 admin/dns/class_dnsZone.inc:516
+#: admin/dns/class_dnsZone.inc:484 admin/dns/class_dnsZone.inc:493
+#: admin/dns/class_dnsZone.inc:501 admin/dns/class_dnsZone.inc:509
+#: admin/dns/class_dnsZone.inc:530 admin/dns/class_dnsZone.inc:563
+#: admin/dns/class_dnsZone.inc:569 admin/dns/class_dnsZone.inc:581
 msgid "LDAP error"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:610
+#: admin/dns/class_dnsZone.inc:676
 #, php-format
 msgid ""
 "\"%s\" must contain a domain name in lowercase and end with a final dot.<br/"
 "><br/>Example: example.com."
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:613
+#: admin/dns/class_dnsZone.inc:679
 #, php-format
 msgid ""
 "\"%s\" must contain a domain name in lowercase.<br/><br/>Example: example.com"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:634 admin/dns/class_dnsZone.inc:635
-#: admin/dns/class_dnsZone.inc:637
+#: admin/dns/class_dnsZone.inc:700 admin/dns/class_dnsZone.inc:701
+#: admin/dns/class_dnsZone.inc:703
 msgid "DNS zone"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:652
+#: admin/dns/class_dnsZone.inc:718
 msgid "Zone"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:656
+#: admin/dns/class_dnsZone.inc:722
 msgid "Zone name"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:666
+#: admin/dns/class_dnsZone.inc:732
 msgid "Reverse zones"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:666
+#: admin/dns/class_dnsZone.inc:732
 #, php-format
 msgid ""
 "Reverse zones for this zone in the form xx.xx.in-addr.arpa%1$s or x.x.ip6."
 "arpa%1$s"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:679
+#: admin/dns/class_dnsZone.inc:745
 msgid "SOA record"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:682
+#: admin/dns/class_dnsZone.inc:748
 msgid "SOA Record"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:686
+#: admin/dns/class_dnsZone.inc:752
 msgid "Primary DNS server"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:686
+#: admin/dns/class_dnsZone.inc:752
 msgid ""
 "Domain name of the name server that was the original or primary source of "
 "data for this zone"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:690
+#: admin/dns/class_dnsZone.inc:756
 msgid "Mail address"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:690
+#: admin/dns/class_dnsZone.inc:756
 msgid ""
 "Domain name which specifies the mailbox of the person responsible for this "
 "zone"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:694
+#: admin/dns/class_dnsZone.inc:760
 msgid "Serial number"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:694
+#: admin/dns/class_dnsZone.inc:760
 msgid "Version number of the original copy of the zone"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:699
+#: admin/dns/class_dnsZone.inc:765
 msgid "Refresh"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:699
+#: admin/dns/class_dnsZone.inc:765
 msgid "Time interval before the zone should be refreshed"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:704
+#: admin/dns/class_dnsZone.inc:770
 msgid "Retry"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:704
+#: admin/dns/class_dnsZone.inc:770
 msgid ""
 "Time interval that should elapse before a failed refresh should be retried"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:709
+#: admin/dns/class_dnsZone.inc:775
 msgid "Expire"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:709
+#: admin/dns/class_dnsZone.inc:775
 msgid ""
 "Time value that specifies the upper limit on the time interval that can "
 "elapse before the zone is no longer authoritative"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:714
+#: admin/dns/class_dnsZone.inc:780
 msgid "TTL"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:714
+#: admin/dns/class_dnsZone.inc:780
 msgid "Minimum TTL field that should be exported with any RR from this zone"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:725
+#: admin/dns/class_dnsZone.inc:791
 msgid "Records"
 msgstr ""
 
-#: admin/dns/class_dnsZone.inc:729
+#: admin/dns/class_dnsZone.inc:795
 msgid "The DNS records for this zone"
 msgstr ""
 
-#: admin/systems/class_dnsHost.inc:124
-msgid "Edit the DNS zones of a system"
+#: admin/dns/class_dnsAcl.inc:30 admin/dns/class_dnsAcl.inc:31
+#: admin/dns/class_dnsAcl.inc:33
+msgid "DNS acl"
 msgstr ""
 
-#: admin/systems/class_dnsHost.inc:145
-msgid "DNS zones for this host"
+#: admin/dns/class_dnsAcl.inc:47
+msgid "Acl"
 msgstr ""
 
-#: admin/systems/class_dnsHost.inc:152
-msgid "SOA records"
+#: admin/dns/class_dnsAcl.inc:51
+msgid "ACL name"
 msgstr ""
 
-#: admin/systems/class_dnsHost.inc:156 admin/systems/class_dnsHost.inc:230
-msgid "DNS Records"
+#: admin/dns/class_dnsAcl.inc:51
+msgid "Name of this acl"
 msgstr ""
 
-#: admin/systems/class_dnsHost.inc:226
-msgid "Primary servers"
+#: admin/dns/class_dnsAcl.inc:56
+msgid "Address match list"
 msgstr ""
 
-#: admin/systems/class_dnsHost.inc:245
-#, php-format
-msgid "The DNS records for zone \"%s\""
+#: admin/dns/class_dnsAcl.inc:56
+msgid "The ip address match list for this acl"
 msgstr ""
 
-#: admin/systems/class_dnsHost.inc:267
-#, php-format
-msgid "The primary server for zone \"%s\""
+#: admin/dns/class_dnsView.inc:28 admin/dns/class_dnsView.inc:29
+#: admin/dns/class_dnsView.inc:31
+msgid "DNS view"
 msgstr ""
 
-#: admin/systems/class_dnsHost.inc:364 admin/systems/class_dnsHost.inc:383
-#, php-format
-msgid "%d records were updated from %s to %s in zone %s"
+#: admin/dns/class_dnsView.inc:45
+msgid "View"
 msgstr ""
 
-#: admin/systems/class_dnsHost.inc:396 admin/systems/class_dnsHost.inc:425
-msgid "DNS update"
+#: admin/dns/class_dnsView.inc:49
+msgid "View name"
 msgstr ""
 
-#: admin/systems/class_dnsHost.inc:465 admin/systems/class_dnsHost.inc:482
-#, php-format
-msgid "%d records were removed in zone %s"
+#: admin/dns/class_dnsView.inc:49
+msgid "Name of this view"
+msgstr ""
+
+#: admin/dns/class_dnsView.inc:53
+msgid "Match clients ACL"
+msgstr ""
+
+#: admin/dns/class_dnsView.inc:53
+msgid ""
+"Name of the ACL to use for the source IP address of the incoming requests"
+msgstr ""
+
+#: admin/dns/class_dnsView.inc:57
+msgid "Match destinations ACL"
+msgstr ""
+
+#: admin/dns/class_dnsView.inc:57
+msgid ""
+"Name of the ACL to use for the destination IP address of the incoming "
+"requests"
+msgstr ""
+
+#: admin/dns/class_dnsView.inc:61
+msgid "Match recursive only"
+msgstr ""
+
+#: admin/dns/class_dnsView.inc:61
+msgid "Match only recursive queries in this view"
+msgstr ""
+
+#: admin/dns/class_dnsView.inc:66
+msgid "DNS zones in this view"
+msgstr ""
+
+#: admin/dns/class_dnsManagement.inc:35
+msgid "DNS Management"
+msgstr ""
+
+#: admin/dns/class_dnsManagement.inc:37
+msgid "Systems"
+msgstr ""
+
+#: admin/dns/class_dnsManagement.inc:91
+msgid "More than one server matches the SOA"
+msgstr ""
+
+#: admin/dns/class_dnsManagement.inc:93
+msgid "Could not find the primary server"
+msgstr ""
+
+#: admin/dns/class_dnsManagement.inc:109
+msgid "Could not get run ldap2zone"
 msgstr ""
 
 #: admin/systems/dnsrecords.tpl.c:2
diff --git a/dns/locale/es/fusiondirectory.po b/dns/locale/es/fusiondirectory.po
index 17d606d646aedd0c8ba93437d344b56d3a132023..e399e003912731d07aef9365aefc52c467346d01 100644
--- a/dns/locale/es/fusiondirectory.po
+++ b/dns/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/dns/class_dnsAcl.inc:30 admin/dns/class_dnsAcl.inc:31
 #: admin/dns/class_dnsAcl.inc:33
@@ -146,127 +146,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr "Tipo"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr "Zona Inversa"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr "Minutos"
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr "Servicio"
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -274,129 +274,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr "Prioridad"
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr "Puerto"
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr "Objetivo"
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr "Contenido"
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/es_CO/fusiondirectory.po b/dns/locale/es_CO/fusiondirectory.po
index 8b7dda88db5ba01e2f039794b25bdc660a5e9e7c..0743bb54194b0c370f12891db6d5f51f60470250 100644
--- a/dns/locale/es_CO/fusiondirectory.po
+++ b/dns/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/dns/class_dnsAcl.inc:30 admin/dns/class_dnsAcl.inc:31
 #: admin/dns/class_dnsAcl.inc:33
@@ -146,127 +146,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr "Tipo"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -274,129 +274,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr "Puerto"
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/es_VE/fusiondirectory.po b/dns/locale/es_VE/fusiondirectory.po
index 6c26b2223578d2803b47a3390805416f66286fce..3df5e95073e8f159b498068885e427b79fc3aef6 100644
--- a/dns/locale/es_VE/fusiondirectory.po
+++ b/dns/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/dns/class_dnsAcl.inc:30 admin/dns/class_dnsAcl.inc:31
 #: admin/dns/class_dnsAcl.inc:33
@@ -146,127 +146,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr "Tipo"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr "Zona Inversa"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr "Minutos"
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr "Servicio"
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -274,129 +274,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr "Prioridad"
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr "Puerto"
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr "Objetivo"
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr "Contenido"
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/fa_IR/fusiondirectory.po b/dns/locale/fa_IR/fusiondirectory.po
index 89c7e9a55aeff7ccf2649aca3df67adee1dd7eaa..2f9e3994f822ca8d38dfefe1fd2912c41bed63b9 100644
--- a/dns/locale/fa_IR/fusiondirectory.po
+++ b/dns/locale/fa_IR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
@@ -146,127 +146,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -274,129 +274,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/fi_FI/fusiondirectory.po b/dns/locale/fi_FI/fusiondirectory.po
index 167302c7ba682f6caffb42459be4efeb73383cd4..357e2d0289c0084288e94c1351625ca2172b7020 100644
--- a/dns/locale/fi_FI/fusiondirectory.po
+++ b/dns/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
@@ -146,127 +146,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr "Tyyppi"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -274,129 +274,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr "Portti"
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr "Määränpää"
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/fr/fusiondirectory.po b/dns/locale/fr/fusiondirectory.po
index 67175582bd6e5ba261a7ef8dca0971f1b9497114..3a144fd1947a204398f7fec45ddf50fb97d8ce25 100644
--- a/dns/locale/fr/fusiondirectory.po
+++ b/dns/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/dns/class_dnsAcl.inc:30 admin/dns/class_dnsAcl.inc:31
 #: admin/dns/class_dnsAcl.inc:33
@@ -150,94 +150,94 @@ msgstr "Zones DNS"
 msgid "DNS zones in this view"
 msgstr "Zones DNS dans cette vue"
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr "Type"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr "Zone inverse"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr "Zone inverse dans lequel cet enregistrement devrait être"
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr "Enregistrement LOC "
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr "Latitude"
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr "Degrés"
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr "Minutes"
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr "Secondes"
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr "Nord/Sud"
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr "Nord"
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr "Sud"
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr "Longitude"
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr "Est/Ouest"
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr "Est"
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr "Ouest"
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr "Altitude (mètres)"
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr "Taille (mètres)"
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr "Précision horizontale (mètres)"
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr "Précision verticale (mètres)"
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr "Enregistrement NAPTR "
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr "Ordre"
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
@@ -247,11 +247,11 @@ msgstr ""
 "traités pour assurer l'ordre correct des règles. Les petits nombres sont "
 "traités avant les grands nombres."
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr "Préférence"
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
@@ -261,11 +261,11 @@ msgstr ""
 "valeurs \"ordre\" sont égales doivent être traités, les petits nombres sont "
 "traités avant les grands nombres."
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr "Drapeaux"
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
@@ -275,11 +275,11 @@ msgstr ""
 " champs de l'enregistrement. Les drapeaux sont des caractères de l'ensemble "
 "[A-Z0-9]. La casse des caractères alphabétiques n’est pas prise en compte."
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr "Service"
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -291,11 +291,11 @@ msgstr ""
 "avec un service. Un protocole doit être spécifié si les drapeaux indiquent "
 "que le NAPTR est terminal."
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr "Expression régulière"
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
@@ -305,11 +305,11 @@ msgstr ""
 "chaîne d'origine envoyée par le client afin de construire le prochain nom de"
 " domaine à rechercher."
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr "Remplacement"
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
@@ -317,25 +317,25 @@ msgstr ""
 "Le prochain NOM à interroger pour NAPTR, SRV, ou des enregistrements "
 "d'adresses en fonction de la valeur des drapeaux."
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr "Enregistrement SRV"
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr "Priorité"
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 "Priorité de l'hôte cible, plus la valeur est basse plus c’est prioritaire"
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr "Poids"
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
@@ -343,42 +343,42 @@ msgstr ""
 "Poids relatif des enregistrements avec la même priorité, plus la valeur est "
 "grande plus c’est prioritaire"
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr "Port"
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr "Port TCP ou UDP sur lequel le service se trouve"
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr "Cible"
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 "Nom d’hôte canonique de la machine qui fournit le service, se terminant par "
 "un point"
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr "Une adresse IPv4"
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr "Une adresse IPv6"
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr "Enregistrement MX"
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
@@ -386,7 +386,7 @@ msgstr ""
 "Préférence donnée à ce RR entre autres du même propriétaire, les valeurs "
 "plus basses sont préférées"
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
@@ -394,7 +394,7 @@ msgstr ""
 "Nom de domaine qui indique un hôte qui sert de serveur de courriel pour le "
 "domaine"
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
@@ -402,12 +402,12 @@ msgstr ""
 "Nom de domaine qui indique un hôte qui doit faire autorité pour la classe et"
 " le domaine indiqués"
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr "Enregistrement"
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
@@ -415,23 +415,23 @@ msgstr ""
 "Contenu de l’enregistrement SSHFP. Peut être obtenu en utilisant «ssh-keygen"
 " -r some.host.tld», ou la commande sshfp par exemple"
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr "Rediriger vers"
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr "Domaine dont ce sous-domaine est un alias"
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr "Contenu"
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr "Contenu de cet enregistrement"
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr "L'adresse IP saisie ne correspond pas à la zone inverse sélectionnée"
 
diff --git a/dns/locale/hu_HU/fusiondirectory.po b/dns/locale/hu_HU/fusiondirectory.po
index 2a0c2e9ac30157d0f783a5803452d8b8e16a3ed5..10b92955cc9b028b4cf8f2a232faae75ca6508d8 100644
--- a/dns/locale/hu_HU/fusiondirectory.po
+++ b/dns/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
@@ -142,127 +142,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -270,129 +270,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/id/fusiondirectory.po b/dns/locale/id/fusiondirectory.po
index 589462f602e05f1cb5e1ea7f510acef32ccabe00..9cfffa9519fb8786a5297e2f17dc4b78b318fcc9 100644
--- a/dns/locale/id/fusiondirectory.po
+++ b/dns/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
@@ -142,127 +142,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -270,129 +270,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/it_IT/fusiondirectory.po b/dns/locale/it_IT/fusiondirectory.po
index de9c96ffd33687fd67aa26aee7764253b2605974..995f5e1a792124b5c25e71d35ed863b00f8503a1 100644
--- a/dns/locale/it_IT/fusiondirectory.po
+++ b/dns/locale/it_IT/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: Paola Penati <paola.penati@opensides.be>, 2018\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -20,7 +20,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/dns/class_dnsAcl.inc:30 admin/dns/class_dnsAcl.inc:31
 #: admin/dns/class_dnsAcl.inc:33
@@ -152,94 +152,94 @@ msgstr "Zone DNS"
 msgid "DNS zones in this view"
 msgstr "Zone DNS in questa vista"
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr "Tipo"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr "Zona inversa"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr "Zona inversa nella quale dovrebbe trovarsi questo record, se ce n'é"
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr "Record LOC"
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr "Latitudine"
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr "Gradi"
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr "Minuti"
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr "Secondi"
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr "Nord/Sud"
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr "Nord"
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr "Sud"
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr "Longitudine"
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr "Est/Ovest"
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr "Est"
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr "Ovest"
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr "Altitudine (in metri)"
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr "Taglia (in metri)"
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr "Precisione orizzontale (in metri)"
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr "Precisione verticale (in metri)"
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr "Record NAPTR"
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr "Ordine"
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
@@ -249,11 +249,11 @@ msgstr ""
 "per assicurare il corretto ordine delle regole. I numeri bassi vengono "
 "elaborati prima dei numeri alti ."
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr "Preferenza"
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
@@ -263,11 +263,11 @@ msgstr ""
 "\"ordine\" dovrebbero essere trattati, i numeri bassi vengono elaborati "
 "prima dei numeri alti."
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr "Flags"
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
@@ -277,11 +277,11 @@ msgstr ""
 "campi del record. I flags sono singoli caratteri dal set [A - Z0-9 ]. Il "
 "caso dei caratteri alfabetici non è significativo."
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr "Servizi"
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -293,11 +293,11 @@ msgstr ""
 " servizio . Un protocollo DEVE essere specificato se il campo flags afferma "
 "che il NAPTR è terminale."
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr "Espressione regolare"
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
@@ -307,11 +307,11 @@ msgstr ""
 " stringa originale conservata dal cliente al fine di costruire il prossimo "
 "nome di dominio da ricercare."
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr "Sostituzione"
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
@@ -319,26 +319,26 @@ msgstr ""
 "Il successivo NOME di query per NAPTR , SRV , o record di indirizzo in base "
 "al valore del campo flags . "
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr "Record SRV"
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr "Priorità"
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 "La priorità del l'host di destinazione, il valore più basso significa più "
 "preferito"
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr "Peso"
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
@@ -346,42 +346,42 @@ msgstr ""
 "Peso relativo per i record con la stessa priorità , il valore più alto "
 "significa più preferito"
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr "Porta"
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr "Port TCP o UDP sui quali i servizi devono essere trovati"
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr "Obiettivo"
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 "Hostname canonico della macchina che fornisce il servizio, che termina con "
 "un punto"
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr "Un indirizzo IPv4"
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr "Un indirizzo IPv6"
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr "Record MX"
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
@@ -389,7 +389,7 @@ msgstr ""
 "Preferenza data a questo RR tra gli altri allo stesso proprietario, valori "
 "più bassi sono preferiti."
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
@@ -397,7 +397,7 @@ msgstr ""
 "Nome a dominio che specifica la volontà di un host ad agire come uno scambio"
 " di posta per il nome del proprietario"
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
@@ -405,12 +405,12 @@ msgstr ""
 "Nome di dominio che specifica un host che dovrebbe essere autorevole per la "
 "classe e il dominio specificati"
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr "Record"
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
@@ -419,23 +419,23 @@ msgstr ""
 "some.host.tld\", or sshfp command for instance, o per esempio il comando "
 "sshfp"
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr "Reindirizzare verso"
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr "Dominio di cui questo sottodominio é un alias"
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr "Contenuto"
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr "Contenuto di questo record"
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr "L'IP immesso non corrisponde alla zona inversa selezionata"
 
diff --git a/dns/locale/ja/fusiondirectory.po b/dns/locale/ja/fusiondirectory.po
index b9ee1b803260e25d238b23f575292c92338fcdbd..e2d90703cf167e0dfbd563e530e7d17ccf74b3ac 100644
--- a/dns/locale/ja/fusiondirectory.po
+++ b/dns/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
@@ -142,127 +142,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -270,129 +270,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/ko/fusiondirectory.po b/dns/locale/ko/fusiondirectory.po
index 30c5d0f77f181a77e6ec128ca959532b24c2229a..07ec42f22f937fcd13258caeedbaa61bc500fa1c 100644
--- a/dns/locale/ko/fusiondirectory.po
+++ b/dns/locale/ko/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# Choi Chris <chulwon.choi@gmail.com>, 2018
+# Choi Chris <chulwon.choi@gmail.com>, 2020
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
-"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
+"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2020\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -24,27 +24,27 @@ msgstr ""
 #: admin/dns/class_dnsAcl.inc:30 admin/dns/class_dnsAcl.inc:31
 #: admin/dns/class_dnsAcl.inc:33
 msgid "DNS acl"
-msgstr ""
+msgstr "DNS ACL"
 
 #: admin/dns/class_dnsAcl.inc:47
 msgid "Acl"
-msgstr ""
+msgstr "ACL"
 
 #: admin/dns/class_dnsAcl.inc:51
 msgid "ACL name"
-msgstr ""
+msgstr "ACL 이름"
 
 #: admin/dns/class_dnsAcl.inc:51
 msgid "Name of this acl"
-msgstr ""
+msgstr "이 ACL의 이름"
 
 #: admin/dns/class_dnsAcl.inc:56
 msgid "Address match list"
-msgstr ""
+msgstr "주소 일치 목록"
 
 #: admin/dns/class_dnsAcl.inc:56
 msgid "The ip address match list for this acl"
-msgstr ""
+msgstr "이 ACL의 IP 주소 일치 목록"
 
 #: admin/dns/class_dnsManagement.inc:34 admin/systems/class_dnsHost.inc:139
 msgid "DNS"
@@ -52,7 +52,7 @@ msgstr "DNS"
 
 #: admin/dns/class_dnsManagement.inc:35
 msgid "DNS Management"
-msgstr ""
+msgstr "DNS 관리"
 
 #: admin/dns/class_dnsManagement.inc:37
 msgid "Systems"
@@ -62,28 +62,28 @@ msgstr "시스템"
 #: admin/dns/class_dnsManagement.inc:99 admin/systems/class_dnsHost.inc:323
 #: admin/systems/class_dnsHost.inc:332
 msgid "Could not run ldap2zone"
-msgstr ""
+msgstr "ldap2zone을 실행할 수 없습니다"
 
 #: admin/dns/class_dnsManagement.inc:91
 msgid "More than one server matches the SOA"
-msgstr ""
+msgstr "둘 이상의 서버가 SOA와 일치"
 
 #: admin/dns/class_dnsManagement.inc:93
 msgid "Could not find the primary server"
-msgstr ""
+msgstr "기본 서버를 찾을 수 없습니다"
 
 #: admin/dns/class_dnsManagement.inc:109
 msgid "Could not get run ldap2zone"
-msgstr ""
+msgstr "ldap2zone을 실행할 수 없습니다"
 
 #: admin/dns/class_dnsManagement.inc:111 admin/systems/class_dnsHost.inc:334
 msgid "Ldap2zone"
-msgstr ""
+msgstr "Ldap2zone"
 
 #: admin/dns/class_dnsManagement.inc:111 admin/systems/class_dnsHost.inc:334
 #, php-format
 msgid "Ldap2Zone called for zone \"%s\""
-msgstr ""
+msgstr "Ldap2Zone이 \"%s\" 영역을 호출했습니다."
 
 #: admin/dns/class_dnsManagement.inc:115 admin/dns/class_dnsZone.inc:381
 #: admin/systems/class_dnsHost.inc:338
@@ -146,127 +146,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr "타입"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr "ë¶„"
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
-msgstr ""
+msgstr "ì´ˆ"
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr "플래그"
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr "서비스"
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -274,129 +274,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr "우선 순위"
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr "포트"
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr "타겟"
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr "로 전달"
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
-msgstr ""
+msgstr "본문"
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
@@ -517,7 +517,7 @@ msgstr ""
 
 #: admin/dns/class_dnsZone.inc:765
 msgid "Refresh"
-msgstr ""
+msgstr "리프레시"
 
 #: admin/dns/class_dnsZone.inc:765
 msgid "Time interval before the zone should be refreshed"
@@ -544,7 +544,7 @@ msgstr ""
 
 #: admin/dns/class_dnsZone.inc:780
 msgid "TTL"
-msgstr ""
+msgstr "TTL"
 
 #: admin/dns/class_dnsZone.inc:780
 msgid "Minimum TTL field that should be exported with any RR from this zone"
diff --git a/dns/locale/lv/fusiondirectory.po b/dns/locale/lv/fusiondirectory.po
index f2adb1cbda30ba438ac0151b336eee81f4d38a68..eaa3fce063843f5b87f70bf5659138c92f85c028 100644
--- a/dns/locale/lv/fusiondirectory.po
+++ b/dns/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
@@ -146,127 +146,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr "Veids"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -274,129 +274,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr "Novirzīt uz"
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/nb/fusiondirectory.po b/dns/locale/nb/fusiondirectory.po
index aff00978152270fc295a2430e3bf42b6687b4d42..4d900243aa8b15129ffafe0d3cb2f1e3edeef983 100644
--- a/dns/locale/nb/fusiondirectory.po
+++ b/dns/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
@@ -146,127 +146,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -274,129 +274,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/nl/fusiondirectory.po b/dns/locale/nl/fusiondirectory.po
index 81bc190e5e4fea96e82f79e20ce86c2eb646aade..d27484170ea47976bcaddf1689e468776172a227 100644
--- a/dns/locale/nl/fusiondirectory.po
+++ b/dns/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
@@ -150,94 +150,94 @@ msgstr "DNS zones"
 msgid "DNS zones in this view"
 msgstr "DNS zones in dit venster"
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr "Type"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr "Reverse zone"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr "Reverse zone in dewelke dit record moet zitten, indien nodig"
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr "LOC record"
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr "Breedtegraad"
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr "Graden"
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr "Minuten"
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr "Seconden"
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr "Noord/Zuid"
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr "Noord"
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr "Zuid"
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr "Lengtegraad"
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr "Oost/West"
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr "Oost"
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr "West"
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr "Hoogte (meters)"
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr "Grootte (meters)"
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr "Horizontale nauwkeurigheid (meters)"
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr "Verticale nauwkeurigheid (meters)"
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr "NAPTR record"
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr "Bestelling"
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
@@ -247,11 +247,11 @@ msgstr ""
 "worden om de juiste regelvolgorde te verzekeren. Lage nummers worden voor "
 "hoge nummers verwerkt."
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr "Voorkeur"
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
@@ -261,11 +261,11 @@ msgstr ""
 "\"volgorde\" waardes ZOU moeten verwerkt zijn. Lage nummers worden voor hoge"
 " nummers verwerkt."
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr "Vlaggen"
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
@@ -275,11 +275,11 @@ msgstr ""
 " de velden in het record. Vlaggen zijn enkele karakters van het set "
 "[A-Z0-9].  De gebruikte karakters zijn niet hoofd- of kleine lettergevoelig."
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr "Dienst"
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -291,11 +291,11 @@ msgstr ""
 " Een protocol MOET bepaald zijn als het vlaggenveld zegt dat het NAPTR "
 "definitief is"
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr "Reguliere expressie"
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
@@ -305,11 +305,11 @@ msgstr ""
 "originele string van de cliënt ter opbouw van de volgende op te zoeken "
 "domeinnaam."
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr "Vervanging"
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
@@ -317,24 +317,24 @@ msgstr ""
 "De volgende NAME om op te vragen voor NAPTR, SRV, of adres records "
 "afhankelijk van de waarde van het afvinkveld."
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr "SRV record"
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr "Prioriteit"
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr "Prioriteit van de grootste host, lage waarde betekent meer aangewezen"
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr "Gewicht"
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
@@ -342,42 +342,42 @@ msgstr ""
 "Relatieve gewicht van records met dezelfde prioriteit, hogere waarde "
 "betekent hogere voorkeur"
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr "Poort"
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr "TCP of UDP poort waarop de service kan gevonden worden"
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr "Doel"
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 "Standaard voorgeschreven hostnaam van de machine die de dienst aanbied, "
 "eindigend in een punt"
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr "Een IPv4 adres"
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr "Een IPv6 adres"
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr "MX record"
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
@@ -385,7 +385,7 @@ msgstr ""
 "Voorkeur gegeven aan dit RR tussen anderen met dezelfde eigenaar, lagere "
 "waardes hebben de voorkeur"
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
@@ -393,7 +393,7 @@ msgstr ""
 "Domein naam dewelke een host specifieert die bereidt is zich te gedragen als"
 " een mail uitwisseling voor de naam van de eigenaar"
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
@@ -401,12 +401,12 @@ msgstr ""
 "Domeinnaam die een host specificeert die autoritair zou moeten zijn voor de "
 "bepaalde klasse en het domein"
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr "Record"
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
@@ -414,23 +414,23 @@ msgstr ""
 "SSHFP ingave inhoud. Deze kan verkregen worden gebruik makend van \"ssh-"
 "keygen -r some.host.tld\", of sshfp commando bijvoorbeeld."
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr "Doorsturen naar"
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr "Domein waarvoor dit subdomein een alias is"
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr "Inhoud"
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr "Inhoud van de record"
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr "Het ingegeven IP komt niet overeen met de geselecteerde reverse zone"
 
diff --git a/dns/locale/pl/fusiondirectory.po b/dns/locale/pl/fusiondirectory.po
index 9db2821f2ff21f32d5c6ab477a4d0d930be666e6..79b8be29b62e91ad5e206a69557269e8ae540351 100644
--- a/dns/locale/pl/fusiondirectory.po
+++ b/dns/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
@@ -146,127 +146,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr "Typ"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr "Strefa odwrotna"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr "Usługa"
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -274,129 +274,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr "Priorytet"
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr "Port"
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/pt/fusiondirectory.po b/dns/locale/pt/fusiondirectory.po
index f4baeaa384a4db3a1b5ef81415879862d820a579..47d367c492c287fafc329027b3246f0b3e5bcb39 100644
--- a/dns/locale/pt/fusiondirectory.po
+++ b/dns/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/dns/class_dnsAcl.inc:30 admin/dns/class_dnsAcl.inc:31
 #: admin/dns/class_dnsAcl.inc:33
@@ -146,127 +146,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr "Tipo"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -274,129 +274,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/pt_BR/fusiondirectory.po b/dns/locale/pt_BR/fusiondirectory.po
index 58fc8781d0c9a0fd6a0b488dbbd3b538cfbd6590..ceb56d37c4f26f793d20f3a79231414092a1880c 100644
--- a/dns/locale/pt_BR/fusiondirectory.po
+++ b/dns/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/dns/class_dnsAcl.inc:30 admin/dns/class_dnsAcl.inc:31
 #: admin/dns/class_dnsAcl.inc:33
@@ -146,127 +146,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr "Tipo"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr "Zona reversa"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr "Minutos"
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr "Bandeiras"
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr "Serviço"
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -274,129 +274,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr "Porta"
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr "Destino"
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr "Redirecionar para"
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr "Conteúdo"
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/ru/fusiondirectory.po b/dns/locale/ru/fusiondirectory.po
index 5d363d9973e73caa6159054d31bcd935ea3f648d..480e4063a757990c95371c971864068364588e45 100644
--- a/dns/locale/ru/fusiondirectory.po
+++ b/dns/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
@@ -146,94 +146,94 @@ msgstr "Зоны DNS"
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr "Тип"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr "Обратная зона"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr "LOC Запись"
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr "Широта"
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr "Минуты"
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr "Секунды"
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr "Север/Юг"
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr "Север"
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr "Юг"
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr "Долготота"
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr "Восток/Запад"
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr "Восток"
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr "Запад"
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr "Высота (в метрах)"
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr "NAPTR Записи"
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr "Order"
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
@@ -243,11 +243,11 @@ msgstr ""
 "для точного представления упорядоченного списка правил. Упорядочивание идет "
 "от меньших значений к большим."
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr "Preference"
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
@@ -257,11 +257,11 @@ msgstr ""
 "NAPTR с одинаковыми значениями полей \"order\". Младшие номера "
 "обрабатываются раньше старших."
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr "Flags"
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
@@ -271,11 +271,11 @@ msgstr ""
 "представляют собой одиночные символы из набора [A-Z0-9]. Регистр букв во "
 "внимание не принимается."
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr "Service"
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -283,11 +283,11 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr "Regular Expression"
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
@@ -297,11 +297,11 @@ msgstr ""
 "строке, сохраняемой клиентом для конструирования следующего искомого "
 "доменного имени."
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr "Replacement"
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
@@ -309,24 +309,24 @@ msgstr ""
 "Следующие НАЗВАНИЕ, запрашиваемое для NAPTR, SRV, или адреса записей, "
 "зависит от значения поля флагов."
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr "SRV записи"
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr "Приоритет"
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr "Вес"
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
@@ -334,53 +334,53 @@ msgstr ""
 "Относительный вес записей с одинаковым приоритетом, предпочтение отдается к "
 "более высокому значению"
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr "Порт"
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr "TCP или UDP порт на котором служба должна быть найдена"
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 "Каноническое имя хоста машины предоставляющей службу, заканчивается точкой."
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr "IPv4 адресс"
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr "IPv6 адресс"
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr "MX записи"
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
@@ -388,12 +388,12 @@ msgstr ""
 "Доменное имя, которое определяет хост, который должен быть авторитативным "
 "для этого класса и домена"
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr "Запись"
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
@@ -401,23 +401,23 @@ msgstr ""
 "Содержимое записи SSHFP. Может быть получено с помощью \"ssh-keygen -r "
 "some.host.tld\", или sshfp команд например"
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr "Перенаправить куда"
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr "Содержимое"
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr "Содержимое записи"
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr "Введенный IP не соответствует выбранной обратной зоне"
 
diff --git a/dns/locale/ru@petr1708/fusiondirectory.po b/dns/locale/ru@petr1708/fusiondirectory.po
index 8fbb01615bcaa72d8843cc22926a12a656585e30..9570d4967e9231633f2ad02854f9d1af8f86f3c9 100644
--- a/dns/locale/ru@petr1708/fusiondirectory.po
+++ b/dns/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
@@ -142,127 +142,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -270,129 +270,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/sv/fusiondirectory.po b/dns/locale/sv/fusiondirectory.po
index 93bfe0b56bfef12e892644dcdac8d3ed824c4ecb..620501c54b4529f2ec7e162f6a46dcc4a30e2913 100644
--- a/dns/locale/sv/fusiondirectory.po
+++ b/dns/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
@@ -146,127 +146,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr "Typ"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -274,129 +274,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr "Prioritet"
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr "Port"
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr "Omdirigera till"
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr "Innehåll"
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/tr_TR/fusiondirectory.po b/dns/locale/tr_TR/fusiondirectory.po
index eb8e3d8eb8003d1247550ecf2fb715f4b4b88f50..858b223270b1d9f9c0f86e713f36875a3b80bc25 100644
--- a/dns/locale/tr_TR/fusiondirectory.po
+++ b/dns/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2021
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2021\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -84,7 +88,7 @@ msgstr ""
 #: admin/dns/class_dnsManagement.inc:115 admin/dns/class_dnsZone.inc:381
 #: admin/systems/class_dnsHost.inc:338
 msgid "Error"
-msgstr ""
+msgstr "Hata"
 
 #: admin/dns/class_dnsManagement.inc:115 admin/systems/class_dnsHost.inc:338
 msgid "Argonaut client needs to be activated to use ldap2zone remotely"
@@ -142,127 +146,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
-msgstr ""
+msgstr "Tür"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
-msgstr ""
+msgstr "Dakikalar"
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
-msgstr ""
+msgstr "Saniyeler"
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -270,129 +274,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/ug/fusiondirectory.po b/dns/locale/ug/fusiondirectory.po
index cf718c7d695a04448bf64489bae8ff259ca7cc91..071072943a6884db1632fb0500c17be7c5069c32 100644
--- a/dns/locale/ug/fusiondirectory.po
+++ b/dns/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/dns/class_dnsAcl.inc:30 admin/dns/class_dnsAcl.inc:31
 #: admin/dns/class_dnsAcl.inc:33
@@ -142,127 +142,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -270,129 +270,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/vi_VN/fusiondirectory.po b/dns/locale/vi_VN/fusiondirectory.po
index 55147c76463f3317aba7e92e5657a7081dca338f..c9cdf93b6615f3a005870a3449c43cb4bfa2cced 100644
--- a/dns/locale/vi_VN/fusiondirectory.po
+++ b/dns/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
@@ -146,127 +146,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr "Loại"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -274,129 +274,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/zh/fusiondirectory.po b/dns/locale/zh/fusiondirectory.po
index 7a6021cf203babd5e58308566250ef8da4c0c5e5..7aacb895aadf091ac7e1818e8e6368ab0dab1d18 100644
--- a/dns/locale/zh/fusiondirectory.po
+++ b/dns/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
@@ -146,127 +146,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr "类型"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr "反向解析域"
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -274,129 +274,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr "优先级"
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr "端口"
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dns/locale/zh_TW/fusiondirectory.po b/dns/locale/zh_TW/fusiondirectory.po
index c9ed93881a4c8f7e4305a6ddb0366ce066118ab5..def13bb57baf569eb90d307a00b177db919c6f2d 100644
--- a/dns/locale/zh_TW/fusiondirectory.po
+++ b/dns/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:08+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
@@ -142,127 +142,127 @@ msgstr ""
 msgid "DNS zones in this view"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:117 admin/dns/class_dnsZone.inc:187
+#: admin/dns/class_DnsRecordAttribute.inc:111 admin/dns/class_dnsZone.inc:187
 msgid "Type"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:120
+#: admin/dns/class_DnsRecordAttribute.inc:114
 msgid "Reverse zone this record should be in, if any"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:153
+#: admin/dns/class_DnsRecordAttribute.inc:147
 msgid "LOC Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:157
+#: admin/dns/class_DnsRecordAttribute.inc:151
 msgid "Latitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:161
-#: admin/dns/class_DnsRecordAttribute.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:155
+#: admin/dns/class_DnsRecordAttribute.inc:182
 msgid "Degrees"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:166
-#: admin/dns/class_DnsRecordAttribute.inc:193
+#: admin/dns/class_DnsRecordAttribute.inc:160
+#: admin/dns/class_DnsRecordAttribute.inc:187
 msgid "Minutes"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:171
-#: admin/dns/class_DnsRecordAttribute.inc:198
+#: admin/dns/class_DnsRecordAttribute.inc:165
+#: admin/dns/class_DnsRecordAttribute.inc:192
 msgid "Seconds"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:176
+#: admin/dns/class_DnsRecordAttribute.inc:170
 msgid "North/South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "North"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:179
+#: admin/dns/class_DnsRecordAttribute.inc:173
 msgid "South"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:184
+#: admin/dns/class_DnsRecordAttribute.inc:178
 msgid "Longitude"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:203
+#: admin/dns/class_DnsRecordAttribute.inc:197
 msgid "East/West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "East"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:206
+#: admin/dns/class_DnsRecordAttribute.inc:200
 msgid "West"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:211
+#: admin/dns/class_DnsRecordAttribute.inc:205
 msgid "Altitude (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:216
+#: admin/dns/class_DnsRecordAttribute.inc:210
 msgid "Size (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:221
+#: admin/dns/class_DnsRecordAttribute.inc:215
 msgid "Horizontal precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:226
+#: admin/dns/class_DnsRecordAttribute.inc:220
 msgid "Vertical precision (meters)"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:237
+#: admin/dns/class_DnsRecordAttribute.inc:231
 msgid "NAPTR Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid "Order"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:241
+#: admin/dns/class_DnsRecordAttribute.inc:235
 msgid ""
 "Integer specifying the order in which the NAPTR records MUST be processed to"
 " ensure the correct ordering of rules.  Low numbers are processed before "
 "high numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid "Preference"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:246
+#: admin/dns/class_DnsRecordAttribute.inc:240
 msgid ""
 "Integer that specifies the order in which NAPTR records with equal \"order\""
 " values SHOULD be processed, low numbers being processed before high "
 "numbers."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid "Flags"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:251
+#: admin/dns/class_DnsRecordAttribute.inc:245
 msgid ""
 "Flags to control aspects of the rewriting and interpretation of the fields "
 "in the record. Flags are single characters from the set [A-Z0-9].  The case "
 "of the alphabetic characters is not significant."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid "Service"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:255
+#: admin/dns/class_DnsRecordAttribute.inc:249
 msgid ""
 "Specifies the service(s) available down this rewrite path. It may also "
 "specify the particular protocol that is used to talk with a service. A "
@@ -270,129 +270,129 @@ msgid ""
 "terminal."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid "Regular Expression"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:259
+#: admin/dns/class_DnsRecordAttribute.inc:253
 msgid ""
 "A STRING containing a substitution expression that is applied to the "
 "original string held by the client in order to construct the next domain "
 "name to lookup."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid "Replacement"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:263
+#: admin/dns/class_DnsRecordAttribute.inc:257
 msgid ""
 "The next NAME to query for NAPTR, SRV, or address records depending on the "
 "value of the flags field."
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:274
+#: admin/dns/class_DnsRecordAttribute.inc:268
 msgid "SRV Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:272
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid "Priority"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:278
+#: admin/dns/class_DnsRecordAttribute.inc:272
 msgid "Priority of the target host, lower value means more preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid "Weight"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:283
+#: admin/dns/class_DnsRecordAttribute.inc:277
 msgid ""
 "Relative weight for records with the same priority, higher value means more "
 "preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "Port"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:288
+#: admin/dns/class_DnsRecordAttribute.inc:282
 msgid "TCP or UDP port on which the service is to be found"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
-#: admin/dns/class_DnsRecordAttribute.inc:309
-#: admin/dns/class_DnsRecordAttribute.inc:316
-#: admin/dns/class_DnsRecordAttribute.inc:335
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:287
+#: admin/dns/class_DnsRecordAttribute.inc:303
+#: admin/dns/class_DnsRecordAttribute.inc:310
+#: admin/dns/class_DnsRecordAttribute.inc:329
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid "Target"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:293
+#: admin/dns/class_DnsRecordAttribute.inc:287
 msgid ""
 "Canonical hostname of the machine providing the service, ending in a dot"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:309
+#: admin/dns/class_DnsRecordAttribute.inc:303
 msgid "An IPv4 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:316
+#: admin/dns/class_DnsRecordAttribute.inc:310
 msgid "An IPv6 address"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:326
+#: admin/dns/class_DnsRecordAttribute.inc:320
 msgid "MX Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:330
+#: admin/dns/class_DnsRecordAttribute.inc:324
 msgid ""
 "Preference given to this RR among others at the same owner, lower values are"
 " preferred"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:335
+#: admin/dns/class_DnsRecordAttribute.inc:329
 msgid ""
 "Domain name which specifies a host willing to act as a mail exchange for the"
 " owner name"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:347
+#: admin/dns/class_DnsRecordAttribute.inc:341
 msgid ""
 "Domain name which specifies a host which should be authoritative for the "
 "specified class and domain"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356 admin/dns/class_dnsZone.inc:45
+#: admin/dns/class_DnsRecordAttribute.inc:350 admin/dns/class_dnsZone.inc:45
 #: admin/dns/class_dnsZone.inc:54
 msgid "Record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:356
+#: admin/dns/class_DnsRecordAttribute.inc:350
 msgid ""
 "SSHFP record content. Can be obtained using \"ssh-keygen -r some.host.tld\","
 " or sshfp command for instance"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Redirect to"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:362
+#: admin/dns/class_DnsRecordAttribute.inc:356
 msgid "Domain that this subdomain is an alias of"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368 admin/dns/class_dnsZone.inc:188
+#: admin/dns/class_DnsRecordAttribute.inc:362 admin/dns/class_dnsZone.inc:188
 msgid "Content"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:368
+#: admin/dns/class_DnsRecordAttribute.inc:362
 msgid "Content of this record"
 msgstr ""
 
-#: admin/dns/class_DnsRecordAttribute.inc:418
+#: admin/dns/class_DnsRecordAttribute.inc:412
 msgid "The entered IP does not match the selected reverse zone"
 msgstr ""
 
diff --git a/dovecot/admin/systems/services/dovecot/class_serviceDovecot.inc b/dovecot/admin/systems/services/dovecot/class_serviceDovecot.inc
index 8ee4bb42062fafdb36008ba786baa2a18bed5add..415df34d787af21686a159a28634ad2ad06f530e 100644
--- a/dovecot/admin/systems/services/dovecot/class_serviceDovecot.inc
+++ b/dovecot/admin/systems/services/dovecot/class_serviceDovecot.inc
@@ -20,17 +20,17 @@
 
 class serviceDovecot extends simpleMailMethodService
 {
-  var $objectclasses = array('fdDovecotServer');
+  var $objectclasses = ['fdDovecotServer'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Dovecot (IMAP/POP3)'),
       'plDescription'   => _('Dovecot (IMAP/POP3)').' ('._('Services').')',
       'plIcon'          => 'geticon.php?context=applications&icon=dovecot&size=16',
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   /*!
@@ -38,14 +38,14 @@ class serviceDovecot extends simpleMailMethodService
    */
   static function getAttributesInfo ()
   {
-      return array (
-      'connection' => array (
+      return  [
+      'connection' => [
         'name'  => _('Dovecot connection'),
-        'attrs' => array (
-          new CompositeAttribute (
+        'attrs' => [
+          new CompositeAttribute(
             _('Connect URL for Dovecot server'),
             'fdDovecotConnect',
-            array(
+            [
               new StringAttribute(
                 _('Hostname'), _('Hostname of the Dovecot server'),
                 'dovecotConnectURL', TRUE
@@ -58,49 +58,49 @@ class serviceDovecot extends simpleMailMethodService
               new SelectAttribute(
                 _('Option'), _('Options for contacting Dovecot server'),
                 'dovecotConnectOptions1', TRUE,
-                array('notls', 'tls', 'ssl'), 'notls'
+                ['notls', 'tls', 'ssl'], 'notls'
               ),
               new SelectAttribute(
                 _('Validate TLS/SSL Certificates'), _('Weither or not to validate server certificates on connection'),
                 'dovecotConnectOptions2', FALSE,
-                array('', '/validate-cert', '/novalidate-cert'), '',
-                array('', 'validate',       'no-validate')
+                ['', '/validate-cert', '/novalidate-cert'], '',
+                ['', 'validate',       'no-validate']
               )
-            ),
+            ],
             '/^{(.*):(\\d+)\\/([^\\/]+)(.*)}$/',
             '{%s:%d/%s%s}'
           ),
-        )
-      ),
-      'credentials' => array (
+        ]
+      ],
+      'credentials' => [
         'name'  => _('Master credentials'),
-        'attrs' => array (
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Admin user'), _('Dovecot server admin user'),
             'fdDovecotAdmin', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Password'), _('Admin user password'),
             'fdDovecotPassword', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Mail directory'), _('Path to the directory in which user maildirs must be created'),
             'fdDovecotMailDir', TRUE,
             '/var/mail'
           ),
-        )
-      ),
-      'options' => array (
+        ]
+      ],
+      'options' => [
         'name'  => _('Options'),
-        'attrs' => array (
-          new BooleanAttribute (
+        'attrs' => [
+          new BooleanAttribute(
             _('Create the user folder via Argonaut'), _('Use argonaut to create the user mailbox on the Dovecot server'),
             'fdDovecotArgonautMkdir', TRUE,
             TRUE
           ),
-        )
-      )
-    );
+        ]
+      ]
+      ];
   }
 }
 ?>
diff --git a/dovecot/locale/af_ZA/fusiondirectory.po b/dovecot/locale/af_ZA/fusiondirectory.po
index 589ae94f66e719258c0c9371334c528e36427fed..3676df48c2cdb81b44d254586e85313ef69a2982 100644
--- a/dovecot/locale/af_ZA/fusiondirectory.po
+++ b/dovecot/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
@@ -114,7 +114,7 @@ msgstr ""
 msgid "Mail server for this account is invalid!"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/ar/fusiondirectory.po b/dovecot/locale/ar/fusiondirectory.po
index fac7b9f44ec662dfb9dcf1581f13bb5968de4238..016255c6d3c14bdf1572bac9a27923528f3a8f6d 100644
--- a/dovecot/locale/ar/fusiondirectory.po
+++ b/dovecot/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
@@ -118,7 +118,7 @@ msgstr ""
 msgid "Mail server for this account is invalid!"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/ca/fusiondirectory.po b/dovecot/locale/ca/fusiondirectory.po
index 91c9c4cb6eaee8a34707d13c0784f4a37ae61d73..40920f39ce3d20f21c5bcce0de605588c4ef35af 100644
--- a/dovecot/locale/ca/fusiondirectory.po
+++ b/dovecot/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
@@ -118,7 +118,7 @@ msgstr ""
 msgid "Mail server for this account is invalid!"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/cs_CZ/fusiondirectory.po b/dovecot/locale/cs_CZ/fusiondirectory.po
index bef34ba198877d6b2a574192b66b453ff8cc7b29..c16fcaa1a4e9b47421fa5eea406fbffd9ea3eb0e 100644
--- a/dovecot/locale/cs_CZ/fusiondirectory.po
+++ b/dovecot/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
@@ -121,7 +121,7 @@ msgstr "Nejsou určeny žádné poštovní servery slučitelné s protokolem IMA
 msgid "Mail server for this account is invalid!"
 msgstr "Poštovní server pro tento účet je neplatný!"
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/de/fusiondirectory.po b/dovecot/locale/de/fusiondirectory.po
index 13206ee1c29ffb0efba7bdc756153ef6d5e3061c..c60186133a4916e61d38d0e923b399528829831d 100644
--- a/dovecot/locale/de/fusiondirectory.po
+++ b/dovecot/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
@@ -118,7 +118,7 @@ msgstr "Es sind keine IMAP-kompatible Mail-Server definiert!"
 msgid "Mail server for this account is invalid!"
 msgstr "Der Mail-Server für dieses Konto ist ungültig!"
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/el_GR/fusiondirectory.po b/dovecot/locale/el_GR/fusiondirectory.po
index bff5bf56046b5e01cdb0558a55d2a8d04dd70762..30f111d699771b0e0771149925851cf0afee5308 100644
--- a/dovecot/locale/el_GR/fusiondirectory.po
+++ b/dovecot/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
@@ -121,7 +121,7 @@ msgstr "Δεν έχουν ορισθεί συμβατοί διακομιστές
 msgid "Mail server for this account is invalid!"
 msgstr " διακομιστής αλληλογραφίας για αυτόν το λογαριασμό είναι άκυρος!"
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/en/fusiondirectory.po b/dovecot/locale/en/fusiondirectory.po
index 75c2769da45f1584e6d7d92f796f166f21c7b663..d28c4edad3935289db22434868bf48831500fe48 100644
--- a/dovecot/locale/en/fusiondirectory.po
+++ b/dovecot/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,19 +17,6 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:50
-msgid "There are no IMAP compatible mail servers defined!"
-msgstr ""
-
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:55
-msgid "Mail server for this account is invalid!"
-msgstr ""
-
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
-#, php-format
-msgid "Error while trying to contact Dovecot server through Argonaut: %s"
-msgstr ""
-
 #: admin/systems/services/dovecot/class_serviceDovecot.inc:28
 #: admin/systems/services/dovecot/class_serviceDovecot.inc:29
 msgid "Dovecot (IMAP/POP3)"
@@ -118,3 +105,16 @@ msgstr ""
 #: admin/systems/services/dovecot/class_serviceDovecot.inc:97
 msgid "Use argonaut to create the user mailbox on the Dovecot server"
 msgstr ""
+
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:50
+msgid "There are no IMAP compatible mail servers defined!"
+msgstr ""
+
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:55
+msgid "Mail server for this account is invalid!"
+msgstr ""
+
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
+#, php-format
+msgid "Error while trying to contact Dovecot server through Argonaut: %s"
+msgstr ""
diff --git a/dovecot/locale/es/fusiondirectory.po b/dovecot/locale/es/fusiondirectory.po
index 894d6fbee5b58f2c1abc1784e8be3d9a559cad85..bad56fd60f4cabe5ab993fdbe93cad8dc9746d74 100644
--- a/dovecot/locale/es/fusiondirectory.po
+++ b/dovecot/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/dovecot/class_serviceDovecot.inc:28
 #: admin/systems/services/dovecot/class_serviceDovecot.inc:29
@@ -118,7 +118,7 @@ msgstr "¡No se han definido servidores IMAP compatibles!"
 msgid "Mail server for this account is invalid!"
 msgstr "¡El servidor de correo para esta cuenta no es válido!"
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/es_CO/fusiondirectory.po b/dovecot/locale/es_CO/fusiondirectory.po
index dee94379d9c46933278d3c4713475623aab4e207..d6a7f7cae332965973875946460e000394a1fd93 100644
--- a/dovecot/locale/es_CO/fusiondirectory.po
+++ b/dovecot/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/dovecot/class_serviceDovecot.inc:28
 #: admin/systems/services/dovecot/class_serviceDovecot.inc:29
@@ -118,7 +118,7 @@ msgstr ""
 msgid "Mail server for this account is invalid!"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/es_VE/fusiondirectory.po b/dovecot/locale/es_VE/fusiondirectory.po
index 5f7e27c39c502b253807280028aef7801046a90a..a542f3779cbb5f47772d280bd1ffbfdaf394c2a6 100644
--- a/dovecot/locale/es_VE/fusiondirectory.po
+++ b/dovecot/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/dovecot/class_serviceDovecot.inc:28
 #: admin/systems/services/dovecot/class_serviceDovecot.inc:29
@@ -118,7 +118,7 @@ msgstr "¡No se han definido servidores IMAP compatibles!"
 msgid "Mail server for this account is invalid!"
 msgstr "¡El servidor de correo para esta cuenta no es válido!"
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/fa_IR/fusiondirectory.po b/dovecot/locale/fa_IR/fusiondirectory.po
index 0967c91b8feeca7616c5440d99f67c62ede74a74..ced8f218c12013737ce4ab23e22cf07ce38c0d2d 100644
--- a/dovecot/locale/fa_IR/fusiondirectory.po
+++ b/dovecot/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
@@ -114,7 +114,7 @@ msgstr ""
 msgid "Mail server for this account is invalid!"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/fi_FI/fusiondirectory.po b/dovecot/locale/fi_FI/fusiondirectory.po
index 4eaac86b8fc495913f9a0e54c8715cfedd554bf4..5f44c63067d4230ab5b30ea01168aacf8856dce9 100644
--- a/dovecot/locale/fi_FI/fusiondirectory.po
+++ b/dovecot/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
@@ -118,7 +118,7 @@ msgstr ""
 msgid "Mail server for this account is invalid!"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/fr/fusiondirectory.po b/dovecot/locale/fr/fusiondirectory.po
index b4e4f669270624ba5012e1ae125d8c6946957f40..e6923366ca18054474f696a36ba06ac2af5618a8 100644
--- a/dovecot/locale/fr/fusiondirectory.po
+++ b/dovecot/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/dovecot/class_serviceDovecot.inc:28
 #: admin/systems/services/dovecot/class_serviceDovecot.inc:29
@@ -120,7 +120,7 @@ msgstr "Il n'y a aucun serveur IMAP compatibles définis !"
 msgid "Mail server for this account is invalid!"
 msgstr "Le serveur de messagerie pour ce compte est non valide !"
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr "Erreur lors de la connexion au serveur Dovecot via Argonaut : %s"
diff --git a/dovecot/locale/hu_HU/fusiondirectory.po b/dovecot/locale/hu_HU/fusiondirectory.po
index 86472747982c164adac3cdc1d6b6456ecbccfe11..88b2167d1c837728baf9a1eaf1047e06b822942e 100644
--- a/dovecot/locale/hu_HU/fusiondirectory.po
+++ b/dovecot/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
@@ -114,7 +114,7 @@ msgstr ""
 msgid "Mail server for this account is invalid!"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/id/fusiondirectory.po b/dovecot/locale/id/fusiondirectory.po
index ffac8e4101b685888c079166df7054e3a5236dd0..7da82b2fc802953fd61921bc2a6bbdab29a1a118 100644
--- a/dovecot/locale/id/fusiondirectory.po
+++ b/dovecot/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
@@ -114,7 +114,7 @@ msgstr ""
 msgid "Mail server for this account is invalid!"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/it_IT/fusiondirectory.po b/dovecot/locale/it_IT/fusiondirectory.po
index e4aa48e63630717a4a7bd503681a455fdc3f38c9..4f05dbc6db0678833a427954a94ff60dbb41b1fc 100644
--- a/dovecot/locale/it_IT/fusiondirectory.po
+++ b/dovecot/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/dovecot/class_serviceDovecot.inc:28
 #: admin/systems/services/dovecot/class_serviceDovecot.inc:29
@@ -118,7 +118,7 @@ msgstr "Non è stato definito nessun server IMAP compatibile !"
 msgid "Mail server for this account is invalid!"
 msgstr "Il server di posta elettronica di questo account non è valido !"
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/ja/fusiondirectory.po b/dovecot/locale/ja/fusiondirectory.po
index 1fd7cc8183eeed1ddc81848f9592ebe7236706a3..e1398dc015cf18f155b7731c716feeac9cd3dc53 100644
--- a/dovecot/locale/ja/fusiondirectory.po
+++ b/dovecot/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
@@ -114,7 +114,7 @@ msgstr ""
 msgid "Mail server for this account is invalid!"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/ko/fusiondirectory.po b/dovecot/locale/ko/fusiondirectory.po
index 99c8539ecc1f6c7728a168ce4043a072bd47f9b9..2436b5669f62f9fb5fea9ff87da5e793a4c50671 100644
--- a/dovecot/locale/ko/fusiondirectory.po
+++ b/dovecot/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
@@ -118,7 +118,7 @@ msgstr "정의된 IMAP 호환 메일 서버가 없습니다!"
 msgid "Mail server for this account is invalid!"
 msgstr "이 계정의 메일 서버가 유효하지 않습니다!"
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr "Argonaut를 통해 Dovecot 서버에 접속하는 동안 오류가 발생했습니다: %s"
diff --git a/dovecot/locale/lv/fusiondirectory.po b/dovecot/locale/lv/fusiondirectory.po
index 6b732f8bd6b66a0e19042f3744b3de3e20f6d035..9742b9d0920a3e3d345021b735f67a1b63aabf75 100644
--- a/dovecot/locale/lv/fusiondirectory.po
+++ b/dovecot/locale/lv/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
 "MIME-Version: 1.0\n"
@@ -114,7 +114,7 @@ msgstr ""
 msgid "Mail server for this account is invalid!"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/nb/fusiondirectory.po b/dovecot/locale/nb/fusiondirectory.po
index ad9037ef7a26f1e64c233af2f8b01d8895c8d9e9..ad4e30d1557dc2dc82694af5e0ad48f2d12f324e 100644
--- a/dovecot/locale/nb/fusiondirectory.po
+++ b/dovecot/locale/nb/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
 "MIME-Version: 1.0\n"
@@ -114,7 +114,7 @@ msgstr ""
 msgid "Mail server for this account is invalid!"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/nl/fusiondirectory.po b/dovecot/locale/nl/fusiondirectory.po
index 2020c4b5919f57b070e929dbdf26521ad6888770..a3ca11289de85d5ef427bb0b72fde73684594eac 100644
--- a/dovecot/locale/nl/fusiondirectory.po
+++ b/dovecot/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
@@ -121,7 +121,7 @@ msgstr "Er zijn geen IMAP compatibele mail servers gedefinieerd!"
 msgid "Mail server for this account is invalid!"
 msgstr "Mail server voor dit account is ongeldig!"
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/pl/fusiondirectory.po b/dovecot/locale/pl/fusiondirectory.po
index 2b29d4570ce81488378fe9d45759b84672e21cdc..409358a5bdea8431ace0c29b984d84f0ee6b143a 100644
--- a/dovecot/locale/pl/fusiondirectory.po
+++ b/dovecot/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
@@ -118,7 +118,7 @@ msgstr ""
 msgid "Mail server for this account is invalid!"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/pt/fusiondirectory.po b/dovecot/locale/pt/fusiondirectory.po
index 2aeea58a41549ddddcbd20fefee3a98d785d6b8f..fcf0ebb0d104f9a12cce99a99905ff46c795956c 100644
--- a/dovecot/locale/pt/fusiondirectory.po
+++ b/dovecot/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/dovecot/class_serviceDovecot.inc:28
 #: admin/systems/services/dovecot/class_serviceDovecot.inc:29
@@ -118,7 +118,7 @@ msgstr ""
 msgid "Mail server for this account is invalid!"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/pt_BR/fusiondirectory.po b/dovecot/locale/pt_BR/fusiondirectory.po
index 51a462b42adcbc2f2327b7bf0b7c7df705db2147..d36907dc76308091f56b6973663691f9d35e4928 100644
--- a/dovecot/locale/pt_BR/fusiondirectory.po
+++ b/dovecot/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/dovecot/class_serviceDovecot.inc:28
 #: admin/systems/services/dovecot/class_serviceDovecot.inc:29
@@ -118,7 +118,7 @@ msgstr "Não existem servidores de correio IMAP compatíveis!"
 msgid "Mail server for this account is invalid!"
 msgstr "Servidor de correio para esta conta é inválido!"
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/ru/fusiondirectory.po b/dovecot/locale/ru/fusiondirectory.po
index e60c658ed7cc51139e4e6710f98dbb69e987a744..98140615cf118d74252df3efc2a3561eecfca9ef 100644
--- a/dovecot/locale/ru/fusiondirectory.po
+++ b/dovecot/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
@@ -120,7 +120,7 @@ msgstr "Не определен IMAP совместимый почтовый с
 msgid "Mail server for this account is invalid!"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/ru@petr1708/fusiondirectory.po b/dovecot/locale/ru@petr1708/fusiondirectory.po
index 41d12a6417bca33151b6a26e982bc52113d56bd4..82bd792bf76d4f7b2fcf051ae8c33113cf710f58 100644
--- a/dovecot/locale/ru@petr1708/fusiondirectory.po
+++ b/dovecot/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
@@ -114,7 +114,7 @@ msgstr ""
 msgid "Mail server for this account is invalid!"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/sv/fusiondirectory.po b/dovecot/locale/sv/fusiondirectory.po
index 43d5573f48b8a56dfbf2bd343af419550cc18e0c..0007bf555db83a3f6dfe62cdb524e54e1714f25f 100644
--- a/dovecot/locale/sv/fusiondirectory.po
+++ b/dovecot/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
@@ -118,7 +118,7 @@ msgstr ""
 msgid "Mail server for this account is invalid!"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/tr_TR/fusiondirectory.po b/dovecot/locale/tr_TR/fusiondirectory.po
index 29fc26c8f1a02a7fca30bf077f55a5a79225e9a5..b0584f1c1eca60799afe83997e923e6b8d460567 100644
--- a/dovecot/locale/tr_TR/fusiondirectory.po
+++ b/dovecot/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2021
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2021\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -80,7 +84,7 @@ msgstr ""
 
 #: admin/systems/services/dovecot/class_serviceDovecot.inc:83
 msgid "Password"
-msgstr ""
+msgstr "Parola"
 
 #: admin/systems/services/dovecot/class_serviceDovecot.inc:83
 msgid "Admin user password"
@@ -114,7 +118,7 @@ msgstr ""
 msgid "Mail server for this account is invalid!"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/ug/fusiondirectory.po b/dovecot/locale/ug/fusiondirectory.po
index 641b59c7267d5add68a3e06d2ec6c2f6829716bf..d40cfd90d29594d109dec1688fe22e73ad636255 100644
--- a/dovecot/locale/ug/fusiondirectory.po
+++ b/dovecot/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/systems/services/dovecot/class_serviceDovecot.inc:28
 #: admin/systems/services/dovecot/class_serviceDovecot.inc:29
@@ -114,7 +114,7 @@ msgstr ""
 msgid "Mail server for this account is invalid!"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/vi_VN/fusiondirectory.po b/dovecot/locale/vi_VN/fusiondirectory.po
index d020330040ce83f5abddd2298898a3643064b562..fb294e8333570659c32c58f4e90695ab98f31168 100644
--- a/dovecot/locale/vi_VN/fusiondirectory.po
+++ b/dovecot/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
@@ -118,7 +118,7 @@ msgstr ""
 msgid "Mail server for this account is invalid!"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/zh/fusiondirectory.po b/dovecot/locale/zh/fusiondirectory.po
index ae92e4234765ff114e925ede81a559d15bb1c7a3..6fb4d197fe2a981eb3d00bfb3a6eebd80b69c339 100644
--- a/dovecot/locale/zh/fusiondirectory.po
+++ b/dovecot/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
@@ -118,7 +118,7 @@ msgstr ""
 msgid "Mail server for this account is invalid!"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/locale/zh_TW/fusiondirectory.po b/dovecot/locale/zh_TW/fusiondirectory.po
index 7929d7bdf4a3694df423530399f00ec7169b93d9..4ae106c5b85264b0f5f5b8add6796a0fedb57370 100644
--- a/dovecot/locale/zh_TW/fusiondirectory.po
+++ b/dovecot/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
@@ -114,7 +114,7 @@ msgstr ""
 msgid "Mail server for this account is invalid!"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:194
+#: personal/mail/mail-methods/class_mail-methods-dovecot.inc:204
 #, php-format
 msgid "Error while trying to contact Dovecot server through Argonaut: %s"
 msgstr ""
diff --git a/dovecot/personal/mail/mail-methods/class_mail-methods-dovecot.inc b/dovecot/personal/mail/mail-methods/class_mail-methods-dovecot.inc
index 91efb0473f36e2c5905e4701abc801690cff212b..86c97f2eb2550233a60224ffcebd72fecc2e584e 100644
--- a/dovecot/personal/mail/mail-methods/class_mail-methods-dovecot.inc
+++ b/dovecot/personal/mail/mail-methods/class_mail-methods-dovecot.inc
@@ -30,12 +30,12 @@ class mailMethodDovecot extends mailMethod
   protected $imap_handle  = NULL;
   protected $quota_loaded = FALSE;
 
-  public function is_connected()
+  public function is_connected ()
   {
     return (parent::is_connected() && $this->imap_handle);
   }
 
-  public function connect()
+  public function connect ()
   {
     global $config;
     parent::connect();
@@ -48,12 +48,12 @@ class mailMethodDovecot extends mailMethod
 
     if (!count($servers)) {
       $this->error = _("There are no IMAP compatible mail servers defined!");
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,
           "<b>IMAP: No mail servers configured, check systems->server->service->imap.</b>", "");
       return FALSE;
     } elseif (!isset($servers[$this->parent->gosaMailServer])) {
       $this->error = _("Mail server for this account is invalid!");
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,
           "<b>IMAP: The selected mail server '".$this->parent->gosaMailServer."' is invalid.</b>", "");
       return FALSE;
     } else {
@@ -78,7 +78,7 @@ class mailMethodDovecot extends mailMethod
         else the FusionDirectory UI may freeze for 60 seconds.
        (PHP default is 'default_socket_timeout = 60') */
     $timeout = $config->get_cfg_value("imapTimeout", 10);
-    @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $timeout,
+    @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $timeout,
           "<b>IMAP: Setting imap connect timeout to</b> (seconds)");
     imap_timeout(1, $timeout);
 
@@ -86,7 +86,7 @@ class mailMethodDovecot extends mailMethod
 
     /* Mailbox reachable? */
     if ($this->imap_handle === FALSE) {
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>Failed</b> :".imap_last_error(),
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>Failed</b> :".imap_last_error(),
         "<b>IMAP:</b> ".$cfg['admin']."@".$cfg['connect']);
       if ($cfg['mkdir']) {
         if ($this->argonautCreateFolder()) {
@@ -98,21 +98,21 @@ class mailMethodDovecot extends mailMethod
       if ($this->imap_handle === FALSE) {
         $this->error = imap_last_error();
 
-        @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>Failed</b> :".imap_last_error(),
+        @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>Failed</b> :".imap_last_error(),
           "<b>IMAP:</b> ".$cfg['admin']."@".$cfg['connect']);
 
         $this->connected = FALSE;
         return FALSE;
       }
     }
-    @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>successful</b>",
+    @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>successful</b>",
         "<b>IMAP:</b> ".$cfg['admin']."@".$cfg['connect']);
     $this->connected = TRUE;
 
     return TRUE;
   }
 
-  protected function loadQuota()
+  protected function loadQuota ()
   {
     global $config;
     if (!$this->quotaEnabled()) {
@@ -137,7 +137,7 @@ class mailMethodDovecot extends mailMethod
         if (($quota_value['STORAGE']['limit'] == 2147483647) || ($quota_value['STORAGE']['limit'] <= 0)) {
           $this->quotaValue = '';
         } else {
-          $this->quotaValue = $quota_value['STORAGE']['limit'] / 1024;
+          $this->quotaValue = (int)($quota_value['STORAGE']['limit'] / 1024);
         }
         $this->quota_loaded = TRUE;
 
@@ -147,25 +147,35 @@ class mailMethodDovecot extends mailMethod
         } else {
           $quota = "(".$this->quotaUsage." / ".$this->quotaValue.")";
         }
-        @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $quota,
+        @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $quota,
             "<b>IMAP: Successfully received account quota</b>");
       } else {
         $this->quotaUsage = '';
         $this->quotaValue = '';
-        @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, '',
+        @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, '',
             "<b>IMAP: Received empty account quota information</b>");
       }
     } else {
       $this->error = imap_last_error();
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, imap_last_error(),
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, imap_last_error(),
           "<b>IMAP: Failed to receive account quota</b>");
     }
   }
 
+  /* Get quota in MB */
+  public function getQuota ($quota)
+  {
+    parent::getQuota($quota);
+    if (!$this->quota_loaded) {
+      $this->loadQuota();
+    }
+    return $this->quotaValue;
+  }
+
   /* Get quota usage in MB */
-  public function getQuotaUsage()
+  public function getQuotaUsage ()
   {
-    mailMethod::getQuotaUsage();
+    parent::getQuotaUsage();
     if (!$this->quota_loaded) {
       $this->loadQuota();
     }
@@ -175,9 +185,9 @@ class mailMethodDovecot extends mailMethod
   /*
    * Create the folder for the user INBOX through Argonaut
    */
-  private function argonautCreateFolder()
+  private function argonautCreateFolder ()
   {
-    @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>".$this->account_id."</b>",
+    @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>".$this->account_id."</b>",
       "<b>Attempting to create folder through Argonaut</b> on server :".$this->parent->gosaMailServer);
 
     $servers  = parent::getMailServers();
@@ -186,8 +196,8 @@ class mailMethodDovecot extends mailMethod
     $o_queue = new supportDaemon();
     if (!$o_queue->is_error()) {
       $o_queue->append_call('Dovecot.create_mailbox',
-                            array($cfg['mac']),
-                            array('args' => array($this->account_id, $this->parent->uidNumber, $this->parent->gidNumber)));
+                            [$cfg['mac']],
+                            ['args' => [$this->account_id, $this->parent->uidNumber, $this->parent->gidNumber]]);
     }
     /* If we got an error while connecting or sending the call */
     if ($o_queue->is_error()) {
@@ -205,24 +215,24 @@ class mailMethodDovecot extends mailMethod
     return FALSE;
   }
 
-  static public function get_server_list()
+  static public function get_server_list ()
   {
     global $config;
-    $serverList = array();
+    $serverList = [];
 
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search ('(objectClass=fdDovecotServer)',
-                  array('cn', 'fdDovecotConnect', 'fdDovecotAdmin', 'fdDovecotPassword', 'fdDovecotArgonautMkdir', 'macAddress'));
+    $ldap->search('(objectClass=fdDovecotServer)',
+                  ['cn', 'fdDovecotConnect', 'fdDovecotAdmin', 'fdDovecotPassword', 'fdDovecotArgonautMkdir', 'macAddress']);
     while ($attrs = $ldap->fetch()) {
-      $serverList[$attrs['cn'][0]] = array(
+      $serverList[$attrs['cn'][0]] = [
         'server_dn' => $attrs['dn'],
         'connect'   => $attrs['fdDovecotConnect'][0],
         'admin'     => $attrs['fdDovecotAdmin'][0],
         'password'  => $attrs['fdDovecotPassword'][0],
         'mkdir'     => (isset($attrs['fdDovecotArgonautMkdir']) ? (strtoupper($attrs['fdDovecotArgonautMkdir'][0]) == 'TRUE') : TRUE),
         'mac'       => $attrs['macAddress'][0],
-      );
+      ];
     }
 
     return $serverList;
diff --git a/dsa/admin/dsa/class_dsaManagement.inc b/dsa/admin/dsa/class_dsaManagement.inc
index c8b6aa10446dc47bfd3fa80c98853de0b18ec049..0dc45714642513770c8ea58de349e0b07a70ad1d 100644
--- a/dsa/admin/dsa/class_dsaManagement.inc
+++ b/dsa/admin/dsa/class_dsaManagement.inc
@@ -21,27 +21,27 @@
 class dsaManagement extends simpleManagement
 {
   // Tab definition
-  protected $objectTypes  = array('simpleSecurityObject');
+  protected $objectTypes  = ['simpleSecurityObject'];
 
   protected $departmentBrowser      = TRUE;
   protected $departmentRootVisible  = TRUE;
   protected $baseMode               = TRUE;
 
   /* Return plugin information for acl handling */
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('DSA'),
       'plDescription' => _('DSA management'),
       'plIcon'        => 'geticon.php?context=applications&icon=dsa&size=48',
       'plSection'     => 'accounts',
       'plPriority'    => 55,
-      'plCategory'    => array('dsa' => array('description'  => _('DSA'),
-                                              'objectClass'  => array('simpleSecurityObject'))),
-      'plManages'     => array('simpleSecurityObject'),
+      'plCategory'    => ['dsa' => ['description'  => _('DSA'),
+                                              'objectClass'  => ['simpleSecurityObject']]],
+      'plManages'     => ['simpleSecurityObject'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 }
 ?>
diff --git a/dsa/admin/dsa/class_simpleSecurityObject.inc b/dsa/admin/dsa/class_simpleSecurityObject.inc
index dc556e6a798436dfbfaae007541bddd39877eb44..89880e62783762d3e738aa9a0f24edf4f3d8ed56 100644
--- a/dsa/admin/dsa/class_simpleSecurityObject.inc
+++ b/dsa/admin/dsa/class_simpleSecurityObject.inc
@@ -22,55 +22,55 @@ class simpleSecurityObject extends simplePlugin
 {
   var $mainTab = TRUE;
 
-  var $objectclasses = array('organizationalRole', 'top', 'simpleSecurityObject');
+  var $objectclasses = ['organizationalRole', 'top', 'simpleSecurityObject'];
 
   /* Return plugin information for acl handling */
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Simple security object'),
       'plDescription' => _('Simple security object'),
-      'plObjectType'  => array('simpleSecurityObject' => array(
+      'plObjectType'  => ['simpleSecurityObject' => [
         'name'        => _('Simple security object'),
         'filter'      => 'objectClass=simpleSecurityObject',
         'aclCategory' => 'dsa',
         'ou'          => get_ou('dsaRDN'),
         'icon'        => 'geticon.php?context=applications&icon=dsa&size=16',
-      )),
+      ]],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
-    return array(
+    return [
       // Attributes are grouped by section
-      'main' => array(
+      'main' => [
         'name'  => _('Simple security object'),
-        'attrs' => array(
-          new BaseSelectorAttribute (get_ou('dsaRDN')),
-          new HostNameAttribute (
+        'attrs' => [
+          new BaseSelectorAttribute(get_ou('dsaRDN')),
+          new HostNameAttribute(
             _('Entry name'), _('Account name'),
             'cn', TRUE
           ),
-          new TextAreaAttribute (
+          new TextAreaAttribute(
             _('Description'), _('Description of this simple security object'),
             'description', FALSE
           ),
-        )
-      ),
-      'password' => array(
+        ]
+      ],
+      'password' => [
         'name'  => _('Change password'),
-        'attrs' => array(
-          new UserPasswordAttribute (
+        'attrs' => [
+          new UserPasswordAttribute(
             _('Password'), _('Password'),
             'userPassword', FALSE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 }
 
diff --git a/dsa/config/dsa/class_dsaConfig.inc b/dsa/config/dsa/class_dsaConfig.inc
index 3528b05f9f4e600ad150715595a3858b77e1dc48..fd141bde52529ee4925b0c7bf5b8c76368e2b666 100644
--- a/dsa/config/dsa/class_dsaConfig.inc
+++ b/dsa/config/dsa/class_dsaConfig.inc
@@ -20,35 +20,35 @@
 
 class dsaConfig extends simplePlugin
 {
-  var $objectclasses  = array("fdDsaPluginConf");
+  var $objectclasses  = ["fdDsaPluginConf"];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       "plShortName"     => _("DSA configuration"),
       "plDescription"   => _("FusionDirectory dsa plugin configuration"),
       "plSelfModify"    => FALSE,
-      "plCategory"      => array("configuration"),
-      "plObjectType"    => array("smallConfig"),
+      "plCategory"      => ["configuration"],
+      "plObjectType"    => ["smallConfig"],
 
       "plProvidedAcls"  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('DSA'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('DSA RDN'), _('Branch in which Directory Service Account (dsa) will be stored'),
             'fdDSARDN', TRUE,
             'ou=dsa'
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/dsa/locale/af_ZA/fusiondirectory.po b/dsa/locale/af_ZA/fusiondirectory.po
index c33c6eec7054d940e807b81c4fefc7197c598a94..16e64dac4f8abb7be6cfd68456f1b865b7be10fb 100644
--- a/dsa/locale/af_ZA/fusiondirectory.po
+++ b/dsa/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/dsa/locale/ar/fusiondirectory.po b/dsa/locale/ar/fusiondirectory.po
index c9c405911f64f4bf008dae9853b7789d799fb0f0..2bb6dbf21c4b7f073895cee372652ab387452d44 100644
--- a/dsa/locale/ar/fusiondirectory.po
+++ b/dsa/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/dsa/locale/ca/fusiondirectory.po b/dsa/locale/ca/fusiondirectory.po
index 3dfd7b2baf9455cc625a8ca857040ce31fd407d7..94d32cf2615379a3ad2272748baff404c2122f7e 100644
--- a/dsa/locale/ca/fusiondirectory.po
+++ b/dsa/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/dsa/locale/cs_CZ/fusiondirectory.po b/dsa/locale/cs_CZ/fusiondirectory.po
index 6e025d3be82ed236fb3db2b0666bd5468d156569..e76f2dc09c8081ee6688a2afbfe38d484c41ba6a 100644
--- a/dsa/locale/cs_CZ/fusiondirectory.po
+++ b/dsa/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/dsa/locale/de/fusiondirectory.po b/dsa/locale/de/fusiondirectory.po
index 7bfb3a7f6e138eca97c94b482755aadab2ed02d3..941ac1f7dc53327c6af63754a2f45cb87b2b1ccc 100644
--- a/dsa/locale/de/fusiondirectory.po
+++ b/dsa/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/dsa/locale/el_GR/fusiondirectory.po b/dsa/locale/el_GR/fusiondirectory.po
index 016cc1e29ef01a77307282b01e7ff154f49ec848..d66716b62b1df8c7fff95f84f11e03120d705e3d 100644
--- a/dsa/locale/el_GR/fusiondirectory.po
+++ b/dsa/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/dsa/locale/en/fusiondirectory.po b/dsa/locale/en/fusiondirectory.po
index 235a668578e28c60589da68e902b2eabe33a198c..7065645729b727e4857ec4f1b3e90a0846e94c69 100644
--- a/dsa/locale/en/fusiondirectory.po
+++ b/dsa/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
diff --git a/dsa/locale/es/fusiondirectory.po b/dsa/locale/es/fusiondirectory.po
index 4c725da2598e3ba13adad0992d1052af4b1fcf8b..81c0d7f9cd515f6085880b702b600b58397ef528 100644
--- a/dsa/locale/es/fusiondirectory.po
+++ b/dsa/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/dsa/class_dsaManagement.inc:34 admin/dsa/class_dsaManagement.inc:39
 #: config/dsa/class_dsaConfig.inc:42
diff --git a/dsa/locale/es_CO/fusiondirectory.po b/dsa/locale/es_CO/fusiondirectory.po
index bc4f9e2486e7f6508f813b5677143763333aec90..fda264b5580bb61896ccc2754b198af3dd250ea3 100644
--- a/dsa/locale/es_CO/fusiondirectory.po
+++ b/dsa/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/dsa/class_dsaManagement.inc:34 admin/dsa/class_dsaManagement.inc:39
 #: config/dsa/class_dsaConfig.inc:42
diff --git a/dsa/locale/es_VE/fusiondirectory.po b/dsa/locale/es_VE/fusiondirectory.po
index 286c4fa9a26572e0fb33da8b4e00ded4dd660b0b..4e7b4b27d9675a14a69c7ea9b4e73c0b83b1a4d4 100644
--- a/dsa/locale/es_VE/fusiondirectory.po
+++ b/dsa/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/dsa/class_dsaManagement.inc:34 admin/dsa/class_dsaManagement.inc:39
 #: config/dsa/class_dsaConfig.inc:42
diff --git a/dsa/locale/fa_IR/fusiondirectory.po b/dsa/locale/fa_IR/fusiondirectory.po
index 4a5bbc1c07ae0902d1ec2b869b0a8c40420d6d16..15c979d82f96b337851b2ebbc3aa8a58562e832c 100644
--- a/dsa/locale/fa_IR/fusiondirectory.po
+++ b/dsa/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/dsa/locale/fi_FI/fusiondirectory.po b/dsa/locale/fi_FI/fusiondirectory.po
index 05c9e711694891c6e0230c07b91c0b26db927f68..b1b4345e26365e91325810ad42ca34898878c16f 100644
--- a/dsa/locale/fi_FI/fusiondirectory.po
+++ b/dsa/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/dsa/locale/fr/fusiondirectory.po b/dsa/locale/fr/fusiondirectory.po
index 0bb911a0cc14e9ff2cbe826b6ad00c08f9847138..08f78185054fff1a5b25fc76fabe3021d0e791d9 100644
--- a/dsa/locale/fr/fusiondirectory.po
+++ b/dsa/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/dsa/class_dsaManagement.inc:34 admin/dsa/class_dsaManagement.inc:39
 #: config/dsa/class_dsaConfig.inc:42
diff --git a/dsa/locale/hu_HU/fusiondirectory.po b/dsa/locale/hu_HU/fusiondirectory.po
index e4996b6dd2bd5ab9ef4cf77c999b260ddaa7b548..09e0333a1aa2a085d33c04fb451903fad5de9888 100644
--- a/dsa/locale/hu_HU/fusiondirectory.po
+++ b/dsa/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
diff --git a/dsa/locale/id/fusiondirectory.po b/dsa/locale/id/fusiondirectory.po
index ad384c7d1092bfab1a03d2e5f505edcffb3251a2..df441e7889e2adaa1e0221bd5dededc574807178 100644
--- a/dsa/locale/id/fusiondirectory.po
+++ b/dsa/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/dsa/locale/it_IT/fusiondirectory.po b/dsa/locale/it_IT/fusiondirectory.po
index b8efc58ec1e09a2ebaf831d594bd075b56308f37..1764dbbbb9bb2e981840936a994ff33389e391c4 100644
--- a/dsa/locale/it_IT/fusiondirectory.po
+++ b/dsa/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/dsa/class_dsaManagement.inc:34 admin/dsa/class_dsaManagement.inc:39
 #: config/dsa/class_dsaConfig.inc:42
diff --git a/dsa/locale/ja/fusiondirectory.po b/dsa/locale/ja/fusiondirectory.po
index be2e4372b2512aa38a2f2bce6145ba07d636aa34..266b1a8118523de28a0cf2cb1cbfd0c25acd8063 100644
--- a/dsa/locale/ja/fusiondirectory.po
+++ b/dsa/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/dsa/locale/ko/fusiondirectory.po b/dsa/locale/ko/fusiondirectory.po
index 644f432bc3acb89180d14b2570ec3cfd2483a134..33cab461e7f6246a23ed70a705c82a666074c0f4 100644
--- a/dsa/locale/ko/fusiondirectory.po
+++ b/dsa/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/dsa/locale/lv/fusiondirectory.po b/dsa/locale/lv/fusiondirectory.po
index 89aa37e78bd0bc940415606f3baa84110b6f34d3..181c8ae1239ec1d24148238f904c17a4dc49883b 100644
--- a/dsa/locale/lv/fusiondirectory.po
+++ b/dsa/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/dsa/locale/nb/fusiondirectory.po b/dsa/locale/nb/fusiondirectory.po
index d590b5b98f9f79c57e756b86e5d8fb6098895f7f..bb01d22b40e9313a4a2245459a40f62268a3336c 100644
--- a/dsa/locale/nb/fusiondirectory.po
+++ b/dsa/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/dsa/locale/nl/fusiondirectory.po b/dsa/locale/nl/fusiondirectory.po
index a21a7c8bde1d49dbed70c93a026a2cd32db7ff17..f59002a089748a77cec562a5f2ce7f69eacc58ca 100644
--- a/dsa/locale/nl/fusiondirectory.po
+++ b/dsa/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/dsa/locale/pl/fusiondirectory.po b/dsa/locale/pl/fusiondirectory.po
index c50199a5f5d0c6211f164d272f98870dc7f47eba..1b1aaed8b84ab9c0514efcbd7c2fe3724375bd5e 100644
--- a/dsa/locale/pl/fusiondirectory.po
+++ b/dsa/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/dsa/locale/pt/fusiondirectory.po b/dsa/locale/pt/fusiondirectory.po
index 3a39ccaad110f1207c73a0a8205ff4941bf4cac8..24950f6c49f2df332f546f82448842ce3959a18e 100644
--- a/dsa/locale/pt/fusiondirectory.po
+++ b/dsa/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/dsa/class_dsaManagement.inc:34 admin/dsa/class_dsaManagement.inc:39
 #: config/dsa/class_dsaConfig.inc:42
diff --git a/dsa/locale/pt_BR/fusiondirectory.po b/dsa/locale/pt_BR/fusiondirectory.po
index 64c7eee310614ea66a4a7eb213fba0bd40e5fc96..2b8b0ae06986cf9e92b559783f1eb9a30f713745 100644
--- a/dsa/locale/pt_BR/fusiondirectory.po
+++ b/dsa/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/dsa/class_dsaManagement.inc:34 admin/dsa/class_dsaManagement.inc:39
 #: config/dsa/class_dsaConfig.inc:42
diff --git a/dsa/locale/ru/fusiondirectory.po b/dsa/locale/ru/fusiondirectory.po
index e6bb2dcab9ee86f440099dc9fa87e110688a7978..207744e6dfc0ae83fbd0558bdb0f5a657c804a7e 100644
--- a/dsa/locale/ru/fusiondirectory.po
+++ b/dsa/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/dsa/locale/ru@petr1708/fusiondirectory.po b/dsa/locale/ru@petr1708/fusiondirectory.po
index 6cb9e599133b524f00c019d7a13d1218107b5f20..abcac280dc9c12d3805c17cb2437343c9ec9e51f 100644
--- a/dsa/locale/ru@petr1708/fusiondirectory.po
+++ b/dsa/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/dsa/locale/sv/fusiondirectory.po b/dsa/locale/sv/fusiondirectory.po
index ef0a868e304d401c8721077c982183e33c8e61fd..a13886403fa6995bfd1bae67388a8c59fdb2fb5b 100644
--- a/dsa/locale/sv/fusiondirectory.po
+++ b/dsa/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/dsa/locale/tr_TR/fusiondirectory.po b/dsa/locale/tr_TR/fusiondirectory.po
index 9268354afdf1832b61106415aa1529f7700ade3a..cc1ce9d41f918dd41a5a0074994c3104b6711e9d 100644
--- a/dsa/locale/tr_TR/fusiondirectory.po
+++ b/dsa/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2021
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2021\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -55,7 +59,7 @@ msgstr ""
 
 #: admin/dsa/class_simpleSecurityObject.inc:68
 msgid "Password"
-msgstr ""
+msgstr "Parola"
 
 #: config/dsa/class_dsaConfig.inc:28
 msgid "DSA configuration"
diff --git a/dsa/locale/ug/fusiondirectory.po b/dsa/locale/ug/fusiondirectory.po
index 6774ef1d885b61ad8576a4099a1abae68b5dd799..e0e1880c3096bfded41d769b1638a110ea58d0f9 100644
--- a/dsa/locale/ug/fusiondirectory.po
+++ b/dsa/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/dsa/class_dsaManagement.inc:34 admin/dsa/class_dsaManagement.inc:39
 #: config/dsa/class_dsaConfig.inc:42
diff --git a/dsa/locale/vi_VN/fusiondirectory.po b/dsa/locale/vi_VN/fusiondirectory.po
index 34887a104d3100e867d3f89cb42ff6b4c4afdd2f..256ebe77e86c221fa7644804e63f0ef3ab36f15f 100644
--- a/dsa/locale/vi_VN/fusiondirectory.po
+++ b/dsa/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/dsa/locale/zh/fusiondirectory.po b/dsa/locale/zh/fusiondirectory.po
index cc786446e166eb81087cbab986eafeabd9e2d831..09faf5f6fa93647a2c0e702ca08b1e07eb996181 100644
--- a/dsa/locale/zh/fusiondirectory.po
+++ b/dsa/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/dsa/locale/zh_TW/fusiondirectory.po b/dsa/locale/zh_TW/fusiondirectory.po
index 078a398cd6825e2bb51fa54146f8756ca174c8aa..82039eed86223cf25765159fc7567eb632ddc30b 100644
--- a/dsa/locale/zh_TW/fusiondirectory.po
+++ b/dsa/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:09+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ejbca/admin/ejbca/certificates/class_ejbcaCertificates.inc b/ejbca/admin/ejbca/certificates/class_ejbcaCertificates.inc
index ae62b22f50aa31c5b4010be33f6384cdac1c3426..d12a9ab823a7e1f7bdda3eb387259d67de8eab93 100644
--- a/ejbca/admin/ejbca/certificates/class_ejbcaCertificates.inc
+++ b/ejbca/admin/ejbca/certificates/class_ejbcaCertificates.inc
@@ -21,40 +21,40 @@
 class ejbcaCertificates extends simplePlugin
 {
   var $displayHeader = TRUE;
-  var $objectclasses = array('fdEjbcaCertificates');
+  var $objectclasses = ['fdEjbcaCertificates'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('EJBCA'),
       'plDescription'   => _('Assign EJBCA certificates to a user'),
       'plSelfModify'    => TRUE,
-      'plObjectType'    => array('user','server','workstation','terminal','printer','component','phone','mobilePhone'),
+      'plObjectType'    => ['user','server','workstation','terminal','printer','component','phone','mobilePhone'],
       'plIcon'          => 'geticon.php?context=applications&icon=ejbca&size=48',
       'plSmallIcon'     => 'geticon.php?context=applications&icon=ejbca&size=16',
-      'plForeignKeys'   => array(
+      'plForeignKeys'   => [
         'fdEjbcaCertDN' => 'ejbcaCertificate',
-      ),
+      ],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('EJBCA certs'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
+        'class' => ['fullwidth'],
+        'attrs' => [
           new EjbcaUserCertsAttribute(
             '', _('Certificates associated to this object'),
             'fdEjbcaCertDN', TRUE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 }
 ?>
diff --git a/ejbca/admin/ejbca/class_ejbcaCertSelect.inc b/ejbca/admin/ejbca/class_ejbcaCertSelect.inc
index 642a9c8a5f4c6db4caa3eefa5da784695908be9a..a51ef79ad1869a93e7c6e4c397dddcbc3790a3a0 100644
--- a/ejbca/admin/ejbca/class_ejbcaCertSelect.inc
+++ b/ejbca/admin/ejbca/class_ejbcaCertSelect.inc
@@ -21,9 +21,9 @@
 
 class ejbcaCertificateSelectManagement extends simpleSelectManagement
 {
-  protected $objectTypes = array('ejbcaCertificate');
+  protected $objectTypes = ['ejbcaCertificate'];
 
-  protected $autoFilterAttributes = array('dn', 'cn', 'description', 'userCertificate');
+  protected $autoFilterAttributes = ['dn', 'cn', 'description', 'userCertificate'];
 }
 
 class EjbcaCertSelectDialog extends GenericSelectDialog
@@ -35,9 +35,9 @@ class EjbcaUserCertsAttribute extends GenericDialogAttribute
 {
   protected $dialogClass      = 'EjbcaCertSelectDialog';
 
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $acl = '')
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $acl = '')
   {
-    parent::__construct ($label, $description, $ldapName, $required, $defaultValue, 'dn', NULL, $acl);
+    parent::__construct($label, $description, $ldapName, $required, $defaultValue, 'dn', NULL, $acl);
   }
 
   function addValue ($dn, $entry)
@@ -92,12 +92,12 @@ class EjbcaUserCertsAttribute extends GenericDialogAttribute
     // Updates and get display values
     $displays = $this->getDisplayValues();
     foreach ($displays as $key => $display_item) {
-      $fields = array(
-        array('string'  => $display_item['cn'][0])
-      );
+      $fields = [
+        ['string'  => $display_item['cn'][0]]
+      ];
       $img = '<input type="image" src="geticon.php?context=actions&icon=download&size=16" name="'.$id.'_get_'.$key.'" class="center"/>';
       $img .= '<input type="image" src="geticon.php?context=actions&icon=edit-delete&size=16" name="'.$id.'_del_'.$key.'" class="center"/>';
-      $fields[] = array('html' => $img, 'attach' => 'style="border-right:0px;width:32px;"');
+      $fields[] = ['html' => $img, 'attach' => 'style="border-right:0px;width:32px;"'];
       $div->AddEntry($fields);
     }
     $smarty = get_smarty();
@@ -105,10 +105,10 @@ class EjbcaUserCertsAttribute extends GenericDialogAttribute
     return '{$div_'.$id.'}'."\n";
   }
 
-  public function htmlIds()
+  public function htmlIds ()
   {
     $id = $this->getHtmlId();
-    $ids = array('add'.$id.'_dialog');
+    $ids = ['add'.$id.'_dialog'];
     $nb_values = count($this->value);
     for ($i = 0; $i < $nb_values; ++$i) {
       $ids[] = $id.'_del_'.$i;
diff --git a/ejbca/admin/ejbca/class_ejbcaCertificate.inc b/ejbca/admin/ejbca/class_ejbcaCertificate.inc
index 2c88ef3df1eb4fff897fa65f6f6529d055bc2f29..943828630d086593d8c3aa9254769476035cb52a 100644
--- a/ejbca/admin/ejbca/class_ejbcaCertificate.inc
+++ b/ejbca/admin/ejbca/class_ejbcaCertificate.inc
@@ -22,58 +22,58 @@ class ejbcaCertificate extends simplePlugin
 {
   var $mainTab = TRUE;
 
-  var $objectclasses = array();
+  var $objectclasses = [];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('EJBCA certificate'),
       'plDescription' => _('EJBCA certificate'),
-      'plObjectType'  => array('ejbcaCertificate' => array(
+      'plObjectType'  => ['ejbcaCertificate' => [
         'name'        => _('EJBCA certificate'),
         'filter'      => 'userCertificate;binary=*',
         'ou'          => get_ou('ejbcaRDN'),
         'icon'        => 'geticon.php?context=applications&icon=ejbca&size=16'
-      )),
+      ]],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Certificate'),
-        'attrs' => array(
-          new BaseSelectorAttribute (get_ou('ejbcaRDN')),
-          new HostNameAttribute (
+        'attrs' => [
+          new BaseSelectorAttribute(get_ou('ejbcaRDN')),
+          new HostNameAttribute(
             _('Name'), _('Common name'),
             'cn', TRUE
           ),
-          new FileDownloadAttribute (
+          new FileDownloadAttribute(
             _('Certificate'), _('Certificate content'),
             'userCertificate;binary', TRUE,
             '.der'
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
-  function renderAttributes($readOnly = FALSE)
+  function renderAttributes ($readOnly = FALSE)
   {
     parent::renderAttributes(TRUE);
   }
 
-  function save()
+  function save ()
   {
-    return array();
+    return [];
   }
 
-  function remove($fulldelete = FALSE)
+  function remove ($fulldelete = FALSE)
   {
-    return array();
+    return [];
   }
 }
 ?>
diff --git a/ejbca/admin/ejbca/class_ejbcaManagement.inc b/ejbca/admin/ejbca/class_ejbcaManagement.inc
index 3ec5158e08c65fc38c347bf4650ebb975e0ec5a1..84fe74bea20ee5da842f4879cf56a98f1d04b46b 100644
--- a/ejbca/admin/ejbca/class_ejbcaManagement.inc
+++ b/ejbca/admin/ejbca/class_ejbcaManagement.inc
@@ -20,25 +20,25 @@
 
 class ejbcaManagement extends simpleManagement
 {
-  protected $objectTypes      = array('ejbcaCertificate');
+  protected $objectTypes      = ['ejbcaCertificate'];
   protected $autoActions      = FALSE;
 
-  protected $autoFilterAttributes = array('dn', 'cn', 'description', 'userCertificate');
+  protected $autoFilterAttributes = ['dn', 'cn', 'description', 'userCertificate'];
 
   public static $skipSnapshots = TRUE;
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('EJBCA'),
       'plDescription' => _('EJBCA certificates management'),
       'plIcon'        => 'geticon.php?context=applications&icon=ejbca&size=48',
       'plSection'     => 'accounts',
       'plPriority'    => 50,
-      'plManages'     => array('ejbcaCertificate'),
+      'plManages'     => ['ejbcaCertificate'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 
   function configureHeadpage ()
@@ -46,18 +46,18 @@ class ejbcaManagement extends simpleManagement
     parent::configureHeadpage();
     unset($this->headpage->xmlData['actionmenu']['action'][0]);
     $downloadAction =
-      array(
+      [
         'name'  => 'download',
         'type'  => 'entry',
         'image' => 'geticon.php?context=actions&amp;icon=download&amp;size=16',
         'label' => _('Download'),
         'acl'   => 'ejbcaCertificate/ejbcaCertificate[r]',
-      );
+      ];
     array_unshift($this->headpage->xmlData['actiontriggers']['action'], $downloadAction);
     $this->registerAction('download', 'downloadEntry');
   }
 
-  function downloadEntry($action, array $targets)
+  function downloadEntry ($action, array $targets)
   {
     $entry = $this->headpage->getEntry($targets[0]);
     session::set('binary', $entry['userCertificate;binary'][0]);
diff --git a/ejbca/config/ejbca/class_ejbcaConfig.inc b/ejbca/config/ejbca/class_ejbcaConfig.inc
index b64fb5ca15fa450c0ca3c755e5f38e31a2f405e5..92cadf48c9aa141097018d259c0245a8742a19b1 100644
--- a/ejbca/config/ejbca/class_ejbcaConfig.inc
+++ b/ejbca/config/ejbca/class_ejbcaConfig.inc
@@ -20,35 +20,35 @@
 
 class ejbcaConfig extends simplePlugin
 {
-  var $objectclasses  = array("fdEjbcaPluginConf");
+  var $objectclasses  = ["fdEjbcaPluginConf"];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       "plShortName"     => _("EJBCA plugin configuration"),
       "plDescription"   => _("FusionDirectory ejbca plugin configuration"),
       "plSelfModify"    => FALSE,
-      "plCategory"      => array("configuration"),
-      "plObjectType"    => array("smallConfig"),
+      "plCategory"      => ["configuration"],
+      "plObjectType"    => ["smallConfig"],
 
       "plProvidedAcls"  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('EJBCA plugin'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('EJBCA RDN'), _('Branch in which ejbca certificates are stored'),
             'fdEjbcaRDN', TRUE,
             'ou=certificates'
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/ejbca/locale/af_ZA/fusiondirectory.po b/ejbca/locale/af_ZA/fusiondirectory.po
index 9271eb3818eb665346276fa5a51eed2a0befb2b6..cce0733530961044fe6b3faf64dc9bf2013581fa 100644
--- a/ejbca/locale/af_ZA/fusiondirectory.po
+++ b/ejbca/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ejbca/locale/ar/fusiondirectory.po b/ejbca/locale/ar/fusiondirectory.po
index 4f5838ab01ed4feff85853ae0eba2a830ea0af32..13f6c35de1d2d5d3f76b660c84bdbf265039c618 100644
--- a/ejbca/locale/ar/fusiondirectory.po
+++ b/ejbca/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/ejbca/locale/ca/fusiondirectory.po b/ejbca/locale/ca/fusiondirectory.po
index 3174d4c98cabd1ea80ef1f42d5b4a3c276715dd6..f30436802ebc603b4b00a59d230c8f10d3bf19c1 100644
--- a/ejbca/locale/ca/fusiondirectory.po
+++ b/ejbca/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/ejbca/locale/cs_CZ/fusiondirectory.po b/ejbca/locale/cs_CZ/fusiondirectory.po
index f38cd4598d15633ef3cfec6215ab655547a8486f..58eb4d30d2125b9a3b9f37e522984f0448982adb 100644
--- a/ejbca/locale/cs_CZ/fusiondirectory.po
+++ b/ejbca/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/ejbca/locale/de/fusiondirectory.po b/ejbca/locale/de/fusiondirectory.po
index 2281e40e1acbf9b112e0e504090e5663ba8d8d49..7ae15234b3d4c0e84aece1d089fd075747c0ffbc 100644
--- a/ejbca/locale/de/fusiondirectory.po
+++ b/ejbca/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/ejbca/locale/el_GR/fusiondirectory.po b/ejbca/locale/el_GR/fusiondirectory.po
index 8fdd9db4e1ca690e4b63d27fda8305c416238c29..216cb990ba70f3072f8deb9fb3a2a60e35abb50b 100644
--- a/ejbca/locale/el_GR/fusiondirectory.po
+++ b/ejbca/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/ejbca/locale/en/fusiondirectory.po b/ejbca/locale/en/fusiondirectory.po
index 20cdb9a65f275bd204c633a684e9beea5ebfd250..ec245f59ae679723c6bb3d1a381217b0e4a300eb 100644
--- a/ejbca/locale/en/fusiondirectory.po
+++ b/ejbca/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -38,7 +38,7 @@ msgid "Branch in which ejbca certificates are stored"
 msgstr ""
 
 #: admin/ejbca/certificates/class_ejbcaCertificates.inc:29
-#: admin/ejbca/class_ejbcaManagement.inc:32
+#: admin/ejbca/class_ejbcaManagement.inc:33
 msgid "EJBCA"
 msgstr ""
 
@@ -54,11 +54,11 @@ msgstr ""
 msgid "Certificates associated to this object"
 msgstr ""
 
-#: admin/ejbca/class_ejbcaManagement.inc:33
+#: admin/ejbca/class_ejbcaManagement.inc:34
 msgid "EJBCA certificates management"
 msgstr ""
 
-#: admin/ejbca/class_ejbcaManagement.inc:52
+#: admin/ejbca/class_ejbcaManagement.inc:53
 msgid "Download"
 msgstr ""
 
diff --git a/ejbca/locale/es/fusiondirectory.po b/ejbca/locale/es/fusiondirectory.po
index e92d9cd60d877b1cffda579c8a8a11a6e3390cfb..29d2ef11e279a21db737a03b8ccafd9af6d2fa47 100644
--- a/ejbca/locale/es/fusiondirectory.po
+++ b/ejbca/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/ejbca/class_ejbcaManagement.inc:33
 #: admin/ejbca/certificates/class_ejbcaCertificates.inc:29
diff --git a/ejbca/locale/es_CO/fusiondirectory.po b/ejbca/locale/es_CO/fusiondirectory.po
index 9e12a29ec319b5a0d156b1f6d64a8370fff627d5..23e8da03b6fe6fae0b04715f1c67294f2ad1855c 100644
--- a/ejbca/locale/es_CO/fusiondirectory.po
+++ b/ejbca/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/ejbca/class_ejbcaManagement.inc:33
 #: admin/ejbca/certificates/class_ejbcaCertificates.inc:29
diff --git a/ejbca/locale/es_VE/fusiondirectory.po b/ejbca/locale/es_VE/fusiondirectory.po
index 41de2a714fb635e90d6cf3b7e3ffd83c2f48cfb3..738154d5eaf0e25b0be0592a2519430ad859dc01 100644
--- a/ejbca/locale/es_VE/fusiondirectory.po
+++ b/ejbca/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/ejbca/class_ejbcaManagement.inc:33
 #: admin/ejbca/certificates/class_ejbcaCertificates.inc:29
diff --git a/ejbca/locale/fa_IR/fusiondirectory.po b/ejbca/locale/fa_IR/fusiondirectory.po
index 7e4e436353baa4ead7a3c01e2be30c4eb98e6a04..6c1f083d075525995950872d33825750c0b2f48e 100644
--- a/ejbca/locale/fa_IR/fusiondirectory.po
+++ b/ejbca/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ejbca/locale/fi_FI/fusiondirectory.po b/ejbca/locale/fi_FI/fusiondirectory.po
index 9400c26ee78a2f6913f61864ca87cece1a19483e..18624fa731586eefe4ec5ff97880726cd308423b 100644
--- a/ejbca/locale/fi_FI/fusiondirectory.po
+++ b/ejbca/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/ejbca/locale/fr/fusiondirectory.po b/ejbca/locale/fr/fusiondirectory.po
index 51e3515146a82de093ca0f76ab520c250a1d7762..99c384b319ed36ae814b538f058d74c8cf48fb54 100644
--- a/ejbca/locale/fr/fusiondirectory.po
+++ b/ejbca/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/ejbca/class_ejbcaManagement.inc:33
 #: admin/ejbca/certificates/class_ejbcaCertificates.inc:29
diff --git a/ejbca/locale/hu_HU/fusiondirectory.po b/ejbca/locale/hu_HU/fusiondirectory.po
index a42b1ee6002430a26d97d4f6f45a882047732a26..551f9db18e0405ec289bcc094d6c8dd23e7c5e11 100644
--- a/ejbca/locale/hu_HU/fusiondirectory.po
+++ b/ejbca/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
diff --git a/ejbca/locale/id/fusiondirectory.po b/ejbca/locale/id/fusiondirectory.po
index 4a7dbc9c73c1d5a6a49d34f7f866b5b7ff24e07e..6c1f0c581d270f31e2e37b81d87739954589f59e 100644
--- a/ejbca/locale/id/fusiondirectory.po
+++ b/ejbca/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ejbca/locale/it_IT/fusiondirectory.po b/ejbca/locale/it_IT/fusiondirectory.po
index 67b732b8eddb4e1fac94b036a9b85e903ce8aff4..f93a5735943fed0ed8845b786809cc5a1bde42ee 100644
--- a/ejbca/locale/it_IT/fusiondirectory.po
+++ b/ejbca/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/ejbca/class_ejbcaManagement.inc:33
 #: admin/ejbca/certificates/class_ejbcaCertificates.inc:29
diff --git a/ejbca/locale/ja/fusiondirectory.po b/ejbca/locale/ja/fusiondirectory.po
index 754256a18834833200b423e9f537640343eca178..93e58c6fffd043910f534be11e86a180d1d08e8e 100644
--- a/ejbca/locale/ja/fusiondirectory.po
+++ b/ejbca/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ejbca/locale/ko/fusiondirectory.po b/ejbca/locale/ko/fusiondirectory.po
index d10c444096d6d4025c48bbe6a5844280bf51d537..1cb0629c31980aa475b47e485e75bb5cfcbdcd90 100644
--- a/ejbca/locale/ko/fusiondirectory.po
+++ b/ejbca/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/ejbca/locale/lv/fusiondirectory.po b/ejbca/locale/lv/fusiondirectory.po
index 00023120b1433de63995441a40aade26b8d482fc..944d0f4c06d9c87a50fe3832276e63c274a1ca1a 100644
--- a/ejbca/locale/lv/fusiondirectory.po
+++ b/ejbca/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/ejbca/locale/nb/fusiondirectory.po b/ejbca/locale/nb/fusiondirectory.po
index 8b2d38ec33afd7a3d0ae1621fb418b0a32c0789e..0fecd673909d7f1273ceb40a61860a49d08ca8de 100644
--- a/ejbca/locale/nb/fusiondirectory.po
+++ b/ejbca/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/ejbca/locale/nl/fusiondirectory.po b/ejbca/locale/nl/fusiondirectory.po
index 12f332a3e86eea0e2d0ca62a51344dce3becf2f4..73e5404907446eb2763fe7285a7bc5b49d31aa3b 100644
--- a/ejbca/locale/nl/fusiondirectory.po
+++ b/ejbca/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/ejbca/locale/pl/fusiondirectory.po b/ejbca/locale/pl/fusiondirectory.po
index 832cc597261092f84885df56b8ec271ceb973606..617bdef79b30991a37bf9301790b98d791fa28ea 100644
--- a/ejbca/locale/pl/fusiondirectory.po
+++ b/ejbca/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/ejbca/locale/pt/fusiondirectory.po b/ejbca/locale/pt/fusiondirectory.po
index 1abb8c63e4c79c99939cc89705e0c319f162d850..d9953987ee7eab87761a35f6f86c2ebba8cc3484 100644
--- a/ejbca/locale/pt/fusiondirectory.po
+++ b/ejbca/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/ejbca/class_ejbcaManagement.inc:33
 #: admin/ejbca/certificates/class_ejbcaCertificates.inc:29
diff --git a/ejbca/locale/pt_BR/fusiondirectory.po b/ejbca/locale/pt_BR/fusiondirectory.po
index fdf1e8eb851ca1116a023d934501cc4ff9b5b9af..5692d10088d6fbd1acf2fac4aa17747a7b524df5 100644
--- a/ejbca/locale/pt_BR/fusiondirectory.po
+++ b/ejbca/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/ejbca/class_ejbcaManagement.inc:33
 #: admin/ejbca/certificates/class_ejbcaCertificates.inc:29
diff --git a/ejbca/locale/ru/fusiondirectory.po b/ejbca/locale/ru/fusiondirectory.po
index 0f84e29d01ce165d04fde690c408a323727cf09d..e3c16297fa4aaac0dadde6339a28b6498179cc45 100644
--- a/ejbca/locale/ru/fusiondirectory.po
+++ b/ejbca/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/ejbca/locale/ru@petr1708/fusiondirectory.po b/ejbca/locale/ru@petr1708/fusiondirectory.po
index 175578981ecd389feecb082ac151704d4783339d..17f12183f0c6b766d98d6ee810f5ec77e17ca266 100644
--- a/ejbca/locale/ru@petr1708/fusiondirectory.po
+++ b/ejbca/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ejbca/locale/sv/fusiondirectory.po b/ejbca/locale/sv/fusiondirectory.po
index 40241f2196651814ffe430612d74f26a6fa9bfd2..8118ea55acaf001ccbf04a26895eefcba727d346 100644
--- a/ejbca/locale/sv/fusiondirectory.po
+++ b/ejbca/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/ejbca/locale/tr_TR/fusiondirectory.po b/ejbca/locale/tr_TR/fusiondirectory.po
index c320947e177cbf91a0d161bfb429f0d438d82b4b..716657df8622822819c8994e536797834ef4eb36 100644
--- a/ejbca/locale/tr_TR/fusiondirectory.po
+++ b/ejbca/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2021
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2021\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -28,7 +32,7 @@ msgstr ""
 
 #: admin/ejbca/class_ejbcaManagement.inc:53
 msgid "Download"
-msgstr ""
+msgstr "İndir"
 
 #: admin/ejbca/certificates/class_ejbcaCertificates.inc:30
 msgid "Assign EJBCA certificates to a user"
diff --git a/ejbca/locale/ug/fusiondirectory.po b/ejbca/locale/ug/fusiondirectory.po
index 6e3ef0bfcf9aade0754eb43038d52e6f00f84585..5123bec1879d8246bcb79229062ec0d1672d5021 100644
--- a/ejbca/locale/ug/fusiondirectory.po
+++ b/ejbca/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/ejbca/class_ejbcaManagement.inc:33
 #: admin/ejbca/certificates/class_ejbcaCertificates.inc:29
diff --git a/ejbca/locale/vi_VN/fusiondirectory.po b/ejbca/locale/vi_VN/fusiondirectory.po
index a1c87a59edf90f0e8c4a0e2051f928d24c879bc9..59db869ecbe6932668fcd3737b940fd1c2daccaa 100644
--- a/ejbca/locale/vi_VN/fusiondirectory.po
+++ b/ejbca/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/ejbca/locale/zh/fusiondirectory.po b/ejbca/locale/zh/fusiondirectory.po
index 7f01653ee0f27b63e19c91cbe35c58ae93477c49..2e0a5d9d442252c89ddace4be280f639fe346630 100644
--- a/ejbca/locale/zh/fusiondirectory.po
+++ b/ejbca/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/ejbca/locale/zh_TW/fusiondirectory.po b/ejbca/locale/zh_TW/fusiondirectory.po
index 7866e73b53c68532ee614f204e68f5fca0389b0b..2732a7e2a59fefe5ec9960ee4dcc6d90f8132aa5 100644
--- a/ejbca/locale/zh_TW/fusiondirectory.po
+++ b/ejbca/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/fai/admin/fai/class_faiDiskEntry.inc b/fai/admin/fai/class_faiDiskEntry.inc
index 0ad0eee7096dfc86288fea8446dc47dd98d58661..467e6100832f16538cbcdc7d97aa2fcca6a80839 100644
--- a/fai/admin/fai/class_faiDiskEntry.inc
+++ b/fai/admin/fai/class_faiDiskEntry.inc
@@ -30,7 +30,7 @@ class PartitionDialog extends GenericDialog
 
   protected $plugin;
 
-  function __construct($simplePlugin, $attribute, $partition = array())
+  function __construct ($simplePlugin, $attribute, $partition = [])
   {
     $this->attribute  = $attribute;
     $this->plugin     = $simplePlugin;
@@ -80,9 +80,9 @@ class DiskPartitionsAttribute extends DialogOrderedArrayAttribute
 {
   protected $dialogClass = 'PartitionDialog';
 
-  function __construct ($label, $description, $ldapName, $values = array(), $acl = '')
+  function __construct ($label, $description, $ldapName, $values = [], $acl = '')
   {
-    parent::__construct ($label, $description, $ldapName, FALSE, $values, $acl);
+    parent::__construct($label, $description, $ldapName, FALSE, $values, $acl);
   }
 
   protected function loadAttrValue ($attrs)
@@ -94,22 +94,22 @@ class DiskPartitionsAttribute extends DialogOrderedArrayAttribute
   {
   }
 
-  protected function getAttributeArrayValue($key, $value)
+  protected function getAttributeArrayValue ($key, $value)
   {
-    $opt = array();
+    $opt = [];
     if (isset($value['bootable']) && $value['bootable']) {
       $opt[] = _('bootable');
     }
     if (!empty($value['preserve'])) {
       $opt[] = _('preserve').':'.$value['preserve'];
     }
-    return array(
+    return [
       $value['description'],
       $value['FAIpartitionType'],
       $value['FAImountPoint'],
       $value['FAIpartitionSize'],
       implode(', ', $opt),
-    );
+    ];
   }
 
   /* Only allow to remove partitions if they are not in use elsewhere */
@@ -118,7 +118,7 @@ class DiskPartitionsAttribute extends DialogOrderedArrayAttribute
     /* Create a list of all partitions that are used in
      *  lvm, raid or cryptsetup compilations.
      */
-    $list = array();
+    $list = [];
     foreach ($this->plugin->parent->disks as $disk) {
       if ($disk['FAIdiskType'] == 'lvm') {
         foreach ($disk['FAIlvmDevice'] as $partname) {
@@ -153,7 +153,7 @@ class DiskPartitionsAttribute extends DialogOrderedArrayAttribute
   }
 
   /* Bypass delPostValue check for edition */
-  protected function handleEdit($key)
+  protected function handleEdit ($key)
   {
     $this->editingValue = $this->value[$key];
     unset($this->postValue[$key]);
@@ -161,7 +161,7 @@ class DiskPartitionsAttribute extends DialogOrderedArrayAttribute
   }
 
   /* Add or update a partition */
-  function updatePartition($part)
+  function updatePartition ($part)
   {
     if (!isset($part['FAIpartitionNr']) || ($part['FAIpartitionNr'] == 'undefined')) {
       $part['FAIpartitionNr'] = $this->get_free_partition_number();
@@ -170,6 +170,8 @@ class DiskPartitionsAttribute extends DialogOrderedArrayAttribute
     if ($this->plugin->FAIdiskType == 'disk') {
       if (preg_match('/^disk(\d+)$/', $this->plugin->cn)) {
         $part['cn'] = $this->plugin->cn.'.'.$part['FAIpartitionNr'];
+      } elseif (preg_match('/^nvme(\d+)/', $this->plugin->cn)) {
+        $part['cn'] = $this->plugin->cn.'p'.$part['FAIpartitionNr'];
       } else {
         $part['cn'] = $this->plugin->cn.$part['FAIpartitionNr'];
       }
@@ -197,14 +199,14 @@ class DiskPartitionsAttribute extends DialogOrderedArrayAttribute
   }
 
   /* Add a partition back */
-  function addPartition($part)
+  function addPartition ($part)
   {
     $this->value[$part['FAIpartitionNr']] = $part;
   }
 
-  function get_free_partition_number()
+  function get_free_partition_number ()
   {
-    $used = array();
+    $used = [];
     foreach ($this->value as $key => $part) {
       $used[$key] = $part['FAIpartitionNr'];
     }
@@ -220,69 +222,69 @@ class faiDiskEntry extends simplePlugin
 {
   protected $is_edit = FALSE;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Partition table entry'),
       'plDescription'   => _('FAI partition table entry'),
-      'plCategory'      => array('fai'),
+      'plCategory'      => ['fai'],
       /* No ACL, we use the one for FAIpartitions */
-      'plProvidedAcls'  => array()
-    );
+      'plProvidedAcls'  => []
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Device'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Name'), _('Disk name'),
             'cn', TRUE,
             '', 'FAIpartitions',
             '/[a-z0-9_-]/i'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Description'), _('Short description'),
             'description', FALSE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('fstab key'), _('Key to use in fstab file'),
             'fstabkey', TRUE,
-            array('device', 'label', 'uuid'), '',
-            array(_('Device'), _('Label'), _('UUID'))
+            ['device', 'label', 'uuid'], '',
+            [_('Device'), _('Label'), _('UUID')]
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Disk label'), _('Disk label'),
             'disklabel', TRUE,
-            array('msdos', 'gpt'), '',
-            array('MSDOS', 'GPT')
+            ['msdos', 'gpt'], '',
+            ['MSDOS', 'GPT']
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Random init'), _('Initialise all encrypted partitions with random data'),
             'randinit', FALSE
           ),
-          new HiddenAttribute ('FAIdiskType')
-        )
-      ),
-      'partitions' => array(
+          new HiddenAttribute('FAIdiskType')
+        ]
+      ],
+      'partitions' => [
         'name'  => _('Partition entries'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
-          new SetAttribute (
-            new SelectAttribute (
+        'class' => ['fullwidth'],
+        'attrs' => [
+          new SetAttribute(
+            new SelectAttribute(
               _('Combined physical partitions'), _('Physical partitions combined in this LVM volume'),
               'lvmDevices', FALSE,
-              array()
+              []
             )
           ),
-          new DiskPartitionsAttribute (
+          new DiskPartitionsAttribute(
             '', _('Partitions in this class'), 'partitions'
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn, $parent, $disk, $type)
@@ -388,7 +390,7 @@ class faiDiskEntry extends simplePlugin
     }
   }
 
-  protected function loadAttributes()
+  protected function loadAttributes ()
   {
     foreach ($this->attributesAccess as &$attribute) {
       $attribute->setInLdap(FALSE);
@@ -398,7 +400,7 @@ class faiDiskEntry extends simplePlugin
     parent::loadAttributes();
   }
 
-  function execute()
+  function execute ()
   {
     $smarty = get_smarty();
     $acl    = $this->aclGetPermissions('FAIpartitions');
@@ -416,9 +418,9 @@ class faiDiskEntry extends simplePlugin
     }
   }
 
-  function save()
+  function save ()
   {
-    $tmp = array();
+    $tmp = [];
     $tmp['cn']          = $this->cn;
     $tmp['description'] = $this->description;
 
@@ -447,15 +449,15 @@ class faiDiskEntry extends simplePlugin
 
     /* Assemble flags */
     if ($this->FAIdiskType == 'disk') {
-      $tmp['FAIdiskOption'] = array('fstabkey:'.$this->fstabkey, 'disklabel:'.$this->disklabel);
+      $tmp['FAIdiskOption'] = ['fstabkey:'.$this->fstabkey, 'disklabel:'.$this->disklabel];
     } elseif ($this->FAIdiskType == 'cryptsetup') {
       if ($this->randinit) {
-        $tmp['FAIdiskOption'] = array('randinit');
+        $tmp['FAIdiskOption'] = ['randinit'];
       } else {
-        $tmp['FAIdiskOption'] = array();
+        $tmp['FAIdiskOption'] = [];
       }
     } else {
-      $tmp['FAIdiskOption'] = array('fstabkey:'.$this->fstabkey);
+      $tmp['FAIdiskOption'] = ['fstabkey:'.$this->fstabkey];
     }
 
     /* If hdd name has changed, tell partitionTable to rename it */
@@ -487,7 +489,7 @@ class faiDiskEntry extends simplePlugin
       }
 
       /* Unset non valid attributes */
-      foreach (array('bootable','preserve','resize','FAIdiskType') as $attr) {
+      foreach (['bootable','preserve','resize','FAIdiskType'] as $attr) {
         if (isset($tmp['partitions'][$id][$attr])) {
           unset($tmp['partitions'][$id][$attr]);
         }
@@ -514,10 +516,10 @@ class faiDiskEntry extends simplePlugin
   /* Returns a list of available partitions that are useable in
    *  lvm disk setups.
    */
-  function getAvailablePartitions()
+  function getAvailablePartitions ()
   {
-    $may  = array();
-    $used = array();
+    $may  = [];
+    $used = [];
 
     foreach ($this->parent->disks as $disk) {
       // Skip ourselves
@@ -547,7 +549,7 @@ class faiDiskEntry extends simplePlugin
     }
 
     // Check which of the available disks are unused.
-    $ret = array();
+    $ret = [];
     foreach ($may as $val) {
       if (!in_array($val, $used)) {
         $ret[$val] = $val;
@@ -557,9 +559,9 @@ class faiDiskEntry extends simplePlugin
   }
 
   /* Checks the disk combinations */
-  function check_disks($disk_to_add = array())
+  function check_disks ($disk_to_add = [])
   {
-    $msgs = array();
+    $msgs = [];
 
     /* Check 'disk' combinations.
      *  - There can be four primary partitions.
@@ -567,7 +569,7 @@ class faiDiskEntry extends simplePlugin
      *     three 'primary' partitions.
      */
     if ($this->FAIdiskType == 'disk') {
-      $types = array('logical' => array(), 'primary' => array());
+      $types = ['logical' => [], 'primary' => []];
       $types[$disk_to_add['FAIpartitionType']][$disk_to_add['FAIpartitionNr']] = 1;
       foreach ($this->partitions as $part) {
         $types[$part['FAIpartitionType']][$part['FAIpartitionNr']] = 1;
diff --git a/fai/admin/fai/class_faiHook.inc b/fai/admin/fai/class_faiHook.inc
index d27137201d49c4c36df64afa1930cdb9bf470040..d91c130ed3226944bc93ef0cd9352818717fba1b 100644
--- a/fai/admin/fai/class_faiHook.inc
+++ b/fai/admin/fai/class_faiHook.inc
@@ -20,80 +20,80 @@
 
 class faiHook extends faiSimplePluginClass
 {
-  var $objectclasses = array('top','FAIclass','FAIhook');
+  var $objectclasses = ['top','FAIclass','FAIhook'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Hook'),
       'plDescription' => _('FAI hook'),
-      'plObjectType'  => array(
-        'faiHook' => array(
+      'plObjectType'  => [
+        'faiHook' => [
           'name'        => _('FAI hook'),
           'filter'      => 'objectClass=FAIhook',
           'aclCategory' => 'fai',
           'ou'          => get_ou('faiHookRDN'),
           'icon'        => 'geticon.php?context=applications&icon=fai-hook&size=16'
-        )
-      ),
+        ]
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Properties'),
-        'attrs' => array(
-          new HostNameAttribute (
+        'attrs' => [
+          new HostNameAttribute(
             _('Class name'), _('Variables class name'),
             'cn', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Description'), _('Short description of the class'),
             'description', FALSE
           ),
-        )
-      ),
-      'vars' => array(
+        ]
+      ],
+      'vars' => [
         'name'  => _('Hooks'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
-          new SubNodesAttribute (
+        'class' => ['fullwidth'],
+        'attrs' => [
+          new SubNodesAttribute(
             '', _('Variables in this class'),
-            'hooks', array('FAIhookEntry','FAIclass','top'),
-            array(
-              new StringAttribute (
+            'hooks', ['FAIhookEntry','FAIclass','top'],
+            [
+              new StringAttribute(
                 _('Name'), _('The name of the variable'),
                 'cn', TRUE
               ),
-              new StringAttribute (
+              new StringAttribute(
                 _('Description'), _('A short description of the variable'),
                 'description', FALSE
               ),
-              new SelectAttribute (
+              new SelectAttribute(
                 _('Task'), _('Task to run'),
                 'FAItask', TRUE,
-                array('chboot','configure','debconf','error','extrbase',
+                ['chboot','configure','debconf','error','extrbase',
                        'faiend','finish','install','instsoft','mirror',
                        'mountdisks','partition','prepareapt','repository',
-                       'savelog','setup','softupdate','sysinfo','updatebase')
+                       'savelog','setup','softupdate','sysinfo','updatebase']
               ),
-              new FileTextAreaAttribute (
+              new FileTextAreaAttribute(
                 _('Script'), _('The script of this hook'),
                 'FAIscript', TRUE,
                 '.sh'
               ),
-            ),
+            ],
             FALSE, /* no order */
-            array(),
+            [],
             TRUE /* edit enabled */
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -104,7 +104,7 @@ class faiHook extends faiSimplePluginClass
     $this->attributesAccess['hooks']->setLinearRendering(FALSE);
   }
 
-  protected function shouldSave()
+  protected function shouldSave ()
   {
     /* We need ldap_save to always run */
     return TRUE;
diff --git a/fai/admin/fai/class_faiManagement.inc b/fai/admin/fai/class_faiManagement.inc
index f167d2bb3bb4271b632bb3c10bef386977867ed2..489d44ec55ab0ffc38ae51e7b4b0b39730786623 100644
--- a/fai/admin/fai/class_faiManagement.inc
+++ b/fai/admin/fai/class_faiManagement.inc
@@ -22,7 +22,7 @@ class faiListing extends listing
 {
   private $builded = FALSE;
 
-  function __construct($data)
+  function __construct ($data)
   {
     parent::__construct($data);
     // Instanciate base selector
@@ -32,7 +32,7 @@ class faiListing extends listing
   /*!
    * \brief Refresh the bases list
    */
-  function refreshBasesList()
+  function refreshBasesList ()
   {
     if (!$this->builded) {
       return;
@@ -53,7 +53,7 @@ class faiBaseSelector extends baseSelector
 {
   protected $select;
 
-  function __construct($bases, $base = '')
+  function __construct ($bases, $base = '')
   {
     parent::__construct($bases, $base);
     $this->select = new SelectAttribute(
@@ -64,7 +64,7 @@ class faiBaseSelector extends baseSelector
     $this->select->setSubmitForm(TRUE);
   }
 
-  function setBases($bases)
+  function setBases ($bases)
   {
     $this->pathMapping = $bases;
 
@@ -73,7 +73,7 @@ class faiBaseSelector extends baseSelector
     }
   }
 
-  function update($force = FALSE)
+  function update ($force = FALSE)
   {
     if (!is_object($this->select)) {
       return TRUE;
@@ -103,28 +103,27 @@ class faiBaseSelector extends baseSelector
 class faiManagement extends simpleManagement
 {
   // Tab definition
-  protected $objectTypes  = array('faiVariable', 'faiHook', 'faiScript', 'faiPackage', 'faiPartitionTable', 'faiTemplate', 'faiProfile');
+  protected $objectTypes  = ['faiVariable', 'faiHook', 'faiScript', 'faiPackage', 'faiPartitionTable', 'faiTemplate', 'faiProfile'];
 
   protected $departmentBrowser      = FALSE;
   protected $departmentRootVisible  = FALSE;
-  //~ protected $baseMode               = FALSE;
 
   protected $headpageClass = 'faiListing';
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('FAI'),
       'plDescription' => _('Manage FAI software packages and deployment recipes'),
       'plIcon'        => 'geticon.php?context=applications&icon=fai&size=48',
       'plSection'     => 'systems',
       'plPriority'    => 20,
-      'plCategory'    => array('fai' => array('description'  => _('FAI'),
-                                              'objectClass'  => array('FAIclass'))),
-      'plManages'     => array('faiVariable', 'faiHook', 'faiScript', 'faiPackage', 'faiPartitionTable', 'faiTemplate', 'faiProfile'),
+      'plCategory'    => ['fai' => ['description'  => _('FAI'),
+                                              'objectClass'  => ['FAIclass']]],
+      'plManages'     => ['faiVariable', 'faiHook', 'faiScript', 'faiPackage', 'faiPartitionTable', 'faiTemplate', 'faiProfile'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 
   function execute ()
@@ -147,14 +146,14 @@ class faiManagement extends simpleManagement
 
   /*! \brief   Returns a list of all releases for useable for drop down boxes.
    */
-  static function getReleaseList()
+  static function getReleaseList ()
   {
     global $config;
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(objectClass=FAIbranch)', array('ou','FAIstate'));
+    $ldap->search('(objectClass=FAIbranch)', ['ou','FAIstate']);
 
-    $list = array();
+    $list = [];
 
     while ($release = $ldap->fetch()) {
       preg_match('/[^,],ou=([^,]+),/', $release['dn'], $m);
diff --git a/fai/admin/fai/class_faiPackage.inc b/fai/admin/fai/class_faiPackage.inc
index 82feff730c03ccd90ec13e7cfc81b436afff9fea..650120bca2c8edd0f66b5072d00aa433c92c39b2 100644
--- a/fai/admin/fai/class_faiPackage.inc
+++ b/fai/admin/fai/class_faiPackage.inc
@@ -46,7 +46,7 @@ class PackageConfigDialog extends GenericDialog
   protected $post_cancel = 'CancelObjectConfig';
   protected $post_finish = 'SaveObjectConfig';
 
-  function __construct($simplePlugin, &$attribute, $key, $pkg_config)
+  function __construct ($simplePlugin, &$attribute, $key, $pkg_config)
   {
     $this->attribute  = $attribute;
     $this->dialog     = new $this->dialogClass($simplePlugin->dn, $key, $simplePlugin->FAIdebianRelease, $pkg_config);
@@ -92,10 +92,10 @@ class PackageConfigDialog extends GenericDialog
 class PackagesAttribute extends DialogOrderedArrayAttribute
 {
   protected $dialogClass        = 'PackageSelectDialog';
-  protected $buffer             = array();
-  protected $configuredPackages = array();
+  protected $buffer             = [];
+  protected $configuredPackages = [];
 
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $acl = "")
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $acl = "")
   {
     OrderedArrayAttribute::__construct(
       new StringAttribute($label, $description, $ldapName, $required, "", $acl),
@@ -105,19 +105,19 @@ class PackagesAttribute extends DialogOrderedArrayAttribute
     );
   }
 
-  function addValue($value)
+  function addValue ($value)
   {
     $this->value[preg_replace('/\-$/', '', $value)] = $value;
   }
 
-  function readValue($value)
+  function readValue ($value)
   {
-    return array(preg_replace('/\-$/', '', $value), $value);
+    return [preg_replace('/\-$/', '', $value), $value];
   }
 
   function getFilterBlackList ()
   {
-    return array('PACKAGE' => array_keys($this->value));
+    return ['PACKAGE' => array_keys($this->value)];
   }
 
   function renderButtons ()
@@ -132,31 +132,31 @@ class PackagesAttribute extends DialogOrderedArrayAttribute
     return $buttons;
   }
 
-  public function htmlIds()
+  public function htmlIds ()
   {
     $id = $this->getHtmlId();
-    return array_merge(array('add'.$id), parent::htmlIds());
+    return array_merge(['add'.$id], parent::htmlIds());
   }
 
-  protected function getAttributeArrayValue($key, $value)
+  protected function getAttributeArrayValue ($key, $value)
   {
     if (!isset($this->buffer[$value])) {
       $this->genPkgs();
     }
     if (isset($this->buffer[$value])) {
-      return array(
+      return [
         $this->buffer[$value]['PACKAGE'],
         $this->buffer[$value]['VERSION'],
         base64_decode($this->buffer[$value]['DESCRIPTION']),
-      );
+      ];
     }
-    return array($value, '', '');
+    return [$value, '', ''];
   }
 
-  protected function genRowIcons($key, $value)
+  protected function genRowIcons ($key, $value)
   {
     $id = $this->getHtmlId();
-    list ($img, $nbicons) = parent::genRowIcons($key, $value);
+    list($img, $nbicons) = parent::genRowIcons($key, $value);
     $key64 = base64_encode($key);
     if (preg_match('/\-$/', $value)) {
       $img = '<input type="image" src="geticon.php?context=actions&icon=add&size=16"'.
@@ -176,10 +176,10 @@ class PackagesAttribute extends DialogOrderedArrayAttribute
     }
     $nbicons += 2;
 
-    return array ($img, $nbicons);
+    return  [$img, $nbicons];
   }
 
-  protected function handleAddAndEditValue()
+  protected function handleAddAndEditValue ()
   {
     $id = $this->getHtmlId();
 
@@ -188,7 +188,7 @@ class PackagesAttribute extends DialogOrderedArrayAttribute
         $key = preg_replace('/^'.$id.'_config_/', '', $name);
         $key = base64_decode(preg_replace('/_[xy]$/', '', $key));
         /* Open configuration dialog */
-        $pkg_config = array();
+        $pkg_config = [];
         if (isset($this->configuredPackages[$key])) {
           $pkg_config = $this->configuredPackages[$key];
         }
@@ -211,7 +211,7 @@ class PackagesAttribute extends DialogOrderedArrayAttribute
     parent::handleAddAndEditValue();
   }
 
-  function packageConfigured($packageConfig)
+  function packageConfigured ($packageConfig)
   {
     $this->configuredPackages = array_merge($this->configuredPackages, $packageConfig);
   }
@@ -221,8 +221,8 @@ class PackagesAttribute extends DialogOrderedArrayAttribute
   {
     /* First delete all old nodes */
     $ldap->cd($this->plugin->dn);
-    $ldap->search('objectClass=FAIdebconfInfo', array('dn'), 'one');
-    $delete = array();
+    $ldap->search('objectClass=FAIdebconfInfo', ['dn'], 'one');
+    $delete = [];
     while ($attrs = $ldap->fetch()) {
       $delete[] = $attrs['dn'];
     }
@@ -233,7 +233,7 @@ class PackagesAttribute extends DialogOrderedArrayAttribute
     /* Then add our values */
     foreach ($this->configuredPackages as $pkgname => $pkgvars) {
       foreach ($pkgvars as $varname => $varinfos) {
-        $attrs = array('objectClass' => 'FAIdebconfInfo');
+        $attrs = ['objectClass' => 'FAIdebconfInfo'];
         $attrs['FAIpackage']           = $pkgname;
         $attrs['FAIvariable']          = $varname;
         $attrs['FAIvariableType']      = $varinfos['Type'];
@@ -257,7 +257,7 @@ class PackagesAttribute extends DialogOrderedArrayAttribute
   /*! \brief  Reload the list of cached packages.
       @return Returns the currently cached list of packages.
    */
-  function genPkgs()
+  function genPkgs ()
   {
     if (empty($this->plugin->FAIdebianRelease)) {
       return;
@@ -268,7 +268,7 @@ class PackagesAttribute extends DialogOrderedArrayAttribute
       return;
     }
 
-    $attrs = array('distribution','package','version','section','description','timestamp','hastemplate');
+    $attrs = ['distribution','package','version','section','description','timestamp','hastemplate'];
 
     // packages names that are not already in the buffer
     $packages = array_diff_key($this->value, $this->buffer);
@@ -299,7 +299,7 @@ class PackagesAttribute extends DialogOrderedArrayAttribute
           }
         }
       }
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, count($packages), "$release done, packages left");
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, count($packages), "$release done, packages left");
     }
 
     if (count($packages) > 0) {
@@ -312,7 +312,7 @@ class PackagesAttribute extends DialogOrderedArrayAttribute
     $this->genConfiguredPackages();
   }
 
-  function genConfiguredPackages()
+  function genConfiguredPackages ()
   {
     global $config;
     /* Fetch all package configurations from ldap */
@@ -328,10 +328,10 @@ class PackagesAttribute extends DialogOrderedArrayAttribute
     /* Search for configuration objects */
     $ldap = $config->get_ldap_link();
     $ldap->cd($this->plugin->dn);
-    $ldap->search($PackageFilter, array("FAIvariable","FAIvariableType",
-          "FAIvariableContent","FAIpackage","FAIdebianSection","FAIstate"));
+    $ldap->search($PackageFilter, ["FAIvariable","FAIvariableType",
+          "FAIvariableContent","FAIpackage","FAIdebianSection","FAIstate"]);
 
-    $this->configuredPackages = array();
+    $this->configuredPackages = [];
 
     /* Walk through configurations and append them to our list of ConfiguredPackages */
     while ($attr = $ldap->fetch()) {
@@ -342,16 +342,16 @@ class PackagesAttribute extends DialogOrderedArrayAttribute
         }
       }
 
-      $tmp = array();
+      $tmp = [];
       $tmp['Name']  = $attr['FAIvariable'][0];
       $tmp['Type']  = $attr['FAIvariableType'][0];
       $tmp['Save']  = TRUE;
 
       if (isset($attr['FAIvariableContent'][0])) {
-        if (!in_array($attr['FAIvariableType'], array("multiselect"))) {
+        if (!in_array($attr['FAIvariableType'], ["multiselect"])) {
           $tmp['Value'] = $attr['FAIvariableContent'][0];
         } else {
-          $tmp['Value'] = array();
+          $tmp['Value'] = [];
           unset($attr['FAIvariableContent']['count']);
           foreach ($attr['FAIvariableContent'] as $attr) {
             $tmp['Value'][] = $attr;
@@ -368,76 +368,76 @@ class PackagesAttribute extends DialogOrderedArrayAttribute
 
 class faiPackage extends faiSimplePluginClass
 {
-  var $objectclasses = array('top','FAIclass','FAIpackageList','FAIrepository');
+  var $objectclasses = ['top','FAIclass','FAIpackageList','FAIrepository'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Package'),
       'plDescription' => _('FAI Package list'),
-      'plObjectType'  => array(
-        'faiPackage' => array(
+      'plObjectType'  => [
+        'faiPackage' => [
           'name'        => _('FAI Package'),
           'filter'      => 'objectClass=FAIpackageList',
           'aclCategory' => 'fai',
           'ou'          => get_ou('faiPackageRDN'),
           'icon'        => 'geticon.php?context=applications&icon=fai-packages&size=16'
-        )
-      ),
+        ]
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Properties'),
-        'attrs' => array(
-          new HostNameAttribute (
+        'attrs' => [
+          new HostNameAttribute(
             _('Class name'), _('Variables class name'),
             'cn', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Description'), _('Short description of the class'),
             'description', FALSE
           ),
-        )
-      ),
-      'repo' => array(
+        ]
+      ],
+      'repo' => [
         'name'  => _('Repository'),
-        'attrs' => array(
-          new DisplayLDAPAttribute (
+        'attrs' => [
+          new DisplayLDAPAttribute(
             _('Release'), _('Debian release concerned'),
             'FAIdebianRelease', FALSE
           ),
-          new DisplayLDAPArrayAttribute (
+          new DisplayLDAPArrayAttribute(
             _('Sections'), _('Sections concerned'),
             'FAIdebianSection', FALSE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Install method'), _('Install method to use for this package list'),
             'FAIinstallMethod', TRUE,
-            array('install', 'ninstall', 'remove',
+            ['install', 'ninstall', 'remove',
               'dselect-upgrade', 'taskinst', 'taskrm',
               'hold', 'clean', 'aptitude', 'aptitude-r',
-              'pending', 'dpkgc', 'yumi'),
+              'pending', 'dpkgc', 'yumi'],
             'aptitude'
           ),
-        )
-      ),
-      'packages' => array(
+        ]
+      ],
+      'packages' => [
         'name'  => _('Packages'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
-          new PackagesAttribute (
+        'class' => ['fullwidth'],
+        'attrs' => [
+          new PackagesAttribute(
             '', _('Packages in this class'),
             'FAIpackage', TRUE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -454,7 +454,7 @@ class faiPackage extends faiSimplePluginClass
     session::set('packageSelect_Release', $this->FAIdebianRelease);
   }
 
-  function updateRelease()
+  function updateRelease ()
   {
     /* Assemble release name */
     $tmp = preg_replace('/'.preg_quote(get_ou('faiBaseRDN'), '/').'.*$/i', '', $this->base);
@@ -470,7 +470,7 @@ class faiPackage extends faiSimplePluginClass
     }
   }
 
-  protected function shouldSave()
+  protected function shouldSave ()
   {
     /* We need ldap_save to always run */
     return TRUE;
@@ -484,10 +484,10 @@ class faiPackage extends faiSimplePluginClass
     return $errors;
   }
 
-  function getServerInfos()
+  function getServerInfos ()
   {
     $servs    = serviceRepository::getServers();
-    $ret      = array();
+    $ret      = [];
     foreach ($servs as $serv) {
       if (isset($ret[$serv['FAI_RELEASE']])) {
         $ret[$serv['FAI_RELEASE']] = array_merge($ret[$serv['FAI_RELEASE']], $serv['SECTIONS']);
diff --git a/fai/admin/fai/class_faiPackageConfiguration.inc b/fai/admin/fai/class_faiPackageConfiguration.inc
index b711f5ebd557ef81d8bc49aec6c9c37a49f3f3eb..2ad5410df271b803a060fa291dc97a9d0274ae8d 100644
--- a/fai/admin/fai/class_faiPackageConfiguration.inc
+++ b/fai/admin/fai/class_faiPackageConfiguration.inc
@@ -27,19 +27,19 @@ class faiPackageConfiguration extends simplePlugin
   protected $debconfAttributesTypes;
   protected $generatedDebconfAttributes;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('FAI package configuration'),
       'plDescription' => _('Configure debconf options of a package'),
-      'plObjectType'  => array('faiPackageConfiguration' => array(
+      'plObjectType'  => ['faiPackageConfiguration' => [
         'name'        => _('FAI package configuration'),
         'aclCategory' => 'fai',
         'icon'        => 'geticon.php?context=applications&icon=fai&size=16',
-      )),
+      ]],
 
-      'plProvidedAcls'  => array()
-    );
+      'plProvidedAcls'  => []
+    ];
   }
 
   /*! \brief  Configure a FAI package entry.
@@ -48,13 +48,13 @@ class faiPackageConfiguration extends simplePlugin
       @param  String  The release name (e.g. edge)
       @param  Array   The current package configuration.
    */
-  function __construct($dn, $packageName, $release, $values)
+  function __construct ($dn, $packageName, $release, $values)
   {
     $this->packageName  = $packageName;
 
     /* Read pkg debconf info from supportDaemon */
     $q = new supportDaemon();
-    $ret = $q->FAI_get_packages($release, array('package','template'), array($this->packageName), 0, 1, TRUE);
+    $ret = $q->FAI_get_packages($release, ['package','template'], [$this->packageName], 0, 1, TRUE);
     if ($q->is_error()) {
       msg_dialog::display(_('Infrastructure service'), msgPool::siError($q->get_error()), ERROR_DIALOG);
     }
@@ -73,23 +73,23 @@ class faiPackageConfiguration extends simplePlugin
     }
   }
 
-  protected function loadAttributesFromTemplate($tpl)
+  protected function loadAttributesFromTemplate ($tpl)
   {
-    $attributesInfo = array(
-      'main' => array(
+    $attributesInfo = [
+      'main' => [
         'name'  => sprintf(_('Debconf information for package "%s"'), $this->packageName),
-        'attrs' => array()
-      ),
-    );
+        'attrs' => []
+      ],
+    ];
 
     $lines                  = explode("\n", $tpl);
-    $infos                  = array();
+    $infos                  = [];
     $langcode               = session::global_get('lang').'.UTF-8';
     $in_description         = FALSE;
     $got_local_description  = FALSE;
 
-    $this->debconfAttributesTypes     = array();
-    $this->generatedDebconfAttributes = array();
+    $this->debconfAttributesTypes     = [];
+    $this->generatedDebconfAttributes = [];
 
     foreach ($lines as $line) {
       /* Reset description flag */
@@ -102,7 +102,7 @@ class faiPackageConfiguration extends simplePlugin
         if (!empty($infos)) {
           $this->insertDebconfAttribute($attributesInfo, $infos);
         }
-        $infos = array();
+        $infos = [];
         $infos['Name']     = trim(preg_replace('/^Template: /', '', $line));
         $infos['Default']  = '';
 
@@ -178,7 +178,7 @@ class faiPackageConfiguration extends simplePlugin
     return $attributesInfo;
   }
 
-  protected function insertDebconfAttribute(&$attributesInfo, $infos)
+  protected function insertDebconfAttribute (&$attributesInfo, $infos)
   {
     switch ($infos['Type']) {
       case 'boolean':
@@ -252,7 +252,7 @@ class faiPackageConfiguration extends simplePlugin
     $this->debconfAttributesTypes[$infos['Name']] = $infos['Type'];
   }
 
-  function execute()
+  function execute ()
   {
     $smarty = get_smarty();
     $acl    = $this->aclGetPermissions('FAIpartitions');
@@ -264,15 +264,15 @@ class faiPackageConfiguration extends simplePlugin
       '</p>';
   }
 
-  function save()
+  function save ()
   {
-    $tmp = array();
+    $tmp = [];
     foreach ($this->attributesAccess as $name => $attribute) {
-      $tmp[$this->packageName][$name] = array(
+      $tmp[$this->packageName][$name] = [
         'Name'  => $name,
         'Value' => $attribute->computeLdapValue(),
         'Type'  => $this->debconfAttributesTypes[$name],
-      );
+      ];
     }
 
     return $tmp;
diff --git a/fai/admin/fai/class_faiPartition.inc b/fai/admin/fai/class_faiPartition.inc
index 7dcd000851df7b43a6b378b61e31bb2f5c12a9fd..2a66f8942c69c936add0b2e229e34e1755cf9302 100644
--- a/fai/admin/fai/class_faiPartition.inc
+++ b/fai/admin/fai/class_faiPartition.inc
@@ -23,14 +23,14 @@ class FaiPartitionSizeAttribute extends CompositeAttribute
 {
   function __construct ($label, $description, $ldapName, $acl = "")
   {
-    parent::__construct (
+    parent::__construct(
       $description, $ldapName,
-      array(
+      [
         new SelectAttribute(
           '', _('Type of sizing - fixed, dynamic or all remaining space'),
           'FAIpartitionSizeType', TRUE,
-          array('fixed', 'dynamic', 'remaining'), '',
-          array(_('Fixed'), _('Dynamic'), _('Remaining space'))
+          ['fixed', 'dynamic', 'remaining'], '',
+          [_('Fixed'), _('Dynamic'), _('Remaining space')]
         ),
         new IntAttribute(
           '', '',
@@ -40,8 +40,8 @@ class FaiPartitionSizeAttribute extends CompositeAttribute
         new SelectAttribute(
           '', '',
           'FAIpartitionSizeStart_unit', TRUE,
-          array('KB','MB','GB','TB','PB','%'), 'MB',
-          array(_('KB'),_('MB'),_('GB'),_('TB'),_('PB'),'%')
+          ['KB','MB','GB','TB','PB','%'], 'MB',
+          [_('KB'),_('MB'),_('GB'),_('TB'),_('PB'),'%']
         ),
         new IntAttribute(
           '-', '',
@@ -51,10 +51,10 @@ class FaiPartitionSizeAttribute extends CompositeAttribute
         new SelectAttribute(
           '', '',
           'FAIpartitionSizeStop_unit', TRUE,
-          array('KB','MB','GB','TB','PB','%'), 'MB',
-          array(_('KB'),_('MB'),_('GB'),_('TB'),_('PB'),'%')
+          ['KB','MB','GB','TB','PB','%'], 'MB',
+          [_('KB'),_('MB'),_('GB'),_('TB'),_('PB'),'%']
         )
-      ),
+      ],
       '',
       '',
       $acl, $label
@@ -64,33 +64,33 @@ class FaiPartitionSizeAttribute extends CompositeAttribute
     $this->updateAttributes();
   }
 
-  function readValues($value)
+  function readValues ($value)
   {
     if (preg_match('/^([0-9]{1,})(KB|MB|GB|TB|PB|%)$/', $value, $m)) {
       // Fixed
-      return array(
+      return [
         'fixed',
         $m[1],$m[2],
         0,'',
-      );
+      ];
     } elseif (preg_match('/^([0-9]{1,})(KB|MB|GB|TB|PB|%)-([0-9]{1,})(KB|MB|GB|TB|PB|%)$/', $value)) {
       // Dynamic range
-      return array(
+      return [
         'dynamic',
         $m[1],$m[2],
         $m[3],$m[4],
-      );
+      ];
     } elseif (preg_match('/^0?\-$/', $value)) {
       // Dynamic range
-      return array(
+      return [
         'remaining',
         0,'',
         0,'',
-      );
+      ];
     }
   }
 
-  protected function updateAttributes()
+  protected function updateAttributes ()
   {
     switch ($this->attributes[0]->getValue()) {
       case 'remaining':
@@ -130,14 +130,14 @@ class FaiPartitionSizeAttribute extends CompositeAttribute
     }
     unset($attribute);
     if ($this->attributes[0]->getValue() == 'dynamic') {
-      $mp = array(
+      $mp = [
         '%'  => 1,
         'KB' => pow(1024, 0),
         'MB' => pow(1024, 1),
         'GB' => pow(1024, 2),
         'TB' => pow(1024, 3),
         'PB' => pow(1024, 4)
-      );
+      ];
       $res1 = $this->attributes[1]->getValue() * $mp[$this->attributes[2]->getValue()];
       $res2 = $this->attributes[3]->getValue() * $mp[$this->attributes[4]->getValue()];
       if ($res1 > $res2) {
@@ -146,7 +146,7 @@ class FaiPartitionSizeAttribute extends CompositeAttribute
     }
   }
 
-  function applyPostValue()
+  function applyPostValue ()
   {
     parent::applyPostValue();
     $this->updateAttributes();
@@ -164,7 +164,7 @@ class FaiPartitionSizeAttribute extends CompositeAttribute
     $this->updateAttributes();
   }
 
-  function writeValues($values)
+  function writeValues ($values)
   {
     if ($values[0] == 'remaining') {
       return '0-';
@@ -187,7 +187,7 @@ class FaiMountPointAttribute extends StringAttribute
     );
   }
 
-  function setPostValue($value)
+  function setPostValue ($value)
   {
     if ($value == '') {
       $value = '-';
@@ -198,69 +198,69 @@ class FaiMountPointAttribute extends StringAttribute
 
 class FaiRaidDevices extends OrderedArrayAttribute
 {
-  protected function getAttributeArrayValue($key, $value)
+  protected function getAttributeArrayValue ($key, $value)
   {
     $value = parent::getAttributeArrayValue($key, $value);
-    return array(
+    return [
       $value[0],
       ($value[1] ? 'spare' : ''),
       ($value[2] ? 'missing' : '')
-    );
+    ];
   }
 }
 
 class faiPartition extends simplePlugin
 {
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Partition entry'),
       'plDescription'   => _('FAI partition entry'),
-      'plCategory'      => array('fai'),
+      'plCategory'      => ['fai'],
       /* No ACL, we use the one for FAIpartitions */
-      'plProvidedAcls'  => array()
-    );
+      'plProvidedAcls'  => []
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Partition'),
-        'attrs' => array(
-          new HiddenAttribute ('FAIdiskType'),
-          new HiddenAttribute ('FAIpartitionNr', FALSE, 'undefined'),
-          new SelectAttribute (
+        'attrs' => [
+          new HiddenAttribute('FAIdiskType'),
+          new HiddenAttribute('FAIpartitionNr', FALSE, 'undefined'),
+          new SelectAttribute(
             _('Type'), _('Partition type'),
             'FAIpartitionType', TRUE,
-            array('primary', 'logical'), '',
-            array(_('Primary'), _('Logical'))
+            ['primary', 'logical'], '',
+            [_('Primary'), _('Logical')]
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Name'), _('Partition name'),
             'cn', TRUE,
             '', 'FAIpartitions',
             '/[a-z0-9_-]/i'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Description'), _('Short description'),
             'description', FALSE
           ),
-          new FaiPartitionSizeAttribute (
+          new FaiPartitionSizeAttribute(
             _('Size'), _('Size of this partition'),
             'FAIpartitionSize', FALSE
           ),
-        )
-      ),
-      'flags' => array(
+        ]
+      ],
+      'flags' => [
         'name'  => _('Flags'),
-        'attrs' => array(
+        'attrs' => [
           new CommaListAttribute(
             'raidDevices',
             new FaiRaidDevices(
               new CompositeAttribute(
                 '', 'raidDevices_composite',
-                array(
+                [
                   new SelectAttribute(
                     '', _('Combined physical partitions in this RAID'),
                     'raidDevices_select', FALSE
@@ -277,14 +277,14 @@ class faiPartition extends simplePlugin
                     FALSE, '',
                     ':missing', ''
                   )
-                ),
+                ],
                 '/^([^:]+)(:spare|)(:missing|)$/',
                 '%s%s%s',
                 '',
                 ''
               ),
               FALSE,
-              array(),
+              [],
               TRUE
             )
           ),
@@ -296,64 +296,64 @@ class faiPartition extends simplePlugin
             _('Password'), _('Password to use for encryption. Leave empty to use a encryption key file instead.'),
             'cryptsetupPassword', FALSE
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Resize'), _('Resize existing partition'),
             'resize', FALSE
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Bootable'), _('Wether or not this partition can be booted'),
             'bootable', FALSE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Preserve'), _('Does the partition need to be preserved'),
             'preserve', FALSE,
-            array('','always','reinstall'), '',
-            array(_('Never'),_('Always'),_('Reinstall'))
+            ['','always','reinstall'], '',
+            [_('Never'),_('Always'),_('Reinstall')]
           ),
-        )
-      ),
-      'fs' => array(
+        ]
+      ],
+      'fs' => [
         'name'  => _('Filesystem'),
-        'attrs' => array(
-          new SelectAttribute (
+        'attrs' => [
+          new SelectAttribute(
             _('Filesystem'), _('The filesystem this partition should be formatted with'),
             'FAIfsType', TRUE,
-            array('swap','vfat','ext2','ext3','ext4','reiserfs','xfs','btrfs','-'), 'ext4',
-            array(_('swap'),_('fat32'),_('ext2'),_('ext3'),_('ext4'),_('reiser fs'),_('xfs'),_('btrfs'),_('LVM/RAID'))
+            ['swap','vfat','ext2','ext3','ext4','reiserfs','xfs','btrfs','-'], 'ext4',
+            [_('swap'),_('fat32'),_('ext2'),_('ext3'),_('ext4'),_('reiser fs'),_('xfs'),_('btrfs'),_('LVM/RAID')]
           ),
-          new FaiMountPointAttribute (
+          new FaiMountPointAttribute(
             _('Mount point'), _('Mount point for this partition'),
             'FAImountPoint', TRUE
           ),
-        )
-      ),
-      'options' => array(
+        ]
+      ],
+      'options' => [
         'name'  => _('Options'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Mount options'), _('Filesystem mount options'),
             'FAImountOptions', FALSE,
             'defaults'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Create options'), _('Filesystem create options'),
             'FAIfsCreateOptions', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Tune options'), _('Filesystem tune options'),
             'FAIfsTuneOptions', FALSE
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
-  function __construct($object, $parent, $type)
+  function __construct ($object, $parent, $type)
   {
     parent::__construct(NULL, NULL, $parent);
 
     $this->attributesAccess['FAIfsType']->setManagedAttributes(
-      array('disable' => array ('swap' => array ('FAImountPoint')))
+      ['disable' => ['swap' => ['FAImountPoint']]]
     );
 
     $this->FAIdiskType  = $type;
@@ -362,7 +362,7 @@ class faiPartition extends simplePlugin
       /* Check if we should be able to add primary partitions */
       $disablePrimary = FALSE;
       if (!$object || ($object['FAIpartitionType'] == 'logical')) {
-        $types = array('logical' => array(), 'primary' => array());
+        $types = ['logical' => [], 'primary' => []];
         foreach ($this->parent->partitions as $part) {
           $types[$part['FAIpartitionType']][$part['FAIpartitionNr']] = 1;
         }
@@ -373,28 +373,28 @@ class faiPartition extends simplePlugin
         }
       }
       if ($disablePrimary) {
-        $types = array('logical' => _('Logical'));
+        $types = ['logical' => _('Logical')];
       } else {
-        $types  = array(
+        $types  = [
           'primary' => _('Primary'),
           'logical' => _('Logical')
-        );
+        ];
       }
     } elseif ($this->FAIdiskType == 'raid') {
-      $types  = array(
+      $types  = [
         'raid0' => _('RAID 0'),
         'raid1' => _('RAID 1'),
         'raid5' => _('RAID 5'),
         'raid6' => _('RAID 6')
-      );
+      ];
     } elseif ($this->FAIdiskType == 'cryptsetup') {
-      $types  = array(
+      $types  = [
         'luks'  => _('LUKS'),
         'swap'  => _('Swap'),
         'tmp'   => _('tmp'),
-      );
+      ];
     } else {
-      $types = array();
+      $types = [];
     }
     $this->attributesAccess['FAIpartitionType']->setChoices(array_keys($types), array_values($types));
     if (empty($types)) {
@@ -462,7 +462,7 @@ class faiPartition extends simplePlugin
     }
   }
 
-  protected function loadAttributes()
+  protected function loadAttributes ()
   {
     foreach ($this->attributesAccess as &$attribute) {
       $attribute->setAcl('FAIpartitions');
@@ -471,7 +471,7 @@ class faiPartition extends simplePlugin
     parent::loadAttributes();
   }
 
-  function execute()
+  function execute ()
   {
     $smarty = get_smarty();
     $acl    = $this->aclGetPermissions('FAIpartitions');
@@ -489,7 +489,7 @@ class faiPartition extends simplePlugin
     }
   }
 
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
     if ($this->FAIfsType == 'swap') {
@@ -497,7 +497,7 @@ class faiPartition extends simplePlugin
     }
   }
 
-  function check()
+  function check ()
   {
     $messages = parent::check();
 
@@ -513,9 +513,9 @@ class faiPartition extends simplePlugin
     return $messages;
   }
 
-  function save()
+  function save ()
   {
-    $ret = array();
+    $ret = [];
     foreach ($this->attributes as $attr) {
       $ret[$attr] = $this->$attr;
     }
@@ -538,9 +538,9 @@ class faiPartition extends simplePlugin
   /* Returns a list of all partitions that are useable
    *  for raid arrays.
    */
-  function getPartitionList()
+  function getPartitionList ()
   {
-    $may = $used = array();
+    $may = $used = [];
     foreach ($this->parent->parent->disks as $disk) {
       // Skip ourselves
       if ($disk['cn'] == $this->parent->cn) {
@@ -568,7 +568,7 @@ class faiPartition extends simplePlugin
     }
 
     // Check which of the available disks are unused.
-    $ret = array();
+    $ret = [];
     foreach ($may as $val) {
       if (!in_array($val, $used)) {
         $ret[$val] = $val;
diff --git a/fai/admin/fai/class_faiPartitionTable.inc b/fai/admin/fai/class_faiPartitionTable.inc
index e9608974e47d300d4af3f3c126d22b78a3195da2..0ed74db4e26eeae7b70c8b7b0965939fc42bfc4d 100644
--- a/fai/admin/fai/class_faiPartitionTable.inc
+++ b/fai/admin/fai/class_faiPartitionTable.inc
@@ -28,7 +28,7 @@ class DiskEntryDialog extends GenericDialog
 
   protected $initialDialogValue = NULL;
 
-  function __construct($simplePlugin, $attribute, $disk = array(), $diskType = 'disk')
+  function __construct ($simplePlugin, $attribute, $disk = [], $diskType = 'disk')
   {
     $this->attribute = $attribute;
     if (isset($disk['FAIdiskType'])) {
@@ -78,7 +78,7 @@ class DiskEntryDialog extends GenericDialog
 class PartitionTableAttribute extends DialogOrderedArrayAttribute
 {
   protected $dialogClass = 'DiskEntryDialog';
-  protected $partitionAttributes  = array(
+  protected $partitionAttributes  = [
     'cn','description',
     'FAIpartitionNr',     'FAIpartitionSize',
     'FAIpartitionType',   'FAIpartitionFlags',
@@ -86,16 +86,16 @@ class PartitionTableAttribute extends DialogOrderedArrayAttribute
     'FAIfsType',
     'FAIfsCreateOptions', 'FAIfsTuneOptions',
     'FAIlvmDevice'
-  );
+  ];
 
   protected $diskFilter = '(&(objectClass=FAIclass)(objectClass=FAIpartitionDisk))';
   protected $partFilter = '(&(objectClass=FAIclass)(objectClass=FAIpartitionEntry))';
 
   public $disks;
 
-  function __construct ($label, $description, $ldapName, $values = array(), $acl = '')
+  function __construct ($label, $description, $ldapName, $values = [], $acl = '')
   {
-    parent::__construct ($label, $description, $ldapName, FALSE, $values, $acl);
+    parent::__construct($label, $description, $ldapName, FALSE, $values, $acl);
     $this->disks = &$this->value;
   }
 
@@ -105,14 +105,14 @@ class PartitionTableAttribute extends DialogOrderedArrayAttribute
     $buttons = $this->renderInputField(
       'submit',
       'add'.$id.'_dialog',
-      array('value' => _('Add disk'))
+      ['value' => _('Add disk')]
     );
 
     if (!isset($this->value['raid'])) {
       $buttons .= $this->renderInputField(
         'submit',
         'add'.$id.'_dialog_raid',
-        array('value' => _('Add RAID'))
+        ['value' => _('Add RAID')]
       );
     }
 
@@ -120,7 +120,7 @@ class PartitionTableAttribute extends DialogOrderedArrayAttribute
       $buttons .= $this->renderInputField(
         'submit',
         'add'.$id.'_dialog_lvm',
-        array('value' => _('Add LVM'))
+        ['value' => _('Add LVM')]
       );
     }
 
@@ -128,7 +128,7 @@ class PartitionTableAttribute extends DialogOrderedArrayAttribute
       $buttons .= $this->renderInputField(
         'submit',
         'add'.$id.'_dialog_cryptsetup',
-        array('value' => _('Add cryptsetup'))
+        ['value' => _('Add cryptsetup')]
       );
     }
 
@@ -142,13 +142,13 @@ class PartitionTableAttribute extends DialogOrderedArrayAttribute
       parent::loadPostValue();
       parent::applyPostValue();
       if (isset($_POST['add'.$id.'_dialog'])) {
-        $this->plugin->openDialog(new $this->dialogClass($this->plugin, $this, array(), 'disk'));
+        $this->plugin->openDialog(new $this->dialogClass($this->plugin, $this, [], 'disk'));
       } elseif (isset($_POST['add'.$id.'_dialog_raid'])) {
-        $this->plugin->openDialog(new $this->dialogClass($this->plugin, $this, array(), 'raid'));
+        $this->plugin->openDialog(new $this->dialogClass($this->plugin, $this, [], 'raid'));
       } elseif (isset($_POST['add'.$id.'_dialog_lvm'])) {
-        $this->plugin->openDialog(new $this->dialogClass($this->plugin, $this, array(), 'lvm'));
+        $this->plugin->openDialog(new $this->dialogClass($this->plugin, $this, [], 'lvm'));
       } elseif (isset($_POST['add'.$id.'_dialog_cryptsetup'])) {
-        $this->plugin->openDialog(new $this->dialogClass($this->plugin, $this, array(), 'cryptsetup'));
+        $this->plugin->openDialog(new $this->dialogClass($this->plugin, $this, [], 'cryptsetup'));
       }
     }
   }
@@ -160,14 +160,14 @@ class PartitionTableAttribute extends DialogOrderedArrayAttribute
       /* Fetch disks */
       $ldap = $config->get_ldap_link();
       $ldap->cd($attrs['dn']);
-      $ldap->search($this->diskFilter, array('*'), 'one');
-      $this->value = array();
+      $ldap->search($this->diskFilter, ['*'], 'one');
+      $this->value = [];
       while ($subattrs = $ldap->fetch()) {
-        $diskInfos = array(
+        $diskInfos = [
           'description' => '',
           'FAIdiskType' => 'disk'
-        );
-        foreach (array('cn', 'description','FAIdiskType') as $attr) {
+        ];
+        foreach (['cn', 'description','FAIdiskType'] as $attr) {
           if (isset($subattrs[$attr][0])) {
             $diskInfos[$attr] = $subattrs[$attr][0];
           }
@@ -177,7 +177,7 @@ class PartitionTableAttribute extends DialogOrderedArrayAttribute
         }
 
         // Get disk options, without 'count' index.
-        $diskInfos['FAIdiskOption'] = array();
+        $diskInfos['FAIdiskOption'] = [];
         if (isset($subattrs['FAIdiskOption'])) {
           for ($i = 0; $i < $subattrs['FAIdiskOption']['count']; $i++) {
             $diskInfos['FAIdiskOption'][] = $subattrs['FAIdiskOption'][$i];
@@ -194,17 +194,17 @@ class PartitionTableAttribute extends DialogOrderedArrayAttribute
 
         $diskInfos['dn']                              = $subattrs['dn'];
         $this->value[$diskInfos['cn']]                = $diskInfos;
-        $this->value[$diskInfos['cn']]['partitions']  = array();
+        $this->value[$diskInfos['cn']]['partitions']  = [];
       }
       /* Fetch partitions */
       foreach ($this->value as $name => $disk) {
         $ldap->cd($disk['dn']);
-        $ldap->search($this->partFilter, array('*'), 'one');
+        $ldap->search($this->partFilter, ['*'], 'one');
         while ($obj = $ldap->fetch()) {
-          $partitionInfos = array(
+          $partitionInfos = [
             'description'       => '',
             'FAIpartitionSize'  => '',
-          );
+          ];
           foreach ($this->partitionAttributes as $attr) {
             if (isset($obj[$attr][0])) {
               $partitionInfos[$attr] = $obj[$attr][0];
@@ -228,8 +228,8 @@ class PartitionTableAttribute extends DialogOrderedArrayAttribute
   {
     /* First delete all old nodes */
     $ldap->cd($this->plugin->dn);
-    $ldap->search($this->diskFilter, array('dn'), 'one');
-    $delete = array();
+    $ldap->search($this->diskFilter, ['dn'], 'one');
+    $delete = [];
     while ($attrs = $ldap->fetch()) {
       $delete[] = $attrs['dn'];
     }
@@ -242,14 +242,14 @@ class PartitionTableAttribute extends DialogOrderedArrayAttribute
     /* Then add our values */
     foreach ($this->value as $val) {
       $attrs = $val;
-      $attrs['objectClass'] = array('top','FAIClass','FAIpartitionDisk');
+      $attrs['objectClass'] = ['top','FAIClass','FAIpartitionDisk'];
       unset($attrs['partitions']);
       $disk_dn = $this->compute_disk_dn($val);
       $this->ldap_add($ldap, $disk_dn, $attrs);
       /* disk added, now add partition */
       foreach ($val['partitions'] as $part) {
         $attrs = $part;
-        $attrs['objectClass'] = array('top','FAIClass','FAIpartitionEntry');
+        $attrs['objectClass'] = ['top','FAIClass','FAIpartitionEntry'];
         $dn = $this->compute_part_dn($part, $disk_dn);
         $this->ldap_add($ldap, $dn, $attrs);
       }
@@ -281,14 +281,14 @@ class PartitionTableAttribute extends DialogOrderedArrayAttribute
     }
   }
 
-  protected function getAttributeArrayValue($key, $value)
+  protected function getAttributeArrayValue ($key, $value)
   {
-    return array(
+    return [
       $value['FAIdiskType'],
       $value['cn'],
       $value['description'],
       count($value['partitions']),
-    );
+    ];
   }
 
   function diskConfigured ($disk)
@@ -303,56 +303,56 @@ class PartitionTableAttribute extends DialogOrderedArrayAttribute
 
 class faiPartitionTable extends faiSimplePluginClass
 {
-  var $objectclasses    = array('top','FAIclass','FAIpartitionTable');
+  var $objectclasses    = ['top','FAIclass','FAIpartitionTable'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Partition table'),
       'plDescription' => _('FAI partition table'),
-      'plObjectType'  => array(
-        'faiPartitionTable' => array(
+      'plObjectType'  => [
+        'faiPartitionTable' => [
           'name'        => _('FAI partition table'),
           'filter'      => 'objectClass=FAIpartitionTable',
           'aclCategory' => 'fai',
           'ou'          => get_ou('faiPartitionTableRDN'),
           'icon'        => 'geticon.php?context=applications&icon=fai-partitiontable&size=16'
-        )
-      ),
+        ]
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Properties'),
-        'attrs' => array(
-          new HostNameAttribute (
+        'attrs' => [
+          new HostNameAttribute(
             _('Class name'), _('Partition table class name'),
             'cn', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Description'), _('Short description of the class'),
             'description', FALSE
           ),
-        )
-      ),
-      'table' => array(
+        ]
+      ],
+      'table' => [
         'name'  => _('Discs'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
-          new HiddenAttribute (
+        'class' => ['fullwidth'],
+        'attrs' => [
+          new HiddenAttribute(
             'FAIpartitionMethod', FALSE, 'setup-storage'
           ),
-          new PartitionTableAttribute (
+          new PartitionTableAttribute(
             '', _('Partitions in this class'), 'FAIpartitions'
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -362,7 +362,7 @@ class faiPartitionTable extends faiSimplePluginClass
     $this->attributesAccess['cn']->setUnique(TRUE);
   }
 
-  protected function shouldSave()
+  protected function shouldSave ()
   {
     /* We need ldap_save to always run */
     return TRUE;
@@ -376,9 +376,9 @@ class faiPartitionTable extends faiSimplePluginClass
     return $errors;
   }
 
-  function getUsedDiskNames()
+  function getUsedDiskNames ()
   {
-    $ret = array();
+    $ret = [];
     foreach ($this->FAIpartitions as $disk) {
       $ret[] = $disk['cn'];
     }
diff --git a/fai/admin/fai/class_faiProfile.inc b/fai/admin/fai/class_faiProfile.inc
index d870789b1ef0eae6ecafeba6090cd9cceda5bf85..7e6cac4a138bfcf6e7a465c429ee399f6e91332b 100644
--- a/fai/admin/fai/class_faiProfile.inc
+++ b/fai/admin/fai/class_faiProfile.inc
@@ -22,37 +22,37 @@ class faiProfile extends faiSimplePluginClass
 {
   var $mainTab = TRUE;
 
-  var $objectclasses    = array('top','FAIclass','FAIprofile');
+  var $objectclasses    = ['top','FAIclass','FAIprofile'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Profile'),
       'plDescription' => _('FAI profile'),
-      'plObjectType'  => array(
-        'faiProfile' => array(
+      'plObjectType'  => [
+        'faiProfile' => [
           'name'        => _('FAI Profile'),
           'filter'      => 'objectClass=FAIprofile',
           'aclCategory' => 'fai',
           'ou'          => get_ou('faiProfileRDN'),
           'icon'        => 'geticon.php?context=applications&icon=fai-profile&size=16'
-        )
-      ),
+        ]
+      ],
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Properties'),
-        'attrs' => array(
-          new HostNameAttribute (
+        'attrs' => [
+          new HostNameAttribute(
             _('Class name'), _('Partition table class name'),
             'cn', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Description'), _('Short description of the class'),
             'description', FALSE
           ),
@@ -66,9 +66,9 @@ class faiProfile extends faiSimplePluginClass
             ),
             ' '
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -78,8 +78,8 @@ class faiProfile extends faiSimplePluginClass
     $this->attributesAccess['cn']->setUnique(TRUE);
 
     /* Build filter */
-    $types    = array('faiVariable', 'faiHook', 'faiScript', 'faiPackage', 'faiPartitionTable', 'faiTemplate');
-    $choices  = array();
+    $types    = ['faiVariable', 'faiHook', 'faiScript', 'faiPackage', 'faiPartitionTable', 'faiTemplate'];
+    $choices  = [];
     foreach ($types as $type) {
       $choices = array_unique(array_merge($choices, objects::ls($type, NULL, $this->base)));
     }
diff --git a/fai/admin/fai/class_faiScript.inc b/fai/admin/fai/class_faiScript.inc
index 0668adcc9c6ddf5ab99581c0888fe81feb73cff4..240e9207b5191f84dd52a230755794dba3cab78d 100644
--- a/fai/admin/fai/class_faiScript.inc
+++ b/fai/admin/fai/class_faiScript.inc
@@ -22,77 +22,77 @@ class faiScript extends faiSimplePluginClass
 {
   var $mainTab = TRUE;
 
-  var $objectclasses = array('top','FAIclass','FAIscript');
+  var $objectclasses = ['top','FAIclass','FAIscript'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Script'),
       'plDescription' => _('FAI script'),
-      'plObjectType'  => array(
-        'faiScript' => array(
+      'plObjectType'  => [
+        'faiScript' => [
           'name'        => _('FAI script'),
           'filter'      => 'objectClass=FAIscript',
           'aclCategory' => 'fai',
           'ou'          => get_ou('faiScriptRDN'),
           'icon'        => 'geticon.php?context=applications&icon=fai-script&size=16'
-        )
-      ),
+        ]
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Properties'),
-        'attrs' => array(
-          new HostNameAttribute (
+        'attrs' => [
+          new HostNameAttribute(
             _('Class name'), _('Variables class name'),
             'cn', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Description'), _('Short description of the class'),
             'description', FALSE
           ),
-        )
-      ),
-      'vars' => array(
+        ]
+      ],
+      'vars' => [
         'name'  => _('Scripts'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
-          new SubNodesAttribute (
+        'class' => ['fullwidth'],
+        'attrs' => [
+          new SubNodesAttribute(
             '', _('Variables in this class'),
-            'scripts', array('FAIscriptEntry','FAIclass','top'),
-            array(
-              new StringAttribute (
+            'scripts', ['FAIscriptEntry','FAIclass','top'],
+            [
+              new StringAttribute(
                 _('Name'), _('The name of the variable'),
                 'cn', TRUE
               ),
-              new StringAttribute (
+              new StringAttribute(
                 _('Description'), _('A short description of the variable'),
                 'description', FALSE
               ),
-              new IntAttribute (
+              new IntAttribute(
                 _('Priority'), _('Priority of this script (smaller is done first)'),
                 'FAIpriority', TRUE,
                 0, 99, 1
               ),
-              new FileTextAreaAttribute (
+              new FileTextAreaAttribute(
                 _('Script'), _('The script itself'),
                 'FAIscript', TRUE,
                 '.sh'
               ),
-            ),
+            ],
             FALSE, /* no order */
-            array(),
+            [],
             TRUE /* edit enabled */
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -103,7 +103,7 @@ class faiScript extends faiSimplePluginClass
     $this->attributesAccess['scripts']->setLinearRendering(FALSE);
   }
 
-  protected function shouldSave()
+  protected function shouldSave ()
   {
     /* We need ldap_save to always run */
     return TRUE;
diff --git a/fai/admin/fai/class_faiSimplePluginClass.inc b/fai/admin/fai/class_faiSimplePluginClass.inc
index 388f0fb5a19fcc3a7bce68978fd21a5290fbb5de..4822b5c14b731bca48eed5dc70f026920fb98ec5 100644
--- a/fai/admin/fai/class_faiSimplePluginClass.inc
+++ b/fai/admin/fai/class_faiSimplePluginClass.inc
@@ -36,7 +36,7 @@ class faiSimplePluginClass extends simplePlugin
   }
 
   /* Check supplied data */
-  function check()
+  function check ()
   {
     global $config;
     /* Call common method to give check the hook */
@@ -55,7 +55,7 @@ class faiSimplePluginClass extends simplePlugin
     return $message;
   }
 
-  function compute_dn()
+  function compute_dn ()
   {
     return 'cn='.ldap_escape($this->cn, '', LDAP_ESCAPE_DN).','.get_ou(get_class($this).'RDN').$this->base;
   }
diff --git a/fai/admin/fai/class_faiTemplate.inc b/fai/admin/fai/class_faiTemplate.inc
index f0656656849584aef32ad4eb61ec70012043abcf..ba8a5d42fa1e6a6f2d0603c2b9ef45c718802624 100644
--- a/fai/admin/fai/class_faiTemplate.inc
+++ b/fai/admin/fai/class_faiTemplate.inc
@@ -28,16 +28,16 @@ class TemplateFileDialog extends GenericSimplePluginDialog
 class FAITemplateFilesAttribute extends DialogOrderedArrayAttribute
 {
   protected $dialogClass = 'TemplateFileDialog';
-  protected $templateAttributes = array(
+  protected $templateAttributes = [
     'cn','description',
     'FAItemplatePath','FAItemplateFile','FAIowner','FAImode'
-  );
+  ];
 
   protected $templateFilter = '(&(objectClass=FAIclass)(objectClass=FAItemplateEntry))';
 
-  function __construct ($label, $description, $ldapName, $values = array(), $acl = '')
+  function __construct ($label, $description, $ldapName, $values = [], $acl = '')
   {
-    parent::__construct ($label, $description, $ldapName, FALSE, $values, $acl);
+    parent::__construct($label, $description, $ldapName, FALSE, $values, $acl);
   }
 
   protected function loadAttrValue ($attrs)
@@ -46,13 +46,13 @@ class FAITemplateFilesAttribute extends DialogOrderedArrayAttribute
     if (isset($attrs['dn'])) {
       $ldap = $config->get_ldap_link();
       $ldap->cd($attrs['dn']);
-      $ldap->search($this->templateFilter, array('*'), 'one');
-      $this->value = array();
+      $ldap->search($this->templateFilter, ['*'], 'one');
+      $this->value = [];
       while ($subattrs = $ldap->fetch()) {
         $attrsWrapper = new stdClass();
         $attrsWrapper->attrs = $subattrs;
         $dialog = new faiTemplateEntry($subattrs['dn'], $attrsWrapper);
-        $value = array();
+        $value = [];
         foreach ($this->templateAttributes as $attribute) {
           $value[$attribute] = $dialog->$attribute;
         }
@@ -73,8 +73,8 @@ class FAITemplateFilesAttribute extends DialogOrderedArrayAttribute
   {
     /* First delete all old nodes */
     $ldap->cd($this->plugin->dn);
-    $ldap->search($this->templateFilter, array('dn'), 'one');
-    $delete = array();
+    $ldap->search($this->templateFilter, ['dn'], 'one');
+    $delete = [];
     while ($attrs = $ldap->fetch()) {
       $delete[] = $attrs['dn'];
     }
@@ -84,7 +84,7 @@ class FAITemplateFilesAttribute extends DialogOrderedArrayAttribute
     /* Then add our values */
     foreach ($this->value as $val) {
       $attrs = $val;
-      $attrs['objectClass'] = array('top','FAIClass','FAItemplateEntry');
+      $attrs['objectClass'] = ['top','FAIClass','FAItemplateEntry'];
       $sub_dn = $this->compute_sub_dn($val);
       $this->ldap_add($ldap, $sub_dn, $attrs);
     }
@@ -110,13 +110,13 @@ class FAITemplateFilesAttribute extends DialogOrderedArrayAttribute
     }
   }
 
-  protected function getAttributeArrayValue($key, $value)
+  protected function getAttributeArrayValue ($key, $value)
   {
-    return array(
+    return [
       $value['cn'],
       $value['description'],
       humanReadableSize(strlen($value['FAItemplateFile'])),
-    );
+    ];
   }
 
   function check ()
@@ -125,7 +125,7 @@ class FAITemplateFilesAttribute extends DialogOrderedArrayAttribute
     if (!empty($error)) {
       return $error;
     } else {
-      $used_cn = array();
+      $used_cn = [];
       foreach ($this->value as $value) {
         if (isset($used_cn[$value['cn']])) {
           return sprintf(_('There are several files with the same path: %s'), $value['cn']);
@@ -138,56 +138,56 @@ class FAITemplateFilesAttribute extends DialogOrderedArrayAttribute
 
 class faiTemplate extends faiSimplePluginClass
 {
-  var $objectclasses    = array('top','FAIclass','FAItemplate');
+  var $objectclasses    = ['top','FAIclass','FAItemplate'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Template'),
       'plDescription' => _('FAI template'),
-      'plObjectType'  => array(
-        'faiTemplate' => array(
+      'plObjectType'  => [
+        'faiTemplate' => [
           'name'        => _('FAI template'),
           'filter'      => 'objectClass=FAItemplate',
           'aclCategory' => 'fai',
           'ou'          => get_ou('faiTemplateRDN'),
           'icon'        => 'geticon.php?context=applications&icon=fai-template&size=16'
-        )
-      ),
+        ]
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Properties'),
-        'attrs' => array(
-          new HostNameAttribute (
+        'attrs' => [
+          new HostNameAttribute(
             _('Class name'), _('Template class name'),
             'cn', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Description'), _('Short description of the class'),
             'description', FALSE
           ),
-        )
-      ),
-      'table' => array(
+        ]
+      ],
+      'table' => [
         'name'  => _('Template files'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
-          new FAITemplateFilesAttribute (
+        'class' => ['fullwidth'],
+        'attrs' => [
+          new FAITemplateFilesAttribute(
             '', _('Template files in this class'), 'templateFiles'
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
-  protected function shouldSave()
+  protected function shouldSave ()
   {
     /* We need ldap_save to always run */
     return TRUE;
diff --git a/fai/admin/fai/class_faiTemplateEntry.inc b/fai/admin/fai/class_faiTemplateEntry.inc
index 1daeb9cf105fb9a96b0dc9b128930c9d83c80dfa..e94e4d05ba5540328eda837377a0df3ad6f1bbf3 100644
--- a/fai/admin/fai/class_faiTemplateEntry.inc
+++ b/fai/admin/fai/class_faiTemplateEntry.inc
@@ -23,7 +23,7 @@ class AccessRightsAttribute extends CompositeAttribute
 {
   function __construct ($label, $description, $ldapName, $acl = "")
   {
-    $attributes = array(
+    $attributes = [
       'u4' => new BooleanAttribute('', '', 'ur', FALSE, TRUE),
       'u2' => new BooleanAttribute('', '', 'uw', FALSE, TRUE),
       'u1' => new BooleanAttribute('', '', 'ue', FALSE),
@@ -36,12 +36,12 @@ class AccessRightsAttribute extends CompositeAttribute
       'o2' => new BooleanAttribute('', '', 'ow', FALSE),
       'o1' => new BooleanAttribute('', '', 'oe', FALSE),
       's1' => new BooleanAttribute('', '', 'os', FALSE),
-    );
-    parent::__construct ($description, $ldapName, $attributes, FALSE, FALSE, $acl, $label);
+    ];
+    parent::__construct($description, $ldapName, $attributes, FALSE, FALSE, $acl, $label);
     $this->setLinearRendering(TRUE);
   }
 
-  function renderFormInput()
+  function renderFormInput ()
   {
     foreach ($this->attributes as &$attribute) {
       $attribute->setDisabled($this->disabled);
@@ -90,11 +90,11 @@ class AccessRightsAttribute extends CompositeAttribute
     return $display;
   }
 
-  function readValues($value)
+  function readValues ($value)
   {
     $tmode  = "$value ";
-    $m      = array();
-    foreach (array('s', 'u', 'g', 'o') as $type) {
+    $m      = [];
+    foreach (['s', 'u', 'g', 'o'] as $type) {
       $current  = substr($tmode, 0, 1);
       $tmode    = preg_replace('/^./', '', $tmode);
       $nr       = 1;
@@ -103,17 +103,17 @@ class AccessRightsAttribute extends CompositeAttribute
         $nr += $nr;
       }
     }
-    $values = array();
+    $values = [];
     foreach (array_keys($this->attributes) as $name) {
       $values[] = $m[$name];
     }
     return $values;
   }
 
-  function writeValues($values)
+  function writeValues ($values)
   {
     $tmode  = '';
-    foreach (array('s', 'u', 'g', 'o') as $type) {
+    foreach (['s', 'u', 'g', 'o'] as $type) {
       $nr   = 1;
       $dest = 0;
       while ($nr < 5) {
@@ -130,62 +130,62 @@ class AccessRightsAttribute extends CompositeAttribute
 
 class faiTemplateEntry extends simplePlugin
 {
-  var $objectclasses  = array('top', 'FAIclass', 'FAItemplateEntry');
+  var $objectclasses  = ['top', 'FAIclass', 'FAItemplateEntry'];
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Properties'),
-        'attrs' => array(
-          new PathAttribute (
+        'attrs' => [
+          new PathAttribute(
             _('File path'), _('Complete absolute template file path and name'),
             'cn', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Description'), _('Short description of the file'),
             'description', FALSE
           ),
-          new HiddenAttribute (
+          new HiddenAttribute(
             'FAItemplatePath', TRUE
           ),
-        )
-      ),
-      'template' => array(
+        ]
+      ],
+      'template' => [
         'name'  => _('Template attributes'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
-          new FileTextAreaAttribute (
+        'class' => ['fullwidth'],
+        'attrs' => [
+          new FileTextAreaAttribute(
             _('Template file content'), _('Content of the template file'),
             'FAItemplateFile', TRUE
           ),
-          new CompositeAttribute (
+          new CompositeAttribute(
             _('Owner and group of the file'), 'FAIowner',
-            array(
-              new StringAttribute (
+            [
+              new StringAttribute(
                 _('Owner'), _('File owner'),
                 'owner', TRUE,
                 'root'
               ),
-              new StringAttribute (
+              new StringAttribute(
                 _('Group'), _('File group'),
                 'group', TRUE,
                 'root'
               ),
-            ),
+            ],
             '/^([^.]+)\.([^.]+)$/',
             '%s.%s'
           ),
-          new AccessRightsAttribute (
+          new AccessRightsAttribute(
             _('Access'), _('Access rights'),
             'FAImode'
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
-  function save_object()
+  function save_object ()
   {
     if (isset($_FILES[$this->attributesAccess['FAItemplateFile']->getHtmlId()]['name'])) {
       $name = $_FILES[$this->attributesAccess['FAItemplateFile']->getHtmlId()]['name'];
diff --git a/fai/admin/fai/class_faiVariable.inc b/fai/admin/fai/class_faiVariable.inc
index c984c0743e9e73a5c52dcf11418812fbc9ac6b9c..96f46bcaf02f63d61e05c724d021dc84b922c24c 100644
--- a/fai/admin/fai/class_faiVariable.inc
+++ b/fai/admin/fai/class_faiVariable.inc
@@ -20,71 +20,71 @@
 
 class faiVariable extends faiSimplePluginClass
 {
-  var $objectclasses = array('top','FAIclass','FAIvariable');
+  var $objectclasses = ['top','FAIclass','FAIvariable'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Variable'),
       'plDescription' => _('FAI variable'),
-      'plObjectType'  => array(
-        'faiVariable' => array(
+      'plObjectType'  => [
+        'faiVariable' => [
           'name'        => _('FAI variable'),
           'filter'      => 'objectClass=FAIvariable',
           'aclCategory' => 'fai',
           'ou'          => get_ou('faiVariableRDN'),
           'icon'        => 'geticon.php?context=applications&icon=fai-variable&size=16'
-        )
-      ),
+        ]
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Properties'),
-        'attrs' => array(
-          new HostNameAttribute (
+        'attrs' => [
+          new HostNameAttribute(
             _('Class name'), _('Variables class name'),
             'cn', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Description'), _('Short description of the class'),
             'description', FALSE
           ),
-        )
-      ),
-      'vars' => array(
+        ]
+      ],
+      'vars' => [
         'name'  => _('Variables'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
-          new SubNodesAttribute (
+        'class' => ['fullwidth'],
+        'attrs' => [
+          new SubNodesAttribute(
             '', _('Variables in this class'),
-            'variables', array('FAIvariableEntry','FAIclass','top'),
-            array(
-              new StringAttribute (
+            'variables', ['FAIvariableEntry','FAIclass','top'],
+            [
+              new StringAttribute(
                 _('Name'), _('The name of the variable'),
                 'cn', TRUE
               ),
-              new StringAttribute (
+              new StringAttribute(
                 _('Description'), _('A short description of the variable'),
                 'description', FALSE
               ),
-              new StringAttribute (
+              new StringAttribute(
                 _('Content'), _('The content of the variable'),
                 'FAIvariableContent', TRUE
               ),
-            ),
+            ],
             FALSE, /* no order */
-            array(),
+            [],
             TRUE /* edit enabled */
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -95,7 +95,7 @@ class faiVariable extends faiSimplePluginClass
     $this->attributesAccess['variables']->setLinearRendering(FALSE);
   }
 
-  protected function shouldSave()
+  protected function shouldSave ()
   {
     /* We need ldap_save to always run */
     return TRUE;
diff --git a/fai/admin/fai/packageSelect/class_filterFAIPackages.inc b/fai/admin/fai/packageSelect/class_filterFAIPackages.inc
index f144105884ea31e8c955a87abfb288b0cba90bee..00cb8fddcd0e1151b6be7dd5757d6961feceb2e3 100644
--- a/fai/admin/fai/packageSelect/class_filterFAIPackages.inc
+++ b/fai/admin/fai/packageSelect/class_filterFAIPackages.inc
@@ -22,19 +22,19 @@
 class filterFAIPackages extends filterLDAPBlacklist
 {
 
-  static function query($parent, $base, $scope, $filter, $attributes, $category, $objectStorage = '')
+  static function query ($parent, $base, $scope, $filter, $attributes, $category, $objectStorage = '')
   {
-    $customs = array();
+    $customs = [];
     foreach ($parent->customs as $custom) {
       if ($parent->elementValues[$custom] == 'true') {
         $customs[] = $custom;
       }
     }
     $filter     = preg_replace('/\*/', '', $filter);
-    $pkgs       = array();
+    $pkgs       = [];
     $q          = new supportDaemon();
-    $filter     = array("$filter");
-    $attrs      = array('distribution', 'package', 'version', 'section', 'timestamp');
+    $filter     = ["$filter"];
+    $attrs      = ['distribution', 'package', 'version', 'section', 'timestamp'];
     $release    = session::get('packageSelect_Release');
     $ret        = $q->FAI_get_packages($release, $attrs, $filter, 0, 200);
     if ($q->is_error()) {
@@ -44,20 +44,20 @@ class filterFAIPackages extends filterLDAPBlacklist
         $ret2 = $q->FAI_get_packages($customs[$i], $attrs, $filter, 0, 200 - count($ret));
         if ($q->is_error()) {
           msg_dialog::display(_('Infrastructure service'), msgPool::siError($q->get_error()), ERROR_DIALOG);
-          return array();
+          return [];
         }
         $ret = array_merge($ret, $ret2);
       }
       foreach ($ret as $attr) {
         $attr['objectClass'] = 'FAKE_OC__FaiPackage';
 
-        $item = array();
+        $item = [];
         $item['dn']     = 'dn='.$attr['PACKAGE'].','.$attr['DISTRIBUTION'].','.$base;
         $item['count']  = 0;
         foreach ($attr as $key => $value) {
           $item['count']++;
           $item[] = $key;
-          $item[$key] = array('count' => 1, $value);
+          $item[$key] = ['count' => 1, $value];
         }
         $pkgs[] = $item;
       }
@@ -66,14 +66,14 @@ class filterFAIPackages extends filterLDAPBlacklist
     return static::filterByBlacklist($pkgs);
   }
 
-  function save()
+  function save ()
   {
     $act = $this->detectPostActions();
     $headpage = $this->getHeadpage();
     if (!isset($act['targets'])) {
-      return array();
+      return [];
     }
-    $ret = array();
+    $ret = [];
     foreach ($act['targets'] as $dn) {
       $ret[] = $headpage->getEntry($dn);
     }
diff --git a/fai/admin/fai/packageSelect/class_filterFAIcustoms.inc b/fai/admin/fai/packageSelect/class_filterFAIcustoms.inc
index ceb6042af314c3fa8229c1819c3c9537e761b6b1..8faed45e23dce10a4d1e6cc936fd86b688de7ddd 100644
--- a/fai/admin/fai/packageSelect/class_filterFAIcustoms.inc
+++ b/fai/admin/fai/packageSelect/class_filterFAIcustoms.inc
@@ -20,9 +20,9 @@
 
 class filterFAIcustoms extends filter
 {
-  var $customs = array();
+  var $customs = [];
 
-  function __construct($filename)
+  function __construct ($filename)
   {
     $release = session::get('packageSelect_Release');
     $this->customs = serviceRepository::getCustomReleases($release);
@@ -30,28 +30,28 @@ class filterFAIcustoms extends filter
     parent::__construct($filename);
   }
 
-  function load($filename)
+  function load ($filename)
   {
     $res = parent::load($filename);
 
     foreach ($this->customs as $custom) {
-      $this->elements[$custom] = array(
+      $this->elements[$custom] = [
         'type'    => 'checkbox',
         'tag'     => $custom,
         'default' => 'false',
-        'set'     => array(),
-        'unset'   => array()
-      );
+        'set'     => [],
+        'unset'   => []
+      ];
       $this->elementValues[$custom] = '';
     }
     return $res;
   }
 
-  function render()
+  function render ()
   {
     $smarty = get_smarty();
 
-    $customs = array();
+    $customs = [];
     foreach ($this->customs as $custom) {
       $customs[$custom] = $this->getCheckbox($this->elements[$custom]);
     }
diff --git a/fai/admin/fai/packageSelect/class_packageSelect.inc b/fai/admin/fai/packageSelect/class_packageSelect.inc
index 52cfc235f5e8f61677c95b32b2575c4a34c0a6f3..879f39da07e018fdfb05350f0a04b4819f45a5bd 100644
--- a/fai/admin/fai/packageSelect/class_packageSelect.inc
+++ b/fai/admin/fai/packageSelect/class_packageSelect.inc
@@ -21,14 +21,14 @@
 
 class packageSelect extends simpleSelectManagement
 {
-  protected $objectTypes  = array();
+  protected $objectTypes  = [];
   protected $autoFilter   = FALSE;
 
   protected $departmentBrowser      = FALSE;
   protected $departmentRootVisible  = FALSE;
   protected $baseMode               = FALSE;
 
-  function __construct()
+  function __construct ()
   {
     $this->filterXMLPath  = get_template_path('selectPackage-filter.xml', TRUE, dirname(__FILE__));
     $this->listXMLPath    = get_template_path('selectPackage-list.xml',   TRUE, dirname(__FILE__));
@@ -41,14 +41,14 @@ class packageSelect extends simpleSelectManagement
     parent::__construct();
   }
 
-  function save()
+  function save ()
   {
     $act = $this->detectPostActions();
     $headpage = $this->getHeadpage();
     if (!isset($act['targets'])) {
-      return array();
+      return [];
     }
-    $ret = array();
+    $ret = [];
     foreach ($act['targets'] as $dn) {
       $ret[] = $headpage->getEntry($dn);
     }
diff --git a/fai/admin/systems/class_faiLogView.inc b/fai/admin/systems/class_faiLogView.inc
index 4df55caebc0ac5abefef2e9f98b47dd119329882..f5405f8dfd73128663411a3455996e1dbedd6c28 100644
--- a/fai/admin/systems/class_faiLogView.inc
+++ b/fai/admin/systems/class_faiLogView.inc
@@ -21,22 +21,22 @@
 
 class AvailableLogsAttribute extends Attribute
 {
-  var $logs     = array();
+  var $logs     = [];
 
   function __construct ($description, $ldapName, $acl = "")
   {
-    $value = array(
+    $value = [
       'file'      => '',
       'time'      => '',
       'sort_by'   => 'time',
       // TRUE means up
       'sort_up'  => TRUE
-    );
-    parent::__construct ('', $description, $ldapName, FALSE, $value, $acl);
+    ];
+    parent::__construct('', $description, $ldapName, FALSE, $value, $acl);
     $this->setInLdap(FALSE);
   }
 
-  private function js_link($label, $vars)
+  private function js_link ($label, $vars)
   {
     $id   = $this->getHtmlId();
     $js = '';
@@ -67,13 +67,13 @@ class AvailableLogsAttribute extends Attribute
     }
 
     /* Create list header */
-    $div->SetHeaders(array(
-      $this->js_link(_('File')." $img1", array('sort_by' => 'file')),
-      $this->js_link(_('Date')." $img2", array('sort_by' => 'time'))
-    ));
+    $div->SetHeaders([
+      $this->js_link(_('File')." $img1", ['sort_by' => 'file']),
+      $this->js_link(_('Date')." $img2", ['sort_by' => 'time'])
+    ]);
 
     /* Create sortable array */
-    $to_add   = array();
+    $to_add   = [];
     $sort_by  = $this->value['sort_by'];
     foreach ($this->logs as $time => $data) {
       $rtime = $data['REAL_DATE'];
@@ -83,13 +83,13 @@ class AvailableLogsAttribute extends Attribute
           $highlight = 'background-color:#CCCCCC';
         }
 
-        $use_link = $this->js_link('%str%', array('time' => $time, 'file' => $file, 'mac' => $mac));
-        $to_add[$$sort_by.$file.$time] = array(
-          array('html' => preg_replace('/%str%/', $file, $use_link),
-                'attach' => ''),
-          array('html' => preg_replace('/%str%/', date('d.m.Y H:i:s', $rtime), $use_link),
-                'attach' => ''),
-        );
+        $use_link = $this->js_link('%str%', ['time' => $time, 'file' => $file, 'mac' => $mac]);
+        $to_add[$$sort_by.$file.$time] = [
+          ['html' => preg_replace('/%str%/', $file, $use_link),
+                'attach' => ''],
+          ['html' => preg_replace('/%str%/', date('d.m.Y H:i:s', $rtime), $use_link),
+                'attach' => ''],
+        ];
       }
     }
 
@@ -109,7 +109,7 @@ class AvailableLogsAttribute extends Attribute
     $smarty = get_smarty();
     $smarty->assign("div_$id", $div->DrawList());
     $display = '';
-    foreach (array('sort_by','time','file','mac') as $var) {
+    foreach (['sort_by','time','file','mac'] as $var) {
       $display .= '<input type="hidden" value="" name="'.$id.'_'.$var.'" id="'.$id.'_'.$var.'"/>'."\n";
     }
     return $this->renderAcl($display).'{$div_'.$id.'}'."\n";
@@ -120,12 +120,12 @@ class AvailableLogsAttribute extends Attribute
     if ($this->isVisible()) {
       $id   = $this->getHtmlId();
       $this->postValue = $this->value;
-      foreach (array('time','file') as $attr) {
+      foreach (['time','file'] as $attr) {
         if (isset($_POST[$id.'_'.$attr])) {
           $this->postValue[$attr] = $_POST[$id.'_'.$attr];
         }
       }
-      if (isset($_POST[$id.'_sort_by']) && in_array($_POST[$id.'_sort_by'], array('file','time'))) {
+      if (isset($_POST[$id.'_sort_by']) && in_array($_POST[$id.'_sort_by'], ['file','time'])) {
         if ($_POST[$id.'_sort_by'] == $this->postValue['sort_by']) {
           $this->postValue['sort_up'] = !$this->postValue['sort_up'];
         }
@@ -144,39 +144,39 @@ class faiLogView extends simplePlugin
 
   static function getAttributesInfo ()
   {
-    return array(
-      'available' => array(
+    return [
+      'available' => [
         'name'  => _('Available logs'),
-        'attrs' => array(
+        'attrs' => [
           new AvailableLogsAttribute(
             _('Available logs'), 'available_logs'
           ),
-        )
-      ),
-      'selected' => array(
+        ]
+      ],
+      'selected' => [
         'name'  => _('Selected log'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
+        'class' => ['fullwidth'],
+        'attrs' => [
           new DisplayAttribute(
             '', _('Content of the selected log'),
             'display_log'
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   /* Return plugin information */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('FAI Logs'),
       'plDescription' => _('FAI Logs Viewer'),
       'plPriority'    => 31,
-      'plObjectType'  => array('workstation', 'server', 'ogroup-dynamic'),
+      'plObjectType'  => ['workstation', 'server', 'ogroup-dynamic'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -210,14 +210,14 @@ class faiLogView extends simplePlugin
     $this->ignore_account = FALSE;
   }
 
-  function is_this_account($attrs)
+  function is_this_account ($attrs)
   {
     /* Will not work when called from parent constructor (or when $attrs is not us) */
     return (count($this->attributesAccess['available_logs']->logs) > 0);
   }
 
 
-  function execute()
+  function execute ()
   {
     if ($this->available_logs['file'] == '') {
       $this->attributesInfo['selected']['name'] = _('Selected file');
@@ -236,7 +236,7 @@ class faiLogView extends simplePlugin
   }
 
 
-  private function get_log($mac, $date, $file)
+  private function get_log ($mac, $date, $file)
   {
     $res = $this->o_queue->get_log_file($mac, $date, $file);
     if ($this->o_queue->is_error()) {
diff --git a/fai/admin/systems/class_faiStartup.inc b/fai/admin/systems/class_faiStartup.inc
index 93adccfd737fe4142c84225f451b4d77f4390860..5f0bb20ec4b75b038c5f3354d28a16ba8628b493 100644
--- a/fai/admin/systems/class_faiStartup.inc
+++ b/fai/admin/systems/class_faiStartup.inc
@@ -51,61 +51,61 @@ class faiStartup extends simplePlugin
   var $displayHeader = TRUE;
 
   /* attribute list for save action */
-  var $objectclasses  = array("FAIobject");
+  var $objectclasses  = ["FAIobject"];
 
-  var $inheritance    = array("gosaGroupOfNames" => "member");
+  var $inheritance    = ["gosaGroupOfNames" => "member"];
   var $sdaemon_available;
 
-  var $cache = array();
+  var $cache = [];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('FAI'),
       'plDescription'   => _('Full automated installation'),
       'plSelfModify'    => FALSE,
       'plPriority'      => 9,
-      'plObjectType'    => array('workstation', 'server', 'ogroup-dynamic'),
-      'plForeignKeys'  => array(
-        'FAIclass'   => array(
-          array('faiProfile', 'cn', '(FAIclass=%oldvalue% :*)'),
-        ),
-      ),
+      'plObjectType'    => ['workstation', 'server', 'ogroup-dynamic'],
+      'plForeignKeys'  => [
+        'FAIclass'   => [
+          ['faiProfile', 'cn', '(FAIclass=%oldvalue% :*)'],
+        ],
+      ],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('FAI settings'),
-        'attrs' => array(
-          new HiddenAttribute ('FAIstate'),
-          new CompositeAttribute (
+        'attrs' => [
+          new HiddenAttribute('FAIstate'),
+          new CompositeAttribute(
             _('FAI profil and release to be applied to this computer'),
             'FAIclass',
-            array(
-              'release' => new FAIreleaseAttribute (
+            [
+              'release' => new FAIreleaseAttribute(
                 _('Release'), _('FAI debian release to be installed on this computer'),
                 'FAIrelease', TRUE
               ),
-              'profil' => new SelectAttribute (
+              'profil' => new SelectAttribute(
                 _('Profil'), _('FAI profil to be applied to this computer'),
                 'FAIprofile', TRUE
               ),
-            ),
+            ],
             '/^(?P<profil>.+) :(?P<release>.+)$/',
             '%2$s :%1$s'
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Repository'), _('FAI Debian repository to be used for installation'),
             'FAIdebianMirror', TRUE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -126,11 +126,11 @@ class faiStartup extends simplePlugin
       }
       return FALSE;
     } else {
-      return parent::foreignKeyCheck ($field, $fieldvalue, $source);
+      return parent::foreignKeyCheck($field, $fieldvalue, $source);
     }
   }
 
-  function foreignKeyUpdate($field, $oldvalue, $newvalue, $source)
+  function foreignKeyUpdate ($field, $oldvalue, $newvalue, $source)
   {
     if ($field == 'FAIclass') {
       if ($this->attributesAccess['FAIclass']->attributes['profil']->getValue() == $oldvalue) {
@@ -144,19 +144,19 @@ class faiStartup extends simplePlugin
   /* Updates release and profiles list
    *  if not already done ($this->cache).
    */
-  function update_fai_cache()
+  function update_fai_cache ()
   {
     /* Get the list of available servers and their releases */
     if (!isset($this->cache['SERVERS'])) {
       $tmp = serviceRepository::getServers();
-      $this->cache['SERVERS'] = array();
+      $this->cache['SERVERS'] = [];
       foreach ($tmp as $entry) {
         if ($entry['INSTALL'] != 'install') {
             continue;
         }
         $rel = $entry['FAI_RELEASE'];
         if (!isset($this->cache['SERVERS'][$rel])) {
-          $this->cache['SERVERS'][$rel] = array();
+          $this->cache['SERVERS'][$rel] = [];
         }
         $this->cache['SERVERS'][$rel][] = $entry['URL'];
         uksort($this->cache['SERVERS'][$rel], 'strnatcasecmp');
@@ -164,7 +164,7 @@ class faiStartup extends simplePlugin
     }
 
     if (!isset($this->cache['PROFILES'])) {
-      $this->cache['PROFILES'] = array();
+      $this->cache['PROFILES'] = [];
       foreach (array_keys($this->cache['SERVERS']) as $release) {
         /* Get the list of available profiles for each release */
         $tmp = objects::ls('faiProfile', 'cn', NULL, "(ou:dn:=$release)");
diff --git a/fai/admin/systems/services/monitor/class_argonautFAIMonitor.inc b/fai/admin/systems/services/monitor/class_argonautFAIMonitor.inc
index 01cdf803a41d52b5699138666e0b1d5724919bc2..14e085cb55924d5460a4a4f65a2bffdf6d009c46 100644
--- a/fai/admin/systems/services/monitor/class_argonautFAIMonitor.inc
+++ b/fai/admin/systems/services/monitor/class_argonautFAIMonitor.inc
@@ -20,48 +20,48 @@
 
 class argonautFAIMonitor extends simpleService
 {
-  var $objectclasses  = array('argonautFAIMonitorConfig');
+  var $objectclasses  = ['argonautFAIMonitorConfig'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Argonaut FAI monitor'),
       'plDescription'   => _('Argonaut FAI monitor settings'),
       'plIcon'          => 'geticon.php?context=applications&icon=fai&size=16',
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array (
-    'config' => array (
+    return  [
+    'config' => [
         'name'  => _('Argonaut FAI monitor settings'),
-        'attrs' => array (
-          new IntAttribute (
+        'attrs' => [
+          new IntAttribute(
             _('Port'), _('The port argonaut-fai-monitor should listen on. Default is 4711.'),
             'argonautFAIMonitorPort', FALSE,
             0, FALSE, 4711
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Timeout'), _('The timeout for bad clients. 0 to disable.'),
             'argonautFAIMonitorTimeout', FALSE,
             0, FALSE, 0
           ),
-          new TrimmedStringAttribute (
+          new TrimmedStringAttribute(
             _('CA certificate'), _('Path to the CA certificate file on Argonaut FAI monitor server'),
             'argonautFAIMonitorCaCertPath', FALSE,
             '/etc/ssl/certs/ca.cert'
           ),
-          new TrimmedStringAttribute (
+          new TrimmedStringAttribute(
             _('Log directory'), _('Directory in which argonaut-fai-monitor will store its log'),
             'argonautFAIMonitorLogDir', TRUE,
             '/var/log/argonaut'
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 }
 ?>
diff --git a/fai/admin/systems/services/repository/class_serviceRepository.inc b/fai/admin/systems/services/repository/class_serviceRepository.inc
index b994c955f57f7d2f155ce8282745e9e0576dbaf0..e8657fe16fb67b355eb3276ff008fc7ab47ee0a3 100644
--- a/fai/admin/systems/services/repository/class_serviceRepository.inc
+++ b/fai/admin/systems/services/repository/class_serviceRepository.inc
@@ -21,12 +21,12 @@
 
 class FAIRepositoryAttribute extends PipeSeparatedCompositeAttribute
 {
-  function __construct($description, $ldapName, $acl = "", $label = "Composite attribute")
+  function __construct ($description, $ldapName, $acl = "", $label = "Composite attribute")
   {
     parent::__construct(
       $description,
       $ldapName,
-      array(
+      [
         new StringAttribute(
           _('URL'), _('Repository url'),
           'mirrorUrl', TRUE
@@ -34,7 +34,7 @@ class FAIRepositoryAttribute extends PipeSeparatedCompositeAttribute
         new SelectAttribute(
           _('Parent server'), _('Parent repository server'),
           'mirrorParent', FALSE,
-          array(), ''
+          [], ''
         ),
         new StringAttribute(
           _('Release'), _('Release used on this repository'),
@@ -51,7 +51,7 @@ class FAIRepositoryAttribute extends PipeSeparatedCompositeAttribute
         new SelectAttribute(
           _('Mirror mode'), _('Is this mirror an installation repository? Is its release a custom one?'),
           'mirrorMode', TRUE,
-          array('install','update','custom')
+          ['install','update','custom']
         ),
         new BooleanAttribute(
           _('Local mirror'), _('Is this mirror a local or a network mirror?'),
@@ -71,27 +71,27 @@ class FAIRepositoryAttribute extends PipeSeparatedCompositeAttribute
         new SelectAttribute(
           _('Distribution'), _('Which distribution is this repository for'),
           'distribution', TRUE,
-          array('debian','centos')
+          ['debian','centos']
         ),
         new StringAttribute(
           _('Path pattern'), _('How this repository is organized (only for RPM repositories)'),
           'pathMask', FALSE,
           '%RELEASE%/%SECTION%/%ARCH%/'
         ),
-      ),
+      ],
       $acl,
       $label
     );
     $this->attributes[7]->setSubmitForm(TRUE);
   }
 
-  function setParent(&$plugin)
+  function setParent (&$plugin)
   {
     $this->updateFields();
     parent::setParent($plugin);
   }
 
-  function updateFields()
+  function updateFields ()
   {
     $dn = NULL;
     if (is_object($this->plugin)) {
@@ -106,16 +106,16 @@ class FAIRepositoryAttribute extends PipeSeparatedCompositeAttribute
         },
         serviceRepository::getReleaseList($this->attributes[7]->getValue())
       );
-      $modeChoices = array_merge(array('install', 'update'), $releaseList);
+      $modeChoices = array_merge(['install', 'update'], $releaseList);
       $this->attributes[8]->setVisible(FALSE);
     } else {
-      $modeChoices = array('install', 'update');
+      $modeChoices = ['install', 'update'];
       $this->attributes[8]->setVisible(TRUE);
     }
     $this->attributes[4]->setChoices($modeChoices);
   }
 
-  function applyPostValue()
+  function applyPostValue ()
   {
     parent::applyPostValue();
     $this->updateFields();
@@ -132,7 +132,7 @@ class FAIRepositoryAttribute extends PipeSeparatedCompositeAttribute
     parent::setValue($values);
   }
 
-  function readValues($value)
+  function readValues ($value)
   {
     $values = parent::readValues($value);
     if (!isset($values[8])) {
@@ -153,27 +153,27 @@ class serviceRepository extends simpleService
 {
   protected static $showActions = FALSE;
 
-  var $objectclasses  = array('FAIrepositoryServer');
+  var $objectclasses  = ['FAIrepositoryServer'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Package repository'),
       'plDescription' => _('Package repository information'),
       'plIcon'        => 'geticon.php?context=mimetypes&icon=package-x-generic&size=16',
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'template'  => get_template_path('fai_repository.tpl', TRUE, dirname(__FILE__)),
         'name'      => _('Repositories'),
-        'class'     => array('fullwidth'),
-        'attrs'     => array(
+        'class'     => ['fullwidth'],
+        'attrs'     => [
           new OrderedArrayAttribute(
             new FAIRepositoryAttribute(
               _('Repositories this server hosts'),
@@ -181,13 +181,13 @@ class serviceRepository extends simpleService
             ),
             // no order
             FALSE,
-            array(),
+            [],
             // edit button
             TRUE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $parent = NULL)
@@ -197,7 +197,7 @@ class serviceRepository extends simpleService
     $this->attributesAccess['FAIrepository']->setLinearRendering(FALSE);
   }
 
-  static function isOfDistribution($attrs, $distribution)
+  static function isOfDistribution ($attrs, $distribution)
   {
     if (!isset($attrs['FAIrepository'])) {
       return FALSE;
@@ -205,7 +205,7 @@ class serviceRepository extends simpleService
     return preg_match('/'.preg_quote($distribution, '/').'$/', $attrs['FAIrepository'][0]);
   }
 
-  function ldap_save()
+  function ldap_save ()
   {
     $errors = parent::ldap_save();
 
@@ -214,7 +214,7 @@ class serviceRepository extends simpleService
     }
 
     $repos  = $this->attributesAccess['FAIrepository']->getArrayValues();
-    $done   = array();
+    $done   = [];
     foreach ($repos as $repo) {
       $release = $repo[2];
       if (($repo[4] == 'install') && (!isset($done[$release]))) {
@@ -233,7 +233,7 @@ class serviceRepository extends simpleService
     // Check if FAI branch is here
     $fai  = "ou=$distribution,".get_ou('faiBaseRDN').$config->current['BASE'];
     $ldap = $config->get_ldap_link();
-    $ldap->cat($fai, array('dn'));
+    $ldap->cat($fai, ['dn']);
     if (!$ldap->count()) {
       $ldap->cd($config->current['BASE']);
       $ldap->create_missing_trees($fai);
@@ -245,13 +245,13 @@ class serviceRepository extends simpleService
 
     // Check if FAI release branch is here
     $dn = "ou=$release,$fai";
-    $ldap->cat($dn, array('dn'));
+    $ldap->cat($dn, ['dn']);
     if (!$ldap->count()) {
       $ldap->cd($dn);
-      $ldap->add(array('objectClass' => array('organizationalUnit','FAIbranch'), 'ou' => $release));
+      $ldap->add(['objectClass' => ['organizationalUnit','FAIbranch'], 'ou' => $release]);
       if ($ldap->success()) {
         // Add classes OUs
-        foreach (array('Script', 'Hook', 'Template', 'Variable', 'Profile', 'Package', 'Partition') as $type) {
+        foreach (['Script', 'Hook', 'Template', 'Variable', 'Profile', 'Package', 'Partition'] as $type) {
           $ldap->cd($dn);
           $ldap->create_missing_trees(get_ou('fai'.$type.'RDN').$dn);
           if (!$ldap->success()) {
@@ -269,15 +269,15 @@ class serviceRepository extends simpleService
    *
    * \return array All configured repository servers
   */
-  static function getServers()
+  static function getServers ()
   {
     global $config;
 
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(&(FAIrepository=*)(objectClass=FAIrepositoryServer))', array('FAIrepository'));
+    $ldap->search('(&(FAIrepository=*)(objectClass=FAIrepositoryServer))', ['FAIrepository']);
 
-    $repos = array();
+    $repos = [];
     while ($entry = $ldap->fetch()) {
       if (isset($entry['FAIrepository'])) {
         // Add an entry for each Repository configured for server
@@ -287,10 +287,10 @@ class serviceRepository extends simpleService
           $infos['URL']           = $tmp[0];
           $infos['PARENT_SERVER'] = $tmp[1];
           $infos['FAI_RELEASE']   = $tmp[2];
-          $infos['SECTIONS']      = (empty($tmp[3]) ? array() : explode(',', $tmp[3]));
+          $infos['SECTIONS']      = (empty($tmp[3]) ? [] : explode(',', $tmp[3]));
           $infos['INSTALL']       = $tmp[4];
           $infos['LOCAL']         = $tmp[5];
-          $infos['ARCHS']         = (empty($tmp[6]) ? array() : explode(',', $tmp[6]));
+          $infos['ARCHS']         = (empty($tmp[6]) ? [] : explode(',', $tmp[6]));
           $infos['DIST']          = (isset($tmp[7]) ? $tmp[7] : 'debian');
           $repos[] = $infos;
         }
@@ -306,9 +306,9 @@ class serviceRepository extends simpleService
    *
    * \return array All configured customs releases based on the given release
   */
-  static function getCustomReleases($release)
+  static function getCustomReleases ($release)
   {
-    $list     = array();
+    $list     = [];
     $servers  = static::getServers();
 
     foreach ($servers as $server) {
@@ -320,15 +320,15 @@ class serviceRepository extends simpleService
     return array_values($list);
   }
 
-  static function getParentServers($distribution, $dn = NULL)
+  static function getParentServers ($distribution, $dn = NULL)
   {
     global $config;
 
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(&(objectClass=FAIrepositoryServer)(FAIrepository=*|'.$distribution.'|*))', array('dn','cn'));
+    $ldap->search('(&(objectClass=FAIrepositoryServer)(FAIrepository=*|'.$distribution.'|*))', ['dn','cn']);
 
-    $ret = array();
+    $ret = [];
     while ($attr = $ldap->fetch()) {
       if ($attr['dn'] == $dn) {
         continue;
@@ -346,9 +346,9 @@ class serviceRepository extends simpleService
 
     $ldap = $config->get_ldap_link();
     $ldap->cd('ou='.$distribution.','.get_ou('faiBaseRDN').$config->current['BASE']);
-    $ldap->search('(objectClass=FAIbranch)', array('ou'), 'one');
+    $ldap->search('(objectClass=FAIbranch)', ['ou'], 'one');
 
-    $list = array();
+    $list = [];
     while ($release = $ldap->fetch()) {
       $list[] = $release['ou'][0];
     }
diff --git a/fai/config/fai/class_faiConfig.inc b/fai/config/fai/class_faiConfig.inc
index a33f1c149f4b99bd76fe667f1762a0f56adaa55b..41de17c1b3fe0822a0719c9872aff33c1e137f00 100644
--- a/fai/config/fai/class_faiConfig.inc
+++ b/fai/config/fai/class_faiConfig.inc
@@ -20,42 +20,42 @@
 
 class faiConfig extends simplePlugin
 {
-  var $objectclasses  = array('fdFaiPluginConf');
+  var $objectclasses  = ['fdFaiPluginConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('FAI configuration'),
       'plDescription'   => _('FusionDirectory fai plugin configuration'),
       'plSelfModify'    => FALSE,
-      'plObjectType'    => array('configuration'),
+      'plObjectType'    => ['configuration'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    $attrs = array(
-      'main' => array(
+    $attrs = [
+      'main' => [
         'name'  => _('FAI'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Fai base RDN'), _('Branch in which fai branches will be stored'),
             'fdFaiBaseRDN', TRUE,
             'ou=fai,ou=configs,ou=systems'
           ),
-        )
-      ),
-    );
-    $rdns = array('Script', 'Hook', 'Template', 'Variable', 'Profile', 'Package', 'PartitionTable');
+        ]
+      ],
+    ];
+    $rdns = ['Script', 'Hook', 'Template', 'Variable', 'Profile', 'Package', 'PartitionTable'];
     foreach ($rdns as $rdn) {
       if ($rdn == 'PartitionTable') {
         $default = 'ou=disk';
       } else {
         $default = 'ou='.strtolower($rdn).'s';
       }
-      $attrs['main']['attrs'][] = new StringAttribute (
+      $attrs['main']['attrs'][] = new StringAttribute(
         sprintf(_('Fai %s RDN'), _(strtolower($rdn))),
         sprintf(_('Relative branch in which fai %s will be stored'), _(strtolower($rdn).'s')),
         'fdFai'.$rdn.'RDN', TRUE,
diff --git a/fai/locale/af_ZA/fusiondirectory.po b/fai/locale/af_ZA/fusiondirectory.po
index 14c629ae404896485afcec59c0d40240baccee81..b482b6fd8b17d11a6af83100f8e30e5b0f850c09 100644
--- a/fai/locale/af_ZA/fusiondirectory.po
+++ b/fai/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
@@ -46,7 +46,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -74,7 +74,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -119,78 +119,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -692,20 +692,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/ar/fusiondirectory.po b/fai/locale/ar/fusiondirectory.po
index 49bb75d4a3f09ca1f0f39b4c896684a602fe2740..9ee6c67677ede58ebfadd374efa6805bab035658 100644
--- a/fai/locale/ar/fusiondirectory.po
+++ b/fai/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
@@ -50,7 +50,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -78,7 +78,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -123,78 +123,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -696,20 +696,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/ca/fusiondirectory.po b/fai/locale/ca/fusiondirectory.po
index 2cec6fdb8b8c30e79db1dbf4a40bcd25dd66c662..e5a89c0ac122923e01db2f650d06dfec7cce0313 100644
--- a/fai/locale/ca/fusiondirectory.po
+++ b/fai/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
@@ -50,7 +50,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -78,7 +78,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -123,78 +123,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -696,20 +696,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/cs_CZ/fusiondirectory.po b/fai/locale/cs_CZ/fusiondirectory.po
index 8eb97d7d84df2b3c0b37413e0e3d73ceba84981f..ae9e87c64c47e198da28d0b6de15e6b98211b9ad 100644
--- a/fai/locale/cs_CZ/fusiondirectory.po
+++ b/fai/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2019\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
@@ -51,7 +51,7 @@ msgid "Variables class name"
 msgstr "Název třídy proměnných"
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -79,7 +79,7 @@ msgstr "Proměnné v této třídě"
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -126,78 +126,78 @@ msgstr ""
 "Oddíl nemůže být smazán když je používán v definici jednotky datového "
 "úložiště „%s“!"
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr "Položka tabulky rozdělení úložiště"
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr "položka tabulky rozdělení úložiště pro FAI"
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr "Zařízení"
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr "Název disku"
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr "Stručný popis"
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr "položka v /etc/fstab"
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr "Klíč který použít v souboru fstab"
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr "jmenovka"
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr "UUID"
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr "Označení jednotky datového úložiště"
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr "Náhodný limit"
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr "Přepsat všechny oddíly k šifrování náhodnými daty"
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr "Položky oddílů"
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr "Kombinované fyzické oddíly"
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr "Fyzické oddíly zkombinované v tomto LVM svazku"
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr "Oddíly v této třídě"
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr "V nastavení máte čtyři položky primárního oddílu"
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -707,20 +707,20 @@ msgstr "Soubory se šablonami"
 msgid "Template files in this class"
 msgstr "Soubory se šablonami v této třídě"
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr "FAI"
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr "Spravovat FAI balíčky programového vybavení a skripty pro nasazování"
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr "Nejsou zde žádné FAI větve"
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr "Pro vytvoření těchto přidejte alespoň jeden repozitář."
 
diff --git a/fai/locale/de/fusiondirectory.po b/fai/locale/de/fusiondirectory.po
index ab1848b7cec391c27939a67bf75414e8f87fd96d..208548ae6c631b613598cf6c9a1e17a50eda0979 100644
--- a/fai/locale/de/fusiondirectory.po
+++ b/fai/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
@@ -50,7 +50,7 @@ msgid "Variables class name"
 msgstr "Variablenklassenname"
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -78,7 +78,7 @@ msgstr "Variablen in dieser Klasse"
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -123,78 +123,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr "Partitionstabellen-Eintrag"
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr "FAI-Partitionstabellen-Eintrag"
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr "Gerät"
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr "Festplattenname"
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr "Kurze Beschreibung"
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr "fstab-Schlüssel"
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr "Label"
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr "UUID"
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr "Disk-Label"
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr "Partitions-Einträge"
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr "Kombinierte physikalische Partitionen"
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr "Partitionen in dieser Klasse"
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -698,20 +698,20 @@ msgstr "Vorlagendateien"
 msgid "Template files in this class"
 msgstr "Vorlagendateien in dieser Klasse"
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr "FAI"
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr "Verwaltung von FAI Softwarepaketen und Deployment-Recipes"
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr "Es gibt keine FAI-Zweige"
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/el_GR/fusiondirectory.po b/fai/locale/el_GR/fusiondirectory.po
index c45ffb756402b42dc5776f166f1be5aeebca38b2..0d92f100b6091e9a4bdd1f64153e8be6b028b0b7 100644
--- a/fai/locale/el_GR/fusiondirectory.po
+++ b/fai/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
@@ -50,7 +50,7 @@ msgid "Variables class name"
 msgstr "Όνομα κλάσης μεταβλητών"
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -78,7 +78,7 @@ msgstr "Μεταβλητές σε αυτή την κλάση"
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -123,78 +123,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr "Καταχώριση πίνακα κατατμήσεων"
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr "Καταχώριση πίνακα κατατμήσεων FAI"
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr "Συσκευή"
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr "κλειδί fstab"
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr "Ετικέτα"
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr "UUID"
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr "Ετικέτα δίσκου "
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr "Καταχωρίσεις κατάτμησης"
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr "Συνδυασμένες φυσικές κατατμήσεις"
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr "Κατατμήσεις σε αυτή την κλάση"
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -697,20 +697,20 @@ msgstr "Αρχεία προτύπων"
 msgid "Template files in this class"
 msgstr "Αρχεία προτύπων σε αυτή την κλάση"
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr "FAI"
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr "Διαχείριση πακέτων λογισμικού FAI και οδηγιών ανάπτυξης"
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr "Δεν υπάρχουν κλάδοι FAI"
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 "Παρακαλούμε, προσθέστε τουλάχιστον μια υπηρεσία αποθετηρίου για να "
diff --git a/fai/locale/en/fusiondirectory.po b/fai/locale/en/fusiondirectory.po
index 9297d27b182a7f0d48edac20b44b8febd8f889fe..c8a408a3815b1c9ce4da9c5e0d64cdaf5136a99f 100644
--- a/fai/locale/en/fusiondirectory.po
+++ b/fai/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -52,6 +52,57 @@ msgstr ""
 msgid "s"
 msgstr ""
 
+#: admin/systems/class_faiLogView.inc:57
+msgid "Sort down"
+msgstr ""
+
+#: admin/systems/class_faiLogView.inc:59
+msgid "Sort up"
+msgstr ""
+
+#: admin/systems/class_faiLogView.inc:71
+msgid "File"
+msgstr ""
+
+#: admin/systems/class_faiLogView.inc:72
+msgid "Date"
+msgstr ""
+
+#: admin/systems/class_faiLogView.inc:149
+#: admin/systems/class_faiLogView.inc:152
+msgid "Available logs"
+msgstr ""
+
+#: admin/systems/class_faiLogView.inc:157
+msgid "Selected log"
+msgstr ""
+
+#: admin/systems/class_faiLogView.inc:161
+msgid "Content of the selected log"
+msgstr ""
+
+#: admin/systems/class_faiLogView.inc:173
+msgid "FAI Logs"
+msgstr ""
+
+#: admin/systems/class_faiLogView.inc:174
+msgid "FAI Logs Viewer"
+msgstr ""
+
+#: admin/systems/class_faiLogView.inc:201
+#: admin/systems/class_faiLogView.inc:243 admin/fai/class_faiDiskEntry.inc:146
+msgid "Error"
+msgstr ""
+
+#: admin/systems/class_faiLogView.inc:223
+msgid "Selected file"
+msgstr ""
+
+#: admin/systems/class_faiLogView.inc:231
+#, php-format
+msgid "Selected file: %s"
+msgstr ""
+
 #: admin/systems/class_faiStartup.inc:65
 msgid "Full automated installation"
 msgstr ""
@@ -159,28 +210,28 @@ msgstr ""
 msgid "How this repository is organized (only for RPM repositories)"
 msgstr ""
 
-#: admin/systems/services/repository/class_serviceRepository.inc:160
+#: admin/systems/services/repository/class_serviceRepository.inc:161
 msgid "Package repository"
 msgstr ""
 
-#: admin/systems/services/repository/class_serviceRepository.inc:161
+#: admin/systems/services/repository/class_serviceRepository.inc:162
 msgid "Package repository information"
 msgstr ""
 
-#: admin/systems/services/repository/class_serviceRepository.inc:173
+#: admin/systems/services/repository/class_serviceRepository.inc:174
 msgid "Repositories"
 msgstr ""
 
-#: admin/systems/services/repository/class_serviceRepository.inc:178
+#: admin/systems/services/repository/class_serviceRepository.inc:179
 msgid "Repositories this server hosts"
 msgstr ""
 
-#: admin/systems/services/repository/class_serviceRepository.inc:240
-#: admin/systems/services/repository/class_serviceRepository.inc:257
-#: admin/systems/services/repository/class_serviceRepository.inc:261
-#: admin/fai/class_faiPartitionTable.inc:215
-#: admin/fai/class_faiPartitionTable.inc:256
-#: admin/fai/class_faiPackage.inc:251 admin/fai/class_faiTemplate.inc:109
+#: admin/systems/services/repository/class_serviceRepository.inc:241
+#: admin/systems/services/repository/class_serviceRepository.inc:258
+#: admin/systems/services/repository/class_serviceRepository.inc:262
+#: admin/fai/class_faiPackage.inc:251 admin/fai/class_faiPartitionTable.inc:239
+#: admin/fai/class_faiPartitionTable.inc:280
+#: admin/fai/class_faiTemplate.inc:109
 msgid "LDAP error"
 msgstr ""
 
@@ -225,171 +276,6 @@ msgstr ""
 msgid "Directory in which argonaut-fai-monitor will store its log"
 msgstr ""
 
-#: admin/systems/class_faiLogView.inc:57
-msgid "Sort down"
-msgstr ""
-
-#: admin/systems/class_faiLogView.inc:59
-msgid "Sort up"
-msgstr ""
-
-#: admin/systems/class_faiLogView.inc:71
-msgid "File"
-msgstr ""
-
-#: admin/systems/class_faiLogView.inc:72
-msgid "Date"
-msgstr ""
-
-#: admin/systems/class_faiLogView.inc:151
-#: admin/systems/class_faiLogView.inc:154
-msgid "Available logs"
-msgstr ""
-
-#: admin/systems/class_faiLogView.inc:159
-msgid "Selected log"
-msgstr ""
-
-#: admin/systems/class_faiLogView.inc:163
-msgid "Content of the selected log"
-msgstr ""
-
-#: admin/systems/class_faiLogView.inc:175
-msgid "FAI Logs"
-msgstr ""
-
-#: admin/systems/class_faiLogView.inc:176
-msgid "FAI Logs Viewer"
-msgstr ""
-
-#: admin/systems/class_faiLogView.inc:204
-#: admin/systems/class_faiLogView.inc:239 admin/fai/class_faiDiskEntry.inc:145
-msgid "Error"
-msgstr ""
-
-#: admin/systems/class_faiLogView.inc:219
-msgid "Selected file"
-msgstr ""
-
-#: admin/systems/class_faiLogView.inc:227
-#, php-format
-msgid "Selected file: %s"
-msgstr ""
-
-#: admin/fai/class_faiPartitionTable.inc:111
-msgid "Add RAID"
-msgstr ""
-
-#: admin/fai/class_faiPartitionTable.inc:115
-msgid "Add LVM"
-msgstr ""
-
-#: admin/fai/class_faiPartitionTable.inc:289
-msgid "Partition table"
-msgstr ""
-
-#: admin/fai/class_faiPartitionTable.inc:290
-#: admin/fai/class_faiPartitionTable.inc:293
-msgid "FAI partition table"
-msgstr ""
-
-#: admin/fai/class_faiPartitionTable.inc:309
-#: admin/fai/class_faiTemplateEntry.inc:139 admin/fai/class_faiPackage.inc:396
-#: admin/fai/class_faiHook.inc:48 admin/fai/class_faiTemplate.inc:166
-#: admin/fai/class_faiProfile.inc:49 admin/fai/class_faiVariable.inc:48
-#: admin/fai/class_faiScript.inc:50
-msgid "Properties"
-msgstr ""
-
-#: admin/fai/class_faiPartitionTable.inc:312
-#: admin/fai/class_faiPackage.inc:399 admin/fai/class_faiHook.inc:51
-#: admin/fai/class_faiTemplate.inc:169 admin/fai/class_faiProfile.inc:52
-#: admin/fai/class_faiVariable.inc:51 admin/fai/class_faiScript.inc:53
-msgid "Class name"
-msgstr ""
-
-#: admin/fai/class_faiPartitionTable.inc:312 admin/fai/class_faiProfile.inc:52
-msgid "Partition table class name"
-msgstr ""
-
-#: admin/fai/class_faiPartitionTable.inc:316
-#: admin/fai/class_faiTemplateEntry.inc:146 admin/fai/class_faiPackage.inc:403
-#: admin/fai/class_faiDiskEntry.inc:239 admin/fai/class_faiHook.inc:55
-#: admin/fai/class_faiHook.inc:73 admin/fai/class_faiTemplate.inc:173
-#: admin/fai/class_faiPartition.inc:246 admin/fai/class_faiProfile.inc:56
-#: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
-msgid "Description"
-msgstr ""
-
-#: admin/fai/class_faiPartitionTable.inc:316
-#: admin/fai/class_faiPackage.inc:403 admin/fai/class_faiHook.inc:55
-#: admin/fai/class_faiTemplate.inc:173 admin/fai/class_faiProfile.inc:56
-#: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiScript.inc:57
-msgid "Short description of the class"
-msgstr ""
-
-#: admin/fai/class_faiPartitionTable.inc:322
-msgid "Discs"
-msgstr ""
-
-#: admin/fai/class_faiPartitionTable.inc:329
-#: admin/fai/class_faiDiskEntry.inc:269
-msgid "Partitions in this class"
-msgstr ""
-
-#: admin/fai/class_faiTemplateEntry.inc:142
-msgid "File path"
-msgstr ""
-
-#: admin/fai/class_faiTemplateEntry.inc:142
-msgid "Complete absolute template file path and name"
-msgstr ""
-
-#: admin/fai/class_faiTemplateEntry.inc:146
-msgid "Short description of the file"
-msgstr ""
-
-#: admin/fai/class_faiTemplateEntry.inc:155
-msgid "Template attributes"
-msgstr ""
-
-#: admin/fai/class_faiTemplateEntry.inc:159
-msgid "Template file content"
-msgstr ""
-
-#: admin/fai/class_faiTemplateEntry.inc:159
-msgid "Content of the template file"
-msgstr ""
-
-#: admin/fai/class_faiTemplateEntry.inc:163
-msgid "Owner and group of the file"
-msgstr ""
-
-#: admin/fai/class_faiTemplateEntry.inc:166
-msgid "Owner"
-msgstr ""
-
-#: admin/fai/class_faiTemplateEntry.inc:166
-msgid "File owner"
-msgstr ""
-
-#: admin/fai/class_faiTemplateEntry.inc:171
-msgid "Group"
-msgstr ""
-
-#: admin/fai/class_faiTemplateEntry.inc:171
-msgid "File group"
-msgstr ""
-
-#: admin/fai/class_faiTemplateEntry.inc:180
-msgid "Access"
-msgstr ""
-
-#: admin/fai/class_faiTemplateEntry.inc:180
-msgid "Access rights"
-msgstr ""
-
 #: admin/fai/class_faiPackage.inc:163
 msgid "Mark for installation"
 msgstr ""
@@ -426,11 +312,42 @@ msgstr ""
 msgid "FAI Package"
 msgstr ""
 
-#: admin/fai/class_faiPackage.inc:399 admin/fai/class_faiHook.inc:51
-#: admin/fai/class_faiVariable.inc:51 admin/fai/class_faiScript.inc:53
+#: admin/fai/class_faiPackage.inc:396 admin/fai/class_faiPartitionTable.inc:331
+#: admin/fai/class_faiProfile.inc:49 admin/fai/class_faiScript.inc:50
+#: admin/fai/class_faiTemplate.inc:166 admin/fai/class_faiVariable.inc:48
+#: admin/fai/class_faiHook.inc:48 admin/fai/class_faiTemplateEntry.inc:139
+msgid "Properties"
+msgstr ""
+
+#: admin/fai/class_faiPackage.inc:399 admin/fai/class_faiPartitionTable.inc:334
+#: admin/fai/class_faiProfile.inc:52 admin/fai/class_faiScript.inc:53
+#: admin/fai/class_faiTemplate.inc:169 admin/fai/class_faiVariable.inc:51
+#: admin/fai/class_faiHook.inc:51
+msgid "Class name"
+msgstr ""
+
+#: admin/fai/class_faiPackage.inc:399 admin/fai/class_faiScript.inc:53
+#: admin/fai/class_faiVariable.inc:51 admin/fai/class_faiHook.inc:51
 msgid "Variables class name"
 msgstr ""
 
+#: admin/fai/class_faiPackage.inc:403 admin/fai/class_faiDiskEntry.inc:247
+#: admin/fai/class_faiPartitionTable.inc:338 admin/fai/class_faiProfile.inc:56
+#: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
+#: admin/fai/class_faiTemplate.inc:173 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
+#: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
+#: admin/fai/class_faiTemplateEntry.inc:146
+msgid "Description"
+msgstr ""
+
+#: admin/fai/class_faiPackage.inc:403 admin/fai/class_faiPartitionTable.inc:338
+#: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiScript.inc:57
+#: admin/fai/class_faiTemplate.inc:173 admin/fai/class_faiVariable.inc:55
+#: admin/fai/class_faiHook.inc:55
+msgid "Short description of the class"
+msgstr ""
+
 #: admin/fai/class_faiPackage.inc:412
 msgid "Debian release concerned"
 msgstr ""
@@ -456,133 +373,222 @@ msgid "Packages in this class"
 msgstr ""
 
 #: admin/fai/class_faiDiskEntry.inc:101
-msgid "encrypted"
-msgstr ""
-
-#: admin/fai/class_faiDiskEntry.inc:104
 msgid "bootable"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:107
+#: admin/fai/class_faiDiskEntry.inc:104
 msgid "preserve"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:146
+#: admin/fai/class_faiDiskEntry.inc:147
 #, php-format
 msgid ""
 "The partition cannot be deleted while it is used in the \"%s\" disk "
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:218
+#: admin/fai/class_faiDiskEntry.inc:226
 msgid "Partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:219
+#: admin/fai/class_faiDiskEntry.inc:227
 msgid "FAI partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:230 admin/fai/class_faiDiskEntry.inc:246
+#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
 msgid "Device"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:233 admin/fai/class_faiHook.inc:69
-#: admin/fai/class_faiSimplePluginClass.inc:51
+#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiSimplePluginClass.inc:51 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiVariable.inc:69
-#: admin/fai/class_faiScript.inc:71
 #: admin/fai/packageSelect/selectPackage-list.xml:40
+#: admin/fai/class_faiHook.inc:69
 msgid "Name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:233
+#: admin/fai/class_faiDiskEntry.inc:241
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:239 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:243
+#: admin/fai/class_faiDiskEntry.inc:251
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:243
+#: admin/fai/class_faiDiskEntry.inc:251
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:246
+#: admin/fai/class_faiDiskEntry.inc:254
 msgid "Label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:246
+#: admin/fai/class_faiDiskEntry.inc:254
 msgid "UUID"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:249
+#: admin/fai/class_faiDiskEntry.inc:257
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:258
+#: admin/fai/class_faiDiskEntry.inc:263
+msgid "Random init"
+msgstr ""
+
+#: admin/fai/class_faiDiskEntry.inc:263
+msgid "Initialise all encrypted partitions with random data"
+msgstr ""
+
+#: admin/fai/class_faiDiskEntry.inc:270
 msgid "Partition entries"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263 admin/fai/class_faiPartition.inc:422
+#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:275
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:538
+#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiPartitionTable.inc:351
+msgid "Partitions in this class"
+msgstr ""
+
+#: admin/fai/class_faiDiskEntry.inc:579
 msgid ""
 "You have more than four primary partition table entries in your configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:542
+#: admin/fai/class_faiDiskEntry.inc:583
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
 msgstr ""
 
-#: admin/fai/class_faiHook.inc:28
-msgid "Hook"
+#: admin/fai/class_faiPackageConfiguration.inc:33
+#: admin/fai/class_faiPackageConfiguration.inc:36
+msgid "FAI package configuration"
 msgstr ""
 
-#: admin/fai/class_faiHook.inc:29 admin/fai/class_faiHook.inc:32
-msgid "FAI hook"
+#: admin/fai/class_faiPackageConfiguration.inc:34
+msgid "Configure debconf options of a package"
 msgstr ""
 
-#: admin/fai/class_faiHook.inc:61
-msgid "Hooks"
+#: admin/fai/class_faiPackageConfiguration.inc:80
+#, php-format
+msgid "Debconf information for package \"%s\""
+msgstr ""
+
+#: admin/fai/class_faiPackageConfiguration.inc:172
+msgid "Warning"
+msgstr ""
+
+#: admin/fai/class_faiPackageConfiguration.inc:173
+#, php-format
+msgid ""
+"The debconf questions \"%s\" are dynamically generated during package "
+"installation and requires choosing between specific options which cannot be "
+"presented here. The entered text needs to be one of the valid choices in "
+"order to take effect."
+msgstr ""
+
+#: admin/fai/class_faiPartitionTable.inc:108
+msgid "Add disk"
+msgstr ""
+
+#: admin/fai/class_faiPartitionTable.inc:115
+msgid "Add RAID"
+msgstr ""
+
+#: admin/fai/class_faiPartitionTable.inc:123
+msgid "Add LVM"
+msgstr ""
+
+#: admin/fai/class_faiPartitionTable.inc:131
+msgid "Add cryptsetup"
+msgstr ""
+
+#: admin/fai/class_faiPartitionTable.inc:311
+msgid "Partition table"
+msgstr ""
+
+#: admin/fai/class_faiPartitionTable.inc:312
+#: admin/fai/class_faiPartitionTable.inc:315
+msgid "FAI partition table"
+msgstr ""
+
+#: admin/fai/class_faiPartitionTable.inc:334 admin/fai/class_faiProfile.inc:52
+msgid "Partition table class name"
+msgstr ""
+
+#: admin/fai/class_faiPartitionTable.inc:344
+msgid "Discs"
+msgstr ""
+
+#: admin/fai/class_faiProfile.inc:30
+msgid "Profile"
+msgstr ""
+
+#: admin/fai/class_faiProfile.inc:31
+msgid "FAI profile"
+msgstr ""
+
+#: admin/fai/class_faiProfile.inc:34
+msgid "FAI Profile"
+msgstr ""
+
+#: admin/fai/class_faiProfile.inc:63
+msgid "FAI classes"
+msgstr ""
+
+#: admin/fai/class_faiProfile.inc:63
+msgid "FAI classes which are part of this profile"
 msgstr ""
 
-#: admin/fai/class_faiHook.inc:65 admin/fai/class_faiVariable.inc:65
-#: admin/fai/class_faiScript.inc:67
+#: admin/fai/class_faiScript.inc:30 admin/fai/class_faiScript.inc:84
+#: admin/fai/class_faiHook.inc:85
+msgid "Script"
+msgstr ""
+
+#: admin/fai/class_faiScript.inc:31 admin/fai/class_faiScript.inc:34
+msgid "FAI script"
+msgstr ""
+
+#: admin/fai/class_faiScript.inc:63
+msgid "Scripts"
+msgstr ""
+
+#: admin/fai/class_faiScript.inc:67 admin/fai/class_faiVariable.inc:65
+#: admin/fai/class_faiHook.inc:65
 msgid "Variables in this class"
 msgstr ""
 
-#: admin/fai/class_faiHook.inc:69 admin/fai/class_faiVariable.inc:69
-#: admin/fai/class_faiScript.inc:71
+#: admin/fai/class_faiScript.inc:71 admin/fai/class_faiVariable.inc:69
+#: admin/fai/class_faiHook.inc:69
 msgid "The name of the variable"
 msgstr ""
 
-#: admin/fai/class_faiHook.inc:73 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiScript.inc:75
+#: admin/fai/class_faiScript.inc:75 admin/fai/class_faiVariable.inc:73
+#: admin/fai/class_faiHook.inc:73
 msgid "A short description of the variable"
 msgstr ""
 
-#: admin/fai/class_faiHook.inc:77
-msgid "Task"
+#: admin/fai/class_faiScript.inc:79
+msgid "Priority"
 msgstr ""
 
-#: admin/fai/class_faiHook.inc:85 admin/fai/class_faiScript.inc:30
-#: admin/fai/class_faiScript.inc:84
-msgid "Script"
+#: admin/fai/class_faiScript.inc:79
+msgid "Priority of this script (smaller is done first)"
 msgstr ""
 
-#: admin/fai/class_faiHook.inc:85
-msgid "The script of this hook"
+#: admin/fai/class_faiScript.inc:84
+msgid "The script itself"
 msgstr ""
 
 #: admin/fai/class_faiTemplate.inc:131
@@ -610,33 +616,6 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiPackageConfiguration.inc:33
-#: admin/fai/class_faiPackageConfiguration.inc:36
-msgid "FAI package configuration"
-msgstr ""
-
-#: admin/fai/class_faiPackageConfiguration.inc:34
-msgid "Configure debconf options of a package"
-msgstr ""
-
-#: admin/fai/class_faiPackageConfiguration.inc:80
-#, php-format
-msgid "Debconf information for package \"%s\""
-msgstr ""
-
-#: admin/fai/class_faiPackageConfiguration.inc:172
-msgid "Warning"
-msgstr ""
-
-#: admin/fai/class_faiPackageConfiguration.inc:173
-#, php-format
-msgid ""
-"The debconf questions \"%s\" are dynamically generated during package "
-"installation and requires choosing between specific options which cannot be "
-"presented here. The entered text needs to be one of the valid choices in "
-"order to take effect."
-msgstr ""
-
 #: admin/fai/class_faiPartition.inc:30
 msgid "Type of sizing - fixed, dynamic or all remaining space"
 msgstr ""
@@ -689,7 +668,7 @@ msgstr ""
 msgid "FAI partition entry"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:229
+#: admin/fai/class_faiPartition.inc:229 admin/fai/class_faiPartition.inc:292
 msgid "Partition"
 msgstr ""
 
@@ -701,12 +680,12 @@ msgstr ""
 msgid "Partition type"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:237 admin/fai/class_faiPartition.inc:374
+#: admin/fai/class_faiPartition.inc:237 admin/fai/class_faiPartition.inc:379
 msgid "Primary"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:237 admin/fai/class_faiPartition.inc:371
-#: admin/fai/class_faiPartition.inc:375
+#: admin/fai/class_faiPartition.inc:237 admin/fai/class_faiPartition.inc:376
+#: admin/fai/class_faiPartition.inc:380
 msgid "Logical"
 msgstr ""
 
@@ -734,169 +713,239 @@ msgstr ""
 msgid "Spare"
 msgstr ""
 
+#: admin/fai/class_faiPartition.inc:269
+msgid "Spare Raid device"
+msgstr ""
+
 #: admin/fai/class_faiPartition.inc:275
 msgid "Missing"
 msgstr ""
 
+#: admin/fai/class_faiPartition.inc:275
+msgid "Missing Raid device"
+msgstr ""
+
 #: admin/fai/class_faiPartition.inc:292
+msgid "Partition to encrypt"
+msgstr ""
+
+#: admin/fai/class_faiPartition.inc:296
+msgid "Password"
+msgstr ""
+
+#: admin/fai/class_faiPartition.inc:296
+msgid ""
+"Password to use for encryption. Leave empty to use a encryption key file "
+"instead."
+msgstr ""
+
+#: admin/fai/class_faiPartition.inc:300
 msgid "Resize"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:292
+#: admin/fai/class_faiPartition.inc:300
 msgid "Resize existing partition"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:296
+#: admin/fai/class_faiPartition.inc:304
 msgid "Bootable"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:296
+#: admin/fai/class_faiPartition.inc:304
 msgid "Wether or not this partition can be booted"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:300
+#: admin/fai/class_faiPartition.inc:308
 msgid "Preserve"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:303
+#: admin/fai/class_faiPartition.inc:308
+msgid "Does the partition need to be preserved"
+msgstr ""
+
+#: admin/fai/class_faiPartition.inc:311
 msgid "Never"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:303
+#: admin/fai/class_faiPartition.inc:311
 msgid "Always"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:303
+#: admin/fai/class_faiPartition.inc:311
 msgid "Reinstall"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:308 admin/fai/class_faiPartition.inc:311
+#: admin/fai/class_faiPartition.inc:316 admin/fai/class_faiPartition.inc:319
 msgid "Filesystem"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:311
+#: admin/fai/class_faiPartition.inc:319
 msgid "The filesystem this partition should be formatted with"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:314
-msgid "swap space"
+#: admin/fai/class_faiPartition.inc:322
+msgid "swap"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:314
+#: admin/fai/class_faiPartition.inc:322
+msgid "fat32"
+msgstr ""
+
+#: admin/fai/class_faiPartition.inc:322
 msgid "ext2"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:314
+#: admin/fai/class_faiPartition.inc:322
 msgid "ext3"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:314
+#: admin/fai/class_faiPartition.inc:322
 msgid "ext4"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:314
+#: admin/fai/class_faiPartition.inc:322
 msgid "reiser fs"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:314
+#: admin/fai/class_faiPartition.inc:322
 msgid "xfs"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:314
+#: admin/fai/class_faiPartition.inc:322
 msgid "btrfs"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:314
+#: admin/fai/class_faiPartition.inc:322
 msgid "LVM/RAID"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:317
-msgid "Encrypted"
+#: admin/fai/class_faiPartition.inc:325
+msgid "Mount point"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:317
-msgid "Wether or not this partition is encrypted"
+#: admin/fai/class_faiPartition.inc:325
+msgid "Mount point for this partition"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:321
-msgid "Mount point"
+#: admin/fai/class_faiPartition.inc:331
+msgid "Options"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:321
-msgid "Mount point for this partition"
+#: admin/fai/class_faiPartition.inc:334
+msgid "Mount options"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:327
-msgid "Options"
+#: admin/fai/class_faiPartition.inc:334
+msgid "Filesystem mount options"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:330
+#: admin/fai/class_faiPartition.inc:339
 msgid "Create options"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:330
+#: admin/fai/class_faiPartition.inc:339
 msgid "Filesystem create options"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:334
+#: admin/fai/class_faiPartition.inc:343
 msgid "Tune options"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:334
+#: admin/fai/class_faiPartition.inc:343
 msgid "Filesystem tune options"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:338
-msgid "Mount options"
-msgstr ""
-
-#: admin/fai/class_faiPartition.inc:338
-msgid "Filesystem mount options"
-msgstr ""
-
-#: admin/fai/class_faiPartition.inc:380
+#: admin/fai/class_faiPartition.inc:385
 msgid "RAID 0"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:381
+#: admin/fai/class_faiPartition.inc:386
 msgid "RAID 1"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:382
+#: admin/fai/class_faiPartition.inc:387
 msgid "RAID 5"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:383
+#: admin/fai/class_faiPartition.inc:388
 msgid "RAID 6"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:478
+#: admin/fai/class_faiPartition.inc:392
+msgid "LUKS"
+msgstr ""
+
+#: admin/fai/class_faiPartition.inc:393
+msgid "Swap"
+msgstr ""
+
+#: admin/fai/class_faiPartition.inc:394
+msgid "tmp"
+msgstr ""
+
+#: admin/fai/class_faiPartition.inc:434
+msgid "Encryption settings"
+msgstr ""
+
+#: admin/fai/class_faiPartition.inc:507
 msgid "Raid arrays must contain at least two partitions!"
 msgstr ""
 
-#: admin/fai/class_faiPartition.inc:480
+#: admin/fai/class_faiPartition.inc:509
 msgid ""
 "Raid 0 arrays can only be realized with a combination of two partitions!"
 msgstr ""
 
-#: admin/fai/class_faiProfile.inc:30
-msgid "Profile"
+#: admin/fai/class_faiVariable.inc:28
+msgid "Variable"
 msgstr ""
 
-#: admin/fai/class_faiProfile.inc:31
-msgid "FAI profile"
+#: admin/fai/class_faiVariable.inc:29 admin/fai/class_faiVariable.inc:32
+msgid "FAI variable"
 msgstr ""
 
-#: admin/fai/class_faiProfile.inc:34
-msgid "FAI Profile"
+#: admin/fai/class_faiVariable.inc:61
+msgid "Variables"
 msgstr ""
 
-#: admin/fai/class_faiProfile.inc:63
-msgid "FAI classes"
+#: admin/fai/class_faiVariable.inc:77
+msgid "Content"
 msgstr ""
 
-#: admin/fai/class_faiProfile.inc:63
-msgid "FAI classes which are part of this profile"
+#: admin/fai/class_faiVariable.inc:77
+msgid "The content of the variable"
+msgstr ""
+
+#: admin/fai/packageSelect/selectPackage-list.xml:11
+msgid "Please select the desired entries"
+msgstr ""
+
+#: admin/fai/packageSelect/selectPackage-list.xml:48
+msgid "Version"
+msgstr ""
+
+#: admin/fai/class_faiHook.inc:28
+msgid "Hook"
+msgstr ""
+
+#: admin/fai/class_faiHook.inc:29 admin/fai/class_faiHook.inc:32
+msgid "FAI hook"
+msgstr ""
+
+#: admin/fai/class_faiHook.inc:61
+msgid "Hooks"
+msgstr ""
+
+#: admin/fai/class_faiHook.inc:77
+msgid "Task"
+msgstr ""
+
+#: admin/fai/class_faiHook.inc:77
+msgid "Task to run"
+msgstr ""
+
+#: admin/fai/class_faiHook.inc:85
+msgid "The script of this hook"
 msgstr ""
 
 #: admin/fai/class_faiManagement.inc:118
@@ -911,52 +960,56 @@ msgstr ""
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
-#: admin/fai/class_faiVariable.inc:28
-msgid "Variable"
+#: admin/fai/class_faiTemplateEntry.inc:142
+msgid "File path"
 msgstr ""
 
-#: admin/fai/class_faiVariable.inc:29 admin/fai/class_faiVariable.inc:32
-msgid "FAI variable"
+#: admin/fai/class_faiTemplateEntry.inc:142
+msgid "Complete absolute template file path and name"
 msgstr ""
 
-#: admin/fai/class_faiVariable.inc:61
-msgid "Variables"
+#: admin/fai/class_faiTemplateEntry.inc:146
+msgid "Short description of the file"
 msgstr ""
 
-#: admin/fai/class_faiVariable.inc:77
-msgid "Content"
+#: admin/fai/class_faiTemplateEntry.inc:155
+msgid "Template attributes"
 msgstr ""
 
-#: admin/fai/class_faiVariable.inc:77
-msgid "The content of the variable"
+#: admin/fai/class_faiTemplateEntry.inc:159
+msgid "Template file content"
 msgstr ""
 
-#: admin/fai/class_faiScript.inc:31 admin/fai/class_faiScript.inc:34
-msgid "FAI script"
+#: admin/fai/class_faiTemplateEntry.inc:159
+msgid "Content of the template file"
 msgstr ""
 
-#: admin/fai/class_faiScript.inc:63
-msgid "Scripts"
+#: admin/fai/class_faiTemplateEntry.inc:163
+msgid "Owner and group of the file"
 msgstr ""
 
-#: admin/fai/class_faiScript.inc:79
-msgid "Priority"
+#: admin/fai/class_faiTemplateEntry.inc:166
+msgid "Owner"
 msgstr ""
 
-#: admin/fai/class_faiScript.inc:79
-msgid "Priority of this script (smaller is done first)"
+#: admin/fai/class_faiTemplateEntry.inc:166
+msgid "File owner"
 msgstr ""
 
-#: admin/fai/class_faiScript.inc:84
-msgid "The script itself"
+#: admin/fai/class_faiTemplateEntry.inc:171
+msgid "Group"
 msgstr ""
 
-#: admin/fai/packageSelect/selectPackage-list.xml:11
-msgid "Please select the desired entries"
+#: admin/fai/class_faiTemplateEntry.inc:171
+msgid "File group"
 msgstr ""
 
-#: admin/fai/packageSelect/selectPackage-list.xml:48
-msgid "Version"
+#: admin/fai/class_faiTemplateEntry.inc:180
+msgid "Access"
+msgstr ""
+
+#: admin/fai/class_faiTemplateEntry.inc:180
+msgid "Access rights"
 msgstr ""
 
 #: admin/fai/packageSelect/selectPackage-filter.tpl.c:2
diff --git a/fai/locale/es/fusiondirectory.po b/fai/locale/es/fusiondirectory.po
index dc48a326aeb887017e726ffa4fdadba76928a58a..14de4c574e1e2cfbfd019aab484e43be1d5552aa 100644
--- a/fai/locale/es/fusiondirectory.po
+++ b/fai/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/fai/class_faiVariable.inc:28
 msgid "Variable"
@@ -50,7 +50,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -78,7 +78,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -123,78 +123,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr "Entrada en la tabla de particiones"
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr "Entrada en la tabla de particiones FAI"
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr "Dispositivo"
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr "clave fstab"
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr "Etiqueta"
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr "UUID"
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr "Etiqueta de disco"
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr "Entradas en la partición"
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr "Particiones físicas combinadas"
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -698,20 +698,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr "FAI"
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/es_CO/fusiondirectory.po b/fai/locale/es_CO/fusiondirectory.po
index 729b751110041976993a61842fbe7bbb86f55562..59dde347dfc1235bee876d17f6061d6cbb3c18ee 100644
--- a/fai/locale/es_CO/fusiondirectory.po
+++ b/fai/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/fai/class_faiVariable.inc:28
 msgid "Variable"
@@ -50,7 +50,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -78,7 +78,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -123,78 +123,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -696,20 +696,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/es_VE/fusiondirectory.po b/fai/locale/es_VE/fusiondirectory.po
index 80bd2168dfbe24c4b3c2c653493c0fea16a12f23..b58a4ddc0c34feb4e4e9460d3cd2592156675e42 100644
--- a/fai/locale/es_VE/fusiondirectory.po
+++ b/fai/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/fai/class_faiVariable.inc:28
 msgid "Variable"
@@ -50,7 +50,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -78,7 +78,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -123,78 +123,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr "Entrada en la tabla de particiones"
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr "Entrada en la tabla de particiones FAI"
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr "Dispositivo"
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr "clave fstab"
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr "Etiqueta"
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr "UUID"
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr "Etiqueta de disco"
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr "Entradas en la partición"
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr "Particiones físicas combinadas"
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -698,20 +698,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr "FAI"
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/fa_IR/fusiondirectory.po b/fai/locale/fa_IR/fusiondirectory.po
index 62855549765beb9d161ddcdd8500d0da71b19bb4..1bda7e8bbd5a06e7e7feaddc75fca5c2b90c05ae 100644
--- a/fai/locale/fa_IR/fusiondirectory.po
+++ b/fai/locale/fa_IR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
@@ -50,7 +50,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -78,7 +78,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -123,78 +123,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -696,20 +696,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/fi_FI/fusiondirectory.po b/fai/locale/fi_FI/fusiondirectory.po
index 7ccae15f40dfc653db1c6d77db778e9de09112ab..022f1e5eb7e44233be2363cecec0a52a6c7c806c 100644
--- a/fai/locale/fi_FI/fusiondirectory.po
+++ b/fai/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
@@ -50,7 +50,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -78,7 +78,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -123,78 +123,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -696,20 +696,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/fr/fusiondirectory.po b/fai/locale/fr/fusiondirectory.po
index 912ad6d688bb762eb81f33aafceae34446bd125b..146b632b3fe506c9cd2827ec6077d242653344f2 100644
--- a/fai/locale/fr/fusiondirectory.po
+++ b/fai/locale/fr/fusiondirectory.po
@@ -6,22 +6,22 @@
 # Translators:
 # MCMic, 2018
 # fusiondirectory <contact@fusiondirectory.org>, 2018
-# Benoit Mortier <benoit.mortier@opensides.be>, 2018
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
-"Last-Translator: Benoit Mortier <benoit.mortier@opensides.be>, 2018\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/fai/class_faiVariable.inc:28
 msgid "Variable"
@@ -52,7 +52,7 @@ msgid "Variables class name"
 msgstr "Nom de la classe variables"
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -80,7 +80,7 @@ msgstr "Variables dans cette classe"
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -127,80 +127,80 @@ msgstr ""
 "Ce disque ne peut pas être supprimé car il est utilisé par la définition de "
 "disque \"%s\" !"
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr "Entrée de la table des partitions"
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr "Entrée de la table de partition FAI"
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr "Périphérique"
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr "Nom du disque"
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr "Description courte"
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr "Entrée fstab"
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr "Clé à utiliser dans le fichier fstab"
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr "Étiquette"
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr "UUID"
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr "Étiquette du disque"
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr "Initialisation aléatoire"
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 "Initialiser toutes les partitions chiffrées avec des données aléatoires"
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr "Liste de partitions"
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr "Partitions physiques combinées"
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr "Combination des partitions physiques dans volume LVM"
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr "Partitions dans cette classe"
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 "Vous avez plus de quatre partitions primaires dans votre configuration."
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -711,20 +711,20 @@ msgstr "Fichiers du modèle"
 msgid "Template files in this class"
 msgstr "Fichiers de modèle de cette classe"
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr "FAI"
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr "Gestion des paquets logiciels et recettes de déploiement FAI"
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr "Il n'y a pas de branche FAI"
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr "Veuillez ajouter au moins un service de dépôt pour créer celle-ci."
 
diff --git a/fai/locale/hu_HU/fusiondirectory.po b/fai/locale/hu_HU/fusiondirectory.po
index a29b6e3af531008cecde7c817f365d78abb4817b..b3d9a08de4afb724c9208637aac4804de163b851 100644
--- a/fai/locale/hu_HU/fusiondirectory.po
+++ b/fai/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
@@ -50,7 +50,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -78,7 +78,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -123,78 +123,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -696,20 +696,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/id/fusiondirectory.po b/fai/locale/id/fusiondirectory.po
index d0727bb7c013b0780e1a7b016011f6112aeacf21..0ec7d5ef7b71553e8f3ecac58de2085ab6bbbc50 100644
--- a/fai/locale/id/fusiondirectory.po
+++ b/fai/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
@@ -46,7 +46,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -74,7 +74,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -119,78 +119,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -692,20 +692,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/it_IT/fusiondirectory.po b/fai/locale/it_IT/fusiondirectory.po
index 264e9ea662f0a2414b011e248aa416c337aa2281..f547ca032220a7c9ac93eb2bbda708a69745a857 100644
--- a/fai/locale/it_IT/fusiondirectory.po
+++ b/fai/locale/it_IT/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: Paola Penati <paola.penati@opensides.be>, 2018\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -20,7 +20,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/fai/class_faiVariable.inc:28
 msgid "Variable"
@@ -51,7 +51,7 @@ msgid "Variables class name"
 msgstr "Nome di classe variabile"
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -79,7 +79,7 @@ msgstr "Variabili di questa classe"
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -126,78 +126,78 @@ msgstr ""
 "La partizione non può essere rimossa mentre é in uso nella definizione del "
 "disco '%s' !"
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr "Elenco della tavola delle partizioni"
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr "Elenco della tavola delle partizioni FAI"
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr "Dispositivo"
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr "Nome del disco"
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr "Breve descrizione"
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr "chiave fstab"
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr "Chiave da usare nel file fstab"
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr "Etichetta"
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr "UUID"
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr "Etichetta del disco"
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr "Init casuale"
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr "Inizializza tutte le partizioni crittografate con dati casuali"
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr "Elenco delle partizioni"
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr "Combinazione delle partizioni fisiche"
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr "Partizioni fisiche combinate in questo volume LVM"
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr "Partizioni in questa classe"
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr "Ci sono più di quattro partizioni primarie nella tua configurazione"
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -708,20 +708,20 @@ msgstr "Modelli di file"
 msgid "Template files in this class"
 msgstr "File modelli di questa classe"
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr "FAI"
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr "Gestire i pacchetti software e le ricette di implementazione di FAI"
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr "Non ci sono rami FAI"
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr "Prego aggiungere almeno un servizio repository per creare questi"
 
diff --git a/fai/locale/ja/fusiondirectory.po b/fai/locale/ja/fusiondirectory.po
index 3b5a016079966f3e25bde245a778088cca5c1044..e9cc0dddad7ef74767fe3eb49e984d73abdb0f61 100644
--- a/fai/locale/ja/fusiondirectory.po
+++ b/fai/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
@@ -46,7 +46,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -74,7 +74,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -119,78 +119,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -692,20 +692,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/ko/fusiondirectory.po b/fai/locale/ko/fusiondirectory.po
index 36d8782cb98afe8b6c00611e9d016748b0714557..8714d2f11773752bca6c6eeb105198388970733a 100644
--- a/fai/locale/ko/fusiondirectory.po
+++ b/fai/locale/ko/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# Choi Chris <chulwon.choi@gmail.com>, 2018
+# Choi Chris <chulwon.choi@gmail.com>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
-"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
+"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2021\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -50,7 +50,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -78,7 +78,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -97,7 +97,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:77
 msgid "Content"
-msgstr ""
+msgstr "본문"
 
 #: admin/fai/class_faiVariable.inc:77
 msgid "The content of the variable"
@@ -123,78 +123,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
-msgstr ""
+msgstr "디바이스"
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr "라"
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -226,7 +226,7 @@ msgstr ""
 
 #: admin/fai/class_faiPartition.inc:33
 msgid "Fixed"
-msgstr ""
+msgstr "수정됨"
 
 #: admin/fai/class_faiPartition.inc:33
 msgid "Dynamic"
@@ -369,7 +369,7 @@ msgstr ""
 
 #: admin/fai/class_faiPartition.inc:311
 msgid "Never"
-msgstr ""
+msgstr "제한없음"
 
 #: admin/fai/class_faiPartition.inc:311
 msgid "Always"
@@ -611,7 +611,7 @@ msgstr ""
 
 #: admin/fai/class_faiPackage.inc:409 admin/systems/class_faiStartup.inc:103
 msgid "Repository"
-msgstr ""
+msgstr "리포지토리"
 
 #: admin/fai/class_faiPackage.inc:412 admin/systems/class_faiStartup.inc:91
 #: admin/systems/services/repository/class_serviceRepository.inc:40
@@ -649,15 +649,15 @@ msgstr ""
 
 #: admin/fai/class_faiHook.inc:28
 msgid "Hook"
-msgstr ""
+msgstr "Hook"
 
 #: admin/fai/class_faiHook.inc:29 admin/fai/class_faiHook.inc:32
 msgid "FAI hook"
-msgstr ""
+msgstr "FAI hook"
 
 #: admin/fai/class_faiHook.inc:61
 msgid "Hooks"
-msgstr ""
+msgstr "Hooks"
 
 #: admin/fai/class_faiHook.inc:77
 msgid "Task"
@@ -669,7 +669,7 @@ msgstr ""
 
 #: admin/fai/class_faiHook.inc:85
 msgid "The script of this hook"
-msgstr ""
+msgstr "이 hook의 스크립트"
 
 #: admin/fai/class_faiTemplate.inc:131
 #, php-format
@@ -696,20 +696,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr "FAI"
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
@@ -796,19 +796,19 @@ msgstr ""
 
 #: admin/systems/class_faiLogView.inc:57
 msgid "Sort down"
-msgstr ""
+msgstr "차순"
 
 #: admin/systems/class_faiLogView.inc:59
 msgid "Sort up"
-msgstr ""
+msgstr "오름차순"
 
 #: admin/systems/class_faiLogView.inc:71
 msgid "File"
-msgstr ""
+msgstr "파일"
 
 #: admin/systems/class_faiLogView.inc:72
 msgid "Date"
-msgstr ""
+msgstr "일자"
 
 #: admin/systems/class_faiLogView.inc:149
 #: admin/systems/class_faiLogView.inc:152
@@ -943,7 +943,7 @@ msgstr ""
 
 #: admin/systems/services/repository/class_serviceRepository.inc:174
 msgid "Repositories"
-msgstr ""
+msgstr "리포지토리"
 
 #: admin/systems/services/repository/class_serviceRepository.inc:179
 msgid "Repositories this server hosts"
@@ -968,7 +968,7 @@ msgstr ""
 
 #: admin/systems/services/monitor/class_argonautFAIMonitor.inc:48
 msgid "Timeout"
-msgstr ""
+msgstr "타임아웃"
 
 #: admin/systems/services/monitor/class_argonautFAIMonitor.inc:48
 msgid "The timeout for bad clients. 0 to disable."
@@ -976,7 +976,7 @@ msgstr ""
 
 #: admin/systems/services/monitor/class_argonautFAIMonitor.inc:53
 msgid "CA certificate"
-msgstr ""
+msgstr "CA 인증서"
 
 #: admin/systems/services/monitor/class_argonautFAIMonitor.inc:53
 msgid "Path to the CA certificate file on Argonaut FAI monitor server"
@@ -984,7 +984,7 @@ msgstr ""
 
 #: admin/systems/services/monitor/class_argonautFAIMonitor.inc:58
 msgid "Log directory"
-msgstr ""
+msgstr "로그 디렉토리"
 
 #: admin/systems/services/monitor/class_argonautFAIMonitor.inc:58
 msgid "Directory in which argonaut-fai-monitor will store its log"
diff --git a/fai/locale/lv/fusiondirectory.po b/fai/locale/lv/fusiondirectory.po
index f26856e70608e372e73a798ddbe6012713771eb5..1058a9b0a6065d64ae682a2ce68d0c49c0a2b61c 100644
--- a/fai/locale/lv/fusiondirectory.po
+++ b/fai/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
@@ -50,7 +50,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -78,7 +78,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -123,78 +123,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -696,20 +696,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/nb/fusiondirectory.po b/fai/locale/nb/fusiondirectory.po
index 881288f409662048504fa21b56ca15e441f6d61f..ff111839bd7a1510fe4e510bff71d0b8e2510ffb 100644
--- a/fai/locale/nb/fusiondirectory.po
+++ b/fai/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
@@ -50,7 +50,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -78,7 +78,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -123,78 +123,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -696,20 +696,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/nl/fusiondirectory.po b/fai/locale/nl/fusiondirectory.po
index 3e22bf8ef630c671b8077fba5ea7ffb0db4d828c..d295a92f11eeb658f9f186563afd27afa8242495 100644
--- a/fai/locale/nl/fusiondirectory.po
+++ b/fai/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2018\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
@@ -51,7 +51,7 @@ msgid "Variables class name"
 msgstr "Variabele klassenaam"
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -79,7 +79,7 @@ msgstr "Variabelen in deze klasse"
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -126,78 +126,78 @@ msgstr ""
 "De partitie kan niet verwijderd worden terwijl het in gebruik is in de "
 "\"%s\" disk definitie!"
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr "Partitie tabelinvoer"
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr "FAI partitie tabelinvoer"
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr "Apparaat"
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr "Disk naam"
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr "korte omschrijving"
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr "fstab sleutel"
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr "sleutel om in fstab bestand te gebruiken"
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr "Label"
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr "UUID"
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr "Disklabel"
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr "Partitie regels"
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr "Gecombineerd fysieke partities"
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr "Fysieke partitie gecombineerd in dit LVM volume"
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr "Partitie in deze klasse"
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr "Je hebt meer dan vier primaire partitie tabelrijen in je configuratie"
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -709,20 +709,20 @@ msgstr "Sjabloonbestanden"
 msgid "Template files in this class"
 msgstr "Sjabloonbestand in deze klasse"
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr "FAI"
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr "Beheer FAI software pakketten and deployment recepten"
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr "Er zijn geen FAI branches"
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 "A.u.b. voeg ten minste één repository service toe om deze aan te maken"
diff --git a/fai/locale/pl/fusiondirectory.po b/fai/locale/pl/fusiondirectory.po
index 7ed3bbda4c1818c708c3b82e74dec73a670c35cd..f3526bf8b868f603088a457c42f7635738629c43 100644
--- a/fai/locale/pl/fusiondirectory.po
+++ b/fai/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
@@ -50,7 +50,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -78,7 +78,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -123,78 +123,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr "UrzÄ…dzenie"
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr "Partycje"
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -696,20 +696,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr "FAI"
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/pt/fusiondirectory.po b/fai/locale/pt/fusiondirectory.po
index 991710d532d28e4ea939e4a4e03a2a10b8c1c172..5e7426ae454511fabfa45111e6e4f2b157b9e0d6 100644
--- a/fai/locale/pt/fusiondirectory.po
+++ b/fai/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/fai/class_faiVariable.inc:28
 msgid "Variable"
@@ -50,7 +50,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -78,7 +78,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -123,78 +123,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -696,20 +696,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/pt_BR/fusiondirectory.po b/fai/locale/pt_BR/fusiondirectory.po
index dbbaac5e1e30190b37d5a0d98a6523080919888f..8e99f674fe90057fbf3b8939768c22e5311a61d5 100644
--- a/fai/locale/pt_BR/fusiondirectory.po
+++ b/fai/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/fai/class_faiVariable.inc:28
 msgid "Variable"
@@ -50,7 +50,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -78,7 +78,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -123,78 +123,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr "Entrada na tabela de partição"
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr "Entrada na tabela de partição FAI"
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr "Dispositivo"
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr "Rótulo"
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr "UUID"
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -696,20 +696,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr "FAI"
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr "Gerencias pacotes de software FAI e receitas de implantação"
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/ru/fusiondirectory.po b/fai/locale/ru/fusiondirectory.po
index 98298340efcbf6c6d6b179de60add3b190e383d5..631f4e2bf31146b7582c37c0ffe714c7add1d758 100644
--- a/fai/locale/ru/fusiondirectory.po
+++ b/fai/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
@@ -50,7 +50,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -78,7 +78,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -123,78 +123,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr "Обозначение"
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -696,20 +696,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr "FAI"
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/ru@petr1708/fusiondirectory.po b/fai/locale/ru@petr1708/fusiondirectory.po
index b0ce012766b0f296f26a5dc7d3bc04022ddc240b..8fa156e2cd70eff5b0ed8e2cba579396f1e5321d 100644
--- a/fai/locale/ru@petr1708/fusiondirectory.po
+++ b/fai/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
@@ -46,7 +46,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -74,7 +74,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -119,78 +119,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -692,20 +692,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/sv/fusiondirectory.po b/fai/locale/sv/fusiondirectory.po
index 937ec9e5ec037ee9159434d533d58764b1e0a38c..f1c44756850635291cffc74c5a72a472d4bfe9a9 100644
--- a/fai/locale/sv/fusiondirectory.po
+++ b/fai/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
@@ -50,7 +50,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -78,7 +78,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -123,78 +123,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr "Partitionstabellspost"
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr "FAI-partitionstabellspost"
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr "Enhet"
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr "fstab-nyckel"
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr "Etikett"
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr "UUID"
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr "Disketikett"
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr "Partitionsposter"
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr "Kombinerade fysiska partitioner"
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -697,20 +697,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr "FAI"
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr "Hantera FAI-programpaket och deployment-recept"
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/tr_TR/fusiondirectory.po b/fai/locale/tr_TR/fusiondirectory.po
index 5f6827c8e01750167cfec6f0de9796e21209ef1d..7b5d1fb6005057d218cbbb8714e8f45a2b81a704 100644
--- a/fai/locale/tr_TR/fusiondirectory.po
+++ b/fai/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2021
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2021\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -46,7 +50,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -74,7 +78,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -110,7 +114,7 @@ msgstr ""
 #: admin/fai/class_faiDiskEntry.inc:146 admin/systems/class_faiLogView.inc:201
 #: admin/systems/class_faiLogView.inc:243
 msgid "Error"
-msgstr ""
+msgstr "Hata"
 
 #: admin/fai/class_faiDiskEntry.inc:147
 #, php-format
@@ -119,78 +123,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
-msgstr ""
+msgstr "Etiket"
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -274,7 +278,7 @@ msgstr ""
 
 #: admin/fai/class_faiPartition.inc:234
 msgid "Type"
-msgstr ""
+msgstr "Tür"
 
 #: admin/fai/class_faiPartition.inc:234
 msgid "Partition type"
@@ -331,7 +335,7 @@ msgstr ""
 
 #: admin/fai/class_faiPartition.inc:296
 msgid "Password"
-msgstr ""
+msgstr "Parola"
 
 #: admin/fai/class_faiPartition.inc:296
 msgid ""
@@ -561,7 +565,7 @@ msgstr ""
 
 #: admin/fai/class_faiPackageConfiguration.inc:172
 msgid "Warning"
-msgstr ""
+msgstr "İkaz"
 
 #: admin/fai/class_faiPackageConfiguration.inc:173
 #, php-format
@@ -692,20 +696,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
@@ -800,7 +804,7 @@ msgstr ""
 
 #: admin/systems/class_faiLogView.inc:71
 msgid "File"
-msgstr ""
+msgstr "Dosya"
 
 #: admin/systems/class_faiLogView.inc:72
 msgid "Date"
diff --git a/fai/locale/ug/fusiondirectory.po b/fai/locale/ug/fusiondirectory.po
index bff76fb550807a46399ab438d4f66fb8a2b5b919..ac60ea42eeb4890e1f09d44f250d649cf4d45902 100644
--- a/fai/locale/ug/fusiondirectory.po
+++ b/fai/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/fai/class_faiVariable.inc:28
 msgid "Variable"
@@ -46,7 +46,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -74,7 +74,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -119,78 +119,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -692,20 +692,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/vi_VN/fusiondirectory.po b/fai/locale/vi_VN/fusiondirectory.po
index a3079936b8e145d00c298f8a020c18d2ab831da4..4846c3b719e84a3d969d478b9a904489f34b6a28 100644
--- a/fai/locale/vi_VN/fusiondirectory.po
+++ b/fai/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
@@ -50,7 +50,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -78,7 +78,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -123,78 +123,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -696,20 +696,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/zh/fusiondirectory.po b/fai/locale/zh/fusiondirectory.po
index 0f7f314865b620c87f831e8472c6f4417369f27c..0e8336817b67ea1926de78a7ab880ff1a319bc9d 100644
--- a/fai/locale/zh/fusiondirectory.po
+++ b/fai/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
@@ -50,7 +50,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -78,7 +78,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -123,78 +123,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr "设备"
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr "分区条目"
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -696,20 +696,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr "自动化安装"
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/fai/locale/zh_TW/fusiondirectory.po b/fai/locale/zh_TW/fusiondirectory.po
index 032715cefba5ae314f30d6de2b9081931e43be0d..1c610cc81bb93fc8d9ace6785c76ecd833731ee1 100644
--- a/fai/locale/zh_TW/fusiondirectory.po
+++ b/fai/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:10+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
@@ -46,7 +46,7 @@ msgid "Variables class name"
 msgstr ""
 
 #: admin/fai/class_faiVariable.inc:55 admin/fai/class_faiVariable.inc:73
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 #: admin/fai/class_faiScript.inc:57 admin/fai/class_faiScript.inc:75
 #: admin/fai/class_faiProfile.inc:56 admin/fai/class_faiPackage.inc:403
 #: admin/fai/class_faiHook.inc:55 admin/fai/class_faiHook.inc:73
@@ -74,7 +74,7 @@ msgstr ""
 
 #: admin/fai/class_faiVariable.inc:69
 #: admin/fai/class_faiSimplePluginClass.inc:51
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 #: admin/fai/packageSelect/selectPackage-list.xml:40
 #: admin/fai/class_faiPartition.inc:240 admin/fai/class_faiScript.inc:71
 #: admin/fai/class_faiHook.inc:69
@@ -119,78 +119,78 @@ msgid ""
 "definition!"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:226
+#: admin/fai/class_faiDiskEntry.inc:228
 msgid "Partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:227
+#: admin/fai/class_faiDiskEntry.inc:229
 msgid "FAI partition table entry"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:238 admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:240 admin/fai/class_faiDiskEntry.inc:256
 msgid "Device"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:241
+#: admin/fai/class_faiDiskEntry.inc:243
 msgid "Disk name"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:247 admin/fai/class_faiPartition.inc:246
+#: admin/fai/class_faiDiskEntry.inc:249 admin/fai/class_faiPartition.inc:246
 msgid "Short description"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "fstab key"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:251
+#: admin/fai/class_faiDiskEntry.inc:253
 msgid "Key to use in fstab file"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "Label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:254
+#: admin/fai/class_faiDiskEntry.inc:256
 msgid "UUID"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:257
+#: admin/fai/class_faiDiskEntry.inc:259
 msgid "Disk label"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Random init"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:263
+#: admin/fai/class_faiDiskEntry.inc:265
 msgid "Initialise all encrypted partitions with random data"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:270
+#: admin/fai/class_faiDiskEntry.inc:272
 msgid "Partition entries"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275 admin/fai/class_faiPartition.inc:452
+#: admin/fai/class_faiDiskEntry.inc:277 admin/fai/class_faiPartition.inc:452
 msgid "Combined physical partitions"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:275
+#: admin/fai/class_faiDiskEntry.inc:277
 msgid "Physical partitions combined in this LVM volume"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:281
+#: admin/fai/class_faiDiskEntry.inc:283
 #: admin/fai/class_faiPartitionTable.inc:351
 msgid "Partitions in this class"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:579
+#: admin/fai/class_faiDiskEntry.inc:581
 msgid ""
 "You have more than four primary partition table entries in your "
 "configuration"
 msgstr ""
 
-#: admin/fai/class_faiDiskEntry.inc:583
+#: admin/fai/class_faiDiskEntry.inc:585
 msgid ""
 "You cannot have more than three primary partition while using logical "
 "partitions"
@@ -692,20 +692,20 @@ msgstr ""
 msgid "Template files in this class"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:117 admin/fai/class_faiManagement.inc:122
+#: admin/fai/class_faiManagement.inc:116 admin/fai/class_faiManagement.inc:121
 #: admin/systems/class_faiStartup.inc:64 config/fai/class_faiConfig.inc:41
 msgid "FAI"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:118
+#: admin/fai/class_faiManagement.inc:117
 msgid "Manage FAI software packages and deployment recipes"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:138
+#: admin/fai/class_faiManagement.inc:137
 msgid "There are no FAI branches"
 msgstr ""
 
-#: admin/fai/class_faiManagement.inc:141
+#: admin/fai/class_faiManagement.inc:140
 msgid " Please add at least one repository service to create those."
 msgstr ""
 
diff --git a/freeradius/admin/freeradius/class_freeradiusGroup.inc b/freeradius/admin/freeradius/class_freeradiusGroup.inc
index 671039d25355a2a24476e81800ceb342b32df7a1..6ac2977e53eeac17884441523dd6fdc1886af856 100644
--- a/freeradius/admin/freeradius/class_freeradiusGroup.inc
+++ b/freeradius/admin/freeradius/class_freeradiusGroup.inc
@@ -23,21 +23,21 @@
 class freeradiusGroup extends simplePlugin {
 
   var $displayHeader = TRUE;
-  var $objectclasses = array('radiusprofile');
+  var $objectclasses = ['radiusprofile'];
 
   /*!
    * \brief Plugin information
    */
   static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'       => _('Freeradius'),
       'plDescription'     => _('This Plugin is for Radius accounting based in FreeRadius'),
       'plIcon'            => 'geticon.php?context=applications&icon=freeradius&size=48',
       'plSmallIcon'       => 'geticon.php?context=applications&icon=freeradius&size=16',
-      'plObjectType'      => array('group'),
+      'plObjectType'      => ['group'],
       'plProvidedAcls'    => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   /*!
@@ -45,11 +45,11 @@ class freeradiusGroup extends simplePlugin {
    */
   static function getAttributesInfo ()
   {
-    return array(
+    return [
     // Attributes are grouped by section
-    'section1' => array(
+    'section1' => [
         'name'  => _('Support 802.1x'),
-        'attrs' => array(
+        'attrs' => [
           new StringAttribute(
             _('Tunnel medium type'),
             _('Name of the tunnel medium type'),
@@ -71,9 +71,9 @@ class freeradiusGroup extends simplePlugin {
             FALSE,
             ''
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 
diff --git a/freeradius/locale/af_ZA/fusiondirectory.po b/freeradius/locale/af_ZA/fusiondirectory.po
index 704e3106b989252bb7c3aceed1a1935e65d92956..46588cc8f3f71b546377e4b6f0b43dda9fa9b84a 100644
--- a/freeradius/locale/af_ZA/fusiondirectory.po
+++ b/freeradius/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/freeradius/locale/ar/fusiondirectory.po b/freeradius/locale/ar/fusiondirectory.po
index 9e0fc103288fa1f823615e0cb5c08facfdfac434..98c297970d941b8f571a430841a1d3bf92760ce8 100644
--- a/freeradius/locale/ar/fusiondirectory.po
+++ b/freeradius/locale/ar/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
 "MIME-Version: 1.0\n"
diff --git a/freeradius/locale/ca/fusiondirectory.po b/freeradius/locale/ca/fusiondirectory.po
index f3e4fd954a272b2c01b5a60b8ebd320ab5e7e276..0936045d2c45f649dd7d416f54bfc8fd3458f9ef 100644
--- a/freeradius/locale/ca/fusiondirectory.po
+++ b/freeradius/locale/ca/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
 "MIME-Version: 1.0\n"
diff --git a/freeradius/locale/cs_CZ/fusiondirectory.po b/freeradius/locale/cs_CZ/fusiondirectory.po
index 3ef5d65a45b5a5ed110d355012d3e463277b049f..ceec3025190dc960f2ab3534c2f10858d6b6c82f 100644
--- a/freeradius/locale/cs_CZ/fusiondirectory.po
+++ b/freeradius/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/freeradius/locale/de/fusiondirectory.po b/freeradius/locale/de/fusiondirectory.po
index cc1bd2b39fbbb18c19edb53a095fc304b13ce04c..0826bfd36737eb8155aca0fb42824b0a08c7433d 100644
--- a/freeradius/locale/de/fusiondirectory.po
+++ b/freeradius/locale/de/fusiondirectory.po
@@ -5,15 +5,16 @@
 # 
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2016
+# Ettore Atalan <atalanttore@googlemail.com>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
-"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
+"Last-Translator: Ettore Atalan <atalanttore@googlemail.com>, 2021\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -81,7 +82,7 @@ msgstr "Gruppen"
 
 #: personal/freeradius/class_freeradiusAccount.inc:85
 msgid "FreeRadius Group"
-msgstr "FreeRadius Gruppe"
+msgstr "FreeRadius-Gruppe"
 
 #: personal/freeradius/class_freeradiusAccount.inc:94
 msgid "User preferences"
diff --git a/freeradius/locale/el_GR/fusiondirectory.po b/freeradius/locale/el_GR/fusiondirectory.po
index 6c548805326c661a831b02386dc33b6d36d77317..b1ad7f67ec89028967ed0773ce11091477ba4bb0 100644
--- a/freeradius/locale/el_GR/fusiondirectory.po
+++ b/freeradius/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/freeradius/locale/en/fusiondirectory.po b/freeradius/locale/en/fusiondirectory.po
index 1623b3fd2146975a7d69cff15a7a25bfa35b6447..8293be54907ae01ecf663cdb0817755db4e26f3c 100644
--- a/freeradius/locale/en/fusiondirectory.po
+++ b/freeradius/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,48 +17,48 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: personal/freeradius/class_freeradiusAccount.inc:35
 #: admin/freeradius/class_freeradiusGroup.inc:34
+#: personal/freeradius/class_freeradiusAccount.inc:35
 msgid "Freeradius"
 msgstr ""
 
-#: personal/freeradius/class_freeradiusAccount.inc:36
 #: admin/freeradius/class_freeradiusGroup.inc:35
+#: personal/freeradius/class_freeradiusAccount.inc:36
 msgid "This Plugin is for Radius accounting based in FreeRadius"
 msgstr ""
 
+#: admin/freeradius/class_freeradiusGroup.inc:51
 #: personal/freeradius/class_freeradiusAccount.inc:55
-#: admin/freeradius/class_freeradiusGroup.inc:49
 msgid "Support 802.1x"
 msgstr ""
 
+#: admin/freeradius/class_freeradiusGroup.inc:54
 #: personal/freeradius/class_freeradiusAccount.inc:58
-#: admin/freeradius/class_freeradiusGroup.inc:52
 msgid "Tunnel medium type"
 msgstr ""
 
+#: admin/freeradius/class_freeradiusGroup.inc:55
 #: personal/freeradius/class_freeradiusAccount.inc:58
-#: admin/freeradius/class_freeradiusGroup.inc:53
 msgid "Name of the tunnel medium type"
 msgstr ""
 
+#: admin/freeradius/class_freeradiusGroup.inc:61
 #: personal/freeradius/class_freeradiusAccount.inc:63
-#: admin/freeradius/class_freeradiusGroup.inc:59
 msgid "Tunnel type"
 msgstr ""
 
+#: admin/freeradius/class_freeradiusGroup.inc:62
 #: personal/freeradius/class_freeradiusAccount.inc:63
-#: admin/freeradius/class_freeradiusGroup.inc:60
 msgid "Name of the tunnel type"
 msgstr ""
 
+#: admin/freeradius/class_freeradiusGroup.inc:68
 #: personal/freeradius/class_freeradiusAccount.inc:68
-#: admin/freeradius/class_freeradiusGroup.inc:66
 msgid "VLAN id"
 msgstr ""
 
+#: admin/freeradius/class_freeradiusGroup.inc:69
 #: personal/freeradius/class_freeradiusAccount.inc:68
-#: admin/freeradius/class_freeradiusGroup.inc:67
 msgid "VLAN identifier"
 msgstr ""
 
diff --git a/freeradius/locale/es/fusiondirectory.po b/freeradius/locale/es/fusiondirectory.po
index 842dd49ebedcb080e0af4f2f3157efdf5ec528b1..e440c36a7f8a2e303f8a751c132e4949e0d8c3f3 100644
--- a/freeradius/locale/es/fusiondirectory.po
+++ b/freeradius/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/freeradius/class_freeradiusGroup.inc:34
 #: personal/freeradius/class_freeradiusAccount.inc:35
diff --git a/freeradius/locale/es_CO/fusiondirectory.po b/freeradius/locale/es_CO/fusiondirectory.po
index 8181238ed4e92b25b8b20df50055088189ff056e..64545ebfa1030eba37bbccdf6aeaa38c9c150ab3 100644
--- a/freeradius/locale/es_CO/fusiondirectory.po
+++ b/freeradius/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/freeradius/class_freeradiusGroup.inc:34
 #: personal/freeradius/class_freeradiusAccount.inc:35
diff --git a/freeradius/locale/es_VE/fusiondirectory.po b/freeradius/locale/es_VE/fusiondirectory.po
index 8be98dea86a76a3a8752ca7c676a0b958a4dced0..d1abbe39fddc628ef46006131438bfd52a629012 100644
--- a/freeradius/locale/es_VE/fusiondirectory.po
+++ b/freeradius/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/freeradius/class_freeradiusGroup.inc:34
 #: personal/freeradius/class_freeradiusAccount.inc:35
diff --git a/freeradius/locale/fa_IR/fusiondirectory.po b/freeradius/locale/fa_IR/fusiondirectory.po
index 843677e504b5f066a0682d4341a91e8d89bb6245..1c80c1ed0a33a75459af843f2b4b3a502ef58de2 100644
--- a/freeradius/locale/fa_IR/fusiondirectory.po
+++ b/freeradius/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/freeradius/locale/fi_FI/fusiondirectory.po b/freeradius/locale/fi_FI/fusiondirectory.po
index 0bdb5780f9caf0357f4671bf194af6a9afb468fa..bee3b299661c6a08a15c8734b9fb1fcd576836b9 100644
--- a/freeradius/locale/fi_FI/fusiondirectory.po
+++ b/freeradius/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/freeradius/locale/fr/fusiondirectory.po b/freeradius/locale/fr/fusiondirectory.po
index 8da8d12ee31dad4dd6a99dfe7f5e81affd1575fa..f0eec1f2f18267b178e82bd28a2a2509792f56a1 100644
--- a/freeradius/locale/fr/fusiondirectory.po
+++ b/freeradius/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/freeradius/class_freeradiusGroup.inc:34
 #: personal/freeradius/class_freeradiusAccount.inc:35
diff --git a/freeradius/locale/hu_HU/fusiondirectory.po b/freeradius/locale/hu_HU/fusiondirectory.po
index 782b6cf6f61f25fdf3ab8c4cd177e1ee185f3a3a..43e4e1b2b88c7b38e398754beb6b67f163321476 100644
--- a/freeradius/locale/hu_HU/fusiondirectory.po
+++ b/freeradius/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/freeradius/locale/id/fusiondirectory.po b/freeradius/locale/id/fusiondirectory.po
index e6de37436c705b19f7a75b2ef21bdf16e5dd796f..2a0ce6a9ab6390b284f6c3d9c1dd5c94a5b9fe19 100644
--- a/freeradius/locale/id/fusiondirectory.po
+++ b/freeradius/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/freeradius/locale/it_IT/fusiondirectory.po b/freeradius/locale/it_IT/fusiondirectory.po
index ffa973a0022c6c305e37d4efa2d9861db5f70e21..5850f1ac5c0f5dc9f7fc1a7005940bf83a2dab06 100644
--- a/freeradius/locale/it_IT/fusiondirectory.po
+++ b/freeradius/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/freeradius/class_freeradiusGroup.inc:34
 #: personal/freeradius/class_freeradiusAccount.inc:35
diff --git a/freeradius/locale/ja/fusiondirectory.po b/freeradius/locale/ja/fusiondirectory.po
index 5435366612527c2825fc3834ffcf035ba1471837..c0bbe2c2e52062dff15ee488c6f15a9f1973a1d9 100644
--- a/freeradius/locale/ja/fusiondirectory.po
+++ b/freeradius/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/freeradius/locale/ko/fusiondirectory.po b/freeradius/locale/ko/fusiondirectory.po
index c9110e761775f0d2685d60b0329a8a338b502d29..4df91a262e6a40bbf4a4da4874d8560c184e16c5 100644
--- a/freeradius/locale/ko/fusiondirectory.po
+++ b/freeradius/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/freeradius/locale/lv/fusiondirectory.po b/freeradius/locale/lv/fusiondirectory.po
index 3cec5e58dd6069dc591f5c553c373c3b8096153e..ec826511c8597e98d9443bf627c8efea08456591 100644
--- a/freeradius/locale/lv/fusiondirectory.po
+++ b/freeradius/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/freeradius/locale/nb/fusiondirectory.po b/freeradius/locale/nb/fusiondirectory.po
index 3c3ae9c37b57faa360fb5ba2bc73ae1239462b71..fdbe19135d46a30cf0aa432fca0d85df11f00412 100644
--- a/freeradius/locale/nb/fusiondirectory.po
+++ b/freeradius/locale/nb/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
 "MIME-Version: 1.0\n"
diff --git a/freeradius/locale/nl/fusiondirectory.po b/freeradius/locale/nl/fusiondirectory.po
index 832cf3621dae552ef2a4c812c0a6e9ee2affa728..12060a213fe5147ba780c35d58fc435e932542e0 100644
--- a/freeradius/locale/nl/fusiondirectory.po
+++ b/freeradius/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/freeradius/locale/pl/fusiondirectory.po b/freeradius/locale/pl/fusiondirectory.po
index 76a7ab94ab71577694abb264cad13c77f9f6fc34..3f7418c8a8c8638c28970b10fdc75f6eda01c986 100644
--- a/freeradius/locale/pl/fusiondirectory.po
+++ b/freeradius/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/freeradius/locale/pt/fusiondirectory.po b/freeradius/locale/pt/fusiondirectory.po
index d665e9e3b2c4ba4af7c390e6ed2a78c663eea45c..467873be8b6845e1e51762fe4b54a916524eb7a5 100644
--- a/freeradius/locale/pt/fusiondirectory.po
+++ b/freeradius/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/freeradius/class_freeradiusGroup.inc:34
 #: personal/freeradius/class_freeradiusAccount.inc:35
diff --git a/freeradius/locale/pt_BR/fusiondirectory.po b/freeradius/locale/pt_BR/fusiondirectory.po
index f16828c14f2d60497ae33c13237507e161d6b593..64b396d7acf68c84ef31a2f45c85b19f13366c99 100644
--- a/freeradius/locale/pt_BR/fusiondirectory.po
+++ b/freeradius/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/freeradius/class_freeradiusGroup.inc:34
 #: personal/freeradius/class_freeradiusAccount.inc:35
diff --git a/freeradius/locale/ru/fusiondirectory.po b/freeradius/locale/ru/fusiondirectory.po
index b11537050fdcfc075c3e480be862dede6c2865a2..4c390dbfbb279ee0bad18199def71987429006f0 100644
--- a/freeradius/locale/ru/fusiondirectory.po
+++ b/freeradius/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/freeradius/locale/ru@petr1708/fusiondirectory.po b/freeradius/locale/ru@petr1708/fusiondirectory.po
index ea0c42955baade38823479d7e7f21bec38d32cb3..1f692bbf83b5507e7531a666277de61bc14f02bc 100644
--- a/freeradius/locale/ru@petr1708/fusiondirectory.po
+++ b/freeradius/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/freeradius/locale/sv/fusiondirectory.po b/freeradius/locale/sv/fusiondirectory.po
index 2dfda20fd49c76504cfb5fcbef215327be21c6f0..607489220cedaa89989b67bafe9b803bdbc9f8bd 100644
--- a/freeradius/locale/sv/fusiondirectory.po
+++ b/freeradius/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/freeradius/locale/tr_TR/fusiondirectory.po b/freeradius/locale/tr_TR/fusiondirectory.po
index ea2f5009bfc94914b7ae6bf2a4d4e1d5b235af6e..08f259d98b7d49c3ae21951cdf5292a4efb27b59 100644
--- a/freeradius/locale/tr_TR/fusiondirectory.po
+++ b/freeradius/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2020
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2020\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -85,7 +89,7 @@ msgstr ""
 
 #: personal/freeradius/class_freeradiusAccount.inc:97
 msgid "Protocol"
-msgstr ""
+msgstr "İletişim kuralı"
 
 #: personal/freeradius/class_freeradiusAccount.inc:102
 msgid "IP Address"
diff --git a/freeradius/locale/ug/fusiondirectory.po b/freeradius/locale/ug/fusiondirectory.po
index ab6aa1452a69c9fd0ab59960b113354ef326dbb1..bb0c096599fc5bf6a3aec1f6437d94be6e31b512 100644
--- a/freeradius/locale/ug/fusiondirectory.po
+++ b/freeradius/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/freeradius/class_freeradiusGroup.inc:34
 #: personal/freeradius/class_freeradiusAccount.inc:35
diff --git a/freeradius/locale/vi_VN/fusiondirectory.po b/freeradius/locale/vi_VN/fusiondirectory.po
index 75794bb9f3fd681419c7ac02abb3ad754f0e7c43..cfd89e3faac8f758a1d74c580b10d39f41937bdd 100644
--- a/freeradius/locale/vi_VN/fusiondirectory.po
+++ b/freeradius/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/freeradius/locale/zh/fusiondirectory.po b/freeradius/locale/zh/fusiondirectory.po
index 7eb7376596b86741c5390736a287c9d83811cbae..0d7e26e51c23bd73f1c3a73d666ae6983bb6ae6e 100644
--- a/freeradius/locale/zh/fusiondirectory.po
+++ b/freeradius/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/freeradius/locale/zh_TW/fusiondirectory.po b/freeradius/locale/zh_TW/fusiondirectory.po
index 1f2923677241c69e10bd984f862259ec28fbf3e0..596c89d10dd93cc58be8bda77f4c65053cead055 100644
--- a/freeradius/locale/zh_TW/fusiondirectory.po
+++ b/freeradius/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/freeradius/personal/freeradius/class_freeradiusAccount.inc b/freeradius/personal/freeradius/class_freeradiusAccount.inc
index 3c4fb8e49e6598a092712c852a48767e0a2c001a..41dc75ae9b2303ef12c94e21decdcf3336128553 100644
--- a/freeradius/personal/freeradius/class_freeradiusAccount.inc
+++ b/freeradius/personal/freeradius/class_freeradiusAccount.inc
@@ -24,24 +24,24 @@
 class freeradiusAccount extends simplePlugin {
 
   var $displayHeader = TRUE;
-  var $objectclasses = array('radiusprofile');
+  var $objectclasses = ['radiusprofile'];
 
   /*!
    * \brief Plugin information
    */
   static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Freeradius'),
       'plDescription' => _('This Plugin is for Radius accounting based in FreeRadius'),
       'plIcon'        => 'geticon.php?context=applications&icon=freeradius&size=48',
       'plSmallIcon'   => 'geticon.php?context=applications&icon=freeradius&size=16',
       'plSelfModify'  => TRUE,
       'plPriority'    => 11,
-      'plObjectType'  => array('user'),
+      'plObjectType'  => ['user'],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   /*!
@@ -49,11 +49,11 @@ class freeradiusAccount extends simplePlugin {
    */
   static function getAttributesInfo ()
   {
-    return array(
+    return [
     // Attributes are grouped by section
-    'section1' => array(
+    'section1' => [
         'name'  => _('Support 802.1x'),
-        'attrs' => array(
+        'attrs' => [
           new StringAttribute(
             _('Tunnel medium type'), _('Name of the tunnel medium type'),
             'radiusTunnelMediumType', TRUE,
@@ -74,25 +74,25 @@ class freeradiusAccount extends simplePlugin {
               'radiusExpiration', FALSE,
               'd M Y', ''
           ),
-        )
-      ),
-      'section2' => array(
+        ]
+      ],
+      'section2' => [
         'name'  => _('Groups'),
-        'attrs' => array(
+        'attrs' => [
           new SetAttribute(
-              new SelectAttribute (
+              new SelectAttribute(
               _('Groups'),
               _('FreeRadius Group'),
               'radiusGroupName',
               FALSE,
-              array("")
+              [""]
             )
           ),
-        ),
-      ),
-      'section3' => array(
+        ],
+      ],
+      'section3' => [
         'name'  => _('User preferences'),
-          'attrs' => array(
+          'attrs' => [
             new StringAttribute(
               _('Protocol'), _('Protocol'),
               'radiusFramedProtocol', FALSE,
@@ -146,9 +146,9 @@ class freeradiusAccount extends simplePlugin {
               FALSE,
               2
             )
-          )
-        )
-    );
+          ]
+        ]
+    ];
   }
 
   /*!
@@ -161,8 +161,8 @@ class freeradiusAccount extends simplePlugin {
     parent::__construct($dn, $object, $parent, $mainTab);
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(objectClass=radiusprofile)', array('cn'));
-    $groups = array();
+    $ldap->search('(objectClass=radiusprofile)', ['cn']);
+    $groups = [];
     while ($attrs = $ldap->fetch()) {
       $groups[] = $attrs['cn'][0];
     }
diff --git a/fusioninventory/admin/inventory/class_inventoryManagement.inc b/fusioninventory/admin/inventory/class_inventoryManagement.inc
index b7b6731cc6b2eecfe2f807292ea7d6c7a439e934..a207e3f90e38e907acc14048daeb3b7f6ef38260 100644
--- a/fusioninventory/admin/inventory/class_inventoryManagement.inc
+++ b/fusioninventory/admin/inventory/class_inventoryManagement.inc
@@ -25,27 +25,27 @@ class inventoryManagement extends simpleManagement
   protected $baseMode               = FALSE;
   protected $skipCpHandler          = TRUE;
   protected $autoActions            = FALSE;
-  protected $autoFilterAttributes   = array('dn', 'cn', 'macAddress');
+  protected $autoFilterAttributes   = ['dn', 'cn', 'macAddress'];
 
-  protected $objectTypes = array('inventory');
+  protected $objectTypes = ['inventory'];
 
   public static $skipSnapshots = TRUE;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Inventory objects'),
       'plDescription' => _('Browse inventory objects'),
       'plIcon'        => 'geticon.php?context=applications&icon=fusioninventory&size=48',
       'plSection'     => 'reporting',
       'plPriority'    => 5,
-      'plManages'     => array('inventory'),
+      'plManages'     => ['inventory'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 
-  function __construct()
+  function __construct ()
   {
     $this->listXMLPath  = get_template_path('inventory-list.xml', TRUE, dirname(__FILE__));
     parent::__construct();
@@ -57,17 +57,17 @@ class inventoryManagement extends simpleManagement
     $this->headpage->registerElementFilter('filterOS', 'inventoryManagement::filterOS');
   }
 
-  static function filterOS()
+  static function filterOS ()
   {
     $pid    = func_get_arg(0);
     $row    = func_get_arg(1);
     $dn     = func_get_arg(2);
-    $trans  = array();
+    $trans  = [];
 
     global $config;
     $ldap = $config->get_ldap_link();
     $ldap->cd($dn);
-    $ldap->search('(objectClass=fdInventoryOPERATINGSYSTEM)', array('fdInventoryNAME','fdInventoryFQDN'), 'one');
+    $ldap->search('(objectClass=fdInventoryOPERATINGSYSTEM)', ['fdInventoryNAME','fdInventoryFQDN'], 'one');
     while ($attrs = $ldap->fetch()) {
       $link = $attrs['fdInventoryNAME'][0];
       if (isset($attrs['fdInventoryFQDN'][0])) {
diff --git a/fusioninventory/admin/systems/fusioninventory/class_fiInventory.inc b/fusioninventory/admin/systems/fusioninventory/class_fiInventory.inc
index 71f249357acf9ba2de7270019e775b9cd558578f..16ed5aedad3dbf92cc311027778604065143dc5a 100644
--- a/fusioninventory/admin/systems/fusioninventory/class_fiInventory.inc
+++ b/fusioninventory/admin/systems/fusioninventory/class_fiInventory.inc
@@ -20,12 +20,12 @@
 
 class fiInventory extends simplePlugin
 {
-  var $objectclasses  = array();
+  var $objectclasses  = [];
   var $displayHeader  = FALSE;
 
   protected $filter = '';
 
-  static $sections = array (
+  static $sections = [
     'antivirus'       => 'software',
     'batteries'       => 'hardware',
     'controllers'     => 'hardware',
@@ -60,18 +60,18 @@ class fiInventory extends simplePlugin
     'physicalvolumes' => 'hardware',
     'volumegroups'    => 'software',
     'licenseinfos'    => 'software',
-  );
+  ];
 
   /* Return plugin information */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Inventory'),
       'plDescription' => _('Inventory Viewer'),
       'plPriority'    => 90,
-      'plObjectType'  => array(
+      'plObjectType'  => [
         'workstation', 'server',
-        'inventory' => array(
+        'inventory' => [
           'description' => _('Inventory object'),
           'filter'      => 'objectClass=fdInventoryContent',
           'mainAttr'    => 'cn',
@@ -79,50 +79,50 @@ class fiInventory extends simplePlugin
           'name'        => _('Inventory object'),
           'ou'          => get_ou('inventoryRDN'),
           'tabClass'    => 'simpleTabs_noSpecial',
-        )
-      ),
+        ]
+      ],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'match' => array(
+    return [
+      'match' => [
         'name'      => _('Matching system'),
-        'class'     => array('fullwidth'),
-        'attrs'     => array(
+        'class'     => ['fullwidth'],
+        'attrs'     => [
           new DisplayAttribute(_('System'), _('System entry matching this inventory'), 'matching'),
           new HiddenArrayAttribute('macAddress'),
           new HiddenArrayAttribute('ipHostNumber'),
-        ),
-      ),
-      'hardware' => array(
+        ],
+      ],
+      'hardware' => [
         'name'      => _('Hardware'),
-        'class'     => array('fullwidth'),
-        'attrs'     => array(new FakeAttribute('hardware_infos')),
+        'class'     => ['fullwidth'],
+        'attrs'     => [new FakeAttribute('hardware_infos')],
         'template'  => get_template_path('inventory.tpl', TRUE, dirname(__FILE__)),
-      ),
-      'software' => array(
+      ],
+      'software' => [
         'name'      => _('Software'),
-        'class'     => array('fullwidth'),
-        'attrs'     => array(new FakeAttribute('software_infos')),
+        'class'     => ['fullwidth'],
+        'attrs'     => [new FakeAttribute('software_infos')],
         'template'  => get_template_path('inventory.tpl', TRUE, dirname(__FILE__)),
-      ),
-      'users' => array(
+      ],
+      'users' => [
         'name'      => _('Users'),
-        'class'     => array('fullwidth'),
-        'attrs'     => array(new FakeAttribute('users_infos')),
+        'class'     => ['fullwidth'],
+        'attrs'     => [new FakeAttribute('users_infos')],
         'template'  => get_template_path('inventory.tpl', TRUE, dirname(__FILE__)),
-      ),
-      'process' => array(
+      ],
+      'process' => [
         'name'      => _('Processes'),
-        'class'     => array('fullwidth'),
-        'attrs'     => array(new FakeAttribute('process_infos')),
+        'class'     => ['fullwidth'],
+        'attrs'     => [new FakeAttribute('process_infos')],
         'template'  => get_template_path('inventory.tpl', TRUE, dirname(__FILE__)),
-      ),
-    );
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -131,7 +131,7 @@ class fiInventory extends simplePlugin
     $attributesInfo = static::getAttributesInfo();
     if (preg_match('/'.preg_quote(get_ou('inventoryRDN').$config->current['BASE'], '/').'$/', $dn)) {
       $this->mainTab        = TRUE;
-      $this->objectclasses  = array('fdInventoryContent');
+      $this->objectclasses  = ['fdInventoryContent'];
       $attributesInfo['hardware']['attrs'][] = new HiddenAttribute('cn');
       $attributesInfo['match']['attrs'][0]->setAllowHTML(TRUE);
     } else {
@@ -146,7 +146,7 @@ class fiInventory extends simplePlugin
     $this->users_infos    = NULL;
   }
 
-  function execute()
+  function execute ()
   {
     if ($this->hardware_infos === NULL) {
       $infos = $this->get_inventory_infos();
@@ -163,17 +163,17 @@ class fiInventory extends simplePlugin
     return parent::execute();
   }
 
-  function save()
+  function save ()
   {
-    return array();
+    return [];
   }
 
-  function remove($fulldelete = FALSE)
+  function remove ($fulldelete = FALSE)
   {
-    return array();
+    return [];
   }
 
-  function get_inventory_infos()
+  function get_inventory_infos ()
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -186,11 +186,11 @@ class fiInventory extends simplePlugin
       unset($ipHostNumber['count']);
     } else {
       if (!isset($this->parent)) {
-        return array();
+        return [];
       }
       $macAddress   = $this->parent->getBaseObject()->macAddress;
-      if ($macAddress != '') {
-        $macAddress = array($macAddress);
+      if (!is_array($macAddress) && ($macAddress != '')) {
+        $macAddress = [$macAddress];
       }
       $ipHostNumber = $this->parent->getBaseObject()->ipHostNumber;
     }
@@ -200,7 +200,7 @@ class fiInventory extends simplePlugin
     } else {
       $macfilter = NULL;
       if (($matching == 'mac') || ($matching == 'both')) {
-        return array();
+        return [];
       }
     }
     if (!empty($ipHostNumber)) {
@@ -208,7 +208,7 @@ class fiInventory extends simplePlugin
     } else {
       $ipfilter = NULL;
       if (($matching == 'ip') || ($matching == 'both') || ($macfilter === NULL)) {
-        return array();
+        return [];
       }
     }
     switch ($matching) {
@@ -233,14 +233,14 @@ class fiInventory extends simplePlugin
       if ($attrs = $ldap->fetch()) {
         $dn = $attrs['dn'];
       } else {
-        return array();
+        return [];
       }
     }
     $ldap->cd($dn);
-    $ldap->search('(objectClass=*)', array('*'), 'one');
-    $infos = array();
+    $ldap->search('(objectClass=*)', ['*'], 'one');
+    $infos = [];
     while ($attrs = $ldap->fetch()) {
-      $object = array();
+      $object = [];
       $cn     = FALSE;
       $class  = strtolower(preg_replace('/^fdInventory/', '', $attrs['objectClass'][0]));
       for ($i = 0; $i < $attrs['count']; $i++) {
@@ -271,7 +271,7 @@ class fiInventory extends simplePlugin
       }
 
       if (!isset($infos[static::$sections[$class]][$class])) {
-        $infos[static::$sections[$class]][$class] = array('keys' => array(), 'objects' => array());
+        $infos[static::$sections[$class]][$class] = ['keys' => [], 'objects' => []];
       }
       $infos[static::$sections[$class]][$class]['keys'] =
         array_unique(array_merge(
@@ -284,10 +284,10 @@ class fiInventory extends simplePlugin
     return $infos;
   }
 
-  function updateMatching()
+  function updateMatching ()
   {
     global $config;
-    $systemTypes = array('server','workstation','terminal','printer','component','phone','mobilePhone');
+    $systemTypes = ['server','workstation','terminal','printer','component','phone','mobilePhone'];
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
     $ldap->search($this->filter);
@@ -315,7 +315,7 @@ class fiInventory extends simplePlugin
     if ($fallbackDn !== NULL) {
       $this->matching = $attrs['dn'];
     } else {
-      $templates = array();
+      $templates = [];
       foreach ($systemTypes as $type) {
         $tmp = objects::getTemplates($type);
         foreach ($tmp as $tdn => $tlabel) {
@@ -324,7 +324,7 @@ class fiInventory extends simplePlugin
       }
       $this->attributesAccess['matching'] = new CompositeAttribute(
         _('Create a system based on this inventory'), 'matching',
-        array(
+        [
           new SelectAttribute(
             '', 'template',
             'matching_template', TRUE,
@@ -341,7 +341,7 @@ class fiInventory extends simplePlugin
             'matching_button', _('Create'),
             'createSystem'
           )
-        ),
+        ],
         FALSE, FALSE,
         '', _('No matching system')
       );
@@ -353,18 +353,18 @@ class fiInventory extends simplePlugin
     }
   }
 
-  function createSystem()
+  function createSystem ()
   {
-    list ($type, $dn) = explode(':', $_POST['matching_template'], 2);
+    list($type, $dn) = explode(':', $_POST['matching_template'], 2);
     $infos = objects::infos($type);
 
-    $values = array(
-      $infos['mainTab'] => array(
+    $values = [
+      $infos['mainTab'] => [
         'cn'            => $this->hardware_infos['hardware']['objects']['hardware0']['NAME'],
         'ipHostNumber'  => $this->ipHostNumber,
         'macAddress'    => $_POST['matching_macaddress'],
-      )
-    );
+      ]
+    ];
 
     $template = new template($type, $dn);
     $template->reset();
diff --git a/fusioninventory/admin/systems/fusioninventory/class_fiInventoryAgent.inc b/fusioninventory/admin/systems/fusioninventory/class_fiInventoryAgent.inc
index 20c422aeb1878dba2585941fad3235734670b399..560f14a1eb85d709dc6f9c165524a525489441af 100644
--- a/fusioninventory/admin/systems/fusioninventory/class_fiInventoryAgent.inc
+++ b/fusioninventory/admin/systems/fusioninventory/class_fiInventoryAgent.inc
@@ -20,15 +20,15 @@
 
 class fiInventoryAgent extends simplePlugin
 {
-  var $objectclasses  = array('fusionInventoryAgent');
+  var $objectclasses  = ['fusionInventoryAgent'];
   var $displayHeader  = TRUE;
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Configuration'),
-        'attrs' => array(
+        'attrs' => [
           new StringAttribute(
             _('Server'), _('Server which FI will send inventory infos'),
             'fiAgentServer', FALSE
@@ -43,11 +43,11 @@ class fiInventoryAgent extends simplePlugin
             'fiAgentWait', FALSE,
             0, FALSE
           ),
-        ),
-      ),
-      'http' => array(
+        ],
+      ],
+      'http' => [
         'name'  => _('Web Interface'),
-        'attrs' => array(
+        'attrs' => [
           new BooleanAttribute(
             _('Disable web interface'), _('Do not use web interface'),
             'fiAgentNoHttpd', FALSE
@@ -65,22 +65,22 @@ class fiInventoryAgent extends simplePlugin
             _('Trust'), _('IPs allowed to launch inventory task through web interface'),
             'fiAgentHttpdTrust', FALSE
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   /* Return plugin information */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('FusionInventory'),
       'plDescription' => _('FusionInventory agent configuration'),
       'plPriority'    => 90,
-      'plObjectType'  => array('workstation', 'server'),
+      'plObjectType'  => ['workstation', 'server'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 }
 ?>
diff --git a/fusioninventory/config/fusioninventory/class_fiConfig.inc b/fusioninventory/config/fusioninventory/class_fiConfig.inc
index 053a8eb09acd958cc4ee872fe26fb5eb0afd3d8a..2bd3af793b2e5dc6bc31766b3f69d764a30bfd8a 100644
--- a/fusioninventory/config/fusioninventory/class_fiConfig.inc
+++ b/fusioninventory/config/fusioninventory/class_fiConfig.inc
@@ -20,40 +20,40 @@
 
 class fiConfig extends simplePlugin
 {
-  var $objectclasses  = array("fdInventoryPluginConf");
+  var $objectclasses  = ["fdInventoryPluginConf"];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       "plShortName"     => _("FusionInventory configuration"),
       "plDescription"   => _("FusionDirectory FusionInventory plugin configuration"),
-      "plCategory"      => array("configuration"),
-      "plObjectType"    => array("smallConfig"),
+      "plCategory"      => ["configuration"],
+      "plObjectType"    => ["smallConfig"],
 
       "plProvidedAcls"  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('FusionInventory'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Inventory RDN'), _('Branch in which inventory objects will be stored'),
             'fdInventoryRDN', TRUE,
             'ou=inventory'
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Inventory matching'), _('Criteria to link an inventory result to a system'),
             'fdInventoryMatching', TRUE,
-            array('mac','ip','both','either'), 'mac',
-            array(_('Mac address'), _('IP address'), _('Both'), _('IP or Mac address'))
+            ['mac','ip','both','either'], 'mac',
+            [_('Mac address'), _('IP address'), _('Both'), _('IP or Mac address')]
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/fusioninventory/html/collect.php b/fusioninventory/html/collect.php
index b156189499f9fe2a9c0ec7895c155a5282f4d18f..aa3bf5ae5c85a6e01bdb38e9aa2cb65618ce78a1 100644
--- a/fusioninventory/html/collect.php
+++ b/fusioninventory/html/collect.php
@@ -8,7 +8,7 @@ require_once('variables.inc');
 
 $http_raw_post_data = file_get_contents('php://input');
 
-function returnError($errorText)
+function returnError ($errorText)
 {
   $protocol = (isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0');
   header($protocol.' 500 '.$errorText);
@@ -25,13 +25,13 @@ if (strpos($http_raw_post_data, "<?xml") === 0) {
   $xml = $http_raw_post_data;
 } elseif ($xml = @gzuncompress($http_raw_post_data)) {
   $compressmode = "gzcompress";
-} elseif ($xml = @gzinflate ("\x1f\x8b\x08\x00\x00\x00\x00\x00".$http_raw_post_data)) {
+} elseif ($xml = @gzinflate("\x1f\x8b\x08\x00\x00\x00\x00\x00".$http_raw_post_data)) {
   // ** OCS agent 2.0 Compatibility, but return in gzcompress
   $compressmode = "gzdeflate";
   if (strstr($xml, "<QUERY>PROLOG</QUERY>") && !strstr($xml, "<TOKEN>")) {
     $compressmode = "gzcompress";
   }
-} elseif ($xml = @gzinflate (substr($http_raw_post_data, 2))) {
+} elseif ($xml = @gzinflate(substr($http_raw_post_data, 2))) {
   // ** OCS agent 2.0 Compatibility, but return in gzcompress
   $compressmode = "gzdeflate";
   if (strstr($xml, "<QUERY>PROLOG</QUERY>") && !strstr($xml, "<TOKEN>")) {
@@ -71,11 +71,11 @@ if (preg_match('/QUERY>PROLOG<\/QUERY/', $xml)) {
   $data = $data['REQUEST']['CONTENT'];
   $cpus = $data['CPUS'];
   if (!is_numeric(key($cpus))) {
-    $cpus = array($cpus);
+    $cpus = [$cpus];
   }
   $os = $data['OPERATINGSYSTEM'];
   if (!is_numeric(key($os))) {
-    $os = array($os);
+    $os = [$os];
   }
 
   /* Check if CONFIG_FILE is accessible */
@@ -83,8 +83,8 @@ if (preg_match('/QUERY>PROLOG<\/QUERY/', $xml)) {
     returnError(sprintf(_('FusionDirectory configuration %s/%s is not readable. Aborted.'), CONFIG_DIR, CONFIG_FILE));
   }
 
-  $macs = array();
-  $ips  = array();
+  $macs = [];
+  $ips  = [];
   foreach ($data['NETWORKS'] as $network) {
     if (isset($network['MACADDR']) && ($network['MACADDR'] != '00:00:00:00:00:00')) {
       $macs[] = $network['MACADDR'];
@@ -127,13 +127,13 @@ if (preg_match('/QUERY>PROLOG<\/QUERY/', $xml)) {
   /* Create root node */
   $ldap->cd($dn);
   $ldap->add(
-    array(
+    [
       'cn'                        => $_SERVER['REMOTE_ADDR'],
-      'objectClass'               => array('fdInventoryContent'),
+      'objectClass'               => ['fdInventoryContent'],
       'macAddress'                => $macs,
       'ipHostNumber'              => $ips,
       'fdInventoryVERSIONCLIENT'  => $data['VERSIONCLIENT'],
-    )
+    ]
   );
   if (!$ldap->success()) {
     returnError('LDAP: '.$ldap->get_error());
@@ -143,14 +143,14 @@ if (preg_match('/QUERY>PROLOG<\/QUERY/', $xml)) {
 
   foreach ($data as $key => $objects) {
     if (!is_numeric(key($objects))) {
-      $objects = array($objects);
+      $objects = [$objects];
     }
     foreach ($objects as $i => $object) {
       $cn         = strtolower($key).$i;
-      $ldap_attrs = array(
+      $ldap_attrs = [
         'cn' => $cn,
         'objectClass' => 'fdInventory'.preg_replace('/_/', '', $key),
-      );
+      ];
       foreach ($object as $attr => $value) {
         if (!(is_array($value) && empty($value))) {
           $ldap_attrs['fdInventory'.preg_replace('/_/', '', $attr)] = $value;
diff --git a/fusioninventory/locale/af_ZA/fusiondirectory.po b/fusioninventory/locale/af_ZA/fusiondirectory.po
index 10cf928a54fa314ea5c8a8e6b5d1f696b7fe16da..19208d21c311865a1a787511ed35e18be99dd503 100644
--- a/fusioninventory/locale/af_ZA/fusiondirectory.po
+++ b/fusioninventory/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/fusioninventory/locale/ar/fusiondirectory.po b/fusioninventory/locale/ar/fusiondirectory.po
index 349f6c7ad0852933257efe89bf28af2d01c8e25b..06284af76672b24ace7d633810844b033c13a37d 100644
--- a/fusioninventory/locale/ar/fusiondirectory.po
+++ b/fusioninventory/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/fusioninventory/locale/ca/fusiondirectory.po b/fusioninventory/locale/ca/fusiondirectory.po
index 7b3b129a268c4d66146e970601191f6ddfde61ac..d5ae389e1a5da05d03be368cd5d21b69876895fa 100644
--- a/fusioninventory/locale/ca/fusiondirectory.po
+++ b/fusioninventory/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/fusioninventory/locale/cs_CZ/fusiondirectory.po b/fusioninventory/locale/cs_CZ/fusiondirectory.po
index afdcdd2d87cf1d2a30ad62b0e095a5d476084dff..b5083c84f17c5b37276d635bf4a21e4bcb7a6592 100644
--- a/fusioninventory/locale/cs_CZ/fusiondirectory.po
+++ b/fusioninventory/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/fusioninventory/locale/de/fusiondirectory.po b/fusioninventory/locale/de/fusiondirectory.po
index 63f7c4b9bc78f0f4208be5f32860e857f54285fd..f02d594b818a1dd464d9e43a154806362d07b534 100644
--- a/fusioninventory/locale/de/fusiondirectory.po
+++ b/fusioninventory/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/fusioninventory/locale/el_GR/fusiondirectory.po b/fusioninventory/locale/el_GR/fusiondirectory.po
index 7aa568301e4af4e317227dd35504b24f44dec6b1..9c68698cee4a8e05d619d18bcc9b5368fdc1cc50 100644
--- a/fusioninventory/locale/el_GR/fusiondirectory.po
+++ b/fusioninventory/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/fusioninventory/locale/en/fusiondirectory.po b/fusioninventory/locale/en/fusiondirectory.po
index 9deb4857c2b633b40a3a9d8ab6fa771a161b9d7b..d128e354f95db2cb2d9d3b3ee410a81212281dfc 100644
--- a/fusioninventory/locale/en/fusiondirectory.po
+++ b/fusioninventory/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -62,48 +62,11 @@ msgstr ""
 msgid "IP or Mac address"
 msgstr ""
 
-#: html/collect.php:75
+#: html/collect.php:83
 #, php-format
 msgid "FusionDirectory configuration %s/%s is not readable. Aborted."
 msgstr ""
 
-#: admin/inventory/inventory-list.xml:7
-msgid "NO LABEL"
-msgstr ""
-
-#: admin/inventory/inventory-list.xml:28
-#: admin/systems/fusioninventory/class_fiInventoryAgent.inc:56
-msgid "IP"
-msgstr ""
-
-#: admin/inventory/inventory-list.xml:36
-msgid "Macs"
-msgstr ""
-
-#: admin/inventory/inventory-list.xml:44
-msgid "Operating Systems"
-msgstr ""
-
-#: admin/inventory/inventory-list.xml:50
-msgid "Actions"
-msgstr ""
-
-#: admin/inventory/inventory-list.xml:61 admin/inventory/inventory-list.xml:85
-msgid "Edit"
-msgstr ""
-
-#: admin/inventory/inventory-list.xml:68 admin/inventory/inventory-list.xml:92
-msgid "Remove"
-msgstr ""
-
-#: admin/inventory/class_inventoryManagement.inc:36
-msgid "Inventory objects"
-msgstr ""
-
-#: admin/inventory/class_inventoryManagement.inc:37
-msgid "Browse inventory objects"
-msgstr ""
-
 #: admin/systems/fusioninventory/class_fiInventoryAgent.inc:30
 msgid "Configuration"
 msgstr ""
@@ -145,6 +108,11 @@ msgstr ""
 msgid "Do not use web interface"
 msgstr ""
 
+#: admin/systems/fusioninventory/class_fiInventoryAgent.inc:56
+#: admin/inventory/inventory-list.xml:28
+msgid "IP"
+msgstr ""
+
 #: admin/systems/fusioninventory/class_fiInventoryAgent.inc:56
 msgid "Network interface to listen to"
 msgstr ""
@@ -183,12 +151,12 @@ msgid "Matching system"
 msgstr ""
 
 #: admin/systems/fusioninventory/class_fiInventory.inc:96
-#: admin/systems/fusioninventory/class_fiInventory.inc:372
+#: admin/systems/fusioninventory/class_fiInventory.inc:378
 msgid "System"
 msgstr ""
 
 #: admin/systems/fusioninventory/class_fiInventory.inc:96
-#: admin/systems/fusioninventory/class_fiInventory.inc:372
+#: admin/systems/fusioninventory/class_fiInventory.inc:378
 msgid "System entry matching this inventory"
 msgstr ""
 
@@ -208,14 +176,46 @@ msgstr ""
 msgid "Processes"
 msgstr ""
 
-#: admin/systems/fusioninventory/class_fiInventory.inc:320
+#: admin/systems/fusioninventory/class_fiInventory.inc:326
 msgid "Create a system based on this inventory"
 msgstr ""
 
-#: admin/systems/fusioninventory/class_fiInventory.inc:335
+#: admin/systems/fusioninventory/class_fiInventory.inc:341
 msgid "Create"
 msgstr ""
 
-#: admin/systems/fusioninventory/class_fiInventory.inc:340
+#: admin/systems/fusioninventory/class_fiInventory.inc:346
 msgid "No matching system"
 msgstr ""
+
+#: admin/inventory/inventory-list.xml:7
+msgid "NO LABEL"
+msgstr ""
+
+#: admin/inventory/inventory-list.xml:36
+msgid "Macs"
+msgstr ""
+
+#: admin/inventory/inventory-list.xml:44
+msgid "Operating Systems"
+msgstr ""
+
+#: admin/inventory/inventory-list.xml:50
+msgid "Actions"
+msgstr ""
+
+#: admin/inventory/inventory-list.xml:61 admin/inventory/inventory-list.xml:85
+msgid "Edit"
+msgstr ""
+
+#: admin/inventory/inventory-list.xml:68 admin/inventory/inventory-list.xml:92
+msgid "Remove"
+msgstr ""
+
+#: admin/inventory/class_inventoryManagement.inc:37
+msgid "Inventory objects"
+msgstr ""
+
+#: admin/inventory/class_inventoryManagement.inc:38
+msgid "Browse inventory objects"
+msgstr ""
diff --git a/fusioninventory/locale/es/fusiondirectory.po b/fusioninventory/locale/es/fusiondirectory.po
index b0a96d42bc89b09c647a74d125a7718d251730e7..6b7f22f8b6213e1fe6e029f3052ebe89156d3710 100644
--- a/fusioninventory/locale/es/fusiondirectory.po
+++ b/fusioninventory/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/inventory/class_inventoryManagement.inc:37
 msgid "Inventory objects"
diff --git a/fusioninventory/locale/es_CO/fusiondirectory.po b/fusioninventory/locale/es_CO/fusiondirectory.po
index cf618e26461522335fa97fc4e73ae6a0fe6c099a..00b84c487aa9dad18ed921db99fccc42267eee37 100644
--- a/fusioninventory/locale/es_CO/fusiondirectory.po
+++ b/fusioninventory/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/inventory/class_inventoryManagement.inc:37
 msgid "Inventory objects"
diff --git a/fusioninventory/locale/es_VE/fusiondirectory.po b/fusioninventory/locale/es_VE/fusiondirectory.po
index 10fac641878e533cd0c0b8a2b599b4d7fc40a8c8..19140c01987bc67d1f3ad40b3e0f256edb9ac5f3 100644
--- a/fusioninventory/locale/es_VE/fusiondirectory.po
+++ b/fusioninventory/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/inventory/class_inventoryManagement.inc:37
 msgid "Inventory objects"
diff --git a/fusioninventory/locale/fa_IR/fusiondirectory.po b/fusioninventory/locale/fa_IR/fusiondirectory.po
index 56076a33d8bdbb568e9d04df7cde51810b88a81a..4bd984338d7d075d60657379cf95b1393afd888c 100644
--- a/fusioninventory/locale/fa_IR/fusiondirectory.po
+++ b/fusioninventory/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/fusioninventory/locale/fi_FI/fusiondirectory.po b/fusioninventory/locale/fi_FI/fusiondirectory.po
index 7f14037339ff18642c22069fd18412eec57f7565..bc2d8eb55f4184e67935265ca469314f1a78ca62 100644
--- a/fusioninventory/locale/fi_FI/fusiondirectory.po
+++ b/fusioninventory/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/fusioninventory/locale/fr/fusiondirectory.po b/fusioninventory/locale/fr/fusiondirectory.po
index 924c26e52812195253744a396835522cc51d6f84..57f9e8e152d486c580c613a5e9bf8f1dafd72e07 100644
--- a/fusioninventory/locale/fr/fusiondirectory.po
+++ b/fusioninventory/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/inventory/class_inventoryManagement.inc:37
 msgid "Inventory objects"
diff --git a/fusioninventory/locale/hu_HU/fusiondirectory.po b/fusioninventory/locale/hu_HU/fusiondirectory.po
index a795a7a10d7c6b0ac97d10b465a0e38e36ede1ea..e73c8f8f9513b1dd91513b7afbb3bec61d77c21f 100644
--- a/fusioninventory/locale/hu_HU/fusiondirectory.po
+++ b/fusioninventory/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
diff --git a/fusioninventory/locale/id/fusiondirectory.po b/fusioninventory/locale/id/fusiondirectory.po
index bcc6602bbab7ca74c47c2b9121413e3f7947cf88..01b7a700bf5e43291aae2798c54d0212c2f4bf99 100644
--- a/fusioninventory/locale/id/fusiondirectory.po
+++ b/fusioninventory/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/fusioninventory/locale/it_IT/fusiondirectory.po b/fusioninventory/locale/it_IT/fusiondirectory.po
index 04537e993241f5bbcb8e4b68f03fbb8c66dd87ae..a9d33553a1c6f2ed590521235ecbee159f0569eb 100644
--- a/fusioninventory/locale/it_IT/fusiondirectory.po
+++ b/fusioninventory/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/inventory/class_inventoryManagement.inc:37
 msgid "Inventory objects"
diff --git a/fusioninventory/locale/ja/fusiondirectory.po b/fusioninventory/locale/ja/fusiondirectory.po
index 32ba38e51d0de1481b19b3f7eccded7f5ca27ca2..6b289f007294a54a274825384c069dea19a1d11b 100644
--- a/fusioninventory/locale/ja/fusiondirectory.po
+++ b/fusioninventory/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/fusioninventory/locale/ko/fusiondirectory.po b/fusioninventory/locale/ko/fusiondirectory.po
index 807137c657e6e314b893ea7e92bdb4ecf52b80fd..02b15453f31bc8cc72ed6005cb6079977cc2ba0f 100644
--- a/fusioninventory/locale/ko/fusiondirectory.po
+++ b/fusioninventory/locale/ko/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# Choi Chris <chulwon.choi@gmail.com>, 2018
+# Choi Chris <chulwon.choi@gmail.com>, 2020
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
-"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
+"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2020\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -31,7 +31,7 @@ msgstr ""
 
 #: admin/inventory/inventory-list.xml:7
 msgid "NO LABEL"
-msgstr ""
+msgstr "라벨 없음"
 
 #: admin/inventory/inventory-list.xml:28
 #: admin/systems/fusioninventory/class_fiInventoryAgent.inc:56
@@ -52,7 +52,7 @@ msgstr "작업"
 
 #: admin/inventory/inventory-list.xml:61 admin/inventory/inventory-list.xml:85
 msgid "Edit"
-msgstr ""
+msgstr "편집"
 
 #: admin/inventory/inventory-list.xml:68 admin/inventory/inventory-list.xml:92
 msgid "Remove"
@@ -161,7 +161,7 @@ msgstr "소프트웨어"
 
 #: admin/systems/fusioninventory/class_fiInventory.inc:114
 msgid "Users"
-msgstr ""
+msgstr "사용자"
 
 #: admin/systems/fusioninventory/class_fiInventory.inc:120
 msgid "Processes"
diff --git a/fusioninventory/locale/lv/fusiondirectory.po b/fusioninventory/locale/lv/fusiondirectory.po
index 4a86d584cdc1668f442f2f40792062f8fcdfa634..3cdbb3239651f650f67358f046bc10a2e7c4747f 100644
--- a/fusioninventory/locale/lv/fusiondirectory.po
+++ b/fusioninventory/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/fusioninventory/locale/nb/fusiondirectory.po b/fusioninventory/locale/nb/fusiondirectory.po
index 4ae51108120e5b2d00f494c329d9ebb6a95779f3..dfb506b4bcade0303c3ca8ed5ccd9271f64b1fb1 100644
--- a/fusioninventory/locale/nb/fusiondirectory.po
+++ b/fusioninventory/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/fusioninventory/locale/nl/fusiondirectory.po b/fusioninventory/locale/nl/fusiondirectory.po
index 5ff8339f8fc6887f56300e5be66d9ac972dfc3a5..69ffe15615b9a2be31d9ba31da5e56fdc176f5f0 100644
--- a/fusioninventory/locale/nl/fusiondirectory.po
+++ b/fusioninventory/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/fusioninventory/locale/pl/fusiondirectory.po b/fusioninventory/locale/pl/fusiondirectory.po
index 7a155d3962952957ab2716c4e239adeda88adac5..298263e051ebadf4af0c8d473963507c1b61283f 100644
--- a/fusioninventory/locale/pl/fusiondirectory.po
+++ b/fusioninventory/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/fusioninventory/locale/pt/fusiondirectory.po b/fusioninventory/locale/pt/fusiondirectory.po
index 6b8dec2ae5051edbf744a08af20d4c8923dbed55..a6dbbf31506e11b87573767dd3db937f6dec0236 100644
--- a/fusioninventory/locale/pt/fusiondirectory.po
+++ b/fusioninventory/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/inventory/class_inventoryManagement.inc:37
 msgid "Inventory objects"
diff --git a/fusioninventory/locale/pt_BR/fusiondirectory.po b/fusioninventory/locale/pt_BR/fusiondirectory.po
index 5055fd8d88face24a6f73e8dcbe17e811fcef8ac..79aa9c88303de18aa396ec6b03412c8159b29a52 100644
--- a/fusioninventory/locale/pt_BR/fusiondirectory.po
+++ b/fusioninventory/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/inventory/class_inventoryManagement.inc:37
 msgid "Inventory objects"
diff --git a/fusioninventory/locale/ru/fusiondirectory.po b/fusioninventory/locale/ru/fusiondirectory.po
index 8f81e493bc392b40711e7149a227ee5d9ec0da10..b40e513898cdd83c1d3db983b6b2271239b73f01 100644
--- a/fusioninventory/locale/ru/fusiondirectory.po
+++ b/fusioninventory/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/fusioninventory/locale/ru@petr1708/fusiondirectory.po b/fusioninventory/locale/ru@petr1708/fusiondirectory.po
index 7eadba0426dad3bd6211a31328e8d99c2b0accd2..77aa49cb838754478cb6d8972daf6d29ac17e6f4 100644
--- a/fusioninventory/locale/ru@petr1708/fusiondirectory.po
+++ b/fusioninventory/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/fusioninventory/locale/sv/fusiondirectory.po b/fusioninventory/locale/sv/fusiondirectory.po
index ed851b410bca8d5d24050b59591acb207de9c746..3a070efe81bd1e0ed1bac8aab1b5ac2624efea41 100644
--- a/fusioninventory/locale/sv/fusiondirectory.po
+++ b/fusioninventory/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/fusioninventory/locale/tr_TR/fusiondirectory.po b/fusioninventory/locale/tr_TR/fusiondirectory.po
index 8f05dee8d2d70e765c731976603388293067bde6..777e6cd47206280579109b680403dafc6cae8108 100644
--- a/fusioninventory/locale/tr_TR/fusiondirectory.po
+++ b/fusioninventory/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2021
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2021\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -48,11 +52,11 @@ msgstr ""
 
 #: admin/inventory/inventory-list.xml:61 admin/inventory/inventory-list.xml:85
 msgid "Edit"
-msgstr ""
+msgstr "Düzenle"
 
 #: admin/inventory/inventory-list.xml:68 admin/inventory/inventory-list.xml:92
 msgid "Remove"
-msgstr ""
+msgstr "Kaldır"
 
 #: admin/systems/fusioninventory/class_fiInventoryAgent.inc:30
 msgid "Configuration"
@@ -169,7 +173,7 @@ msgstr ""
 
 #: admin/systems/fusioninventory/class_fiInventory.inc:341
 msgid "Create"
-msgstr ""
+msgstr "OluÅŸtur"
 
 #: admin/systems/fusioninventory/class_fiInventory.inc:346
 msgid "No matching system"
diff --git a/fusioninventory/locale/ug/fusiondirectory.po b/fusioninventory/locale/ug/fusiondirectory.po
index 0ac31929f7308541beda6a719ddd62ad8eb9d6de..b69041b9f34094844f4ff1ca5e73ae3d444457c1 100644
--- a/fusioninventory/locale/ug/fusiondirectory.po
+++ b/fusioninventory/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/inventory/class_inventoryManagement.inc:37
 msgid "Inventory objects"
diff --git a/fusioninventory/locale/vi_VN/fusiondirectory.po b/fusioninventory/locale/vi_VN/fusiondirectory.po
index aed5e77947f626c3dc237aca14e0f0c18c4d8d94..6e5ec3a10312d060c224ba34ea707ebd309de37c 100644
--- a/fusioninventory/locale/vi_VN/fusiondirectory.po
+++ b/fusioninventory/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/fusioninventory/locale/zh/fusiondirectory.po b/fusioninventory/locale/zh/fusiondirectory.po
index 2a7866478bce555ba0395283cbb9dca59837c940..88cfaa56fb752cf91b6435bf3b342fe8b0dd8acc 100644
--- a/fusioninventory/locale/zh/fusiondirectory.po
+++ b/fusioninventory/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/fusioninventory/locale/zh_TW/fusiondirectory.po b/fusioninventory/locale/zh_TW/fusiondirectory.po
index 52ed0a46272cd62a6b681af8acc23c5a0268b7d9..4ad10349daed9c556c675eebca15a364db37f527 100644
--- a/fusioninventory/locale/zh_TW/fusiondirectory.po
+++ b/fusioninventory/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:11+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/gpg/addons/gpg/class_pgpServerInfo.inc b/gpg/addons/gpg/class_pgpServerInfo.inc
index fdb8850c0bafd3988443f26dae71477cc8e97665..3535661952c731b53c3976d1d0909aa23a7bbe06 100644
--- a/gpg/addons/gpg/class_pgpServerInfo.inc
+++ b/gpg/addons/gpg/class_pgpServerInfo.inc
@@ -22,66 +22,66 @@ class pgpServerInfo extends simplePlugin
 {
   var $mainTab = TRUE;
   /* This plugin only writes its objectClass */
-  var $objectclasses = array('pgpServerInfo');
+  var $objectclasses = ['pgpServerInfo'];
 
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('GPG server info'),
       'plDescription' => _('GPG server info'),
       'plSection'     => 'conf',
       'plPriority'    => 5,
       'plIcon'        => 'geticon.php?context=applications&icon=gpg&size=48',
-      'plObjectType'    => array(
-        'pgpServerInfo' => array(
+      'plObjectType'    => [
+        'pgpServerInfo' => [
           'name'        => _('GPG server info'),
           'filter'      => 'objectClass=pgpServerInfo',
           'icon'        => 'geticon.php?context=applications&icon=gpg&size=16',
           'aclCategory' => 'configuration',
-        )
-      ),
+        ]
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
     global $config;
-    return array(
+    return [
       // Attributes are grouped by section
-      'main' => array(
+      'main' => [
         'name'  => _('GPG server info'),
-        'attrs' => array(
-          new HiddenAttribute ('cn', TRUE, 'pgpServerInfo'),
-          new StringAttribute (
+        'attrs' => [
+          new HiddenAttribute('cn', TRUE, 'pgpServerInfo'),
+          new StringAttribute(
             _('Software'), _('Which software this GPG key server is running'),
             'pgpSoftware', FALSE,
             'OpenLDAP 2.4.33'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('GPG version'), _('Which version of GPG this key server is running'),
             'pgpVersion', FALSE,
             'gpg (GnuPG) 1.4.13'
           ),
-          new CompositeAttribute (
+          new CompositeAttribute(
             _('Branch in which keys are stored'),
             'pgpBaseKeySpaceDN',
-            array(
+            [
               new StringAttribute(
                 _('Keys RDN'), _('Branch under base in which keys are stored'),
                 'BaseKeyBranchDN', TRUE,
                 'ou=PGP Keys,'
               )
-            ),
+            ],
             '/^(.*)'.$config->current['BASE'].'$/',
             '%s'.$config->current['BASE']
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   protected function ldap_save ()
@@ -97,7 +97,7 @@ class pgpServerInfo extends simplePlugin
     $ldap = $config->get_ldap_link();
     $ldap->cat($this->pgpBaseKeySpaceDN);
     if (!$ldap->count()) {
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->pgpBaseKeySpaceDN, "Creating branch");
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->pgpBaseKeySpaceDN, "Creating branch");
       $ldap->cd($config->current['BASE']);
       $ldap->create_missing_trees($this->pgpBaseKeySpaceDN);
       if (!$ldap->success()) {
@@ -114,10 +114,10 @@ class pgpServerInfo extends simplePlugin
         $ldap->search('(objectClass=*)');
         if (!$ldap->count()) {
           /* Old branch is empty */
-          @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, "Deleting old empty branch");
+          @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, "Deleting old empty branch");
           $ldap->rmdir($dn);
         } else {
-          @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, "Old branch is not empty");
+          @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, "Old branch is not empty");
         }
       }
     }
diff --git a/gpg/locale/af_ZA/fusiondirectory.po b/gpg/locale/af_ZA/fusiondirectory.po
index 01e76ba62df76813408ef588e70d4a5310c0c550..97c1fa32be938e043676acff62b86c548fa91e8f 100644
--- a/gpg/locale/af_ZA/fusiondirectory.po
+++ b/gpg/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
@@ -74,38 +74,38 @@ msgstr ""
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr ""
diff --git a/gpg/locale/ar/fusiondirectory.po b/gpg/locale/ar/fusiondirectory.po
index f57813cebd309e423bea87734a34656b71f41cef..8b4c7b6e0b87dd539c9c2a6ea8bc1cc8a560671f 100644
--- a/gpg/locale/ar/fusiondirectory.po
+++ b/gpg/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
@@ -78,38 +78,38 @@ msgstr ""
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr ""
diff --git a/gpg/locale/ca/fusiondirectory.po b/gpg/locale/ca/fusiondirectory.po
index c899ff02d7e469101fa799b98ec797247da487e9..0925eec7123e037aa06d3067b74180415d5572f9 100644
--- a/gpg/locale/ca/fusiondirectory.po
+++ b/gpg/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
@@ -78,38 +78,38 @@ msgstr "Error de la configuració"
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr ""
diff --git a/gpg/locale/cs_CZ/fusiondirectory.po b/gpg/locale/cs_CZ/fusiondirectory.po
index 378c44dfd3f099b749a15561ae241a773d2fdf3e..88d62ac74b7fff9b4b5f32850ead9de6ba88c2bd 100644
--- a/gpg/locale/cs_CZ/fusiondirectory.po
+++ b/gpg/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
@@ -79,38 +79,38 @@ msgstr "Chyba v nastavení"
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr "Nejprve je třeba prostřednictvím sekce přídavky nastavit základ GPG"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr "Identifikátor klíče"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr "Identifikátor uživatele"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr "Čas vytvoření"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr "Skončení platnosti"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr "Algoritmus"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr "Velikost"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr "Platnost odvolána"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr "zakázáno"
diff --git a/gpg/locale/de/fusiondirectory.po b/gpg/locale/de/fusiondirectory.po
index 447713915c3c9a9e5592dc71e811ac54baabd4eb..68cc29999f1e3139464798d5a254ea9fad778ec8 100644
--- a/gpg/locale/de/fusiondirectory.po
+++ b/gpg/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
@@ -78,38 +78,38 @@ msgstr "Konfigurationsfehler"
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr "Schlüsselkennung"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr "Benutzer-ID"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr "Erstellungszeitpunkt"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr "Ablauf"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr "Algorithmus"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr "Größe"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr "Widerrufen"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr "Deaktiviert"
diff --git a/gpg/locale/el_GR/fusiondirectory.po b/gpg/locale/el_GR/fusiondirectory.po
index 105728f189f3852b8e8b249b062cfe841c03321d..08e279e90f3130a729168033960e0588726aa481 100644
--- a/gpg/locale/el_GR/fusiondirectory.po
+++ b/gpg/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
@@ -79,38 +79,38 @@ msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 "Θα πρέπει να ρυθμίσετε την GPG base dn μέσω την ενότητας προσθέτωβ πρώτα"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr "Αναγνωριστικό κλειδιού"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr "Αναγνωριστικό χρήστη"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr "Ημερομηνία δημιουργίας"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr "Λήξη"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr "Αλγόριθμος"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr "Μέγεθος"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr "Ανεκλήθη"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr "Απενεργοποιημένο"
diff --git a/gpg/locale/en/fusiondirectory.po b/gpg/locale/en/fusiondirectory.po
index 6dade20cd3349476bbf2ee8f891b6ce85a41896a..b8f1fadcd714a53f875f6c22302c4d8287a5b311 100644
--- a/gpg/locale/en/fusiondirectory.po
+++ b/gpg/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,20 +17,37 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: personal/gpg/class_gpgAccount.inc:31
-msgid "GPG keys"
+#: addons/gpg/class_pgpServerInfo.inc:31 addons/gpg/class_pgpServerInfo.inc:32
+#: addons/gpg/class_pgpServerInfo.inc:38 addons/gpg/class_pgpServerInfo.inc:56
+msgid "GPG server info"
 msgstr ""
 
-#: personal/gpg/class_gpgAccount.inc:35
-msgid "GPG keys of this user"
+#: addons/gpg/class_pgpServerInfo.inc:60
+msgid "Software"
 msgstr ""
 
-#: personal/gpg/class_gpgAccount.inc:46
-msgid "GPG"
+#: addons/gpg/class_pgpServerInfo.inc:60
+msgid "Which software this GPG key server is running"
 msgstr ""
 
-#: personal/gpg/class_gpgAccount.inc:47
-msgid "Edit user's GPG IDs"
+#: addons/gpg/class_pgpServerInfo.inc:65
+msgid "GPG version"
+msgstr ""
+
+#: addons/gpg/class_pgpServerInfo.inc:65
+msgid "Which version of GPG this key server is running"
+msgstr ""
+
+#: addons/gpg/class_pgpServerInfo.inc:70
+msgid "Branch in which keys are stored"
+msgstr ""
+
+#: addons/gpg/class_pgpServerInfo.inc:74
+msgid "Keys RDN"
+msgstr ""
+
+#: addons/gpg/class_pgpServerInfo.inc:74
+msgid "Branch under base in which keys are stored"
 msgstr ""
 
 #: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:62
@@ -41,38 +58,38 @@ msgstr ""
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr ""
@@ -101,35 +118,18 @@ msgstr ""
 msgid "Type"
 msgstr ""
 
-#: addons/gpg/class_pgpServerInfo.inc:31 addons/gpg/class_pgpServerInfo.inc:32
-#: addons/gpg/class_pgpServerInfo.inc:38 addons/gpg/class_pgpServerInfo.inc:56
-msgid "GPG server info"
-msgstr ""
-
-#: addons/gpg/class_pgpServerInfo.inc:60
-msgid "Software"
-msgstr ""
-
-#: addons/gpg/class_pgpServerInfo.inc:60
-msgid "Which software this GPG key server is running"
-msgstr ""
-
-#: addons/gpg/class_pgpServerInfo.inc:65
-msgid "GPG version"
-msgstr ""
-
-#: addons/gpg/class_pgpServerInfo.inc:65
-msgid "Which version of GPG this key server is running"
+#: personal/gpg/class_gpgAccount.inc:31
+msgid "GPG keys"
 msgstr ""
 
-#: addons/gpg/class_pgpServerInfo.inc:70
-msgid "Branch in which keys are stored"
+#: personal/gpg/class_gpgAccount.inc:35
+msgid "GPG keys of this user"
 msgstr ""
 
-#: addons/gpg/class_pgpServerInfo.inc:74
-msgid "Keys RDN"
+#: personal/gpg/class_gpgAccount.inc:46
+msgid "GPG"
 msgstr ""
 
-#: addons/gpg/class_pgpServerInfo.inc:74
-msgid "Branch under base in which keys are stored"
+#: personal/gpg/class_gpgAccount.inc:47
+msgid "Edit user's GPG IDs"
 msgstr ""
diff --git a/gpg/locale/es/fusiondirectory.po b/gpg/locale/es/fusiondirectory.po
index 23e651e8b4ec259b2e206b695795e98e2d3fe363..99f8335064098b46d97cf739a8610c70b3289587 100644
--- a/gpg/locale/es/fusiondirectory.po
+++ b/gpg/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/gpg/class_pgpServerInfo.inc:31 addons/gpg/class_pgpServerInfo.inc:32
 #: addons/gpg/class_pgpServerInfo.inc:38 addons/gpg/class_pgpServerInfo.inc:56
@@ -78,38 +78,38 @@ msgstr "Error en la configuración"
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr "Identificador (ID) de usuario"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr "Tamaño"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr "Desactivado"
diff --git a/gpg/locale/es_CO/fusiondirectory.po b/gpg/locale/es_CO/fusiondirectory.po
index 5b2e1cd602c12a9bc13cfb9bfa6a73a04dbb5939..4e4859260193c748faae98fc873f845bd6b0fe34 100644
--- a/gpg/locale/es_CO/fusiondirectory.po
+++ b/gpg/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/gpg/class_pgpServerInfo.inc:31 addons/gpg/class_pgpServerInfo.inc:32
 #: addons/gpg/class_pgpServerInfo.inc:38 addons/gpg/class_pgpServerInfo.inc:56
@@ -78,38 +78,38 @@ msgstr "Error de configuración"
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr "ID de usuario"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr ""
diff --git a/gpg/locale/es_VE/fusiondirectory.po b/gpg/locale/es_VE/fusiondirectory.po
index 80a3cc03c45bf8e30a0bdb0038b083c88084742a..9f1dc7a318b78a35a6f34f93d98f1c3db80de723 100644
--- a/gpg/locale/es_VE/fusiondirectory.po
+++ b/gpg/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/gpg/class_pgpServerInfo.inc:31 addons/gpg/class_pgpServerInfo.inc:32
 #: addons/gpg/class_pgpServerInfo.inc:38 addons/gpg/class_pgpServerInfo.inc:56
@@ -78,38 +78,38 @@ msgstr "Error en la configuración"
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr "Identificador (ID) de usuario"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr "Tamaño"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr "Desactivado"
diff --git a/gpg/locale/fa_IR/fusiondirectory.po b/gpg/locale/fa_IR/fusiondirectory.po
index a401e2f69ee9f3d7dd04c24f7e95c5d1c1d01c48..3038957ce12dd8fddf6373e240a05263ecf316b0 100644
--- a/gpg/locale/fa_IR/fusiondirectory.po
+++ b/gpg/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
@@ -74,38 +74,38 @@ msgstr ""
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr ""
diff --git a/gpg/locale/fi_FI/fusiondirectory.po b/gpg/locale/fi_FI/fusiondirectory.po
index 07d0009a42ff306dd1b65f27151a1ffc846ad5a2..9501986b6a0e74663842ac0cff09a24b8c15a207 100644
--- a/gpg/locale/fi_FI/fusiondirectory.po
+++ b/gpg/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
@@ -78,38 +78,38 @@ msgstr ""
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr "Käyttäjätunnus"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr ""
diff --git a/gpg/locale/fr/fusiondirectory.po b/gpg/locale/fr/fusiondirectory.po
index c38f5448032033b2435f160a3bccbf0c670b78aa..4edc3a3c6272d04e7dbe904ba7250ee13c26280c 100644
--- a/gpg/locale/fr/fusiondirectory.po
+++ b/gpg/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/gpg/class_pgpServerInfo.inc:31 addons/gpg/class_pgpServerInfo.inc:32
 #: addons/gpg/class_pgpServerInfo.inc:38 addons/gpg/class_pgpServerInfo.inc:56
@@ -80,38 +80,38 @@ msgstr ""
 "Vous devez configurer d'abord le DN de base de GPG, dans la section "
 "«Configuration»"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr "ID de la clef"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr "ID de l'utilisateur"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr "Date de création"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr "Date d'expiration"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr "Algorithme"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr "Taille"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr "Révoquée"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr "Désactivée"
diff --git a/gpg/locale/hu_HU/fusiondirectory.po b/gpg/locale/hu_HU/fusiondirectory.po
index 5193d008b003f913346a7ac1b18b27a722c35758..13cb87c91f833a976350e1eb2f2a0a3cec1d16a6 100644
--- a/gpg/locale/hu_HU/fusiondirectory.po
+++ b/gpg/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
@@ -74,38 +74,38 @@ msgstr ""
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr ""
diff --git a/gpg/locale/id/fusiondirectory.po b/gpg/locale/id/fusiondirectory.po
index 57f7af6a80434f2c29096e7fd34dfa3f84667707..d4aadb78ac618d5d3160f510fe15cf8ddcfecb23 100644
--- a/gpg/locale/id/fusiondirectory.po
+++ b/gpg/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
@@ -74,38 +74,38 @@ msgstr ""
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr ""
diff --git a/gpg/locale/it_IT/fusiondirectory.po b/gpg/locale/it_IT/fusiondirectory.po
index b3c82adbd6d23f84a3cb209e4f2039a68cb24b2e..fbb6e191701ff661d984d34bc6b67fce89dd788a 100644
--- a/gpg/locale/it_IT/fusiondirectory.po
+++ b/gpg/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/gpg/class_pgpServerInfo.inc:31 addons/gpg/class_pgpServerInfo.inc:32
 #: addons/gpg/class_pgpServerInfo.inc:38 addons/gpg/class_pgpServerInfo.inc:56
@@ -79,38 +79,38 @@ msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 "Devi prima di tutto configurare la bse dn per GPG, nella sezione addons"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr "ID della chiave"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr "ID dell'utente"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr "Data di creazione"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr "Data di scadenza"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr "Algoritmo"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr "Dimensione"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr "Revocato"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr "Disabilitato"
diff --git a/gpg/locale/ja/fusiondirectory.po b/gpg/locale/ja/fusiondirectory.po
index 8a1bedd9dfd0e56afdb02245324c1610f544baa0..fd3ed2136daf8e17fa9a01e0a0082cdd42743c29 100644
--- a/gpg/locale/ja/fusiondirectory.po
+++ b/gpg/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
@@ -74,38 +74,38 @@ msgstr ""
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr ""
diff --git a/gpg/locale/ko/fusiondirectory.po b/gpg/locale/ko/fusiondirectory.po
index c13d8b1f5669514acdb0a9b8927669ca2a161cae..682d77ba4c90f687d8a54a40569d968b20584787 100644
--- a/gpg/locale/ko/fusiondirectory.po
+++ b/gpg/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
@@ -78,38 +78,38 @@ msgstr "설정 에러"
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr "먼저 addons 섹션을 통해 GPG 기반 dn을 구성해야합니다."
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr "키 ID"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr "사용자 ID"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr "생성시간"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr "만료"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr "알고리즘"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr "크기"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr "철회"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr "미사용"
diff --git a/gpg/locale/lv/fusiondirectory.po b/gpg/locale/lv/fusiondirectory.po
index d0e6e259be8397c13b3073f08391078b5c0f8c1f..d7c8ac91b90380042369612ba20ba93404a15ca4 100644
--- a/gpg/locale/lv/fusiondirectory.po
+++ b/gpg/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
@@ -78,38 +78,38 @@ msgstr ""
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr "Lietotāja ID"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr ""
diff --git a/gpg/locale/nb/fusiondirectory.po b/gpg/locale/nb/fusiondirectory.po
index 875c6bab20d9997a04d51f4a9870db7239e07d08..712c55ce44c4f1a8ade985cd6d28f8bc9898309e 100644
--- a/gpg/locale/nb/fusiondirectory.po
+++ b/gpg/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
@@ -78,38 +78,38 @@ msgstr ""
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr ""
diff --git a/gpg/locale/nl/fusiondirectory.po b/gpg/locale/nl/fusiondirectory.po
index 2bbec9613c53861b8eacabccd4ec6892f67365fa..478eb5e6a7c0007431517bec352dc917f9411572 100644
--- a/gpg/locale/nl/fusiondirectory.po
+++ b/gpg/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
@@ -79,38 +79,38 @@ msgstr "Configuratiefout"
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr "Je moet GPG basis dn eerst configureren in de add-ons sectie "
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr "Sleutel-ID"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr "Gebruikers-ID"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr "Tijd van aanmaak"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr "Verval"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr "Algoritme"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr "Grootte"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr "Ingetrokken"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr "Niet actief"
diff --git a/gpg/locale/pl/fusiondirectory.po b/gpg/locale/pl/fusiondirectory.po
index a203e0a346c5f6ff207e85b093fb7ac78d3e6429..de18e0cff93ffc39b74b2acd946886e4e233734e 100644
--- a/gpg/locale/pl/fusiondirectory.po
+++ b/gpg/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
@@ -78,38 +78,38 @@ msgstr "Błąd konfiguracji"
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr "Identyfikator użytkownika"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr "Rozmiar"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr "Wyłączone"
diff --git a/gpg/locale/pt/fusiondirectory.po b/gpg/locale/pt/fusiondirectory.po
index 66801841093b9ee20ee4562643da8443c0584e88..a860651924d1317bf12bf26d084bbb229e63f767 100644
--- a/gpg/locale/pt/fusiondirectory.po
+++ b/gpg/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/gpg/class_pgpServerInfo.inc:31 addons/gpg/class_pgpServerInfo.inc:32
 #: addons/gpg/class_pgpServerInfo.inc:38 addons/gpg/class_pgpServerInfo.inc:56
@@ -78,38 +78,38 @@ msgstr "Erro de configuração"
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr "ID do usuário"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr ""
diff --git a/gpg/locale/pt_BR/fusiondirectory.po b/gpg/locale/pt_BR/fusiondirectory.po
index e6e47959f0a3931bfa2357974263046dd3c29c94..6372aefeef6b91a7130f0b9e0d7fe5f4f4af1aef 100644
--- a/gpg/locale/pt_BR/fusiondirectory.po
+++ b/gpg/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/gpg/class_pgpServerInfo.inc:31 addons/gpg/class_pgpServerInfo.inc:32
 #: addons/gpg/class_pgpServerInfo.inc:38 addons/gpg/class_pgpServerInfo.inc:56
@@ -78,38 +78,38 @@ msgstr "Erro de configuração"
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr "ID de usuário"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr "Tamanho"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr ""
diff --git a/gpg/locale/ru/fusiondirectory.po b/gpg/locale/ru/fusiondirectory.po
index 1d214ef661053560a314d38c1003e4c383d0502a..4ee4b13b39dee3a51f52ead916c900dabfd0d19c 100644
--- a/gpg/locale/ru/fusiondirectory.po
+++ b/gpg/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
@@ -78,38 +78,38 @@ msgstr "Ошибка конфигурации"
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr "ID ключа"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr "Идентификатор пользователя"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr "Время создания"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr "Когда истекает"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr "Алгоритм"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr "Размер"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr "Отозван"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr "Отключен"
diff --git a/gpg/locale/ru@petr1708/fusiondirectory.po b/gpg/locale/ru@petr1708/fusiondirectory.po
index c7a9f8266fa5474f221d1cefe0b5b5e3c704292d..5da21178bc98b90c7e30316cf6f0896bfa4b3253 100644
--- a/gpg/locale/ru@petr1708/fusiondirectory.po
+++ b/gpg/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
@@ -74,38 +74,38 @@ msgstr ""
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr ""
diff --git a/gpg/locale/sv/fusiondirectory.po b/gpg/locale/sv/fusiondirectory.po
index 3e2a0fb55da88d20908a06bc57a5fec3140e816c..5a22f484090060ca4e03404c3151952be0ca9d79 100644
--- a/gpg/locale/sv/fusiondirectory.po
+++ b/gpg/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
@@ -78,38 +78,38 @@ msgstr "Konfigurationsfel"
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr "Användar-ID"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr "Storlek"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr "Avaktiverad"
diff --git a/gpg/locale/tr_TR/fusiondirectory.po b/gpg/locale/tr_TR/fusiondirectory.po
index 36d12c5a5cbb669065ca1798fda1c3f277363243..dae7763d726501ad6a9f7016e622ad73e744b83d 100644
--- a/gpg/locale/tr_TR/fusiondirectory.po
+++ b/gpg/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2021
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2021\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -74,38 +78,38 @@ msgstr ""
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr ""
@@ -132,4 +136,4 @@ msgstr ""
 
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:72
 msgid "Type"
-msgstr ""
+msgstr "Tür"
diff --git a/gpg/locale/ug/fusiondirectory.po b/gpg/locale/ug/fusiondirectory.po
index b19130a7f6afe5e0c8e9799956ec14296251ada3..c7354c0ca53923addce71d9df4ce61da2225bf93 100644
--- a/gpg/locale/ug/fusiondirectory.po
+++ b/gpg/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: addons/gpg/class_pgpServerInfo.inc:31 addons/gpg/class_pgpServerInfo.inc:32
 #: addons/gpg/class_pgpServerInfo.inc:38 addons/gpg/class_pgpServerInfo.inc:56
@@ -74,38 +74,38 @@ msgstr ""
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr ""
diff --git a/gpg/locale/vi_VN/fusiondirectory.po b/gpg/locale/vi_VN/fusiondirectory.po
index d41fbe4826e4e04dad17a97d5fd49ec35e9f3595..cfbe442d0d0c2d586a09b9fb5056daf3b46b993a 100644
--- a/gpg/locale/vi_VN/fusiondirectory.po
+++ b/gpg/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
@@ -78,38 +78,38 @@ msgstr "Lỗi cấu hình"
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr "ID người dùng"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr "Vô hiệu hóa/ Tắt chức năng"
diff --git a/gpg/locale/zh/fusiondirectory.po b/gpg/locale/zh/fusiondirectory.po
index 2a34910eab3d5ca8616082b3615ec77095988c78..47fa1d4f7d0b3d671218d6282e0512d0950e92f0 100644
--- a/gpg/locale/zh/fusiondirectory.po
+++ b/gpg/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
@@ -78,38 +78,38 @@ msgstr ""
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr "用户 ID"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr "大小"
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr ""
diff --git a/gpg/locale/zh_TW/fusiondirectory.po b/gpg/locale/zh_TW/fusiondirectory.po
index 1212e766d933d81d88d02a717b77f094c3f2aaf8..04b90fb6f8139311326a1c902b0d8f191593e4e4 100644
--- a/gpg/locale/zh_TW/fusiondirectory.po
+++ b/gpg/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
@@ -74,38 +74,38 @@ msgstr ""
 msgid "You need to configure GPG base dn through the addons section first"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:138
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:40
 msgid "Key ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:139
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
 msgid "User ID"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:140
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
 msgid "Creation time"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:141
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
 msgid "Expiration"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:142
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
 msgid "Algorithm"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:143
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:146
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:80
 msgid "Size"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:144
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:147
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:88
 msgid "Revoked"
 msgstr ""
 
-#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:145
+#: personal/gpg/pgpKeySelect/class_pgpKeySelect.inc:148
 #: personal/gpg/pgpKeySelect/pgpKeySelect-list.xml:96
 msgid "Disabled"
 msgstr ""
diff --git a/gpg/personal/gpg/class_gpgAccount.inc b/gpg/personal/gpg/class_gpgAccount.inc
index 9866202a7507408c10bb5e6d772c9287935af3e1..9cf40d77985fef0d2a3c754afb0996b2d419374e 100644
--- a/gpg/personal/gpg/class_gpgAccount.inc
+++ b/gpg/personal/gpg/class_gpgAccount.inc
@@ -21,37 +21,37 @@
 class gpgAccount extends simplePlugin
 {
   var $displayHeader = TRUE;
-  var $objectclasses = array('fdGpgAccount');
+  var $objectclasses = ['fdGpgAccount'];
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('GPG keys'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
+        'class' => ['fullwidth'],
+        'attrs' => [
           new PgpKeyAttribute(
             '', _('GPG keys of this user'),
             'fdUserKeyDN', TRUE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('GPG'),
       'plDescription'   => _('Edit user\'s GPG IDs'),
       'plSelfModify'    => TRUE,
-      'plObjectType'    => array('user'),
+      'plObjectType'    => ['user'],
       'plIcon'          => 'geticon.php?context=applications&icon=gpg&size=48',
       'plSmallIcon'     => 'geticon.php?context=applications&icon=gpg&size=16',
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 }
 ?>
diff --git a/gpg/personal/gpg/pgpKeySelect/class_pgpKeySelect.inc b/gpg/personal/gpg/pgpKeySelect/class_pgpKeySelect.inc
index 2313da9dd9b303d18764da8f1facc74b2330bbb6..564cb94a725e6c38674fd6b8ea4fb9123bab3845 100644
--- a/gpg/personal/gpg/pgpKeySelect/class_pgpKeySelect.inc
+++ b/gpg/personal/gpg/pgpKeySelect/class_pgpKeySelect.inc
@@ -20,7 +20,7 @@
 
 class pgpKeySelect extends simpleSelectManagement
 {
-  protected $objectTypes  = array();
+  protected $objectTypes  = [];
   protected $autoFilter   = FALSE;
 
   protected $departmentBrowser      = FALSE;
@@ -28,7 +28,7 @@ class pgpKeySelect extends simpleSelectManagement
   protected $baseMode               = FALSE;
   protected $multiSelect            = TRUE;
 
-  function __construct()
+  function __construct ()
   {
     $this->listXMLPath = get_template_path('pgpKeySelect-list.xml', TRUE, dirname(__FILE__));
 
@@ -52,18 +52,18 @@ class pgpKeySelect extends simpleSelectManagement
     $ldap = $config->get_ldap_link();
     $ldap->cat('cn=pgpServerInfo,'.$config->current['BASE']);
     if ($pgpServerInfo = $ldap->fetch()) {
-      $this->storagePoints = array(
+      $this->storagePoints = [
         preg_replace(
           '/'.$config->current['BASE'].'$/', '',
           $pgpServerInfo['pgpBaseKeySpaceDN'][0]
         )
-      );
+      ];
     } else {
       msg_dialog::display(_('Configuration error'), _('You need to configure GPG base dn through the addons section first'));
     }
     $this->filter->setObjectStorage($this->storagePoints);
     $this->filter->category = 'user';
-    $attributes = array('pgpKeyID', 'pgpUserID', 'pgpKeyCreateTime', 'pgpKeyExpireTime', 'pgpKeyType', 'pgpKeySize');
+    $attributes = ['pgpKeyID', 'pgpUserID', 'pgpKeyCreateTime', 'pgpKeyExpireTime', 'pgpKeyType', 'pgpKeySize'];
     $this->filter->query[0]['backend']      = 'LDAPBlacklist';
     $this->filter->query[0]['filter']       = '$NAME';
     $this->filter->query[0]['attribute']    = $attributes;
@@ -72,26 +72,29 @@ class pgpKeySelect extends simpleSelectManagement
     $this->filter->elements['NAME']['autocomplete']['attribute']  = $attributes;
   }
 
-  static function filterSingleValue(array $value, $func)
+  static function filterSingleValue ($value, $func)
   {
-    if (count($value) == 0) {
+    if (is_array($value)) {
+      $value = reset($value);
+    }
+    if (($value === FALSE) || ($value === '')) {
       return '&nbsp;';
     }
     $return = static::$func($value[0]);
     return ($return === '' ? '&nbsp;' : $return);
   }
 
-  static function filterPgpDate($value = array())
+  static function filterPgpDate ($value = [])
   {
     return static::filterSingleValue($value, 'pgpDate');
   }
 
-  static function filterPgpSize($value = array())
+  static function filterPgpSize ($value = [])
   {
     return static::filterSingleValue($value, 'pgpSize');
   }
 
-  static function filterPgpRevoked($value = array())
+  static function filterPgpRevoked ($value = [])
   {
     if (empty($value)) {
       return 'No';
@@ -99,7 +102,7 @@ class pgpKeySelect extends simpleSelectManagement
     return static::pgpRevoked($value[0]);
   }
 
-  static function pgpDate($date)
+  static function pgpDate ($date)
   {
     if (empty($date)) {
       return $date;
@@ -107,13 +110,13 @@ class pgpKeySelect extends simpleSelectManagement
     return DateTime::createFromFormat('Ymd', substr($date, 0, 8))->format('d.m.Y');
   }
 
-  static function pgpSize($size)
+  static function pgpSize ($size)
   {
     // Remove useless 0 at the beginning
     return strval(intval($size));
   }
 
-  static function pgpRevoked($value)
+  static function pgpRevoked ($value)
   {
     // Remove useless 0 at the beginning
     return ($value == 0 ? 'No' : 'Yes');
@@ -131,10 +134,10 @@ class PgpKeyAttribute extends GenericDialogAttribute
   protected $height           = 200;
   protected $displayed_values;
 
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $acl = '')
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $acl = '')
   {
-    parent::__construct ($label, $description, $ldapName, $required, $defaultValue, 'dn', NULL, $acl);
-    $this->displayed_values = array(
+    parent::__construct($label, $description, $ldapName, $required, $defaultValue, 'dn', NULL, $acl);
+    $this->displayed_values = [
       'pgpKeyID'          => _('Key ID'),
       'pgpUserID'         => _('User ID'),
       'pgpKeyCreateTime'  => _('Creation time'),
@@ -143,7 +146,7 @@ class PgpKeyAttribute extends GenericDialogAttribute
       'pgpKeySize'        => _('Size'),
       'pgpRevoked'        => _('Revoked'),
       'pgpDisabled'       => _('Disabled')
-    );
+    ];
   }
 
   function addValue ($dn, $entry)
@@ -198,7 +201,7 @@ class PgpKeyAttribute extends GenericDialogAttribute
     // Updates and get display values
     $displays = $this->getDisplayValues();
     foreach ($displays as $key => $display_item) {
-      $fields = array();
+      $fields = [];
       foreach (array_keys($this->displayed_values) as $field) {
         if (isset($display_item[$field][0]) && !empty($display_item[$field][0])) {
           $display = $display_item[$field][0];
@@ -214,17 +217,17 @@ class PgpKeyAttribute extends GenericDialogAttribute
           } elseif ($field == 'pgpDisabled') {
             $display = pgpKeySelect::pgpRevoked($display);
           }
-          $fields[] = array('string' => $display);
+          $fields[] = ['string' => $display];
         } else {
           $display = '';
           if (($field == 'pgpRevoked') || ($field == 'pgpDisabled')) {
             $display = pgpKeySelect::pgpRevoked($display);
           }
-          $fields[] = array('string' => $display);
+          $fields[] = ['string' => $display];
         }
       }
       $img = '<input type="image" src="geticon.php?context=actions&icon=edit-delete&size=16" name="'.$id.'_del_'.$key.'" class="center"/>&nbsp;';
-      $fields[] = array('html' => $img, 'attach' => 'style="border-right:0px;width:20px;"');
+      $fields[] = ['html' => $img, 'attach' => 'style="border-right:0px;width:20px;"'];
       $div->AddEntry($fields);
     }
     $smarty = get_smarty();
@@ -232,10 +235,10 @@ class PgpKeyAttribute extends GenericDialogAttribute
     return '{$div_'.$id.'}'."\n";
   }
 
-  public function htmlIds()
+  public function htmlIds ()
   {
     $id = $this->getHtmlId();
-    $ids = array('add'.$id.'_dialog');
+    $ids = ['add'.$id.'_dialog'];
     $nb_values = count($this->value);
     for ($i = 0; $i < $nb_values; ++$i) {
       $ids[] = $id.'_del_'.$i;
diff --git a/ipmi/admin/systems/ipmi/class_ipmiClient.inc b/ipmi/admin/systems/ipmi/class_ipmiClient.inc
index 0c417b194cda2456e2a2fb682fe97227d602fed8..cbe9da35c3883823d9cbbe7fcd475939341625a2 100644
--- a/ipmi/admin/systems/ipmi/class_ipmiClient.inc
+++ b/ipmi/admin/systems/ipmi/class_ipmiClient.inc
@@ -20,46 +20,46 @@
 
 class ipmiClient extends simplePlugin
 {
-  var $objectclasses  = array('ipmiClient');
+  var $objectclasses  = ['ipmiClient'];
   var $displayHeader  = TRUE;
 
   static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('IPMI client'),
       'plDescription'   => _('Edit IPMI client settings'),
       'plIcon'          => 'geticon.php?context=applications&icon=ipmi&size=48',
       'plSmallIcon'     => 'geticon.php?context=applications&icon=ipmi&size=16',
       'plSelfModify'    => FALSE,
-      'plCategory'      => array('workstation','server'),
-      'plObjectType'    => array('workstation','server'),
+      'plCategory'      => ['workstation','server'],
+      'plObjectType'    => ['workstation','server'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('IPMI client settings'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('IP'), _('IP of the IPMI interface'),
             'fdIpmiIP', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('User login'), _('IPMI user login'),
             'fdIpmiLogin', TRUE,
             ''
           ),
-          new PasswordAttribute (
+          new PasswordAttribute(
             _('User password'), _('IPMI user password'),
             'fdIpmiPassword', TRUE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 
diff --git a/ipmi/locale/af_ZA/fusiondirectory.po b/ipmi/locale/af_ZA/fusiondirectory.po
index 086962dac9f4a444b31db71ce358616502e27f3e..6b8b33eccd98df3ac7fdedba949b472f483fa056 100644
--- a/ipmi/locale/af_ZA/fusiondirectory.po
+++ b/ipmi/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ipmi/locale/ar/fusiondirectory.po b/ipmi/locale/ar/fusiondirectory.po
index 4c63eaa9a64cd3d7fec9273d4b617eec8b289685..d00f828e8aa575876a60f17cd9a243de8cdcd628 100644
--- a/ipmi/locale/ar/fusiondirectory.po
+++ b/ipmi/locale/ar/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ipmi/locale/ca/fusiondirectory.po b/ipmi/locale/ca/fusiondirectory.po
index 8487b38163925d62c354ea9d451ea1d896b5d895..83cedc9cc1c98b3d48123bfb181c46d688116d73 100644
--- a/ipmi/locale/ca/fusiondirectory.po
+++ b/ipmi/locale/ca/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ipmi/locale/cs_CZ/fusiondirectory.po b/ipmi/locale/cs_CZ/fusiondirectory.po
index 682bbe6818d6a56479643ee6ad01636bf0ba4449..530b1062e5dd151aa03f5231aeea9d4f494e40b6 100644
--- a/ipmi/locale/cs_CZ/fusiondirectory.po
+++ b/ipmi/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/ipmi/locale/de/fusiondirectory.po b/ipmi/locale/de/fusiondirectory.po
index 4d137b2d55b9cf35ec8909841d0c8a03f46ef608..1f0d5085f5b8b8ff5357835a6ec71415c70400be 100644
--- a/ipmi/locale/de/fusiondirectory.po
+++ b/ipmi/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/ipmi/locale/el_GR/fusiondirectory.po b/ipmi/locale/el_GR/fusiondirectory.po
index 1af864318594cc2ad9ec59085780cd4e6c8d0c49..b5a58124b739a28c6bdc0bf07dd84eed253c8714 100644
--- a/ipmi/locale/el_GR/fusiondirectory.po
+++ b/ipmi/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/ipmi/locale/en/fusiondirectory.po b/ipmi/locale/en/fusiondirectory.po
index ffaf4624d5b65f4a91aae0e2d117a982c7c0933b..3dca17bdb126297b0d04c8b5dfed7c78ea28afa3 100644
--- a/ipmi/locale/en/fusiondirectory.po
+++ b/ipmi/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,11 +17,11 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: admin/systems/ipmi/class_ipmiClient.inc:31
+#: admin/systems/ipmi/class_ipmiClient.inc:29
 msgid "IPMI client"
 msgstr ""
 
-#: admin/systems/ipmi/class_ipmiClient.inc:32
+#: admin/systems/ipmi/class_ipmiClient.inc:30
 msgid "Edit IPMI client settings"
 msgstr ""
 
diff --git a/ipmi/locale/es/fusiondirectory.po b/ipmi/locale/es/fusiondirectory.po
index 969af16d1d58387c9e4cfda9be4caf221c4a2ec5..318b17c3ca2d629f38da1793d273077c68bc78b5 100644
--- a/ipmi/locale/es/fusiondirectory.po
+++ b/ipmi/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/ipmi/class_ipmiClient.inc:29
 msgid "IPMI client"
diff --git a/ipmi/locale/es_CO/fusiondirectory.po b/ipmi/locale/es_CO/fusiondirectory.po
index 6691f4b5f6221b1b1f06e8827ec03071992063ed..6506892a52e1b94f7ba64fe2874950a224c8a979 100644
--- a/ipmi/locale/es_CO/fusiondirectory.po
+++ b/ipmi/locale/es_CO/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/ipmi/class_ipmiClient.inc:29
 msgid "IPMI client"
diff --git a/ipmi/locale/es_VE/fusiondirectory.po b/ipmi/locale/es_VE/fusiondirectory.po
index 007173c5347acd8ebec2f165ac395933aedbc82c..3cadc2ede8a818bd24a774248e16fcdea7d07863 100644
--- a/ipmi/locale/es_VE/fusiondirectory.po
+++ b/ipmi/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/ipmi/class_ipmiClient.inc:29
 msgid "IPMI client"
diff --git a/ipmi/locale/fa_IR/fusiondirectory.po b/ipmi/locale/fa_IR/fusiondirectory.po
index ac91cc1af6c79f9c563cade1a47ab8e63f4a762c..54f0c6e313dfa0445c0ebd3717bbc64dd60a6dab 100644
--- a/ipmi/locale/fa_IR/fusiondirectory.po
+++ b/ipmi/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ipmi/locale/fi_FI/fusiondirectory.po b/ipmi/locale/fi_FI/fusiondirectory.po
index 1f13f57f7c3640192c16566ea8a735fbaf1799bf..5a0d715276f2aa6c2a2c400bb47690dc31b43d67 100644
--- a/ipmi/locale/fi_FI/fusiondirectory.po
+++ b/ipmi/locale/fi_FI/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ipmi/locale/fr/fusiondirectory.po b/ipmi/locale/fr/fusiondirectory.po
index 0027779036b3fbfba94a1da369b09faeccc285bd..722896f258afc6e49327ae37f1db1f61b56151fe 100644
--- a/ipmi/locale/fr/fusiondirectory.po
+++ b/ipmi/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/ipmi/class_ipmiClient.inc:29
 msgid "IPMI client"
diff --git a/ipmi/locale/hu_HU/fusiondirectory.po b/ipmi/locale/hu_HU/fusiondirectory.po
index 2611fd26f46abf4ca358f9ff8beb2bd5cdc26780..100ef9090a8fd82a3d94ae526d19a228f6729a44 100644
--- a/ipmi/locale/hu_HU/fusiondirectory.po
+++ b/ipmi/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ipmi/locale/id/fusiondirectory.po b/ipmi/locale/id/fusiondirectory.po
index 8b0f81cd542bae07150e42c22a4dd52d271eaef8..4966e86632a8789473f3a2b91a30df8c867a446b 100644
--- a/ipmi/locale/id/fusiondirectory.po
+++ b/ipmi/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ipmi/locale/it_IT/fusiondirectory.po b/ipmi/locale/it_IT/fusiondirectory.po
index fac80e2cb87afd2015b661bc8bf00b8a1948977d..bfd8f6dcd357fb2680de2c50330436e094b8bd88 100644
--- a/ipmi/locale/it_IT/fusiondirectory.po
+++ b/ipmi/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/ipmi/class_ipmiClient.inc:29
 msgid "IPMI client"
diff --git a/ipmi/locale/ja/fusiondirectory.po b/ipmi/locale/ja/fusiondirectory.po
index 93612d4cd52d19baa2c60aa98ec6a5fe27687d9c..64aca01c4000915a58fccc8d26925af597399e69 100644
--- a/ipmi/locale/ja/fusiondirectory.po
+++ b/ipmi/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ipmi/locale/ko/fusiondirectory.po b/ipmi/locale/ko/fusiondirectory.po
index b0a32f88f8fc2f469b45fc588ff4797b6ab678ab..ce2a647e5a6b946bb63c48d1c24b24145220fcff 100644
--- a/ipmi/locale/ko/fusiondirectory.po
+++ b/ipmi/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/ipmi/locale/lv/fusiondirectory.po b/ipmi/locale/lv/fusiondirectory.po
index ea7e019e2760c5f15d7125b052f555e7a54ef43c..ab67ef0aad857bef131c029ca6ee286bd54468d2 100644
--- a/ipmi/locale/lv/fusiondirectory.po
+++ b/ipmi/locale/lv/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ipmi/locale/nb/fusiondirectory.po b/ipmi/locale/nb/fusiondirectory.po
index 3bf614c3cb92388da5d055c38c94ace88ed99007..157fde5bd719f985601f9d7ce4481a07de739555 100644
--- a/ipmi/locale/nb/fusiondirectory.po
+++ b/ipmi/locale/nb/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ipmi/locale/nl/fusiondirectory.po b/ipmi/locale/nl/fusiondirectory.po
index f0a3cace3593a09fcaaa7187fd6d8eb40392930d..6e5de62a34d3881d497ac96d6d954bc3b2b3065b 100644
--- a/ipmi/locale/nl/fusiondirectory.po
+++ b/ipmi/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/ipmi/locale/pl/fusiondirectory.po b/ipmi/locale/pl/fusiondirectory.po
index 1b025e0da98d6687a357286181c83042c60841d5..2b7f2b6a204ae3f2ee39b9f8cd1f6b7139e01d5f 100644
--- a/ipmi/locale/pl/fusiondirectory.po
+++ b/ipmi/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/ipmi/locale/pt/fusiondirectory.po b/ipmi/locale/pt/fusiondirectory.po
index 447c8e3875d4beff2a4385df7e76dd77f9ae97ee..91da8a4314eda4aa10b3a712b8d25228442e5cc7 100644
--- a/ipmi/locale/pt/fusiondirectory.po
+++ b/ipmi/locale/pt/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/ipmi/class_ipmiClient.inc:29
 msgid "IPMI client"
diff --git a/ipmi/locale/pt_BR/fusiondirectory.po b/ipmi/locale/pt_BR/fusiondirectory.po
index 2feba39ea6865e0f1bd7ff54767ccc277161eb72..71b148caaba783737b0f63a7eb8f0a46cd057633 100644
--- a/ipmi/locale/pt_BR/fusiondirectory.po
+++ b/ipmi/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/ipmi/class_ipmiClient.inc:29
 msgid "IPMI client"
diff --git a/ipmi/locale/ru/fusiondirectory.po b/ipmi/locale/ru/fusiondirectory.po
index 7d16187cb57e1ea023910696ccf6882e659c5360..2fedd3dca46ea1324567132ed836f9b6909a8377 100644
--- a/ipmi/locale/ru/fusiondirectory.po
+++ b/ipmi/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/ipmi/locale/ru@petr1708/fusiondirectory.po b/ipmi/locale/ru@petr1708/fusiondirectory.po
index bd92c15a788cf02b9cb5e5cf57dd0529369e40e2..6599c1692efc69ee980743c8cd219f2a80361d53 100644
--- a/ipmi/locale/ru@petr1708/fusiondirectory.po
+++ b/ipmi/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ipmi/locale/sv/fusiondirectory.po b/ipmi/locale/sv/fusiondirectory.po
index 0193de01084be4f371193f78928bd9ddcc9cbe98..b349c95dea854f6c53e4e92ee1dcfdfdae9a1695 100644
--- a/ipmi/locale/sv/fusiondirectory.po
+++ b/ipmi/locale/sv/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ipmi/locale/tr_TR/fusiondirectory.po b/ipmi/locale/tr_TR/fusiondirectory.po
index 33362137d9bb9eb027fa7928e3c37d8d37fe4533..19e124c9983f1cb8c7cda465a303125d438b8840 100644
--- a/ipmi/locale/tr_TR/fusiondirectory.po
+++ b/ipmi/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ipmi/locale/ug/fusiondirectory.po b/ipmi/locale/ug/fusiondirectory.po
index 76074224d2b086cf1dadbcb1c877f89f3378c1f4..a2fe67f80d88f9224b11d321a9ac9c3920d08055 100644
--- a/ipmi/locale/ug/fusiondirectory.po
+++ b/ipmi/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/systems/ipmi/class_ipmiClient.inc:29
 msgid "IPMI client"
diff --git a/ipmi/locale/vi_VN/fusiondirectory.po b/ipmi/locale/vi_VN/fusiondirectory.po
index e5cc2be92d6f131a7e2e36372d8a7dbaff16b7cd..13cf2bb5fbd03f722c6b175ecbb47e394a3d99e0 100644
--- a/ipmi/locale/vi_VN/fusiondirectory.po
+++ b/ipmi/locale/vi_VN/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ipmi/locale/zh/fusiondirectory.po b/ipmi/locale/zh/fusiondirectory.po
index 14a89bd54ca04b24f20b7039e3a8aa506819649c..7d6adc9056429d8d8fdc742c83d73ceb1e314795 100644
--- a/ipmi/locale/zh/fusiondirectory.po
+++ b/ipmi/locale/zh/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ipmi/locale/zh_TW/fusiondirectory.po b/ipmi/locale/zh_TW/fusiondirectory.po
index 08bedf96e92e7378d9952185ef6dcba1c13f1690..357320e5cf3855d93946da2434af5c8b52e5599b 100644
--- a/ipmi/locale/zh_TW/fusiondirectory.po
+++ b/ipmi/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:12+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ldapdump/addons/ldapdump/class_ldapDump.inc b/ldapdump/addons/ldapdump/class_ldapDump.inc
index 4874fb0ac911bf81997c88d4f7a24b1dfb1aed33..0779596f8b5b4df69fa33453a7773f50365dafc8 100644
--- a/ldapdump/addons/ldapdump/class_ldapDump.inc
+++ b/ldapdump/addons/ldapdump/class_ldapDump.inc
@@ -20,30 +20,30 @@
 
 class ldapDump extends simplePlugin
 {
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('LDAP'),
       'plDescription' => _('LDAP Dump'),
-      'plObjectType'  => array('special'),
+      'plObjectType'  => ['special'],
       'plPriority'    => 99,
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'      => _('LDAP Dump'),
-        'class'     => array('fullwidth'),
-        'attrs'     => array(
+        'class'     => ['fullwidth'],
+        'attrs'     => [
           new FakeAttribute('dump')
-        ),
+        ],
         'template'  => get_template_path('ldapdump.tpl', TRUE, dirname(__FILE__))
-      ),
-    );
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -53,18 +53,18 @@ class ldapDump extends simplePlugin
     $this->dump = NULL;
   }
 
-  function execute()
+  function execute ()
   {
     global $config;
     if ($this->dump === NULL) {
       $ui = get_userinfo();
       if (preg_match('/r/', $ui->get_complete_category_acls($this->acl_base, $this->parent->acl_category))) {
         $ldap = $config->get_ldap_link();
-        $ldap->cat($this->dn, array('*','createTimestamp','modifyTimestamp'));
+        $ldap->cat($this->dn, ['*','createTimestamp','modifyTimestamp']);
         if ($attrs = $ldap->fetch()) {
-          $this->dump = array($this->dumpLdapNode($attrs, $config->current['BASE']));
+          $this->dump = [$this->dumpLdapNode($attrs, $config->current['BASE'])];
         } else {
-          $this->dump = array();
+          $this->dump = [];
         }
       } else {
         $this->dump = FALSE;
@@ -75,24 +75,24 @@ class ldapDump extends simplePlugin
     return parent::execute();
   }
 
-  function dumpLdapNode($attrs, $parent_dn = '')
+  function dumpLdapNode ($attrs, $parent_dn = '')
   {
     global $config;
-    $node = array(
+    $node = [
       'dn'        => $attrs['dn'],
       'name'      => preg_replace('/,'.preg_quote($parent_dn).'$/', '', $attrs['dn']),
-      'attrs'     => array(),
-      'subnodes'  => array(),
-    );
+      'attrs'     => [],
+      'subnodes'  => [],
+    ];
     for ($i = 0; $i < $attrs['count']; $i++) {
       $key                  = $attrs[$i];
-      if (in_array($key, array('createTimestamp', 'modifyTimestamp'))) {
+      if (in_array($key, ['createTimestamp', 'modifyTimestamp'])) {
         continue;
       }
       $node['attrs'][$key]  = $attrs[$key];
       unset($node['attrs'][$key]['count']);
     }
-    $timestamps = array();
+    $timestamps = [];
     if (isset($attrs['createTimestamp'][0])) {
       $date = LdapGeneralizedTime::fromString($attrs['createTimestamp'][0]);
       $date->setTimezone(timezone::getDefaultTimeZone());
@@ -107,7 +107,7 @@ class ldapDump extends simplePlugin
 
     $ldap = $config->get_ldap_link();
     $ldap->cd($attrs['dn']);
-    $ldap->search('(objectClass=*)', array('*','createTimestamp','modifyTimestamp'), 'one');
+    $ldap->search('(objectClass=*)', ['*','createTimestamp','modifyTimestamp'], 'one');
     while ($attrs = $ldap->fetch()) {
       $node['subnodes'][$attrs['dn']] = $this->dumpLdapNode($attrs, $node['dn']);
     }
@@ -115,18 +115,18 @@ class ldapDump extends simplePlugin
     return $node;
   }
 
-  function check()
+  function check ()
   {
   }
 
-  function save()
+  function save ()
   {
-    return array();
+    return [];
   }
 
-  function remove($fulldelete = FALSE)
+  function remove ($fulldelete = FALSE)
   {
-    return array();
+    return [];
   }
 }
 
diff --git a/ldapdump/locale/af_ZA/fusiondirectory.po b/ldapdump/locale/af_ZA/fusiondirectory.po
index a1765e9e7ceecac9415e47d408800bd1c8362f15..db5d4b10d627586565d6026c085598d2f877905a 100644
--- a/ldapdump/locale/af_ZA/fusiondirectory.po
+++ b/ldapdump/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ldapdump/locale/ar/fusiondirectory.po b/ldapdump/locale/ar/fusiondirectory.po
index 476a7fb99af21f3db47373aef56b50fdd05c5dab..2a4823d5866ffb4428101b6c859d6617684ad059 100644
--- a/ldapdump/locale/ar/fusiondirectory.po
+++ b/ldapdump/locale/ar/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ldapdump/locale/ca/fusiondirectory.po b/ldapdump/locale/ca/fusiondirectory.po
index dc46e382f843b7b4782a72c3332ea587cdb25db8..426ad69b41a164bf518fd4286d64097883ace746 100644
--- a/ldapdump/locale/ca/fusiondirectory.po
+++ b/ldapdump/locale/ca/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ldapdump/locale/cs_CZ/fusiondirectory.po b/ldapdump/locale/cs_CZ/fusiondirectory.po
index 3d808fe87a9a2133fecf6b41511136adc7155d57..4e36dcea55a2b74f4266891dc53ee8d53df2efae 100644
--- a/ldapdump/locale/cs_CZ/fusiondirectory.po
+++ b/ldapdump/locale/cs_CZ/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/ldapdump/locale/de/fusiondirectory.po b/ldapdump/locale/de/fusiondirectory.po
index 8e1d8676ce5e79ec45cab16fb848c08c3c73bd8e..fef874f435d32a6c07b580e626d1ca136e3f2919 100644
--- a/ldapdump/locale/de/fusiondirectory.po
+++ b/ldapdump/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/ldapdump/locale/el_GR/fusiondirectory.po b/ldapdump/locale/el_GR/fusiondirectory.po
index bdb000ff93e332aee6bf5c08328f5bb8474ebfd7..e96e8c5f7e5476ee4a3d03ce473db500e562d9e7 100644
--- a/ldapdump/locale/el_GR/fusiondirectory.po
+++ b/ldapdump/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/ldapdump/locale/en/fusiondirectory.po b/ldapdump/locale/en/fusiondirectory.po
index 23856ac1ba42703430fb1c82f332b79ae49b9ec1..13d96d2abfcc64ace43a4b2f4c0af0849d9ba183 100644
--- a/ldapdump/locale/en/fusiondirectory.po
+++ b/ldapdump/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
diff --git a/ldapdump/locale/es/fusiondirectory.po b/ldapdump/locale/es/fusiondirectory.po
index 6893e55a1cc3c0c867b5676d4d5f813fb25b2f03..19ad5a1de547b6dc776ea835802a7c11316fb6c6 100644
--- a/ldapdump/locale/es/fusiondirectory.po
+++ b/ldapdump/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/ldapdump/class_ldapDump.inc:26
 msgid "LDAP"
diff --git a/ldapdump/locale/es_CO/fusiondirectory.po b/ldapdump/locale/es_CO/fusiondirectory.po
index ac7be8a275cad5f2ad094620da63d87e661973c5..c0fa33a1db3a048d94c5136aa7139c4367613c21 100644
--- a/ldapdump/locale/es_CO/fusiondirectory.po
+++ b/ldapdump/locale/es_CO/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/ldapdump/class_ldapDump.inc:26
 msgid "LDAP"
diff --git a/ldapdump/locale/es_VE/fusiondirectory.po b/ldapdump/locale/es_VE/fusiondirectory.po
index 2f8942f41be4b6c8718975d9c0c804295a7a7e3d..6f3d20c7d4f4eeec521281df3e72659330b39916 100644
--- a/ldapdump/locale/es_VE/fusiondirectory.po
+++ b/ldapdump/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/ldapdump/class_ldapDump.inc:26
 msgid "LDAP"
diff --git a/ldapdump/locale/fa_IR/fusiondirectory.po b/ldapdump/locale/fa_IR/fusiondirectory.po
index ce5d2a5375def0caaf74091082515e1abf1827cc..85b769a1046863065486073cae1ff119eee191e1 100644
--- a/ldapdump/locale/fa_IR/fusiondirectory.po
+++ b/ldapdump/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ldapdump/locale/fi_FI/fusiondirectory.po b/ldapdump/locale/fi_FI/fusiondirectory.po
index 03b455c9ab574ed95f801608d4a474597d97330a..e8f36425cd6f7b4014eeafc692f0ce379765031f 100644
--- a/ldapdump/locale/fi_FI/fusiondirectory.po
+++ b/ldapdump/locale/fi_FI/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ldapdump/locale/fr/fusiondirectory.po b/ldapdump/locale/fr/fusiondirectory.po
index e14a28ac36d997e9b13a8eff3fc3ddd552936ff4..d22a318d930e500987dcbcd1eb8bf7fc810dd39b 100644
--- a/ldapdump/locale/fr/fusiondirectory.po
+++ b/ldapdump/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/ldapdump/class_ldapDump.inc:26
 msgid "LDAP"
diff --git a/ldapdump/locale/hu_HU/fusiondirectory.po b/ldapdump/locale/hu_HU/fusiondirectory.po
index b0f5fb90d5686f62aa8314d08ce3517dfbce5264..a16d862cb163a85ad1c8304aa05399338286d4e7 100644
--- a/ldapdump/locale/hu_HU/fusiondirectory.po
+++ b/ldapdump/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ldapdump/locale/id/fusiondirectory.po b/ldapdump/locale/id/fusiondirectory.po
index 90d5f61baf37ba2523186459cba6a8c5780663e0..b61d9053945724d82aa69bca8cffc6a18f5f4282 100644
--- a/ldapdump/locale/id/fusiondirectory.po
+++ b/ldapdump/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ldapdump/locale/it_IT/fusiondirectory.po b/ldapdump/locale/it_IT/fusiondirectory.po
index 369d7dccb461e511e16b1e1602b77568fa00784e..80c0dc51c8f351c6f56d5309a84db7027603b880 100644
--- a/ldapdump/locale/it_IT/fusiondirectory.po
+++ b/ldapdump/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/ldapdump/class_ldapDump.inc:26
 msgid "LDAP"
diff --git a/ldapdump/locale/ja/fusiondirectory.po b/ldapdump/locale/ja/fusiondirectory.po
index c8d108edc6382a4be1e973a2da4a07200a235f02..e5505d6b3af773951d35bf2cdac7d5e6a413e93b 100644
--- a/ldapdump/locale/ja/fusiondirectory.po
+++ b/ldapdump/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ldapdump/locale/ko/fusiondirectory.po b/ldapdump/locale/ko/fusiondirectory.po
index 7b249b151926f8feb5a918db7b56f048f923c34b..a4acc6c83e7ecb52f809207ee49347b1b75822e6 100644
--- a/ldapdump/locale/ko/fusiondirectory.po
+++ b/ldapdump/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/ldapdump/locale/lv/fusiondirectory.po b/ldapdump/locale/lv/fusiondirectory.po
index 9d63265c79313a89f0863544b78ef270d814148d..752192fd220466be79edbb25ad1f0f813e51b51a 100644
--- a/ldapdump/locale/lv/fusiondirectory.po
+++ b/ldapdump/locale/lv/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ldapdump/locale/nb/fusiondirectory.po b/ldapdump/locale/nb/fusiondirectory.po
index 1497de996fd650900480a5e62508e19b776c6837..e6d08c42a5fa43ef8e64dc6d4d59dfe4487ea070 100644
--- a/ldapdump/locale/nb/fusiondirectory.po
+++ b/ldapdump/locale/nb/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ldapdump/locale/nl/fusiondirectory.po b/ldapdump/locale/nl/fusiondirectory.po
index 87bcd7e3f21afd048b2e8cca27bd641e648e87aa..b03d84b4c1a480ebba1dc9dc7e41f950b1c96241 100644
--- a/ldapdump/locale/nl/fusiondirectory.po
+++ b/ldapdump/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/ldapdump/locale/pl/fusiondirectory.po b/ldapdump/locale/pl/fusiondirectory.po
index 71f02f0634826f29e85c6c69196571b106098a14..94cbb520b83c6c123bc6bfdc0bbfa26eca0a6aad 100644
--- a/ldapdump/locale/pl/fusiondirectory.po
+++ b/ldapdump/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/ldapdump/locale/pt/fusiondirectory.po b/ldapdump/locale/pt/fusiondirectory.po
index 18ab80377ed9ebc51685ad7ae7293fd343e2e274..28c47bcdf57d90d99379156b4ef6b7b03f1a5905 100644
--- a/ldapdump/locale/pt/fusiondirectory.po
+++ b/ldapdump/locale/pt/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/ldapdump/class_ldapDump.inc:26
 msgid "LDAP"
diff --git a/ldapdump/locale/pt_BR/fusiondirectory.po b/ldapdump/locale/pt_BR/fusiondirectory.po
index 2b671aa0212f855deb15dfbac58d3183a6317afe..c78ea71faa34ba0be87fd3be205d86fecd5e3a49 100644
--- a/ldapdump/locale/pt_BR/fusiondirectory.po
+++ b/ldapdump/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/ldapdump/class_ldapDump.inc:26
 msgid "LDAP"
diff --git a/ldapdump/locale/ru/fusiondirectory.po b/ldapdump/locale/ru/fusiondirectory.po
index f9e65fa3c13b27a199cc04beff61ec1e0c48088a..0bd6510baa81b3dc662c36c3a8b286612db468b0 100644
--- a/ldapdump/locale/ru/fusiondirectory.po
+++ b/ldapdump/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/ldapdump/locale/ru@petr1708/fusiondirectory.po b/ldapdump/locale/ru@petr1708/fusiondirectory.po
index 85874bdda35e427e580ffd0a8bdf3b5f1bbab41a..c3df237da3e6a8d8f7126f2fc7003057d2c9b49e 100644
--- a/ldapdump/locale/ru@petr1708/fusiondirectory.po
+++ b/ldapdump/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ldapdump/locale/sv/fusiondirectory.po b/ldapdump/locale/sv/fusiondirectory.po
index 363eba6376c5d8ca07590649b77a817811fa9a4a..52203ec3881742869256fc4be2baab9cc95e3416 100644
--- a/ldapdump/locale/sv/fusiondirectory.po
+++ b/ldapdump/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/ldapdump/locale/tr_TR/fusiondirectory.po b/ldapdump/locale/tr_TR/fusiondirectory.po
index b4c93188b88d5dfb6f0bf5d426b2fee66e152286..a35ad3572b13a75eece31ed689fc34d6a0b4bdaa 100644
--- a/ldapdump/locale/tr_TR/fusiondirectory.po
+++ b/ldapdump/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ldapdump/locale/ug/fusiondirectory.po b/ldapdump/locale/ug/fusiondirectory.po
index f8c2081cd65d62de01449e1c6be8907cbcf7d2b6..c25ba46484c7000327a7278ddf915bfbc0b102a2 100644
--- a/ldapdump/locale/ug/fusiondirectory.po
+++ b/ldapdump/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: addons/ldapdump/class_ldapDump.inc:26
 msgid "LDAP"
diff --git a/ldapdump/locale/vi_VN/fusiondirectory.po b/ldapdump/locale/vi_VN/fusiondirectory.po
index 6d90d45235d74d17320ff4fd91a575aa21d16164..d968e236e79c684dd3adea8a8ba4f5f5cbe6cbe4 100644
--- a/ldapdump/locale/vi_VN/fusiondirectory.po
+++ b/ldapdump/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/ldapdump/locale/zh/fusiondirectory.po b/ldapdump/locale/zh/fusiondirectory.po
index 6e44f6ed3aa939cf317b13a309b1575ca3373749..7bf6b2146f4fa2c3ae0f8acfc031424e2ee1565f 100644
--- a/ldapdump/locale/zh/fusiondirectory.po
+++ b/ldapdump/locale/zh/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ldapdump/locale/zh_TW/fusiondirectory.po b/ldapdump/locale/zh_TW/fusiondirectory.po
index 714d29c4ea495f4a2ec60867b5eaf9470e8e1707..4026cff4f932a17625a6e165cc8116509e2699fa 100644
--- a/ldapdump/locale/zh_TW/fusiondirectory.po
+++ b/ldapdump/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:13+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ldapmanager/addons/ldapmanager/class_csvimport.inc b/ldapmanager/addons/ldapmanager/class_csvimport.inc
index 782f37b34a3458f3c25de265a065619e565c5919..d4bec6034e6d5203703cecc0746d33b3e677d9df 100644
--- a/ldapmanager/addons/ldapmanager/class_csvimport.inc
+++ b/ldapmanager/addons/ldapmanager/class_csvimport.inc
@@ -23,48 +23,48 @@ class csvimport extends simplePlugin
   protected $template_object;
   protected $cachedChoices;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('CSV import'),
       'plDescription' => _('Import of csv data into the ldap tree'),
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array('ldapmanager'),
+      'plObjectType'  => ['ldapmanager'],
       'plPriority'    => 3,
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'import' => array(
+    return [
+      'import' => [
         'name'  => _('Import CSV'),
-        'attrs' => array(
-          new SelectAttribute (
+        'attrs' => [
+          new SelectAttribute(
             _('Object type'), _('Type of objects you wish to import'),
             'type', TRUE,
-            array(), '', NULL,
+            [], '', NULL,
             'import_file'
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Template'), _('Select a template to apply to imported entries'),
             'template_dn', TRUE,
-            array(), '', NULL,
+            [], '', NULL,
             'import_file'
           ),
-          new FileAttribute (
+          new FileAttribute(
             _('CSV file'), _('Import a CSV file into your LDAP'),
             'import_file', FALSE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Separator'), _('Character used as separator in the CSV file'),
             'separator', TRUE,
-            array(',', ';'), '', NULL,
+            [',', ';'], '', NULL,
             'import_file'
           ),
-          new HiddenAttribute (
+          new HiddenAttribute(
             'valueSeparator', FALSE, '|'
           ),
           new SetAttribute(
@@ -75,36 +75,36 @@ class csvimport extends simplePlugin
               'import_file'
             )
           ),
-          new ButtonAttribute (
+          new ButtonAttribute(
             '', '',
             'import_submit',
             _('Import'),
             NULL, '',
             'import_file'
           )
-        )
-      ),
-      'fields' => array(
+        ]
+      ],
+      'fields' => [
         'name'  => _('Template filling'),
-        'attrs' => array(
-          new CompositeAttribute (
+        'attrs' => [
+          new CompositeAttribute(
             _('Select fields associations'),
             'fields',
-            array(),
+            [],
             '', '',
             'import_file',
             ''
           ),
-          new ButtonAttribute (
+          new ButtonAttribute(
             '', '',
             'import_submit_fields',
             _('Import'),
             NULL, '',
             'import_file'
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -119,18 +119,18 @@ class csvimport extends simplePlugin
     $this->attributesAccess['import_submit_fields']->setDisabled(TRUE);
   }
 
-  function typeChanged()
+  function typeChanged ()
   {
     $templates = objects::getTemplates($this->type);
     $this->attributesAccess['template_dn']->setChoices(array_keys($templates), array_values($templates));
   }
 
-  function handle_import_submit()
+  function handle_import_submit ()
   {
     $this->csv_data = $this->parse_csv($this->import_file);
 
     /* Remove fields from previous import, if any */
-    $this->attributesAccess['fields']->setAttributes(array());
+    $this->attributesAccess['fields']->setAttributes([]);
 
     $messages = $this->check();
     if (!empty($messages)) {
@@ -141,7 +141,7 @@ class csvimport extends simplePlugin
     $this->template_object = new template($this->type, $this->template_dn);
 
     /* Add nonrequired field filling feature */
-    $fields = array();
+    $fields = [];
     if (isset($this->csv_data[0])) {
       foreach ($this->csv_data[0] as $key => $field_value) {
         $fields[$key] = $key.' - '.$field_value;
@@ -149,8 +149,8 @@ class csvimport extends simplePlugin
     }
     $fields = array_merge($fields, $this->fixed_values);
     $tpl_attributes = $this->template_object->serialize();
-    $attributesObjects = array();
-    $this->cachedChoices = array();
+    $attributesObjects = [];
+    $this->cachedChoices = [];
     reset($fields);
     foreach ($tpl_attributes as $class => $class_infos) {
       foreach ($class_infos['attrs'] as $attr => $attr_infos) {
@@ -163,7 +163,7 @@ class csvimport extends simplePlugin
     $this->attributesAccess['import_submit_fields']->setDisabled(FALSE);
   }
 
-  private function build_attribute(&$fields, $class, $class_infos, $attr, $attr_infos)
+  private function build_attribute (&$fields, $class, $class_infos, $attr, $attr_infos)
   {
     $choices  = $fields;
     $value    = NULL;
@@ -180,12 +180,12 @@ class csvimport extends simplePlugin
       next($fields);
     }
     if (isset($attr_infos['attributes'])) {
-      $subattrs = array();
+      $subattrs = [];
       foreach ($attr_infos['attributes'] as $subattr => $subattr_infos) {
         if ($subattr_infos['visible']) {
           $subattribute = $this->build_attribute($fields, $class, $class_infos, $subattr, $subattr_infos);
         } else {
-          $this->cachedChoices['template_'.$class.':'.$subattr] = array($attr_infos['value']);
+          $this->cachedChoices['template_'.$class.':'.$subattr] = [$attr_infos['value']];
           $subattribute = new HiddenAttribute('template_'.$class.':'.$subattr, FALSE, count($fields));
         }
         $subattrs[] = $subattribute;
@@ -222,11 +222,11 @@ class csvimport extends simplePlugin
     }
   }
 
-  function handle_import_submit_fields()
+  function handle_import_submit_fields ()
   {
     $success = 0;
     foreach ($this->csv_data as $rownumber => $row) {
-      $values = array();
+      $values = [];
       foreach ($this->attributesAccess['fields']->attributes as $attribute) {
         preg_match('/^template_([^:]+):(.*)$/', $attribute->getLdapName(), $m);
         $values[$m[1]][$m[2]] = $this->compute_attribute_value($attribute, $row);
@@ -237,7 +237,7 @@ class csvimport extends simplePlugin
         $tabObject = $this->template_object->apply();
         $msgs = $tabObject->save();
       } elseif (!is_array($msgs)) {
-        $msgs = array($msgs);
+        $msgs = [$msgs];
       }
       if (count($msgs)) {
         $msg = '<ul><li>'.implode('</li><li>', $msgs).'</li></ul>';
@@ -252,10 +252,10 @@ class csvimport extends simplePlugin
     }
   }
 
-  private function compute_attribute_value($attribute, array $row, $i = NULL)
+  private function compute_attribute_value ($attribute, array $row, $i = NULL)
   {
     if ($attribute instanceof CompositeAttribute) {
-      $value = array();
+      $value = [];
       foreach ($attribute->attributes as $key => $subattribute) {
         $value[$key] = $this->compute_attribute_value($subattribute, $row);
       }
@@ -265,7 +265,7 @@ class csvimport extends simplePlugin
       $i = $attribute->getValue();
     }
     if (is_array($i)) {
-      $value = array();
+      $value = [];
       foreach ($i as $j) {
         $v = explode($this->valueSeparator, $this->compute_attribute_value($attribute, $row, $j));
         $value = array_merge($value, $v);
@@ -282,13 +282,13 @@ class csvimport extends simplePlugin
     }
   }
 
-  function parse_csv($str)
+  function parse_csv ($str)
   {
     $lines  = preg_split("/\n/", $str);
 
     $anz    = 0;
     $rest   = 0;
-    $data   = array();
+    $data   = [];
 
     /* check column count */
     if (is_array($lines)) {
@@ -312,7 +312,7 @@ class csvimport extends simplePlugin
       /* Generate array with output info  */
       if (is_array($lines)) {
         foreach ($lines as $line) {
-          $line_data = array();
+          $line_data = [];
           $rest = 0;
           $cnt  = 0;
 
@@ -348,14 +348,14 @@ class csvimport extends simplePlugin
     return $data;
   }
 
-  function save()
+  function save ()
   {
-    return array();
+    return [];
   }
 
-  function remove($fulldelete = FALSE)
+  function remove ($fulldelete = FALSE)
   {
-    return array();
+    return [];
   }
 }
 ?>
diff --git a/ldapmanager/addons/ldapmanager/class_ldapmanager.inc b/ldapmanager/addons/ldapmanager/class_ldapmanager.inc
index c97da9ed7f496f17031b289934b348623ce86e8e..3f853b74be1e796ed55d3b9f00ec0be4ddfe0492 100644
--- a/ldapmanager/addons/ldapmanager/class_ldapmanager.inc
+++ b/ldapmanager/addons/ldapmanager/class_ldapmanager.inc
@@ -39,94 +39,94 @@ class BaseSelectorOrDnAttribute extends BaseSelectorAttribute
 class ldapmanager extends simplePlugin
 {
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('LDIF'),
       'plDescription' => _('Export/Import the ldap tree to/from LDIF format'),
-      'plObjectType'  => array('ldapmanager' => array(
+      'plObjectType'  => ['ldapmanager' => [
         'name'      => _('LDAP Manager'),
         'tabClass'  => 'ldiftabs',
         'mainAttr'  => FALSE
-      )),
+      ]],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'export' => array(
+    return [
+      'export' => [
         'name'  => _('Export'),
-        'attrs' => array(
-          new CompositeAttribute (
+        'attrs' => [
+          new CompositeAttribute(
             _('DN of a single entry to export as ldif'),
             'single_export',
-            array(
-              new StringAttribute (
+            [
+              new StringAttribute(
                 '', '',
                 'single_dn', FALSE
               ),
-              new ButtonAttribute (
+              new ButtonAttribute(
                 '', '',
                 'single_submit',
                 _('Export')
               )
-            ),
+            ],
             '', '%s%s', '',
             _('Export single entry')
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Filter'), _('Filter to use for selecting objects to export'),
             'export_filter', FALSE,
             '(objectClass=*)',
             'complete_export'
           ),
-          new CompositeAttribute (
+          new CompositeAttribute(
             _('Download a complete snapshot of the running LDAP directory for this base as ldif'),
             'complete_export',
-            array(
-              new BaseSelectorOrDnAttribute ('', '', ''),
-              new ButtonAttribute (
+            [
+              new BaseSelectorOrDnAttribute('', '', ''),
+              new ButtonAttribute(
                 '', '',
                 'complete_submit',
                 _('Export')
               )
-            ),
+            ],
             '', '%s%s', '',
             _('Export complete LDIF for')
           )
-        )
-      ),
-      'import' => array(
+        ]
+      ],
+      'import' => [
         'name'  => _('Import LDIF'),
-        'attrs' => array(
-          new BooleanAttribute (
+        'attrs' => [
+          new BooleanAttribute(
             _('Overwrite existing entries'), _('Remove fields that are not in the LDIF from the LDAP entries if they were existing.'),
             'overwrite', FALSE,
             FALSE, 'import'
           ),
-          new CompositeAttribute (
+          new CompositeAttribute(
             _('Import an LDIF file into your LDAP. Remember that FusionDirectory will not check your LDIFs for FusionDirectory conformance.'),
             'import',
-            array(
-              new FileTextAreaAttribute (
+            [
+              new FileTextAreaAttribute(
                 '', '',
                 'import_ldif_file', FALSE
               ),
-              new ButtonAttribute (
+              new ButtonAttribute(
                 '', '',
                 'import_ldif_submit',
                 _('Import')
               )
-            ),
+            ],
             '', '%s%s', '',
             _('Import LDIF file')
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -143,7 +143,7 @@ class ldapmanager extends simplePlugin
     $this->attributesAccess['export_filter']->setInLdap(FALSE);
   }
 
-  function handle_single_submit()
+  function handle_single_submit ()
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -158,13 +158,13 @@ class ldapmanager extends simplePlugin
     $this->save_export($dn, $acl, 'base', 'entryExport.ldif');
   }
 
-  function handle_complete_submit()
+  function handle_complete_submit ()
   {
     $acl    = $this->attributesAccess['complete_export']->getAcl();
     $this->save_export($this->complete_export, $acl, 'sub', 'fullExport.ldif');
   }
 
-  function save_export($dn, $acl, $scope, $name)
+  function save_export ($dn, $acl, $scope, $name)
   {
     global $config;
     // An LDIF export was asked
@@ -188,7 +188,7 @@ class ldapmanager extends simplePlugin
     }
   }
 
-  function handle_import_ldif_submit()
+  function handle_import_ldif_submit ()
   {
     global $config;
     if (empty($this->import)) {
@@ -204,17 +204,17 @@ class ldapmanager extends simplePlugin
     }
   }
 
-  function save()
+  function save ()
   {
-    return array();
+    return [];
   }
 
-  function remove($fulldelete = FALSE)
+  function remove ($fulldelete = FALSE)
   {
-    return array();
+    return [];
   }
 
-  function get_allowed_bases()
+  function get_allowed_bases ()
   {
     global $config;
     return $config->idepartments;
diff --git a/ldapmanager/addons/ldapmanager/tabs_ldif.inc b/ldapmanager/addons/ldapmanager/tabs_ldif.inc
index 4af8d9ccff1cda41047efa85b327b44dbaa68172..d98089514f1c1a0d165cacd686d027a37ec1bc79 100644
--- a/ldapmanager/addons/ldapmanager/tabs_ldif.inc
+++ b/ldapmanager/addons/ldapmanager/tabs_ldif.inc
@@ -21,22 +21,22 @@
 
 class ldiftabs extends simpleTabs_noSpecial
 {
-  function save()
+  function save ()
   {
   }
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('LDAP import/export'),
       'plDescription' => _('Allows the import or export of the ldap tree'),
       'plIcon'        => 'geticon.php?context=applications&icon=ldapmanager&size=48',
       'plSection'     => 'conf',
       'plPriority'    => 10,
-      'plCategory'    => array('ldapmanager' => array('objectClass' => 'none', 'description' => _('Ldap manager'))),
+      'plCategory'    => ['ldapmanager' => ['objectClass' => 'none', 'description' => _('Ldap manager')]],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 }
 ?>
diff --git a/ldapmanager/locale/af_ZA/fusiondirectory.po b/ldapmanager/locale/af_ZA/fusiondirectory.po
index b60e340a87a0c8d567e3b7e0c0d2eb032cdb36a0..a2bce06f52ac1343fbd463f2b8078219c81c74f2 100644
--- a/ldapmanager/locale/af_ZA/fusiondirectory.po
+++ b/ldapmanager/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ldapmanager/locale/ar/fusiondirectory.po b/ldapmanager/locale/ar/fusiondirectory.po
index 3f2f2837c9f1cd393d36a956655edfbf603e4513..cfb68ab57b1a4c4f66bdb6f5449002a2ec2e1132 100644
--- a/ldapmanager/locale/ar/fusiondirectory.po
+++ b/ldapmanager/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/ldapmanager/locale/ca/fusiondirectory.po b/ldapmanager/locale/ca/fusiondirectory.po
index 59f23364f7f3b17b8d868c883ed5f314b234ab02..f448f9aa023e8e9495ffbd5f465ef9e264fe6bac 100644
--- a/ldapmanager/locale/ca/fusiondirectory.po
+++ b/ldapmanager/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/ldapmanager/locale/cs_CZ/fusiondirectory.po b/ldapmanager/locale/cs_CZ/fusiondirectory.po
index 0a994483160c5df464a4d1224f2f2229f0a3a3e5..c8cec401f038ff6554160bde2b49310c6866125e 100644
--- a/ldapmanager/locale/cs_CZ/fusiondirectory.po
+++ b/ldapmanager/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/ldapmanager/locale/de/fusiondirectory.po b/ldapmanager/locale/de/fusiondirectory.po
index f2ca371c59c2aa30960ab5eb32ec1b801dd0ef67..537ad1a33766bc64f1e67349e53def162460c04c 100644
--- a/ldapmanager/locale/de/fusiondirectory.po
+++ b/ldapmanager/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/ldapmanager/locale/el_GR/fusiondirectory.po b/ldapmanager/locale/el_GR/fusiondirectory.po
index e34fcd36c4b2a871347bf70da69701995b104db1..91c2a3d47d65c2fba32ab51a546fe667b59f0451 100644
--- a/ldapmanager/locale/el_GR/fusiondirectory.po
+++ b/ldapmanager/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/ldapmanager/locale/en/fusiondirectory.po b/ldapmanager/locale/en/fusiondirectory.po
index 3e755122416765a6419ed96dc1031df03a773a3b..146b27f3c80cbe5a51f4c41084039217cf5fb352 100644
--- a/ldapmanager/locale/en/fusiondirectory.po
+++ b/ldapmanager/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,99 +17,6 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: addons/ldapmanager/tabs_ldif.inc:31
-msgid "LDAP import/export"
-msgstr ""
-
-#: addons/ldapmanager/tabs_ldif.inc:32
-msgid "Allows the import or export of the ldap tree"
-msgstr ""
-
-#: addons/ldapmanager/tabs_ldif.inc:36
-msgid "Ldap manager"
-msgstr ""
-
-#: addons/ldapmanager/class_csvimport.inc:29
-msgid "CSV import"
-msgstr ""
-
-#: addons/ldapmanager/class_csvimport.inc:30
-msgid "Import of csv data into the ldap tree"
-msgstr ""
-
-#: addons/ldapmanager/class_csvimport.inc:43
-msgid "Import CSV"
-msgstr ""
-
-#: addons/ldapmanager/class_csvimport.inc:46
-msgid "Object type"
-msgstr ""
-
-#: addons/ldapmanager/class_csvimport.inc:46
-msgid "Type of objects you wish to import"
-msgstr ""
-
-#: addons/ldapmanager/class_csvimport.inc:52
-msgid "Template"
-msgstr ""
-
-#: addons/ldapmanager/class_csvimport.inc:52
-msgid "Select a template to apply to imported entries"
-msgstr ""
-
-#: addons/ldapmanager/class_csvimport.inc:58
-msgid "CSV file"
-msgstr ""
-
-#: addons/ldapmanager/class_csvimport.inc:58
-msgid "Import a CSV file into your LDAP"
-msgstr ""
-
-#: addons/ldapmanager/class_csvimport.inc:62
-msgid "Separator"
-msgstr ""
-
-#: addons/ldapmanager/class_csvimport.inc:62
-msgid "Character used as separator in the CSV file"
-msgstr ""
-
-#: addons/ldapmanager/class_csvimport.inc:72
-msgid "Fixed values"
-msgstr ""
-
-#: addons/ldapmanager/class_csvimport.inc:72
-msgid ""
-"Some fixed values that you might wanna use in the filling of the template."
-msgstr ""
-
-#: addons/ldapmanager/class_csvimport.inc:81
-#: addons/ldapmanager/class_csvimport.inc:107
-#: addons/ldapmanager/class_ldapmanager.inc:121
-msgid "Import"
-msgstr ""
-
-#: addons/ldapmanager/class_csvimport.inc:88
-msgid "Template filling"
-msgstr ""
-
-#: addons/ldapmanager/class_csvimport.inc:97
-msgid "Select fields associations"
-msgstr ""
-
-#: addons/ldapmanager/class_csvimport.inc:243
-#, php-format
-msgid "Import failed for line %d"
-msgstr ""
-
-#: addons/ldapmanager/class_csvimport.inc:250
-msgid "Success"
-msgstr ""
-
-#: addons/ldapmanager/class_csvimport.inc:250
-#, php-format
-msgid "Successfully imported %d entries"
-msgstr ""
-
 #: addons/ldapmanager/class_ldapmanager.inc:45
 msgid "LDIF"
 msgstr ""
@@ -174,12 +81,18 @@ msgid ""
 "check your LDIFs for FusionDirectory conformance."
 msgstr ""
 
+#: addons/ldapmanager/class_ldapmanager.inc:121
+#: addons/ldapmanager/class_csvimport.inc:81
+#: addons/ldapmanager/class_csvimport.inc:101
+msgid "Import"
+msgstr ""
+
 #: addons/ldapmanager/class_ldapmanager.inc:125
 msgid "Import LDIF file"
 msgstr ""
 
 #: addons/ldapmanager/class_ldapmanager.inc:153
-#: addons/ldapmanager/class_ldapmanager.inc:198
+#: addons/ldapmanager/class_ldapmanager.inc:203
 msgid "LDAP error"
 msgstr ""
 
@@ -205,3 +118,104 @@ msgstr ""
 #, php-format
 msgid "Failed to generate ldap export, error was \"%s\"!"
 msgstr ""
+
+#: addons/ldapmanager/class_ldapmanager.inc:195
+msgid "Warning"
+msgstr ""
+
+#: addons/ldapmanager/class_ldapmanager.inc:195
+msgid "Nothing to import, please upload a non-empty file or fill the textarea."
+msgstr ""
+
+#: addons/ldapmanager/class_ldapmanager.inc:201
+#: addons/ldapmanager/class_csvimport.inc:251
+msgid "Success"
+msgstr ""
+
+#: addons/ldapmanager/class_ldapmanager.inc:201
+#, php-format
+msgid "%d entries successfully imported"
+msgstr ""
+
+#: addons/ldapmanager/class_csvimport.inc:29
+msgid "CSV import"
+msgstr ""
+
+#: addons/ldapmanager/class_csvimport.inc:30
+msgid "Import of csv data into the ldap tree"
+msgstr ""
+
+#: addons/ldapmanager/class_csvimport.inc:43
+msgid "Import CSV"
+msgstr ""
+
+#: addons/ldapmanager/class_csvimport.inc:46
+msgid "Object type"
+msgstr ""
+
+#: addons/ldapmanager/class_csvimport.inc:46
+msgid "Type of objects you wish to import"
+msgstr ""
+
+#: addons/ldapmanager/class_csvimport.inc:52
+msgid "Template"
+msgstr ""
+
+#: addons/ldapmanager/class_csvimport.inc:52
+msgid "Select a template to apply to imported entries"
+msgstr ""
+
+#: addons/ldapmanager/class_csvimport.inc:58
+msgid "CSV file"
+msgstr ""
+
+#: addons/ldapmanager/class_csvimport.inc:58
+msgid "Import a CSV file into your LDAP"
+msgstr ""
+
+#: addons/ldapmanager/class_csvimport.inc:62
+msgid "Separator"
+msgstr ""
+
+#: addons/ldapmanager/class_csvimport.inc:62
+msgid "Character used as separator in the CSV file"
+msgstr ""
+
+#: addons/ldapmanager/class_csvimport.inc:72
+msgid "Fixed values"
+msgstr ""
+
+#: addons/ldapmanager/class_csvimport.inc:72
+msgid ""
+"Some fixed values that you might wanna use in the filling of the template."
+msgstr ""
+
+#: addons/ldapmanager/class_csvimport.inc:88
+msgid "Template filling"
+msgstr ""
+
+#: addons/ldapmanager/class_csvimport.inc:91
+msgid "Select fields associations"
+msgstr ""
+
+#: addons/ldapmanager/class_csvimport.inc:244
+#, php-format
+msgid "Import failed for line %d"
+msgstr ""
+
+#: addons/ldapmanager/class_csvimport.inc:251
+#, php-format
+msgid "Successfully imported %d entries"
+msgstr ""
+
+#: addons/ldapmanager/tabs_ldif.inc:31
+msgid "LDAP import/export"
+msgstr ""
+
+#: addons/ldapmanager/tabs_ldif.inc:32
+msgid "Allows the import or export of the ldap tree"
+msgstr ""
+
+#: addons/ldapmanager/tabs_ldif.inc:36
+msgid "Ldap manager"
+msgstr ""
diff --git a/ldapmanager/locale/es/fusiondirectory.po b/ldapmanager/locale/es/fusiondirectory.po
index d8cafbf346aebb9c7bc03ea3329fb4c5f22af26b..32f99a897f4fb688d3afc40925f5a759a7795498 100644
--- a/ldapmanager/locale/es/fusiondirectory.po
+++ b/ldapmanager/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/ldapmanager/tabs_ldif.inc:31
 msgid "LDAP import/export"
diff --git a/ldapmanager/locale/es_CO/fusiondirectory.po b/ldapmanager/locale/es_CO/fusiondirectory.po
index 25891a60eef1860d4e6b9f54fc29d58c80817b7a..7dea715f514cd3db8e9adc9a97acb68300a4bff6 100644
--- a/ldapmanager/locale/es_CO/fusiondirectory.po
+++ b/ldapmanager/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/ldapmanager/tabs_ldif.inc:31
 msgid "LDAP import/export"
diff --git a/ldapmanager/locale/es_VE/fusiondirectory.po b/ldapmanager/locale/es_VE/fusiondirectory.po
index a8e4542222ef0d3a195454530995c1201d6dace5..774c2ababd309b7ec9823e8316a44527ab8b3ea9 100644
--- a/ldapmanager/locale/es_VE/fusiondirectory.po
+++ b/ldapmanager/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/ldapmanager/tabs_ldif.inc:31
 msgid "LDAP import/export"
diff --git a/ldapmanager/locale/fa_IR/fusiondirectory.po b/ldapmanager/locale/fa_IR/fusiondirectory.po
index 808bcd8f97aeb8b9f404b7b32e1966ddaca7b96f..1be742a3c4ce6470ddfa93c0bc6ff72385f67245 100644
--- a/ldapmanager/locale/fa_IR/fusiondirectory.po
+++ b/ldapmanager/locale/fa_IR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
diff --git a/ldapmanager/locale/fi_FI/fusiondirectory.po b/ldapmanager/locale/fi_FI/fusiondirectory.po
index 5a4c16284f7f5fee755a36a61162b412679f2dc6..3c745adfbb0cac239a38dd9523dadb4383ed2523 100644
--- a/ldapmanager/locale/fi_FI/fusiondirectory.po
+++ b/ldapmanager/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/ldapmanager/locale/fr/fusiondirectory.po b/ldapmanager/locale/fr/fusiondirectory.po
index 3579dadbb58f4978a03e90a1725daf0f3bd80050..bfd2f9a88195a8cbfdc7107b4483186a8a1e8ec6 100644
--- a/ldapmanager/locale/fr/fusiondirectory.po
+++ b/ldapmanager/locale/fr/fusiondirectory.po
@@ -5,22 +5,22 @@
 # 
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2018
-# Benoit Mortier <benoit.mortier@opensides.be>, 2018
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
-"Last-Translator: Benoit Mortier <benoit.mortier@opensides.be>, 2018\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/ldapmanager/tabs_ldif.inc:31
 msgid "LDAP import/export"
diff --git a/ldapmanager/locale/hu_HU/fusiondirectory.po b/ldapmanager/locale/hu_HU/fusiondirectory.po
index 302cae78eaf53affd195f00b2aadbd3f392b48b8..4470e04de7329ec9b9351f7310fecd8e7fd35f2f 100644
--- a/ldapmanager/locale/hu_HU/fusiondirectory.po
+++ b/ldapmanager/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ldapmanager/locale/id/fusiondirectory.po b/ldapmanager/locale/id/fusiondirectory.po
index b8a4669a5984cd7f100927a55f85f149c8298ed1..2109deaf443f37ea8ea1849600c95ec359ece19a 100644
--- a/ldapmanager/locale/id/fusiondirectory.po
+++ b/ldapmanager/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ldapmanager/locale/it_IT/fusiondirectory.po b/ldapmanager/locale/it_IT/fusiondirectory.po
index 5cbf023fc7d385bc5d9a49a0b97fb544d8fc2354..fe9c8bab54ac732260a5a7230b60af483e64fd46 100644
--- a/ldapmanager/locale/it_IT/fusiondirectory.po
+++ b/ldapmanager/locale/it_IT/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: Paola Penati <paola.penati@opensides.be>, 2018\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -20,7 +20,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/ldapmanager/tabs_ldif.inc:31
 msgid "LDAP import/export"
diff --git a/ldapmanager/locale/ja/fusiondirectory.po b/ldapmanager/locale/ja/fusiondirectory.po
index 0f4b077e46eb715e12dab2d4736525cd79ec1802..a3ed209a5b89d3d73c97dd9751613382cd6b7d5c 100644
--- a/ldapmanager/locale/ja/fusiondirectory.po
+++ b/ldapmanager/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ldapmanager/locale/ko/fusiondirectory.po b/ldapmanager/locale/ko/fusiondirectory.po
index 444a9bc9c26b8c862014d3061027a14eeff6cd72..7d634a45c2d41fbca105522e45e92ddb904ce577 100644
--- a/ldapmanager/locale/ko/fusiondirectory.po
+++ b/ldapmanager/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/ldapmanager/locale/lv/fusiondirectory.po b/ldapmanager/locale/lv/fusiondirectory.po
index a41083c45dc7077ac9db088b7baaaef8ef7edccd..78378efee55d569dd4ef3fdde9fd6937c81682a0 100644
--- a/ldapmanager/locale/lv/fusiondirectory.po
+++ b/ldapmanager/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/ldapmanager/locale/nb/fusiondirectory.po b/ldapmanager/locale/nb/fusiondirectory.po
index f6f5df89c867b70b0a20a9076385172500623a9d..b17fef62c5c23c8f4598003cc2f1b955695cb926 100644
--- a/ldapmanager/locale/nb/fusiondirectory.po
+++ b/ldapmanager/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/ldapmanager/locale/nl/fusiondirectory.po b/ldapmanager/locale/nl/fusiondirectory.po
index 97a75a95929b1cddb6c2cac2888b4d759d3d215f..51a6cb7b8a51b0e68b8426b70843e3f1942300b6 100644
--- a/ldapmanager/locale/nl/fusiondirectory.po
+++ b/ldapmanager/locale/nl/fusiondirectory.po
@@ -6,16 +6,16 @@
 # Translators:
 # Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017
 # fusiondirectory <contact@fusiondirectory.org>, 2018
-# Benoit Mortier <benoit.mortier@opensides.be>, 2018
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
-"Last-Translator: Benoit Mortier <benoit.mortier@opensides.be>, 2018\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff --git a/ldapmanager/locale/pl/fusiondirectory.po b/ldapmanager/locale/pl/fusiondirectory.po
index 718fc1838abfdd83871b97ac75b169e224b55320..f33461ae589319af7eaefb0278d4e40fea06f856 100644
--- a/ldapmanager/locale/pl/fusiondirectory.po
+++ b/ldapmanager/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/ldapmanager/locale/pt/fusiondirectory.po b/ldapmanager/locale/pt/fusiondirectory.po
index b5d27d607fc8c2e61304e2807a98ecff91f93375..19b96bfc915ef1163386b35210e556d59026468f 100644
--- a/ldapmanager/locale/pt/fusiondirectory.po
+++ b/ldapmanager/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/ldapmanager/tabs_ldif.inc:31
 msgid "LDAP import/export"
diff --git a/ldapmanager/locale/pt_BR/fusiondirectory.po b/ldapmanager/locale/pt_BR/fusiondirectory.po
index 23e94eac375e373b531ccc38914b4e59a3ca1a43..d8e5b706beeaa34efc3baa16a35531a89994c232 100644
--- a/ldapmanager/locale/pt_BR/fusiondirectory.po
+++ b/ldapmanager/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: addons/ldapmanager/tabs_ldif.inc:31
 msgid "LDAP import/export"
diff --git a/ldapmanager/locale/ru/fusiondirectory.po b/ldapmanager/locale/ru/fusiondirectory.po
index 76ce49478667132a10781746db8bdc093bbedfba..3646f41622bbb347bde158553f8726279f9a6d5e 100644
--- a/ldapmanager/locale/ru/fusiondirectory.po
+++ b/ldapmanager/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/ldapmanager/locale/ru@petr1708/fusiondirectory.po b/ldapmanager/locale/ru@petr1708/fusiondirectory.po
index b661ec2d6e5f425fd707b4c7110ab13685ee41e5..2591e7e3628a5de1d64153ecdd9ef443ace3b644 100644
--- a/ldapmanager/locale/ru@petr1708/fusiondirectory.po
+++ b/ldapmanager/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ldapmanager/locale/sv/fusiondirectory.po b/ldapmanager/locale/sv/fusiondirectory.po
index 1c4402de9996df0f42f5eaefd6cfb9fe09f2694b..111cd84840f98698d2199783f462b45c5227bd85 100644
--- a/ldapmanager/locale/sv/fusiondirectory.po
+++ b/ldapmanager/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/ldapmanager/locale/tr_TR/fusiondirectory.po b/ldapmanager/locale/tr_TR/fusiondirectory.po
index 5aa83e2dc6c896c4db7785666ba5d21938f1187f..6f9b1bc884a4a49c9227652a03436722171064e2 100644
--- a/ldapmanager/locale/tr_TR/fusiondirectory.po
+++ b/ldapmanager/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2021
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2021\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -124,7 +128,7 @@ msgstr ""
 
 #: addons/ldapmanager/class_ldapmanager.inc:181
 msgid "Error"
-msgstr ""
+msgstr "Hata"
 
 #: addons/ldapmanager/class_ldapmanager.inc:182
 #, php-format
@@ -133,7 +137,7 @@ msgstr ""
 
 #: addons/ldapmanager/class_ldapmanager.inc:195
 msgid "Warning"
-msgstr ""
+msgstr "İkaz"
 
 #: addons/ldapmanager/class_ldapmanager.inc:195
 msgid ""
@@ -143,7 +147,7 @@ msgstr ""
 #: addons/ldapmanager/class_ldapmanager.inc:201
 #: addons/ldapmanager/class_csvimport.inc:251
 msgid "Success"
-msgstr ""
+msgstr "Başarı"
 
 #: addons/ldapmanager/class_ldapmanager.inc:201
 #, php-format
diff --git a/ldapmanager/locale/ug/fusiondirectory.po b/ldapmanager/locale/ug/fusiondirectory.po
index 62a712447496e66d27212615250b55de27a4116e..ad59c202d13cf3bf817740c94e2cfd78d1616031 100644
--- a/ldapmanager/locale/ug/fusiondirectory.po
+++ b/ldapmanager/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: addons/ldapmanager/tabs_ldif.inc:31
 msgid "LDAP import/export"
diff --git a/ldapmanager/locale/vi_VN/fusiondirectory.po b/ldapmanager/locale/vi_VN/fusiondirectory.po
index eb8a98ee7f80d826f326c44e359cb531ae69553e..a7ba19a3e832fe257edf70141b86e6f2dffb0cd8 100644
--- a/ldapmanager/locale/vi_VN/fusiondirectory.po
+++ b/ldapmanager/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/ldapmanager/locale/zh/fusiondirectory.po b/ldapmanager/locale/zh/fusiondirectory.po
index ff819bd9fa216b271a538da902fe2bcc7cd5bc9f..9a1c0190f73d95553bffd718166b42e211be1ddf 100644
--- a/ldapmanager/locale/zh/fusiondirectory.po
+++ b/ldapmanager/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/ldapmanager/locale/zh_TW/fusiondirectory.po b/ldapmanager/locale/zh_TW/fusiondirectory.po
index 4c6623addc8f3a98d3817b76a18a47aa5de9f04f..aa25b4ab2dcfb369e4eff7a0d7b475505001e1fe 100644
--- a/ldapmanager/locale/zh_TW/fusiondirectory.po
+++ b/ldapmanager/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/mail/admin/groups/mail/class_mailGroup.inc b/mail/admin/groups/mail/class_mailGroup.inc
index 4db7c98466fbbbe485fbcf3ef0bc9f8751663b74..9c63e58689b86297cc2abd37889bff6c78884dfd 100644
--- a/mail/admin/groups/mail/class_mailGroup.inc
+++ b/mail/admin/groups/mail/class_mailGroup.inc
@@ -31,61 +31,61 @@ class GroupMailsAttribute extends MailsAttribute
 
   function getFilterBlackList ()
   {
-    return array('mail' => $this->getForbiddenValues());
+    return ['mail' => $this->getForbiddenValues()];
   }
 }
 
 class mailGroup extends simplePlugin
 {
   var $displayHeader  = TRUE;
-  var $objectclasses  = array('fdGroupMail');
+  var $objectclasses  = ['fdGroupMail'];
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Mail'),
       'plDescription'   => _('Group mail options'),
       'plIcon'          => 'geticon.php?context=applications&icon=internet-mail&size=48',
       'plSmallIcon'     => 'geticon.php?context=applications&icon=internet-mail&size=16',
       'plPriority'      => 10,
-      'plObjectType'    => array('group', 'ogroup-user'),
+      'plObjectType'    => ['group', 'ogroup-user'],
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Information'),
-        'attrs' => array(
-          new MailAttribute (
+        'attrs' => [
+          new MailAttribute(
             _('Primary address'), _('The primary mail address'),
             'mail', TRUE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Server'), _('Email server'),
             'gosaMailServer', TRUE,
-            array('')
+            ['']
           ),
-          new SetAttribute (
-            new StringAttribute (
+          new SetAttribute(
+            new StringAttribute(
               _('Alternative addresses'), _('Alternative mail addresses for the group'),
               'gosaMailAlternateAddress'
             )
           ),
-          new GroupMailsAttribute (
+          new GroupMailsAttribute(
             _('Forward messages to non group members'), _('Forward messages to non group members'),
             'gosaMailForwardingAddress'
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Only allowed to receive local mail'), _('Whether this group mail is only allowed to receive messages from local senders'),
             'fdGroupMailLocalOnly', FALSE,
             FALSE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -98,7 +98,7 @@ class mailGroup extends simplePlugin
   }
 
   /* We need $mailAccount->cn to return the cn for mailMethod */
-  public function __get($name)
+  public function __get ($name)
   {
     if (($name == 'cn') && isset($this->parent)) {
       return $this->parent->getBaseObject()->$name;
@@ -108,7 +108,7 @@ class mailGroup extends simplePlugin
     }
   }
 
-  public function __isset($name)
+  public function __isset ($name)
   {
     if (($name == 'cn') && isset($this->parent)) {
       return isset($this->parent->getBaseObject()->$name);
@@ -118,7 +118,7 @@ class mailGroup extends simplePlugin
     }
   }
 
-  public function mailServerChanged()
+  public function mailServerChanged ()
   {
     /* Intialize the used mailMethod */
     if ($this->gosaMailServer == '') {
@@ -152,7 +152,7 @@ class mailGroup extends simplePlugin
     } else {
       $this->attributesAccess['gosaMailForwardingAddress']->setDisabled(TRUE);
       $this->attributesAccess['gosaMailForwardingAddress']->setVisible(FALSE);
-      $this->attributesAccess['gosaMailForwardingAddress']->setValue(array());
+      $this->attributesAccess['gosaMailForwardingAddress']->setValue([]);
     }
   }
 
@@ -167,13 +167,13 @@ class mailGroup extends simplePlugin
     return $messages;
   }
 
-  protected function shouldSave()
+  protected function shouldSave ()
   {
     /* mail method might have something to save (like password change from main tab for instance) */
     return TRUE;
   }
 
-  public function ldap_save()
+  public function ldap_save ()
   {
     if (!empty($this->attrs)) {
       $errors = parent::ldap_save();
@@ -182,7 +182,7 @@ class mailGroup extends simplePlugin
       }
     }
 
-    $errors = array();
+    $errors = [];
 
     /* Only do IMAP actions if we are not a template */
     if (!$this->is_template) {
@@ -207,7 +207,7 @@ class mailGroup extends simplePlugin
     return $errors;
   }
 
-  function post_remove()
+  function post_remove ()
   {
     /* Let the mailMethod remove this mailbox */
     if (!$this->is_template) {
diff --git a/mail/admin/systems/services/imap/class_serviceIMAP.inc b/mail/admin/systems/services/imap/class_serviceIMAP.inc
index 2fac18bb45774621ef11ec748242fe1310740749..3ecef08c642522829253b2c9499333c05e0f21ad 100644
--- a/mail/admin/systems/services/imap/class_serviceIMAP.inc
+++ b/mail/admin/systems/services/imap/class_serviceIMAP.inc
@@ -32,7 +32,7 @@ class simpleMailMethodService extends simpleService
     return parent::prepare_save();
   }
 
-  protected function post_save()
+  protected function post_save ()
   {
     parent::post_save();
     mailMethod::resetMailServersCache();
@@ -48,18 +48,18 @@ class simpleMailMethodService extends simpleService
 class serviceIMAP extends simpleMailMethodService
 {
   /* This plugin only writes its objectClass */
-  var $objectclasses = array('fdImapServer');
+  var $objectclasses = ['fdImapServer'];
 
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('IMAP/POP3 generic service'),
       'plDescription' => _('IMAP/POP3').' ('._('Services').')',
       'plIcon'        => 'geticon.php?context=applications&icon=imap&size=16',
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   /*!
@@ -67,10 +67,10 @@ class serviceIMAP extends simpleMailMethodService
    */
   static function getAttributesInfo ()
   {
-    return array();
+    return [];
   }
 
-  function execute()
+  function execute ()
   {
     return '<b>This server runs an IMAP or POP3 server</b>'.parent::execute();
   }
diff --git a/mail/config/mail/class_mailPluginConfig.inc b/mail/config/mail/class_mailPluginConfig.inc
index 673ebeae0c4d05bcfa3f351775b43802c527f614..6b2e94309be36340164b0c0325858afcaccbf01f 100644
--- a/mail/config/mail/class_mailPluginConfig.inc
+++ b/mail/config/mail/class_mailPluginConfig.inc
@@ -20,73 +20,73 @@
 
 class mailPluginConfig extends simplePlugin
 {
-  var $objectclasses  = array("fdMailPluginConf");
+  var $objectclasses  = ["fdMailPluginConf"];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       "plShortName"     => _("Mail"),
       "plDescription"   => _("Mail plugin configuration"),
       "plPriority"      => 3,
-      "plObjectType"    => array("configuration"),
+      "plObjectType"    => ["configuration"],
 
       "plProvidedAcls"  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'mail' => array(
+    return [
+      'mail' => [
         'name'  => _('Mail settings'),
-        'attrs' => array(
-          new SelectAttribute (
+        'attrs' => [
+          new SelectAttribute(
             _('Account identification attribute'),
             _('Which attribute will be used to create accounts.'),
             'fdMailAttribute', TRUE,
-            array('mail', 'uid')
+            ['mail', 'uid']
           ),
-          new StringAttribute (
-            _('Mail user template'),
-            _('Override the user account creation syntax.'),
+          new StringAttribute(
+            _('User account template'),
+            _('Override the user account creation syntax. Default is %PREFIX%%UATTRIB%.'),
             'fdMailUserCreation'
           ),
-          new StringAttribute (
-            _('Mail folder template'),
-            _('Override the methods default account creation syntax.'),
+          new StringAttribute(
+            _('Group account template'),
+            _('Override the group account creation syntax. Default is %PREFIX%%UATTRIB%.'),
             'fdMailFolderCreation'
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Use cyrus UNIX style'),
-            _("Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."),
+            _('Determines if "foo/bar" or "foo.bar" should be uses as namespaces in IMAP.'),
             'fdCyrusUseSlashes'
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Delete mailbox on account deletion'),
             _('Determines if the mailbox should be removed from your IMAP server after the account is deleted in LDAP.'),
             'fdCyrusDeleteMailbox'
           ),
-          new SetAttribute (
-            new StringAttribute (
+          new SetAttribute(
+            new StringAttribute(
               _('Cyrus autocreate folders'),
               _('List of personal IMAP folders that should be created along initial account creation.'),
               'fdCyrusAutocreateFolders'
             )
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('IMAP timeout'),
             _('Sets the connection timeout for imap actions.'),
             'fdImapTimeout', FALSE,
             0, FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Shared prefix'),
             _('Prefix to add for mail shared folders.'),
             'fdMailSharedPrefix'
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/mail/html/themes/breezy/icons/16/apps/internet-mail.png b/mail/html/themes/breezy/icons/16/apps/internet-mail.png
deleted file mode 100644
index c36d6c9b16d8698865f4c7a40666737a95dd7f66..0000000000000000000000000000000000000000
Binary files a/mail/html/themes/breezy/icons/16/apps/internet-mail.png and /dev/null differ
diff --git a/mail/html/themes/breezy/icons/48/apps/internet-mail.png b/mail/html/themes/breezy/icons/48/apps/internet-mail.png
deleted file mode 100644
index 62da1fd79d3dcca731ec09a1ce245db537b18576..0000000000000000000000000000000000000000
Binary files a/mail/html/themes/breezy/icons/48/apps/internet-mail.png and /dev/null differ
diff --git a/mail/html/themes/breezy/svg/16/apps/internet-mail.svg b/mail/html/themes/breezy/svg/16/apps/internet-mail.svg
deleted file mode 100644
index 24500b63f6d176c331a25d05556d2b67139e12cb..0000000000000000000000000000000000000000
--- a/mail/html/themes/breezy/svg/16/apps/internet-mail.svg
+++ /dev/null
@@ -1,132 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg3049"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="internet-mail.svg"
-   inkscape:export-filename="internet-mail.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs3051">
-    <style
-       type="text/css"
-       id="current-color-scheme">
-      .ColorScheme-Text {
-        color:#4d4d4d;
-      }
-      .ColorScheme-Background {
-        color:#eff0f1;
-      }
-      .ColorScheme-Highlight {
-        color:#3daee9;
-      }
-      .ColorScheme-ViewText {
-        color:#31363b;
-      }
-      .ColorScheme-ViewBackground {
-        color:#fcfcfc;
-      }
-      .ColorScheme-ViewHover {
-        color:#93cee9;
-      }
-      .ColorScheme-ViewFocus{
-        color:#3daee9;
-      }
-      .ColorScheme-ButtonText {
-        color:#31363b;
-      }
-      .ColorScheme-ButtonBackground {
-        color:#eff0f1;
-      }
-      .ColorScheme-ButtonHover {
-        color:#93cee9;
-      }
-      .ColorScheme-ButtonFocus{
-        color:#3daee9;
-      }
-      </style>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="24.411306"
-     inkscape:cx="3.4083283"
-     inkscape:cy="7.7717888"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     inkscape:window-width="1878"
-     inkscape:window-height="1051"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:window-maximized="1"
-     inkscape:showpageshadow="false"
-     borderlayer="true"
-     inkscape:snap-bbox="true"
-     inkscape:snap-global="false"
-     inkscape:object-nodes="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4085" />
-    <sodipodi:guide
-       position="2.0000044,14.00003"
-       orientation="12,0"
-       id="guide4075" />
-    <sodipodi:guide
-       position="2.0000044,2.0000296"
-       orientation="0,12"
-       id="guide4077" />
-    <sodipodi:guide
-       position="14.000004,2.0000296"
-       orientation="-12,0"
-       id="guide4079" />
-    <sodipodi:guide
-       position="14.000004,14.00003"
-       orientation="0,-12"
-       id="guide4081" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata3054">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Capa 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-421.71429,-531.79074)">
-    <path
-       style="fill:currentColor;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="M 1 2 L 1 14 L 15 14 L 15 2 L 1 2 z M 2.7070312 3 L 13.292969 3 L 8 8.2929688 L 2.7070312 3 z M 2 3.7070312 L 5.9335938 7.640625 L 2 12.230469 L 2 3.7070312 z M 14 3.7070312 L 14 12.232422 L 10.066406 7.640625 L 14 3.7070312 z M 6.6425781 8.3496094 L 8 9.7070312 L 9.3574219 8.3496094 L 13.341797 13 L 2.65625 13 L 6.6425781 8.3496094 z "
-       transform="translate(421.71429,531.79074)"
-       id="rect4157"
-       class="ColorScheme-Text" />
-  </g>
-</svg>
diff --git a/mail/html/themes/breezy/svg/48/apps/internet-mail.svg b/mail/html/themes/breezy/svg/48/apps/internet-mail.svg
deleted file mode 100644
index 803e36835782b377a3466178ef8e57bfa3241050..0000000000000000000000000000000000000000
--- a/mail/html/themes/breezy/svg/48/apps/internet-mail.svg
+++ /dev/null
@@ -1,257 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="48"
-   height="48"
-   id="svg5453"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="internet-mail.svg"
-   inkscape:export-filename="internet-mail.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs5455">
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient4143">
-      <stop
-         style="stop-color:#197cf1;stop-opacity:1"
-         offset="0"
-         id="stop4145" />
-      <stop
-         style="stop-color:#20bcfa;stop-opacity:1"
-         offset="1"
-         id="stop4147" />
-    </linearGradient>
-    <linearGradient
-       gradientTransform="matrix(1.4285708,0,0,1.4285708,-163.67325,-235.92121)"
-       y2="517.79797"
-       x2="400.57144"
-       y1="545.79797"
-       x1="400.57144"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient3028"
-       xlink:href="#linearGradient4303"
-       inkscape:collect="always" />
-    <linearGradient
-       id="linearGradient4227"
-       inkscape:collect="always">
-      <stop
-         id="stop4229"
-         offset="0"
-         style="stop-color:#292c2f;stop-opacity:1" />
-      <stop
-         id="stop4231"
-         offset="1"
-         style="stop-color:#000000;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4143"
-       id="linearGradient4287"
-       x1="409.57144"
-       y1="532.79797"
-       x2="409.57144"
-       y2="512.79797"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4227"
-       id="linearGradient4297"
-       x1="396.57147"
-       y1="510.798"
-       x2="421.57144"
-       y2="535.79797"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-384.57143,-499.798)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient4303">
-      <stop
-         style="stop-color:#c6cdd1;stop-opacity:1"
-         offset="0"
-         id="stop4305" />
-      <stop
-         style="stop-color:#e0e5e7;stop-opacity:1"
-         offset="1"
-         id="stop4307" />
-    </linearGradient>
-    <style
-       id="current-color-scheme"
-       type="text/css">
-      .ColorScheme-Text {
-        color:#4d4d4d;
-      }
-      .ColorScheme-Background {
-        color:#eff0f1;
-      }
-      .ColorScheme-Highlight {
-        color:#3daee9;
-      }
-      .ColorScheme-ViewText {
-        color:#31363b;
-      }
-      .ColorScheme-ViewBackground {
-        color:#fcfcfc;
-      }
-      .ColorScheme-ViewHover {
-        color:#93cee9;
-      }
-      .ColorScheme-ViewFocus{
-        color:#3daee9;
-      }
-      .ColorScheme-ButtonText {
-        color:#31363b;
-      }
-      .ColorScheme-ButtonBackground {
-        color:#eff0f1;
-      }
-      .ColorScheme-ButtonHover {
-        color:#93cee9;
-      }
-      .ColorScheme-ButtonFocus{
-        color:#3daee9;
-      }
-      </style>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="15.999999"
-     inkscape:cx="24.203816"
-     inkscape:cy="15.10496"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     inkscape:window-width="1880"
-     inkscape:window-height="1051"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:window-maximized="1"
-     inkscape:showpageshadow="false"
-     borderlayer="true"
-     showguides="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4063" />
-    <sodipodi:guide
-       position="1.1650391e-05,47.999996"
-       orientation="4,0"
-       id="guide4146" />
-    <sodipodi:guide
-       position="1.1650391e-05,43.999996"
-       orientation="0,48"
-       id="guide4148" />
-    <sodipodi:guide
-       position="48.000012,43.999996"
-       orientation="-4,0"
-       id="guide4150" />
-    <sodipodi:guide
-       position="48.000012,47.999996"
-       orientation="0,-48"
-       id="guide4152" />
-    <sodipodi:guide
-       position="1.1650391e-05,4.0000264"
-       orientation="4,0"
-       id="guide4154" />
-    <sodipodi:guide
-       position="1.1650391e-05,2.6367188e-05"
-       orientation="0,48"
-       id="guide4156" />
-    <sodipodi:guide
-       position="48.000012,2.6367188e-05"
-       orientation="-4,0"
-       id="guide4158" />
-    <sodipodi:guide
-       position="48.000012,4.0000264"
-       orientation="0,-48"
-       id="guide4160" />
-    <sodipodi:guide
-       position="48.000012,48.000026"
-       orientation="0,-4"
-       id="guide4162" />
-    <sodipodi:guide
-       position="44.000012,48.000026"
-       orientation="48,0"
-       id="guide4164" />
-    <sodipodi:guide
-       position="44.000012,2.6367188e-05"
-       orientation="0,4"
-       id="guide4166" />
-    <sodipodi:guide
-       position="48.000012,2.6367188e-05"
-       orientation="-48,0"
-       id="guide4168" />
-    <sodipodi:guide
-       position="4.0000422,48.000026"
-       orientation="0,-4"
-       id="guide4170" />
-    <sodipodi:guide
-       position="4.2167969e-05,48.000026"
-       orientation="48,0"
-       id="guide4172" />
-    <sodipodi:guide
-       position="4.2167969e-05,2.6367188e-05"
-       orientation="0,4"
-       id="guide4174" />
-    <sodipodi:guide
-       position="4.0000422,2.6367188e-05"
-       orientation="-48,0"
-       id="guide4176" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata5458">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Capa 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-384.57143,-499.798)">
-    <rect
-       style="fill:url(#linearGradient3028);fill-opacity:1.0;stroke:none"
-       id="rect4130-0"
-       width="40"
-       height="40.000019"
-       x="388.57144"
-       y="503.78983"
-       ry="20" />
-    <path
-       style="opacity:0.2;fill:url(#linearGradient4297);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 36 15 L 35 32 L 12 33 L 22.966797 43.966797 C 22.967448 43.96683 22.968099 43.966764 22.96875 43.966797 C 23.310575 43.984012 23.65375 43.992188 24 43.992188 C 35.08 43.992188 44 35.072188 44 23.992188 C 44 23.651171 43.991312 23.311337 43.974609 22.974609 L 36 15 z "
-       transform="translate(384.57143,499.798)"
-       id="path4289" />
-    <path
-       inkscape:connector-curvature="0"
-       style="text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4287);fill-opacity:1.0;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 396.57143,514.798 0,18 24,0 0,-18 -24,0 z m 2.12109,1.5 19.75782,0 -9.87891,9.87891 -9.87891,-9.87891 z m -0.62109,1.5 6,6 -6,6 0,-12 z m 21,0 0,12 -6,-6 6,-6 z m -13.93946,7.06055 3.43946,3.43945 3.43946,-3.43945 6.43945,6.43945 -19.75782,0 6.43946,-6.43945 z"
-       id="rect4144"
-       class="ColorScheme-Text" />
-  </g>
-</svg>
diff --git a/mail/html/themes/legacy/icons/16/apps/internet-mail.png b/mail/html/themes/legacy/icons/16/apps/internet-mail.png
deleted file mode 100644
index 859251fe0fcdbdf20de5040a802825ce977c1a24..0000000000000000000000000000000000000000
Binary files a/mail/html/themes/legacy/icons/16/apps/internet-mail.png and /dev/null differ
diff --git a/mail/html/themes/legacy/icons/48/apps/internet-mail.png b/mail/html/themes/legacy/icons/48/apps/internet-mail.png
deleted file mode 100644
index 7f4df1620e816f91972f76237aa44fda7908a227..0000000000000000000000000000000000000000
Binary files a/mail/html/themes/legacy/icons/48/apps/internet-mail.png and /dev/null differ
diff --git a/mail/html/themes/legacy/svg/internet-mail.svg b/mail/html/themes/legacy/svg/internet-mail.svg
deleted file mode 100644
index 8d5ea8cd324349192176297769b1d58c90a9190b..0000000000000000000000000000000000000000
--- a/mail/html/themes/legacy/svg/internet-mail.svg
+++ /dev/null
@@ -1,440 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   sodipodi:docname="internet-mail.svg"
-   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/apps"
-   inkscape:version="0.46"
-   sodipodi:version="0.32"
-   id="svg5816"
-   height="48px"
-   width="48px"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs3">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 24 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="48 : 24 : 1"
-       inkscape:persp3d-origin="24 : 16 : 1"
-       id="perspective73" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5060"
-       id="radialGradient6719"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
-       cx="605.71429"
-       cy="486.64789"
-       fx="605.71429"
-       fy="486.64789"
-       r="117.14286" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5060">
-      <stop
-         style="stop-color:black;stop-opacity:1;"
-         offset="0"
-         id="stop5062" />
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="1"
-         id="stop5064" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5060"
-       id="radialGradient6717"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
-       cx="605.71429"
-       cy="486.64789"
-       fx="605.71429"
-       fy="486.64789"
-       r="117.14286" />
-    <linearGradient
-       id="linearGradient5048">
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="0"
-         id="stop5050" />
-      <stop
-         id="stop5056"
-         offset="0.5"
-         style="stop-color:black;stop-opacity:1;" />
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="1"
-         id="stop5052" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5048"
-       id="linearGradient6715"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
-       x1="302.85715"
-       y1="366.64789"
-       x2="302.85715"
-       y2="609.50507" />
-    <linearGradient
-       id="linearGradient28260">
-      <stop
-         style="stop-color:#9aa29a;stop-opacity:1.0000000;"
-         offset="0.0000000"
-         id="stop28262" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop28264" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient28254">
-      <stop
-         id="stop28256"
-         offset="0.0000000"
-         style="stop-color:#9aa29a;stop-opacity:1.0000000;" />
-      <stop
-         id="stop28258"
-         offset="1.0000000"
-         style="stop-color:none" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2274">
-      <stop
-         style="stop-color:#000000;stop-opacity:0.12871288;"
-         offset="0.0000000"
-         id="stop2276" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0.0000000;"
-         offset="1.0000000"
-         id="stop2278" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient9749">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop9751" />
-      <stop
-         style="stop-color:#ededed;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop9753" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2152">
-      <stop
-         style="stop-color:#9aa29a;stop-opacity:1.0000000;"
-         offset="0.0000000"
-         id="stop2154" />
-      <stop
-         style="stop-color:#b5beb5;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop2156" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2166">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop2168" />
-      <stop
-         style="stop-color:#dcdcdc;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop2170" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient18913">
-      <stop
-         style="stop-color:#ededed;stop-opacity:1.0000000;"
-         offset="0.0000000"
-         id="stop18915" />
-      <stop
-         style="stop-color:#c8c8c8;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop18917" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2136">
-      <stop
-         style="stop-color:#989690;stop-opacity:1.0000000;"
-         offset="0.0000000"
-         id="stop2138" />
-      <stop
-         style="stop-color:#656460;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop2140" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient15107">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1.0000000;"
-         offset="0.0000000"
-         id="stop15109" />
-      <stop
-         style="stop-color:#e2e2e2;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop15111" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient10691"
-       inkscape:collect="always">
-      <stop
-         id="stop10693"
-         offset="0"
-         style="stop-color:#000000;stop-opacity:1;" />
-      <stop
-         id="stop10695"
-         offset="1"
-         style="stop-color:#000000;stop-opacity:0;" />
-    </linearGradient>
-    <radialGradient
-       r="7.2284161"
-       fy="73.615714"
-       fx="6.7027131"
-       cy="73.615714"
-       cx="6.7027131"
-       gradientTransform="scale(1.902215,0.525703)"
-       gradientUnits="userSpaceOnUse"
-       id="radialGradient11382"
-       xlink:href="#linearGradient10691"
-       inkscape:collect="always" />
-    <linearGradient
-       y2="32.203162"
-       x2="9.7619219"
-       y1="37.784682"
-       x1="8.7803760"
-       gradientTransform="matrix(2.394900,0.000000,0.000000,0.781058,2.879512,0.343005)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient27463"
-       xlink:href="#linearGradient2274"
-       inkscape:collect="always" />
-    <linearGradient
-       y2="24.132717"
-       x2="21.111549"
-       y1="13.686079"
-       x1="11.233107"
-       gradientTransform="matrix(1.370928,0.000000,0.000000,1.443758,2.431133,-0.140786)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient27468"
-       xlink:href="#linearGradient9749"
-       inkscape:collect="always" />
-    <linearGradient
-       y2="52.090678"
-       x2="9.8855033"
-       y1="37.197018"
-       x1="8.9156475"
-       gradientTransform="matrix(2.454781,0.000000,0.000000,0.762004,2.879512,0.343005)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient27471"
-       xlink:href="#linearGradient2152"
-       inkscape:collect="always" />
-    <linearGradient
-       y2="52.090678"
-       x2="9.8855033"
-       y1="37.197018"
-       x1="8.9156475"
-       gradientTransform="matrix(2.454781,0.000000,0.000000,0.762004,2.879512,0.343005)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient27474"
-       xlink:href="#linearGradient2152"
-       inkscape:collect="always" />
-    <linearGradient
-       y2="29.568739"
-       x2="15.310744"
-       y1="15.148383"
-       x1="10.184240"
-       gradientTransform="matrix(1.819266,0.000000,0.000000,1.028193,2.879512,0.343005)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient27477"
-       xlink:href="#linearGradient2166"
-       inkscape:collect="always" />
-    <linearGradient
-       y2="17.876846"
-       x2="13.467486"
-       y1="7.2310905"
-       x1="5.8266134"
-       gradientTransform="matrix(1.570607,0.000000,0.000000,1.190976,2.879512,0.343005)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient27483"
-       xlink:href="#linearGradient18913"
-       inkscape:collect="always" />
-    <linearGradient
-       y2="26.022910"
-       x2="18.475286"
-       y1="4.7461626"
-       x1="11.572842"
-       gradientTransform="matrix(1.343475,0.000000,0.000000,1.417854,2.879511,0.314599)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient27486"
-       xlink:href="#linearGradient15107"
-       inkscape:collect="always" />
-    <linearGradient
-       y2="15.257116"
-       x2="30.599684"
-       y1="15.257116"
-       x1="2.0618774"
-       gradientTransform="matrix(1.343475,0.000000,0.000000,1.417854,2.879511,0.314599)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient27488"
-       xlink:href="#linearGradient2136"
-       inkscape:collect="always" />
-  </defs>
-  <sodipodi:namedview
-     inkscape:window-y="105"
-     inkscape:window-x="331"
-     inkscape:window-height="743"
-     inkscape:window-width="872"
-     inkscape:document-units="px"
-     inkscape:grid-bbox="true"
-     showgrid="false"
-     inkscape:current-layer="layer1"
-     inkscape:cy="18.816166"
-     inkscape:cx="28.384904"
-     inkscape:zoom="1"
-     inkscape:pageshadow="2"
-     inkscape:pageopacity="0.0"
-     borderopacity="1.0"
-     bordercolor="#666666"
-     pagecolor="#ffffff"
-     id="base" />
-  <metadata
-     id="metadata4">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title>Mail</dc:title>
-        <dc:creator>
-          <cc:Agent>
-            <dc:title>Jakub Steiner</dc:title>
-          </cc:Agent>
-        </dc:creator>
-        <dc:contributor>
-          <cc:Agent>
-            <dc:title>Andreas Nilsson</dc:title>
-          </cc:Agent>
-        </dc:contributor>
-        <cc:license
-           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
-        <dc:subject>
-          <rdf:Bag>
-            <rdf:li>mail</rdf:li>
-            <rdf:li>e-mail</rdf:li>
-            <rdf:li>MUA</rdf:li>
-          </rdf:Bag>
-        </dc:subject>
-      </cc:Work>
-      <cc:License
-         rdf:about="http://creativecommons.org/licenses/publicdomain/">
-        <cc:permits
-           rdf:resource="http://creativecommons.org/ns#Reproduction" />
-        <cc:permits
-           rdf:resource="http://creativecommons.org/ns#Distribution" />
-        <cc:permits
-           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
-      </cc:License>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     inkscape:label="Layer 1"
-     id="layer1">
-    <g
-       transform="matrix(2.269972e-2,0,0,2.297929e-2,44.98918,37.78447)"
-       id="g6707">
-      <rect
-         style="opacity:0.40206185;color:black;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-         id="rect6709"
-         width="1339.6335"
-         height="478.35718"
-         x="-1559.2523"
-         y="-150.69685" />
-      <path
-         style="opacity:0.40206185;color:black;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
-         id="path6711"
-         sodipodi:nodetypes="cccc" />
-      <path
-         sodipodi:nodetypes="cccc"
-         id="path6713"
-         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
-         style="opacity:0.40206185;color:black;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
-    </g>
-    <path
-       style="fill:url(#linearGradient27486);fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient27488);stroke-width:0.85660440;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
-       d="M 6.3334395,16.972251 L 6.3334395,41.481799 L 43.305555,41.481799 L 43.244499,17.089859 C 43.241050,15.712272 31.395999,2.4121110 29.210877,2.4121110 L 20.659391,2.4121110 C 18.362072,2.4121110 6.3334395,15.673953 6.3334395,16.972251 z "
-       id="path12723"
-       sodipodi:nodetypes="ccczzzz" />
-    <path
-       style="fill:url(#linearGradient27483);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.25000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
-       d="M 6.9230610,16.787103 C 6.5250222,16.356975 18.809966,3.0935378 20.667210,3.0935378 L 29.042965,3.0935378 C 30.790449,3.0935378 43.079567,16.221603 42.470079,16.978956 L 31.608858,30.475150 L 19.295373,30.156846 L 6.9230610,16.787103 z "
-       id="path18153"
-       sodipodi:nodetypes="czzzccz" />
-    <path
-       style="fill:#000000;fill-opacity:0.14619882;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
-       d="M 19.077530,30.017590 L 11.744526,21.271586 L 36.562951,14.335513 L 39.592221,20.551966 L 32.175956,29.992298"
-       id="path2164"
-       sodipodi:nodetypes="ccccc" />
-    <path
-       style="fill:#000000;fill-opacity:0.14619882;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
-       d="M 18.291767,29.836259 L 10.809167,21.026146 L 35.456637,14.132812 L 38.630714,20.403811 L 31.390193,29.810968"
-       id="path2162"
-       sodipodi:nodetypes="ccccc" />
-    <path
-       style="fill:#000000;fill-opacity:0.14619882;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
-       d="M 18.775313,29.957146 L 11.100386,21.296624 L 36.068405,14.232329 L 39.354114,20.824726 L 31.873739,29.931855"
-       id="path2160"
-       sodipodi:nodetypes="ccccc" />
-    <path
-       style="fill:url(#linearGradient27477);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
-       d="M 18.593984,30.440693 L 11.260975,21.694689 L 35.972554,14.801355 L 39.083369,21.188770 L 31.963198,30.174701"
-       id="path15105"
-       sodipodi:nodetypes="ccccc" />
-    <path
-       style="fill:url(#linearGradient27474);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
-       d="M 20.488434,29.064331 L 7.0924698,40.036319 L 21.001312,30.432013 L 30.019470,30.432013 L 42.438517,39.914206 L 30.575092,29.064331 L 20.488434,29.064331 z "
-       id="path14245"
-       sodipodi:nodetypes="ccccccc" />
-    <path
-       style="color:#000000;fill:url(#linearGradient27471);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
-       d="M 6.9634751,16.885144 L 18.479648,31.201334 L 19.548151,30.346532 L 6.9634751,16.885144 z "
-       id="path14339"
-       sodipodi:nodetypes="cccc" />
-    <path
-       style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:url(#linearGradient27468);stroke-width:0.85660428;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
-       d="M 7.3077115,17.131415 L 7.3388644,40.342421 L 42.283659,40.342421 L 42.221353,17.257512 C 42.219329,16.508413 31.005032,3.4591863 28.837233,3.4591863 L 20.941579,3.4591863 C 18.689313,3.4591863 7.3066655,16.351067 7.3077115,17.131415 z "
-       id="path15103"
-       sodipodi:nodetypes="ccczzzz" />
-    <path
-       style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
-       d="M 20.957271,30.452732 L 9.0157722,38.723588 L 11.235205,38.729695 L 21.233330,31.860755 L 30.055238,30.437917 L 20.957271,30.452732 z "
-       id="path17393"
-       sodipodi:nodetypes="cccccc" />
-    <path
-       style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
-       d="M 11.427536,21.670296 L 12.752479,23.080719 L 35.543311,16.196529 L 38.458445,21.878896 L 39.072496,21.166981 L 36.003081,14.789145 L 11.427536,21.670296 z "
-       id="path2174"
-       sodipodi:nodetypes="ccccccc" />
-    <path
-       style="fill:url(#linearGradient27463);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
-       d="M 13.308098,23.636340 L 19.334450,30.090093 L 20.531174,29.064331 L 30.617831,29.107071 L 31.429893,29.833651 L 35.404721,25.089502 C 34.250740,23.679081 13.308098,23.636340 13.308098,23.636340 z "
-       id="path2272"
-       sodipodi:nodetypes="ccccccc" />
-    <path
-       sodipodi:nodetypes="cccc"
-       id="path27492"
-       d="M 41.812936,17.847945 L 31.861315,30.479232 L 30.792812,29.624431 L 41.812936,17.847945 z "
-       style="color:#000000;fill:#b1b1b1;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
-  </g>
-</svg>
diff --git a/mail/locale/af_ZA/fusiondirectory.po b/mail/locale/af_ZA/fusiondirectory.po
index 50f3e166dc152781fe7c6888f1d4e6380f86abbc..1769115095de0e282e22f06eb8fbe69dde705e63 100644
--- a/mail/locale/af_ZA/fusiondirectory.po
+++ b/mail/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
@@ -139,19 +139,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -159,8 +161,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -228,6 +229,10 @@ msgstr ""
 msgid "Quota size"
 msgstr ""
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/locale/ar/fusiondirectory.po b/mail/locale/ar/fusiondirectory.po
index cef7c0f11da08c1d7bae7d29953d8ccda94e898b..96578962cb8b93e9b61b0cd4909f33f3c076bcf3 100644
--- a/mail/locale/ar/fusiondirectory.po
+++ b/mail/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
@@ -143,19 +143,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -163,8 +165,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -232,6 +233,10 @@ msgstr ""
 msgid "Quota size"
 msgstr ""
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/locale/ca/fusiondirectory.po b/mail/locale/ca/fusiondirectory.po
index 2733dffa29fbef8067c7a922536b732e8272a094..c81fcdbb65a94f0be4bc84fed559c988c9967437 100644
--- a/mail/locale/ca/fusiondirectory.po
+++ b/mail/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
@@ -143,19 +143,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -163,8 +165,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -232,6 +233,10 @@ msgstr ""
 msgid "Quota size"
 msgstr ""
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/locale/cs_CZ/fusiondirectory.po b/mail/locale/cs_CZ/fusiondirectory.po
index 742bad026a77236d8f4c2d60b10b82a612baf17d..f35aabe739f8a2b5fcb5ee2b95d80446d67242f3 100644
--- a/mail/locale/cs_CZ/fusiondirectory.po
+++ b/mail/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
@@ -146,31 +146,30 @@ msgid "Which attribute will be used to create accounts."
 msgstr "Který atribut má být použit pro vytváření účtů."
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
-msgstr "Šablona uživatele e-mailu"
+msgid "User account template"
+msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
-msgstr "Přebít syntaxi vytváření uživatelského účtu."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
+msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
-msgstr "Šablona složky e-mailu"
+msgid "Group account template"
+msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
-msgstr "Přebít způsoby syntaxe vytvoření výchozího účtu."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
+msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
 msgid "Use cyrus UNIX style"
 msgstr "Použít cyrus v unixovém stylu"
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
-"Určuje, zda mají mít jmenné prostory v IMAP podobu něco/neco nebo něco.něco "
-"."
 
 #: config/mail/class_mailPluginConfig.inc:65
 msgid "Delete mailbox on account deletion"
@@ -241,6 +240,10 @@ msgstr "Zvolte poštovní server, na kterém bude uživatel mít svůj účet."
 msgid "Quota size"
 msgstr "kvóta objemu dat"
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr "Ostatní adresy a přesměrování"
diff --git a/mail/locale/de/fusiondirectory.po b/mail/locale/de/fusiondirectory.po
index 9de2f22154ae658d8051818119412aa86ad6b277..3d145853f37350d83511eec19e73d49eadfcca34 100644
--- a/mail/locale/de/fusiondirectory.po
+++ b/mail/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
@@ -143,29 +143,30 @@ msgid "Which attribute will be used to create accounts."
 msgstr "Welches Attribut verwendet werden wird um Konten zu erstellen."
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
-msgstr "Mailbenutzer-Vorlage"
+msgid "User account template"
+msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
-msgstr "Überschreiben der Benutzerkontenerstellungs-Syntax"
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
+msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
-msgstr "Mailordnervorlage"
+msgid "Group account template"
+msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
-msgstr "Überschreiben der Methoden standard Kontenerstellungssyntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
+msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
 msgid "Use cyrus UNIX style"
 msgstr "cyrus UNIX-Stil benutzen"
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
-msgstr "Entscheidet ob 'foo/bar' Nutzen als Namespace in IMAP sein soll ."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
+msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
 msgid "Delete mailbox on account deletion"
@@ -236,6 +237,10 @@ msgstr "Wählen Sie den Mail-Server, auf dem dieses Konto angelegt werden soll"
 msgid "Quota size"
 msgstr "Kontingent-Größe"
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr "Weitere Adressen und Weiterleitungen"
diff --git a/mail/locale/el_GR/fusiondirectory.po b/mail/locale/el_GR/fusiondirectory.po
index a443b5ede0e80ec20f1d6e6e8f2a0b451c0ae496..a3f58aaee8917a5a30c91ad5cf3d1e04ac82a89e 100644
--- a/mail/locale/el_GR/fusiondirectory.po
+++ b/mail/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
@@ -144,19 +144,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -164,8 +166,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -235,6 +236,10 @@ msgstr ""
 msgid "Quota size"
 msgstr ""
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr "Άλλες διευθύνσεις και αναδρομολογήσεις"
diff --git a/mail/locale/en/fusiondirectory.po b/mail/locale/en/fusiondirectory.po
index 7d1347b238537ed8f3627e6dae848392e1e575d0..396a41a6cb7a2d5f3e6be5e4647a36c325cec062 100644
--- a/mail/locale/en/fusiondirectory.po
+++ b/mail/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,303 +17,310 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: personal/mail/class_mailAccount.inc:45
-#: personal/mail/class_mailAccount.inc:258
-#: personal/mail/class_mailAccount.inc:261
-#: personal/mail/class_mailAccount.inc:329
-#: personal/mail/class_mailAccount.inc:340
-#: personal/mail/class_mailAccount.inc:369
-#: personal/mail/class_mailAccount.inc:373
-#: admin/groups/mail/class_mailGroup.inc:183
-#: admin/groups/mail/class_mailGroup.inc:187
-msgid "Mail error"
+#: config/mail/class_mailPluginConfig.inc:28
+#: admin/groups/mail/class_mailGroup.inc:46
+#: personal/mail/class_mailAccount.inc:73
+msgid "Mail"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:45
-#, php-format
-msgid "Cannot read quota settings: %s"
+#: config/mail/class_mailPluginConfig.inc:29
+msgid "Mail plugin configuration"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:55
-msgid "Quota usage"
+#: config/mail/class_mailPluginConfig.inc:41
+#: personal/mail/class_mailAccount.inc:74
+msgid "Mail settings"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:56
-msgid "Part of the quota which is used"
+#: config/mail/class_mailPluginConfig.inc:44
+msgid "Account identification attribute"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:73
-#: config/mail/class_mailPluginConfig.inc:28
-#: admin/groups/mail/class_mailGroup.inc:46
-msgid "Mail"
+#: config/mail/class_mailPluginConfig.inc:45
+msgid "Which attribute will be used to create accounts."
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:74
-#: config/mail/class_mailPluginConfig.inc:41
-msgid "Mail settings"
+#: config/mail/class_mailPluginConfig.inc:50
+msgid "User account template"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:96
-msgid "Mail account"
+#: config/mail/class_mailPluginConfig.inc:51
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:99
-#: admin/groups/mail/class_mailGroup.inc:62
-msgid "Primary address"
+#: config/mail/class_mailPluginConfig.inc:55
+msgid "Group account template"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:99
-msgid "Primary mail address"
+#: config/mail/class_mailPluginConfig.inc:56
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:103
-#: admin/groups/mail/class_mailGroup.inc:66
-msgid "Server"
+#: config/mail/class_mailPluginConfig.inc:60
+msgid "Use cyrus UNIX style"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:103
-msgid "Specify the mail server where the user will be hosted on"
+#: config/mail/class_mailPluginConfig.inc:61
+msgid ""
+"Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in "
+"IMAP."
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:108
-msgid "Quota size"
+#: config/mail/class_mailPluginConfig.inc:65
+msgid "Delete mailbox on account deletion"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:115
-msgid "Other addresses and redirections"
+#: config/mail/class_mailPluginConfig.inc:66
+msgid ""
+"Determines if the mailbox should be removed from your IMAP server after the "
+"account is deleted in LDAP."
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:119
-#: admin/groups/mail/class_mailGroup.inc:72
-msgid "Alternative addresses"
+#: config/mail/class_mailPluginConfig.inc:71
+msgid "Cyrus autocreate folders"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:119
-msgid "List of alternative mail addresses"
+#: config/mail/class_mailPluginConfig.inc:72
+msgid ""
+"List of personal IMAP folders that should be created along initial account "
+"creation."
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:124
-msgid "Forward messages to"
+#: config/mail/class_mailPluginConfig.inc:77
+msgid "IMAP timeout"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:124
-msgid "Addresses to which messages should be forwarded"
+#: config/mail/class_mailPluginConfig.inc:78
+msgid "Sets the connection timeout for imap actions."
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:130
-#: personal/mail/class_mailAccount.inc:149
-msgid "Vacation message"
+#: config/mail/class_mailPluginConfig.inc:83
+msgid "Shared prefix"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:133
-msgid "Activate vacation message"
+#: config/mail/class_mailPluginConfig.inc:84
+msgid "Prefix to add for mail shared folders."
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:134
-msgid ""
-"Select to automatically response with the vacation message defined below"
+#: admin/systems/services/imap/class_serviceIMAP.inc:57
+msgid "IMAP/POP3 generic service"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:139
-msgid "from"
+#: admin/systems/services/imap/class_serviceIMAP.inc:58
+msgid "IMAP/POP3"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:144
-msgid "till"
+#: admin/systems/services/imap/class_serviceIMAP.inc:58
+msgid "Services"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:155
-msgid "Advanced mail options"
+#: admin/groups/mail/class_mailGroup.inc:47
+msgid "Group mail options"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:163
-msgid "User is only allowed to send and receive local mails"
+#: admin/groups/mail/class_mailGroup.inc:60
+msgid "Information"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:164
-msgid "Select if user can only send and receive inside his own domain"
+#: admin/groups/mail/class_mailGroup.inc:63
+#: personal/mail/class_mailAccount.inc:99
+msgid "Primary address"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:169
-msgid "No delivery to own mailbox"
+#: admin/groups/mail/class_mailGroup.inc:63
+msgid "The primary mail address"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:170
-msgid "Select if you want to forward mails without getting own copies of them"
+#: admin/groups/mail/class_mailGroup.inc:67
+#: personal/mail/class_mailAccount.inc:103
+msgid "Server"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:258
-#: personal/mail/class_mailAccount.inc:323
-#: admin/groups/mail/class_mailGroup.inc:159
-#, php-format
-msgid "Mail method cannot connect: %s"
+#: admin/groups/mail/class_mailGroup.inc:67
+msgid "Email server"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:261
-#, php-format
-msgid "Mailbox \"%s\" doesn't exists on mail server: %s"
+#: admin/groups/mail/class_mailGroup.inc:73
+#: personal/mail/class_mailAccount.inc:119
+msgid "Alternative addresses"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:326
-#: admin/groups/mail/class_mailGroup.inc:162
-#, php-format
-msgid "Cannot update mailbox: %s"
+#: admin/groups/mail/class_mailGroup.inc:73
+msgid "Alternative mail addresses for the group"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:329
+#: admin/groups/mail/class_mailGroup.inc:78
+msgid "Forward messages to non group members"
+msgstr ""
+
+#: admin/groups/mail/class_mailGroup.inc:82
+msgid "Only allowed to receive local mail"
+msgstr ""
+
+#: admin/groups/mail/class_mailGroup.inc:82
+msgid ""
+"Whether this group mail is only allowed to receive messages from local "
+"senders"
+msgstr ""
+
+#: admin/groups/mail/class_mailGroup.inc:191
+#: personal/mail/class_mailAccount.inc:276
+#: personal/mail/class_mailAccount.inc:377
 #, php-format
-msgid "Cannot write quota settings: %s"
+msgid "Mail method cannot connect: %s"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:340
+#: admin/groups/mail/class_mailGroup.inc:194
+#: personal/mail/class_mailAccount.inc:380
 #, php-format
-msgid "Mail error saving sieve settings: %s"
+msgid "Cannot update mailbox: %s"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:369
-#: admin/groups/mail/class_mailGroup.inc:183
+#: admin/groups/mail/class_mailGroup.inc:215
+#: admin/groups/mail/class_mailGroup.inc:219
+#: personal/mail/class_mailAccount.inc:45
+#: personal/mail/class_mailAccount.inc:276
+#: personal/mail/class_mailAccount.inc:279
+#: personal/mail/class_mailAccount.inc:383
+#: personal/mail/class_mailAccount.inc:394
+#: personal/mail/class_mailAccount.inc:423
+#: personal/mail/class_mailAccount.inc:427
+msgid "Mail error"
+msgstr ""
+
+#: admin/groups/mail/class_mailGroup.inc:215
+#: personal/mail/class_mailAccount.inc:423
 #, php-format
 msgid "Cannot remove mailbox, mail method cannot connect: %s"
 msgstr ""
 
-#: personal/mail/class_mailAccount.inc:373
-#: admin/groups/mail/class_mailGroup.inc:187
+#: admin/groups/mail/class_mailGroup.inc:219
+#: personal/mail/class_mailAccount.inc:427
 #, php-format
 msgid "Cannot remove mailbox: %s"
 msgstr ""
 
-#: personal/mail/class_mail-methods.inc:144
+#: personal/mail/class_mail-methods.inc:148
 msgid "Configuration error"
 msgstr ""
 
-#: personal/mail/class_mail-methods.inc:145
+#: personal/mail/class_mail-methods.inc:149
 #, php-format
 msgid "The configured mail attribute '%s' is unsupported!"
 msgstr ""
 
-#: personal/mail/class_mail-methods.inc:703
+#: personal/mail/class_mail-methods.inc:738
 msgid "Unknown"
 msgstr ""
 
-#: personal/mail/class_mail-methods.inc:705
+#: personal/mail/class_mail-methods.inc:740
 msgid "Unlimited"
 msgstr ""
 
-#: config/mail/class_mailPluginConfig.inc:29
-msgid "Mail plugin configuration"
-msgstr ""
-
-#: config/mail/class_mailPluginConfig.inc:44
-msgid "Account identification attribute"
-msgstr ""
-
-#: config/mail/class_mailPluginConfig.inc:45
-msgid "Which attribute will be used to create accounts."
-msgstr ""
-
-#: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+#: personal/mail/class_mailAccount.inc:45
+#, php-format
+msgid "Cannot read quota settings: %s"
 msgstr ""
 
-#: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+#: personal/mail/class_mailAccount.inc:55
+msgid "Quota usage"
 msgstr ""
 
-#: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+#: personal/mail/class_mailAccount.inc:56
+msgid "Part of the quota which is used"
 msgstr ""
 
-#: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+#: personal/mail/class_mailAccount.inc:96
+msgid "Mail account"
 msgstr ""
 
-#: config/mail/class_mailPluginConfig.inc:60
-msgid "Use cyrus UNIX style"
+#: personal/mail/class_mailAccount.inc:99
+msgid "Primary mail address"
 msgstr ""
 
-#: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+#: personal/mail/class_mailAccount.inc:103
+msgid "Specify the mail server where the user will be hosted on"
 msgstr ""
 
-#: config/mail/class_mailPluginConfig.inc:65
-msgid "Delete mailbox on account deletion"
+#: personal/mail/class_mailAccount.inc:108
+msgid "Quota size"
 msgstr ""
 
-#: config/mail/class_mailPluginConfig.inc:66
-msgid ""
-"Determines if the mailbox should be removed from your IMAP server after the "
-"account is deleted in LDAP."
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
 msgstr ""
 
-#: config/mail/class_mailPluginConfig.inc:71
-msgid "Cyrus autocreate folders"
+#: personal/mail/class_mailAccount.inc:115
+msgid "Other addresses and redirections"
 msgstr ""
 
-#: config/mail/class_mailPluginConfig.inc:72
-msgid ""
-"List of personal IMAP folders that should be created along initial account "
-"creation."
+#: personal/mail/class_mailAccount.inc:119
+msgid "List of alternative mail addresses"
 msgstr ""
 
-#: config/mail/class_mailPluginConfig.inc:77
-msgid "IMAP timeout"
+#: personal/mail/class_mailAccount.inc:124
+msgid "Forward messages to"
 msgstr ""
 
-#: config/mail/class_mailPluginConfig.inc:78
-msgid "Sets the connection timeout for imap actions."
+#: personal/mail/class_mailAccount.inc:124
+msgid "Addresses to which messages should be forwarded"
 msgstr ""
 
-#: config/mail/class_mailPluginConfig.inc:83
-msgid "Shared prefix"
+#: personal/mail/class_mailAccount.inc:130
+#: personal/mail/class_mailAccount.inc:149
+msgid "Vacation message"
 msgstr ""
 
-#: config/mail/class_mailPluginConfig.inc:84
-msgid "Prefix to add for mail shared folders."
+#: personal/mail/class_mailAccount.inc:133
+msgid "Activate vacation message"
 msgstr ""
 
-#: admin/groups/mail/class_mailGroup.inc:47
-msgid "Group mail options"
+#: personal/mail/class_mailAccount.inc:134
+msgid ""
+"Select to automatically response with the vacation message defined below"
 msgstr ""
 
-#: admin/groups/mail/class_mailGroup.inc:59
-msgid "Information"
+#: personal/mail/class_mailAccount.inc:139
+msgid "from"
 msgstr ""
 
-#: admin/groups/mail/class_mailGroup.inc:62
-msgid "The primary mail address"
+#: personal/mail/class_mailAccount.inc:144
+msgid "till"
 msgstr ""
 
-#: admin/groups/mail/class_mailGroup.inc:66
-msgid "Email server"
+#: personal/mail/class_mailAccount.inc:155
+msgid "Advanced mail options"
 msgstr ""
 
-#: admin/groups/mail/class_mailGroup.inc:72
-msgid "Alternative mail addresses for the group"
+#: personal/mail/class_mailAccount.inc:163
+msgid "User is only allowed to send and receive local mails"
 msgstr ""
 
-#: admin/groups/mail/class_mailGroup.inc:77
-msgid "Forward messages to non group members"
+#: personal/mail/class_mailAccount.inc:164
+msgid "Select if user can only send and receive inside his own domain"
 msgstr ""
 
-#: admin/groups/mail/class_mailGroup.inc:81
-msgid "Only allowed to receive local mail"
+#: personal/mail/class_mailAccount.inc:169
+msgid "No delivery to own mailbox"
 msgstr ""
 
-#: admin/groups/mail/class_mailGroup.inc:81
-msgid ""
-"Whether this group mail is only allowed to receive messages from local "
-"senders"
+#: personal/mail/class_mailAccount.inc:170
+msgid "Select if you want to forward mails without getting own copies of them"
 msgstr ""
 
-#: admin/systems/services/imap/class_serviceIMAP.inc:32
-msgid "IMAP/POP3 generic service"
+#: personal/mail/class_mailAccount.inc:279
+#, php-format
+msgid "Mailbox \"%s\" doesn't exists on mail server: %s"
 msgstr ""
 
-#: admin/systems/services/imap/class_serviceIMAP.inc:33
-msgid "IMAP/POP3"
+#: personal/mail/class_mailAccount.inc:383
+#, php-format
+msgid "Cannot write quota settings: %s"
 msgstr ""
 
-#: admin/systems/services/imap/class_serviceIMAP.inc:33
-msgid "Services"
+#: personal/mail/class_mailAccount.inc:394
+#, php-format
+msgid "Mail error saving sieve settings: %s"
 msgstr ""
diff --git a/mail/locale/es/fusiondirectory.po b/mail/locale/es/fusiondirectory.po
index 0707e7d4e6f9f21dea949c11467d0da31caef6be..f306daaafad44cda3c1eccf7212c65b96c8736a1 100644
--- a/mail/locale/es/fusiondirectory.po
+++ b/mail/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/groups/mail/class_mailGroup.inc:46
 #: config/mail/class_mailPluginConfig.inc:28
@@ -143,19 +143,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -163,8 +165,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -232,6 +233,10 @@ msgstr "Especificar el servidor de correo donde el usuario estará hospedado."
 msgid "Quota size"
 msgstr "Tamaño de la cuota"
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/locale/es_CO/fusiondirectory.po b/mail/locale/es_CO/fusiondirectory.po
index aadd98689796091896e2465025b127975682e904..2f7c1fef31c0633d1486fa05c9af5297bc3c536a 100644
--- a/mail/locale/es_CO/fusiondirectory.po
+++ b/mail/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/groups/mail/class_mailGroup.inc:46
 #: config/mail/class_mailPluginConfig.inc:28
@@ -143,19 +143,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -163,8 +165,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -232,6 +233,10 @@ msgstr ""
 msgid "Quota size"
 msgstr ""
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/locale/es_VE/fusiondirectory.po b/mail/locale/es_VE/fusiondirectory.po
index dbc2a620414e3a53fa34f21bdb4b44d91a8dd936..c7a1dc3c565c58d2dc0bc7c34ad35fe4a92d2c04 100644
--- a/mail/locale/es_VE/fusiondirectory.po
+++ b/mail/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/groups/mail/class_mailGroup.inc:46
 #: config/mail/class_mailPluginConfig.inc:28
@@ -143,19 +143,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -163,8 +165,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -232,6 +233,10 @@ msgstr "Especificar el servidor de correo donde el usuario estará hospedado."
 msgid "Quota size"
 msgstr "Tamaño de cuota"
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/locale/fa_IR/fusiondirectory.po b/mail/locale/fa_IR/fusiondirectory.po
index 1e1739dd451457a644e13badf6f343f9254ea08e..a6a7f7949dbecf7d5355dee6af0fc983e09c412d 100644
--- a/mail/locale/fa_IR/fusiondirectory.po
+++ b/mail/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
@@ -139,19 +139,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -159,8 +161,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -228,6 +229,10 @@ msgstr ""
 msgid "Quota size"
 msgstr ""
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/locale/fi_FI/fusiondirectory.po b/mail/locale/fi_FI/fusiondirectory.po
index 38b9c0020481e63d2ef6e52a17602d1661a861d3..406f5bf36040d2437c60be2482b9ca8931b7a727 100644
--- a/mail/locale/fi_FI/fusiondirectory.po
+++ b/mail/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
@@ -143,19 +143,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -163,8 +165,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -232,6 +233,10 @@ msgstr ""
 msgid "Quota size"
 msgstr ""
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/locale/fr/fusiondirectory.po b/mail/locale/fr/fusiondirectory.po
index 0a36afd7e9988e4add4cea233cdd03b1c15b7fa8..8e55b4ea118a84dccb66af80cb30c7b1a51b61fc 100644
--- a/mail/locale/fr/fusiondirectory.po
+++ b/mail/locale/fr/fusiondirectory.po
@@ -5,21 +5,22 @@
 # 
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2017
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2019
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
-"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2019\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/groups/mail/class_mailGroup.inc:46
 #: config/mail/class_mailPluginConfig.inc:28
@@ -147,28 +148,33 @@ msgid "Which attribute will be used to create accounts."
 msgstr "Quel attribut sera utilisé pour créer des comptes."
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
-msgstr "Modèle de compte de courriel"
+msgid "User account template"
+msgstr "Modèle de compte d'utilisateur"
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
-msgstr "Remplace la syntaxe de création d'un compte utilisateur."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
+msgstr ""
+"Remplacez la syntaxe de création de compte d'utilisateur. La valeur par "
+"défaut est %PREFIX%%UATTRIB%."
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
-msgstr "Modèle de dossier de courriel"
+msgid "Group account template"
+msgstr "Modèle de compte de groupe"
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
-msgstr "Remplace la syntaxe de création de compte par défaut"
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
+msgstr ""
+"Remplacez la syntaxe de création de compte de groupe. La valeur par défaut "
+"est %PREFIX%%UATTRIB%."
 
 #: config/mail/class_mailPluginConfig.inc:60
 msgid "Use cyrus UNIX style"
 msgstr "Utiliser le style Cyrus UNIX"
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 "Détermine si \"foo/bar\" ou \"foo.bar\" doit être utilisé comme espace de "
 "nom IMAP."
@@ -242,6 +248,10 @@ msgstr "Indiquez le serveur de courriel pour cet utilisateur"
 msgid "Quota size"
 msgstr "Taille du quota"
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr "Définir la taille du quota en MiB"
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr "Autres adresses et redirections"
diff --git a/mail/locale/hu_HU/fusiondirectory.po b/mail/locale/hu_HU/fusiondirectory.po
index d40e728b6efe6ba2510b8064ae7d6b11e18d4739..fa3ceab25ea94e87cbca77f4ad8813dbf713bf2f 100644
--- a/mail/locale/hu_HU/fusiondirectory.po
+++ b/mail/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
@@ -139,19 +139,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -159,8 +161,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -228,6 +229,10 @@ msgstr ""
 msgid "Quota size"
 msgstr ""
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/locale/id/fusiondirectory.po b/mail/locale/id/fusiondirectory.po
index 5111bd0605701daad1833783d215203416df5ece..fef184bb3efc0529a71cf725f7fc5aa1bc7d4090 100644
--- a/mail/locale/id/fusiondirectory.po
+++ b/mail/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
@@ -139,19 +139,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -159,8 +161,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -228,6 +229,10 @@ msgstr ""
 msgid "Quota size"
 msgstr ""
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/locale/it_IT/fusiondirectory.po b/mail/locale/it_IT/fusiondirectory.po
index 9e6ef82327ab7311c4618701b9df8a168cde44e6..638b26f62f1c38cd15fb818d30dc6eb220fdaa33 100644
--- a/mail/locale/it_IT/fusiondirectory.po
+++ b/mail/locale/it_IT/fusiondirectory.po
@@ -5,21 +5,22 @@
 # 
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2017
+# Paola <paola.penati@fusiondirectory.org>, 2019
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
-"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
+"Last-Translator: Paola <paola.penati@fusiondirectory.org>, 2019\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/groups/mail/class_mailGroup.inc:46
 #: config/mail/class_mailPluginConfig.inc:28
@@ -147,33 +148,36 @@ msgid "Which attribute will be used to create accounts."
 msgstr "Quale attributo verrà utilizzato per creare degli account."
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
-msgstr "Modello per utente mail"
+msgid "User account template"
+msgstr "Modello di account utente"
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
-msgstr "Sovrascrivere la sintassi per la creazione dell'account utente."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
+msgstr ""
+"Sostituisci la sintassi di creazione dell'account utente. L'impostazione "
+"predefinita è %PREFIX%% UATTRIB%."
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
-msgstr "Modello per la cartella mail"
+msgid "Group account template"
+msgstr "Modello di account di gruppo"
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
-"Sovrascrivere i metodi predefiniti per la sintassi della creazione degli "
-"account."
+"Sostituisci la sintassi di creazione dell'account di gruppo. L'impostazione "
+"predefinita è %PREFIX %% UATTRIB%."
 
 #: config/mail/class_mailPluginConfig.inc:60
 msgid "Use cyrus UNIX style"
 msgstr "Usa lo stile cyrus UNIX"
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
-"Determina se ' foo / bar' o ' foo.bar ' dovrebbe essere usato come namespace"
-" in IMAP ."
+"Determina se \"foo / bar\" o \"foo.bar\" devono essere utilizzati come spazi"
+" dei nomi in IMAP."
 
 #: config/mail/class_mailPluginConfig.inc:65
 msgid "Delete mailbox on account deletion"
@@ -245,6 +249,10 @@ msgstr ""
 msgid "Quota size"
 msgstr "Dimensione della quota"
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr "Definire la dimensione della quota in MiB"
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr "Altri indirizzi e redirezioni"
diff --git a/mail/locale/ja/fusiondirectory.po b/mail/locale/ja/fusiondirectory.po
index 4caf316bb4e8b3d0ed976475cdb87d641ef6cd47..f9dde89a86beea52a59d5f23fb5f2f8428457629 100644
--- a/mail/locale/ja/fusiondirectory.po
+++ b/mail/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
@@ -139,19 +139,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -159,8 +161,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -228,6 +229,10 @@ msgstr ""
 msgid "Quota size"
 msgstr ""
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/locale/ko/fusiondirectory.po b/mail/locale/ko/fusiondirectory.po
index 367bd23958b75a004137fbc452759be9b2fa5838..aa18ac8125a865ed74611b88d2c922bdbc65ae86 100644
--- a/mail/locale/ko/fusiondirectory.po
+++ b/mail/locale/ko/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# Choi Chris <chulwon.choi@gmail.com>, 2018
+# Choi Chris <chulwon.choi@gmail.com>, 2019
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
-"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
+"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2019\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -143,29 +143,32 @@ msgid "Which attribute will be used to create accounts."
 msgstr "계정 생성에 사용되는 속성"
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
-msgstr "메일 사용자 템플릿"
+msgid "User account template"
+msgstr "사용자 계정 템플릿"
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
-msgstr "계정생성 문법 재정의"
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
+msgstr ""
+"사용자 계정 생성 문법을 재정의합니다.\n"
+"기본값은 %PREFIX1%%UATTRIB%."
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
-msgstr "메일 폴더 템플릿"
+msgid "Group account template"
+msgstr "그룹 계정 템플릿"
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
-msgstr "기본 계정 생성 구문 재정의"
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
+msgstr "그룹 계정 생성 문법을 재정의합니다.  기본값은 %PREFIX1%%UATTRIB%."
 
 #: config/mail/class_mailPluginConfig.inc:60
 msgid "Use cyrus UNIX style"
 msgstr "cyrus 유닉스 방식 사용"
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
-msgstr "IMAP의 네임스페이스로 'foo/bar' 또는 'foo.bar' 중 결정하시오."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
+msgstr "\"foo / bar\" 또는 \"foo.bar\"를 IMAP에서 네임스페이스로 사용해야하는지 여부를 결정합니다."
 
 #: config/mail/class_mailPluginConfig.inc:65
 msgid "Delete mailbox on account deletion"
@@ -232,6 +235,10 @@ msgstr "호스팅 중인 메일서버를 지정하시오."
 msgid "Quota size"
 msgstr "Quota 크기"
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr "MiB에서 할당량 크기 정의"
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr "기타 주소 및 전달"
diff --git a/mail/locale/lv/fusiondirectory.po b/mail/locale/lv/fusiondirectory.po
index 1827a2f993a91454049d20e3584971c247ba28d9..151aa06cd1431f581776fea1ac225cecc0357cdb 100644
--- a/mail/locale/lv/fusiondirectory.po
+++ b/mail/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
@@ -143,19 +143,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -163,8 +165,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -232,6 +233,10 @@ msgstr ""
 msgid "Quota size"
 msgstr ""
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/locale/nb/fusiondirectory.po b/mail/locale/nb/fusiondirectory.po
index c30a89a96f4259f8a05e21c7ccd2a592f05c6191..63497aade68356801dd9839efecacb4a3c2edd85 100644
--- a/mail/locale/nb/fusiondirectory.po
+++ b/mail/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
@@ -143,19 +143,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -163,8 +165,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -232,6 +233,10 @@ msgstr ""
 msgid "Quota size"
 msgstr ""
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/locale/nl/fusiondirectory.po b/mail/locale/nl/fusiondirectory.po
index 4106ce992bc1caa949db9c850e48c066da5241b7..2bf6e7b8074d9d44349f5a8d7e31d16dcd4a4940 100644
--- a/mail/locale/nl/fusiondirectory.po
+++ b/mail/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
@@ -145,31 +145,30 @@ msgid "Which attribute will be used to create accounts."
 msgstr "Welk attribuut wordt gebruikt om accounts aan te maken."
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
-msgstr "Mail gebruiker sjabloon"
+msgid "User account template"
+msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
-msgstr "Overschrijf de gebruikers account aanmaak syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
+msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
-msgstr "Mail folder sjabloon"
+msgid "Group account template"
+msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
-msgstr "Overschrijf de standaard methode account aanmaak syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
+msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
 msgid "Use cyrus UNIX style"
 msgstr "Gebruik cyrus UNIX style"
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
-"Bepaal of 'foo/bar' of 'foo.bar' zou moeten gebruikt worden als namespace in"
-" IMAP."
 
 #: config/mail/class_mailPluginConfig.inc:65
 msgid "Delete mailbox on account deletion"
@@ -240,6 +239,10 @@ msgstr "Specificeer de mailserver waarop het account opgeslagen wordt"
 msgid "Quota size"
 msgstr "Quota grootte"
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr "andere adressen en omleidingen"
diff --git a/mail/locale/pl/fusiondirectory.po b/mail/locale/pl/fusiondirectory.po
index 8b78d93249d782bbbabb33da33c6c7671eae9e84..6c7f7ed8ca0dadc46b13763fa9c5229723a7b5e1 100644
--- a/mail/locale/pl/fusiondirectory.po
+++ b/mail/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
@@ -143,19 +143,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -163,8 +165,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -232,6 +233,10 @@ msgstr "Wybierz serwer poczty który będzie przechowywał skrzynkę użytkownik
 msgid "Quota size"
 msgstr "Rozmiar Quoty"
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/locale/pt/fusiondirectory.po b/mail/locale/pt/fusiondirectory.po
index cf0416a0e8e0700f9fd1247740a1fd2053c51d41..0f1f7988edc7a8a7098f1df02f34255b8054054d 100644
--- a/mail/locale/pt/fusiondirectory.po
+++ b/mail/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/groups/mail/class_mailGroup.inc:46
 #: config/mail/class_mailPluginConfig.inc:28
@@ -143,19 +143,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -163,8 +165,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -232,6 +233,10 @@ msgstr ""
 msgid "Quota size"
 msgstr ""
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/locale/pt_BR/fusiondirectory.po b/mail/locale/pt_BR/fusiondirectory.po
index 5967e2fab06533fb95ab31753a6009b91a79011b..e2326da4408a77403ca428650d89da2b1a3d1ced 100644
--- a/mail/locale/pt_BR/fusiondirectory.po
+++ b/mail/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/groups/mail/class_mailGroup.inc:46
 #: config/mail/class_mailPluginConfig.inc:28
@@ -143,19 +143,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -163,8 +165,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -232,6 +233,10 @@ msgstr "Especifique o servidor de correio que o usuário está hospedado"
 msgid "Quota size"
 msgstr "Tamanho da cota"
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/locale/ru/fusiondirectory.po b/mail/locale/ru/fusiondirectory.po
index 1934e60aa751dc7693406eb0e04cc8324d5b4b0e..c93b5ce867d18d851ccab909d3525bf6ff5eec2e 100644
--- a/mail/locale/ru/fusiondirectory.po
+++ b/mail/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
@@ -143,19 +143,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr "Какой из атрибутов будет использоваться для создания аккаунтов."
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -163,8 +165,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -234,6 +235,10 @@ msgstr "Выберите почтовый сервер для учетной з
 msgid "Quota size"
 msgstr "Размер квоты"
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr "Другие адреса и редиректы (перенаправления)"
diff --git a/mail/locale/ru@petr1708/fusiondirectory.po b/mail/locale/ru@petr1708/fusiondirectory.po
index 9638125cb0d2b0b5a081943941c63056fca93b69..95dd76af9eca111aed89b2e5d74f619c746b5e66 100644
--- a/mail/locale/ru@petr1708/fusiondirectory.po
+++ b/mail/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
@@ -139,19 +139,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -159,8 +161,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -228,6 +229,10 @@ msgstr ""
 msgid "Quota size"
 msgstr ""
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/locale/sv/fusiondirectory.po b/mail/locale/sv/fusiondirectory.po
index 3606652a42bdd8fd98f20c2518bfd12b4d714f8c..994e87c1581d2ccf5461d1e24b5977bdfc4a2b92 100644
--- a/mail/locale/sv/fusiondirectory.po
+++ b/mail/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
@@ -143,19 +143,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -163,8 +165,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -232,6 +233,10 @@ msgstr ""
 msgid "Quota size"
 msgstr ""
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/locale/tr_TR/fusiondirectory.po b/mail/locale/tr_TR/fusiondirectory.po
index 38424db81ab1e37e9c77b930e2b37b9ff80581c7..0dfa1f59fc0f23ab9a500d2df6ecb312d3375ca6 100644
--- a/mail/locale/tr_TR/fusiondirectory.po
+++ b/mail/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
@@ -139,19 +139,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -159,8 +161,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -228,6 +229,10 @@ msgstr ""
 msgid "Quota size"
 msgstr ""
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/locale/ug/fusiondirectory.po b/mail/locale/ug/fusiondirectory.po
index 1372c09a2ae676ad886797d07737b4f3709a57d8..d1edde369a68e581851b6d25f78fdf46476e19d7 100644
--- a/mail/locale/ug/fusiondirectory.po
+++ b/mail/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/groups/mail/class_mailGroup.inc:46
 #: config/mail/class_mailPluginConfig.inc:28
@@ -139,19 +139,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -159,8 +161,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -228,6 +229,10 @@ msgstr ""
 msgid "Quota size"
 msgstr ""
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/locale/vi_VN/fusiondirectory.po b/mail/locale/vi_VN/fusiondirectory.po
index f1ecd270ea9de3bcd12b8d4257073885d11b1ae4..d60471ca8c4bcd0293e0b945a36cc95a5d501128 100644
--- a/mail/locale/vi_VN/fusiondirectory.po
+++ b/mail/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
@@ -143,19 +143,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -163,8 +165,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -232,6 +233,10 @@ msgstr ""
 msgid "Quota size"
 msgstr ""
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/locale/zh/fusiondirectory.po b/mail/locale/zh/fusiondirectory.po
index 56d59b3a229abcbe570424d1f054ffa22ccaf1b8..ca367e668bbdbcac7e181fd47a5b0871874dbf6f 100644
--- a/mail/locale/zh/fusiondirectory.po
+++ b/mail/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
@@ -143,19 +143,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -163,8 +165,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -232,6 +233,10 @@ msgstr "描述该用户账号所要创建于的邮件服务器"
 msgid "Quota size"
 msgstr "Quota 大小"
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/locale/zh_TW/fusiondirectory.po b/mail/locale/zh_TW/fusiondirectory.po
index 5bee946a4895b09ae7ae50095f7bcc1f60dcaeb1..74b94fb478eb4a9db417fb5ede0df860cc13d261 100644
--- a/mail/locale/zh_TW/fusiondirectory.po
+++ b/mail/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:14+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
@@ -139,19 +139,21 @@ msgid "Which attribute will be used to create accounts."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:50
-msgid "Mail user template"
+msgid "User account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:51
-msgid "Override the user account creation syntax."
+msgid ""
+"Override the user account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:55
-msgid "Mail folder template"
+msgid "Group account template"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:56
-msgid "Override the methods default account creation syntax."
+msgid ""
+"Override the group account creation syntax. Default is %PREFIX%%UATTRIB%."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:60
@@ -159,8 +161,7 @@ msgid "Use cyrus UNIX style"
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:61
-msgid ""
-"Determines if 'foo/bar' or 'foo.bar' should be uses as namespaces in IMAP."
+msgid "Determines if \"foo/bar\" or \"foo.bar\" should be uses as namespaces in IMAP."
 msgstr ""
 
 #: config/mail/class_mailPluginConfig.inc:65
@@ -228,6 +229,10 @@ msgstr ""
 msgid "Quota size"
 msgstr ""
 
+#: personal/mail/class_mailAccount.inc:108
+msgid "Define quota size in MiB"
+msgstr ""
+
 #: personal/mail/class_mailAccount.inc:115
 msgid "Other addresses and redirections"
 msgstr ""
diff --git a/mail/personal/mail/class_mail-methods.inc b/mail/personal/mail/class_mail-methods.inc
index 6f00cc55ec298571faa6b849967ab6da9a241dd8..4e83639b580d7e200144da5cd2a32c28b47064f1 100644
--- a/mail/personal/mail/class_mail-methods.inc
+++ b/mail/personal/mail/class_mail-methods.inc
@@ -63,9 +63,9 @@ class mailMethod
   protected $mailSharedPrefix = '';
 
   /* The attribute mapping for this class  Source --> Destination */
-  protected $attributes         = array();
-  protected $userObjectClasses  = array();
-  protected $shareObjectClasses = array();
+  protected $attributes         = [];
+  protected $userObjectClasses  = [];
+  protected $shareObjectClasses = [];
 
   /* Features */
   protected $enableQuota            = TRUE;
@@ -88,9 +88,9 @@ class mailMethod
   protected $error              = '';
   protected $parent             = NULL;
 
-  protected $default_acls = array('__anyone__' => 'p', '__member__' => 'lrswp');
+  protected $default_acls = ['__anyone__' => 'p', '__member__' => 'lrswp'];
 
-  protected $acl_map = array(
+  protected $acl_map = [
     'lrsw'      => 'read',
     'lrswp'     => 'post',
     'p'         => 'external post',
@@ -99,15 +99,15 @@ class mailMethod
     'lrswipcd'  => 'write',
     'lrswipcda' => 'admin',
     ' '         => 'none'
-  );
+  ];
 
-  protected $acl_mapping = array();
+  protected $acl_mapping = [];
 
   /*! \brief  Constructs the mail class
       @param  Object  Plugin  The initator
       @param  String          Open "user" or "group" account.
    */
-  function __construct($parent, $type = 'user')
+  function __construct ($parent, $type = 'user')
   {
     $this->parent = $parent;
 
@@ -115,7 +115,7 @@ class mailMethod
       trigger_error('mailMethod with invalid parent object initialized.');
     }
 
-    if (!in_array($this->type, array('user','group'))) {
+    if (!in_array($this->type, ['user','group'])) {
       trigger_error('Unknown mail class type used "'.$type.'".');
     } else {
       $this->type = $type;
@@ -125,25 +125,25 @@ class mailMethod
 
   /*! \brief  Intialize attributes and config settings.
    */
-  protected function init()
+  protected function init ()
   {
     global $config;
     /* Get config value for cyrusUseSlashes */
     if ($config->get_cfg_value('cyrusUseSlashes') == 'TRUE') {
       $this->cyrusUseSlashes = TRUE;
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, 'Enabled', '<b>MAIL:</b> cyrusUseSlashes');
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, 'Enabled', '<b>MAIL:</b> cyrusUseSlashes');
     } else {
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, 'Disabled', '<b>MAIL:</b> cyrusUseSlashes');
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, 'Disabled', '<b>MAIL:</b> cyrusUseSlashes');
     }
 
     /* Check if the mail account identification attribute
        is overridden in the configuration file */
     if ($config->get_cfg_value('mailAttribute', '') != '') {
       $new_uattrib = strtolower($config->get_cfg_value('mailAttribute'));
-      if (in_array($new_uattrib, array('mail','uid'))) {
+      if (in_array($new_uattrib, ['mail','uid'])) {
         $this->uattrib = $new_uattrib;
       } else {
-        @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>".$new_uattrib."</b>",
+        @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>".$new_uattrib."</b>",
           "<b>MAIL:</b> Unsupported 'mailAttribute' in FusionDirectory configuration specified");
         msg_dialog::display(_("Configuration error"),
             sprintf(_("The configured mail attribute '%s' is unsupported!"), $new_uattrib), ERROR_DIALOG);
@@ -158,19 +158,19 @@ class mailMethod
     /* Check if we have an individual user/folder creation syntax */
     $tmp = $config->get_cfg_value('mailUserCreation');
     if (!empty($tmp)) {
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, '<i>'.$tmp.'</i>',
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, '<i>'.$tmp.'</i>',
           '<b>MAIL:</b> User creation set to');
       $this->user_id  = $tmp;
     }
     $tmp = $config->get_cfg_value('mailFolderCreation');
     if (!empty($tmp)) {
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, '<i>'.$tmp.'</i>',
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, '<i>'.$tmp.'</i>',
           '<b>MAIL:</b> Shared folder creation set to');
       $this->share_id = $tmp;
     }
     $tmp = $config->get_cfg_value('mailSharedPrefix');
     if (!empty($tmp)) {
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, '<i>'.$tmp.'</i>',
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, '<i>'.$tmp.'</i>',
           '<b>MAIL:</b> Shared folder prefix set to');
       $this->mailSharedPrefix = $tmp;
     }
@@ -179,7 +179,7 @@ class mailMethod
     $this->initial_account_id = $this->account_id;
   }
 
-  public function fixAttributesOnLoad()
+  public function fixAttributesOnLoad ()
   {
     foreach ($this->attributes as $source => $dest) {
       if (isset($this->parent->attrs[$source])) {
@@ -194,7 +194,7 @@ class mailMethod
     }
   }
 
-  public function fixAttributesOnRemove()
+  public function fixAttributesOnRemove ()
   {
     /* Remove objectClasses */
     if ($this->type == 'user') {
@@ -203,15 +203,15 @@ class mailMethod
     } else {
       $this->parent->attrs['objectClass'] =
         array_remove_entries_ics($this->shareObjectClasses, $this->parent->attrs['objectClass']);
-      $this->parent->attrs['gosaSharedFolderTarget'] = array();
+      $this->parent->attrs['gosaSharedFolderTarget'] = [];
     }
     foreach ($this->attributes as $source => $dest) {
-      $this->attrs[$dest]   = array();
-      $this->attrs[$source] = array();
+      $this->attrs[$dest]   = [];
+      $this->attrs[$source] = [];
     }
   }
 
-  public function fixAttributesOnStore()
+  public function fixAttributesOnStore ()
   {
     foreach ($this->attributes as $source => $dest) {
       if (isset($this->parent->attrs[$dest])) {
@@ -244,11 +244,11 @@ class mailMethod
               Not necessary for the base class.
       @return Boolean True if this method is connected else false.
    */
-  public function connect()
+  public function connect ()
   {
     $this->reset_error();
-    @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, get_class($this), '<b>MAIL: Connect method</b>');
-    @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $this->parent->gosaMailServer, '<b>MAIL: Current server</b>');
+    @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, get_class($this), '<b>MAIL: Connect method</b>');
+    @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $this->parent->gosaMailServer, '<b>MAIL: Current server</b>');
 
     $this->connected = TRUE;
     return TRUE;
@@ -257,7 +257,7 @@ class mailMethod
   /*! \brief  Returns the connection status of this method.
       @return Boolean True if this method is connected else false.
    */
-  public function is_connected()
+  public function is_connected ()
   {
     return $this->connected;
   }
@@ -265,27 +265,27 @@ class mailMethod
   /*! \brief  Disconnect this method. Close services like imap connection.
               Not necessary for the base class.
    */
-  public function disconnect()
+  public function disconnect ()
   {
     $this->reset_error();
     if ($this->is_connected()) {
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, get_class($this), '<b>MAIL: Disconnect method</b>');
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, get_class($this), '<b>MAIL: Disconnect method</b>');
       $this->connected = FALSE;
     }
   }
 
   /*! \brief Checks data consistency
   */
-  public function check()
+  public function check ()
   {
-    return array();
+    return [];
   }
 
   /*! \brief  Returns true the current object represents a valid account
               (Some methods may check imap accounts here.)
       @return Boolean TRUE if this is a valid account else FALSE
   */
-  public function account_exists()
+  public function account_exists ()
   {
     $this->reset_error();
     return TRUE;
@@ -294,17 +294,17 @@ class mailMethod
   /*! \brief  Returns the last error occurred
       @return String  The last error message.
    */
-  public function get_error()
+  public function get_error ()
   {
     return $this->error;
   }
 
-  public function isModifyableMail()
+  public function isModifyableMail ()
   {
     return $this->modifyableMail;
   }
 
-  public function isModifyableServer()
+  public function isModifyableServer ()
   {
     return $this->modifyableServer;
   }
@@ -312,19 +312,19 @@ class mailMethod
   /*! \brief  Returns TRUE if the action caused an error.
       @return Boolean TRUE on error else FALSE
    */
-  public function is_error()
+  public function is_error ()
   {
     return ($this->error != '');
   }
 
   /*! \brief  Resets the error message.
    */
-  public function reset_error()
+  public function reset_error ()
   {
     $this->error = '';
   }
 
-  public function get_account_id()
+  public function get_account_id ()
   {
     $this->build_account_id();
     return $this->account_id;
@@ -332,7 +332,7 @@ class mailMethod
 
   /*! \brief  Create a new account id, like 'user/name@domain.com'.
    */
-  protected function build_account_id()
+  protected function build_account_id ()
   {
     /* Build account identicator */
     if ($this->type == "user") {
@@ -364,7 +364,7 @@ class mailMethod
 
     /* Create account_id
      */
-    $from   = array("/%cn%/i","/%uid%/i","/%prefix%/i","/%uattrib%/i","/%domain%/i","/%mailpart%/i","/%mail%/i");
+    $from   = ["/%cn%/i","/%uid%/i","/%prefix%/i","/%uattrib%/i","/%domain%/i","/%mailpart%/i","/%mail%/i"];
     $uid    = '';
     $cn     = '';
     $attrib = '';
@@ -379,7 +379,7 @@ class mailMethod
     if (isset($this->parent->$uattrib)) {
       $attrib = $this->parent->$uattrib;
     }
-    $to     = array($cn,$uid,$prefix,$attrib,$domain,$mailpart,$mail);
+    $to     = [$cn,$uid,$prefix,$attrib,$domain,$mailpart,$mail];
     $acc_id = trim(strtolower(preg_replace($from, $to, $acc_string)));
 
     /* Check for not replaced pattern.
@@ -387,7 +387,7 @@ class mailMethod
     if (preg_match("/%/", $acc_id)) {
       $notr = preg_replace("/^[^%]*/", "", $acc_id);
       if (!empty($notr)) {
-        @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>Warning</b>",
+        @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>Warning</b>",
             sprintf("<b>MAIL: WARNING unknown pattern in account creation string '%s' near '%s'</b>", $acc_id, $notr));
 
         /* Remove incomprehensible patterns */
@@ -398,7 +398,7 @@ class mailMethod
 
     if ($this->account_id != $acc_id) {
       $this->account_id = $acc_id;
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $acc_id, "<b>MAIL:</b> AccountID generated");
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $acc_id, "<b>MAIL:</b> AccountID generated");
     }
   }
 
@@ -408,7 +408,7 @@ class mailMethod
               This function is mainly used to read and write folder permissions.
       @return String A valid folder id
    */
-  public function create_folder_id($folder)
+  public function create_folder_id ($folder)
   {
     if (!empty($folder)) {
       $folder = trim(preg_replace("/^INBOX[\.\/]*/i", "", $folder));
@@ -446,15 +446,15 @@ class mailMethod
     }
 
     /* Create account_id */
-    $from   = array("/%cn%/i","/%uid%/i","/%prefix%/i","/%uattrib%/i","/%domain%/i","/%mailpart%/i","/%mail%/i");
-    $to     = array($this->parent->cn,$this->parent->uid,$prefix,$this->parent->$uattrib, $domain, $mailpart,$mail);
+    $from   = ["/%cn%/i","/%uid%/i","/%prefix%/i","/%uattrib%/i","/%domain%/i","/%mailpart%/i","/%mail%/i"];
+    $to     = [$this->parent->cn,$this->parent->uid,$prefix,$this->parent->$uattrib, $domain, $mailpart,$mail];
     $acc_id = trim(strtolower(preg_replace($from, $to, $acc_string)));
 
     /* Check for not replaced pattern */
     if (preg_match("/%/", $acc_id)) {
       $notr = preg_replace("/^[^%]*/", '', $acc_id);
       if (!empty($notr)) {
-        @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, '<b>Warning</b>',
+        @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, '<b>Warning</b>',
             sprintf("<b>MAIL: WARNING unknown pattern in account creation string '%s' near '%s'</b>", $acc_id, $notr));
 
         /* Remove incomprehensible patterns */
@@ -473,7 +473,7 @@ class mailMethod
 
   /*! \brief Saves sieve settings
    */
-  public function saveSieveSettings()
+  public function saveSieveSettings ()
   {
     $this->reset_error();
     return TRUE;
@@ -481,7 +481,7 @@ class mailMethod
 
   /*! \brief  Creates or Updates the mailAccount represented by this class.
    */
-  public function updateMailbox()
+  public function updateMailbox ()
   {
     $this->reset_error();
     return TRUE;
@@ -490,10 +490,10 @@ class mailMethod
   /*! \brief  Removes the mailbox represented by this class,
                and update shared folder ACLs .
    */
-  public function deleteMailbox()
+  public function deleteMailbox ()
   {
     $this->reset_error();
-    @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>".$this->account_id."</b>",
+    @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>".$this->account_id."</b>",
         "<b>MAIL: Remove account</b> from server :".$this->parent->gosaMailServer);
 
     return TRUE;
@@ -502,7 +502,7 @@ class mailMethod
   /*! \brief  Returns the used mail attribute (mail,uid)
       @param  String  One out of 'mail','uid'
    */
-  public function getUAttrib()
+  public function getUAttrib ()
   {
     return $this->uattrib;
   }
@@ -510,7 +510,7 @@ class mailMethod
   /*! \brief  Returns the used mail attribute (mail,uid)
       @param  String  One out of 'mail','uid'
    */
-  public function getUAttribValue()
+  public function getUAttribValue ()
   {
     $uattrib = $this->getUAttrib();
     return $this->parent->$uattrib;
@@ -519,7 +519,7 @@ class mailMethod
   /*! \brief  Returns whether the quota settings are enabled or not
       @return Boolean TRUE if enabled else FALSE
    */
-  public function quotaEnabled()
+  public function quotaEnabled ()
   {
     return $this->enableQuota;
   }
@@ -527,7 +527,7 @@ class mailMethod
   /*! \brief  Returns the used quota
       @return Integer Quota used.
    */
-  public function getQuotaUsage()
+  public function getQuotaUsage ()
   {
     return -1;
   }
@@ -535,14 +535,14 @@ class mailMethod
   /*! \brief  Returns the quota restrictions.
       @return Integer Quota restrictions.
    */
-  public function getQuota($quotaValue)
+  public function getQuota ($quotaValue)
   {
     return $quotaValue;
   }
 
   /*! \brief  Sets the mail quota
    */
-  public function setQuota($number)
+  public function setQuota ($number)
   {
     if (!is_numeric($number)) {
       $number = (int) $number;
@@ -557,15 +557,15 @@ class mailMethod
   /*! \brief  Returns the list of configured mailbox folders
       @return Array The mailbox folders.
    */
-  public function getMailboxList()
+  public function getMailboxList ()
   {
-    return array("INBOX");
+    return ["INBOX"];
   }
 
   /*! \brief  Returns whether the vacation is enabled
       @return Boolean TRUE, FALSE
    */
-  public function vacationEnabled()
+  public function vacationEnabled ()
   {
     return $this->enableVacation;
   }
@@ -573,7 +573,7 @@ class mailMethod
   /*! \brief  Returns whether the vacation range is selectable or not
       @return Boolean TRUE, FALSE
    */
-  public function vacationRangeEnabled()
+  public function vacationRangeEnabled ()
   {
     return ($this->vacationEnabled() && $this->enableVacationRange);
   }
@@ -581,7 +581,7 @@ class mailMethod
   /*! \brief  Returns whether forwarding to group non-members is possible
       @return Boolean TRUE, FALSE
    */
-  public function groupForwardingEnabled()
+  public function groupForwardingEnabled ()
   {
     return $this->enableGroupForwarding;
   }
@@ -589,7 +589,7 @@ class mailMethod
   /*! \brief  Returns whether forcing to only send/recieve local mail is possible
       @return Boolean TRUE, FALSE
    */
-  public function localOnlyEnabled()
+  public function localOnlyEnabled ()
   {
     return $this->enableLocalOnly;
   }
@@ -597,14 +597,14 @@ class mailMethod
   /*! \brief  Returns whether forwarding without storing the mail is possible
       @return Boolean TRUE, FALSE
    */
-  public function forwardOnlyEnabled()
+  public function forwardOnlyEnabled ()
   {
     return $this->enableForwardOnly;
   }
 
   /*! \brief  Checks dependencies to other FusionDirectory plugins.
    */
-  public function accountCreateable(&$reason = "")
+  public function accountCreateable (&$reason = "")
   {
     return TRUE;
   }
@@ -612,7 +612,7 @@ class mailMethod
   /*! \brief  Checks whether this account is removeable or not.
               There may be some dependencies left, eg. kolab.
    */
-  public function accountRemoveable(&$reason = "")
+  public function accountRemoveable (&$reason = "")
   {
     return TRUE;
   }
@@ -621,13 +621,13 @@ class mailMethod
   /*! \brief  Returns all mail servers configured in FusionDirectory
       @return Array  All useable mail servers
   */
-  static public function getMailServers()
+  static public function getMailServers ()
   {
     if (session::global_is_set('mailServers')) {
       return session::global_get('mailServers');
     }
     $methods = mailMethod::get_methods();
-    $servers = array();
+    $servers = [];
     foreach ($methods as $class) {
       $servers = array_merge($servers, $class::get_server_list());
     }
@@ -635,7 +635,7 @@ class mailMethod
     return $servers;
   }
 
-  static public function resetMailServersCache()
+  static public function resetMailServersCache ()
   {
     session::global_un_set('mailServers');
   }
@@ -643,10 +643,10 @@ class mailMethod
   /*! \brief  Returns the available mailMethods
       @return Array   A list of all avaialable mailMethods_
    */
-  static public function get_methods()
+  static public function get_methods ()
   {
     global $class_mapping;
-    $available = array('mailMethod' => 'mailMethod');
+    $available = ['mailMethod' => 'mailMethod'];
     foreach ($class_mapping as $class => $path) {
       if (preg_match('/^mailMethod.+/', $class)) {
         $available[$class] = $class;
@@ -655,25 +655,25 @@ class mailMethod
     return $available;
   }
 
-  static public function getServerMethod($server)
+  static public function getServerMethod ($server)
   {
     $methods = mailMethod::get_methods();
     foreach ($methods as $class) {
       if ($class::serverMatch($server)) {
-        @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $class, 'Mail method for server "'.$server.'"');
+        @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $class, 'Mail method for server "'.$server.'"');
         return $class;
       }
     }
-    @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, '', 'No method found for server "'.$server.'"');
+    @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, '', 'No method found for server "'.$server.'"');
     return 'mailMethod';
   }
 
-  static public function serverMatch($server)
+  static public function serverMatch ($server)
   {
     return isset(static::get_server_list()[$server]);
   }
 
-  static public function getInstance($class, $parent, $type = NULL)
+  static public function getInstance ($class, $parent, $type = NULL)
   {
     if ($parent instanceof mailAccount) {
       $type = 'user';
@@ -687,7 +687,7 @@ class mailMethod
 
   /*! \brief  Returns configured acls
    */
-  public function  getFolderACLs($folder_acls)
+  public function  getFolderACLs ($folder_acls)
   {
     /* Merge given ACL with acl mapping
        This ensures that no ACL will accidentally overwritten by fusiondirectory.
@@ -703,7 +703,7 @@ class mailMethod
 
   /*! \brief  Write ACLs back to imap or what ever
    */
-  public function  setFolderACLs($array)
+  public function  setFolderACLs ($array)
   {
     return TRUE;
   }
@@ -711,7 +711,7 @@ class mailMethod
   /*! \brief  Returns a list of all possible acls.
       @return Array   ACLs.
   */
-  public function getAclTypes()
+  public function getAclTypes ()
   {
     return $this->acl_mapping;
   }
@@ -719,7 +719,7 @@ class mailMethod
   /*! \brief  Returns the configured mailMethod
       @return String  the configured mail method or ""
    */
-  static public function get_current_method()
+  static public function get_current_method ()
   {
     global $class_mapping, $config;
     $method = $config->get_cfg_value("mailmethod");
@@ -732,7 +732,7 @@ class mailMethod
     return "";
   }
 
-  static function quota_to_image($use, $quota)
+  static function quota_to_image ($use, $quota)
   {
     if ($use == -1) {
       return "&nbsp;&nbsp;"._("Unknown");
@@ -744,16 +744,16 @@ class mailMethod
     }
   }
 
-  static public function get_server_list()
+  static public function get_server_list ()
   {
     global $config;
-    $serverList = array();
+    $serverList = [];
 
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(objectClass=fdImapServer)', array('cn'));
+    $ldap->search('(objectClass=fdImapServer)', ['cn']);
     while ($attrs = $ldap->fetch()) {
-      $serverList[$attrs['cn'][0]] = array(
+      $serverList[$attrs['cn'][0]] = [
         'server_dn'     => $attrs['dn'],
         'connect'       => '',
         'admin'         => '',
@@ -761,7 +761,7 @@ class mailMethod
         'sieve_server'  => '',
         'sieve_option'  => '',
         'sieve_port'    => ''
-      );
+      ];
     }
 
     return $serverList;
@@ -770,7 +770,7 @@ class mailMethod
   /*! \brief  Returns the default sharedFolder ACLs for this method.
       @return Array Returns an array containg acls for __member__ and __anyone__
    */
-  public function getDefaultACLs()
+  public function getDefaultACLs ()
   {
     $tmp = $this->default_acls;
     if (!isset($tmp['__member__'])) {
@@ -782,9 +782,9 @@ class mailMethod
     return $tmp;
   }
 
-  public function additionalInformations()
+  public function additionalInformations ()
   {
-    return array();
+    return [];
   }
 }
 ?>
diff --git a/mail/personal/mail/class_mailAccount.inc b/mail/personal/mail/class_mailAccount.inc
index 21fc98ba27fc826aa38d6b60f4e5a6c80696b9a3..7dad873871a660adb2dc7a9304b25be5dcbc7f9b 100644
--- a/mail/personal/mail/class_mailAccount.inc
+++ b/mail/personal/mail/class_mailAccount.inc
@@ -36,7 +36,7 @@ class MailQuotaAttribute extends IntAttribute
 {
   private $quotaUsage;
 
-  function setMailMethod($mailMethod)
+  function setMailMethod ($mailMethod)
   {
     /* Read quota */
     $this->value = $mailMethod->getQuota($this->value);
@@ -47,15 +47,15 @@ class MailQuotaAttribute extends IntAttribute
     }
   }
 
-  function renderAttribute(&$attributes, $readOnly)
+  function renderAttribute (&$attributes, $readOnly)
   {
     parent::renderAttribute($attributes, $readOnly);
-    $attributes[$this->getLdapName().'_usage'] = array(
+    $attributes[$this->getLdapName().'_usage'] = [
       'htmlid'      => $this->getHtmlId().'_usage',
       'label'       => '{literal}'._('Quota usage').'{/literal}',
       'description' => _('Part of the quota which is used'),
       'input'       => mailMethod::quota_to_image($this->quotaUsage, $this->value),
-    );
+    ];
   }
 }
 
@@ -63,27 +63,27 @@ class MailQuotaAttribute extends IntAttribute
 class mailAccount extends simplePlugin
 {
   var $displayHeader  = TRUE;
-  var $objectclasses  = array('gosaMailAccount');
+  var $objectclasses  = ['gosaMailAccount'];
 
-  private $mainSectionAttrs = array();
+  private $mainSectionAttrs = [];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Mail'),
       'plDescription'   => _('Mail settings'),
       'plIcon'          => 'geticon.php?context=applications&icon=internet-mail&size=48',
       'plSmallIcon'     => 'geticon.php?context=applications&icon=internet-mail&size=16',
       'plSelfModify'    => TRUE,
       'plPriority'      => 4,
-      'plObjectType'    => array('user'),
+      'plObjectType'    => ['user'],
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo()),
-      'plForeignKeys'  => array(
-        'gosaMailServer' => array(
-          array('serverGeneric', 'cn'),
-        )
-      )
-    );
+      'plForeignKeys'  => [
+        'gosaMailServer' => [
+          ['serverGeneric', 'cn'],
+        ]
+      ]
+    ];
   }
 
   /*!
@@ -91,89 +91,89 @@ class mailAccount extends simplePlugin
   */
   static function getAttributesInfo ()
   {
-    return array (
-      'main' => array (
+    return  [
+      'main' => [
         'name'  => _('Mail account'),
-        'attrs' => array (
-          new MailAttribute (
+        'attrs' => [
+          new MailAttribute(
             _('Primary address'), _('Primary mail address'),
             'mail', TRUE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Server'), _('Specify the mail server where the user will be hosted on'),
             'gosaMailServer', FALSE,
-            array()
+            []
           ),
-          new MailQuotaAttribute (
-            _('Quota size'), 'Define quota size in MB',
+          new MailQuotaAttribute(
+            _('Quota size'), _('Define quota size in MiB'),
             'gosaMailQuota', FALSE,
             0, FALSE
           )
-        )
-      ),
-      'other_addresses' => array(
+        ]
+      ],
+      'other_addresses' => [
         'name'  => _('Other addresses and redirections'),
-        'attrs' => array(
-          new SetAttribute (
-            new MailAttribute (
+        'attrs' => [
+          new SetAttribute(
+            new MailAttribute(
               _('Alternative addresses'), _('List of alternative mail addresses'),
               'gosaMailAlternateAddress'
             )
           ),
-          new MailsAttribute (
+          new MailsAttribute(
             _('Forward messages to'), _('Addresses to which messages should be forwarded'),
             'gosaMailForwardingAddress'
           )
-        )
-      ),
-      'options1' => array(
+        ]
+      ],
+      'options1' => [
         'name' => _('Vacation message'),
-        'attrs' => array(
-          new BooleanAttribute (
+        'attrs' => [
+          new BooleanAttribute(
             _('Activate vacation message'),
             _('Select to automatically response with the vacation message defined below'),
             'flag_vacation', FALSE, FALSE, '',
             'V', ''
           ),
-          new DateAttribute (
+          new DateAttribute(
             _('from'), 'Starting date for vacation message',
             'gosaVacationStart', FALSE,
             'U'
           ),
-          new DateAttribute (
+          new DateAttribute(
             _('till'), 'Ending date for vacation message',
             'gosaVacationStop', FALSE,
             'U'
           ),
-          new TextAreaAttribute (
+          new TextAreaAttribute(
             _('Vacation message'), 'The message you wish be sent during your absence',
             'gosaVacationMessage'
           ),
-        )
-      ),
-      'advanced' => array (
+        ]
+      ],
+      'advanced' => [
          'name' => _('Advanced mail options'),
-         'attrs' => array (
-          new FlagsAttribute ('gosaMailDeliveryMode', array(
+         'attrs' => [
+          new FlagsAttribute('gosaMailDeliveryMode', [
             'flag_ownmailbox',
             'flag_vacation',
             'flag_localonly'
-          )),
-          new BooleanAttribute (
+          ]),
+          new BooleanAttribute(
             _('User is only allowed to send and receive local mails'),
             _('Select if user can only send and receive inside his own domain'),
             'flag_localonly', FALSE, FALSE, '',
             'L', ''
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('No delivery to own mailbox'),
             _('Select if you want to forward mails without getting own copies of them'),
             'flag_ownmailbox', FALSE, FALSE, '',
             'I', ''
           ),
-        )
-      )
-    );
+         ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -197,7 +197,7 @@ class mailAccount extends simplePlugin
     }
   }
 
-  function is_this_account($attrs)
+  function is_this_account ($attrs)
   {
     if (parent::is_this_account($attrs)) {
       return TRUE;
@@ -207,11 +207,11 @@ class mailAccount extends simplePlugin
   }
 
   /* We need $mailAccount->uid to return the uid for mailMethod */
-  public function __get($name)
+  public function __get ($name)
   {
-    if (in_array($name, array('cn','uid')) && isset($this->parent)) {
+    if (in_array($name, ['cn','uid']) && isset($this->parent)) {
       return $this->parent->getBaseObject()->$name;
-    } elseif (in_array($name, array('uidNumber','gidNumber')) && isset($this->parent)) {
+    } elseif (in_array($name, ['uidNumber','gidNumber']) && isset($this->parent)) {
       return $this->parent->by_object['posixAccount']->$name;
     } else {
       /* Calling default behaviour */
@@ -219,11 +219,11 @@ class mailAccount extends simplePlugin
     }
   }
 
-  public function __isset($name)
+  public function __isset ($name)
   {
-    if (in_array($name, array('cn','uid')) && isset($this->parent)) {
+    if (in_array($name, ['cn','uid']) && isset($this->parent)) {
       return isset($this->parent->getBaseObject()->$name);
-    } elseif (in_array($name, array('uidNumber','gidNumber')) && isset($this->parent)) {
+    } elseif (in_array($name, ['uidNumber','gidNumber']) && isset($this->parent)) {
       return isset($this->parent->by_object['posixAccount']->$name);
     } else {
       /* Calling default behaviour */
@@ -237,10 +237,10 @@ class mailAccount extends simplePlugin
       mailMethod::resetMailServersCache();
       $this->attributesAccess['gosaMailServer']->setChoices(array_keys(mailMethod::getMailServers()));
     }
-    parent::foreignKeyUpdate ($field, $oldvalue, $newvalue, $source);
+    parent::foreignKeyUpdate($field, $oldvalue, $newvalue, $source);
   }
 
-  public function mailServerChanged()
+  public function mailServerChanged ()
   {
     /* Intialize the used mailMethod */
     if ($this->gosaMailServer == '') {
@@ -314,14 +314,14 @@ class mailAccount extends simplePlugin
     if ($this->mailMethod->vacationRangeEnabled()) {
       $this->attributesAccess['gosaVacationStop']->setDisabled(FALSE);
       $this->attributesAccess['gosaVacationStart']->setDisabled(FALSE);
-      $this->attributesAccess['flag_vacation']->setManagedAttributes (
-        array (
-          'erase' => array (
-            FALSE => array (
+      $this->attributesAccess['flag_vacation']->setManagedAttributes(
+         [
+          'erase' => [
+            FALSE => [
               'gosaVacationStart','gosaVacationStop','gosaVacationMessage'
-            )
-          )
-        )
+            ]
+          ]
+         ]
       );
     } else {
       $this->attributesAccess['gosaVacationStart']->setDisabled(TRUE);
@@ -330,14 +330,14 @@ class mailAccount extends simplePlugin
       $this->attributesAccess['gosaVacationStop']->setDisabled(TRUE);
       $this->attributesAccess['gosaVacationStop']->setVisible(FALSE);
       $this->attributesAccess['gosaVacationStop']->setValue('');
-      $this->attributesAccess['flag_vacation']->setManagedAttributes (
-        array (
-          'erase' => array (
-            FALSE => array (
+      $this->attributesAccess['flag_vacation']->setManagedAttributes(
+         [
+          'erase' => [
+            FALSE => [
               'gosaVacationMessage'
-            )
-          )
-        )
+            ]
+          ]
+         ]
       );
     }
   }
@@ -353,13 +353,13 @@ class mailAccount extends simplePlugin
     return $messages;
   }
 
-  protected function shouldSave()
+  protected function shouldSave ()
   {
     /* mail method might have something to save (like password change from main tab for instance) */
     return TRUE;
   }
 
-  public function ldap_save()
+  public function ldap_save ()
   {
     if (!empty($this->attrs)) {
       $errors = parent::ldap_save();
@@ -368,7 +368,7 @@ class mailAccount extends simplePlugin
       }
     }
 
-    $errors = array();
+    $errors = [];
 
     /* Only do IMAP actions if we are not a template */
     if (!$this->is_template) {
@@ -387,7 +387,7 @@ class mailAccount extends simplePlugin
           /* Do not write sieve settings if this account is new and
              doesn't seem to exist. */
           if (!$this->initially_was_account && !$this->mailMethod->account_exists()) {
-            @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,
+            @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,
                 'Skipping sieve settings, the account doesn’t seem to be created already.', '');
           } else {
             if (!$this->mailMethod->saveSieveSettings()) {
@@ -396,7 +396,7 @@ class mailAccount extends simplePlugin
           }
         } else {
           if ($this->sieve_management) {
-            @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,
+            @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,
                 'User uses an own sieve script, skipping sieve update.', '');
             $this->sieve_management->save();
           }
@@ -415,7 +415,7 @@ class mailAccount extends simplePlugin
     return $errors;
   }
 
-  function post_remove()
+  function post_remove ()
   {
     /* Let the mailMethod remove this mailbox */
     if (!$this->is_template) {
diff --git a/mail/personal/mail/class_sieve.inc b/mail/personal/mail/class_sieve.inc
index 119925c598686c93a887fe838358936cd6b01161..e4376435146eddfed9f2a22647742fb9b6cbe821 100644
--- a/mail/personal/mail/class_sieve.inc
+++ b/mail/personal/mail/class_sieve.inc
@@ -12,15 +12,15 @@
 // TODO before next release:  remove ::status() and dependencies
 
 
-define ("F_NO", 0);
-define ("F_OK", 1);
-define ("F_DATA", 2);
-define ("F_HEAD", 3);
-
-define ("EC_NOT_LOGGED_IN", 0);
-define ("EC_QUOTA", 10);
-define ("EC_NOSCRIPTS", 20);
-define ("EC_UNKNOWN", 255);
+define("F_NO", 0);
+define("F_OK", 1);
+define("F_DATA", 2);
+define("F_HEAD", 3);
+
+define("EC_NOT_LOGGED_IN", 0);
+define("EC_QUOTA", 10);
+define("EC_NOSCRIPTS", 20);
+define("EC_UNKNOWN", 255);
 /*
 
    SIEVE-PHP.LIB VERSION 0.0.8
@@ -90,7 +90,7 @@ class sieve
   //also add a connection type, like PLAIN, MD5, etc...
 
 
-  function get_response()
+  function get_response ()
   {
     if($this->loggedin == false or feof($this->fp)){
       $this->error = EC_NOT_LOGGED_IN;
@@ -156,7 +156,7 @@ class sieve
     } /* end elseif */
     elseif($this->token[0][0] == "{"){
 
-      /* Unable wild assumption:  that the only function that gets here is the get_script(), doesn't really matter though */
+      /* Unable wild assumption:  that the only function that gets here is the get_script (), doesn't really matter though */
 
       /* the first line is the len field {xx}, which we don't care about at this point */
       $this->line = fgets($this->fp,1024);
@@ -171,7 +171,7 @@ class sieve
     } /* end elseif */
     elseif($this->token[0][0] == "\""){
 
-      /* I'm going under the _assumption_ that the only function that will get here is the listscripts().
+      /* I'm going under the _assumption_ that the only function that will get here is the listscripts ().
          I could very well be mistaken here, if I am, this part needs some rework */
 
       $this->found_script=false;
@@ -200,7 +200,7 @@ class sieve
     } /* end else */
   } /* end get_response() */
 
-  function __construct($host, $port, $user, $pass, $auth="",$options ="", $auth_types="PLAIN DIGEST-MD5")
+  function __construct ($host, $port, $user, $pass, $auth="",$options ="", $auth_types="PLAIN DIGEST-MD5")
   {
     $this->host=$host;
     $this->port=$port;
@@ -223,11 +223,11 @@ class sieve
     $this->error_raw="";
     $this->options = $options;
 
-    @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $this->error_raw,
+    @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $this->error_raw,
         "<b>SIEVE: Host: $host:$port. Options: $options - Auth Types: $auth_types </b>");
   }
 
-  function parse_for_quotes($string)
+  function parse_for_quotes ($string)
   {
     /* This function tokenizes a line of input by quote marks and returns them as an array */
 
@@ -255,7 +255,7 @@ class sieve
       return false;
   } /* end function */
 
-  function status($string)
+  function status ($string)
   {
     //this should probably be replaced by a smarter parser.
 
@@ -282,13 +282,13 @@ class sieve
     } /* end switch */
   } /* end status() */
 
-  function sieve_login()
+  function sieve_login ()
   {
 
     $this->fp=@fsockopen($this->host,$this->port,$err_id,$err_str);
     if($this->fp == false){
 
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,$this->error_raw,
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,$this->error_raw,
           "<b>SIEVE: Socket connection failed. (".$this->host.":".$this->port.")</b>");
 
       $this->error_raw = $err_str;
@@ -366,7 +366,7 @@ class sieve
     if(sieve::status($this->line) == F_NO){   //here we should do some returning of error codes?
       $this->error=EC_UNKNOWN;
 
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,$this->error_raw,
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,$this->error_raw,
           "<b>SIEVE: Unknown sieve response, giving up.</b>");
 
       $this->error_raw = "Server not allowing connections.";
@@ -388,7 +388,7 @@ class sieve
      * #TODO Maybe there is a better solution for this?
      */
     if($this->auth_in_use == ""){
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,$this->error_raw,
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,$this->error_raw,
           "<b>SIEVE: No authentification mechanisms received, try using PLAIN!.</b>");
         $this->auth_in_use  = "PLAIN";
     }
@@ -405,7 +405,7 @@ class sieve
     if(isset($this->capabilities['implementation'])){
       $imp = $this->capabilities['implementation'];
     }
-    @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,$imp,
+    @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,$imp,
         "<b>SIEVE: Socket connection established. </b>");
 
     /* call our authentication program */
@@ -413,7 +413,7 @@ class sieve
 
   }
 
-  function sieve_logout()
+  function sieve_logout ()
   {
     if($this->loggedin==false)
       return false;
@@ -421,14 +421,14 @@ class sieve
     fputs($this->fp,"LOGOUT\r\n");
     fclose($this->fp);
 
-    @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"",
+    @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"",
         "<b>SIEVE: Logout!</b>");
 
     $this->loggedin=false;
     return true;
   }
 
-  function sieve_sendscript($scriptname, $script)
+  function sieve_sendscript ($scriptname, $script)
   {
     if($this->loggedin==false)
       return false;
@@ -438,11 +438,11 @@ class sieve
     fputs($this->fp, "$this->script\r\n");
 
     if(sieve::get_response()){
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"",
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"",
           "<b>SIEVE: Script '".$scriptname."' successfully send!</b>");
       return(TRUE);
     }else{
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,trim($this->error_raw),
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,trim($this->error_raw),
           "<b>SIEVE: Script couldn't be send!</b>");
       return(FALSE);
     }
@@ -450,7 +450,7 @@ class sieve
 
   //it appears the timsieved does not honor the NUMBER type.  see lex.c in timsieved src.
   //don't expect this function to work yet.  I might have messed something up here, too.
-  function sieve_havespace($scriptname, $scriptsize)
+  function sieve_havespace ($scriptname, $scriptsize)
   {
     if($this->loggedin==false)
       return false;
@@ -459,7 +459,7 @@ class sieve
 
   }
 
-  function sieve_setactivescript($scriptname)
+  function sieve_setactivescript ($scriptname)
   {
     if($this->loggedin==false)
       return false;
@@ -467,17 +467,17 @@ class sieve
     fputs($this->fp, "SETACTIVE \"$scriptname\"\r\n");
 
     if(sieve::get_response()){
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"",
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"",
           "<b>SIEVE: Set active script '".$scriptname."' was successful!</b>");
       return(TRUE);
     }else{
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,trim($this->error_raw),
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,trim($this->error_raw),
           "<b>SIEVE: Set active script '".$scriptname."' failed!</b>");
       return(FALSE);
     }
   }
 
-  function sieve_getscript($scriptname)
+  function sieve_getscript ($scriptname)
   {
     unset($this->script);
     if($this->loggedin==false)
@@ -486,18 +486,18 @@ class sieve
     fputs($this->fp, "GETSCRIPT \"$scriptname\"\r\n");
 
     if(sieve::get_response()){
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"",
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"",
           "<b>SIEVE: Get script '".$scriptname."' was successful!</b>");
       return(TRUE);
     }else{
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,trim($this->error_raw),
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,trim($this->error_raw),
           "<b>SIEVE: Get script '".$scriptname."' failed!</b>");
       return(FALSE);
     }
   }
 
 
-  function sieve_deletescript($scriptname)
+  function sieve_deletescript ($scriptname)
   {
     if($this->loggedin==false)
       return false;
@@ -505,35 +505,35 @@ class sieve
     fputs($this->fp, "DELETESCRIPT \"$scriptname\"\r\n");
 
     if(sieve::get_response()){
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"",
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"",
           "<b>SIEVE: Delete script '".$scriptname."' was successful!</b>");
       return(TRUE);
     }else{
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,trim($this->error_raw),
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,trim($this->error_raw),
           "<b>SIEVE: Delete  script '".$scriptname."' failed!</b>");
       return(FALSE);
     }
   }
 
 
-  function sieve_listscripts()
+  function sieve_listscripts ()
   {
     fputs($this->fp, "LISTSCRIPTS\r\n");
     sieve::get_response();    //should always return true, even if there are no scripts...
     if(isset($this->found_script) and $this->found_script){
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, implode($this->response,", "),
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, implode($this->response,", "),
           "<b>SIEVE: List scripts was successful!</b>");
       return true;
     }else{
       $this->error=EC_NOSCRIPTS;  //sieve::getresponse has no way of telling wether a script was found...
       $this->error_raw="No scripts found for this account.";
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $this->error_raw,
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $this->error_raw,
           "<b>SIEVE: List scripts returned no scripts</b>");
       return false;
     }
   }
 
-  function sieve_alive()
+  function sieve_alive ()
   {
     if(!isset($this->fp) or $this->fp==0){
       $this->error = EC_NOT_LOGGED_IN;
@@ -548,7 +548,7 @@ class sieve
   }
 
 
-  function authenticate()
+  function authenticate ()
   {
 
     /* Check if a TLS bases connection is required
@@ -562,31 +562,31 @@ class sieve
         /* Initiate TLS and get response
          */
         if (@ fputs ($this->fp, "STARTTLS\r\n") === false) {
-          @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"couldn't send data to socket.",
+          @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"couldn't send data to socket.",
               "<b>SIEVE: TLS couldn't be initiated. </b>");
           $this->error_raw = "fputs() returned 'false'"; return (false);
         }
-        @ $linha = fgets ($this->fp, 1024);
+        @ $linha = fgets($this->fp, 1024);
         if ($linha === false) {
           $this->error_raw = "fgets() returned 'false'";
-          @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"couldn't read data from socket.",
+          @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"couldn't read data from socket.",
               "<b>SIEVE: TLS couldn't be initiated. </b>");
           return (false);
         }
-        if (! preg_match ("/\\s*OK\\s/i", $linha)) {
-          @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"server returned '".trim ($linha)."' instead of 'OK'",
+        if (! preg_match("/\\s*OK\\s/i", $linha)) {
+          @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"server returned '".trim ($linha)."' instead of 'OK'",
               "<b>SIEVE: TLS couldn't be initiated. </b>");
-          $this->error_raw = "expected an 'OK', but server replied: '" . trim ($linha) . "'";
+          $this->error_raw = "expected an 'OK', but server replied: '" . trim($linha) . "'";
           return (false);
         }
         if (! @ stream_socket_enable_crypto ($this->fp, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) {
-          @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,
+          @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,
               "The socket doesn't seem to support STREAM_CRYPTO_METHOD_TLS_CLIENT",
               "<b>SIEVE: TLS couldn't be initiated. </b>");
           $this->error_raw = "stream_socket_enable_crypto() returned 'false'";
           return (false);
         }
-        @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"",
+        @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"",
             "<b>SIEVE: TLS successfully initiated. </b>");
       }
     }
@@ -607,13 +607,13 @@ class sieve
 
         if(sieve::status($this->line) == F_NO){
           $this->error_raw = $this->line;
-          @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,trim($this->error_raw),
+          @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,trim($this->error_raw),
               "<b>SIEVE: Authentication for '".$this->user."-".$this->auth_in_use."' failed.</b>");
 
           return false;
         }
 
-        @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"",
+        @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"",
             "<b>SIEVE: Authentication for '".$this->user."-".$this->auth_in_use."' was successful.</b>");
         $this->loggedin=true;
         return true;
@@ -621,7 +621,7 @@ class sieve
 
       default:
       {
-        @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"Unsupported authentication method '".$this->auth_in_use."'!",
+        @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"Unsupported authentication method '".$this->auth_in_use."'!",
             "<b>SIEVE: Authentication for '".$this->user."' with type '".$this->auth_in_use."' failed.</b>");
 
         $this->error_raw = "Unsupported authentication method '".$this->auth_in_use."'!";
diff --git a/mail/personal/mail/mailAddressSelect/class_mailAddressSelect.inc b/mail/personal/mail/mailAddressSelect/class_mailAddressSelect.inc
index 8fbed142c106731b50691c368f925647a909c6f2..a2cf8e5c7ffa274f118375e1fe0441fc558bc9a2 100644
--- a/mail/personal/mail/mailAddressSelect/class_mailAddressSelect.inc
+++ b/mail/personal/mail/mailAddressSelect/class_mailAddressSelect.inc
@@ -20,8 +20,8 @@
 
 class mailAddressSelect extends simpleSelectManagement
 {
-  protected $objectTypes          = array('user', 'group');
-  protected $autoFilterAttributes = array('dn', 'cn', 'description', 'mail');
+  protected $objectTypes          = ['user', 'group'];
+  protected $autoFilterAttributes = ['dn', 'cn', 'description', 'mail'];
 
   function configureFilter ()
   {
diff --git a/mixedgroups/admin/ogroups/mixedgroups/class_mixedGroup.inc b/mixedgroups/admin/ogroups/mixedgroups/class_mixedGroup.inc
index 5f660d278d426cadfd6a950e9c07f20a66291351..1676ca9433f3065318d0a8bea7b89e3157ceae14 100644
--- a/mixedgroups/admin/ogroups/mixedgroups/class_mixedGroup.inc
+++ b/mixedgroups/admin/ogroups/mixedgroups/class_mixedGroup.inc
@@ -20,28 +20,28 @@
 
 class mixedGroup extends simplePlugin
 {
-  var $objectclasses  = array('posixGroup');
-  protected $locks    = array();
+  var $objectclasses  = ['posixGroup'];
+  protected $locks    = [];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Posix group'),
       'plDescription' => _('Posix group settings'),
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array('ogroup-user'),
+      'plObjectType'  => ['ogroup-user'],
       'plPriority'    => 1,
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Properties'),
-        'attrs' => array(
+        'attrs' => [
           new BooleanAttribute(
             _('Force GID'), _('Force GID value for this group'),
             'force_id', FALSE
@@ -53,28 +53,28 @@ class mixedGroup extends simplePlugin
           ),
           new HiddenAttribute(
             'memberUid', FALSE,
-            array()
+            []
           )
-        )
-      ),
-      'system_trust' => array(
+        ]
+      ],
+      'system_trust' => [
         'name'  => _('System trust'),
         'icon'  => 'geticon.php?context=status&icon=locked&size=16',
-        'attrs' => array(
+        'attrs' => [
           new SelectAttribute(
             _('Trust mode'), _('Type of authorization for those hosts'),
             'trustMode', FALSE,
-            array('', 'fullaccess', 'byhost'),
+            ['', 'fullaccess', 'byhost'],
             '',
-            array(_('disabled'), _('full access'), _('allow access to these hosts'))
+            [_('disabled'), _('full access'), _('allow access to these hosts')]
           ),
           new SystemsAttribute(
             '', _('Only allow this group to connect to this list of hosts'),
             'host', FALSE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -83,12 +83,12 @@ class mixedGroup extends simplePlugin
 
     $this->attributesAccess['trustMode']->setInLdap(FALSE);
     $this->attributesAccess['trustMode']->setManagedAttributes(
-      array(
-        'multiplevalues' => array('notbyhost' => array('','fullaccess')),
-        'erase' => array(
-          'notbyhost' => array('host')
-        )
-      )
+      [
+        'multiplevalues' => ['notbyhost' => ['','fullaccess']],
+        'erase' => [
+          'notbyhost' => ['host']
+        ]
+      ]
     );
     if ((count($this->host) == 1) && ($this->host[0] == '*')) {
       $this->trustMode = 'fullaccess';
@@ -99,17 +99,17 @@ class mixedGroup extends simplePlugin
     $this->attributesAccess['gidNumber']->setUnique(TRUE);
     $this->attributesAccess['force_id']->setInLdap(FALSE);
     $this->attributesAccess['force_id']->setManagedAttributes(
-      array(
-        'disable' => array (
-          FALSE => array (
+      [
+        'disable' => [
+          FALSE => [
             'gidNumber',
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
   }
 
-  function check()
+  function check ()
   {
     global $config;
     $message = parent::check();
@@ -124,7 +124,7 @@ class mixedGroup extends simplePlugin
     return $message;
   }
 
-  function resetCopyInfos()
+  function resetCopyInfos ()
   {
     parent::resetCopyInfos();
 
@@ -133,14 +133,14 @@ class mixedGroup extends simplePlugin
     $this->gidNumber = "";
   }
 
-  function prepare_save()
+  function prepare_save ()
   {
     global $config;
     $ldap = $config->get_ldap_link();
     $members    = $this->parent->getBaseObject()->member;
-    $memberUid  = array();
+    $memberUid  = [];
     foreach ($members as $dn) {
-      $ldap->cat($dn, array('uid'));
+      $ldap->cat($dn, ['uid']);
       $attrs = $ldap->fetch();
       $memberUid[] = $attrs['uid'][0];
     }
@@ -162,7 +162,7 @@ class mixedGroup extends simplePlugin
     }
 
     if ($this->trustMode == 'fullaccess') {
-      $this->attrs['host'] = array('*');
+      $this->attrs['host'] = ['*'];
     }
 
     /* Trust accounts */
@@ -175,24 +175,24 @@ class mixedGroup extends simplePlugin
     return $errors;
   }
 
-  function save()
+  function save ()
   {
     $errors = parent::save();
 
     foreach ($this->locks as $lock) {
       del_lock($lock);
     }
-    $this->locks = array();
+    $this->locks = [];
 
     return $errors;
   }
 
-  function addUser($dn, $uid)
+  function addUser ($dn, $uid)
   {
-    $this->attributesAccess['memberUid']->addValue($dn, array('uid' => array($uid), 'cn' => array($uid)));
+    $this->attributesAccess['memberUid']->addValue($dn, ['uid' => [$uid], 'cn' => [$uid]]);
   }
 
-  function removeUser($uid)
+  function removeUser ($uid)
   {
     $this->attributesAccess['memberUid']->searchAndRemove($uid);
   }
diff --git a/mixedgroups/locale/af_ZA/fusiondirectory.po b/mixedgroups/locale/af_ZA/fusiondirectory.po
index 6325b7b594c726d0ee79dd3f72c75d1ed1c0eda2..fb7422ccba8edfc81ef638e25eecf47d0fff3a52 100644
--- a/mixedgroups/locale/af_ZA/fusiondirectory.po
+++ b/mixedgroups/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/mixedgroups/locale/ar/fusiondirectory.po b/mixedgroups/locale/ar/fusiondirectory.po
index 81cba99d99508cc44cefa241b1e2cf08e268a386..f7dbe17b08d88e56788e0de46a3b1fbcd120100b 100644
--- a/mixedgroups/locale/ar/fusiondirectory.po
+++ b/mixedgroups/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/mixedgroups/locale/ca/fusiondirectory.po b/mixedgroups/locale/ca/fusiondirectory.po
index 73e1f57d501161dd57e721fa62b669ebc00dbee1..bd786f99bce557e0e222d24d872bc8a7e27d5b06 100644
--- a/mixedgroups/locale/ca/fusiondirectory.po
+++ b/mixedgroups/locale/ca/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
 "MIME-Version: 1.0\n"
diff --git a/mixedgroups/locale/cs_CZ/fusiondirectory.po b/mixedgroups/locale/cs_CZ/fusiondirectory.po
index 4cb7b885f23bad5e60fc88daacbbc22fc118b361..548a8f4897c0ea2d23465d83d23c43f1cdd1176e 100644
--- a/mixedgroups/locale/cs_CZ/fusiondirectory.po
+++ b/mixedgroups/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/mixedgroups/locale/de/fusiondirectory.po b/mixedgroups/locale/de/fusiondirectory.po
index 7f8a50a1aa9c7ec28c3a4c1dee5bdce563b717cb..ea9cba55cd318676addbdacb54ee754ad798df36 100644
--- a/mixedgroups/locale/de/fusiondirectory.po
+++ b/mixedgroups/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/mixedgroups/locale/el_GR/fusiondirectory.po b/mixedgroups/locale/el_GR/fusiondirectory.po
index 82481b6437921d219d29973d156fd987e8141ea6..ccaa824d0efece32d52ae54e06ebe36428574bcd 100644
--- a/mixedgroups/locale/el_GR/fusiondirectory.po
+++ b/mixedgroups/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/mixedgroups/locale/en/fusiondirectory.po b/mixedgroups/locale/en/fusiondirectory.po
index ac6bd8b0ea14dcc9d815cd7c31f5746c0b67dea2..1dc56430b1511d8e91cf15d8b7ad64bb76a9c654 100644
--- a/mixedgroups/locale/en/fusiondirectory.po
+++ b/mixedgroups/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -25,51 +25,51 @@ msgstr ""
 msgid "Posix group settings"
 msgstr ""
 
-#: admin/ogroups/mixedgroups/class_mixedGroup.inc:47
+#: admin/ogroups/mixedgroups/class_mixedGroup.inc:43
 msgid "Properties"
 msgstr ""
 
-#: admin/ogroups/mixedgroups/class_mixedGroup.inc:50
+#: admin/ogroups/mixedgroups/class_mixedGroup.inc:46
 msgid "Force GID"
 msgstr ""
 
-#: admin/ogroups/mixedgroups/class_mixedGroup.inc:50
+#: admin/ogroups/mixedgroups/class_mixedGroup.inc:46
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/ogroups/mixedgroups/class_mixedGroup.inc:54
-#: admin/ogroups/mixedgroups/class_mixedGroup.inc:124
+#: admin/ogroups/mixedgroups/class_mixedGroup.inc:50
+#: admin/ogroups/mixedgroups/class_mixedGroup.inc:120
 msgid "GID"
 msgstr ""
 
-#: admin/ogroups/mixedgroups/class_mixedGroup.inc:54
+#: admin/ogroups/mixedgroups/class_mixedGroup.inc:50
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/ogroups/mixedgroups/class_mixedGroup.inc:65
+#: admin/ogroups/mixedgroups/class_mixedGroup.inc:61
 msgid "System trust"
 msgstr ""
 
-#: admin/ogroups/mixedgroups/class_mixedGroup.inc:69
+#: admin/ogroups/mixedgroups/class_mixedGroup.inc:65
 msgid "Trust mode"
 msgstr ""
 
-#: admin/ogroups/mixedgroups/class_mixedGroup.inc:69
+#: admin/ogroups/mixedgroups/class_mixedGroup.inc:65
 msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: admin/ogroups/mixedgroups/class_mixedGroup.inc:73
+#: admin/ogroups/mixedgroups/class_mixedGroup.inc:69
 msgid "disabled"
 msgstr ""
 
-#: admin/ogroups/mixedgroups/class_mixedGroup.inc:73
+#: admin/ogroups/mixedgroups/class_mixedGroup.inc:69
 msgid "full access"
 msgstr ""
 
-#: admin/ogroups/mixedgroups/class_mixedGroup.inc:73
+#: admin/ogroups/mixedgroups/class_mixedGroup.inc:69
 msgid "allow access to these hosts"
 msgstr ""
 
-#: admin/ogroups/mixedgroups/class_mixedGroup.inc:76
+#: admin/ogroups/mixedgroups/class_mixedGroup.inc:72
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
diff --git a/mixedgroups/locale/es/fusiondirectory.po b/mixedgroups/locale/es/fusiondirectory.po
index 019f7dba5aa67032375de1c43e7d2a96729e818b..92f08816fdae064a87973a091adee930554c0ff8 100644
--- a/mixedgroups/locale/es/fusiondirectory.po
+++ b/mixedgroups/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/ogroups/mixedgroups/class_mixedGroup.inc:29
 msgid "Posix group"
diff --git a/mixedgroups/locale/es_CO/fusiondirectory.po b/mixedgroups/locale/es_CO/fusiondirectory.po
index c6e11d717bdc2d2ebbd726523c7c4a2caaf86078..65d7039b2ee64c942952e31e1d6df3a1418c59cb 100644
--- a/mixedgroups/locale/es_CO/fusiondirectory.po
+++ b/mixedgroups/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/ogroups/mixedgroups/class_mixedGroup.inc:29
 msgid "Posix group"
diff --git a/mixedgroups/locale/es_VE/fusiondirectory.po b/mixedgroups/locale/es_VE/fusiondirectory.po
index b1188c753110965edfb3992c4befb3a0bd0d8ee7..65b6738228110ddb8de5bf60f6526da5109447fe 100644
--- a/mixedgroups/locale/es_VE/fusiondirectory.po
+++ b/mixedgroups/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/ogroups/mixedgroups/class_mixedGroup.inc:29
 msgid "Posix group"
diff --git a/mixedgroups/locale/fa_IR/fusiondirectory.po b/mixedgroups/locale/fa_IR/fusiondirectory.po
index a6e7369544765b26256fa4555c3e71a64e0d254b..87661f0b7ba216362e4bf8cc2f9ab61044bd562d 100644
--- a/mixedgroups/locale/fa_IR/fusiondirectory.po
+++ b/mixedgroups/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/mixedgroups/locale/fi_FI/fusiondirectory.po b/mixedgroups/locale/fi_FI/fusiondirectory.po
index a6a1fde9e5b26fcf36c65aaed6f33ec3700466c3..1fe842d3d6ec254e6816dd43655a6ba53c612ffd 100644
--- a/mixedgroups/locale/fi_FI/fusiondirectory.po
+++ b/mixedgroups/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/mixedgroups/locale/fr/fusiondirectory.po b/mixedgroups/locale/fr/fusiondirectory.po
index 96d2134a7138d868e5c7cc64fff180ff908a6d7b..156d222068b127a42e7ebfd2c6930dada93c7cc6 100644
--- a/mixedgroups/locale/fr/fusiondirectory.po
+++ b/mixedgroups/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/ogroups/mixedgroups/class_mixedGroup.inc:29
 msgid "Posix group"
diff --git a/mixedgroups/locale/hu_HU/fusiondirectory.po b/mixedgroups/locale/hu_HU/fusiondirectory.po
index ba495f793172c808053e07fe4a81b2a10047fce0..98427bbf3f904d55f8617f1b40d9ebaa794bde4b 100644
--- a/mixedgroups/locale/hu_HU/fusiondirectory.po
+++ b/mixedgroups/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/mixedgroups/locale/id/fusiondirectory.po b/mixedgroups/locale/id/fusiondirectory.po
index 5d0f67557243f976d8b366a0d5056598bccf83d5..3fb488006d99ef32f54694d461e883e94fa745ad 100644
--- a/mixedgroups/locale/id/fusiondirectory.po
+++ b/mixedgroups/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/mixedgroups/locale/it_IT/fusiondirectory.po b/mixedgroups/locale/it_IT/fusiondirectory.po
index 776dfeac062c2f51a257790c10647b8ba1436643..3e8a2fba000a80d7c312881c5e6c7eb8bc1268df 100644
--- a/mixedgroups/locale/it_IT/fusiondirectory.po
+++ b/mixedgroups/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/ogroups/mixedgroups/class_mixedGroup.inc:29
 msgid "Posix group"
diff --git a/mixedgroups/locale/ja/fusiondirectory.po b/mixedgroups/locale/ja/fusiondirectory.po
index bd7491e0e4b5f1fc0053ef58fd4cc5f7eab05a50..f6cfa50e6360f0d2fbcde89ab3b78be8f40db529 100644
--- a/mixedgroups/locale/ja/fusiondirectory.po
+++ b/mixedgroups/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/mixedgroups/locale/ko/fusiondirectory.po b/mixedgroups/locale/ko/fusiondirectory.po
index 2f5e8d3d2f7c26a0f7701caf6c83f1fdbfe0574e..6ec8d66473689d4617b3dd31e78cad368bc42bc3 100644
--- a/mixedgroups/locale/ko/fusiondirectory.po
+++ b/mixedgroups/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/mixedgroups/locale/lv/fusiondirectory.po b/mixedgroups/locale/lv/fusiondirectory.po
index 859277882b909b36bded160c55a5b8ad0b14d05b..6d91c6588a082f4f01b288b3b22ce58b45e38e26 100644
--- a/mixedgroups/locale/lv/fusiondirectory.po
+++ b/mixedgroups/locale/lv/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
 "MIME-Version: 1.0\n"
diff --git a/mixedgroups/locale/nb/fusiondirectory.po b/mixedgroups/locale/nb/fusiondirectory.po
index e89967c982ce82e4f80c48635f5f21b4ffe680e2..39e6a19bf563d1984eec0982ae7df12d60feb918 100644
--- a/mixedgroups/locale/nb/fusiondirectory.po
+++ b/mixedgroups/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/mixedgroups/locale/nl/fusiondirectory.po b/mixedgroups/locale/nl/fusiondirectory.po
index 07b6f45a88f4e46943f3e2af7dbe091dbfec132c..352986a39ee9e5b5f6aa57a69d09357d0d547311 100644
--- a/mixedgroups/locale/nl/fusiondirectory.po
+++ b/mixedgroups/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/mixedgroups/locale/pl/fusiondirectory.po b/mixedgroups/locale/pl/fusiondirectory.po
index 4a2b8b242412ca6c10d89f1b058a70189a2da7b1..bddbb2a07018d50f6b2046843a260910a47e36d0 100644
--- a/mixedgroups/locale/pl/fusiondirectory.po
+++ b/mixedgroups/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/mixedgroups/locale/pt/fusiondirectory.po b/mixedgroups/locale/pt/fusiondirectory.po
index 195bb67711db96faeb918399981bcde054cbb9d0..068a7d2012b70ff00b6e0f67d03e752155ba698b 100644
--- a/mixedgroups/locale/pt/fusiondirectory.po
+++ b/mixedgroups/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/ogroups/mixedgroups/class_mixedGroup.inc:29
 msgid "Posix group"
diff --git a/mixedgroups/locale/pt_BR/fusiondirectory.po b/mixedgroups/locale/pt_BR/fusiondirectory.po
index 833b5c91ef90883bb7721d9e6d1f43da72c2c79e..c30b222179af175a3c15cf15a9c7109dc775bdb6 100644
--- a/mixedgroups/locale/pt_BR/fusiondirectory.po
+++ b/mixedgroups/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/ogroups/mixedgroups/class_mixedGroup.inc:29
 msgid "Posix group"
diff --git a/mixedgroups/locale/ru/fusiondirectory.po b/mixedgroups/locale/ru/fusiondirectory.po
index d250439fb54c560b5e05b2264d3e8005dfa389ac..020b7598d598ee38991f751e15b3ca6e3f3d3d68 100644
--- a/mixedgroups/locale/ru/fusiondirectory.po
+++ b/mixedgroups/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/mixedgroups/locale/ru@petr1708/fusiondirectory.po b/mixedgroups/locale/ru@petr1708/fusiondirectory.po
index 8da8f763e2589fd696d89b4c15de601af26b5044..a64e0eb391d9216edd26174aea6df5acd5908d0e 100644
--- a/mixedgroups/locale/ru@petr1708/fusiondirectory.po
+++ b/mixedgroups/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/mixedgroups/locale/sv/fusiondirectory.po b/mixedgroups/locale/sv/fusiondirectory.po
index 4de9f75678851c988b657ae94244918bc8a97c51..fe64ee1257ed849aaa365cbc3311a5dd26ffe2b6 100644
--- a/mixedgroups/locale/sv/fusiondirectory.po
+++ b/mixedgroups/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/mixedgroups/locale/tr_TR/fusiondirectory.po b/mixedgroups/locale/tr_TR/fusiondirectory.po
index bfbd2fbccf3a292fce151e6760853ace934e7a6a..60910969643d468aaa7c4a263048b8ef91002b33 100644
--- a/mixedgroups/locale/tr_TR/fusiondirectory.po
+++ b/mixedgroups/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/mixedgroups/locale/ug/fusiondirectory.po b/mixedgroups/locale/ug/fusiondirectory.po
index e6c9f2ea3e3f82921db6f973a000191d4aa75d81..a647c39796e4ad5e4d16f130cff4a5feebda77b3 100644
--- a/mixedgroups/locale/ug/fusiondirectory.po
+++ b/mixedgroups/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/ogroups/mixedgroups/class_mixedGroup.inc:29
 msgid "Posix group"
diff --git a/mixedgroups/locale/vi_VN/fusiondirectory.po b/mixedgroups/locale/vi_VN/fusiondirectory.po
index e431e26b696cfde27019dc1d55122399ef6236da..51a3518f69df232c17faafc9603e1421e2d377d2 100644
--- a/mixedgroups/locale/vi_VN/fusiondirectory.po
+++ b/mixedgroups/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/mixedgroups/locale/zh/fusiondirectory.po b/mixedgroups/locale/zh/fusiondirectory.po
index b2b392e3b717ed40fd2df695971a7f023a40b536..8466282c569081e27692b690fbb04234d113bbd2 100644
--- a/mixedgroups/locale/zh/fusiondirectory.po
+++ b/mixedgroups/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/mixedgroups/locale/zh_TW/fusiondirectory.po b/mixedgroups/locale/zh_TW/fusiondirectory.po
index ca35683c0876251ba7055bb92ed58c6e8cf77058..a2d91a48e2ccff8b93e86bb1bd5dd3a8687f1fc4 100644
--- a/mixedgroups/locale/zh_TW/fusiondirectory.po
+++ b/mixedgroups/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/nagios/config/nagios/class_nagiosConfig.inc b/nagios/config/nagios/class_nagiosConfig.inc
index 44bcc6599036847c3dd6af02e6c47a4d34ab0e98..9de25848fdc69c1f470328f3465dec0f2c6a1a61 100644
--- a/nagios/config/nagios/class_nagiosConfig.inc
+++ b/nagios/config/nagios/class_nagiosConfig.inc
@@ -20,35 +20,35 @@
 
 class nagiosConfig extends simplePlugin
 {
-  var $objectclasses  = array('fdNagiosPluginConf');
+  var $objectclasses  = ['fdNagiosPluginConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Nagios configuration'),
       'plDescription'   => _('FusionDirectory nagios plugin configuration'),
       'plSelfModify'    => FALSE,
-      'plCategory'      => array('configuration'),
-      'plObjectType'    => array('smallConfig'),
+      'plCategory'      => ['configuration'],
+      'plObjectType'    => ['smallConfig'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Nagios'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Lconf prefix'), _('Prefix used for lconf LDAP fields'),
             'fdLconfPrefix', TRUE,
             'lconf'
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/nagios/locale/af_ZA/fusiondirectory.po b/nagios/locale/af_ZA/fusiondirectory.po
index 279fbeaddb1928b2f5668ca2831d1a362c5bb404..ab5d3cd57b1a870aa920fc343088e9d11fbdc16d 100644
--- a/nagios/locale/af_ZA/fusiondirectory.po
+++ b/nagios/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/nagios/locale/ar/fusiondirectory.po b/nagios/locale/ar/fusiondirectory.po
index 38580ff78b3973a70673cbb12e9c9a078f876a11..a441046790c9eb7f9e8344c94674233f3832922e 100644
--- a/nagios/locale/ar/fusiondirectory.po
+++ b/nagios/locale/ar/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
 "MIME-Version: 1.0\n"
diff --git a/nagios/locale/ca/fusiondirectory.po b/nagios/locale/ca/fusiondirectory.po
index 82a2e28c386013122b8c94b089283344373bd091..d4f5ea221c910e5a394859a8769357f3dcc373bf 100644
--- a/nagios/locale/ca/fusiondirectory.po
+++ b/nagios/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/nagios/locale/cs_CZ/fusiondirectory.po b/nagios/locale/cs_CZ/fusiondirectory.po
index 72337b86e80b08212f9d43933c3767d8ddc4b79b..0eba9c3549ced79dda7445138cc051da9752f975 100644
--- a/nagios/locale/cs_CZ/fusiondirectory.po
+++ b/nagios/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/nagios/locale/de/fusiondirectory.po b/nagios/locale/de/fusiondirectory.po
index f4526851fe5cd16d06a6c13024e0ce39b046678c..42c0bba6613a3020d0e826538e30255c295c62de 100644
--- a/nagios/locale/de/fusiondirectory.po
+++ b/nagios/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/nagios/locale/el_GR/fusiondirectory.po b/nagios/locale/el_GR/fusiondirectory.po
index cb9335ea746cc31e2b7c831a98f85222177e69e7..d7674ba2a5806047a7e88557b39b0d42dbc777f2 100644
--- a/nagios/locale/el_GR/fusiondirectory.po
+++ b/nagios/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/nagios/locale/en/fusiondirectory.po b/nagios/locale/en/fusiondirectory.po
index e428efb368d17580e0da77fd0747ddfa74c6d2f9..a192cba33bcd84e810853c435c4bb2cf9a077460 100644
--- a/nagios/locale/en/fusiondirectory.po
+++ b/nagios/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,11 +17,27 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: personal/nagios/class_nagiosAccount.inc:40
+#: config/nagios/class_nagiosConfig.inc:28
+msgid "Nagios configuration"
+msgstr ""
+
+#: config/nagios/class_nagiosConfig.inc:29
+msgid "FusionDirectory nagios plugin configuration"
+msgstr ""
+
 #: config/nagios/class_nagiosConfig.inc:42
+#: personal/nagios/class_nagiosAccount.inc:40
 msgid "Nagios"
 msgstr ""
 
+#: config/nagios/class_nagiosConfig.inc:45
+msgid "Lconf prefix"
+msgstr ""
+
+#: config/nagios/class_nagiosConfig.inc:45
+msgid "Prefix used for lconf LDAP fields"
+msgstr ""
+
 #: personal/nagios/class_nagiosAccount.inc:41
 msgid "Nagios account settings"
 msgstr ""
@@ -77,19 +93,3 @@ msgstr ""
 #: personal/nagios/class_nagiosAccount.inc:99
 msgid "Host notification commands"
 msgstr ""
-
-#: config/nagios/class_nagiosConfig.inc:28
-msgid "Nagios configuration"
-msgstr ""
-
-#: config/nagios/class_nagiosConfig.inc:29
-msgid "FusionDirectory nagios plugin configuration"
-msgstr ""
-
-#: config/nagios/class_nagiosConfig.inc:45
-msgid "Lconf prefix"
-msgstr ""
-
-#: config/nagios/class_nagiosConfig.inc:45
-msgid "Prefix used for lconf LDAP fields"
-msgstr ""
diff --git a/nagios/locale/es/fusiondirectory.po b/nagios/locale/es/fusiondirectory.po
index de9aa2f84e81c1856ef1aa5e4a83bfe51db2a62d..a06fdcef2452c4ef4039173910bff1d0774c1b5e 100644
--- a/nagios/locale/es/fusiondirectory.po
+++ b/nagios/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/nagios/class_nagiosConfig.inc:28
 msgid "Nagios configuration"
diff --git a/nagios/locale/es_CO/fusiondirectory.po b/nagios/locale/es_CO/fusiondirectory.po
index 3386f2131ee4a6a95da4b738bf6e38f93085341d..9a455232682cb016624cc504a698b09711c1a375 100644
--- a/nagios/locale/es_CO/fusiondirectory.po
+++ b/nagios/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/nagios/class_nagiosConfig.inc:28
 msgid "Nagios configuration"
diff --git a/nagios/locale/es_VE/fusiondirectory.po b/nagios/locale/es_VE/fusiondirectory.po
index cb2e06d9fddbc2ad123f748fe02e55c0b2f12608..e9d117cb82be9f7fbd9aebddf3341e9bf63c2b60 100644
--- a/nagios/locale/es_VE/fusiondirectory.po
+++ b/nagios/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/nagios/class_nagiosConfig.inc:28
 msgid "Nagios configuration"
diff --git a/nagios/locale/fa_IR/fusiondirectory.po b/nagios/locale/fa_IR/fusiondirectory.po
index 9b66d99448313355e10380ace8dd1e142adab2fa..7c385b75fa06b2430574b23f08f3dfc7857f49bd 100644
--- a/nagios/locale/fa_IR/fusiondirectory.po
+++ b/nagios/locale/fa_IR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
diff --git a/nagios/locale/fi_FI/fusiondirectory.po b/nagios/locale/fi_FI/fusiondirectory.po
index 5cbb05bc208cbd729b894f3dea1089e9ab020b9b..505347bd438d35b1bf3fb322a352abd216348efc 100644
--- a/nagios/locale/fi_FI/fusiondirectory.po
+++ b/nagios/locale/fi_FI/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
 "MIME-Version: 1.0\n"
diff --git a/nagios/locale/fr/fusiondirectory.po b/nagios/locale/fr/fusiondirectory.po
index f9cc3c33b789f741213fb90389fc175d50294b69..b5bf890da03a965dc9a6dc57966844849b29ac89 100644
--- a/nagios/locale/fr/fusiondirectory.po
+++ b/nagios/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/nagios/class_nagiosConfig.inc:28
 msgid "Nagios configuration"
diff --git a/nagios/locale/hu_HU/fusiondirectory.po b/nagios/locale/hu_HU/fusiondirectory.po
index 5ee9612dc756ca7279704cbdd5dcada9d294e496..92bba6db96fb36a3817db2ed89a6f64c516a3aaa 100644
--- a/nagios/locale/hu_HU/fusiondirectory.po
+++ b/nagios/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/nagios/locale/id/fusiondirectory.po b/nagios/locale/id/fusiondirectory.po
index bb71971141cd0d7707794b8fe40af1dfe10a7109..bcd9783f618c4425dd101585bf1bb90f54c11b3c 100644
--- a/nagios/locale/id/fusiondirectory.po
+++ b/nagios/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/nagios/locale/it_IT/fusiondirectory.po b/nagios/locale/it_IT/fusiondirectory.po
index 30ad6495c3d1e575e4125f386252fb760dc3fc98..a3bf865a09297484ffb0f83a05fb7d060dd70c07 100644
--- a/nagios/locale/it_IT/fusiondirectory.po
+++ b/nagios/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/nagios/class_nagiosConfig.inc:28
 msgid "Nagios configuration"
diff --git a/nagios/locale/ja/fusiondirectory.po b/nagios/locale/ja/fusiondirectory.po
index 1b6c1f419ccbc634a585125d3baaa45dae5cbb5c..3ea1894d8bf6171ed18343e5b12ae6aaf1d0fd87 100644
--- a/nagios/locale/ja/fusiondirectory.po
+++ b/nagios/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/nagios/locale/ko/fusiondirectory.po b/nagios/locale/ko/fusiondirectory.po
index 2842adc41490d4044d7c2437903df1c6725d5032..e62614fd2d29e6ecea9d76ea1e981ab148848156 100644
--- a/nagios/locale/ko/fusiondirectory.po
+++ b/nagios/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/nagios/locale/lv/fusiondirectory.po b/nagios/locale/lv/fusiondirectory.po
index 4416472532b74fd0b824bd8bcec9d244689d119f..722c34ca693d1db26c882d840cfd5ee84150b0bb 100644
--- a/nagios/locale/lv/fusiondirectory.po
+++ b/nagios/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/nagios/locale/nb/fusiondirectory.po b/nagios/locale/nb/fusiondirectory.po
index d7166612f24b76eee662c14fd3101ab80337024c..290d17bf96663d5bdd81af318b6685bd02c49b9f 100644
--- a/nagios/locale/nb/fusiondirectory.po
+++ b/nagios/locale/nb/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
 "MIME-Version: 1.0\n"
diff --git a/nagios/locale/nl/fusiondirectory.po b/nagios/locale/nl/fusiondirectory.po
index affd48b188bd1fd0b6169e6777f6e452d7f51bd0..e34927cd4187bc0d58d71e52fc2a04071e5c29f1 100644
--- a/nagios/locale/nl/fusiondirectory.po
+++ b/nagios/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/nagios/locale/pl/fusiondirectory.po b/nagios/locale/pl/fusiondirectory.po
index 0e6bf907e1e06f38fab84b0eb7630825c455a472..381db7ae7268b227b48c7ba731c53a93067959a4 100644
--- a/nagios/locale/pl/fusiondirectory.po
+++ b/nagios/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/nagios/locale/pt/fusiondirectory.po b/nagios/locale/pt/fusiondirectory.po
index 2c4ad021b8a67c89c86a2c11d7a983c6a4bbd1ef..064b0f16b9b4caed8e0f273aec955d11e00015f4 100644
--- a/nagios/locale/pt/fusiondirectory.po
+++ b/nagios/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/nagios/class_nagiosConfig.inc:28
 msgid "Nagios configuration"
diff --git a/nagios/locale/pt_BR/fusiondirectory.po b/nagios/locale/pt_BR/fusiondirectory.po
index 282005333af1459a2a9153873009242a34af6d2e..981fa25c31724215dcae69f9e30f8464786bbcdd 100644
--- a/nagios/locale/pt_BR/fusiondirectory.po
+++ b/nagios/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/nagios/class_nagiosConfig.inc:28
 msgid "Nagios configuration"
diff --git a/nagios/locale/ru/fusiondirectory.po b/nagios/locale/ru/fusiondirectory.po
index 866fee17e1a7e09cedbee119d048280bd18dddcc..48fc71bbfe32bff175d7edab99d6370efd0f1484 100644
--- a/nagios/locale/ru/fusiondirectory.po
+++ b/nagios/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/nagios/locale/ru@petr1708/fusiondirectory.po b/nagios/locale/ru@petr1708/fusiondirectory.po
index 9a66778c5ab35aa3d624f3ecd26834cd4b0c785b..49653968570026ff74ccfb4bd9a1665d30fb3896 100644
--- a/nagios/locale/ru@petr1708/fusiondirectory.po
+++ b/nagios/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/nagios/locale/sv/fusiondirectory.po b/nagios/locale/sv/fusiondirectory.po
index 4c6dc6084d8db9576c8d0b6d6f11c008f8728f84..7e05e688104ae3b68968b8e59e48613f22fef6f3 100644
--- a/nagios/locale/sv/fusiondirectory.po
+++ b/nagios/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/nagios/locale/tr_TR/fusiondirectory.po b/nagios/locale/tr_TR/fusiondirectory.po
index e942183b5b20f268b847eacd95e0cc2243876a4b..482b18789dcbef1b8280e19afc26fe457656f3ad 100644
--- a/nagios/locale/tr_TR/fusiondirectory.po
+++ b/nagios/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/nagios/locale/ug/fusiondirectory.po b/nagios/locale/ug/fusiondirectory.po
index c3ab37bc2fb0c9774e8a1f4f3c49d03f33689d47..0e4f3f26db86a58b28f96dd78b76a3ecbc0ddabd 100644
--- a/nagios/locale/ug/fusiondirectory.po
+++ b/nagios/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: config/nagios/class_nagiosConfig.inc:28
 msgid "Nagios configuration"
diff --git a/nagios/locale/vi_VN/fusiondirectory.po b/nagios/locale/vi_VN/fusiondirectory.po
index 048ef9fc72d99869d3c32e661baa11719bf2fff2..cf5fc956d373593970861a0d5a6cbc427e7881e0 100644
--- a/nagios/locale/vi_VN/fusiondirectory.po
+++ b/nagios/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/nagios/locale/zh/fusiondirectory.po b/nagios/locale/zh/fusiondirectory.po
index c631853db857e82d33ea434ace65ffa49a97de2f..8568bf40c25eba5d8c337dc6d586d270b2c3c6f0 100644
--- a/nagios/locale/zh/fusiondirectory.po
+++ b/nagios/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/nagios/locale/zh_TW/fusiondirectory.po b/nagios/locale/zh_TW/fusiondirectory.po
index 3317c468c03f903c6c0b31f9a6597ed98cbe2627..37ed05383d69468e024867d5470f5aa6d80f4831 100644
--- a/nagios/locale/zh_TW/fusiondirectory.po
+++ b/nagios/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/nagios/personal/nagios/class_nagiosAccount.inc b/nagios/personal/nagios/class_nagiosAccount.inc
index be94fb82c2ff8198ab258695b063878ee81429fc..5c032f75c4772e710c61fdacad2950907f1ae4e9 100644
--- a/nagios/personal/nagios/class_nagiosAccount.inc
+++ b/nagios/personal/nagios/class_nagiosAccount.inc
@@ -30,23 +30,23 @@
 
 class nagiosAccount extends simplePlugin
 {
-  var $objectclasses  = array('lconfContact');
+  var $objectclasses  = ['lconfContact'];
 
   var $displayHeader  = TRUE;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Nagios'),
       'plDescription' => _('Nagios account settings'),
       'plIcon'        => 'geticon.php?context=applications&icon=nagios&size=48',
       'plSmallIcon'   => 'geticon.php?context=applications&icon=nagios&size=16',
       'plSelfModify'  => TRUE,
       'plPriority'    => 7,
-      'plObjectType'  => array('user'),
+      'plObjectType'  => ['user'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   /*!
@@ -55,10 +55,10 @@ class nagiosAccount extends simplePlugin
   static function getAttributesInfo ()
   {
     $prefix = static::get_prefix();
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Nagios Account'),
-        'attrs' => array(
+        'attrs' => [
           new StringAttribute(
             _('Alias'), _('Name of the nagios alias'),
             $prefix.'Alias', TRUE
@@ -67,25 +67,25 @@ class nagiosAccount extends simplePlugin
             _('Mail address'), _('Email of the nagios alias'),
             $prefix.'Email', TRUE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Host notification period'), _('Host notification period'),
             $prefix.'ContactHostNotificationPeriod', FALSE,
-            array('24x7','24x5','8x5')
+            ['24x7','24x5','8x5']
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Service notification period'), _('Service notification period'),
             $prefix.'ContactServiceNotificationPeriod', FALSE,
-            array('24x7','24x5','8x5')
+            ['24x7','24x5','8x5']
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Service notification options'), _('Service notification options'),
             $prefix.'ContactServiceNotificationOptions', FALSE,
-            array('w,u,c,r,f','w,u,c,r','w,u,c','c,w','n')
+            ['w,u,c,r,f','w,u,c,r','w,u,c','c,w','n']
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Host notification options'), _('Host notification options'),
             $prefix.'ContactHostNotificationOptions', FALSE,
-            array('d,u,r,f','d,u,r','d,u','n')
+            ['d,u,r,f','d,u,r','d,u','n']
           ),
           new StringAttribute(
             _('Pager'), _($prefix.' Pager'),
@@ -99,12 +99,12 @@ class nagiosAccount extends simplePlugin
             _('Host notification commands'), _('Host notification commands'),
             $prefix.'ContactHostNotificationCommands', FALSE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
-  static function get_prefix()
+  static function get_prefix ()
   {
     global $config;
     return $config->get_cfg_value('lconfPrefix', 'lconf');
@@ -113,7 +113,7 @@ class nagiosAccount extends simplePlugin
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
   {
     $prefix = static::get_prefix();
-    $this->objectclasses = array($prefix.'Contact');
+    $this->objectclasses = [$prefix.'Contact'];
     parent::__construct($dn, $object, $parent, $mainTab);
   }
 }
diff --git a/netgroups/admin/netgroups/class_netgroup.inc b/netgroups/admin/netgroups/class_netgroup.inc
index 12b5c0f9d0e3d195d09c6bf030d93b8f7e149ba5..329c9b7d3375a4cc44b4c71844c06cf233c83314 100644
--- a/netgroups/admin/netgroups/class_netgroup.inc
+++ b/netgroups/admin/netgroups/class_netgroup.inc
@@ -36,39 +36,39 @@ class CnNetgroupsAttribute extends DialogAttribute
   {
     $cns    = $this->getValue();
     $cns[]  = $this->plugin->cn;
-    return array('cn' => $cns);
+    return ['cn' => $cns];
   }
 }
 
 class netgroup extends simplePlugin
 {
-  var $objectclasses  = array("top", "nisNetgroup");
+  var $objectclasses  = ["top", "nisNetgroup"];
   var $mainTab        = TRUE;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Netgroup'),
       'plDescription' => _('NIS Netgroup settings'),
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array('netgroup' => array(
+      'plObjectType'  => ['netgroup' => [
         'name'    => _('NIS Netgroup'),
         'filter'  => 'objectClass=nisNetgroup',
         'ou'      => get_ou('netgroupRDN'),
         'icon'    => 'geticon.php?context=applications&icon=netgroups&size=16'
-      )),
+      ]],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Information'),
-        'attrs' => array(
+        'attrs' => [
           new HostNameAttribute(
             _('Name'), _('Name of this NIS netgroup'), 'cn'
           ),
@@ -76,36 +76,36 @@ class netgroup extends simplePlugin
             _('Description'), _('Description of this NIS netgroup'), 'description'
           ),
           new BaseSelectorAttribute(get_ou('netgroupRDN'))
-        )
-      ),
-      'users' => array(
+        ]
+      ],
+      'users' => [
         'name'  => _('User members'),
         'icon'  => 'geticon.php?context=types&icon=user&size=16',
-        'attrs' => array(
+        'attrs' => [
           new SetAttribute(
             new StringAttribute('nisNetgroupTriple', '', 'nisNetgroupTriple')
           ),
           new UsersAttribute(
             '', _('NIS netgroup members'), 'memberUsers',
-            FALSE, array(), 'dn', 'uid'
+            FALSE, [], 'dn', 'uid'
           ),
-        )
-      ),
-      'systems' => array(
+        ]
+      ],
+      'systems' => [
         'name'  => _('System members'),
         'icon'  => 'geticon.php?context=devices&icon=server&size=16',
-        'attrs' => array(
+        'attrs' => [
           new SystemsAttribute('', _('NIS netgroup members'), 'memberSystems', FALSE),
-        )
-      ),
-      'netgroups' => array(
+        ]
+      ],
+      'netgroups' => [
         'name'  => _('Netgroup members'),
         'icon'  => 'geticon.php?context=applications&icon=netgroups&size=16',
-        'attrs' => array(
+        'attrs' => [
           new CnNetgroupsAttribute('', _('NIS netgroup members'), 'memberNisNetgroup'),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -119,7 +119,7 @@ class netgroup extends simplePlugin
     $this->attributesAccess['memberSystems']->setInLdap(FALSE);
     $triples      = $this->attributesAccess['nisNetgroupTriple']->getValue();
     $usersfilter  = '(|';
-    $cns          = array();
+    $cns          = [];
     foreach ($triples as $triple) {
       if (preg_match('/^\(([^,]*),([^,]*),[^)]*\)$/', $triple, $matches)) {
         if ($matches[1] != "") {
@@ -133,8 +133,8 @@ class netgroup extends simplePlugin
 
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(&(objectClass=posixAccount)'.$usersfilter.')', array('uid'));
-    $dns = array();
+    $ldap->search('(&(objectClass=posixAccount)'.$usersfilter.')', ['uid']);
+    $dns = [];
     while ($attrs = $ldap->fetch()) {
       $dns[] = $attrs['dn'];
     }
@@ -146,7 +146,7 @@ class netgroup extends simplePlugin
   {
     $memberUsers    = $this->attributesAccess['memberUsers']->getDisplayValues();
     $memberSystems  = $this->memberSystems;
-    $triples = array();
+    $triples = [];
 
     foreach ($memberUsers as $uid) {
       $triples[] = '(,'.$uid.',)';
diff --git a/netgroups/admin/netgroups/class_netgroupManagement.inc b/netgroups/admin/netgroups/class_netgroupManagement.inc
index 388ec600f6e11d74ed5cb8c47562731250bbfd4d..0b463c3af09b31608a2f950521ba6c3357b2cf8c 100644
--- a/netgroups/admin/netgroups/class_netgroupManagement.inc
+++ b/netgroups/admin/netgroups/class_netgroupManagement.inc
@@ -22,24 +22,24 @@
 class netgroupManagement extends simpleManagement
 {
   // Tab definition
-  protected $objectTypes  = array('netgroup');
+  protected $objectTypes  = ['netgroup'];
 
   protected $departmentBrowser      = TRUE;
   protected $departmentRootVisible  = FALSE;
   protected $baseMode               = TRUE;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('NIS Netgroups'),
       'plDescription' => _('NIS Netgroup management'),
       'plIcon'        => 'geticon.php?context=applications&icon=netgroups&size=48',
       'plSection'     => 'accounts',
       'plPriority'    => 25,
-      'plManages'     => array('netgroup'),
+      'plManages'     => ['netgroup'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 }
 
diff --git a/netgroups/admin/netgroups/memberNisnetgroupSelect/class_memberNisnetgroupSelect.inc b/netgroups/admin/netgroups/memberNisnetgroupSelect/class_memberNisnetgroupSelect.inc
index fd455f5e41b93238fbd4e2579939231e71d93e74..a35ac0b3d62e05a7d85982a198b941416883d396 100644
--- a/netgroups/admin/netgroups/memberNisnetgroupSelect/class_memberNisnetgroupSelect.inc
+++ b/netgroups/admin/netgroups/memberNisnetgroupSelect/class_memberNisnetgroupSelect.inc
@@ -21,6 +21,6 @@
 
 class memberNisnetgroupSelect extends simpleSelectManagement
 {
-  protected $objectTypes = array('netgroup');
+  protected $objectTypes = ['netgroup'];
 }
 ?>
diff --git a/netgroups/admin/systems/netgroups/class_netgroupSystem.inc b/netgroups/admin/systems/netgroups/class_netgroupSystem.inc
index e6549ca2f43db3140bf7138acf6cda34b89fcb04..380e0dfe135d45905ad663f779b05ce3d6e69f27 100644
--- a/netgroups/admin/systems/netgroups/class_netgroupSystem.inc
+++ b/netgroups/admin/systems/netgroups/class_netgroupSystem.inc
@@ -21,24 +21,24 @@
 class netgroupSystem extends netgroupMembership {
   protected static $id_attr = 'cn';
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('NIS Netgroup'),
       'plDescription'   => _('NIS Netgroup member'),
       'plSelfModify'    => FALSE,
       'plPriority'      => 3,
-      'plObjectType'    => array('workstation','terminal','server','printer'),
+      'plObjectType'    => ['workstation','terminal','server','printer'],
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
-  protected function triple_mask()
+  protected function triple_mask ()
   {
     return "/^\(".$this->old_id.",\-?,\S*\)$/";
   }
 
-  protected function triple_data()
+  protected function triple_data ()
   {
     return '('.$this->id.',,)';
   }
diff --git a/netgroups/config/netgroups/class_netgroupConfig.inc b/netgroups/config/netgroups/class_netgroupConfig.inc
index feae549ff7accc1555a2115a4ff032be48e18610..142358cb1299a961548ea03d3730849583edb259 100644
--- a/netgroups/config/netgroups/class_netgroupConfig.inc
+++ b/netgroups/config/netgroups/class_netgroupConfig.inc
@@ -20,35 +20,35 @@
 
 class netgroupConfig extends simplePlugin
 {
-  var $objectclasses  = array('fdNetgroupPluginConf');
+  var $objectclasses  = ['fdNetgroupPluginConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Netgroup configuration'),
       'plDescription'   => _('FusionDirectory netgroup plugin configuration'),
       'plSelfModify'    => FALSE,
-      'plCategory'      => array('configuration'),
-      'plObjectType'    => array('smallConfig'),
+      'plCategory'      => ['configuration'],
+      'plObjectType'    => ['smallConfig'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Netgroup'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Netgroup RDN'), _('Branch in which netgroups will be stored'),
             'fdNetgroupRDN', TRUE,
             'ou=netgroups'
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/netgroups/locale/af_ZA/fusiondirectory.po b/netgroups/locale/af_ZA/fusiondirectory.po
index 4061e551aeca5d844a00b2a02c6957d8937fae7c..3eac7a7e132d96f97150ef27d5e25cc27cbf9239 100644
--- a/netgroups/locale/af_ZA/fusiondirectory.po
+++ b/netgroups/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/netgroups/locale/ar/fusiondirectory.po b/netgroups/locale/ar/fusiondirectory.po
index 3f19f2a56b2cf04ad4acdac198fb7a151a58eb76..89b5bce97ddae29fd5291930d1396a1a8b3672df 100644
--- a/netgroups/locale/ar/fusiondirectory.po
+++ b/netgroups/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/netgroups/locale/ca/fusiondirectory.po b/netgroups/locale/ca/fusiondirectory.po
index 738f57eff72f0648476679f3a5f2108e6351c8db..a318376f25847574e2ba278f874c7a82f0515de8 100644
--- a/netgroups/locale/ca/fusiondirectory.po
+++ b/netgroups/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/netgroups/locale/cs_CZ/fusiondirectory.po b/netgroups/locale/cs_CZ/fusiondirectory.po
index 057b74ae783e3817cc17acba6f2d9c3a4a4d55d1..3bd85cb81cb558ab0eff293f8201164bcf0f4b2e 100644
--- a/netgroups/locale/cs_CZ/fusiondirectory.po
+++ b/netgroups/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/netgroups/locale/de/fusiondirectory.po b/netgroups/locale/de/fusiondirectory.po
index 160fca5d4c96f17fa401f5d2a2854f2c2ef00e52..8c12249a0aeaa0b9ba03b11ef31438f1832b5fc9 100644
--- a/netgroups/locale/de/fusiondirectory.po
+++ b/netgroups/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/netgroups/locale/el_GR/fusiondirectory.po b/netgroups/locale/el_GR/fusiondirectory.po
index 6387706b3fa7586601afb5e9184cd0791399ae88..05022eb5865bbade5f16ed7c009aa53c99e2f825 100644
--- a/netgroups/locale/el_GR/fusiondirectory.po
+++ b/netgroups/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/netgroups/locale/en/fusiondirectory.po b/netgroups/locale/en/fusiondirectory.po
index 3062a6bc14f853c9d5963626a6199b4caf5979b5..65cb25331727b4734905a1ee017cf612e7346dad 100644
--- a/netgroups/locale/en/fusiondirectory.po
+++ b/netgroups/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,25 +17,6 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: personal/netgroups/class_netgroupMembership.inc:43
-#: admin/netgroups/class_netgroup.inc:54
-#: admin/systems/netgroups/class_netgroupSystem.inc:26
-msgid "NIS Netgroup"
-msgstr ""
-
-#: personal/netgroups/class_netgroupMembership.inc:44
-#: admin/systems/netgroups/class_netgroupSystem.inc:27
-msgid "NIS Netgroup member"
-msgstr ""
-
-#: personal/netgroups/class_netgroupMembership.inc:60
-msgid "Member of the following NIS Netgroups  "
-msgstr ""
-
-#: personal/netgroups/class_netgroupMembership.inc:63
-msgid "NIS netgroup membership"
-msgstr ""
-
 #: config/netgroups/class_netgroupConfig.inc:28
 msgid "Netgroup configuration"
 msgstr ""
@@ -45,7 +26,7 @@ msgid "FusionDirectory netgroup plugin configuration"
 msgstr ""
 
 #: config/netgroups/class_netgroupConfig.inc:42
-#: admin/netgroups/class_netgroup.inc:50
+#: admin/netgroups/class_netgroup.inc:51
 msgid "Netgroup"
 msgstr ""
 
@@ -57,51 +38,70 @@ msgstr ""
 msgid "Branch in which netgroups will be stored"
 msgstr ""
 
-#: admin/netgroups/class_netgroup.inc:51
+#: admin/systems/netgroups/class_netgroupSystem.inc:27
+#: admin/netgroups/class_netgroup.inc:55
+#: personal/netgroups/class_netgroupMembership.inc:43
+msgid "NIS Netgroup"
+msgstr ""
+
+#: admin/systems/netgroups/class_netgroupSystem.inc:28
+#: personal/netgroups/class_netgroupMembership.inc:44
+msgid "NIS Netgroup member"
+msgstr ""
+
+#: admin/netgroups/class_netgroupManagement.inc:34
+msgid "NIS Netgroups"
+msgstr ""
+
+#: admin/netgroups/class_netgroupManagement.inc:35
+msgid "NIS Netgroup management"
+msgstr ""
+
+#: admin/netgroups/class_netgroup.inc:52
 msgid "NIS Netgroup settings"
 msgstr ""
 
-#: admin/netgroups/class_netgroup.inc:69
+#: admin/netgroups/class_netgroup.inc:70
 msgid "Information"
 msgstr ""
 
-#: admin/netgroups/class_netgroup.inc:72
+#: admin/netgroups/class_netgroup.inc:73
 msgid "Name"
 msgstr ""
 
-#: admin/netgroups/class_netgroup.inc:72
+#: admin/netgroups/class_netgroup.inc:73
 msgid "Name of this NIS netgroup"
 msgstr ""
 
-#: admin/netgroups/class_netgroup.inc:75
+#: admin/netgroups/class_netgroup.inc:76
 msgid "Description"
 msgstr ""
 
-#: admin/netgroups/class_netgroup.inc:75
+#: admin/netgroups/class_netgroup.inc:76
 msgid "Description of this NIS netgroup"
 msgstr ""
 
-#: admin/netgroups/class_netgroup.inc:81
+#: admin/netgroups/class_netgroup.inc:82
 msgid "User members"
 msgstr ""
 
-#: admin/netgroups/class_netgroup.inc:88 admin/netgroups/class_netgroup.inc:97
-#: admin/netgroups/class_netgroup.inc:104
+#: admin/netgroups/class_netgroup.inc:89 admin/netgroups/class_netgroup.inc:98
+#: admin/netgroups/class_netgroup.inc:105
 msgid "NIS netgroup members"
 msgstr ""
 
-#: admin/netgroups/class_netgroup.inc:94
+#: admin/netgroups/class_netgroup.inc:95
 msgid "System members"
 msgstr ""
 
-#: admin/netgroups/class_netgroup.inc:101
+#: admin/netgroups/class_netgroup.inc:102
 msgid "Netgroup members"
 msgstr ""
 
-#: admin/netgroups/class_netgroupManagement.inc:34
-msgid "NIS Netgroups"
+#: personal/netgroups/class_netgroupMembership.inc:60
+msgid "Member of the following NIS Netgroups  "
 msgstr ""
 
-#: admin/netgroups/class_netgroupManagement.inc:35
-msgid "NIS Netgroup management"
+#: personal/netgroups/class_netgroupMembership.inc:63
+msgid "NIS netgroup membership"
 msgstr ""
diff --git a/netgroups/locale/es/fusiondirectory.po b/netgroups/locale/es/fusiondirectory.po
index f835d9dd5f8d8c94771d9a110189ad24743e5e9d..ec67792d3f5515699950927fad00a7a1d383d9ce 100644
--- a/netgroups/locale/es/fusiondirectory.po
+++ b/netgroups/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/netgroups/class_netgroupManagement.inc:34
 msgid "NIS Netgroups"
diff --git a/netgroups/locale/es_CO/fusiondirectory.po b/netgroups/locale/es_CO/fusiondirectory.po
index 8a659d93b593347149d907eb788899fc8b34b930..e87c97c4c56238d0b1e96d0627bc97338ff4aa27 100644
--- a/netgroups/locale/es_CO/fusiondirectory.po
+++ b/netgroups/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/netgroups/class_netgroupManagement.inc:34
 msgid "NIS Netgroups"
diff --git a/netgroups/locale/es_VE/fusiondirectory.po b/netgroups/locale/es_VE/fusiondirectory.po
index 2248db9d6dfc6585b2fc5bdac627d8f81304b27c..5580c2665ce1e3dec86a87bb423e0b4f9c60953e 100644
--- a/netgroups/locale/es_VE/fusiondirectory.po
+++ b/netgroups/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/netgroups/class_netgroupManagement.inc:34
 msgid "NIS Netgroups"
diff --git a/netgroups/locale/fa_IR/fusiondirectory.po b/netgroups/locale/fa_IR/fusiondirectory.po
index 0c855161fd64978053b82d05b4977bb922c223ef..25cc7bf1eef42ec3110c9ad659e8446aa479a9df 100644
--- a/netgroups/locale/fa_IR/fusiondirectory.po
+++ b/netgroups/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/netgroups/locale/fi_FI/fusiondirectory.po b/netgroups/locale/fi_FI/fusiondirectory.po
index 12a649a1512157e67c21d28dd0dd5161f0908f98..c6d75c837f849c1e93e016df407e31d215e5cd50 100644
--- a/netgroups/locale/fi_FI/fusiondirectory.po
+++ b/netgroups/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/netgroups/locale/fr/fusiondirectory.po b/netgroups/locale/fr/fusiondirectory.po
index f3f0333db622189f63b88faa10c4fa31f9d2eb48..bf9f35c784db3c1c3a5081b047666dce64ddd896 100644
--- a/netgroups/locale/fr/fusiondirectory.po
+++ b/netgroups/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/netgroups/class_netgroupManagement.inc:34
 msgid "NIS Netgroups"
diff --git a/netgroups/locale/hu_HU/fusiondirectory.po b/netgroups/locale/hu_HU/fusiondirectory.po
index f16dab7626fa556342fde3b2e8fa23433765c408..7185a5aa0ee47183505d2ee1e6ea1c6e0fac6aef 100644
--- a/netgroups/locale/hu_HU/fusiondirectory.po
+++ b/netgroups/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
diff --git a/netgroups/locale/id/fusiondirectory.po b/netgroups/locale/id/fusiondirectory.po
index 6740fa2e1ba5785f2831812e4a4abf2d947527f6..9a5b056b663372590eab6ed7b8247939018e1847 100644
--- a/netgroups/locale/id/fusiondirectory.po
+++ b/netgroups/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/netgroups/locale/it_IT/fusiondirectory.po b/netgroups/locale/it_IT/fusiondirectory.po
index 5580a2540f8f924042e741954374d88fc72d3f21..1f5b517bb39673cd23fd48bc124fd2d127bd5893 100644
--- a/netgroups/locale/it_IT/fusiondirectory.po
+++ b/netgroups/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/netgroups/class_netgroupManagement.inc:34
 msgid "NIS Netgroups"
diff --git a/netgroups/locale/ja/fusiondirectory.po b/netgroups/locale/ja/fusiondirectory.po
index f4a3e62806f7b5b94fde8ce86340df4a9d936905..dc5ea97a3c1511a6b96b7a7aca47cf02a0fc3fee 100644
--- a/netgroups/locale/ja/fusiondirectory.po
+++ b/netgroups/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/netgroups/locale/ko/fusiondirectory.po b/netgroups/locale/ko/fusiondirectory.po
index 4a330239b77231685e72e9743708da61c360cf92..c849e7e15e5d04ec6cfc10de8e25caeaac8264e1 100644
--- a/netgroups/locale/ko/fusiondirectory.po
+++ b/netgroups/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/netgroups/locale/lv/fusiondirectory.po b/netgroups/locale/lv/fusiondirectory.po
index fe18fa04f8b9eb7182d20d2977857cbf3ba384c8..97f1171a0ae479a177d3244cae486f4f2887c3af 100644
--- a/netgroups/locale/lv/fusiondirectory.po
+++ b/netgroups/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/netgroups/locale/nb/fusiondirectory.po b/netgroups/locale/nb/fusiondirectory.po
index df52343e578a4ec5511b64ba89f97de2c3bffb27..1a6a1dc78aec10243f3ef3903ec4656d8e7d459a 100644
--- a/netgroups/locale/nb/fusiondirectory.po
+++ b/netgroups/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/netgroups/locale/nl/fusiondirectory.po b/netgroups/locale/nl/fusiondirectory.po
index 54baf8a6e8ad3d89fe922767245cc7631a91cd7e..945f449e62dd75fba747175c8945ff62e4733d1a 100644
--- a/netgroups/locale/nl/fusiondirectory.po
+++ b/netgroups/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/netgroups/locale/pl/fusiondirectory.po b/netgroups/locale/pl/fusiondirectory.po
index 0a48247df7fedd539380eae17f26e113f9ad3b16..78bade461b1343d46caaa0abb1f19a31c36cc98c 100644
--- a/netgroups/locale/pl/fusiondirectory.po
+++ b/netgroups/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/netgroups/locale/pt/fusiondirectory.po b/netgroups/locale/pt/fusiondirectory.po
index abe9743048ca11a7a05755ccaccbfd1b54b7be61..3f6eff8879ea786ae028d263c26e48b49f65cf5c 100644
--- a/netgroups/locale/pt/fusiondirectory.po
+++ b/netgroups/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/netgroups/class_netgroupManagement.inc:34
 msgid "NIS Netgroups"
diff --git a/netgroups/locale/pt_BR/fusiondirectory.po b/netgroups/locale/pt_BR/fusiondirectory.po
index bb8a05b513fe8d234ea65460b59379e1386ba5be..c70e2de5b2dc80c20f48887b489c3a4c92c2de76 100644
--- a/netgroups/locale/pt_BR/fusiondirectory.po
+++ b/netgroups/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/netgroups/class_netgroupManagement.inc:34
 msgid "NIS Netgroups"
diff --git a/netgroups/locale/ru/fusiondirectory.po b/netgroups/locale/ru/fusiondirectory.po
index eba4fd743579ba1bf6eda8c30c17e85a9273e36d..87c1dcb398d13f1a9bb7707ec32dba76cb76032d 100644
--- a/netgroups/locale/ru/fusiondirectory.po
+++ b/netgroups/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/netgroups/locale/ru@petr1708/fusiondirectory.po b/netgroups/locale/ru@petr1708/fusiondirectory.po
index 0a13f4d18af93a591771c1b7ac9d07f80e3c4653..3d204c69043a8aeed00591e0d8e165398d0cba97 100644
--- a/netgroups/locale/ru@petr1708/fusiondirectory.po
+++ b/netgroups/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/netgroups/locale/sv/fusiondirectory.po b/netgroups/locale/sv/fusiondirectory.po
index e397ee1064d3b04586f9e3ea9971f7486a17df1b..d57a71a84fdff7befacb0b32d0c9d491fa49094e 100644
--- a/netgroups/locale/sv/fusiondirectory.po
+++ b/netgroups/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/netgroups/locale/tr_TR/fusiondirectory.po b/netgroups/locale/tr_TR/fusiondirectory.po
index 3971dd99a66433d2b6812483098323ffd5803add..e0dcacb10ba1f5452b51b520251d1ed419d9d47b 100644
--- a/netgroups/locale/tr_TR/fusiondirectory.po
+++ b/netgroups/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/netgroups/locale/ug/fusiondirectory.po b/netgroups/locale/ug/fusiondirectory.po
index 3363adb02111ea7e3abdc17101b295b3457539f6..9493f206141d553884ba5bf6ccaf16f7255b329a 100644
--- a/netgroups/locale/ug/fusiondirectory.po
+++ b/netgroups/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/netgroups/class_netgroupManagement.inc:34
 msgid "NIS Netgroups"
diff --git a/netgroups/locale/vi_VN/fusiondirectory.po b/netgroups/locale/vi_VN/fusiondirectory.po
index 837ea5242e48f95fc45d9c599a7b7e350d0f21cd..f6cc36294d97aaff477e918cf42dc6e09bd40332 100644
--- a/netgroups/locale/vi_VN/fusiondirectory.po
+++ b/netgroups/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/netgroups/locale/zh/fusiondirectory.po b/netgroups/locale/zh/fusiondirectory.po
index f1a19271c85119305e7d7e56b65311e3643deb63..ce92bec9142ce99ee9210ccc24a7858b6bd748fc 100644
--- a/netgroups/locale/zh/fusiondirectory.po
+++ b/netgroups/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/netgroups/locale/zh_TW/fusiondirectory.po b/netgroups/locale/zh_TW/fusiondirectory.po
index c04f6960e3e8145fedd8d2c1671d40c5d73cbb1b..11890e13e07f30562272bb31a58114f2cddf663b 100644
--- a/netgroups/locale/zh_TW/fusiondirectory.po
+++ b/netgroups/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:15+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/netgroups/personal/netgroups/class_netgroupMembership.inc b/netgroups/personal/netgroups/class_netgroupMembership.inc
index cfe93611f1264f0e7b98f07e4ddf8dc63e286ec2..3cc0bb71b463f4e52aa9836f5ee6ac254fac55ea 100644
--- a/netgroups/personal/netgroups/class_netgroupMembership.inc
+++ b/netgroups/personal/netgroups/class_netgroupMembership.inc
@@ -32,38 +32,38 @@ class NetgroupsAttribute extends GroupsAttribute
 
 class netgroupMembership extends simplePlugin {
   var $displayHeader = TRUE;
-  var $objectclasses = array("whatever");
+  var $objectclasses = ["whatever"];
   var $id;
   var $old_id;
   protected static $id_attr = 'uid';
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('NIS Netgroup'),
       'plDescription'   => _('NIS Netgroup member'),
       'plIcon'          => 'geticon.php?context=applications&icon=netgroups&size=48',
       'plSmallIcon'     => 'geticon.php?context=applications&icon=netgroups&size=16',
       'plSelfModify'    => FALSE,
       'plPriority'      => 13,
-      'plObjectType'    => array('user'),
+      'plObjectType'    => ['user'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
-    return array(
-      'groups' => array(
+    return [
+      'groups' => [
         'name'  => _('Member of the following NIS Netgroups  '),
         'icon'  => 'geticon.php?context=applications&icon=netgroups&size=16',
-        'attrs' => array(
+        'attrs' => [
           new NetgroupsAttribute('', _('NIS netgroup membership'), 'nisMembership', TRUE)
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -71,13 +71,13 @@ class netgroupMembership extends simplePlugin {
     global $config;
     parent::__construct($dn, $object, $parent, $mainTab);
 
-    $groupMembership = array();
+    $groupMembership = [];
 
     /* Groups handling */
     if ($this->dn != 'new') {
       $ldap = $config->get_ldap_link();
       $ldap->cd($config->current['BASE']);
-      $ldap->search('(objectClass=nisNetgroup)', array('cn', 'nisNetgroupTriple'));
+      $ldap->search('(objectClass=nisNetgroup)', ['cn', 'nisNetgroupTriple']);
       while ($attrs = $ldap->fetch()) {
         if (isset($attrs['nisNetgroupTriple'])) {
           foreach ($attrs['nisNetgroupTriple'] as $val) {
@@ -100,17 +100,17 @@ class netgroupMembership extends simplePlugin {
     $this->attributesAccess['nisMembership']->setInitialValue(array_keys($groupMembership));
   }
 
-  protected function triple_mask()
+  protected function triple_mask ()
   {
     return "/^\(\-?,".$this->old_id.",\S*\)$/";
   }
 
-  protected function triple_data()
+  protected function triple_data ()
   {
     return '(,'.$this->id.',)';
   }
 
-  protected function update_id()
+  protected function update_id ()
   {
     $class    = get_class($this);
     $id_attr  = $class::$id_attr;
@@ -126,7 +126,7 @@ class netgroupMembership extends simplePlugin {
     }
   }
 
-  function is_this_account($attrs)
+  function is_this_account ($attrs)
   {
     global $config;
     $class    = get_class($this);
@@ -136,7 +136,7 @@ class netgroupMembership extends simplePlugin {
       $this->old_id = $this->id;
       $ldap = $config->get_ldap_link();
       $ldap->cd($config->current['BASE']);
-      $ldap->search('(objectClass=nisNetgroup)', array('cn', 'nisNetgroupTriple'));
+      $ldap->search('(objectClass=nisNetgroup)', ['cn', 'nisNetgroupTriple']);
       while ($attrs = $ldap->fetch()) {
         if (isset($attrs['nisNetgroupTriple'])) {
           foreach ($attrs['nisNetgroupTriple'] as $val) {
@@ -151,14 +151,14 @@ class netgroupMembership extends simplePlugin {
   }
 
   /* Save data to LDAP, depending on is_account we save or delete */
-  function ldap_save()
+  function ldap_save ()
   {
     global $config;
     $this->update_id();
     /* Call parents save to prepare $this->attrs */
     $ldap   = $config->get_ldap_link();
-    $attrs  = array();
-    $attrs['objectClass'] = array('top','nisNetgroup');
+    $attrs  = [];
+    $attrs['objectClass'] = ['top','nisNetgroup'];
 
     $old_nisMembership  = $this->attributesAccess['nisMembership']->getInitialValue();
     $nisMembership      = $this->attributesAccess['nisMembership']->getValue();
@@ -172,12 +172,12 @@ class netgroupMembership extends simplePlugin {
 
     foreach ($to_add as $val) {
       $ldap->cd($config->current['BASE']);
-      $ldap->cat($val, array("dn", "cn", "nisNetgroupTriple","memberNisNetgroups"));
-      $attrs['nisNetgroupTriple'] = array();
-      $attrs['memberNisNetgroup'] = array();
+      $ldap->cat($val, ["dn", "cn", "nisNetgroupTriple","memberNisNetgroups"]);
+      $attrs['nisNetgroupTriple'] = [];
+      $attrs['memberNisNetgroup'] = [];
       while ($sattrs = $ldap->fetch()) {
-        $triples    = array();
-        $netgroups  = array();
+        $triples    = [];
+        $netgroups  = [];
 
         if (isset($sattrs['nisNetgroupTriple'])) {
           for ($i = 0;$i < $sattrs['nisNetgroupTriple']['count'];$i++) {
@@ -200,12 +200,12 @@ class netgroupMembership extends simplePlugin {
 
     foreach ($to_del as $val) {
       $ldap->cd($config->current['BASE']);
-      $ldap->cat($val, array("dn", "cn", "nisNetgroupTriple","memberNisNetgroups"));
-      $attrs['nisNetgroupTriple'] = array();
-      $attrs['memberNisNetgroup'] = array();
+      $ldap->cat($val, ["dn", "cn", "nisNetgroupTriple","memberNisNetgroups"]);
+      $attrs['nisNetgroupTriple'] = [];
+      $attrs['memberNisNetgroup'] = [];
       while ($sattrs = $ldap->fetch()) {
-        $triples    = array();
-        $netgroups  = array();
+        $triples    = [];
+        $netgroups  = [];
 
         if (isset($sattrs['nisNetgroupTriple'])) {
           for ($i = 0;$i < $sattrs['nisNetgroupTriple']['count'];$i++) {
diff --git a/newsletter/config/newsletter/class_newsletterConfig.inc b/newsletter/config/newsletter/class_newsletterConfig.inc
index 537494c79d5250484fbc568f134c728849eb7622..c051046c68f381b508c7d8d46fe80b5e62d8e2a4 100644
--- a/newsletter/config/newsletter/class_newsletterConfig.inc
+++ b/newsletter/config/newsletter/class_newsletterConfig.inc
@@ -20,36 +20,36 @@
 
 class newsletterConfig extends simplePlugin
 {
-  var $objectclasses  = array('fdNewsletterPluginConf');
+  var $objectclasses  = ['fdNewsletterPluginConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Newsletter configuration'),
       'plDescription'   => _('FusionDirectory newsletter plugin configuration'),
-      'plCategory'      => array('configuration'),
-      'plObjectType'    => array('smallConfig'),
+      'plCategory'      => ['configuration'],
+      'plObjectType'    => ['smallConfig'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Newsletter'),
-        'attrs' => array(
+        'attrs' => [
           new SetAttribute(
-            new StringAttribute (
+            new StringAttribute(
               _('Newsletter choices'), _('Newsletters the user can choose from'),
               'fdNewsletterChoices', FALSE
             ),
-            array()
+            []
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/newsletter/locale/af_ZA/fusiondirectory.po b/newsletter/locale/af_ZA/fusiondirectory.po
index 5efafcf38c41e1c6a2ebb8f7eb0ab06da4499078..f0bd34d27b942cb609c185ce5572c3dd65f497e7 100644
--- a/newsletter/locale/af_ZA/fusiondirectory.po
+++ b/newsletter/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/newsletter/locale/ar/fusiondirectory.po b/newsletter/locale/ar/fusiondirectory.po
index a7c7f4e291b29c82ed539513628438e56a5c4bc7..8abaf886dcd6bbec89b59174e25ecd75e335f296 100644
--- a/newsletter/locale/ar/fusiondirectory.po
+++ b/newsletter/locale/ar/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
 "MIME-Version: 1.0\n"
diff --git a/newsletter/locale/ca/fusiondirectory.po b/newsletter/locale/ca/fusiondirectory.po
index 2ec8a6d24adcaf23e01e7489215173dcf82f20a8..9a794f41d47b25eca391b07e604d45b7096b8285 100644
--- a/newsletter/locale/ca/fusiondirectory.po
+++ b/newsletter/locale/ca/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
 "MIME-Version: 1.0\n"
diff --git a/newsletter/locale/cs_CZ/fusiondirectory.po b/newsletter/locale/cs_CZ/fusiondirectory.po
index 98d60b9d23ad2f4c4511ce0fd4e9992a64566d7d..1cf8c5c8780b61f2b2ca9a91ed06be51ee347d27 100644
--- a/newsletter/locale/cs_CZ/fusiondirectory.po
+++ b/newsletter/locale/cs_CZ/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/newsletter/locale/de/fusiondirectory.po b/newsletter/locale/de/fusiondirectory.po
index 58e0644bb55030732175b6db54a9933be4e4aee9..5f28d2077db46d05d175f7268c3a87ee81658c00 100644
--- a/newsletter/locale/de/fusiondirectory.po
+++ b/newsletter/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/newsletter/locale/el_GR/fusiondirectory.po b/newsletter/locale/el_GR/fusiondirectory.po
index 4df0ae1154187b16730f89ee64e030a13bba2e2e..21216c18ee858f375d11f3c37ec414e2b42c0282 100644
--- a/newsletter/locale/el_GR/fusiondirectory.po
+++ b/newsletter/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/newsletter/locale/en/fusiondirectory.po b/newsletter/locale/en/fusiondirectory.po
index 197c6e9ba0ebe78f8f1e79a913e46149baaa8989..fe353c7f8fbffa417f98d06eaaba0d8fdd230f05 100644
--- a/newsletter/locale/en/fusiondirectory.po
+++ b/newsletter/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,11 +17,27 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: personal/newsletter/class_newsletterSubscriptions.inc:30
+#: config/newsletter/class_newsletterConfig.inc:28
+msgid "Newsletter configuration"
+msgstr ""
+
+#: config/newsletter/class_newsletterConfig.inc:29
+msgid "FusionDirectory newsletter plugin configuration"
+msgstr ""
+
 #: config/newsletter/class_newsletterConfig.inc:41
+#: personal/newsletter/class_newsletterSubscriptions.inc:30
 msgid "Newsletter"
 msgstr ""
 
+#: config/newsletter/class_newsletterConfig.inc:45
+msgid "Newsletter choices"
+msgstr ""
+
+#: config/newsletter/class_newsletterConfig.inc:45
+msgid "Newsletters the user can choose from"
+msgstr ""
+
 #: personal/newsletter/class_newsletterSubscriptions.inc:31
 msgid "Newsletter subscriptions"
 msgstr ""
@@ -37,19 +53,3 @@ msgstr ""
 #: personal/newsletter/class_newsletterSubscriptions.inc:50
 msgid "Newsletter you are subscribed to"
 msgstr ""
-
-#: config/newsletter/class_newsletterConfig.inc:28
-msgid "Newsletter configuration"
-msgstr ""
-
-#: config/newsletter/class_newsletterConfig.inc:29
-msgid "FusionDirectory newsletter plugin configuration"
-msgstr ""
-
-#: config/newsletter/class_newsletterConfig.inc:45
-msgid "Newsletter choices"
-msgstr ""
-
-#: config/newsletter/class_newsletterConfig.inc:45
-msgid "Newsletters the user can choose from"
-msgstr ""
diff --git a/newsletter/locale/es/fusiondirectory.po b/newsletter/locale/es/fusiondirectory.po
index 4277aacd540d46ac0887f698e44225ff96118d10..66ca56098d77f7ee75e9d45dcbcded63a81aed48 100644
--- a/newsletter/locale/es/fusiondirectory.po
+++ b/newsletter/locale/es/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/newsletter/class_newsletterConfig.inc:28
 msgid "Newsletter configuration"
diff --git a/newsletter/locale/es_CO/fusiondirectory.po b/newsletter/locale/es_CO/fusiondirectory.po
index 0007099e9a9d06900a93a3bda7830bd97d66111f..e862d5ebddb1aece3dc139bc39a7fa7d6c6edbb5 100644
--- a/newsletter/locale/es_CO/fusiondirectory.po
+++ b/newsletter/locale/es_CO/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/newsletter/class_newsletterConfig.inc:28
 msgid "Newsletter configuration"
diff --git a/newsletter/locale/es_VE/fusiondirectory.po b/newsletter/locale/es_VE/fusiondirectory.po
index e262e976a28b95dce184fef94657e44b2ac09b49..eea95b771dcc6d5532eed5e2033b860967501509 100644
--- a/newsletter/locale/es_VE/fusiondirectory.po
+++ b/newsletter/locale/es_VE/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/newsletter/class_newsletterConfig.inc:28
 msgid "Newsletter configuration"
diff --git a/newsletter/locale/fa_IR/fusiondirectory.po b/newsletter/locale/fa_IR/fusiondirectory.po
index 1b4de30f65ee1744ceb5df4fdaf0f41f537cfc1c..1d281a31d76a9f6e10652dcb235f18d150f254a8 100644
--- a/newsletter/locale/fa_IR/fusiondirectory.po
+++ b/newsletter/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/newsletter/locale/fi_FI/fusiondirectory.po b/newsletter/locale/fi_FI/fusiondirectory.po
index 5a4b75087ecdbcfc582d13b378951bc44523917a..8befd2118cafcc6f26065458fbf8659694978739 100644
--- a/newsletter/locale/fi_FI/fusiondirectory.po
+++ b/newsletter/locale/fi_FI/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
 "MIME-Version: 1.0\n"
diff --git a/newsletter/locale/fr/fusiondirectory.po b/newsletter/locale/fr/fusiondirectory.po
index ace25ea94a482e63c55d4eb203416fd4e04cb6d0..df44f04e11e1d7f6931a559c899422ca56ad85f3 100644
--- a/newsletter/locale/fr/fusiondirectory.po
+++ b/newsletter/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/newsletter/class_newsletterConfig.inc:28
 msgid "Newsletter configuration"
diff --git a/newsletter/locale/hu_HU/fusiondirectory.po b/newsletter/locale/hu_HU/fusiondirectory.po
index a8c3523b56e17d29774e528ba3019edabc4fcd1b..c6212504d7d5faeef8010b424715dacd4e742d8a 100644
--- a/newsletter/locale/hu_HU/fusiondirectory.po
+++ b/newsletter/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/newsletter/locale/id/fusiondirectory.po b/newsletter/locale/id/fusiondirectory.po
index 608ed38ad69ac2aa4e3941d433dcd34b77e74fe2..874b544b65d6122170f78fd99aa4bad1b2165bbb 100644
--- a/newsletter/locale/id/fusiondirectory.po
+++ b/newsletter/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/newsletter/locale/it_IT/fusiondirectory.po b/newsletter/locale/it_IT/fusiondirectory.po
index a5a73cb371e273e279e76acb741848a91fde24d1..af783064f3aad663d6b532bdcafba0f517da683e 100644
--- a/newsletter/locale/it_IT/fusiondirectory.po
+++ b/newsletter/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/newsletter/class_newsletterConfig.inc:28
 msgid "Newsletter configuration"
diff --git a/newsletter/locale/ja/fusiondirectory.po b/newsletter/locale/ja/fusiondirectory.po
index 1d3972b14e34cc4fa0d227708a9b9006f593d634..990635278ce0ec532601ad9a20ed1ad68a4c0bf4 100644
--- a/newsletter/locale/ja/fusiondirectory.po
+++ b/newsletter/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/newsletter/locale/ko/fusiondirectory.po b/newsletter/locale/ko/fusiondirectory.po
index ec0643aa11cbfe1d3554d68fd9f6a6b1d135f64f..09ef3984ddaf91c3a79c7ab8a9b226697ec62dae 100644
--- a/newsletter/locale/ko/fusiondirectory.po
+++ b/newsletter/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/newsletter/locale/lv/fusiondirectory.po b/newsletter/locale/lv/fusiondirectory.po
index cbea48f05eff61667fb46e32b9b6fd7f55adbbf7..343c847b62cd0b13bf130ebed37853e7536f19b0 100644
--- a/newsletter/locale/lv/fusiondirectory.po
+++ b/newsletter/locale/lv/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
 "MIME-Version: 1.0\n"
diff --git a/newsletter/locale/nb/fusiondirectory.po b/newsletter/locale/nb/fusiondirectory.po
index 620fb2e9239f463dce66d1c27e14e2e57d05be32..326dd9cc3fe36651a49ccdbdec03ce10b486569d 100644
--- a/newsletter/locale/nb/fusiondirectory.po
+++ b/newsletter/locale/nb/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
 "MIME-Version: 1.0\n"
diff --git a/newsletter/locale/nl/fusiondirectory.po b/newsletter/locale/nl/fusiondirectory.po
index 9d4350ed6da6c384ddab3af9a4770caa4c03c270..fc87a48d42f3e319329d029f971830eac4dccb9f 100644
--- a/newsletter/locale/nl/fusiondirectory.po
+++ b/newsletter/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/newsletter/locale/pl/fusiondirectory.po b/newsletter/locale/pl/fusiondirectory.po
index 996c84514c082f901449a3623c173a81a6894678..1cd65b9aba1cac5d5db8cba0c125e166dacf2926 100644
--- a/newsletter/locale/pl/fusiondirectory.po
+++ b/newsletter/locale/pl/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
 "MIME-Version: 1.0\n"
diff --git a/newsletter/locale/pt/fusiondirectory.po b/newsletter/locale/pt/fusiondirectory.po
index f38a331e1bedf9d2307bd96ef8180bee5a9fcfa9..de1faa1943ca90f73c231509b0ebf591099ee814 100644
--- a/newsletter/locale/pt/fusiondirectory.po
+++ b/newsletter/locale/pt/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/newsletter/class_newsletterConfig.inc:28
 msgid "Newsletter configuration"
diff --git a/newsletter/locale/pt_BR/fusiondirectory.po b/newsletter/locale/pt_BR/fusiondirectory.po
index 4e9efa3475c07fd6d47f22aec9704e3a19d0daab..f69fa920266989f971fd5ae034719fbae4c0c757 100644
--- a/newsletter/locale/pt_BR/fusiondirectory.po
+++ b/newsletter/locale/pt_BR/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/newsletter/class_newsletterConfig.inc:28
 msgid "Newsletter configuration"
diff --git a/newsletter/locale/ru/fusiondirectory.po b/newsletter/locale/ru/fusiondirectory.po
index 5406ffcf41f922075b2cfad21e4b6685a26c4062..349448a73bbad6cd75df1fbc0c73857f1316b535 100644
--- a/newsletter/locale/ru/fusiondirectory.po
+++ b/newsletter/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/newsletter/locale/ru@petr1708/fusiondirectory.po b/newsletter/locale/ru@petr1708/fusiondirectory.po
index dc6ffc7708506e25b62dea72ac8eafcdbf780c28..b7b7dd96443fb7e8c38a9117445880fa481f152d 100644
--- a/newsletter/locale/ru@petr1708/fusiondirectory.po
+++ b/newsletter/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/newsletter/locale/sv/fusiondirectory.po b/newsletter/locale/sv/fusiondirectory.po
index e566f315205944816ca4d70543de99da997ae98a..e893f49870fcaa3d0b5020752fb5c190474aa827 100644
--- a/newsletter/locale/sv/fusiondirectory.po
+++ b/newsletter/locale/sv/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
 "MIME-Version: 1.0\n"
diff --git a/newsletter/locale/tr_TR/fusiondirectory.po b/newsletter/locale/tr_TR/fusiondirectory.po
index faf8ed8b20e34d36e5fc6b058fc284a25a0b8079..a8845c73d0826bc7ac01a662229f086a50bb1361 100644
--- a/newsletter/locale/tr_TR/fusiondirectory.po
+++ b/newsletter/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/newsletter/locale/ug/fusiondirectory.po b/newsletter/locale/ug/fusiondirectory.po
index 8ecff1823e3e6d58bc80ad5bdb33cd6ab0869fd1..69d0969a512928924ef8a3b2ce9d421960cc65e3 100644
--- a/newsletter/locale/ug/fusiondirectory.po
+++ b/newsletter/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: config/newsletter/class_newsletterConfig.inc:28
 msgid "Newsletter configuration"
diff --git a/newsletter/locale/vi_VN/fusiondirectory.po b/newsletter/locale/vi_VN/fusiondirectory.po
index b6a6db0364c11b79f3337057a6ee9eb8e92307b2..efd8071983f52d9b644afb535ce732436f0e2877 100644
--- a/newsletter/locale/vi_VN/fusiondirectory.po
+++ b/newsletter/locale/vi_VN/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
 "MIME-Version: 1.0\n"
diff --git a/newsletter/locale/zh/fusiondirectory.po b/newsletter/locale/zh/fusiondirectory.po
index 23db93034e2bdda036c0504f9a7927dd5840f188..2c3a458680ee3211cb1ec7a5c7571cc01add09e8 100644
--- a/newsletter/locale/zh/fusiondirectory.po
+++ b/newsletter/locale/zh/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
 "MIME-Version: 1.0\n"
diff --git a/newsletter/locale/zh_TW/fusiondirectory.po b/newsletter/locale/zh_TW/fusiondirectory.po
index d897bb6768b9ffc1620ddf835ee4db3abc59fc38..4a703ac2914839806cabaecc48b2e7ef912b290f 100644
--- a/newsletter/locale/zh_TW/fusiondirectory.po
+++ b/newsletter/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/newsletter/personal/newsletter/class_newsletterSubscriptions.inc b/newsletter/personal/newsletter/class_newsletterSubscriptions.inc
index 7f32079b23e5d0ca19ba8c6a03d566377f5fe3f5..73cfab7bb0ac4580b36c02a77975683105008fa6 100644
--- a/newsletter/personal/newsletter/class_newsletterSubscriptions.inc
+++ b/newsletter/personal/newsletter/class_newsletterSubscriptions.inc
@@ -22,39 +22,39 @@ class newsletterSubscriptions extends simplePlugin
 {
   var $displayHeader = TRUE;
 
-  var $objectclasses = array('fdNewsletterAccount');
+  var $objectclasses = ['fdNewsletterAccount'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Newsletter'),
       'plDescription'   => _('Newsletter subscriptions'),
       'plSelfModify'    => TRUE,
-      'plObjectType'    => array('user'),
+      'plObjectType'    => ['user'],
       'plIcon'          => 'geticon.php?context=applications&icon=newsletter&size=48',
       'plSmallIcon'     => 'geticon.php?context=applications&icon=newsletter&size=16',
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
     global $config;
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Personal info'),
-        'attrs' => array(
+        'attrs' => [
           new SetAttribute(
-            new SelectAttribute (
+            new SelectAttribute(
               _('Subscriptions'), _('Newsletter you are subscribed to'),
               'fdNewsletterSubscriptions', FALSE,
-              $config->get_cfg_value('newsletterChoices', array())
+              $config->get_cfg_value('newsletterChoices', [])
             )
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/opsi/addons/dashboard/class_dashBoardOpsi.inc b/opsi/addons/dashboard/class_dashBoardOpsi.inc
index 2ec0c3c79370e80744712942c5ba2064bebcfe28..3ecdf4a464b68370917223351c9895ae582975e0 100644
--- a/opsi/addons/dashboard/class_dashBoardOpsi.inc
+++ b/opsi/addons/dashboard/class_dashBoardOpsi.inc
@@ -20,31 +20,31 @@
 
 class dashboardOpsi extends simplePlugin
 {
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('OPSI'),
       'plDescription' => _('Statistics and information about OPSI'),
-      'plObjectType'  => array('dashboard'),
+      'plObjectType'  => ['dashboard'],
 
-      'plProvidedAcls'  => array()
-    );
+      'plProvidedAcls'  => []
+    ];
   }
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
-    return array(
-      'stats' => array(
+    return [
+      'stats' => [
         'name'  => _('Statistics'),
-        'attrs' => array(new FakeAttribute('stats')),
+        'attrs' => [new FakeAttribute('stats')],
         'template' => get_template_path('opsi_stats.tpl', TRUE, dirname(__FILE__)),
-      ),
-      'profiles' => array(
+      ],
+      'profiles' => [
         'name'  => _('Profiles'),
-        'attrs' => array(new FakeAttribute('profiles')),
+        'attrs' => [new FakeAttribute('profiles')],
         'template' => get_template_path('opsi_profiles.tpl', TRUE, dirname(__FILE__)),
-      ),
-    );
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -61,26 +61,26 @@ class dashboardOpsi extends simplePlugin
     $ldap = $config->get_ldap_link();
 
     /* Statistics */
-    $stats = array(
-      array(
+    $stats = [
+      [
         'name'    => _('OPSI servers'),
         'type'    => 'server',
         'filter'  => '(objectClass=opsiServer)',
         'img'   => 'geticon.php?context=devices&icon=server&size=16'
-      ),
-      array(
+      ],
+      [
         'name'  => _('OPSI clients'),
         'type'    => 'workstation',
         'filter'  => '(objectClass=opsiClient)',
         'img'     => 'geticon.php?context=devices&icon=computer&size=16'
-      ),
-      array(
+      ],
+      [
         'name'  => _('OPSI groups'),
         'type'    => 'ogroup',
         'filter'  => '(objectClass=opsiClient)',
         'img'     => 'geticon.php?context=types&icon=resource-group&size=16'
-      ),
-    );
+      ],
+    ];
 
     foreach ($stats as &$stat) {
       try {
@@ -101,19 +101,19 @@ class dashboardOpsi extends simplePlugin
 
   function profile_stats ()
   {
-    $profiles = objects::ls('opsiProfile', array('cn' => 1, 'fdOpsiServerDn' => 1, 'fdOpsiNetbootProduct' => 1, 'fdOpsiSoftwareList' => '*'), NULL, '', TRUE, 'subtree');
+    $profiles = objects::ls('opsiProfile', ['cn' => 1, 'fdOpsiServerDn' => 1, 'fdOpsiNetbootProduct' => 1, 'fdOpsiSoftwareList' => '*'], NULL, '', TRUE, 'subtree');
 
     $id   = 'profileStats';
     $div  = new divSelectBox('rows'.$id);
     $smarty = get_smarty();
     $div->SetHeight(90);
-    $div->SetHeaders(array(_('Profile'), _('Systems'), _('Groups')));
+    $div->SetHeaders([_('Profile'), _('Systems'), _('Groups')]);
     foreach ($profiles as $dn => $profile) {
-      $fields = array(
-        array('string' => $profile['cn']),
-        array('string' => objects::count('workstation', NULL, '(&(objectClass=opsiClient)(fdOpsiProfileDn='.$dn.'))', FALSE)),
-        array('string' => objects::count('ogroup', NULL, '(&(objectClass=opsiClient)(fdOpsiProfileDn='.$dn.'))', FALSE)),
-      );
+      $fields = [
+        ['string' => $profile['cn']],
+        ['string' => objects::count('workstation', NULL, '(&(objectClass=opsiClient)(fdOpsiProfileDn='.$dn.'))', FALSE)],
+        ['string' => objects::count('ogroup', NULL, '(&(objectClass=opsiClient)(fdOpsiProfileDn='.$dn.'))', FALSE)],
+      ];
       $div->AddEntry($fields);
     }
     return $div->DrawList();
diff --git a/opsi/addons/opsi/class_opsiImport.inc b/opsi/addons/opsi/class_opsiImport.inc
index eec580815836f5bccd2ddcae448e81d0589fe26f..7bed8fd11bb5962d642024293c0702de7b481b4f 100644
--- a/opsi/addons/opsi/class_opsiImport.inc
+++ b/opsi/addons/opsi/class_opsiImport.inc
@@ -21,31 +21,31 @@
 
 class opsiImport extends systemImport
 {
-  protected $types = array('workstation');
+  protected $types = ['workstation'];
 
   /* Return plugin information for acl handling  */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('OPSI import'),
       'plDescription' => _('Import windows stations from OPSI into FD'),
       'plIcon'        => 'geticon.php?context=applications&icon=opsi&size=48',
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array(
-        'opsiImport' => array(
+      'plObjectType'  => [
+        'opsiImport' => [
           'name'      => _('OPSI import'),
           'tabClass'  => 'simpleTabs_noSpecial',
           'mainAttr'  => FALSE,
-        )
-      ),
+        ]
+      ],
       'plSection'     => 'conf',
       'plPriority'    => 15,
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
-  static function getAttributesInfo($filter = 'objectClass=opsiServer')
+  static function getAttributesInfo ($filter = 'objectClass=opsiServer')
   {
     $attributesInfo = parent::getAttributesInfo($filter);
     /* Add our checkbox just before the import button */
@@ -53,28 +53,28 @@ class opsiImport extends systemImport
       $attributesInfo['import']['attrs'],
       -1,
       0,
-      array(
+      [
         new BooleanAttribute(
           _('Import localboot products'), _('Import localboot product list configured in OPSI in the FD OPSI tab'),
           'importLocalboots', FALSE,
           FALSE
         )
-      )
+      ]
     );
     return $attributesInfo;
   }
 
-  protected function getExtraTabs($server_dn, $host)
+  protected function getExtraTabs ($server_dn, $host)
   {
-    $extraTabs = array(
-      'sambaSystemTab' => array(
+    $extraTabs = [
+      'sambaSystemTab' => [
         'is_account'      => TRUE,
-      ),
-      'opsiClient' => array(
+      ],
+      'opsiClient' => [
         'is_account'      => TRUE,
         'fdOpsiServerDn'  => $server_dn,
-      )
-    );
+      ]
+    ];
 
     if ($this->importLocalboots) {
       if (!empty($host['localboots'])) {
@@ -115,7 +115,7 @@ class opsiImport extends systemImport
       );
       return FALSE;
     }
-    $hosts = $s_daemon->append_call('OPSI.host_getObjects', $macAddress, array('args' => array(array(), array('type' => 'OpsiClient'))));
+    $hosts = $s_daemon->append_call('OPSI.host_getObjects', $macAddress, ['args' => [[], ['type' => 'OpsiClient']]]);
     if ($s_daemon->is_error()) {
       msg_dialog::display(
         _('Could not get OPSI information'),
@@ -129,14 +129,14 @@ class opsiImport extends systemImport
         $res = $s_daemon->append_call(
           'OPSI.productOnClient_getObjects',
           $macAddress,
-          array('args' => array(
-            array(),
-            array(
+          ['args' => [
+            [],
+            [
               'clientId'    => $host['id'],
               'type'        => 'ProductOnClient',
               'productType' => 'LocalbootProduct',
-            )
-          ))
+            ]
+          ]]
         );
         if ($s_daemon->is_error()) {
           msg_dialog::display(
@@ -145,7 +145,7 @@ class opsiImport extends systemImport
           );
           return FALSE;
         }
-        $host['localboots'] = array();
+        $host['localboots'] = [];
         foreach ($res as $productOnClient) {
           if ($productOnClient['productId'] == 'opsi-winst') {
             /* opsi-winst cannot be installed and has no actions */
diff --git a/opsi/admin/opsi/class_opsiOnDemandList.inc b/opsi/admin/opsi/class_opsiOnDemandList.inc
index ee9a3c5dcab9a916fd86593fe716f75dc580521b..d65ca16d9cb7400137359574843a9dffc385050c 100644
--- a/opsi/admin/opsi/class_opsiOnDemandList.inc
+++ b/opsi/admin/opsi/class_opsiOnDemandList.inc
@@ -20,35 +20,35 @@
 
 class opsiOnDemandList extends opsiSoftwareList
 {
-  var $objectclasses   = array('opsiOnDemandList');
+  var $objectclasses   = ['opsiOnDemandList'];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('OPSI ondemand list'),
       'plDescription' => _('OPSI on demand software list'),
       'plIcon'        => 'geticon.php?context=applications&icon=opsi-on-demand&size=16',
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array('opsiOnDemandList' => array(
+      'plObjectType'  => ['opsiOnDemandList' => [
         'name'    => _('OPSI ondemand list'),
         'filter'  => 'objectClass=opsiOnDemandList',
         'ou'      => get_ou('opsiRDN'),
         'icon'    => 'geticon.php?context=applications&icon=opsi-on-demand&size=16',
-      )),
-      'plForeignKeys'   => array(
+      ]],
+      'plForeignKeys'   => [
         'fdOpsiServerDn' => 'serverGeneric',
-      ),
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Infos'),
-        'attrs' => array(
+        'attrs' => [
           new SubmittingOPSIServerAttribute(
             _('OPSI server'), _('OPSI server to use for deployment'),
             'fdOpsiServerDn', TRUE
@@ -61,20 +61,20 @@ class opsiOnDemandList extends opsiSoftwareList
             _('Show details'), _('Show further information to the user'),
             'fdOpsiOnDemandShowDetails', FALSE
           ),
-        )
-      ),
-      'products' => array(
+        ]
+      ],
+      'products' => [
         'name'  => _('Softwares'),
-        'attrs' => array(
+        'attrs' => [
           new SetAttribute(
             new SelectAttribute(
               _('Localboot products'), _('The localboot products to put in this list'),
               'fdOpsiLocalbootProduct', FALSE
             )
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -87,7 +87,7 @@ class opsiOnDemandList extends opsiSoftwareList
   public function server_changed ($opsi_args = NULL)
   {
     if ($opsi_args === NULL) {
-      $opsi_args = array('id','name');
+      $opsi_args = ['id','name'];
     }
     return parent::server_changed($opsi_args);
   }
diff --git a/opsi/admin/opsi/class_opsiProductProperties.inc b/opsi/admin/opsi/class_opsiProductProperties.inc
index f49165d590a89ae4c2c1cbf9a662f6be80dca75a..941e35e85576d1e6ec8252ffe7329e0b87afbf02 100644
--- a/opsi/admin/opsi/class_opsiProductProperties.inc
+++ b/opsi/admin/opsi/class_opsiProductProperties.inc
@@ -22,15 +22,15 @@ class SubmittingOPSIProductAttribute extends SelectAttribute
 {
   function __construct ($label, $description, $ldapName, $required, $func, $acl = '')
   {
-    parent::__construct($label, $description, $ldapName, $required, array(), '', NULL, $acl);
+    parent::__construct($label, $description, $ldapName, $required, [], '', NULL, $acl);
     $this->setSubmitForm($func);
   }
 
-  function check()
+  function check ()
   {
   }
 
-  function displayValue($value)
+  function displayValue ($value)
   {
     return $value;
   }
@@ -40,14 +40,14 @@ class ProductPropertyAttribute extends CompositeAttribute
 {
   function __construct ($label, $description, $ldapName, $acl = "")
   {
-    parent::__construct ($description, $ldapName, array(new StringAttribute('', '', 'fake')), '', '', $acl, $label);
+    parent::__construct($description, $ldapName, [new StringAttribute('', '', 'fake')], '', '', $acl, $label);
   }
 
-  function check()
+  function check ()
   {
   }
 
-  function displayValue($value)
+  function displayValue ($value)
   {
     $array = json_decode($value);
     if (is_array($array) && (count($array) == 1)) {
@@ -56,12 +56,12 @@ class ProductPropertyAttribute extends CompositeAttribute
     return $value;
   }
 
-  function readValues($value)
+  function readValues ($value)
   {
     trigger_error('Should never be called');
   }
 
-  function writeValues($values)
+  function writeValues ($values)
   {
     trigger_error('Should never be called');
   }
@@ -70,7 +70,7 @@ class ProductPropertyAttribute extends CompositeAttribute
   {
     $values = json_decode($value);
     if ($this->attributes[0] instanceof SetAttribute) {
-      return array($values);
+      return [$values];
     } else {
       return $values;
     }
@@ -83,41 +83,41 @@ class ProductPropertyAttribute extends CompositeAttribute
     if ($this->attributes[0] instanceof SetAttribute) {
       return json_encode($values);
     } else {
-      return json_encode(array($values));
+      return json_encode([$values]);
     }
   }
 }
 
 class opsiProductProperties extends simplePlugin
 {
-  var $objectclasses = array('opsiProductProperties');
+  var $objectclasses = ['opsiProductProperties'];
 
-  var $properties = array();
+  var $properties = [];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Product properties'),
       'plDescription' => _('Product properties'),
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array('opsiProfile'),
+      'plObjectType'  => ['opsiProfile'],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Name'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
+        'class' => ['fullwidth'],
+        'attrs' => [
           new OrderedArrayAttribute(
             new CharSeparatedCompositeAttribute(
               _('Properties of the products of this profile'),
               'fdOpsiProductProperty',
-              array(
+              [
                 new SubmittingOPSIProductAttribute(
                   '', '',
                   'productId', TRUE,
@@ -131,18 +131,18 @@ class opsiProductProperties extends simplePlugin
                 new ProductPropertyAttribute(
                   '', '', 'propertyValue'
                 ),
-              ),
+              ],
               '|', '', ''
             ),
             // no order
             FALSE,
-            array(),
+            [],
             // edit button
             TRUE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -151,20 +151,20 @@ class opsiProductProperties extends simplePlugin
     $this->attributesAccess['fdOpsiProductProperty']->setHeight('auto');
   }
 
-  public function execute()
+  public function execute ()
   {
     $this->updateProductList();
     return parent::execute();
   }
 
-  private function updateProductList()
+  private function updateProductList ()
   {
     $this->attributesAccess['fdOpsiProductProperty']->attribute->attributes[0]->setChoices(
       $this->parent->getBaseObject()->getProductList()
     );
   }
 
-  public function product_changed()
+  public function product_changed ()
   {
     $productid  = $this->attributesAccess['fdOpsiProductProperty']->attribute->attributes[0]->getValue();
     if (!isset($this->properties[$productid])) {
@@ -179,10 +179,10 @@ class opsiProductProperties extends simplePlugin
       $properties = $s_daemon->append_call(
         'OPSI.get_product_properties',
         $this->parent->getBaseObject()->macAddress,
-        array('args' => array(
-          array(),
-          array('productId' => $productid)
-        ))
+        ['args' => [
+          [],
+          ['productId' => $productid]
+        ]]
       );
       if ($s_daemon->is_error()) {
         msg_dialog::display(
@@ -191,13 +191,13 @@ class opsiProductProperties extends simplePlugin
         );
         return;
       }
-      $this->properties[$productid] = array();
+      $this->properties[$productid] = [];
       foreach ($properties as $property) {
         $this->properties[$productid][$property['propertyId']] = $property;
       }
     }
-    $choices_values = array();
-    $choices_labels = array();
+    $choices_values = [];
+    $choices_labels = [];
     foreach ($this->properties[$productid] as $property) {
       $choices_values[] = $property['propertyId'];
       $choices_labels[] = $property['propertyId'].' ('.join(',',
@@ -218,7 +218,7 @@ class opsiProductProperties extends simplePlugin
     $this->attributesAccess['fdOpsiProductProperty']->attribute->attributes[1]->setChoices($choices_values, $choices_labels);
   }
 
-  public function property_changed()
+  public function property_changed ()
   {
     $productid  = $this->attributesAccess['fdOpsiProductProperty']->attribute->attributes[0]->getValue();
     $propertyid = $this->attributesAccess['fdOpsiProductProperty']->attribute->attributes[1]->getValue();
@@ -256,7 +256,7 @@ class opsiProductProperties extends simplePlugin
     if ($property['multiValue']) {
       $attr = new SetAttribute($attr, $property['defaultValues']);
     }
-    $this->attributesAccess['fdOpsiProductProperty']->attribute->attributes[2]->setAttributes(array($attr));
+    $this->attributesAccess['fdOpsiProductProperty']->attribute->attributes[2]->setAttributes([$attr]);
   }
 }
 ?>
diff --git a/opsi/admin/opsi/class_opsiProfile.inc b/opsi/admin/opsi/class_opsiProfile.inc
index 535d17b4c8ec87c516c0463d77ffcc2b69c782b2..f64f08d78862f92a954c8e554e5878d96b4be996 100644
--- a/opsi/admin/opsi/class_opsiProfile.inc
+++ b/opsi/admin/opsi/class_opsiProfile.inc
@@ -28,14 +28,14 @@ class OPSIServerAttribute extends SelectAttribute
     }
   }
 
-  function updateChoices()
+  function updateChoices ()
   {
     global $config;
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(objectClass=opsiServer)', array('cn'));
-    $serversdn    = array();
-    $serverslabel = array();
+    $ldap->search('(objectClass=opsiServer)', ['cn']);
+    $serversdn    = [];
+    $serverslabel = [];
     while ($attrs = $ldap->fetch()) {
       $serversdn[]    = $attrs['dn'];
       $serverslabel[] = $attrs['cn'][0];
@@ -48,7 +48,7 @@ class SubmittingOPSIServerAttribute extends OPSIServerAttribute
 {
   function __construct ($label, $description, $ldapName, $required = FALSE, $acl = "")
   {
-    parent::__construct($label, $description, $ldapName, $required, array(), "", NULL, $acl);
+    parent::__construct($label, $description, $ldapName, $required, [], "", NULL, $acl);
     $this->setSubmitForm('server_changed');
   }
 }
@@ -56,39 +56,39 @@ class SubmittingOPSIServerAttribute extends OPSIServerAttribute
 class opsiProfile extends simplePlugin
 {
   var $mainTab = TRUE;
-  var $objectclasses   = array('opsiProfile');
+  var $objectclasses   = ['opsiProfile'];
 
   var $macAddress = NULL;
   var $products;
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('OPSI profile'),
       'plDescription' => _('OPSI profile'),
       'plIcon'        => 'geticon.php?context=applications&icon=opsi&size=16',
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array('opsiProfile' => array(
+      'plObjectType'  => ['opsiProfile' => [
         'name'    => _('OPSI profile'),
         'filter'  => 'objectClass=opsiProfile',
         'ou'      => get_ou('opsiRDN'),
         'icon'    => 'geticon.php?context=applications&icon=opsi&size=16',
-      )),
-      'plForeignKeys'   => array(
+      ]],
+      'plForeignKeys'   => [
         'fdOpsiServerDn'      => 'serverGeneric',
         'fdOpsiSoftwareList'  => 'opsiSoftwareList',
-      ),
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Name'),
-        'attrs' => array(
+        'attrs' => [
           new BaseSelectorAttribute(get_ou('opsiRDN')),
           new SubmittingOPSIServerAttribute(
             _('OPSI server'), _('OPSI server to use for deployment'),
@@ -98,11 +98,11 @@ class opsiProfile extends simplePlugin
             _('Name'), _('Name of this OPSI profile'),
             'cn', TRUE
           ),
-        )
-      ),
-      'products' => array(
+        ]
+      ],
+      'products' => [
         'name'  => _('Entries'),
-        'attrs' => array(
+        'attrs' => [
           new SelectAttribute(
             _('Netboot product'), _('The netboot product to use for this profile'),
             'fdOpsiNetbootProduct', FALSE
@@ -113,16 +113,16 @@ class opsiProfile extends simplePlugin
               'fdOpsiSoftwareList', FALSE
             )
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   /* Returns list of all products installed by this profile */
   public function getProductList ()
   {
     global $config;
-    $products = array();
+    $products = [];
     $netboot  = $this->fdOpsiNetbootProduct;
     if ($netboot != '') {
       $products[] = $netboot;
@@ -181,7 +181,7 @@ class opsiProfile extends simplePlugin
         );
         return FALSE;
       }
-      $netboots = $s_daemon->append_call('OPSI.get_netboots', $this->macAddress, array('args' => array(array('id','name'))));
+      $netboots = $s_daemon->append_call('OPSI.get_netboots', $this->macAddress, ['args' => [['id','name']]]);
       if ($s_daemon->is_error()) {
         msg_dialog::display(
           _('Failed to contact OPSI server'),
@@ -192,15 +192,15 @@ class opsiProfile extends simplePlugin
       $this->products[$this->fdOpsiServerDn]['netboots'] = $netboots;
 
       $ldap->cd($config->current['BASE']);
-      $ldap->search('(&(objectClass=opsiSoftwareList)(fdOpsiServerDn='.$this->fdOpsiServerDn.'))', array('cn'));
-      $lists = array();
+      $ldap->search('(&(objectClass=opsiSoftwareList)(fdOpsiServerDn='.$this->fdOpsiServerDn.'))', ['cn']);
+      $lists = [];
       while ($attrs = $ldap->fetch()) {
         $lists[$attrs['dn']] = $attrs['cn'][0];
       }
       $this->products[$this->fdOpsiServerDn]['lists'] = $lists;
     }
-    $choices_values = array();
-    $choices_labels = array();
+    $choices_values = [];
+    $choices_labels = [];
     foreach ($this->products[$this->fdOpsiServerDn]['netboots'] as $netboot) {
       $choices_values[] = $netboot['id'];
       $choices_labels[] = sprintf(_('%s (%s)'), $netboot['id'], $netboot['name']);
diff --git a/opsi/admin/opsi/class_opsiProfileManagement.inc b/opsi/admin/opsi/class_opsiProfileManagement.inc
index 5597a2f3777a83b7cf27aeb4516ccba798596558..8554fa64a3d15f6e4ca52bc04e505f6bde7e61b5 100644
--- a/opsi/admin/opsi/class_opsiProfileManagement.inc
+++ b/opsi/admin/opsi/class_opsiProfileManagement.inc
@@ -20,25 +20,25 @@
 
 class opsiManagement extends simpleManagement
 {
-  protected $objectTypes  = array('opsiProfile', 'opsiSoftwareList');
+  protected $objectTypes  = ['opsiProfile', 'opsiSoftwareList'];
 
   protected $departmentBrowser      = TRUE;
   protected $departmentRootVisible  = FALSE;
   protected $baseMode               = TRUE;
 
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('OPSI'),
       'plDescription' => _('OPSI profile management'),
       'plIcon'        => 'geticon.php?context=applications&icon=opsi&size=48',
       'plSection'     => 'systems',
       'plPriority'    => 25,
-      'plManages'     => array('opsiProfile', 'opsiSoftwareList'),
+      'plManages'     => ['opsiProfile', 'opsiSoftwareList'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 
   function configureHeadpage ()
@@ -52,15 +52,15 @@ class opsiManagement extends simpleManagement
     $data = parent::parseXML($file);
     $data['list']['table']['layout'] = '|20px;c|||110px;c|150px;r|';
     $data['list']['table']['column'][4] = $data['list']['table']['column'][3];
-    $data['list']['table']['column'][3] = array(
+    $data['list']['table']['column'][3] = [
       'label'         => 'Usage',
       'value'         => '%{filter:filterUsage(objectType,dn)}',
       'export'        => 'true',
-    );
+    ];
     return $data;
   }
 
-  static function filterUsage($objectType, $dn)
+  static function filterUsage ($objectType, $dn)
   {
     if (empty($dn) || (strcasecmp($objectType, 'opsiProfile') != 0)) {
       return '&nbsp;';
diff --git a/opsi/admin/opsi/class_opsiSoftwareList.inc b/opsi/admin/opsi/class_opsiSoftwareList.inc
index 82f96194af28ae2e8056bd9dbccd52f28afac16f..a011b0b5ddade522c98c5b12913c0df55bf16dc8 100644
--- a/opsi/admin/opsi/class_opsiSoftwareList.inc
+++ b/opsi/admin/opsi/class_opsiSoftwareList.inc
@@ -21,38 +21,38 @@
 class opsiSoftwareList extends simplePlugin
 {
   var $mainTab = TRUE;
-  var $objectclasses   = array('opsiSoftwareList');
+  var $objectclasses   = ['opsiSoftwareList'];
 
   var $macAddress = NULL;
   var $products;
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('OPSI list'),
       'plDescription' => _('OPSI software list'),
       'plIcon'        => 'geticon.php?context=applications&icon=opsi-software-list&size=16',
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array('opsiSoftwareList' => array(
+      'plObjectType'  => ['opsiSoftwareList' => [
         'name'    => _('OPSI software list'),
         'filter'  => 'objectClass=opsiSoftwareList',
         'ou'      => get_ou('opsiRDN'),
         'icon'    => 'geticon.php?context=applications&icon=opsi-software-list&size=16',
-      )),
-      'plForeignKeys'   => array(
+      ]],
+      'plForeignKeys'   => [
         'fdOpsiServerDn' => 'serverGeneric',
-      ),
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Infos'),
-        'attrs' => array(
+        'attrs' => [
           new BaseSelectorAttribute(get_ou('opsiRDN')),
           new SubmittingOPSIServerAttribute(
             _('OPSI server'), _('OPSI server to use for deployment'),
@@ -62,16 +62,16 @@ class opsiSoftwareList extends simplePlugin
             _('Name'), _('Name of this OPSI profile'),
             'cn', TRUE
           ),
-        )
-      ),
-      'products' => array(
+        ]
+      ],
+      'products' => [
         'name'  => _('Softwares'),
-        'attrs' => array(
+        'attrs' => [
           new OrderedArrayAttribute(
             new CharSeparatedCompositeAttribute(
               _('The localboot products to install with this list'),
               'fdOpsiLocalbootProduct',
-              array(
+              [
                 new SelectAttribute(
                   '', '',
                   'fdOpsiLocalbootProduct_product', TRUE
@@ -79,18 +79,18 @@ class opsiSoftwareList extends simplePlugin
                 new SelectAttribute(
                   '', '',
                   'fdOpsiLocalbootProduct_action', TRUE,
-                  array('setup', 'always', 'once', 'custom', 'userlogin', 'update')
+                  ['setup', 'always', 'once', 'custom', 'userlogin', 'update']
                 )
-              ),
+              ],
               '|', '', _('Localboot products')
             ),
             FALSE, // non-ordered
-            array(),
+            [],
             TRUE // edition
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -105,7 +105,7 @@ class opsiSoftwareList extends simplePlugin
   {
     global $config;
     if ($opsi_args == NULL) {
-      $opsi_args = array('id','name','setupScript','alwaysScript','onceScript','customScript','userLoginScript','updateScript','productVersion','packageVersion');
+      $opsi_args = ['id','name','setupScript','alwaysScript','onceScript','customScript','userLoginScript','updateScript','productVersion','packageVersion'];
     }
     if (!isset($this->products[$this->fdOpsiServerDn])) {
       $s_daemon = new supportDaemon();
@@ -135,7 +135,7 @@ class opsiSoftwareList extends simplePlugin
         );
         return FALSE;
       }
-      $localboots = $s_daemon->append_call('OPSI.get_localboots', $this->macAddress, array('args' => array($opsi_args)));
+      $localboots = $s_daemon->append_call('OPSI.get_localboots', $this->macAddress, ['args' => [$opsi_args]]);
       if ($s_daemon->is_error()) {
         msg_dialog::display(
           _('Failed to contact OPSI server'),
@@ -143,12 +143,12 @@ class opsiSoftwareList extends simplePlugin
         );
         return;
       }
-      $this->products[$this->fdOpsiServerDn]['localboots'] = array();
+      $this->products[$this->fdOpsiServerDn]['localboots'] = [];
       foreach ($localboots as $localboot) {
         $this->products[$this->fdOpsiServerDn]['localboots'][$localboot['id']] = $localboot;
       }
     }
-    $choices = array();
+    $choices = [];
     foreach ($this->products[$this->fdOpsiServerDn]['localboots'] as $id => $infos) {
       $choices[$id] = sprintf(_('%s (%s-%s)'), $infos['id'], $infos['productVersion'], $infos['packageVersion']);
     }
@@ -162,8 +162,8 @@ class opsiSoftwareList extends simplePlugin
   {
     $localboot = $this->attributesAccess['fdOpsiLocalbootProduct']->attribute->attributes[0]->getValue();
 
-    $actions = array();
-    foreach (array('setup', 'always', 'once', 'custom', 'userLogin', 'update') as $action) {
+    $actions = [];
+    foreach (['setup', 'always', 'once', 'custom', 'userLogin', 'update'] as $action) {
       if (!empty($this->products[$this->fdOpsiServerDn]['localboots'][$localboot][$action.'Script'])) {
         $actions[] = strtolower($action);
       }
diff --git a/opsi/admin/systems/opsi/class_opsiClient.inc b/opsi/admin/systems/opsi/class_opsiClient.inc
index d273431ac2bea7335b50a26b87a621709353ef32..4f2e13243dcef66e044b77571f698018283751f1 100644
--- a/opsi/admin/systems/opsi/class_opsiClient.inc
+++ b/opsi/admin/systems/opsi/class_opsiClient.inc
@@ -20,10 +20,10 @@
 
 class opsiClient extends simplePlugin
 {
-  var $objectclasses  = array('opsiClient');
+  var $objectclasses  = ['opsiClient'];
   var $displayHeader  = TRUE;
 
-  var $inheritance = array('gosaGroupOfNames' => 'member');
+  var $inheritance = ['gosaGroupOfNames' => 'member'];
 
   var $initialMembers;
   var $products;
@@ -32,29 +32,29 @@ class opsiClient extends simplePlugin
 
   static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('OPSI client'),
       'plDescription' => _('Edit OPSI client settings'),
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array('workstation', 'ogroup-dynamic'),
-      'plDepends'     => array('sambaSystemTab'),
-      'plConflicts'   => array('debconfStartup','faiStartup'),
+      'plObjectType'  => ['workstation', 'ogroup-dynamic'],
+      'plDepends'     => ['sambaSystemTab'],
+      'plConflicts'   => ['debconfStartup','faiStartup'],
       'plPriority'    => 8,
-      'plForeignKeys'   => array(
+      'plForeignKeys'   => [
         'fdOpsiServerDn'  => 'serverGeneric',
         'fdOpsiProfileDn' => 'opsiProfile',
-      ),
+      ],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('OPSI Client'),
-        'attrs' => array(
+        'attrs' => [
           new SubmittingOPSIServerAttribute(
             _('OPSI Server'), _('The OPSI Server this client is connected to'),
             'fdOpsiServerDn', TRUE
@@ -63,16 +63,16 @@ class opsiClient extends simplePlugin
             _('OPSI Profile'), _('The OPSI Profile to apply to this client'),
             'fdOpsiProfileDn', FALSE
           ),
-        )
-      ),
-      'products' => array(
+        ]
+      ],
+      'products' => [
         'name'  => _('Softwares'),
-        'attrs' => array(
+        'attrs' => [
           new OrderedArrayAttribute(
             new CharSeparatedCompositeAttribute(
               _('The localboot products to setup on this host'),
               'fdOpsiLocalbootProduct',
-              array(
+              [
                 new SelectAttribute(
                   '', '',
                   'fdOpsiLocalbootProduct_product', TRUE
@@ -80,42 +80,42 @@ class opsiClient extends simplePlugin
                 new SelectAttribute(
                   '', '',
                   'fdOpsiLocalbootProduct_action', TRUE,
-                  array('setup', 'always', 'once', 'custom', 'userlogin', 'update')
+                  ['setup', 'always', 'once', 'custom', 'userlogin', 'update']
                 )
-              ),
+              ],
               '|', '', _('Localboot products')
             ),
             FALSE, // non-ordered
-            array(),
+            [],
             TRUE // edition
           ),
           new BooleanAttribute(
             _('Inherit group localboots'), _('If this is checked localboot configured in the group OPSI tab will be installed along with the localboots configured here'),
             'fdOpsiLocalbootInherit', FALSE
           ),
-        )
-      ),
-      'infos' => array(
+        ]
+      ],
+      'infos' => [
         'name'  => _('Information'),
-        'attrs' => array(
+        'attrs' => [
           new DisplayAttribute(
             _('Last seen'), _('Last time this OPSI client was seen by the OPSI server'),
             'lastSeen', FALSE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
   {
     parent::__construct($dn, $object, $parent, $mainTab);
     if ($object instanceof ogroup) {
-      $this->initialMembers = array();
+      $this->initialMembers = [];
       if (isset($object->saved_attributes['member'])) {
         $this->initialMembers = $object->saved_attributes['member'];
         if (!is_array($this->initialMembers)) {
-          $this->initialMembers = array($this->initialMembers);
+          $this->initialMembers = [$this->initialMembers];
         }
       }
     }
@@ -132,7 +132,7 @@ class opsiClient extends simplePlugin
     }
   }
 
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
     if ($this->member_of_group) {
@@ -145,7 +145,7 @@ class opsiClient extends simplePlugin
     }
   }
 
-  function prepare_save()
+  function prepare_save ()
   {
     if ($this->member_of_group && (($this->fdOpsiProfileDn == 'inherited') || $this->fdOpsiLocalbootInherit)) {
       $this->fdOpsiServerDn = 'inherited';
@@ -153,21 +153,21 @@ class opsiClient extends simplePlugin
     return parent::prepare_save();
   }
 
-  function save()
+  function save ()
   {
     global $config;
     if ($this->initially_was_account && $this->editing_group() && !$this->is_template) {
       $oldMembers = array_diff($this->initialMembers, $this->parent->getBaseObject()->member);
-      $macAddresses = array();
+      $macAddresses = [];
       $ldap = $config->get_ldap_link();
       foreach ($oldMembers as $member) {
-        $ldap->cat($member, array('macAddress'), '(&(!(objectClass=opsiClient))(macAddress=*))');
+        $ldap->cat($member, ['macAddress'], '(&(!(objectClass=opsiClient))(macAddress=*))');
         if ($attrs = $ldap->fetch()) {
           $macAddresses[] = $attrs['macAddress'][0];
         }
       }
       if (!empty($macAddresses)) {
-        $ldap->cat($this->fdOpsiServerDn, array('macAddress'));
+        $ldap->cat($this->fdOpsiServerDn, ['macAddress']);
         if ($attrs = $ldap->fetch()) {
           $serverMac = $attrs['macAddress'][0];
         } else {
@@ -178,7 +178,7 @@ class opsiClient extends simplePlugin
         }
         $s_daemon   = new supportDaemon();
         if ($s_daemon->is_available()) {
-          $s_daemon->append_call('OPSI.delete', array($serverMac), array('args' => array($macAddresses)));
+          $s_daemon->append_call('OPSI.delete', [$serverMac], ['args' => [$macAddresses]]);
           if ($s_daemon->is_error()) {
             msg_dialog::display(
               _('Could not remove OPSI information'),
@@ -199,14 +199,14 @@ class opsiClient extends simplePlugin
     }
   }
 
-  function getMacAddresses()
+  function getMacAddresses ()
   {
     global $config;
-    $macAddresses = array();
+    $macAddresses = [];
     if ($this->editing_group()) {
       $ldap = $config->get_ldap_link();
       foreach ($this->parent->getBaseObject()->member as $member) {
-        $ldap->cat($member, array('macAddress'), '(macAddress=*)');
+        $ldap->cat($member, ['macAddress'], '(macAddress=*)');
         if ($attrs = $ldap->fetch()) {
           $macAddresses[] = $attrs['macAddress'][0];
         } else {
@@ -224,24 +224,24 @@ class opsiClient extends simplePlugin
     } else {
       $macAddresses = $this->parent->getBaseObject()->macAddress;
       if (!is_array($macAddresses)) {
-        $macAddresses = array($macAddresses);
+        $macAddresses = [$macAddresses];
       } elseif (count($macAddresses) > 1) {
-        $macAddresses = array(reset($macAddresses));
+        $macAddresses = [reset($macAddresses)];
       }
     }
     return $macAddresses;
   }
 
-  function update_or_insert()
+  function update_or_insert ()
   {
     global $config;
     $s_daemon     = new supportDaemon();
     $macAddresses = $this->getMacAddresses();
     if (!empty($macAddresses) && $s_daemon->is_available()) {
       if (!$this->editing_group() && !empty($this->initialOpsiId)) {
-        $s_daemon->append_call('OPSI.update_or_insert', reset($macAddresses), array('args' => array($this->initialOpsiId)));
+        $s_daemon->append_call('OPSI.update_or_insert', reset($macAddresses), ['args' => [$this->initialOpsiId]]);
       } else {
-        $s_daemon->append_call('OPSI.update_or_insert', $macAddresses, array());
+        $s_daemon->append_call('OPSI.update_or_insert', $macAddresses, []);
       }
       if ($s_daemon->is_error()) {
         msg_dialog::display(
@@ -252,7 +252,7 @@ class opsiClient extends simplePlugin
     }
   }
 
-  function remove($fulldelete = FALSE)
+  function remove ($fulldelete = FALSE)
   {
     if ($this->member_of_group && !$this->is_template) {
       // If the winstation is member of an ogroup which has OPSI activated, we must update_or_insert information
@@ -263,16 +263,16 @@ class opsiClient extends simplePlugin
     return parent::remove($fulldelete);
   }
 
-  protected function ldap_remove()
+  protected function ldap_remove ()
   {
     global $config;
 
     if (!$this->is_template) {
-      $macAddresses = array();
+      $macAddresses = [];
       if ($this->editing_group()) {
         $ldap = $config->get_ldap_link();
         foreach ($this->initialMembers as $member) {
-          $ldap->cat($member, array('macAddress'), '(&(!(objectClass=opsiClient))(macAddress=*))');
+          $ldap->cat($member, ['macAddress'], '(&(!(objectClass=opsiClient))(macAddress=*))');
           if ($attrs = $ldap->fetch()) {
             $macAddresses[] = $attrs['macAddress'][0];
           }
@@ -280,16 +280,16 @@ class opsiClient extends simplePlugin
       } elseif (!$this->member_of_group) {
         $macAddresses = $this->parent->getBaseObject()->macAddress;
         if (!is_array($macAddresses)) {
-          $macAddresses = array($macAddresses);
+          $macAddresses = [$macAddresses];
         } elseif (count($macAddresses) > 1) {
-          $macAddresses = array($macAddresses[0]);
+          $macAddresses = [$macAddresses[0]];
         }
       }
 
       if (!empty($macAddresses)) {
         $s_daemon   = new supportDaemon();
         if ($s_daemon->is_available()) {
-          $s_daemon->append_call('OPSI.delete', $macAddresses, array());
+          $s_daemon->append_call('OPSI.delete', $macAddresses, []);
           if ($s_daemon->is_error()) {
             msg_dialog::display(
               _('Could not remove OPSI information'),
@@ -313,9 +313,9 @@ class opsiClient extends simplePlugin
     }
 
     $ldap = $config->get_ldap_link();
-    $ldap->search('(&(objectClass=opsiProfile)(fdOpsiServerDn='.$fdOpsiServerDn.'))', array('cn'));
-    $profilesdn    = array();
-    $profileslabel = array();
+    $ldap->search('(&(objectClass=opsiProfile)(fdOpsiServerDn='.$fdOpsiServerDn.'))', ['cn']);
+    $profilesdn    = [];
+    $profileslabel = [];
     while ($attrs = $ldap->fetch()) {
       $profilesdn[]    = $attrs['dn'];
       $profileslabel[] = $attrs['cn'][0];
@@ -324,11 +324,11 @@ class opsiClient extends simplePlugin
       $profilesdn[]     = 'inherited';
       $profileslabel[]  = sprintf(_('Inherited (%s)'), ldap_explode_dn($this->group_attrs['fdOpsiProfileDn'][0], 1)[0]);
       $this->attributesAccess['fdOpsiProfileDn']->setManagedAttributes(
-        array(
-          'disable' => array(
-            'inherited' => array('fdOpsiServerDn')
-          )
-        )
+        [
+          'disable' => [
+            'inherited' => ['fdOpsiServerDn']
+          ]
+        ]
       );
     }
     $this->attributesAccess['fdOpsiProfileDn']->setChoices($profilesdn, $profileslabel);
@@ -361,7 +361,7 @@ class opsiClient extends simplePlugin
     }
     $macAddresses = $this->getMacAddresses();
     if (!empty($macAddresses)) {
-      $infos = $s_daemon->append_call('OPSI.host_getObjects', $macAddress, array('args' => array(array('lastSeen', 'hardwareAddress'), array('hardwareAddress' => $macAddresses))));
+      $infos = $s_daemon->append_call('OPSI.host_getObjects', $macAddress, ['args' => [['lastSeen', 'hardwareAddress'], ['hardwareAddress' => $macAddresses]]]);
       if ($s_daemon->is_error()) {
         $this->lastSeen = sprintf(_('Failed to contact OPSI server: %s'), $s_daemon->get_error());
       } elseif (count($infos) == 0) {
@@ -378,8 +378,8 @@ class opsiClient extends simplePlugin
       }
     }
     if (!isset($this->products[$this->fdOpsiServerDn])) {
-      $opsi_args  = array('id','name','setupScript','alwaysScript','onceScript','customScript','userLoginScript','updateScript','productVersion','packageVersion');
-      $localboots = $s_daemon->append_call('OPSI.get_localboots', $macAddress, array('args' => array($opsi_args)));
+      $opsi_args  = ['id','name','setupScript','alwaysScript','onceScript','customScript','userLoginScript','updateScript','productVersion','packageVersion'];
+      $localboots = $s_daemon->append_call('OPSI.get_localboots', $macAddress, ['args' => [$opsi_args]]);
       if ($s_daemon->is_error()) {
         msg_dialog::display(
           _('Failed to contact OPSI server'),
@@ -387,7 +387,7 @@ class opsiClient extends simplePlugin
         );
         return;
       }
-      $this->products[$this->fdOpsiServerDn]['localboots'] = array();
+      $this->products[$this->fdOpsiServerDn]['localboots'] = [];
       foreach ($localboots as $localboot) {
         $this->products[$this->fdOpsiServerDn]['localboots'][$localboot['id']] = $localboot;
       }
@@ -399,7 +399,7 @@ class opsiClient extends simplePlugin
       );
       return;
     }
-    $choices = array();
+    $choices = [];
     foreach ($this->products[$this->fdOpsiServerDn]['localboots'] as $id => $infos) {
       $choices[$id] = sprintf(_('%s (%s-%s)'), $infos['id'], $infos['productVersion'], $infos['packageVersion']);
     }
@@ -413,8 +413,8 @@ class opsiClient extends simplePlugin
   {
     $localboot = $this->attributesAccess['fdOpsiLocalbootProduct']->attribute->attributes[0]->getValue();
 
-    $actions = array();
-    foreach (array('setup', 'always', 'once', 'custom', 'userLogin', 'update') as $action) {
+    $actions = [];
+    foreach (['setup', 'always', 'once', 'custom', 'userLogin', 'update'] as $action) {
       if (!empty($this->products[$this->fdOpsiServerDn]['localboots'][$localboot][$action.'Script'])) {
         $actions[] = strtolower($action);
       }
diff --git a/opsi/admin/systems/opsi/class_opsiLogView.inc b/opsi/admin/systems/opsi/class_opsiLogView.inc
index 50be4da41244ae109642a6f08bff54060c433490..b9dc19cccf2b0db31eff5034269bde3a49321750 100644
--- a/opsi/admin/systems/opsi/class_opsiLogView.inc
+++ b/opsi/admin/systems/opsi/class_opsiLogView.inc
@@ -27,11 +27,11 @@ class opsiLogView extends simplePlugin
 
   static function getAttributesInfo ()
   {
-    return array(
-      'logs' => array(
+    return [
+      'logs' => [
         'name'  => _('Available logs'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
+        'class' => ['fullwidth'],
+        'attrs' => [
           new SelectAttribute(
             _('Available logs'), _('Available log files'),
             'available_logs', FALSE
@@ -40,22 +40,22 @@ class opsiLogView extends simplePlugin
             '', _('Content of the selected log'),
             'display_log'
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   /* Return plugin information */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('OPSI Logs'),
       'plDescription' => _('OPSI Logs Viewer'),
       'plPriority'    => 30,
-      'plObjectType'  => array('workstation'),
+      'plObjectType'  => ['workstation'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -77,7 +77,7 @@ class opsiLogView extends simplePlugin
 
       if (isset($this->parent->by_object['opsiClient']) && $this->parent->by_object['opsiClient']->is_account && ($this->mac != '')) {
         /* Query for log files */
-        $res = $this->o_queue->append_call('System.list_logs', $this->mac, array('args' => array()));
+        $res = $this->o_queue->append_call('System.list_logs', $this->mac, ['args' => []]);
         if ($this->o_queue->is_error()) {
           msg_dialog::display(_("Error"), $this->o_queue->get_error(), ERROR_DIALOG);
         }
@@ -97,18 +97,18 @@ class opsiLogView extends simplePlugin
     $this->ignore_account = FALSE;
   }
 
-  function is_this_account($attrs)
+  function is_this_account ($attrs)
   {
     /* Will not work when called from parent constructor (or when $attrs is not us) */
     return (count($this->attributesAccess['available_logs']->getChoices()) > 1);
   }
 
-  function loadLog()
+  function loadLog ()
   {
     if ($this->is_template) {
       return;
     }
-    $res = $this->o_queue->append_call('System.get_log', $this->mac, array('args' => array($this->available_logs)));
+    $res = $this->o_queue->append_call('System.get_log', $this->mac, ['args' => [$this->available_logs]]);
     if ($this->o_queue->is_error()) {
       msg_dialog::display(_("Error"), $this->o_queue->get_error(), ERROR_DIALOG);
     } else {
@@ -118,14 +118,14 @@ class opsiLogView extends simplePlugin
     }
   }
 
-  function save()
+  function save ()
   {
-    return array();
+    return [];
   }
 
-  function remove($fulldelete = FALSE)
+  function remove ($fulldelete = FALSE)
   {
-    return array();
+    return [];
   }
 }
 ?>
diff --git a/opsi/admin/systems/services/opsi/class_serviceOPSI.inc b/opsi/admin/systems/services/opsi/class_serviceOPSI.inc
index b8d88bb8684211bc6e083c9f388cf0c360145ebd..5c9730b38aab1e913d2c5bd33d6a2585f46653a0 100644
--- a/opsi/admin/systems/services/opsi/class_serviceOPSI.inc
+++ b/opsi/admin/systems/services/opsi/class_serviceOPSI.inc
@@ -20,26 +20,26 @@
 
 class serviceOPSI extends simpleService
 {
-  var $objectclasses = array('opsiServer');
+  var $objectclasses = ['opsiServer'];
 
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('OPSI service'),
       'plDescription' => _('OPSI service').' ('._('Services').')',
       'plIcon'        => 'geticon.php?context=applications&icon=opsi&size=16',
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'      => _('OPSI Server information'),
-        'attrs'     => array(
+        'attrs'     => [
           new StringAttribute(
             _('Server URI'), _('The URI to use for connection'),
             'fdOpsiServerURI', TRUE
@@ -52,9 +52,9 @@ class serviceOPSI extends simpleService
             _('Password'), _('The password to use for connection'),
             'fdOpsiServerPassword', TRUE
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $parent = NULL)
diff --git a/opsi/config/opsi/class_opsiConfig.inc b/opsi/config/opsi/class_opsiConfig.inc
index 8c2aba93063157a73bedf2fdeb888d100d14ddba..f1d667c80f2cd80aade03385394b27cd939d3ddf 100644
--- a/opsi/config/opsi/class_opsiConfig.inc
+++ b/opsi/config/opsi/class_opsiConfig.inc
@@ -20,35 +20,35 @@
 
 class opsiConfig extends simplePlugin
 {
-  var $objectclasses  = array('fdOpsiPluginConf');
+  var $objectclasses  = ['fdOpsiPluginConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('OPSI configuration'),
       'plDescription' => _('FusionDirectory OPSI plugin configuration'),
       'plSelfModify'  => FALSE,
-      'plCategory'    => array('configuration'),
-      'plObjectType'  => array('smallConfig'),
+      'plCategory'    => ['configuration'],
+      'plObjectType'  => ['smallConfig'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('OPSI'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('OPSI RDN'), _('Branch in which OPSI profiles will be stored'),
             'fdOpsiRDN', TRUE,
             'ou=opsi'
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/opsi/locale/af_ZA/fusiondirectory.po b/opsi/locale/af_ZA/fusiondirectory.po
index 79bda9abf5c2ea2b1dfe3ceb4ea1c103d2934953..2e9affc3eed5db12d8e654a039b6ea3fe97deed1 100644
--- a/opsi/locale/af_ZA/fusiondirectory.po
+++ b/opsi/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/opsi/locale/ar/fusiondirectory.po b/opsi/locale/ar/fusiondirectory.po
index f650bf1b3781257408d5a75397ba38ed23f4a79a..4672e83393a4d5dc40ea4cfbf786ddd59ca5e86c 100644
--- a/opsi/locale/ar/fusiondirectory.po
+++ b/opsi/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/opsi/locale/ca/fusiondirectory.po b/opsi/locale/ca/fusiondirectory.po
index c48848a808bd1daae91ef82e774099da13b9bdcf..73052a17d1e9e5395a8377fcda1b55337a47942c 100644
--- a/opsi/locale/ca/fusiondirectory.po
+++ b/opsi/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/opsi/locale/cs_CZ/fusiondirectory.po b/opsi/locale/cs_CZ/fusiondirectory.po
index 741591e80c8146c3efc1b14f895b427d5bca4860..9a8d15159c4b38c0fc13127e6ba4a8d7d977d9f5 100644
--- a/opsi/locale/cs_CZ/fusiondirectory.po
+++ b/opsi/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/opsi/locale/de/fusiondirectory.po b/opsi/locale/de/fusiondirectory.po
index 33ce12951b54c6dd1b47c40186135afc8f81f31c..651c248b34a1b13a0d7c504e9edd2971d5983be2 100644
--- a/opsi/locale/de/fusiondirectory.po
+++ b/opsi/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/opsi/locale/el_GR/fusiondirectory.po b/opsi/locale/el_GR/fusiondirectory.po
index 492cf9bb359b7dc6b7abefeef046f14788aad5c5..876e964345c2c05f88880cfc521c19c7160e2f87 100644
--- a/opsi/locale/el_GR/fusiondirectory.po
+++ b/opsi/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/opsi/locale/en/fusiondirectory.po b/opsi/locale/en/fusiondirectory.po
index c18df97d4c68417b79c6601e8ee67b449480500b..ceed7e6c5263b1846223b3bf4af5f8d0ae157366 100644
--- a/opsi/locale/en/fusiondirectory.po
+++ b/opsi/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,29 +17,6 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: addons/opsi/class_opsiImport.inc:30 addons/opsi/class_opsiImport.inc:36
-msgid "OPSI import"
-msgstr ""
-
-#: addons/opsi/class_opsiImport.inc:31
-msgid "Import windows stations from OPSI into FD"
-msgstr ""
-
-#: addons/opsi/class_opsiImport.inc:72
-msgid "Argonaut server is not available"
-msgstr ""
-
-#: addons/opsi/class_opsiImport.inc:83
-#: admin/opsi/class_opsiSoftwareList.inc:122
-#: admin/opsi/class_opsiProfile.inc:167
-msgid "No mac address"
-msgstr ""
-
-#: addons/opsi/class_opsiImport.inc:98
-#: admin/systems/opsi/class_opsiClient.inc:153
-msgid "Could not update OPSI information"
-msgstr ""
-
 #: config/opsi/class_opsiConfig.inc:28
 msgid "OPSI configuration"
 msgstr ""
@@ -49,6 +26,7 @@ msgid "FusionDirectory OPSI plugin configuration"
 msgstr ""
 
 #: config/opsi/class_opsiConfig.inc:42
+#: addons/dashboard/class_dashBoardOpsi.inc:26
 #: admin/opsi/class_opsiProfileManagement.inc:33
 msgid "OPSI"
 msgstr ""
@@ -61,198 +39,253 @@ msgstr ""
 msgid "Branch in which OPSI profiles will be stored"
 msgstr ""
 
-#: admin/opsi/class_opsiOnDemandList.inc:28
-#: admin/opsi/class_opsiOnDemandList.inc:33
-msgid "OPSI ondemand list"
+#: addons/opsi/class_opsiImport.inc:30 addons/opsi/class_opsiImport.inc:36
+msgid "OPSI import"
 msgstr ""
 
-#: admin/opsi/class_opsiOnDemandList.inc:29
-msgid "OPSI on demand software list"
+#: addons/opsi/class_opsiImport.inc:31
+msgid "Import windows stations from OPSI into FD"
 msgstr ""
 
-#: admin/opsi/class_opsiOnDemandList.inc:47
-#: admin/opsi/class_opsiSoftwareList.inc:51
-msgid "Infos"
+#: addons/opsi/class_opsiImport.inc:58
+msgid "Import localboot products"
 msgstr ""
 
-#: admin/opsi/class_opsiOnDemandList.inc:50
-#: admin/opsi/class_opsiSoftwareList.inc:54
-#: admin/opsi/class_opsiProfile.inc:89
-msgid "OPSI server"
+#: addons/opsi/class_opsiImport.inc:58
+msgid "Import localboot product list configured in OPSI in the FD OPSI tab"
 msgstr ""
 
-#: admin/opsi/class_opsiOnDemandList.inc:50
-#: admin/opsi/class_opsiSoftwareList.inc:54
-#: admin/opsi/class_opsiProfile.inc:89
-msgid "OPSI server to use for deployment"
+#: addons/opsi/class_opsiImport.inc:94
+msgid "Argonaut server is not available"
 msgstr ""
 
-#: admin/opsi/class_opsiOnDemandList.inc:54
-#: admin/opsi/class_opsiSoftwareList.inc:58
-#: admin/opsi/class_opsiProfile.inc:86 admin/opsi/class_opsiProfile.inc:93
-#: admin/opsi/class_opsiProductProperties.inc:113
-msgid "Name"
+#: addons/opsi/class_opsiImport.inc:105
+#: admin/systems/opsi/class_opsiClient.inc:350
+#: admin/opsi/class_opsiSoftwareList.inc:126
+#: admin/opsi/class_opsiProfile.inc:172
+msgid "No mac address"
 msgstr ""
 
-#: admin/opsi/class_opsiOnDemandList.inc:54
-#: admin/opsi/class_opsiSoftwareList.inc:58
-#: admin/opsi/class_opsiProfile.inc:93
-msgid "Name of this OPSI profile"
+#: addons/opsi/class_opsiImport.inc:106
+#, php-format
+msgid "Server \"%s\" has no mac address configured in the LDAP"
 msgstr ""
 
-#: admin/opsi/class_opsiOnDemandList.inc:58
-msgid "Show details"
+#: addons/opsi/class_opsiImport.inc:113
+#, php-format
+msgid "Could not find \"%s\" in the LDAP"
 msgstr ""
 
-#: admin/opsi/class_opsiOnDemandList.inc:58
-msgid "Show further information to the user"
+#: addons/opsi/class_opsiImport.inc:121 addons/opsi/class_opsiImport.inc:143
+msgid "Could not get OPSI information"
 msgstr ""
 
-#: admin/opsi/class_opsiOnDemandList.inc:64
-#: admin/opsi/class_opsiSoftwareList.inc:64
-msgid "Softwares"
+#: addons/dashboard/class_dashBoardOpsi.inc:27
+msgid "Statistics and information about OPSI"
 msgstr ""
 
-#: admin/opsi/class_opsiOnDemandList.inc:68
-#: admin/opsi/class_opsiSoftwareList.inc:81
-msgid "Localboot products"
+#: addons/dashboard/class_dashBoardOpsi.inc:38
+msgid "Statistics"
 msgstr ""
 
-#: admin/opsi/class_opsiOnDemandList.inc:68
-msgid "The localboot products to put in this list"
+#: addons/dashboard/class_dashBoardOpsi.inc:43
+msgid "Profiles"
 msgstr ""
 
-#: admin/opsi/class_opsiSoftwareList.inc:32
-msgid "OPSI list"
+#: addons/dashboard/class_dashBoardOpsi.inc:66
+msgid "OPSI servers"
 msgstr ""
 
-#: admin/opsi/class_opsiSoftwareList.inc:33
-#: admin/opsi/class_opsiSoftwareList.inc:37
-msgid "OPSI software list"
+#: addons/dashboard/class_dashBoardOpsi.inc:72
+msgid "OPSI clients"
 msgstr ""
 
-#: admin/opsi/class_opsiSoftwareList.inc:68
-msgid "The localboot products to install with this list"
+#: addons/dashboard/class_dashBoardOpsi.inc:78
+msgid "OPSI groups"
 msgstr ""
 
-#: admin/opsi/class_opsiSoftwareList.inc:110
-#: admin/opsi/class_opsiProfile.inc:155
-#: admin/opsi/class_opsiProductProperties.inc:174
-msgid "Could not contact argonaut server"
+#: addons/dashboard/class_dashBoardOpsi.inc:91
+#: admin/systems/opsi/class_opsiLogView.inc:82
+#: admin/systems/opsi/class_opsiLogView.inc:113
+msgid "Error"
 msgstr ""
 
-#: admin/opsi/class_opsiSoftwareList.inc:123
-#: admin/opsi/class_opsiProfile.inc:168
+#: addons/dashboard/class_dashBoardOpsi.inc:92
 #, php-format
-msgid "Server %s has no mac address configured in the LDAP"
+msgid ""
+"Statistics for OPSI could not be computed because of the following error: %s"
 msgstr ""
 
-#: admin/opsi/class_opsiSoftwareList.inc:129
-#: admin/opsi/class_opsiProfile.inc:139 admin/opsi/class_opsiProfile.inc:174
-#, php-format
-msgid "Could not find %s in the LDAP"
+#: addons/dashboard/class_dashBoardOpsi.inc:110
+msgid "Profile"
 msgstr ""
 
-#: admin/opsi/class_opsiSoftwareList.inc:137
-#: admin/opsi/class_opsiProfile.inc:182
-#: admin/opsi/class_opsiProductProperties.inc:190
-msgid "Failed to contact OPSI server"
+#: addons/dashboard/class_dashBoardOpsi.inc:110
+msgid "Systems"
 msgstr ""
 
-#: admin/opsi/class_opsiSoftwareList.inc:149
-#, php-format
-msgid "%s (%s-%s)"
+#: addons/dashboard/class_dashBoardOpsi.inc:110
+msgid "Groups"
 msgstr ""
 
-#: admin/opsi/class_opsiProfile.inc:67 admin/opsi/class_opsiProfile.inc:68
-#: admin/opsi/class_opsiProfile.inc:72
-msgid "OPSI profile"
+#: admin/systems/opsi/class_opsiLogView.inc:32
+#: admin/systems/opsi/class_opsiLogView.inc:36
+msgid "Available logs"
 msgstr ""
 
-#: admin/opsi/class_opsiProfile.inc:99
-msgid "Entries"
+#: admin/systems/opsi/class_opsiLogView.inc:36
+msgid "Available log files"
 msgstr ""
 
-#: admin/opsi/class_opsiProfile.inc:102
-msgid "Netboot product"
+#: admin/systems/opsi/class_opsiLogView.inc:40
+msgid "Content of the selected log"
 msgstr ""
 
-#: admin/opsi/class_opsiProfile.inc:102
-msgid "The netboot product to use for this profile"
+#: admin/systems/opsi/class_opsiLogView.inc:52
+msgid "OPSI Logs"
 msgstr ""
 
-#: admin/opsi/class_opsiProfile.inc:107
-msgid "Software lists"
+#: admin/systems/opsi/class_opsiLogView.inc:53
+msgid "OPSI Logs Viewer"
 msgstr ""
 
-#: admin/opsi/class_opsiProfile.inc:107
-msgid "Software lists that will be installed with this profile"
+#: admin/systems/opsi/class_opsiClient.inc:36
+msgid "OPSI client"
 msgstr ""
 
-#: admin/opsi/class_opsiProfile.inc:202
-#, php-format
-msgid "%s (%s)"
+#: admin/systems/opsi/class_opsiClient.inc:37
+msgid "Edit OPSI client settings"
 msgstr ""
 
-#: admin/opsi/class_opsiProfileManagement.inc:34
-msgid "OPSI profile management"
+#: admin/systems/opsi/class_opsiClient.inc:56
+msgid "OPSI Client"
 msgstr ""
 
-#: admin/opsi/class_opsiProductProperties.inc:100
-#: admin/opsi/class_opsiProductProperties.inc:101
-msgid "Product properties"
+#: admin/systems/opsi/class_opsiClient.inc:59
+msgid "OPSI Server"
 msgstr ""
 
-#: admin/opsi/class_opsiProductProperties.inc:118
-msgid "Properties of the products of this profile"
+#: admin/systems/opsi/class_opsiClient.inc:59
+msgid "The OPSI Server this client is connected to"
 msgstr ""
 
-#: admin/systems/opsi/class_opsiClient.inc:33
-msgid "OPSI client"
+#: admin/systems/opsi/class_opsiClient.inc:63
+msgid "OPSI Profile"
 msgstr ""
 
-#: admin/systems/opsi/class_opsiClient.inc:34
-msgid "Edit OPSI client settings"
+#: admin/systems/opsi/class_opsiClient.inc:63
+msgid "The OPSI Profile to apply to this client"
 msgstr ""
 
-#: admin/systems/opsi/class_opsiClient.inc:48
-msgid "OPSI Client"
+#: admin/systems/opsi/class_opsiClient.inc:69
+#: admin/opsi/class_opsiOnDemandList.inc:67
+#: admin/opsi/class_opsiSoftwareList.inc:68
+msgid "Softwares"
 msgstr ""
 
-#: admin/systems/opsi/class_opsiClient.inc:51
-msgid "OPSI Server"
+#: admin/systems/opsi/class_opsiClient.inc:73
+msgid "The localboot products to setup on this host"
 msgstr ""
 
-#: admin/systems/opsi/class_opsiClient.inc:51
-msgid "The OPSI Server this client is connected to"
+#: admin/systems/opsi/class_opsiClient.inc:86
+#: admin/opsi/class_opsiOnDemandList.inc:71
+#: admin/opsi/class_opsiSoftwareList.inc:85
+msgid "Localboot products"
 msgstr ""
 
-#: admin/systems/opsi/class_opsiClient.inc:55
-msgid "OPSI Profile"
+#: admin/systems/opsi/class_opsiClient.inc:93
+msgid "Inherit group localboots"
 msgstr ""
 
-#: admin/systems/opsi/class_opsiClient.inc:55
-msgid "The OPSI Profile to apply to this client"
+#: admin/systems/opsi/class_opsiClient.inc:93
+msgid ""
+"If this is checked localboot configured in the group OPSI tab will be "
+"installed along with the localboots configured here"
 msgstr ""
 
-#: admin/systems/opsi/class_opsiClient.inc:96
+#: admin/systems/opsi/class_opsiClient.inc:99
+msgid "Information"
+msgstr ""
+
+#: admin/systems/opsi/class_opsiClient.inc:102
+msgid "Last seen"
+msgstr ""
+
+#: admin/systems/opsi/class_opsiClient.inc:102
+msgid "Last time this OPSI client was seen by the OPSI server"
+msgstr ""
+
+#: admin/systems/opsi/class_opsiClient.inc:175
 msgid "Could not get macAddress for OPSI server!"
 msgstr ""
 
-#: admin/systems/opsi/class_opsiClient.inc:105
-#: admin/systems/opsi/class_opsiClient.inc:193
+#: admin/systems/opsi/class_opsiClient.inc:184
+#: admin/systems/opsi/class_opsiClient.inc:295
 msgid "Could not remove OPSI information"
 msgstr ""
 
-#: admin/systems/opsi/class_opsiClient.inc:136
+#: admin/systems/opsi/class_opsiClient.inc:214
 msgid "This member was not found or has no macAddress"
 msgstr ""
 
-#: admin/systems/opsi/class_opsiClient.inc:141
+#: admin/systems/opsi/class_opsiClient.inc:219
 #, php-format
 msgid "Could not get macAddress for \"%s\""
 msgstr ""
 
+#: admin/systems/opsi/class_opsiClient.inc:248
+msgid "Could not update OPSI information"
+msgstr ""
+
+#: admin/systems/opsi/class_opsiClient.inc:325
+#, php-format
+msgid "Inherited (%s)"
+msgstr ""
+
+#: admin/systems/opsi/class_opsiClient.inc:339
+#: admin/opsi/class_opsiSoftwareList.inc:114
+#: admin/opsi/class_opsiProductProperties.inc:174
+#: admin/opsi/class_opsiProfile.inc:160
+msgid "Could not contact argonaut server"
+msgstr ""
+
+#: admin/systems/opsi/class_opsiClient.inc:351
+#: admin/opsi/class_opsiSoftwareList.inc:127
+#: admin/opsi/class_opsiProfile.inc:173
+#, php-format
+msgid "Server %s has no mac address configured in the LDAP"
+msgstr ""
+
+#: admin/systems/opsi/class_opsiClient.inc:357
+#: admin/opsi/class_opsiSoftwareList.inc:133
+#: admin/opsi/class_opsiProfile.inc:144 admin/opsi/class_opsiProfile.inc:179
+#, php-format
+msgid "Could not find %s in the LDAP"
+msgstr ""
+
+#: admin/systems/opsi/class_opsiClient.inc:366
+#, php-format
+msgid "Failed to contact OPSI server: %s"
+msgstr ""
+
+#: admin/systems/opsi/class_opsiClient.inc:368
+msgid "Never"
+msgstr ""
+
+#: admin/systems/opsi/class_opsiClient.inc:385
+#: admin/systems/opsi/class_opsiClient.inc:397
+#: admin/opsi/class_opsiSoftwareList.inc:141
+#: admin/opsi/class_opsiProductProperties.inc:189
+#: admin/opsi/class_opsiProfile.inc:187
+msgid "Failed to contact OPSI server"
+msgstr ""
+
+#: admin/systems/opsi/class_opsiClient.inc:404
+#: admin/opsi/class_opsiSoftwareList.inc:153
+#, php-format
+msgid "%s (%s-%s)"
+msgstr ""
+
 #: admin/systems/services/opsi/class_serviceOPSI.inc:29
 #: admin/systems/services/opsi/class_serviceOPSI.inc:30
 msgid "OPSI service"
@@ -290,6 +323,110 @@ msgstr ""
 msgid "The password to use for connection"
 msgstr ""
 
+#: admin/opsi/class_opsiOnDemandList.inc:28
+#: admin/opsi/class_opsiOnDemandList.inc:33
+msgid "OPSI ondemand list"
+msgstr ""
+
+#: admin/opsi/class_opsiOnDemandList.inc:29
+msgid "OPSI on demand software list"
+msgstr ""
+
+#: admin/opsi/class_opsiOnDemandList.inc:50
+#: admin/opsi/class_opsiSoftwareList.inc:54
+msgid "Infos"
+msgstr ""
+
+#: admin/opsi/class_opsiOnDemandList.inc:53
+#: admin/opsi/class_opsiSoftwareList.inc:58 admin/opsi/class_opsiProfile.inc:94
+msgid "OPSI server"
+msgstr ""
+
+#: admin/opsi/class_opsiOnDemandList.inc:53
+#: admin/opsi/class_opsiSoftwareList.inc:58 admin/opsi/class_opsiProfile.inc:94
+msgid "OPSI server to use for deployment"
+msgstr ""
+
+#: admin/opsi/class_opsiOnDemandList.inc:57
+#: admin/opsi/class_opsiSoftwareList.inc:62
+#: admin/opsi/class_opsiProductProperties.inc:113
+#: admin/opsi/class_opsiProfile.inc:90 admin/opsi/class_opsiProfile.inc:98
+msgid "Name"
+msgstr ""
+
+#: admin/opsi/class_opsiOnDemandList.inc:57
+#: admin/opsi/class_opsiSoftwareList.inc:62 admin/opsi/class_opsiProfile.inc:98
+msgid "Name of this OPSI profile"
+msgstr ""
+
+#: admin/opsi/class_opsiOnDemandList.inc:61
+msgid "Show details"
+msgstr ""
+
+#: admin/opsi/class_opsiOnDemandList.inc:61
+msgid "Show further information to the user"
+msgstr ""
+
+#: admin/opsi/class_opsiOnDemandList.inc:71
+msgid "The localboot products to put in this list"
+msgstr ""
+
+#: admin/opsi/class_opsiSoftwareList.inc:32
+msgid "OPSI list"
+msgstr ""
+
+#: admin/opsi/class_opsiSoftwareList.inc:33
+#: admin/opsi/class_opsiSoftwareList.inc:37
+msgid "OPSI software list"
+msgstr ""
+
+#: admin/opsi/class_opsiSoftwareList.inc:72
+msgid "The localboot products to install with this list"
+msgstr ""
+
+#: admin/opsi/class_opsiProductProperties.inc:100
+#: admin/opsi/class_opsiProductProperties.inc:101
+msgid "Product properties"
+msgstr ""
+
+#: admin/opsi/class_opsiProductProperties.inc:118
+msgid "Properties of the products of this profile"
+msgstr ""
+
+#: admin/opsi/class_opsiProfileManagement.inc:34
+msgid "OPSI profile management"
+msgstr ""
+
+#: admin/opsi/class_opsiProfile.inc:67 admin/opsi/class_opsiProfile.inc:68
+#: admin/opsi/class_opsiProfile.inc:72
+msgid "OPSI profile"
+msgstr ""
+
+#: admin/opsi/class_opsiProfile.inc:104
+msgid "Entries"
+msgstr ""
+
+#: admin/opsi/class_opsiProfile.inc:107
+msgid "Netboot product"
+msgstr ""
+
+#: admin/opsi/class_opsiProfile.inc:107
+msgid "The netboot product to use for this profile"
+msgstr ""
+
+#: admin/opsi/class_opsiProfile.inc:112
+msgid "Software lists"
+msgstr ""
+
+#: admin/opsi/class_opsiProfile.inc:112
+msgid "Software lists that will be installed with this profile"
+msgstr ""
+
+#: admin/opsi/class_opsiProfile.inc:206
+#, php-format
+msgid "%s (%s)"
+msgstr ""
+
 #: addons/opsi/opsiimport.tpl.c:2
 msgid ""
 "Warning : Once you import your OPSI hosts into FusionDirectory, they will be "
diff --git a/opsi/locale/es/fusiondirectory.po b/opsi/locale/es/fusiondirectory.po
index f6f7429cc705cf98ca3d7182c6ad547343ce26f5..5086b977c2ac10fb6ac7788e5073286373ba6d14 100644
--- a/opsi/locale/es/fusiondirectory.po
+++ b/opsi/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/opsi/class_opsiSoftwareList.inc:32
 msgid "OPSI list"
diff --git a/opsi/locale/es_CO/fusiondirectory.po b/opsi/locale/es_CO/fusiondirectory.po
index 7677b5bab22f9dfd998cfbd9dd518fd6035841a9..aa1331c13ad99652bbc95c6639e0b5f2c827d7ef 100644
--- a/opsi/locale/es_CO/fusiondirectory.po
+++ b/opsi/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/opsi/class_opsiSoftwareList.inc:32
 msgid "OPSI list"
diff --git a/opsi/locale/es_VE/fusiondirectory.po b/opsi/locale/es_VE/fusiondirectory.po
index db4a563241c56c3b8b6b572c69c8f366921cb4ff..21b4a1e47fbfdc1aefda9617737627e478ad9834 100644
--- a/opsi/locale/es_VE/fusiondirectory.po
+++ b/opsi/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/opsi/class_opsiSoftwareList.inc:32
 msgid "OPSI list"
diff --git a/opsi/locale/fa_IR/fusiondirectory.po b/opsi/locale/fa_IR/fusiondirectory.po
index 99a302b0cf14a60c32f658bcb19b58117760d51e..b8dd5888ae21715efe49709c38310cb9f05cf51c 100644
--- a/opsi/locale/fa_IR/fusiondirectory.po
+++ b/opsi/locale/fa_IR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
diff --git a/opsi/locale/fi_FI/fusiondirectory.po b/opsi/locale/fi_FI/fusiondirectory.po
index 085f14046b81c0c740f5ce2a570958dadc852b73..aa37f9627f51b9452ff695156cd1dfdace4329fb 100644
--- a/opsi/locale/fi_FI/fusiondirectory.po
+++ b/opsi/locale/fi_FI/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: Dina Solveig Jalkanen, 2017\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/opsi/locale/fr/fusiondirectory.po b/opsi/locale/fr/fusiondirectory.po
index 053fed8701a781c9bda975c967ca26b38a32583e..5fdaa6aa5161b0f1731f1a64bfb5a141ede0c0d5 100644
--- a/opsi/locale/fr/fusiondirectory.po
+++ b/opsi/locale/fr/fusiondirectory.po
@@ -6,22 +6,22 @@
 # Translators:
 # MCMic, 2017
 # fusiondirectory <contact@fusiondirectory.org>, 2017
-# Benoit Mortier <benoit.mortier@opensides.be>, 2018
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
-"Last-Translator: Benoit Mortier <benoit.mortier@opensides.be>, 2018\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/opsi/class_opsiSoftwareList.inc:32
 msgid "OPSI list"
diff --git a/opsi/locale/hu_HU/fusiondirectory.po b/opsi/locale/hu_HU/fusiondirectory.po
index 2f26b87489814a7468e77943cb6791735c8f9b7b..a9e2e920dcd741f3d5bc837e9351eefad2bf769a 100644
--- a/opsi/locale/hu_HU/fusiondirectory.po
+++ b/opsi/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
diff --git a/opsi/locale/id/fusiondirectory.po b/opsi/locale/id/fusiondirectory.po
index c82b2b03f7891ffdf90922c2871e7f71c6c6c646..110c7b56da8d6d29e25a5ba8794ba14b5d9b042a 100644
--- a/opsi/locale/id/fusiondirectory.po
+++ b/opsi/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/opsi/locale/it_IT/fusiondirectory.po b/opsi/locale/it_IT/fusiondirectory.po
index 59ef2259c5add6f6106076737bcd531308e58a57..aa5a8b30a517d2af076b61d8e88d64ece3eb359d 100644
--- a/opsi/locale/it_IT/fusiondirectory.po
+++ b/opsi/locale/it_IT/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: Paola Penati <paola.penati@opensides.be>, 2018\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -20,7 +20,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/opsi/class_opsiSoftwareList.inc:32
 msgid "OPSI list"
diff --git a/opsi/locale/ja/fusiondirectory.po b/opsi/locale/ja/fusiondirectory.po
index f9f445363d8a8a2743fa9d772c42e98b07f3e357..f112cd231d798ee7ac3fef8859454ed339fe83d7 100644
--- a/opsi/locale/ja/fusiondirectory.po
+++ b/opsi/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/opsi/locale/ko/fusiondirectory.po b/opsi/locale/ko/fusiondirectory.po
index c78f21c7f2f6d668f6ba1ddf939f89a90c3c104a..7f555d8a604837f1ac1c593773d1b1047facc99a 100644
--- a/opsi/locale/ko/fusiondirectory.po
+++ b/opsi/locale/ko/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# Choi Chris <chulwon.choi@gmail.com>, 2018
+# Choi Chris <chulwon.choi@gmail.com>, 2020
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
-"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
+"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2020\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -340,7 +340,7 @@ msgstr ""
 
 #: admin/systems/opsi/class_opsiClient.inc:368
 msgid "Never"
-msgstr ""
+msgstr "제한없음"
 
 #: config/opsi/class_opsiConfig.inc:28
 msgid "OPSI configuration"
diff --git a/opsi/locale/lv/fusiondirectory.po b/opsi/locale/lv/fusiondirectory.po
index 2d9b5eecd52fcb9267b362f9a6929f7e44fc6766..6ba293c38005edd92d3d8b8f7642b2e4fd9bb771 100644
--- a/opsi/locale/lv/fusiondirectory.po
+++ b/opsi/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/opsi/locale/nb/fusiondirectory.po b/opsi/locale/nb/fusiondirectory.po
index 2cc7dfc146650119ab34073ff4965cbc9bebf181..957aa10bb1a642c452df28c9a9c4f9bd3e1ad79b 100644
--- a/opsi/locale/nb/fusiondirectory.po
+++ b/opsi/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/opsi/locale/nl/fusiondirectory.po b/opsi/locale/nl/fusiondirectory.po
index d94250a611301a7ff78e1079aa953d5e9bbda360..f358b64e32025f5688051ae07c6e0c1fec2e7ee2 100644
--- a/opsi/locale/nl/fusiondirectory.po
+++ b/opsi/locale/nl/fusiondirectory.po
@@ -7,16 +7,16 @@
 # Selina Oudermans <selina.oudermans@digipolis.be>, 2017
 # fusiondirectory <contact@fusiondirectory.org>, 2017
 # Lucien Antonissen <lucien.antonissen@digipolis.be>, 2018
-# Benoit Mortier <benoit.mortier@opensides.be>, 2018
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
-"Last-Translator: Benoit Mortier <benoit.mortier@opensides.be>, 2018\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff --git a/opsi/locale/pl/fusiondirectory.po b/opsi/locale/pl/fusiondirectory.po
index a3c7fcfe54aacb5d3f221b53eb5b5d65e32ee13e..cc01681f5035937c5215308c948ef9ad669ef49f 100644
--- a/opsi/locale/pl/fusiondirectory.po
+++ b/opsi/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/opsi/locale/pt/fusiondirectory.po b/opsi/locale/pt/fusiondirectory.po
index 39b9576ffc57f3ef572edbc8cc22b0ad69b95487..3d45fa5c1c10ea676ba696d6ef71951d0b4065a8 100644
--- a/opsi/locale/pt/fusiondirectory.po
+++ b/opsi/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/opsi/class_opsiSoftwareList.inc:32
 msgid "OPSI list"
diff --git a/opsi/locale/pt_BR/fusiondirectory.po b/opsi/locale/pt_BR/fusiondirectory.po
index 6246dd3a30f0b20de74ead3fbfb733e2c29b73c1..0ae5f12efb609b8bd15f8e906ab28193686a37f6 100644
--- a/opsi/locale/pt_BR/fusiondirectory.po
+++ b/opsi/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/opsi/class_opsiSoftwareList.inc:32
 msgid "OPSI list"
diff --git a/opsi/locale/ru/fusiondirectory.po b/opsi/locale/ru/fusiondirectory.po
index fa4f69ef16bff9ae1d53e44fb490c83d08250aed..31b3c6169b05a8ff28eb89c9fc7bfe6fe6474df9 100644
--- a/opsi/locale/ru/fusiondirectory.po
+++ b/opsi/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/opsi/locale/ru@petr1708/fusiondirectory.po b/opsi/locale/ru@petr1708/fusiondirectory.po
index 50c5269736489b5ab4e5cc18d80dcb53e35c4eea..2f6dd654b894c38a057b8917648dd61c30673efa 100644
--- a/opsi/locale/ru@petr1708/fusiondirectory.po
+++ b/opsi/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/opsi/locale/sv/fusiondirectory.po b/opsi/locale/sv/fusiondirectory.po
index 44e76b4c83fef974f6270487e8b1fc4b9dbb4d75..55c2b646bc2eacd583be077bb76052a2637b05eb 100644
--- a/opsi/locale/sv/fusiondirectory.po
+++ b/opsi/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/opsi/locale/tr_TR/fusiondirectory.po b/opsi/locale/tr_TR/fusiondirectory.po
index e357874907c09683fd367bb0e3cc24dde48517b7..74b1863c40981c860988e0adb7b803005fec8e52 100644
--- a/opsi/locale/tr_TR/fusiondirectory.po
+++ b/opsi/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2021
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2021\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -215,7 +219,7 @@ msgstr ""
 
 #: admin/systems/services/opsi/class_serviceOPSI.inc:52
 msgid "Password"
-msgstr ""
+msgstr "Parola"
 
 #: admin/systems/services/opsi/class_serviceOPSI.inc:52
 msgid "The password to use for connection"
@@ -246,7 +250,7 @@ msgstr ""
 #: admin/systems/opsi/class_opsiLogView.inc:113
 #: addons/dashboard/class_dashBoardOpsi.inc:91
 msgid "Error"
-msgstr ""
+msgstr "Hata"
 
 #: admin/systems/opsi/class_opsiClient.inc:36
 msgid "OPSI client"
diff --git a/opsi/locale/ug/fusiondirectory.po b/opsi/locale/ug/fusiondirectory.po
index b2ec3cd95cd5b29e2ced7da72c167436c22eacc7..a4d252d03af25f328d06b84aef72e1092a739244 100644
--- a/opsi/locale/ug/fusiondirectory.po
+++ b/opsi/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/opsi/class_opsiSoftwareList.inc:32
 msgid "OPSI list"
diff --git a/opsi/locale/vi_VN/fusiondirectory.po b/opsi/locale/vi_VN/fusiondirectory.po
index df42d9749f5b5d0ac2cc07a9bfa4eaa4a3c99265..efd11e7c2217b9a078f104134cb167f655d764b2 100644
--- a/opsi/locale/vi_VN/fusiondirectory.po
+++ b/opsi/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/opsi/locale/zh/fusiondirectory.po b/opsi/locale/zh/fusiondirectory.po
index 01b09b0cc1d93de2c352822662df8fe940934fd9..8fb3c879b13249efaad54a6e685b05acacdd6a2b 100644
--- a/opsi/locale/zh/fusiondirectory.po
+++ b/opsi/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/opsi/locale/zh_TW/fusiondirectory.po b/opsi/locale/zh_TW/fusiondirectory.po
index 52c28134d0e5970d4bc87485c62e2cbd2d9137b3..2d0b7beac04c39a4a5cae536480ad334e89a9b51 100644
--- a/opsi/locale/zh_TW/fusiondirectory.po
+++ b/opsi/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/personal/config/personal/class_personalConfig.inc b/personal/config/personal/class_personalConfig.inc
index 790ea1ad6adc48a4c37619af4d0415e3394c9d50..163e50edb9fd6718c310ac018995cdbf24be6a8c 100644
--- a/personal/config/personal/class_personalConfig.inc
+++ b/personal/config/personal/class_personalConfig.inc
@@ -20,34 +20,34 @@
 
 class personalConfig extends simplePlugin
 {
-  var $objectclasses  = array('fdPersonalPluginConf');
+  var $objectclasses  = ['fdPersonalPluginConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Personal configuration'),
       'plDescription'   => _('FusionDirectory personal plugin configuration'),
       'plSelfModify'    => FALSE,
-      'plCategory'      => array('configuration'),
-      'plObjectType'    => array('smallConfig'),
+      'plCategory'      => ['configuration'],
+      'plObjectType'    => ['smallConfig'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Personal'),
-        'attrs' => array(
-          new BooleanAttribute (
+        'attrs' => [
+          new BooleanAttribute(
             _('Allow use of private email for password recovery'), _('Allow users to use their private email address for password recovery'),
             'fdPrivateEmailPasswordRecovery', FALSE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/personal/locale/af_ZA/fusiondirectory.po b/personal/locale/af_ZA/fusiondirectory.po
index 54772bc350770a795741cdc36901de11ea69149d..76302c904284b55293bf20874b159f2ec8b6cda6 100644
--- a/personal/locale/af_ZA/fusiondirectory.po
+++ b/personal/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
@@ -174,3 +174,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/ar/fusiondirectory.po b/personal/locale/ar/fusiondirectory.po
index f2670bf9ed6e76f41885fc76752851bd61075963..227833017a5c3b2bb16ddabca967a03a5a469bc7 100644
--- a/personal/locale/ar/fusiondirectory.po
+++ b/personal/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
@@ -178,3 +178,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/ca/fusiondirectory.po b/personal/locale/ca/fusiondirectory.po
index f112c8d2c801188ead1571d42f43ca88832f4058..d080f4ad31195bbd78b5e30f71b5278f0c00d68d 100644
--- a/personal/locale/ca/fusiondirectory.po
+++ b/personal/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
@@ -178,3 +178,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/cs_CZ/fusiondirectory.po b/personal/locale/cs_CZ/fusiondirectory.po
index ce74fa830bf5d804a1bb8a303b0cfdce4a37508c..bf315f3afbe26e46168d28452b02fcc57221394e 100644
--- a/personal/locale/cs_CZ/fusiondirectory.po
+++ b/personal/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
@@ -182,3 +182,7 @@ msgid ""
 msgstr ""
 "Je třeba, aby identifikátory ORCID účtu měly podobu XXXX-XXXX-XXXX-XXXX, kde"
 " X jsou číslice"
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/de/fusiondirectory.po b/personal/locale/de/fusiondirectory.po
index c7b9b348f07b131d621aca48a1b45da3fa7643dd..1b7d15b8fea45c3b6673043f705a5a0f12336914 100644
--- a/personal/locale/de/fusiondirectory.po
+++ b/personal/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
@@ -178,3 +178,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/el_GR/fusiondirectory.po b/personal/locale/el_GR/fusiondirectory.po
index 155db8c566c92085f8b16b3716d314575800cff2..84ddd385617b46c17298ad3c08f25ed8a4f2c5c7 100644
--- a/personal/locale/el_GR/fusiondirectory.po
+++ b/personal/locale/el_GR/fusiondirectory.po
@@ -5,15 +5,16 @@
 # 
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2017
+# LOUKAS SKOUROLIAKOS, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
-"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
+"Last-Translator: LOUKAS SKOUROLIAKOS, 2021\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -110,7 +111,7 @@ msgstr "Χώρα"
 
 #: personal/personal/class_personalInfo.inc:132
 msgid "Start date"
-msgstr ""
+msgstr "Ημερομηνία Εκκίνησης "
 
 #: personal/personal/class_personalInfo.inc:132
 msgid "Date this user joined the company"
@@ -180,3 +181,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/en/fusiondirectory.po b/personal/locale/en/fusiondirectory.po
index 9432e3fae4c862da6887ad9aa683eb30f15a2f75..0fda17afcff6d9aefa6d6c1e8e980f5188a73914 100644
--- a/personal/locale/en/fusiondirectory.po
+++ b/personal/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,6 +17,59 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+#: config/personal/class_personalConfig.inc:28
+msgid "Personal configuration"
+msgstr ""
+
+#: config/personal/class_personalConfig.inc:29
+msgid "FusionDirectory personal plugin configuration"
+msgstr ""
+
+#: config/personal/class_personalConfig.inc:42
+#: personal/personal/class_personalInfo.inc:85
+msgid "Personal"
+msgstr ""
+
+#: config/personal/class_personalConfig.inc:45
+msgid "Allow use of private email for password recovery"
+msgstr ""
+
+#: config/personal/class_personalConfig.inc:45
+msgid "Allow users to use their private email address for password recovery"
+msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:69
+msgid "Facebook"
+msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:79
+msgid "Twitter"
+msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:99
+msgid "Diaspora*"
+msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:112
+msgid "Diaspora accounts must look like user@pod"
+msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:122
+msgid "LinkedIn"
+msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:132
+msgid "ORCID"
+msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:145
+msgid "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
+msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
+
 #: personal/personal/class_personalInfo.inc:30
 msgid "Site"
 msgstr ""
@@ -33,11 +86,6 @@ msgstr ""
 msgid "Id of this user on this website"
 msgstr ""
 
-#: personal/personal/class_personalInfo.inc:85
-#: config/personal/class_personalConfig.inc:42
-msgid "Personal"
-msgstr ""
-
 #: personal/personal/class_personalInfo.inc:86
 msgid "Personal information"
 msgstr ""
@@ -131,43 +179,3 @@ msgstr ""
 #: personal/personal/class_personalInfo.inc:159
 msgid "Private email addresses of this user"
 msgstr ""
-
-#: personal/personal/class_socialHandlers.inc:68
-msgid "Facebook"
-msgstr ""
-
-#: personal/personal/class_socialHandlers.inc:78
-msgid "Twitter"
-msgstr ""
-
-#: personal/personal/class_socialHandlers.inc:98
-msgid "Google+"
-msgstr ""
-
-#: personal/personal/class_socialHandlers.inc:118
-msgid "Diaspora*"
-msgstr ""
-
-#: personal/personal/class_socialHandlers.inc:131
-msgid "Diaspora accounts must look like user@pod"
-msgstr ""
-
-#: personal/personal/class_socialHandlers.inc:141
-msgid "LinkedIn"
-msgstr ""
-
-#: config/personal/class_personalConfig.inc:28
-msgid "Personal configuration"
-msgstr ""
-
-#: config/personal/class_personalConfig.inc:29
-msgid "FusionDirectory personal plugin configuration"
-msgstr ""
-
-#: config/personal/class_personalConfig.inc:45
-msgid "Allow use of private email for password recovery"
-msgstr ""
-
-#: config/personal/class_personalConfig.inc:45
-msgid "Allow users to use their private email address for password recovery"
-msgstr ""
diff --git a/personal/locale/es/fusiondirectory.po b/personal/locale/es/fusiondirectory.po
index eba561cea9e33ccb267f77c0504e4536806c89ae..9a9b6614b9ae88871bd8b5725c29863a17e8d243 100644
--- a/personal/locale/es/fusiondirectory.po
+++ b/personal/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/personal/class_personalConfig.inc:28
 msgid "Personal configuration"
@@ -178,3 +178,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/es_CO/fusiondirectory.po b/personal/locale/es_CO/fusiondirectory.po
index 43faa3ac71f90d491db4e232335685921057a3a3..d550e72f7481ca01de0e847a031066baa59e2af4 100644
--- a/personal/locale/es_CO/fusiondirectory.po
+++ b/personal/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/personal/class_personalConfig.inc:28
 msgid "Personal configuration"
@@ -178,3 +178,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/es_VE/fusiondirectory.po b/personal/locale/es_VE/fusiondirectory.po
index 11c8bbca33e7c9e95306ce7be3fc2d5430c1e12e..8a8ea1e3893c1080aa3d70a48cfa3de73e40e21b 100644
--- a/personal/locale/es_VE/fusiondirectory.po
+++ b/personal/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/personal/class_personalConfig.inc:28
 msgid "Personal configuration"
@@ -178,3 +178,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/fa_IR/fusiondirectory.po b/personal/locale/fa_IR/fusiondirectory.po
index 09c09a4564680353ef9a0505971f572a81c93787..cf7f8d561521cb3d2c68625d4e48eb2e71e837e0 100644
--- a/personal/locale/fa_IR/fusiondirectory.po
+++ b/personal/locale/fa_IR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
@@ -178,3 +178,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/fi_FI/fusiondirectory.po b/personal/locale/fi_FI/fusiondirectory.po
index e27fb4b5a6063c91ad460b850580376076a7e25e..99973676e050a6a4b1f33e2cc41c53b4f415d156 100644
--- a/personal/locale/fi_FI/fusiondirectory.po
+++ b/personal/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
@@ -178,3 +178,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/fr/fusiondirectory.po b/personal/locale/fr/fusiondirectory.po
index b57c7d5249d1fd646b29e283e38f652346ebb43d..c167bb3201ecd56ca64740dfe7055a2666402abe 100644
--- a/personal/locale/fr/fusiondirectory.po
+++ b/personal/locale/fr/fusiondirectory.po
@@ -5,22 +5,22 @@
 # 
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2017
-# Benoit Mortier <benoit.mortier@opensides.be>, 2018
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2019
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
-"Last-Translator: Benoit Mortier <benoit.mortier@opensides.be>, 2018\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2019\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/personal/class_personalConfig.inc:28
 msgid "Personal configuration"
@@ -189,3 +189,7 @@ msgid ""
 msgstr ""
 "Les ID de compte ORCID doivent ressembler à XXXX-XXXX-XXXX-XXXX où X sont "
 "des chiffres"
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr "Valeur ORCID incorrecte, la somme de contrôle ne correspond pas"
diff --git a/personal/locale/hu_HU/fusiondirectory.po b/personal/locale/hu_HU/fusiondirectory.po
index 070c75733ade5f74780e02e73e403f4ca34d2783..c16d4cc7786eed7ec7e807fc5f752ee4991f2884 100644
--- a/personal/locale/hu_HU/fusiondirectory.po
+++ b/personal/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
@@ -174,3 +174,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/id/fusiondirectory.po b/personal/locale/id/fusiondirectory.po
index 8f5f7fc45cd7f86ffad719feb8051e0c8b5a18c5..ffd1384e23880576334a5b143606f710c1d36664 100644
--- a/personal/locale/id/fusiondirectory.po
+++ b/personal/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
@@ -174,3 +174,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/it_IT/fusiondirectory.po b/personal/locale/it_IT/fusiondirectory.po
index f6bbaff246544699dd1756e4be5cc8c8721057c7..9cb1782ec55a20c70707a592954ff48833b8a428 100644
--- a/personal/locale/it_IT/fusiondirectory.po
+++ b/personal/locale/it_IT/fusiondirectory.po
@@ -6,21 +6,22 @@
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2017
 # Paola Penati <paola.penati@opensides.be>, 2018
+# Paola <paola.penati@fusiondirectory.org>, 2019
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
-"Last-Translator: Paola Penati <paola.penati@opensides.be>, 2018\n"
+"Last-Translator: Paola <paola.penati@fusiondirectory.org>, 2019\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/personal/class_personalConfig.inc:28
 msgid "Personal configuration"
@@ -185,3 +186,7 @@ msgid ""
 msgstr ""
 "Gli ID account ORCID devono apparire come XXXX-XXXX-XXXX-XXXX dove X sono "
 "cifre"
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr "Valore ORCID errato, il checksum non corrisponde"
diff --git a/personal/locale/ja/fusiondirectory.po b/personal/locale/ja/fusiondirectory.po
index eaf2776b1ff5f34d5db27416c80b9818816b4ca9..a171d1af2753e6df6e30c14eeb10cfcae2230c93 100644
--- a/personal/locale/ja/fusiondirectory.po
+++ b/personal/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
@@ -174,3 +174,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/ko/fusiondirectory.po b/personal/locale/ko/fusiondirectory.po
index 634273f3c3f8f5ffec69d38184bf39c6372e1133..6c0d5189200e9b64b0a6062db342ae61670ebfe8 100644
--- a/personal/locale/ko/fusiondirectory.po
+++ b/personal/locale/ko/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# Choi Chris <chulwon.choi@gmail.com>, 2018
+# Choi Chris <chulwon.choi@gmail.com>, 2019
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
-"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
+"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2019\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -178,3 +178,7 @@ msgstr "ORCID"
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr "ORCID 계정 ID는 XXXX-XXXX-XXXX-XXXX와 같아야합니다. 여기서 X는 숫자입니다."
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr "체크섬이 일치하지 않아 ORCID 값이 유효하지 않습니다. "
diff --git a/personal/locale/lv/fusiondirectory.po b/personal/locale/lv/fusiondirectory.po
index 3a9c02f9bb0e5e2544d6264411c4cf3b9546c285..085535c9cada694259267e57d89615e092d78111 100644
--- a/personal/locale/lv/fusiondirectory.po
+++ b/personal/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
@@ -178,3 +178,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/nb/fusiondirectory.po b/personal/locale/nb/fusiondirectory.po
index 60430406f87380e6c103d0c1c4bf825b2587109c..666a1264c0f78cc799eff30c87dd61fcc9661c48 100644
--- a/personal/locale/nb/fusiondirectory.po
+++ b/personal/locale/nb/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
 "MIME-Version: 1.0\n"
@@ -174,3 +174,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/nl/fusiondirectory.po b/personal/locale/nl/fusiondirectory.po
index 217b7d3c49e5f5f753424a9c645e86be97d2378c..b13e47cfbeb10997ee1697b1efce3954fd1aa3c5 100644
--- a/personal/locale/nl/fusiondirectory.po
+++ b/personal/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2018\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
@@ -183,3 +183,7 @@ msgid ""
 msgstr ""
 "ORCID account IDs moeten eruit zien als XXXX-XXXX-XXXX-XXXX waarbij X "
 "cijfers zijn"
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/pl/fusiondirectory.po b/personal/locale/pl/fusiondirectory.po
index 9746dcef66f0f14739e150b6f6c152f2b421943e..0de08d313b4acac828a53348757e7c999c7bf686 100644
--- a/personal/locale/pl/fusiondirectory.po
+++ b/personal/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
@@ -178,3 +178,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/pt/fusiondirectory.po b/personal/locale/pt/fusiondirectory.po
index 63a0fe50fc0f5456835c68f9e1f63a06e937c45f..3895987a33ac2ffcd50d98414c3fd6f2fef37e21 100644
--- a/personal/locale/pt/fusiondirectory.po
+++ b/personal/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/personal/class_personalConfig.inc:28
 msgid "Personal configuration"
@@ -178,3 +178,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/pt_BR/fusiondirectory.po b/personal/locale/pt_BR/fusiondirectory.po
index e386dbc40a92e9a2b00734fc12df8afa8a60d37f..8fccd76b13ac14d2918fcf42201b1dc3b01cae1b 100644
--- a/personal/locale/pt_BR/fusiondirectory.po
+++ b/personal/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/personal/class_personalConfig.inc:28
 msgid "Personal configuration"
@@ -178,3 +178,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/ru/fusiondirectory.po b/personal/locale/ru/fusiondirectory.po
index 8a59ebc1c5b110393e0d98642b552718592ec00a..cd05c523674d9a7a401b8c1d77c1e0292578f1d2 100644
--- a/personal/locale/ru/fusiondirectory.po
+++ b/personal/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
@@ -183,3 +183,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/ru@petr1708/fusiondirectory.po b/personal/locale/ru@petr1708/fusiondirectory.po
index dd30034fe4f11a34a74adfd01104ede79bd87f10..448b767ed655b7fc837c57071f2f803cc4cedeb9 100644
--- a/personal/locale/ru@petr1708/fusiondirectory.po
+++ b/personal/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
@@ -174,3 +174,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/sv/fusiondirectory.po b/personal/locale/sv/fusiondirectory.po
index 3499e910d6fefe4b89fdca06693dbe2bdf5c2aee..33170bc570857db78c8ae73e8fe56972e05baa38 100644
--- a/personal/locale/sv/fusiondirectory.po
+++ b/personal/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
@@ -178,3 +178,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/tr_TR/fusiondirectory.po b/personal/locale/tr_TR/fusiondirectory.po
index a092561f6b62747a3dd47ba9836a8eac0148c468..953abfe9216a5d4ffe77cc797ee7997874081e31 100644
--- a/personal/locale/tr_TR/fusiondirectory.po
+++ b/personal/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
@@ -174,3 +174,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/ug/fusiondirectory.po b/personal/locale/ug/fusiondirectory.po
index 89a1e0b1c96e6062523d01d76d391a84685d5643..b34e8ec3df3583876fe7f15f0e7db15e238158b0 100644
--- a/personal/locale/ug/fusiondirectory.po
+++ b/personal/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: config/personal/class_personalConfig.inc:28
 msgid "Personal configuration"
@@ -174,3 +174,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/vi_VN/fusiondirectory.po b/personal/locale/vi_VN/fusiondirectory.po
index 57c27e6a83b1df1d1441f2e5f0bc29b29de90cc4..2743dd4134e7d27d570b5fd80804a37c8de89f38 100644
--- a/personal/locale/vi_VN/fusiondirectory.po
+++ b/personal/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
@@ -178,3 +178,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/zh/fusiondirectory.po b/personal/locale/zh/fusiondirectory.po
index 1f22f3286417e44072025d63c515497180128633..184d4af3ce9e8eb419f55fa7eb51b36c7ebbba15 100644
--- a/personal/locale/zh/fusiondirectory.po
+++ b/personal/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
@@ -178,3 +178,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/locale/zh_TW/fusiondirectory.po b/personal/locale/zh_TW/fusiondirectory.po
index 0e920ac9aa8322ad963df57352d5a90093576dba..0bad14fe177616d7888fe976c404860b564c3245 100644
--- a/personal/locale/zh_TW/fusiondirectory.po
+++ b/personal/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:16+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
@@ -174,3 +174,7 @@ msgstr ""
 msgid ""
 "ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits"
 msgstr ""
+
+#: personal/personal/class_socialHandlers.inc:148
+msgid "Incorrect ORCID value, the checksum does not match"
+msgstr ""
diff --git a/personal/personal/personal/class_personalInfo.inc b/personal/personal/personal/class_personalInfo.inc
index c9f5efef8758c57c65112794adee88f4b88662ae..a5ee05879365f06595fe9da9bab7805c3e8453fe 100644
--- a/personal/personal/personal/class_personalInfo.inc
+++ b/personal/personal/personal/class_personalInfo.inc
@@ -23,9 +23,9 @@ class SocialAccountAttribute extends CompositeAttribute
   function __construct ($label, $description, $ldapName, $acl = "")
   {
     $handlers = socialHandler::listHandlers();
-    parent::__construct (
+    parent::__construct(
       $description, $ldapName,
-      array(
+      [
         new SelectAttribute(
           _('Site'), _('Website the account is on'),
           'socialSite', TRUE,
@@ -36,7 +36,7 @@ class SocialAccountAttribute extends CompositeAttribute
           _('Id'), _('Id of this user on this website'),
           'socialId', TRUE
         )
-      ),
+      ],
       '/^([^:]+):(.*)$/',
       '%s:%s',
       $acl, $label
@@ -47,10 +47,10 @@ class SocialAccountAttribute extends CompositeAttribute
   {
     $handlerClass = 'socialHandler_'.$this->attributes[0]->getValue();
     if (!class_available($handlerClass)) {
-      return array($handlerClass, $this->attributes[1]->getValue());
+      return [$handlerClass, $this->attributes[1]->getValue()];
     }
     $handler      = new $handlerClass();
-    return array($handlerClass::getName(), array('html' => $handler->linkify($this->attributes[1]->getValue())));
+    return [$handlerClass::getName(), ['html' => $handler->linkify($this->attributes[1]->getValue())]];
   }
 
   function check ()
@@ -77,30 +77,30 @@ class SocialAccountAttribute extends CompositeAttribute
 class personalInfo extends simplePlugin
 {
   var $displayHeader = TRUE;
-  var $objectclasses = array('fdPersonalInfo');
+  var $objectclasses = ['fdPersonalInfo'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Personal'),
       'plDescription'   => _('Personal information'),
       'plSelfModify'    => TRUE,
-      'plObjectType'    => array('user'),
+      'plObjectType'    => ['user'],
       'plIcon'          => 'geticon.php?context=applications&icon=user-info&size=48',
       'plSmallIcon'     => 'geticon.php?context=applications&icon=user-info&size=16',
       'plPriority'      => 3,
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Personal info'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Personal title'), _('Personal title - Examples of personal titles are "Ms", "Dr", "Prof" and "Rev"'),
             'personalTitle', FALSE
           ),
@@ -110,43 +110,43 @@ class personalInfo extends simplePlugin
               'fdNickName'
             )
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Badge Number'), _('Company badge number'),
             'fdBadge', FALSE
           ),
-          new DateAttribute (
+          new DateAttribute(
             _('Date of birth'), _('Date of birth'),
             'dateOfBirth', FALSE,
             'Y-m-d', ''
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Sex'), _('Gender'),
             'gender', FALSE,
-            array('', 'M', 'F'), '', array('', 'male', 'female')
+            ['', 'M', 'F'], '', ['', 'male', 'female']
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Country'), _('Country'),
             'co', FALSE
           ),
-          new GeneralizedTimeDateAttribute (
+          new GeneralizedTimeDateAttribute(
             _('Start date'), _('Date this user joined the company'),
             'fdContractStartDate', FALSE,
             ''
           ),
-          new GeneralizedTimeDateAttribute (
+          new GeneralizedTimeDateAttribute(
             _('End date'), _('Date this user is supposed to leave the company'),
             'fdContractEndDate', FALSE,
             ''
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Photo Visible'), _('Should the photo of the user be visible on external tools'),
             'fdPhotoVisible', FALSE, TRUE
           ),
-        )
-      ),
-      'contact' => array(
+        ]
+      ],
+      'contact' => [
         'name'  => _('Contact'),
-        'attrs' => array(
+        'attrs' => [
           new OrderedArrayAttribute(
             new SocialAccountAttribute(
               _('Social account'), _('Social accounts of this user'),
@@ -160,9 +160,9 @@ class personalInfo extends simplePlugin
               'fdPrivateMail'
             )
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 }
 ?>
diff --git a/personal/personal/personal/class_socialHandlers.inc b/personal/personal/personal/class_socialHandlers.inc
index 7db2b00918c72f5aa9b6ce745a284503c7f692bf..a450a7f2fde197e271588df5be939ea086f64eb0 100644
--- a/personal/personal/personal/class_socialHandlers.inc
+++ b/personal/personal/personal/class_socialHandlers.inc
@@ -25,10 +25,10 @@ class socialHandlerInvalidValueException extends FusionDirectoryException
 
 class socialHandler
 {
-  static function listHandlers()
+  static function listHandlers ()
   {
     global $class_mapping;
-    $available = array();
+    $available = [];
     foreach ($class_mapping as $class => $path) {
       if (preg_match('/^socialHandler_(.+)/', $class, $m)) {
         $available[$m[1]] = $class::getName();
@@ -37,7 +37,7 @@ class socialHandler
     return $available;
   }
 
-  static function getName()
+  static function getName ()
   {
     die('Social handler missing getName method');
   }
@@ -45,18 +45,18 @@ class socialHandler
   protected $baseurl = '';
 
   /* Returns a link to the social profile page */
-  function linkify($value)
+  function linkify ($value)
   {
     return $this->link($this->baseurl.'/'.$value, $value);
   }
 
-  protected function link($link, $text)
+  protected function link ($link, $text)
   {
     return '<a href="'.$link.'">'.htmlentities($text).'</a>';
   }
 
   /* Returns the value if ok or throws a socialHandlerInvalidValueException */
-  function validate($value)
+  function validate ($value)
   {
     return $value;
   }
@@ -64,7 +64,7 @@ class socialHandler
 
 class socialHandler_facebook extends socialHandler
 {
-  static function getName()
+  static function getName ()
   {
     return _('Facebook');
   }
@@ -74,19 +74,19 @@ class socialHandler_facebook extends socialHandler
 
 class socialHandler_twitter extends socialHandler
 {
-  static function getName()
+  static function getName ()
   {
     return _('Twitter');
   }
 
   protected $baseurl = 'https://twitter.com';
 
-  function linkify($value)
+  function linkify ($value)
   {
     return $this->link($this->baseurl.'/'.$value, '@'.$value);
   }
 
-  function validate($value)
+  function validate ($value)
   {
     return preg_replace('/^@/', '', $value);
   }
@@ -94,19 +94,19 @@ class socialHandler_twitter extends socialHandler
 
 class socialHandler_diaspora extends socialHandler
 {
-  static function getName()
+  static function getName ()
   {
     return _('Diaspora*');
   }
 
   protected $baseurl = '';
 
-  function linkify($value)
+  function linkify ($value)
   {
     return $value;
   }
 
-  function validate($value)
+  function validate ($value)
   {
     if (!tests::is_email($value)) {
       throw new socialHandlerInvalidValueException(_('Diaspora accounts must look like user@pod'));
@@ -117,7 +117,7 @@ class socialHandler_diaspora extends socialHandler
 
 class socialHandler_linkedin extends socialHandler
 {
-  static function getName()
+  static function getName ()
   {
     return _('LinkedIn');
   }
@@ -127,23 +127,39 @@ class socialHandler_linkedin extends socialHandler
 
 class socialHandler_orcid extends socialHandler
 {
-  static function getName()
+  static function getName ()
   {
     return _('ORCID');
   }
 
   protected $baseurl = 'https://orcid.org';
 
-  function linkify($value)
+  function linkify ($value)
   {
     return $this->link($this->baseurl.'/'.$value, $value);
   }
 
-  function validate($value)
+  function validate ($value)
   {
-    if (!preg_match('/^[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4}$/', $value)) {
+    if (!preg_match('/^[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{3}[0-9X]$/', $value)) {
       throw new socialHandlerInvalidValueException(_('ORCID account IDs must look like XXXX-XXXX-XXXX-XXXX where X are digits'));
     }
+    if (static::orcidCheckSum($value) != substr($value, -1)) {
+      throw new socialHandlerInvalidValueException(_('Incorrect ORCID value, the checksum does not match'));
+    }
     return $value;
   }
+
+  public static function orcidCheckSum ($orcid)
+  {
+    /* Remove hyphens, remove last digit, convert to array */
+    $baseDigits = str_split(str_replace('-', '', substr($orcid, 0, -1)));
+    $sum = 0;
+    foreach ($baseDigits as $baseDigit) {
+      $sum = ($sum + $baseDigit) * 2;
+    }
+    $remainder  = $sum % 11;
+    $result     = (12 - $remainder) % 11;
+    return (($result == 10) ? "X" : (string)$result);
+  }
 }
diff --git a/posix/admin/groups/posix/class_posixGroup.inc b/posix/admin/groups/posix/class_posixGroup.inc
index b7637f893abfba5a715e40e5e917287bdb068023..ed11d11b63379d25be59a58aaf694ef56eaab2da 100644
--- a/posix/admin/groups/posix/class_posixGroup.inc
+++ b/posix/admin/groups/posix/class_posixGroup.inc
@@ -22,40 +22,42 @@
 
 class posixGroup extends simplePlugin
 {
-  public $objectclasses = array('posixGroup');
-  protected $locks      = array();
+  public $objectclasses = ['posixGroup'];
+  protected $locks      = [];
 
-  static function plInfo()
+  static function plInfo ()
   {
     if (class_available('mixedGroup')) {
-      return array();
+      return [];
     }
-    return array(
+    return [
       'plShortName'   => _('Group'),
       'plDescription' => _('POSIX group information'),
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array('group' => array(
+      'plObjectType'  => ['group' => [
         'name'        => _('POSIX group'),
         'description' => _('POSIX user group'),
         'ou'          => get_ou('groupRDN'),
         'filter'      => 'objectClass=posixGroup',
         'icon'        => 'geticon.php?context=types&icon=user-group&size=16',
         'mainAttr'    => 'cn',
-      )),
-      'plForeignKeys'  => array(
-        'memberUid' => array('user','uid')
-      ),
+      ]],
+      'plForeignKeys'  => [
+        'memberUid' => ['user','uid']
+      ],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    global $config;
+
+    return [
+      'main' => [
         'name'  => _('Properties'),
-        'attrs' => array(
+        'attrs' => [
           new BaseSelectorAttribute(get_ou('groupRDN')),
           new StringAttribute(
             _('Name'), _('Name of this group'),
@@ -73,38 +75,38 @@ class posixGroup extends simplePlugin
           new IntAttribute(
             _('GID'), _('GID value for this group'),
             'gidNumber', FALSE,
-            0, FALSE, ''
+            $config->get_cfg_value('minId', 0), FALSE, ''
           )
-        )
-      ),
-      'members' => array(
+        ]
+      ],
+      'members' => [
         'name'  => _('Group members'),
-        'attrs' => array(
+        'attrs' => [
           new UsersAttribute(
             '', _('Group members'),
             'memberUid', FALSE,
-            array(), 'uid'
+            [], 'uid'
           )
-        )
-      ),
-      'system_trust' => array(
+        ]
+      ],
+      'system_trust' => [
         'name'  => _('System trust'),
         'icon'  => 'geticon.php?context=status&icon=locked&size=16',
-        'attrs' => array(
+        'attrs' => [
           new SelectAttribute(
             _('Trust mode'), _('Type of authorization for those hosts'),
             'trustMode', FALSE,
-            array('', 'fullaccess', 'byhost'),
+            ['', 'fullaccess', 'byhost'],
             '',
-            array(_('disabled'), _('full access'), _('allow access to these hosts'))
+            [_('disabled'), _('full access'), _('allow access to these hosts')]
           ),
           new SystemsAttribute(
             '', _('Only allow this group to connect to this list of hosts'),
             'host', FALSE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -113,12 +115,12 @@ class posixGroup extends simplePlugin
 
     $this->attributesAccess['trustMode']->setInLdap(FALSE);
     $this->attributesAccess['trustMode']->setManagedAttributes(
-      array(
-        'multiplevalues' => array('notbyhost' => array('','fullaccess')),
-        'erase' => array(
-          'notbyhost' => array('host')
-        )
-      )
+      [
+        'multiplevalues' => ['notbyhost' => ['','fullaccess']],
+        'erase' => [
+          'notbyhost' => ['host']
+        ]
+      ]
     );
     if ((count($this->host) == 1) && ($this->host[0] == '*')) {
       $this->trustMode = 'fullaccess';
@@ -129,32 +131,26 @@ class posixGroup extends simplePlugin
     $this->attributesAccess['gidNumber']->setUnique(TRUE);
     $this->attributesAccess['force_id']->setInLdap(FALSE);
     $this->attributesAccess['force_id']->setManagedAttributes(
-      array(
-        'disable' => array (
-          FALSE => array (
+      [
+        'disable' => [
+          FALSE => [
             'gidNumber',
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
-  }
-
-  function check()
-  {
-    global $config;
-    $message = parent::check();
-
-    /* Check ID's if they are forced by user */
-    if ($this->force_id) {
-      if ($this->gidNumber < $config->get_cfg_value("minId")) {
-        $message[] = msgPool::toosmall(_("GID"), $config->get_cfg_value("minId"));
+    if ($this->is_template) {
+      /* Template specific handling */
+      if (isset($this->attrs['force_id'])) {
+        $this->force_id = ($this->attrs['force_id'][0] != 'FALSE');
+      }
+      if (!$this->force_id) {
+        $this->gidNumber = '';
       }
     }
-
-    return $message;
   }
 
-  function resetCopyInfos()
+  function resetCopyInfos ()
   {
     parent::resetCopyInfos();
 
@@ -163,15 +159,19 @@ class posixGroup extends simplePlugin
     $this->gidNumber = "";
   }
 
-  function prepare_save()
+  function prepare_save ()
   {
     if (!$this->force_id) {
       /* Handle gidNumber */
-      if ($this->attributesAccess['gidNumber']->getInitialValue() != "") {
-        $this->gidNumber = $this->attributesAccess['gidNumber']->getInitialValue();
+      if ($this->is_template) {
+        $this->gidNumber = '';
       } else {
-        $this->gidNumber = posixAccount::getNextIdLock('gidNumber', $this->dn);
-        $this->locks[] = 'gidNumber';
+        if ($this->attributesAccess['gidNumber']->getInitialValue() != '') {
+          $this->gidNumber = $this->attributesAccess['gidNumber']->getInitialValue();
+        } else {
+          $this->gidNumber = posixAccount::getNextIdLock('gidNumber', $this->dn);
+          $this->locks[] = 'gidNumber';
+        }
       }
     }
 
@@ -181,7 +181,7 @@ class posixGroup extends simplePlugin
     }
 
     if ($this->trustMode == 'fullaccess') {
-      $this->attrs['host'] = array('*');
+      $this->attrs['host'] = ['*'];
     }
 
     /* Trust accounts */
@@ -191,33 +191,45 @@ class posixGroup extends simplePlugin
       unset($this->attrs['objectClass'][$key]);
     }
 
+    if ($this->is_template) {
+      if ($this->force_id) {
+        if ($this->gidNumber == '%askme%') {
+          $this->attrs['force_id'] = '%askme%';
+        } else {
+          $this->attrs['force_id'] = 'TRUE';
+        }
+      } else {
+        $this->attrs['force_id']   = 'FALSE';
+      }
+    }
+
     return $errors;
   }
 
-  function save()
+  function save ()
   {
     $errors = parent::save();
 
     foreach ($this->locks as $lock) {
       del_lock($lock);
     }
-    $this->locks = array();
+    $this->locks = [];
 
     return $errors;
   }
 
-  function addUser($dn, $uid)
+  function addUser ($dn, $uid)
   {
     $this->attributesAccess['memberUid']->addValue($dn,
-      array(
+      [
         'dn'  => $dn,
-        'uid' => array($uid),
-        'cn'  => array($uid)
-      )
+        'uid' => [$uid],
+        'cn'  => [$uid]
+      ]
     );
   }
 
-  function removeUser($uid)
+  function removeUser ($uid)
   {
     $this->attributesAccess['memberUid']->searchAndRemove($uid);
   }
diff --git a/posix/config/posix/class_posixConfig.inc b/posix/config/posix/class_posixConfig.inc
index 6a2b482a4b6228152b76620738c4c5fd61ba659c..28d2da4320ab14c5d6971446191efddff130a77c 100644
--- a/posix/config/posix/class_posixConfig.inc
+++ b/posix/config/posix/class_posixConfig.inc
@@ -20,101 +20,101 @@
 
 class posixConfig extends simplePlugin
 {
-  var $objectclasses = array();
+  var $objectclasses = [];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('POSIX configuration'),
       'plDescription'   => _('FusionDirectory POSIX plugin configuration'),
       'plSelfModify'    => FALSE,
-      'plCategory'      => array('configuration'),
-      'plObjectType'    => array('smallConfig'),
+      'plCategory'      => ['configuration'],
+      'plObjectType'    => ['smallConfig'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Posix'),
-        'class' => array('critical'),
-        'attrs' => array(
-          new StringAttribute (
+        'class' => ['critical'],
+        'attrs' => [
+          new StringAttribute(
             _('POSIX groups RDN'), _('The branch where POSIX groups are stored.'),
             'fdGroupRDN', TRUE,
             'ou=groups'
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Group/user min id'),
             _('The minimum assignable user or group id to avoid security leaks with id 0 accounts.'),
             'fdMinId', FALSE,
             0, FALSE, 100
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Next id hook'), _('A script to be called for finding the next free id number for users or groups.'),
             'fdNextIdHook', FALSE
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Base number for user id'),
             _('Where to start looking for a new free user id.'),
             'fdUidNumberBase', FALSE,
             0, FALSE, 1100
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Base number for group id'),
             _('Where to start looking for a new free group id.'),
             'fdGidNumberBase', FALSE,
             0, FALSE, 1100
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Id allocation method'), _('Method to allocate user/group ids'),
             'fdIdAllocationMethod', TRUE,
-            array('traditional', 'pool'), 'traditional',
-            array(_('Traditional'), _('Samba unix id pool'))
+            ['traditional', 'pool'], 'traditional',
+            [_('Traditional'), _('Samba unix id pool')]
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Pool user id min'), _('Minimum value for user id when using pool method'),
             'fdUidNumberPoolMin', FALSE,
             0, FALSE, 10000
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Pool user id max'), _('Maximum value for user id when using pool method'),
             'fdUidNumberPoolMax', FALSE,
             0, FALSE, 40000
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Pool group id min'), _('Minimum value for group id when using pool method'),
             'fdGidNumberPoolMin', FALSE,
             0, FALSE, 10000
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Pool group id max'), _('Maximum value for group id when using pool method'),
             'fdGidNumberPoolMax', FALSE,
             0, FALSE, 40000
           ),
-        )
-      ),
-      'shells' => array(
+        ]
+      ],
+      'shells' => [
         'name'  => _('Shells'),
-        'attrs' => array(
+        'attrs' => [
           new SetAttribute(
-            new StringAttribute (
+            new StringAttribute(
               _('Available shells'), _('Available POSIX shells for FD users.'),
               'fdShells', FALSE
             ),
-            array('/bin/ash','/bin/bash','/bin/csh','/bin/sh','/bin/ksh',
-                  '/bin/tcsh','/bin/dash','/bin/zsh','/sbin/nologin', '/bin/false', '/usr/bin/git-shell')
+            ['/bin/ash','/bin/bash','/bin/csh','/bin/sh','/bin/ksh',
+                  '/bin/tcsh','/bin/dash','/bin/zsh','/sbin/nologin', '/bin/false', '/usr/bin/git-shell']
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Default shell'), _('Shell used by default when activating Unix tab.'),
             'fdDefaultShell', TRUE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE, $attributesInfo = NULL)
@@ -124,18 +124,18 @@ class posixConfig extends simplePlugin
     $this->attributesAccess['fdDefaultShell']->setChoices($this->fdShells);
 
     $this->attributesAccess['fdIdAllocationMethod']->setManagedAttributes(
-      array(
-        'erase' => array (
-          'traditional' => array (
+      [
+        'erase' => [
+          'traditional' => [
             'fdUidNumberPoolMin','fdUidNumberPoolMax',
             'fdGidNumberPoolMin','fdGidNumberPoolMax',
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
   }
 
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
     $this->attributesAccess['fdDefaultShell']->setChoices($this->fdShells);
diff --git a/posix/locale/af_ZA/fusiondirectory.po b/posix/locale/af_ZA/fusiondirectory.po
index 254872e04fdeb6c540a9d7f187a64d6e4ad763e0..1a09b53135b524fb3d2ab7a8ec80d0a307ed38fe 100644
--- a/posix/locale/af_ZA/fusiondirectory.po
+++ b/posix/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
@@ -33,82 +33,80 @@ msgstr ""
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
@@ -236,254 +234,250 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr ""
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -491,10 +485,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/ar/fusiondirectory.po b/posix/locale/ar/fusiondirectory.po
index 51e289e54735bf856f51e40c9cba2797a255c8ba..228d5d59fe9c55209998661ce69c1b7787eee36c 100644
--- a/posix/locale/ar/fusiondirectory.po
+++ b/posix/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
@@ -37,82 +37,80 @@ msgstr ""
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr "الخواص"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "الإسم"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr "الوصف"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
@@ -240,254 +238,250 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr "تلقائي"
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr ""
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr "تحذير"
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "خطأ"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -495,10 +489,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/ca/fusiondirectory.po b/posix/locale/ca/fusiondirectory.po
index 636eb36b3b3b23fdb9139db4a47c89dcd16a08e2..d34c3c2058011b217634869dd8f3389e740dbb72 100644
--- a/posix/locale/ca/fusiondirectory.po
+++ b/posix/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
@@ -37,82 +37,80 @@ msgstr ""
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "Nom"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
@@ -240,254 +238,250 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr "Directori personal"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr "Intèrpret d'ordres"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr "Compte"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr "UID"
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr "Avís"
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "Error"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr "Error d'LDAP"
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -495,10 +489,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/cs_CZ/fusiondirectory.po b/posix/locale/cs_CZ/fusiondirectory.po
index a5418b81dbaa331fc228918b48a4e715cb633e3d..fda22a5ee988df1ac2e58caeea759d9dc9cbc604 100644
--- a/posix/locale/cs_CZ/fusiondirectory.po
+++ b/posix/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
@@ -38,82 +38,80 @@ msgstr "POSIX skupina"
 msgid "POSIX user group"
 msgstr "POSIX skupina uživatelů"
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr "Vlastnosti"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "Název"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr "Název této skupiny"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr "Popis"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr "Stručný popis této skupiny"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr "vynutit GID"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr "Vynutit konkrétní identifikátor pro tuto skupinu"
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr "GID"
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr "Identifikátor (GID) pro tuto skupinu"
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr "Členové skupiny"
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr "systém důvěryhodnosti"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr "režim důvěryhodnosti"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr "Typ ověřování pro tyto stroje"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr "zakázáno"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr "plný přístup"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr "povolit přístup k těmto strojům"
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr "Této skupině umožnit připojení pouze na stroje z tohoto seznamu"
 
@@ -253,91 +251,91 @@ msgstr "Výchozí shell"
 msgid "Shell used by default when activating Unix tab."
 msgstr "Shell použitý jako výchozí při aktivaci Unix karty."
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr "Unix"
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr "upravit POSIXová nastavení uživatele"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr "Domovská složka"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr "Umístění domovské složky tohoto uživatele"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr "shell"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr "Který shell by měl být použit, když se uživatel přihlásí"
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr "nenastaveno"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr "Hlavní skupina"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr "Hlavní skupina tohoto uživatele"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr "Stav"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr "Stav tohoto unixového uživatelského účtu"
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr "Vynutit konkrétní identifikátor uživatele/skupiny"
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 "Pro tohoto uživatele vynutit konkrétní identifikátory uživatele a jeho "
 "hlavní skupiny"
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr "Identifikátor uživatele"
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr "Hodnota identifikátoru účtu tohoto uživatele"
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr "Idenifikátor skupiny"
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr "Hodnota identifikátoru hlavní skupiny tohoto uživatele"
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr "Členství ve skupinách"
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr "Účet"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr "Uživatel musí při prvním přihlášení změnit heslo."
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
@@ -345,11 +343,11 @@ msgstr ""
 "Při prvním přihlášení musí uživatel změnit heslo (vyžaduje nastavenou "
 "hodnotu u Prodleva před vynucením změny hesla)"
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr "Minimální prodleva mezi změnami hesla (dny)"
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
@@ -357,11 +355,11 @@ msgstr ""
 "Uživatel nebude moci změnit své heslo před uplynutím tohoto počtu dnů "
 "(nevyplnění funkci vypíná)"
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr "Prodleva před vynucením změny hesla (dny)"
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
@@ -369,22 +367,22 @@ msgstr ""
 "Po tomto počtu dnů bude uživatel přiměn ke změně hesla (nevyplnění funkce "
 "vypíná)"
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr "Datum skončení platnosti hesla"
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 "Datum po kterém skončí platnost hesla uživatele (nevyplnění tuto funkci "
 "vypíná)"
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr "Délka nečinnosti uživatele, po které bude účet uživatele vypnut (dny)"
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
@@ -393,11 +391,11 @@ msgstr ""
 "než dojde k jeho vypnutí (zůstane ovšem zachován). Nevyplnění tuto funkci "
 "vypíná"
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr "Prodleva varování uživatele před skončením platnosti hesla (dny)"
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
@@ -405,46 +403,42 @@ msgstr ""
 "Uživatel bude varován nastavený počet dnů předem před skončením platnosti "
 "hesla (nevyplnění tuto funkci vypíná)"
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr "Tomuto uživateli povolit připojení pouze na počítače z tohoto seznamu"
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr "automatické"
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr "platnost skončila"
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr "běží čas odkladu"
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr "aktivní"
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr "platnost hesla skončila"
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr "heslo nelze změnit"
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr "UID"
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr "Skupina uživatele %s"
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
@@ -453,73 +447,73 @@ msgstr ""
 "Automatickou hlavní skupinu (pomocí gidNumber „%s“) se nedaří vytvořit  "
 "kvůli následujícím chybám"
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr "Varování"
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr "Neznámá metoda přiřazování identifikátorů „%s“!"
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 "Překročení časového limitu při čekání na zámek. Zámek od %s nebude brán v "
 "potaz!"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "Chyba"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr "Není k dispozici volné ID:"
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr "%sPoolMin >= %sPoolMax!"
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr "chyba LDAPu"
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr "Identifikátor sambaUnixIdPool není jedinečný!"
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr "Není k dispozici ID!"
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr "překročen maximální počet neúspěšných pokusů!"
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr "Není k dispozici volné ID – není co přidělit!"
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -527,10 +521,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr "„nextIdHook“ není k dispozici. Bude použit výchozí základ!"
diff --git a/posix/locale/de/fusiondirectory.po b/posix/locale/de/fusiondirectory.po
index f05c791208f2ab87b59977aabfa3801dceb5990a..a1054cce5b2bbb823b88ff87eca302a60132ec43 100644
--- a/posix/locale/de/fusiondirectory.po
+++ b/posix/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
@@ -37,82 +37,80 @@ msgstr "POSIX-Gruppe"
 msgid "POSIX user group"
 msgstr "POSIX-Benutzergruppe"
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr "Eigenschaften"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "Name"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr "Name dieser Gruppe"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr "Beschreibung"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr "Kurze Beschreibung dieser Gruppe"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr "Erzwinge GID"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr "GID-Wert für diese Gruppe erzwingen"
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr "GID"
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr "GID-Wert für diese Gruppe"
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr "Gruppenmitglieder"
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr "System-Vertrauen"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr "Vertrauens-Modus"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr "Art der Authorisierung für diese Hosts"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr "deaktiviert"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr "Vollzugriff"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr "erlaube Zugriff auf diese Hosts"
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr "Nur dieser Gruppe erlauben, dieser Liste von Hosts zu verbinden"
 
@@ -242,91 +240,91 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr "Unix"
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr "Benutzer POSIX-Einstellungen bearbeiten"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr "Basisverzeichnis"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr "Der Pfad zum Heimatverzeichnis für diesen Benutzer"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr "Shell"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 "Welche Shell soll verwendet werden, wenn dieser Benutzer sich einloggt"
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr "unkonfiguriert"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr "Primäre Gruppe"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr "Primäre Gruppe für diesen Benutzer"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr "Status"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr "Status dieses Benutzer unixkontos"
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr "Benutzer-/Gruppenkennung erzwingen"
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 "Benutzerkennungs- und Gruppenkennungswerte für diesen Benutzer erzwingen"
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr "Benutzerkennung"
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr "Benutzerkennwert für diesen Benutzer"
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr "Gruppenkennung"
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr "Gruppenkennwert für diesen Benutzer"
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr "Gruppenmitgliedschaft"
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr "Konto"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr "Benutzer muss beim ersten Anmelden sein Passwort ändern"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
@@ -334,11 +332,11 @@ msgstr ""
 "Benutzer muss das Passwort bei der ersten Anmeldung ändern (benötigt einen "
 "Wert für die Verzögerung, bevor die Passwortänderung erzwungen wird)"
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr "Mindestverzögerung zwischen Passwortänderungen (Tage)"
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
@@ -346,11 +344,11 @@ msgstr ""
 "Der Benutzer kann sein Passwort nicht vor dieser Anzahl an Tagen ändern (zum"
 " Deaktivieren leer lassen)"
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr "Verzögerung bevor die Passwortänderung forciert wird (Tage)"
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
@@ -358,23 +356,23 @@ msgstr ""
 "Der Benutzer wird gezwungen werden, sein Passwort nach dieser Anzahl von "
 "Tagen zu ändern (Leer lassen zum Deaktivieren)"
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr "Passwort Ablaufdatum"
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 "Datum nach dem dieses Benutzerpasswort ablaufen wird (leer lassen zur "
 "Deaktivierung)"
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 "Verzögerung von Inaktivität bevor der Benutzer deaktiviert wird (Tage)"
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
@@ -382,11 +380,11 @@ msgstr ""
 "Maximale Verzögerung der Inaktivität nach Passwortablauf bevor der Benutzer "
 "deaktiviert wird (leer lassen zum Deaktivieren)"
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr "Verzögerung für Benutzerwarnung vor Passwortablauf (Tage)"
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
@@ -394,117 +392,113 @@ msgstr ""
 "Der Benutzer wird diese Anzahl an Tagen vorher gewarnt, bevor sein Passwort "
 "aufläuft (leer lassen zum Deaktivieren)"
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr "Nur diesem Benutzer erlauben, dieser Liste von Hosts zu verbinden"
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr "automatisch"
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr "abgelaufen"
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr "Nachfrist aktiv"
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr "aktiv"
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr "Passwort abgelaufen"
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr "Passwort kann nicht geändert werden"
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr "UID"
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr "Gruppe des Benutzers %s"
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr "Warnung"
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "Fehler"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr "Konnte keine freie ID allozieren:"
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr "%sPoolMin >= %sPoolMax!"
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr "LDAP-Fehler"
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr "sambaUnixIdPool ist nicht eindeutig!"
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr "keine ID verfügbar!"
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr "maximale Anzahl von Versuchen abgelaufen!"
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr "Konnte keine freie ID allozieren!"
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -512,10 +506,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/el_GR/fusiondirectory.po b/posix/locale/el_GR/fusiondirectory.po
index 5fbdfc602ae90f41af31d101c8cf3f13657a325c..2e64d3107d08ed8acc8882d497eff754b32a4e80 100644
--- a/posix/locale/el_GR/fusiondirectory.po
+++ b/posix/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
@@ -37,82 +37,80 @@ msgstr "Ομάδα POSIX"
 msgid "POSIX user group"
 msgstr "Ομάδα χρηστών POSIX"
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr "Ιδιότητες"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "Όνομα"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr "Όνομα αυτής της ομάδας"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr "Περιγραφή"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr "Σύντομη περιγραφή αυτής της ομάδας"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr "Εξαναγκασμός GID"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr "Εξαναγκασμός τιμής GID για αυτή την ομάδα"
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr "GID"
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr "Τιμή GID για αυτήν την ομάδα"
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr "Μέλη ομάδας"
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr "Εμπιστοσύνη συστήματος"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr "Λειτουργία επιστοσύνης"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr "Τύπος εξουσιοδότησή για αυτά τα συστήματα"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr "απενεργοποιημένο"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr "Πλήρης Πρόσβαση"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr "να επιτραπεί πρόσβαση σε αυτά τα host"
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 "Επιτρέπεται σ'αυτή την ομάδα να συνδέεται στην ακόλουθη λίστα διακομιστών"
@@ -243,92 +241,92 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr "Unix"
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr "Επεξεργασία ρυθμίσεων χρηστών POSIX"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr "Προσωπικός κατάλογος"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr "Η διαδρομή για τον αρχικό κατάλογο του χρήστη"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr "Κέλυφος"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr "Ποιο κέλυφος πρέπει να χρησιμοποιηθεί όταν ο χρήστης συνδεθεί"
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr "μη ρυθμισμένο"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr "Κύρια ομάδα"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr "Κύρια ομάδα του χρήστη"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr "Κατάσταση"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr "Κατάσταση του λογαριασμού unix του χρήστη"
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr "Εξαναγκασμός user/group id"
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 "Υποχρέωση συμπλήρωσης τιμών για user id και group id για αυτόν τον χρήστη"
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr "User id"
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr "Τιμή User id για αυτόν τον χρήστη."
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr "Group id"
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr "Τιμή Group id για αυτόν τον χρήστη"
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr "Μέλη ομάδας"
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr "Λογαριασμός"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr ""
 "Ο χρήστης θα πρέπει να αλλάξει τον κωδικό πρόσβασης κατά την πρώτη του "
 "σύνδεση"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
@@ -337,21 +335,21 @@ msgstr ""
 " Καθυστέρηση δηλώνει το πόσες φορές μπορεί ο χρήστης να συνδεθεί πριν "
 "αναγκαστεί να αλλάξει συνθηματικό)"
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr "Καθυστέρηση πριν την υποχρεωτική αλλαγή κωδικού πρόσβασης (σε ημέρες)"
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
@@ -359,22 +357,22 @@ msgstr ""
 "Ο χρήστης θα υποχρεωθεί να αλλάξει τον κωδικό πρόσβασής του μετά από αυτό "
 "τον αριθμό ημερών (αφήστε κενό για απενεργοποίηση)"
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr "Ημερομηνία λήξης κωδικού πρόσβασης"
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 "Ημερομηνία μετά από την οποία θα λήγει ο κωδικός πρόσβασης (αφήστε κενό για "
 "απενεργοποίηση)"
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr "Ημέρες αδράνειας πριν από την απενεργοποίηση του χρήστη"
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
@@ -382,11 +380,11 @@ msgstr ""
 "Μέγιστος αριθμός ημερών αδράνειας μετά την λήξη του κωδικού πρόσβασης πριν "
 "την απενεργοποίηση του χρήστη (αφήστε κενό για απενεργοποίηση)"
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr "Ημέρες μεταξύ προειδοποίησης χρήστη και λήξης κωδικού:"
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
@@ -394,118 +392,114 @@ msgstr ""
 "Ο χρήστης θα προειδοποιείται αυτόν τον αριθμό των ημερών πριν από τη λήξη "
 "του κωδικού πρόσβασής του (αφήστε κενό για απενεργοποίηση)"
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 "Επιτρέπεται σ'αυτόν τον χρήστη να συνδέεται στην ακόλουθη λίστα διακομιστών"
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr "αυτόματο"
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr " έληξε"
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr "χρονικό διάστημα χάριτος ενεργό"
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr "ενεργό"
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr "ο κωδικός πρόσβασης έχει λήξει"
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr "ο κωδικός πρόσβασης δεν μπορεί να αλλάξει"
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr ""
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr "Ομάδα του χρήστη %s"
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr "Προειδοποίηση"
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "Σφάλμα"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr "Δεν είναι δυνατό να ανατεθεί μια free ID:"
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr "Σφάλμα LDAP"
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr "sambaUnixIdPool  δεν είναι μοναδική!"
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr "Μη διαθέσιμη ID!"
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr "Υπέρβαση μεγίστου ορίου προσπαθειών!"
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr "Δεν είναι δυνατή η διάθεση μιας  free ID!"
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -513,10 +507,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/en/fusiondirectory.po b/posix/locale/en/fusiondirectory.po
index 436da12f3c41a70c64100e58f616db7b38d8476f..f817b671cc22859541de493d5023f58663a90d82 100644
--- a/posix/locale/en/fusiondirectory.po
+++ b/posix/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,462 +17,478 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
-msgid "Unix"
+#: config/posix/class_posixConfig.inc:28
+msgid "POSIX configuration"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:89
-msgid "Edit users POSIX settings"
+#: config/posix/class_posixConfig.inc:29
+msgid "FusionDirectory POSIX plugin configuration"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
-msgid "Home directory"
+#: config/posix/class_posixConfig.inc:42
+msgid "Posix"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
-msgid "The path to the home directory of this user"
+#: config/posix/class_posixConfig.inc:46
+msgid "POSIX groups RDN"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
-msgid "Shell"
+#: config/posix/class_posixConfig.inc:46
+msgid "The branch where POSIX groups are stored."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
-msgid "Which shell should be used when this user log in"
+#: config/posix/class_posixConfig.inc:51
+msgid "Group/user min id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:128
-msgid "unconfigured"
+#: config/posix/class_posixConfig.inc:52
+msgid ""
+"The minimum assignable user or group id to avoid security leaks with id 0 "
+"accounts."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
-msgid "Primary group"
+#: config/posix/class_posixConfig.inc:57
+msgid "Next id hook"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
-msgid "Primary group for this user"
+#: config/posix/class_posixConfig.inc:57
+msgid ""
+"A script to be called for finding the next free id number for users or "
+"groups."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
-msgid "Status"
+#: config/posix/class_posixConfig.inc:61
+msgid "Base number for user id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
-msgid "Status of this user unix account"
+#: config/posix/class_posixConfig.inc:62
+msgid "Where to start looking for a new free user id."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
-msgid "Force user/group id"
+#: config/posix/class_posixConfig.inc:67
+msgid "Base number for group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
-msgid "Force user id and group id values for this user"
+#: config/posix/class_posixConfig.inc:68
+msgid "Where to start looking for a new free group id."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
-msgid "User id"
+#: config/posix/class_posixConfig.inc:73
+msgid "Id allocation method"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
-msgid "User id value for this user"
+#: config/posix/class_posixConfig.inc:73
+msgid "Method to allocate user/group ids"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
-msgid "Group id"
+#: config/posix/class_posixConfig.inc:76
+msgid "Traditional"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
-msgid "Group id value for this user"
+#: config/posix/class_posixConfig.inc:76
+msgid "Samba unix id pool"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
-msgid "Group membership"
+#: config/posix/class_posixConfig.inc:79
+msgid "Pool user id min"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:163
-msgid "Account"
+#: config/posix/class_posixConfig.inc:79
+msgid "Minimum value for user id when using pool method"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
-msgid "User must change password on first login"
+#: config/posix/class_posixConfig.inc:84
+msgid "Pool user id max"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
-msgid ""
-"User must change password on first login (needs a value for Delay before "
-"forcing password change)"
+#: config/posix/class_posixConfig.inc:84
+msgid "Maximum value for user id when using pool method"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
-msgid "Minimum delay between password changes (days)"
+#: config/posix/class_posixConfig.inc:89
+msgid "Pool group id min"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
-msgid ""
-"The user won't be able to change his password before this number of days "
-"(leave empty to disable)"
+#: config/posix/class_posixConfig.inc:89
+msgid "Minimum value for group id when using pool method"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
-msgid "Delay before forcing password change (days)"
+#: config/posix/class_posixConfig.inc:94
+msgid "Pool group id max"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
-msgid ""
-"The user will be forced to change his password after this number of days "
-"(leave empty to disable)"
+#: config/posix/class_posixConfig.inc:94
+msgid "Maximum value for group id when using pool method"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
-msgid "Password expiration date"
+#: config/posix/class_posixConfig.inc:101
+msgid "Shells"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
-msgid ""
-"Date after which this user password will expire (leave empty to disable)"
+#: config/posix/class_posixConfig.inc:105
+msgid "Available shells"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
-msgid "Delay of inactivity before disabling user (days)"
+#: config/posix/class_posixConfig.inc:105
+msgid "Available POSIX shells for FD users."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
-msgid ""
-"Maximum delay of inactivity after password expiration before the user is "
-"disabled (leave empty to disable)"
+#: config/posix/class_posixConfig.inc:112
+msgid "Default shell"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
-msgid "Delay for user warning before password expiry (days)"
+#: config/posix/class_posixConfig.inc:112
+msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
-msgid ""
-"The user will be warned this number of days before his password expiration "
-"(leave empty to disable)"
+#: admin/groups/posix/class_posixGroup.inc:34
+msgid "Group"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:203
-#: admin/groups/posix/class_posixGroup.inc:91
-msgid "System trust"
+#: admin/groups/posix/class_posixGroup.inc:35
+msgid "POSIX group information"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:207
-#: admin/groups/posix/class_posixGroup.inc:95
-msgid "Trust mode"
+#: admin/groups/posix/class_posixGroup.inc:38
+msgid "POSIX group"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:207
-#: admin/groups/posix/class_posixGroup.inc:95
-msgid "Type of authorization for those hosts"
+#: admin/groups/posix/class_posixGroup.inc:39
+msgid "POSIX user group"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
-#: admin/groups/posix/class_posixGroup.inc:99
-msgid "disabled"
+#: admin/groups/posix/class_posixGroup.inc:59
+msgid "Properties"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
-#: admin/groups/posix/class_posixGroup.inc:99
-msgid "full access"
+#: admin/groups/posix/class_posixGroup.inc:63
+msgid "Name"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:211
-#: admin/groups/posix/class_posixGroup.inc:99
-msgid "allow access to these hosts"
+#: admin/groups/posix/class_posixGroup.inc:63
+msgid "Name of this group"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:214
-msgid "Only allow this user to connect to this list of hosts"
+#: admin/groups/posix/class_posixGroup.inc:68
+msgid "Description"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:292
-msgid "automatic"
+#: admin/groups/posix/class_posixGroup.inc:68
+msgid "Short description of this group"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:353
-msgid "expired"
+#: admin/groups/posix/class_posixGroup.inc:72
+msgid "Force GID"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:355
-msgid "grace time active"
+#: admin/groups/posix/class_posixGroup.inc:72
+msgid "Force GID value for this group"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
-msgid "active"
+#: admin/groups/posix/class_posixGroup.inc:76
+msgid "GID"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
-msgid "password expired"
+#: admin/groups/posix/class_posixGroup.inc:76
+msgid "GID value for this group"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:360
-msgid "password not changeable"
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
+msgid "Group members"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
+msgid "System trust"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:425
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-msgid "GID"
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
+msgid "Trust mode"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:537
-#, php-format
-msgid "Group of user %s"
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
+msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:783
-#: personal/posix/class_posixAccount.inc:804
-#: personal/posix/class_posixAccount.inc:998
-msgid "Warning"
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
+msgid "disabled"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:783
-#, php-format
-msgid "Unknown ID allocation method \"%s\"!"
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
+msgid "full access"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:805
-#, php-format
-msgid "Timeout while waiting for lock. Ignoring lock from %s!"
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+msgid "allow access to these hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:832
-#: personal/posix/class_posixAccount.inc:872
-#: personal/posix/class_posixAccount.inc:884
-#: personal/posix/class_posixAccount.inc:888
-#: personal/posix/class_posixAccount.inc:895
-#: personal/posix/class_posixAccount.inc:904
-#: personal/posix/class_posixAccount.inc:966
-msgid "Error"
+#: admin/groups/posix/class_posixGroup.inc:104
+msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:832
-#: personal/posix/class_posixAccount.inc:872
-#: personal/posix/class_posixAccount.inc:884
-#: personal/posix/class_posixAccount.inc:888
-#: personal/posix/class_posixAccount.inc:895
-#: personal/posix/class_posixAccount.inc:904
-msgid "Cannot allocate a free ID:"
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
+msgid "Unix"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:832
-#, php-format
-msgid "%sPoolMin >= %sPoolMax!"
+#: personal/posix/class_posixAccount.inc:90
+msgid "Edit users POSIX settings"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:864
-msgid "LDAP error"
+#: personal/posix/class_posixAccount.inc:122
+msgid "Home directory"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:872
-msgid "sambaUnixIdPool is not unique!"
+#: personal/posix/class_posixAccount.inc:122
+msgid "The path to the home directory of this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:884
-#: personal/posix/class_posixAccount.inc:888
-msgid "no ID available!"
+#: personal/posix/class_posixAccount.inc:127
+msgid "Shell"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:904
-msgid "maximum tries exceeded!"
+#: personal/posix/class_posixAccount.inc:127
+msgid "Which shell should be used when this user log in"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:966
-msgid "Cannot allocate a free ID!"
+#: personal/posix/class_posixAccount.inc:129
+msgid "unconfigured"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:998
-msgid "\"nextIdHook\" is not available. Using default base!"
+#: personal/posix/class_posixAccount.inc:133
+msgid "Primary group"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:28
-msgid "POSIX configuration"
+#: personal/posix/class_posixAccount.inc:133
+msgid "Primary group for this user"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:29
-msgid "FusionDirectory POSIX plugin configuration"
+#: personal/posix/class_posixAccount.inc:137
+msgid "Status"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:42
-msgid "Posix"
+#: personal/posix/class_posixAccount.inc:137
+msgid "Status of this user unix account"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:46
-msgid "POSIX groups RDN"
+#: personal/posix/class_posixAccount.inc:141
+msgid "Force user/group id"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:46
-msgid "The branch where POSIX groups are stored."
+#: personal/posix/class_posixAccount.inc:141
+msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:51
-msgid "Group/user min id"
+#: personal/posix/class_posixAccount.inc:145
+msgid "User id"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:52
-msgid ""
-"The minimum assignable user or group id to avoid security leaks with id 0 "
-"accounts."
+#: personal/posix/class_posixAccount.inc:145
+msgid "User id value for this user"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:57
-msgid "Next id hook"
+#: personal/posix/class_posixAccount.inc:150
+msgid "Group id"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:57
-msgid ""
-"A script to be called for finding the next free id number for users or "
-"groups."
+#: personal/posix/class_posixAccount.inc:150
+msgid "Group id value for this user"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:61
-msgid "Base number for user id"
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
+msgid "Group membership"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:62
-msgid "Where to start looking for a new free user id."
+#: personal/posix/class_posixAccount.inc:164
+msgid "Account"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:67
-msgid "Base number for group id"
+#: personal/posix/class_posixAccount.inc:168
+msgid "User must change password on first login"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:68
-msgid "Where to start looking for a new free group id."
+#: personal/posix/class_posixAccount.inc:168
+msgid ""
+"User must change password on first login (needs a value for Delay before "
+"forcing password change)"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:73
-msgid "Id allocation method"
+#: personal/posix/class_posixAccount.inc:172
+msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:73
-msgid "Method to allocate user/group ids"
+#: personal/posix/class_posixAccount.inc:172
+msgid ""
+"The user won't be able to change his password before this number of days "
+"(leave empty to disable)"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:76
-msgid "Traditional"
+#: personal/posix/class_posixAccount.inc:177
+msgid "Delay before forcing password change (days)"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:76
-msgid "Samba unix id pool"
+#: personal/posix/class_posixAccount.inc:177
+msgid ""
+"The user will be forced to change his password after this number of days "
+"(leave empty to disable)"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:79
-msgid "Pool user id min"
+#: personal/posix/class_posixAccount.inc:182
+msgid "Password expiration date"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:79
-msgid "Minimum value for user id when using pool method"
+#: personal/posix/class_posixAccount.inc:182
+msgid ""
+"Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:84
-msgid "Pool user id max"
+#: personal/posix/class_posixAccount.inc:187
+msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:84
-msgid "Maximum value for user id when using pool method"
+#: personal/posix/class_posixAccount.inc:187
+msgid ""
+"Maximum delay of inactivity after password expiration before the user is "
+"disabled (leave empty to disable)"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:89
-msgid "Pool group id min"
+#: personal/posix/class_posixAccount.inc:192
+msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:89
-msgid "Minimum value for group id when using pool method"
+#: personal/posix/class_posixAccount.inc:192
+msgid ""
+"The user will be warned this number of days before his password expiration "
+"(leave empty to disable)"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:94
-msgid "Pool group id max"
+#: personal/posix/class_posixAccount.inc:215
+msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:94
-msgid "Maximum value for group id when using pool method"
+#: personal/posix/class_posixAccount.inc:293
+msgid "automatic"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:101
-msgid "Shells"
+#: personal/posix/class_posixAccount.inc:354
+msgid "expired"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:105
-msgid "Available shells"
+#: personal/posix/class_posixAccount.inc:356
+msgid "grace time active"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:105
-msgid "Available POSIX shells for FD users."
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
+msgid "active"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:112
-msgid "Default shell"
+#: personal/posix/class_posixAccount.inc:359
+msgid "password expired"
 msgstr ""
 
-#: config/posix/class_posixConfig.inc:112
-msgid "Shell used by default when activating Unix tab."
+#: personal/posix/class_posixAccount.inc:361
+msgid "password not changeable"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:34
-msgid "Group"
+#: personal/posix/class_posixAccount.inc:524
+#, php-format
+msgid "Group of user %s"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:35
-msgid "POSIX group information"
+#: personal/posix/class_posixAccount.inc:546
+#, php-format
+msgid ""
+"Could not create automatic primary group (using gidNumber \"%s\"), because "
+"of the following errors"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:38
-msgid "POSIX group"
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
+msgid "Warning"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:39
-msgid "POSIX user group"
+#: personal/posix/class_posixAccount.inc:779
+#, php-format
+msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
-msgid "Properties"
+#: personal/posix/class_posixAccount.inc:801
+#, php-format
+msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:61
-msgid "Name"
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
+msgid "Error"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:61
-msgid "Name of this group"
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+msgid "Cannot allocate a free ID:"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
-msgid "Description"
+#: personal/posix/class_posixAccount.inc:828
+#, php-format
+msgid "%sPoolMin >= %sPoolMax!"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
-msgid "Short description of this group"
+#: personal/posix/class_posixAccount.inc:860
+msgid "LDAP error"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
-msgid "Force GID"
+#: personal/posix/class_posixAccount.inc:868
+msgid "sambaUnixIdPool is not unique!"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
-msgid "Force GID value for this group"
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+msgid "no ID available!"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-msgid "GID value for this group"
+#: personal/posix/class_posixAccount.inc:900
+msgid "maximum tries exceeded!"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
-msgid "Group members"
+#: personal/posix/class_posixAccount.inc:962
+msgid "Cannot allocate a free ID!"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:102
-msgid "Only allow this group to connect to this list of hosts"
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
+#, php-format
+msgid ""
+"%s\n"
+"Result: %s\n"
+"Using default base!"
+msgstr ""
+
+#: personal/posix/class_posixAccount.inc:1011
+msgid "\"nextIdHook\" did not return a valid output!"
+msgstr ""
+
+#: personal/posix/class_posixAccount.inc:1020
+msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/es/fusiondirectory.po b/posix/locale/es/fusiondirectory.po
index 312fc8e619e05955af421624fe9852e824b3c605..0f1e1e52281cf17ed3fcea35e10b5c220d7ad8df 100644
--- a/posix/locale/es/fusiondirectory.po
+++ b/posix/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/groups/posix/class_posixGroup.inc:34
 msgid "Group"
@@ -37,82 +37,80 @@ msgstr ""
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr "Propiedades"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "Nombre"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr "Descripción"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr "Forzar GID"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr "GID"
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr "Miembros del grupo"
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr "Sistema de seguridad"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr "Modo seguro"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr "desactivado"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr "Acceso sin restricciones"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr "Permitir el acceso a estos equipos"
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
@@ -240,255 +238,251 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr "Editar parametros de usuarios POSIX"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr "Directorio de usuario"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr "Shell"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr "Sin configurar"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr "Grupo primario"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr "Estado"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr "Pertenencia a grupo"
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr "Cuenta"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr ""
 "El usuario debe introducir la contraseña en el primer inicio de sesión"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr "automático"
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr "expiró"
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr "Periodo de gracia activado"
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr "activo"
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr "la contraseña expiró"
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr "no puede cambiar la contraseña"
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr "UID"
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr "Aviso"
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "Error"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr "No se puede asignar un identificador (ID) libre:"
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr "¡%sPoolMin >= %sPoolMax!"
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr "Error LDAP"
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr "¡sambaUnixIdPool no es único!"
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr "¡No hay ID disponibles!"
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr "¡Excedido el número de intentos máximo!"
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr "¡No se puede asignar un identificador (ID) libre!"
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -496,10 +490,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/es_CO/fusiondirectory.po b/posix/locale/es_CO/fusiondirectory.po
index 20937e82665b4d9ae16ade8479538ae88a764661..62be206f7ae91a130c324d30205852632587d7f4 100644
--- a/posix/locale/es_CO/fusiondirectory.po
+++ b/posix/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/groups/posix/class_posixGroup.inc:34
 msgid "Group"
@@ -37,82 +37,80 @@ msgstr "Grupo POSIX"
 msgid "POSIX user group"
 msgstr "Grupo de Usuarios POSIX"
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr "Propiedades"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "Nombre"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr "Nombre de este grupo"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr "Descripción"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr "Una descripción corta de este grupo."
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr "Forzar GID"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr "Forzar GID para éste grupo"
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr "GID"
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr "Valor GID para éste grupo"
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr "Miembros del Grupo"
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr "Confianza del Sistema"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr "Modo de Confianza"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr "Tipo de autorización para ésos equipos"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr "deshabilitado"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr "Acceso Completo"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr "Permitir acceso a ésos equipos"
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 "Habilitar solamente a éste grupo para conectarse a ésta lista de equipos."
@@ -247,89 +245,89 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr "Unix"
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr "Editar configuración POSIX de los usuarios"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr "'Home' del usuario"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr "La ruta al nuevo directorio 'home' del usuario."
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr "Shell"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr "Qué 'shells' deberían usarse cuando este usuario inicie sesión."
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr "Aún sin configurar"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr "Grupo Primario"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr "Grupo primario para este usuario"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr "Estado"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr "Estado de la cuenta Unix de este usuario"
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr "Forzar 'id' de usuario/grupo "
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr "Forzar los valores 'id' y 'group id' para éste usuario."
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr "id de usuario"
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr "Forzar valor 'id' para este usuario"
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr "id de Grupo"
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr "Forzar valor 'Group id' para este usuario."
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr "Pertenencia a grupos"
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr "Cuenta de usuario"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr "El usuario debe cambiar su contraseña en el primer inicio de sesión."
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
@@ -337,21 +335,21 @@ msgstr ""
 "El usuario debe cambiar su contraseña en el primer inicio de sesión "
 "(necesita un valor de retraso antes de forzar el cambio de contraseña)"
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr "Retraso antes de forzar el cambio de contraseña (días)"
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
@@ -359,22 +357,22 @@ msgstr ""
 "El usuario será forzado a cambiar su contraseña después de este número de "
 "días (deje vacío para deshabilitar)"
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr "Fecha de caducidad para la contraseña"
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 "La fecha tras la cual la contraseña de este usuario va a caducar (deje vacío"
 " para deshabilitar)"
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr "Retraso de inactividad antes de deshabilitar el usuario (días)"
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
@@ -382,12 +380,12 @@ msgstr ""
 "Luego de que caduque la contraseña del usuario, tiempo máximo de retraso "
 "antes de deshabilitar la cuenta del usuario (deje vacío para deshabilitar)"
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 "Retraso para avisar al usuario sobre el vencimiento de su contraseña (días)"
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
@@ -395,117 +393,113 @@ msgstr ""
 "El usuario será advertido esta cantidad de días antes de que su contraseña "
 "caduque (deje vacío para deshabilitar)"
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr "Permitir a este usuario conectarse a esta lista de hosts."
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr "automático"
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr "expirado"
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr "Período de gracia activo"
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr "activo"
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr "Contraseña expirada"
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr "Contraseña no modificable"
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr "UID"
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr "Grupo del usuario %s"
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr "Precacuión"
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "Error"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr "%sPoolMin >= %sPoolMax!"
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr "Error LDAP"
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr "!sambaUnixIdPool no es un valor único!"
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -513,10 +507,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/es_VE/fusiondirectory.po b/posix/locale/es_VE/fusiondirectory.po
index 4c3e1cf9c4e3ed6cbe7b4c24b0e8b27f6f17599d..98c07c06bfeb6dd50cde3f7b25b5c4e81a440bad 100644
--- a/posix/locale/es_VE/fusiondirectory.po
+++ b/posix/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/groups/posix/class_posixGroup.inc:34
 msgid "Group"
@@ -37,82 +37,80 @@ msgstr ""
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr "Propiedades"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "Nombre"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr "Descripción"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr "Forzar GID"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr "GID"
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr "Miembros del grupo"
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr "Sistema de seguridad"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr "Modo seguro"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr "desactivado"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr "Acceso sin restricciones"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr "Permitir el acceso a estos equipos"
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
@@ -240,255 +238,251 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr "Editar parametros de usuarios POSIX"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr "Directorio de usuario"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr "Shell"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr "Sin configurar"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr "Grupo primario"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr "Estado"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr "Pertenencia a grupo"
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr "Cuenta"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr ""
 "El usuario debe introducir la contraseña en el primer inicio de sesión"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr "automático"
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr "expiró"
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr "Periodo de gracia activado"
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr "activo"
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr "la contraseña expiró"
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr "no puede cambiar la contraseña"
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr "UID"
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr "Aviso"
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "Error"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr "No se puede asignar un identificador (ID) libre:"
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr "¡%sPoolMin >= %sPoolMax!"
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr "Error de LDAP"
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr "¡sambaUnixIdPool no es único!"
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr "¡No hay ID disponibles!"
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr "¡Excedido el número de intentos máximo!"
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr "¡No se puede asignar un identificador (ID) libre!"
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -496,10 +490,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/fa_IR/fusiondirectory.po b/posix/locale/fa_IR/fusiondirectory.po
index 3bdb28f5dbd1a4b835cf281e8837b6783a109798..6bb77cda1297d50903cafde917c41580396cf063 100644
--- a/posix/locale/fa_IR/fusiondirectory.po
+++ b/posix/locale/fa_IR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
@@ -37,82 +37,80 @@ msgstr ""
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
@@ -240,254 +238,250 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr ""
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "خطا"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr "خطای LDAP"
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -495,10 +489,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/fi_FI/fusiondirectory.po b/posix/locale/fi_FI/fusiondirectory.po
index e2bbc5a0554de848a9e07434ce4cb97c8b8cb90e..f627320880fefb93ac16cf3a4617325d0e2a18e9 100644
--- a/posix/locale/fi_FI/fusiondirectory.po
+++ b/posix/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
@@ -37,82 +37,80 @@ msgstr ""
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr "Ominaisuudet"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "Nimi"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr "Kuvaus"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
@@ -240,254 +238,250 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr ""
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr "Varoitus"
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "Virhe"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr "LDAP virhe"
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -495,10 +489,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/fr/fusiondirectory.po b/posix/locale/fr/fusiondirectory.po
index 5386c9e3e37262f8a9dd32b1659a88e5764e1fc9..5f5cd841ddbb261aba7078752757b7270b3a1036 100644
--- a/posix/locale/fr/fusiondirectory.po
+++ b/posix/locale/fr/fusiondirectory.po
@@ -5,22 +5,22 @@
 # 
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2017
-# Benoit Mortier <benoit.mortier@opensides.be>, 2019
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2019
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
-"Last-Translator: Benoit Mortier <benoit.mortier@opensides.be>, 2019\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2019\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/groups/posix/class_posixGroup.inc:34
 msgid "Group"
@@ -38,82 +38,80 @@ msgstr "Groupe POSIX"
 msgid "POSIX user group"
 msgstr "Groupe d’utilisateurs POSIX"
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr "Propriétés"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "Nom"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr "Nom du groupe"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr "Description"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr "Description courte pour ce groupe"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr "Forcer le GID"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr "Forcer la valeur du GID pour ce groupe"
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr "GID"
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr "GID de ce groupe"
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr "Membres du groupe"
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr "Systèmes autorisés"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr "Mode de confiance"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr "Type d'autorisation pour ces hôtes"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr "désactivé"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr "accès complet"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr "permettre l'accès a ces hôtes"
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr "Autoriser ce groupe à se connecter uniquement sur cette liste d'hôtes"
 
@@ -245,91 +243,91 @@ msgstr "Shell par défaut"
 msgid "Shell used by default when activating Unix tab."
 msgstr "Shell utilisé par défaut lors de l'activation du tab Unix."
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr "Unix"
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr "Éditer les paramètres POSIX"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr "Répertoire personnel"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr "Chemin du répertoire \"home\" de cet utilisateur"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr "Shell"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr "Shell à utiliser lors de la connexion de l’utilisateur"
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr "non configuré"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr "Groupe principal"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr "Groupe principal de cet utilisateur"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr "Statut"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr "Statut du compte unix de l'utilisateur"
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr "Forcer l’id d’utilisateur/groupe"
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 "Forcer les valeurs des ids d’utilisateur et de groupe pour cet utilisateur"
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr "Id d’utilisateur"
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr "Id d’utilisateur à utiliser pour cet utilisateur"
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr "Id de groupe"
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr "Id de groupe à utiliser pour cet utilisateur"
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr "Appartenance aux groupes"
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr "Compte"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr ""
 "L'utilisateur doit changer son mot de passe lors de sa première connexion"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
@@ -337,11 +335,11 @@ msgstr ""
 "L'utilisateur doit changer son mot de passe lors de sa première connexion "
 "(nécessite une valeur dans «Délai avant de forcer le changement»)"
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr "Délai minimum entre les changements de mot de passe (jours)"
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
@@ -349,11 +347,11 @@ msgstr ""
 "L'utilisateur ne sera pas autorisé à changer son mot de passe avant ce "
 "nombre de jours (laisser vide pour désactiver)"
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr "Délai avant de forcer le changement de mot de passe (en jours)"
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
@@ -361,22 +359,22 @@ msgstr ""
 "L'utilisateur sera forcé de changer son mot de passe après ce nombre de "
 "jours (laisser vide pour désactiver)"
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr "Date d'expiration du mot de passe"
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 "Date après laquelle le mot de passe de l'utilisateur va expirer (laisser "
 "vide pour désactiver)"
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr "Délai d'inactivité avant de désactiver l'utilisateur (en jours)"
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
@@ -384,11 +382,11 @@ msgstr ""
 "Délai maximum d'inactivité après l'expiration du mot de passe avant que "
 "l'utilisateur soit désactivé (laisser vide pour désactiver)"
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr "Délai pour avertir de l'expiration de son mot de passe (en jours)"
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
@@ -396,46 +394,42 @@ msgstr ""
 "L'utilisateur sera averti à partir de ce nombre de jours restant avant "
 "l'expiration de son mot de passe (laisser vide pour désactiver)"
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr "Autoriser cet utilisateur à se connecter uniquement sur ces hôtes"
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr "automatique"
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr "expiré"
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr "temps de grâce actif"
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr "actif"
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr "mot de passe expiré"
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr "mot de passe non modifiable"
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr "UID"
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr "Groupe de l'utilisateur %s"
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
@@ -444,71 +438,71 @@ msgstr ""
 "Impossible de créer un groupe principal automatique (à l'aide de gidNumber "
 "\"%s\"), en raison des erreurs suivantes"
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr "Avertissement"
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr "Méthode d'allocation inconnue pour «%s» !"
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr "Le temps d'attente du verrou a été dépassé. Verrou ignoré pour %s !"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "Erreur"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr "Impossible d'allouer un ID libre :"
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr "%sPoolMin >= %sPoolMax !"
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr "Erreur LDAP"
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr "sambaUnixIdPool n'est pas unique !"
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr "Pas d’ID disponible !"
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr "Nombre maximum d'essais dépassés !"
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr "Impossible d'allouer un ID libre !"
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -519,11 +513,11 @@ msgstr ""
 "Résultat : %s\n"
 "Utilisation de la base par défaut !"
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr "\"nextIdHook\" n'a pas renvoyé une sortie valide!"
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
 "«nextIdHook» n’est pas disponible. Utilisation de la base par défaut !"
diff --git a/posix/locale/hu_HU/fusiondirectory.po b/posix/locale/hu_HU/fusiondirectory.po
index a0ff2819d091bcb0146f13d88533a7915456f0d8..305cf17177227d2d04d5acac12c5bb306a9b8734 100644
--- a/posix/locale/hu_HU/fusiondirectory.po
+++ b/posix/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
@@ -37,82 +37,80 @@ msgstr ""
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "Név"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr "Csoport neve"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr "Leírás"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
@@ -240,254 +238,250 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr ""
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -495,10 +489,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/id/fusiondirectory.po b/posix/locale/id/fusiondirectory.po
index 542d9c1dba1becb7b4ed80257d1f6699061f8046..9caccc75fa3b783620569f3f1c3072ecbdfaee0b 100644
--- a/posix/locale/id/fusiondirectory.po
+++ b/posix/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
@@ -33,82 +33,80 @@ msgstr ""
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
@@ -236,254 +234,250 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr ""
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -491,10 +485,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/it_IT/fusiondirectory.po b/posix/locale/it_IT/fusiondirectory.po
index c5a4c16414d1b0f4645849985756021bc45f62dd..d3320d8a7e6f2cfc26956ae682b8e1a939d802bf 100644
--- a/posix/locale/it_IT/fusiondirectory.po
+++ b/posix/locale/it_IT/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Last-Translator: Paola Penati <paola.penati@opensides.be>, 2019\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -20,7 +20,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/groups/posix/class_posixGroup.inc:34
 msgid "Group"
@@ -38,82 +38,80 @@ msgstr "Gruppo POSIX"
 msgid "POSIX user group"
 msgstr "Gruppo utenti POSIX"
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr "Proprietà"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "Nome"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr "Nome del gruppo"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr "Descrizione"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr "Breve descrizione del gruppo"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr "Forza il GID"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr "Forzare il valore GID per questo gruppo"
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr "GID"
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr "Valore GID per questo gruppo"
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr "Membri del gruppo"
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr "Sistema di fiducia"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr "Modalità di fiducia"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr "Tipo di autorizzazione per questi host"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr "disattivato"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr "accesso completo"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr "autorizza l'accesso a questi host"
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr "Consenti all'utente di connettersi solo a questo elenco di host "
 
@@ -247,89 +245,89 @@ msgstr ""
 "Shell utilizzato per impostazione predefinita durante l'attivazione scheda "
 "Unix."
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr "Unix"
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr "Modifica le impostazioni POSIX dell'utente"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr "Home directory"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr "Il path verso la cartella personale di questo utente"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr "Shell"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr "Quale shell dovrà essere usata quando l'utente sarà connesso"
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr "non configurato"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr "Gruppo primario"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr "Gruppo primario per questo utente"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr "Stato"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr "Stato di questo account utente unix"
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr "Forza l'id utente/gruppo"
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr "Forza valori ID utente e ID gruppo per questo utente"
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr "Utente"
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr "Valore utente per questo utente"
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr "numero del Gruppo"
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr "Valore del numero del gruppo per questo utente"
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr "Gruppi di appartenenza"
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr "Account"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr "L'utente dovrà cambiare la password alla prima connessione"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
@@ -337,11 +335,11 @@ msgstr ""
 "L'utente deve cambiare password al primo login (serve un valore di ritardo "
 "prima di forzare il cambio password)"
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr "Lasso di tempo minimo tra le modifiche delle password (giorni)"
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
@@ -349,11 +347,11 @@ msgstr ""
 "L'utente non sarà in grado di cambiare la propria password prima di questo "
 "numero di giorni (lasciare vuoto per disabilitare)"
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr "Richiamo prima dell'obbligo di modifica della password (giorni)"
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
@@ -361,24 +359,24 @@ msgstr ""
 "L'utente sarà obbligato di cambiare la sua password dopo questo numero di "
 "giorni (lasciare vuoto per disabilitare)"
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr "Data di scadenza della password"
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 "Data dopo la quale questa password utente scadrà (lasciare vuoto per "
 "disabilitare)"
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 "Periodo di inattività prima della disattivazione dell'account utente "
 "(giorni)"
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
@@ -386,11 +384,11 @@ msgstr ""
 "Ritardo massimo di inattività dopo la scadenza della password prima che "
 "l'utente venga disabilitato (lasciare vuoto per disabilitare)"
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr "Richiamo per l'utente prima che la password scada (giorni)"
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
@@ -398,46 +396,42 @@ msgstr ""
 "L'utente sarà avvertito questo numero di giorni prima della scadenza della "
 "sua password (lasciare vuoto per disabilitare)"
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr "Consenti all'utente di connettersi solo a questo elenco di host"
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr "automatico"
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr "Scaduto"
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr "Il tempo di grazia è attivo"
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr "Attivo"
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr "Password scaduta"
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr "Password non modificabile"
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr "UID"
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr "Gruppo di utenti %s"
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
@@ -446,71 +440,71 @@ msgstr ""
 "Impossibile creare il gruppo principale automatico (utilizzando gidNumber "
 "\"%s\") a causa dei seguenti errori"
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr "Avvertimento"
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr "Metodo di assegnazione ID \"%s\" sconosciuto!"
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr "Timeout durante l'attesa per il blocco. Ignorare blocco da %s!"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "Errore"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr "Impossibile assegnare un ID libero:"
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr "%sPoolMin >= %sPoolMax!"
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr "Errore LDAP"
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr "sambaUnixIdPool non è univoco !"
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr "nessun ID disponibile !"
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr "Il numero massimo di tentativi è stato superato"
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr "Impossibile assegnare un ID libero!"
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -521,10 +515,10 @@ msgstr ""
 "Risultato: %s\n"
 "Utilizzando la base predefinita!"
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr "\"nextIdHook\" non ha restituito un risultato valido!"
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr "\"NextIdHook\" non è disponibile. Utilizzo della base di default!"
diff --git a/posix/locale/ja/fusiondirectory.po b/posix/locale/ja/fusiondirectory.po
index 516676f3faa6bd0a60c05f1379f421971f7f73fa..60dd8eb4938246b971cde21c737fcd0fa508f4c5 100644
--- a/posix/locale/ja/fusiondirectory.po
+++ b/posix/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
@@ -33,82 +33,80 @@ msgstr ""
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
@@ -236,254 +234,250 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr ""
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -491,10 +485,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/ko/fusiondirectory.po b/posix/locale/ko/fusiondirectory.po
index 0ab5297b7c6944b69ac95ec58862e79e42efb271..98b4849ea32910fb1c3a415414ab5ca0cace7566 100644
--- a/posix/locale/ko/fusiondirectory.po
+++ b/posix/locale/ko/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# Choi Chris <chulwon.choi@gmail.com>, 2018
+# Choi Chris <chulwon.choi@gmail.com>, 2019
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
-"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
+"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2019\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -37,82 +37,80 @@ msgstr "POSIX 그룹"
 msgid "POSIX user group"
 msgstr "POSIX 사용자 그룹"
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr "설정"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "명칭"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr "그룹 명칭"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr "설명"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr "그룹 요약"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr "GID 부여"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr "그룹 GID 값"
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr "GID"
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr "그룹 GID"
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr "그룹 멤버"
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr "시스템 트러스트"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr "트러스트 노드"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr "호스트에 대한 인증 타입"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr "미사용"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr "ì „ì²´ ì ‘ê·¼"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr "호스트에 접근 허용"
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr "그룹만 호스트 리스트에 접근 허용"
 
@@ -240,265 +238,264 @@ msgstr "기본 쉘"
 msgid "Shell used by default when activating Unix tab."
 msgstr "Unix 탭이 활성화될 때 사용될 기본 쉘"
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr "Unix"
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr "사용자 POSIX 설정 펼집"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr "홈 디렉토리"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr "사용자의 홈 디렉토리 경로"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr "쉘"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr "사용자가 로그인할 때 사용될 웰"
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr "설정되지 않음"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr "기본 그룹"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr "사용자 기본 그룹"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr "상태"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr "사용자  unix 계정의 상태"
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr "사용자/그룹 id 강제"
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr "사용자의 id와 그룹 id 값 강제"
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr "사용자 id"
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr "사용자 id 값"
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr "그룹 id"
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr "사용자의 그룹 id"
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr "그룹 회원"
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr "계정"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr "처음 로그인 시 패스워드 변경"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr "최초 로그인 시 패스워드를 변경해야 합니다.(강제 패스워드 변경 전 기간 설정 필요)"
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr "최소 비밀번호 변경 기간(일)"
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr "해당 일자 전에 패스워드를 변경할 수 없습니다.(미사용 시 공백)"
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr "강제 패스워든 변경 기간(일)"
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
 msgstr "해당 일자 이후에는 패스워드를 강제로 변경합니다.(미사용 시 공백)"
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr "패스워드 만료일"
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr "해당일자 이후에는 사용자 패스워드가 만료됩니다.(미사용 시 공백)"
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr "사용자 제한 전 비활성화 기간(일)"
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
 msgstr "사용자가 미사용이 되기 전에 패스워드가 만료된 이후 최대 비활성화 기간(미사용 시 공백)"
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr "패스워드 만료 전 사용자 경고 기간(일)"
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
 msgstr "패스워드가 만료되기 전 해당 일자 동안 경고를 받게 됩니다.(미사용 시 공백)"
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr " 호스트 리스트에만 접속 허용"
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr "자동"
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr "만료"
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr "활성화 시간"
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr "활성화"
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr "패스워드 만료"
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr "패스워드 변경불가"
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr "UID"
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr "사용자 %s의 그룹"
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
-msgstr ""
+msgstr "다음 오류로 인해 자동 기본 그룹 (gidNumber \"%s\" 사용)을 작성할 수 없습니다."
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
-msgstr "ã…—"
+msgstr "경고"
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr "알 수 없는 ID 할당방법 \"%s\"!"
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr "잠금 대시 타임아웃. %s 잠금 무시!"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "오류"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr "ID를 할당할 수 없음"
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr "%s 풀 최소값 >= %s 풀 최대값!"
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr "LDAP 오류"
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr "삼바 Unix id 풀이 유일하지 않음!"
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr "가능한 ID 없음!"
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr "최대 실행횟수 초과!"
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr "ID를 할당할 수 없음!"
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
 "Result: %s\n"
 "Using default base!"
 msgstr ""
+"1%s\n"
+"ê²°ê³¼ : %s\n"
+"기본베이스 사용!"
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
-msgstr ""
+msgstr "\"nextIdHook\"가 유효한 출력을 반환하지 않았습니다!"
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr "\"nextidHook\"은 사용가능하지 않음. 기본값 사용!"
diff --git a/posix/locale/lv/fusiondirectory.po b/posix/locale/lv/fusiondirectory.po
index 0ebc8a77527936788f4ed1ad4c19bf4f0cbf318d..d4e3504c02043672e5bec6fe9c5f58f17dee4270 100644
--- a/posix/locale/lv/fusiondirectory.po
+++ b/posix/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
@@ -37,82 +37,80 @@ msgstr ""
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "Vārds "
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr "Apraksts"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
@@ -240,254 +238,250 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr ""
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr "Brīdinājums"
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "Kļūda"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr "LDAP kļūda"
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -495,10 +489,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/nb/fusiondirectory.po b/posix/locale/nb/fusiondirectory.po
index 5fbcfb2c30ddf6eac6e5a2fc00984c4c81e44c9e..92a305c9a38ecd5fc42a394a8fa3a6c26ce9d24d 100644
--- a/posix/locale/nb/fusiondirectory.po
+++ b/posix/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
@@ -37,82 +37,80 @@ msgstr ""
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr "Egenskaper"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "Navn"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr "Beskrivelse"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
@@ -240,254 +238,250 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr ""
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "Feil"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr "LDAP-feil"
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -495,10 +489,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/nl/fusiondirectory.po b/posix/locale/nl/fusiondirectory.po
index 61d02d71bf5eca6cdab0f79086b44bc575a9e765..34731e794be6ab2a8b6b4547d7068b8955bdef4e 100644
--- a/posix/locale/nl/fusiondirectory.po
+++ b/posix/locale/nl/fusiondirectory.po
@@ -6,16 +6,16 @@
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2017
 # Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017
-# Benoit Mortier <benoit.mortier@opensides.be>, 2018
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
-"Last-Translator: Benoit Mortier <benoit.mortier@opensides.be>, 2018\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -39,82 +39,80 @@ msgstr "POSIX groep"
 msgid "POSIX user group"
 msgstr "POSIX gebruikersgroep"
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr "Eigenschappen"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "Naam"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr "Naam van deze groep"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr "Omschrijving"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr "Korte beschrijving van deze groep"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr "Verplicht GID"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr "Verplichte GID waarde voor deze groep"
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr "GID"
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr "GID waarde voor deze groep"
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr "Groepsleden"
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr "Systeem-trust"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr "Trust-modus"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr "Type van authorisatie voor deze hosts"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr "gedeactiveerd"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr "volledige toegang"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr "sta toegang op deze hosts toe"
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr "Laat alleen deze groep toe om met deze lijst van hosts te verbinden "
 
@@ -246,89 +244,89 @@ msgstr "Standaard shell"
 msgid "Shell used by default when activating Unix tab."
 msgstr "Standaard shell gebruikt bij activatie Unix tab"
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr "Unix"
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr "Bewerk gebruikers POSIX instellingen"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr "Persoonlijke directory"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr "Het pad naar de home directory van de user"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr "Shell"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr "Welke shell gebruikt moet worden als deze gebruiker inlogt"
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr "ongeconfigureerd"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr "Primaire groep"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr "Primaire groep voor deze gebruiker"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr "Status"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr "Status van deze gebruiker unix account"
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr "Verplicht gebruiker/groep-id"
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr "Verplicht gebruikers-id en groeps-id waardes voor deze gebruiker"
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr "Gebruikers-id"
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr "Gebruikers-id waarde voor deze gebruiker"
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr "Groeps-id"
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr "Groeps-id waarde voor deze gebruiker"
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr "Groep lidmaatschap"
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr "Account"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr "Gebruiker moet het paswoord bij de eerste aanmelding veranderen"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
@@ -336,11 +334,11 @@ msgstr ""
 "Gebruiker moet paswoord veranderen bij eerste inlog (heeft een uitstelwaarde"
 " nodig voordat paswoord verandering wordt afgedwongen)"
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr "Minimum uitstel tussen paswoord veranderingen (dagen) "
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
@@ -348,11 +346,11 @@ msgstr ""
 "De gebruiker zal niet in staat zijn om zijn paswoord te veranderen voordat "
 "dit aantal dagen verstreken is (leeg laten bij niet gebruik)"
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr "Periode voor het afdwingen van een paswoord verandering (dagen)"
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
@@ -360,22 +358,22 @@ msgstr ""
 "De gebruiker zal gedwongen worden om zijn paswoord te veranderen na dit "
 "aantal dagen (leeg laten bij niet gebruik)"
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr "Paswoord vervaldatum"
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 "Datum na dewelke het gebruiker paswoord zal vervallen (leeg laten bij niet "
 "gebruik)"
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr "Periode van inactiviteit voor het uitschakelen van gebruikers (dagen)"
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
@@ -383,12 +381,12 @@ msgstr ""
 "Maximum periode van inactiviteit na paswoord vervaldatum voordat de "
 "gebruiker disabled wordt gezet (leeg laten bij niet gebruik)"
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 "Periode voor gebruikerswaarschuwingen voordat paswoord vervalt (dagen)"
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
@@ -396,46 +394,42 @@ msgstr ""
 "De gebruiker zal dit aantal dagen voor paswoord vervaldatum gewaarschuwd "
 "worden (laat leeg bij niet gebruik)"
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr "Laat alleen deze gebruiker toe om te verbinden met de lijst van hosts"
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr "automatisch"
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr "verlopen"
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr "gratie tijd actief"
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr "actief"
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr "paswoord vervallen"
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr "paswoord niet wijzigbaar"
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr "UID"
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr "Groep van gebruikers %s"
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
@@ -444,71 +438,71 @@ msgstr ""
 "Impossible de créer un groupe principal automatique (à l'aide de gidNumber "
 "\"%s\"), en raison des erreurs suivantes"
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr "Waarschuwing"
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr "Onbekende ID allocatiemethode \"%s\"!"
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr "Timeout tijdens het wachten voor een lock. Negeer lock van %s!"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "Fout"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr "Kan geen vrij ID alloceren:"
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr "%sPoolMin >=%sPoolMax!"
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr "LDAP fout"
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr "sambaUnixIdPool is niet uniek!"
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr "Geen ID beschikbaar!"
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr "maximum pogingen overschreden!"
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr "Kan geen vrij ID toekennen!"
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -516,10 +510,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr "\"nextIdHook\" is niet beschikbaar. Gebruik standaard basis!"
diff --git a/posix/locale/pl/fusiondirectory.po b/posix/locale/pl/fusiondirectory.po
index 4cbda5af14b7fe9345e918872c696b00b756549d..906ab4cc3c41ad9731d4471036f8674b8324047b 100644
--- a/posix/locale/pl/fusiondirectory.po
+++ b/posix/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
@@ -37,82 +37,80 @@ msgstr ""
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr "Właściwości"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "ImiÄ™"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr "Opis"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr "WymuÅ› GID"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr "GID"
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr "Członkowie grupy"
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr "Zaufanie systemowe"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr "Tryb zaufania"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr "wyłączone"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr "pełen dostęp"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr "zezwól na dostęp do tych hostów"
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
@@ -240,254 +238,250 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr "Katalog domowy"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr "Shell"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr "nieskonfigurowane"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr "Grupa podstawowa"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr "Status"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr "Przynależność do grup"
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr "Konto"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr "Użytkownik musi zmienić hasło przy pierwszym logowaniu"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr "automatyczne"
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr "wygasło"
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr "Czas prolongaty aktywny"
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr "Aktywne"
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr "hasło wygasło"
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr "hasło niezmienialne"
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr "UID"
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr "Ostrzeżenie"
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "Błąd"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr "błąd LDAP"
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -495,10 +489,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/pt/fusiondirectory.po b/posix/locale/pt/fusiondirectory.po
index eadf8b9b7514d8194e28430878f51f8f72522769..2f1b0ac4a491b6f29e71b32d7a7d4dc7771be45b 100644
--- a/posix/locale/pt/fusiondirectory.po
+++ b/posix/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/groups/posix/class_posixGroup.inc:34
 msgid "Group"
@@ -37,82 +37,80 @@ msgstr ""
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr "Propriedades"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "Nome"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr "Descrição"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr "Forçar GID"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr "GID"
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr "Membros do grupo"
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr "Sistema de confiança"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr "Modo de confiança"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr "desabilitado"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr "acesso completo"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr "permitir acesso a estas máquinas"
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
@@ -240,254 +238,250 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr "Diretório pessoal"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr "Shell"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr "desconfigurado"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr "Grupo primário"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr "Estatus"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr "Membros do grupo"
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr "Conta"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr "O usuário deve alterar sua senha no primeiro acesso"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr "automático"
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr "expirado"
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr "ativo"
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr "UID"
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr "Atenção"
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "Erro"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr "Erro de LDAP"
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -495,10 +489,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/pt_BR/fusiondirectory.po b/posix/locale/pt_BR/fusiondirectory.po
index 576a7f479081958cc147f1ea2a955d5d0a5b8b34..632cbf7a6c80a7ab6aab2d0725cb2703cbf646ad 100644
--- a/posix/locale/pt_BR/fusiondirectory.po
+++ b/posix/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/groups/posix/class_posixGroup.inc:34
 msgid "Group"
@@ -37,82 +37,80 @@ msgstr ""
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr "Propriedades"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "Nome"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr "Descrição"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr "GID"
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr "Sistema de confiança"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr "Modo de confiança"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr "desabilitado"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr "Acesso total"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr "Permitir acesso a esses servidores"
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
@@ -240,254 +238,250 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr "Unix"
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr "Diretório principal"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr "O pacote para o diretório principal deste usuário"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr "Shell"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr "Estado"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr "Conta"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr "Permitir apenas que este usuário conecte-se à lista de hosts"
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr "automático"
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr "senha expirada"
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr ""
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr "Aviso"
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "Erro"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr "Erro de LDAP"
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -495,10 +489,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/ru/fusiondirectory.po b/posix/locale/ru/fusiondirectory.po
index 30a515e19b70f3b836b39824d9286d2d43fa7098..33c69c820da78a5b7be5cf700104c17ba53ceab5 100644
--- a/posix/locale/ru/fusiondirectory.po
+++ b/posix/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
@@ -37,82 +37,80 @@ msgstr "POSIX группа"
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr "Свойства"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "Название"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr "Название этой группы"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr "Описание"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr "Краткое описание группы"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr "Указать GID вручную"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr "Указать значение GID для группы"
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr "GID"
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr "GID значение для этой группы"
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr "Члены группы"
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr "Системные доверия"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr "Режим доверия"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr "Тип авторизации для этих хостов"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr "отключен"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr "полный доступ"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr "разрешить доступ только на эти хосты"
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr "Позволить подключаться этой группе только к хостам из списка"
 
@@ -248,92 +246,92 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr "Unix"
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr "Редактировать POSIX настройки пользователя"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr "Домашний каталог"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr "Путь к домашнему каталогу пользователя"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr "Оболочка"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 "Какой шелл должен использоваться, когда пользователь заходит в систему"
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr "Не настроено"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr "Основная группа"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr "Основная группа пользователя"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr "Состояние"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr "Статус учетной записи unix у пользователя"
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr "Принудительный id пользователя/группы"
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 "Навязанное значение идентификатора пользователя и группы для этого "
 "пользователя"
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr "Id пользователя"
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr "Значение идентификатора пользователя"
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr "Id группы"
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr "Значение идентификатора группы"
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr "Членство в группах"
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr "Учетная запись"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr "Пользователь должен сменить пароль при первом входе в систему"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
@@ -341,21 +339,21 @@ msgstr ""
 "Пользователь должен будет изменить пароль при первом входе (нужно указать "
 "значение для \"Задержка до принудительного изменения пароля\")"
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr "Минимальная задержка между изменениями пароля (дни)"
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr "Задержка до принудительного изменения пароля (дни)"
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
@@ -363,22 +361,22 @@ msgstr ""
 "У пользователя насильно будет изменен пароль после указанного количества "
 "дней (оставить пустым, чтобы отключить)"
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr "Дата окончания действия пароля"
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 "Дата после которой пароль пользователя истечет (оставить пустым что бы "
 "отключить)"
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr "Через сколько отключать пользователя (дни)"
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
@@ -386,11 +384,11 @@ msgstr ""
 "Сколько подождать до отключения пользователя, после истечения пароля "
 "(оставить пустым, чтобы отключить)"
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr "За сколько предупреждать об окончании действия пароля (дни)"
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
@@ -398,117 +396,113 @@ msgstr ""
 "Предупреждать пользователя об окончании действия его пароля за указанное "
 "количество дней (оставить пустым, чтобы отключить)"
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr "Пользователю разрешено подключаться только к хостам из списка"
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr "автоматически"
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr "Истек"
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr "активный"
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr "срок действия параля истек"
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr "Пароль не изменяем"
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr "UID"
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr "Группа пользователя %s"
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr "Предупреждение"
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "Ошибка"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr "Не могу выделить свободный ID:"
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr "%sPoolMin >= %sPoolMax!"
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr "Ошибка LDAP"
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr "sambaUnixIdPool не уникальна!"
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr "нет доступных ID!"
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr "Превышено максимальное число попыток!"
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr "Не могу выделить свободный ID!"
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -516,10 +510,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/ru@petr1708/fusiondirectory.po b/posix/locale/ru@petr1708/fusiondirectory.po
index 747b685134084813c676a0f0e71f4b75c777fb88..effa3eb3bfc208637392520ffa17be36f25fb0d7 100644
--- a/posix/locale/ru@petr1708/fusiondirectory.po
+++ b/posix/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
@@ -33,82 +33,80 @@ msgstr ""
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
@@ -236,254 +234,250 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr ""
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -491,10 +485,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/sv/fusiondirectory.po b/posix/locale/sv/fusiondirectory.po
index 0d264823482ab96798a03328765ce7b97e10b7cc..e30e347d5085e73a1c080be011aa124cf6aef527 100644
--- a/posix/locale/sv/fusiondirectory.po
+++ b/posix/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
@@ -37,82 +37,80 @@ msgstr ""
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr "Egenskaper"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "Namn"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr "Beskrivning"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr "Tvinga GID"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr "GID"
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr "Gruppmedlemmar"
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr "System trust"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr "Trust-läge"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr "Auktoriseringstyp för dessa hosts"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr "avaktiverad"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr "full tillgång"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr "tillåt dessa hosts tillgång"
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
@@ -240,109 +238,109 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr "Unix"
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr "Redigera användarens POSIX-inställningar"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr "Hemkatalog"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr "Sökvägen till hemkatalogen för den här användaren"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr "Skal"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr "Vilket skal ska användas när den här användaren loggar in"
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr "okonfigurerad"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr "Primär grupp"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr "Primär grupp för den här användaren"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr "Status"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr "Status på det här unix-kontot"
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr "Gruppmedlemskap"
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr "Konto"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr "Användare måste ändra lösenord vid första inloggning"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr "Fördröjning innan tvingande lösenordsbyte (dagar)"
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
@@ -350,22 +348,22 @@ msgstr ""
 "Användaren kommer att tvingas byta lösenord efter så här många dagar (lämna "
 "tomt för att  avaktivera)"
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr "Utgångsdatum för lösenord"
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 "Datum efter vilket denna användares lösenord kommer att sluta gälla (lämna "
 "tomt för att avaktivera)"
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr "Inaktivitet innan avaktivering av användare (dagar)"
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
@@ -373,11 +371,11 @@ msgstr ""
 "Maximalt antal inaktiva dagar efter lösenordets utgång innan användaren är "
 "avaktiverad (lämna tomt för att avaktivera funktionen)"
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr "Fördröjning för varning innan lösenordsbyte (dagar)"
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
@@ -385,117 +383,113 @@ msgstr ""
 "Användaren kommer att varnas så här många dagar innan lösenordet löper ut "
 "(lämna tomt för att avaktivera)"
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr "Tillåt användaren att endast logga in på denna lista av hosts"
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr "automatisk"
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr "har utgått"
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr "grace-tid aktiv"
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr "aktiv"
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr "lösenord har slutat gälla"
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr "lösenord kan inte ändras"
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr "UID"
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr "Varning"
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "Fel"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr "Kan inte allokera ett fritt ID:"
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr "%sPoolMin >= %sPoolMax!"
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr "LDAP-fel"
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr "sambaUnixIdPool är inte unik!"
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr "inget ID tillgängligt!"
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr "maximalt antal försök överskridet!"
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr "Kan inte allokera ett fritt ID!"
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -503,10 +497,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/tr_TR/fusiondirectory.po b/posix/locale/tr_TR/fusiondirectory.po
index c9f0201ab8d9d803a1f4873746f3fcdb1ba83438..7f2932f83e1d1d6a284110e27c9639751091e5e7 100644
--- a/posix/locale/tr_TR/fusiondirectory.po
+++ b/posix/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2021
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2021\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -33,82 +37,80 @@ msgstr ""
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
@@ -236,254 +238,250 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr ""
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
-msgstr ""
+msgstr "İkaz"
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
-msgstr ""
-
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+msgstr "Hata"
+
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -491,10 +489,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/ug/fusiondirectory.po b/posix/locale/ug/fusiondirectory.po
index 2c78a9744928de34cfd29eb503b5e97fc53e3b6c..372a8a13ab2a2c584a170ffb42e817f3bd1bd6bf 100644
--- a/posix/locale/ug/fusiondirectory.po
+++ b/posix/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/groups/posix/class_posixGroup.inc:34
 msgid "Group"
@@ -33,82 +33,80 @@ msgstr ""
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
@@ -236,254 +234,250 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr ""
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -491,10 +485,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/vi_VN/fusiondirectory.po b/posix/locale/vi_VN/fusiondirectory.po
index c7e8850d731d391a5b890e97d837e96ce0f084b4..acd355e22f3b2c326875fae8f47dbd9ef0b062fd 100644
--- a/posix/locale/vi_VN/fusiondirectory.po
+++ b/posix/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
@@ -37,82 +37,80 @@ msgstr ""
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr "Properties"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "Tên"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr "Mô tả"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr "Áp dụng GID"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr "Số ID của nhóm"
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr "Các thành viên nhóm"
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr "Ủy thác hệ thống"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr "Chế độ ủy thác"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr "Đã vô hiệu"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr "Truy cập hoàn toàn"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr "Cho phép truy cập đến các máy chủ này"
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
@@ -240,254 +238,250 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr "Hiệu chỉnh cài đặt POSIX của người dùng"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr "Thư mục chủ"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr "Shell"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr "không được cấu hình"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr "Nhóm sơ cấp"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr "Trạng thái"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr "Tư cách thành viên nhóm"
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr "Tài khoản"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr "Người dùng phải thay đổi mật khẩu ngay lần đăng nhập đầu tiên"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr "tự động"
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr "hết hạn"
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr "Thời gian trước khi tài khoản bị khóa đang hoạt động"
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr "hoạt động"
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr "mật khẩu hết hạn"
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr "Số ID của người sử dụng"
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr "Cảnh báo"
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "Lá»—i"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr "Lá»—i LDAP"
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr "Không thể phân phối một ID miễn phí!"
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -495,10 +489,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/zh/fusiondirectory.po b/posix/locale/zh/fusiondirectory.po
index 0a41872238e249dd5bc44e089621b378f2740214..4072a9187b0cd57ae4806a62dc550beaa78db24b 100644
--- a/posix/locale/zh/fusiondirectory.po
+++ b/posix/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
@@ -37,82 +37,80 @@ msgstr ""
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr "属性"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr "名称"
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr "描述"
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr "强制 GID"
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr "GID"
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr "组成员"
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr "信赖的系统"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr "信赖模式"
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr "禁用"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr "完全访问权限"
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr "允许访问这些主机"
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
@@ -240,254 +238,250 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr "用户主目录"
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr "Shell"
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr "未配置"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr "主要用户组"
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr "状态"
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr "组成员身份"
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr "账户"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr "用户必须在第一次登录修改口令"
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr "自动"
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr "过期"
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr "时间限制激活"
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr "活动"
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr "UID"
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr "警告"
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr "错误"
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr "LDAP 错误"
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -495,10 +489,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/locale/zh_TW/fusiondirectory.po b/posix/locale/zh_TW/fusiondirectory.po
index 18e6062e5264e13a7a8c25108437b378a73cafc4..ee0525ebf1cfe52bf6a7ebd6fc641727cbc744f7 100644
--- a/posix/locale/zh_TW/fusiondirectory.po
+++ b/posix/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-02-02 06:52+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
@@ -33,82 +33,80 @@ msgstr ""
 msgid "POSIX user group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:57
+#: admin/groups/posix/class_posixGroup.inc:59
 msgid "Properties"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:61
+#: admin/groups/posix/class_posixGroup.inc:63
 msgid "Name of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Description"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:66
+#: admin/groups/posix/class_posixGroup.inc:68
 msgid "Short description of this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:70
+#: admin/groups/posix/class_posixGroup.inc:72
 msgid "Force GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
-#: admin/groups/posix/class_posixGroup.inc:150
-#: personal/posix/class_posixAccount.inc:425
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:74
+#: admin/groups/posix/class_posixGroup.inc:76
 msgid "GID value for this group"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:81
-#: admin/groups/posix/class_posixGroup.inc:84
+#: admin/groups/posix/class_posixGroup.inc:83
+#: admin/groups/posix/class_posixGroup.inc:86
 msgid "Group members"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:91
-#: personal/posix/class_posixAccount.inc:203
+#: admin/groups/posix/class_posixGroup.inc:93
+#: personal/posix/class_posixAccount.inc:204
 msgid "System trust"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Trust mode"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:95
-#: personal/posix/class_posixAccount.inc:207
+#: admin/groups/posix/class_posixGroup.inc:97
+#: personal/posix/class_posixAccount.inc:208
 msgid "Type of authorization for those hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "disabled"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
-#: personal/posix/class_posixAccount.inc:233
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
+#: personal/posix/class_posixAccount.inc:234
 msgid "full access"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:99
-#: personal/posix/class_posixAccount.inc:211
+#: admin/groups/posix/class_posixGroup.inc:101
+#: personal/posix/class_posixAccount.inc:212
 msgid "allow access to these hosts"
 msgstr ""
 
-#: admin/groups/posix/class_posixGroup.inc:102
+#: admin/groups/posix/class_posixGroup.inc:104
 msgid "Only allow this group to connect to this list of hosts"
 msgstr ""
 
@@ -236,254 +234,250 @@ msgstr ""
 msgid "Shell used by default when activating Unix tab."
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:88
-#: personal/posix/class_posixAccount.inc:117
+#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:118
 msgid "Unix"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:89
+#: personal/posix/class_posixAccount.inc:90
 msgid "Edit users POSIX settings"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "Home directory"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:121
+#: personal/posix/class_posixAccount.inc:122
 msgid "The path to the home directory of this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Shell"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:126
+#: personal/posix/class_posixAccount.inc:127
 msgid "Which shell should be used when this user log in"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:128
+#: personal/posix/class_posixAccount.inc:129
 msgid "unconfigured"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:132
+#: personal/posix/class_posixAccount.inc:133
 msgid "Primary group for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:136
+#: personal/posix/class_posixAccount.inc:137
 msgid "Status of this user unix account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user/group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:140
+#: personal/posix/class_posixAccount.inc:141
 msgid "Force user id and group id values for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:144
+#: personal/posix/class_posixAccount.inc:145
 msgid "User id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:149
+#: personal/posix/class_posixAccount.inc:150
 msgid "Group id value for this user"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:156
-#: personal/posix/class_posixAccount.inc:159
+#: personal/posix/class_posixAccount.inc:157
+#: personal/posix/class_posixAccount.inc:160
 msgid "Group membership"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:163
+#: personal/posix/class_posixAccount.inc:164
 msgid "Account"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid "User must change password on first login"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:167
+#: personal/posix/class_posixAccount.inc:168
 msgid ""
 "User must change password on first login (needs a value for Delay before "
 "forcing password change)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid "Minimum delay between password changes (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:171
+#: personal/posix/class_posixAccount.inc:172
 msgid ""
 "The user won't be able to change his password before this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid "Delay before forcing password change (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:176
+#: personal/posix/class_posixAccount.inc:177
 msgid ""
 "The user will be forced to change his password after this number of days "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid "Password expiration date"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:181
+#: personal/posix/class_posixAccount.inc:182
 msgid ""
 "Date after which this user password will expire (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid "Delay of inactivity before disabling user (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:186
+#: personal/posix/class_posixAccount.inc:187
 msgid ""
 "Maximum delay of inactivity after password expiration before the user is "
 "disabled (leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid "Delay for user warning before password expiry (days)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:191
+#: personal/posix/class_posixAccount.inc:192
 msgid ""
 "The user will be warned this number of days before his password expiration "
 "(leave empty to disable)"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:214
+#: personal/posix/class_posixAccount.inc:215
 msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:292
+#: personal/posix/class_posixAccount.inc:293
 msgid "automatic"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:353
+#: personal/posix/class_posixAccount.inc:354
 msgid "expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:355
+#: personal/posix/class_posixAccount.inc:356
 msgid "grace time active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
-#: personal/posix/class_posixAccount.inc:360
-#: personal/posix/class_posixAccount.inc:362
+#: personal/posix/class_posixAccount.inc:359
+#: personal/posix/class_posixAccount.inc:361
+#: personal/posix/class_posixAccount.inc:363
 msgid "active"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:358
+#: personal/posix/class_posixAccount.inc:359
 msgid "password expired"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:360
+#: personal/posix/class_posixAccount.inc:361
 msgid "password not changeable"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:422
-msgid "UID"
-msgstr ""
-
-#: personal/posix/class_posixAccount.inc:538
+#: personal/posix/class_posixAccount.inc:524
 #, php-format
 msgid "Group of user %s"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:560
+#: personal/posix/class_posixAccount.inc:546
 #, php-format
 msgid ""
 "Could not create automatic primary group (using gidNumber \"%s\"), because "
 "of the following errors"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
-#: personal/posix/class_posixAccount.inc:814
-#: personal/posix/class_posixAccount.inc:1005
-#: personal/posix/class_posixAccount.inc:1022
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:779
+#: personal/posix/class_posixAccount.inc:800
+#: personal/posix/class_posixAccount.inc:991
+#: personal/posix/class_posixAccount.inc:1008
+#: personal/posix/class_posixAccount.inc:1020
 msgid "Warning"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:793
+#: personal/posix/class_posixAccount.inc:779
 #, php-format
 msgid "Unknown ID allocation method \"%s\"!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:815
+#: personal/posix/class_posixAccount.inc:801
 #, php-format
 msgid "Timeout while waiting for lock. Ignoring lock from %s!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
+#: personal/posix/class_posixAccount.inc:962
 msgid "Error"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
-#: personal/posix/class_posixAccount.inc:882
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
-#: personal/posix/class_posixAccount.inc:905
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:828
+#: personal/posix/class_posixAccount.inc:868
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
+#: personal/posix/class_posixAccount.inc:891
+#: personal/posix/class_posixAccount.inc:900
 msgid "Cannot allocate a free ID:"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:842
+#: personal/posix/class_posixAccount.inc:828
 #, php-format
 msgid "%sPoolMin >= %sPoolMax!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:874
+#: personal/posix/class_posixAccount.inc:860
 msgid "LDAP error"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:882
+#: personal/posix/class_posixAccount.inc:868
 msgid "sambaUnixIdPool is not unique!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:894
-#: personal/posix/class_posixAccount.inc:898
+#: personal/posix/class_posixAccount.inc:880
+#: personal/posix/class_posixAccount.inc:884
 msgid "no ID available!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:914
+#: personal/posix/class_posixAccount.inc:900
 msgid "maximum tries exceeded!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:976
+#: personal/posix/class_posixAccount.inc:962
 msgid "Cannot allocate a free ID!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1007
-#: personal/posix/class_posixAccount.inc:1024
+#: personal/posix/class_posixAccount.inc:993
+#: personal/posix/class_posixAccount.inc:1010
 #, php-format
 msgid ""
 "%s\n"
@@ -491,10 +485,10 @@ msgid ""
 "Using default base!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1025
+#: personal/posix/class_posixAccount.inc:1011
 msgid "\"nextIdHook\" did not return a valid output!"
 msgstr ""
 
-#: personal/posix/class_posixAccount.inc:1034
+#: personal/posix/class_posixAccount.inc:1020
 msgid "\"nextIdHook\" is not available. Using default base!"
 msgstr ""
diff --git a/posix/personal/posix/class_posixAccount.inc b/posix/personal/posix/class_posixAccount.inc
index e7f6953627e9f27d0246ce399e03f9d1572b417d..1a280be135c8349c957e55b973f580d88f4fce2c 100644
--- a/posix/personal/posix/class_posixAccount.inc
+++ b/posix/personal/posix/class_posixAccount.inc
@@ -40,7 +40,7 @@ class EpochDaysDateAttribute extends DateAttribute
     parent::__construct($label, $description, $ldapName, $required, '', $defaultValue, $acl);
   }
 
-  protected function ldapToDate($ldapValue)
+  protected function ldapToDate ($ldapValue)
   {
     $date = DateTime::createFromFormat('U', $ldapValue * static::$secondsPerDay, timezone::utc());
     if ($date !== FALSE) {
@@ -51,12 +51,12 @@ class EpochDaysDateAttribute extends DateAttribute
     }
   }
 
-  protected function dateToLdap($dateValue)
+  protected function dateToLdap ($dateValue)
   {
     return floor($dateValue->format('U') / static::$secondsPerDay);
   }
 
-  function getEpochDays()
+  function getEpochDays ()
   {
     if (empty($this->value)) {
       return 0;
@@ -77,46 +77,47 @@ class EpochDaysDateAttribute extends DateAttribute
 class posixAccount extends simplePlugin
 {
   var $displayHeader = TRUE;
-  var $objectclasses = array('posixAccount', 'shadowAccount');
-  protected $locks = array();
+  var $objectclasses = ['posixAccount', 'shadowAccount'];
+  protected $locks = [];
 
-  protected $fromTemplate = FALSE;
+  protected $fromTemplate         = FALSE;
+  protected $savedGroupMembership = [];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Unix'),
       'plDescription' => _('Edit users POSIX settings'),
       'plIcon'        => 'geticon.php?context=applications&icon=os-linux&size=48',
       'plSmallIcon'   => 'geticon.php?context=applications&icon=os-linux&size=16',
       'plSelfModify'  => TRUE,
       'plPriority'    => 2,
-      'plObjectType'  => array('user'),
-      'plForeignKeys' => array(
-        'gidNumber' => array(
-          array('posixGroup','gidNumber'),
-          array('mixedGroup','gidNumber'),
-        ),
-        'host'      => array(
-          array('serverGeneric', 'cn'),
-          array('workstationGeneric', 'cn'),
-          array('terminalGeneric', 'cn'),
-        )
-      ),
+      'plObjectType'  => ['user'],
+      'plForeignKeys' => [
+        'gidNumber' => [
+          ['posixGroup','gidNumber'],
+          ['mixedGroup','gidNumber'],
+        ],
+        'host'      => [
+          ['serverGeneric', 'cn'],
+          ['workstationGeneric', 'cn'],
+          ['terminalGeneric', 'cn'],
+        ]
+      ],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
     global $config;
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Unix'),
         'icon'  => 'geticon.php?context=applications&icon=os-linux&size=16',
-        'attrs' => array(
+        'attrs' => [
           new PathAttribute(
             _('Home directory'), _('The path to the home directory of this user'),
             'homeDirectory', TRUE
@@ -125,7 +126,7 @@ class posixAccount extends simplePlugin
           new SelectAttribute(
             _('Shell'), _('Which shell should be used when this user log in'),
             'loginShell', TRUE,
-            $config->get_cfg_value('Shells', array(_('unconfigured'))),
+            $config->get_cfg_value('Shells', [_('unconfigured')]),
             $config->get_cfg_value('DefaultShell', '')
           ),
           new SelectAttribute(
@@ -143,26 +144,26 @@ class posixAccount extends simplePlugin
           new IntAttribute(
             _('User id'), _('User id value for this user'),
             'uidNumber', FALSE,
-            0, FALSE, ''
+            $config->get_cfg_value('minId', 0), FALSE, ''
           ),
           new IntAttribute(
             _('Group id'), _('Group id value for this user'),
             'gidNumber', FALSE,
-            0, FALSE, ''
+            $config->get_cfg_value('minId', 0), FALSE, ''
           )
-        )
-      ),
-      'groups' => array(
+        ]
+      ],
+      'groups' => [
         'name'  => _('Group membership'),
         'icon'  => 'geticon.php?context=types&icon=user-group&size=16',
-        'attrs' => array(
+        'attrs' => [
           new GroupsAttribute('', _('Group membership'), 'groupMembership')
-        )
-      ),
-      'account' => array(
+        ]
+      ],
+      'account' => [
         'name'  => _('Account'),
         'icon'  => 'geticon.php?context=devices&icon=terminal&size=16',
-        'attrs' => array(
+        'attrs' => [
           new BooleanAttribute(
             _('User must change password on first login'), _('User must change password on first login (needs a value for Delay before forcing password change)'),
             'mustchangepassword', FALSE
@@ -197,26 +198,26 @@ class posixAccount extends simplePlugin
             'shadowLastChange', FALSE,
             0, FALSE, ''
           ),
-        )
-      ),
-      'system_trust' => array(
+        ]
+      ],
+      'system_trust' => [
         'name'  => _('System trust'),
         'icon'  => 'geticon.php?context=categories&icon=acl&size=16',
-        'attrs' => array(
+        'attrs' => [
           new SelectAttribute(
             _('Trust mode'), _('Type of authorization for those hosts'),
             'trustMode', FALSE,
-            array('', 'fullaccess', 'byhost'),
+            ['', 'fullaccess', 'byhost'],
             '',
-            array(_('disabled'), _('full access'), _('allow access to these hosts'))
+            [_('disabled'), _('full access'), _('allow access to these hosts')]
           ),
           new SystemsAttribute(
             '', _('Only allow this user to connect to this list of hosts'),
             'host', FALSE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -229,17 +230,17 @@ class posixAccount extends simplePlugin
     $this->attributesAccess['trustMode']->setInLdap(FALSE);
     if (!class_available('systemManagement')) {
       $this->attributesAccess['trustMode']->setChoices(
-            array('', 'fullaccess'),
-            array(_('disabled'), _('full access'))
+            ['', 'fullaccess'],
+            [_('disabled'), _('full access')]
       );
     }
     $this->attributesAccess['trustMode']->setManagedAttributes(
-      array(
-        'multiplevalues' => array('notbyhost' => array('','fullaccess')),
-        'erase' => array(
-          'notbyhost' => array('host')
-        )
-      )
+      [
+        'multiplevalues' => ['notbyhost' => ['','fullaccess']],
+        'erase' => [
+          'notbyhost' => ['host']
+        ]
+      ]
     );
     if ((count($this->host) == 1) && ($this->host[0] == '*')) {
       $this->trustMode = 'fullaccess';
@@ -250,27 +251,27 @@ class posixAccount extends simplePlugin
     $this->attributesAccess['uidNumber']->setUnique(TRUE);
     $this->attributesAccess['force_ids']->setInLdap(FALSE);
     $this->attributesAccess['force_ids']->setManagedAttributes(
-      array(
-        'disable' => array (
-          FALSE => array (
+      [
+        'disable' => [
+          FALSE => [
             'uidNumber',
             'gidNumber',
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
     $this->attributesAccess['primaryGroup']->setInLdap(FALSE);
 
     $this->attributesAccess['mustchangepassword']->setInLdap(FALSE);
     $this->attributesAccess['shadowLastChange']->setVisible(FALSE);
     $this->attributesAccess['shadowMax']->setManagedAttributes(
-      array(
-        'disable' => array (
-          '' => array (
+      [
+        'disable' => [
+          '' => [
             'mustchangepassword',
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
 
     if ($dn !== NULL) {
@@ -288,11 +289,11 @@ class posixAccount extends simplePlugin
     }
     $this->attributesAccess['loginShell']->setChoices($loginShellList);
 
-    $secondaryGroups = array();
+    $secondaryGroups = [];
     $secondaryGroups[''] = '- '._('automatic').' -';
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(objectClass=posixGroup)', array('cn', 'gidNumber'));
+    $ldap->search('(objectClass=posixGroup)', ['cn', 'gidNumber']);
     while ($attrs = $ldap->fetch()) {
       $secondaryGroups[$attrs['gidNumber'][0]] = $attrs['cn'][0];
     }
@@ -312,8 +313,8 @@ class posixAccount extends simplePlugin
       } else {
         /* Groups handling */
         $ldap->cd($config->current['BASE']);
-        $ldap->search('(&(objectClass=posixGroup)(memberUid='.ldap_escape_f($this->getUid()).'))', array('cn', 'description'));
-        $groupMembership = array();
+        $ldap->search('(&(objectClass=posixGroup)(memberUid='.ldap_escape_f($this->getUid()).'))', ['cn', 'description']);
+        $groupMembership = [];
         while ($attrs = $ldap->fetch()) {
           $entry = $attrs['cn'][0];
           if (isset($attrs['description'][0])) {
@@ -365,13 +366,13 @@ class posixAccount extends simplePlugin
     }
   }
 
-  function is_this_account($attrs)
+  function is_this_account ($attrs)
   {
     /* shadowAccount is not required */
     return (isset($attrs['objectClass']) && in_array_ics('posixAccount', $attrs['objectClass']));
   }
 
-  function getUid()
+  function getUid ()
   {
     if (isset($this->parent)) {
       $baseobject = $this->parent->getBaseObject();
@@ -382,16 +383,16 @@ class posixAccount extends simplePlugin
     }
   }
 
-  function resetCopyInfos()
+  function resetCopyInfos ()
   {
     global $config;
     parent::resetCopyInfos();
 
-    $this->savedGroupMembership = array();
+    $this->savedGroupMembership = [];
 
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(&(objectClass=posixGroup)(gidNumber='.ldap_escape_f($this->gidNumber).')(cn='.ldap_escape_f($this->getUid()).'))', array('cn','gidNumber'));
+    $ldap->search('(&(objectClass=posixGroup)(gidNumber='.ldap_escape_f($this->gidNumber).')(cn='.ldap_escape_f($this->getUid()).'))', ['cn','gidNumber']);
 
     if ($ldap->count() > 0) {
       /* The copied user had its own group: switch back to automatic */
@@ -405,26 +406,11 @@ class posixAccount extends simplePlugin
     $this->gidNumber = '';
   }
 
-  function check()
+  function check ()
   {
     global $config;
-    if (isset($this->parent) &&
-        isset($this->parent->getBaseObject()->is_template) &&
-        $this->parent->getBaseObject()->is_template) {
-      $message = array();
-    } else {
-      $message = parent::check();
-    }
 
-    /* Check ID's if they are forced by user */
-    if ($this->force_ids) {
-      if ($this->uidNumber < $config->get_cfg_value('minId')) {
-        $message[] = msgPool::toosmall(_('UID'), $config->get_cfg_value('minId'));
-      }
-      if ($this->gidNumber < $config->get_cfg_value('minId')) {
-        $message[] = msgPool::toosmall(_('GID'), $config->get_cfg_value('minId'));
-      }
-    }
+    $message = parent::check();
 
     /* Check shadow settings */
     if ($this->shadowWarning !== '') {
@@ -450,7 +436,7 @@ class posixAccount extends simplePlugin
     return $message;
   }
 
-  protected function prepare_save()
+  protected function prepare_save ()
   {
     global $config;
 
@@ -496,9 +482,9 @@ class posixAccount extends simplePlugin
 
       /* Are we forced to use a special gidNumber? */
       if ($this->force_ids) {
-        $ldap->search('(&(objectClass=posixGroup)(gidNumber='.ldap_escape_f($this->gidNumber).'))',      array('cn','gidNumber'));
+        $ldap->search('(&(objectClass=posixGroup)(gidNumber='.ldap_escape_f($this->gidNumber).'))',      ['cn','gidNumber']);
       } else {
-        $ldap->search('(&(objectClass=posixGroup)(gidNumber=*)(cn='.ldap_escape_f($this->getUid()).'))', array('cn','gidNumber'));
+        $ldap->search('(&(objectClass=posixGroup)(gidNumber=*)(cn='.ldap_escape_f($this->getUid()).'))', ['cn','gidNumber']);
       }
 
       /* No primary group found, create a new one */
@@ -514,11 +500,11 @@ class posixAccount extends simplePlugin
         /* If forced gidNumber could not be found, then check if the given group name already exists.
          */
         $cnt = 0;
-        $ldap->search('(&(objectClass=posixGroup)(cn='.ldap_escape_f($groupcn).'))', array('cn'));
+        $ldap->search('(&(objectClass=posixGroup)(cn='.ldap_escape_f($groupcn).'))', ['cn']);
         while ($ldap->count() && ($cnt < 100)) {
           $cnt++;
           $groupcn = $this->getUid().'_'.$cnt;
-          $ldap->search('(&(objectClass=posixGroup)(cn='.ldap_escape_f($groupcn).'))', array('cn'));
+          $ldap->search('(&(objectClass=posixGroup)(cn='.ldap_escape_f($groupcn).'))', ['cn']);
         }
 
         /* Create new primary group and enforce the new gidNumber */
@@ -539,11 +525,11 @@ class posixAccount extends simplePlugin
         $baseObject->base         = $this->parent->getBaseObject()->base;
         if (class_available('mixedGroup')) {
           // fake attrs as this user may not exists yet
-          $attrs = array(
-            'objectClass' => array('inetOrgPerson','organizationalPerson','person','posixAccount','shadowAccount'),
+          $attrs = [
+            'objectClass' => ['inetOrgPerson','organizationalPerson','person','posixAccount','shadowAccount'],
             'cn' => $this->getUid(),
             'uid' => $this->getUid(),
-          );
+          ];
           $baseObject->attributesAccess['member']->addValue($this->dn, $attrs);
           $tabObject->gen_tabs();
           $posixTab = $tabObject->by_object['mixedGroup'];
@@ -561,20 +547,20 @@ class posixAccount extends simplePlugin
           );
           return $errors;
         } else {
-          @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__,
+          @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__,
             sprintf('Primary group "%s" created, using gidNumber "%s".', $tabObject->dn, $this->gidNumber), '');
         }
       } else {
         $attrs = $ldap->fetch();
         $this->gidNumber = $attrs['gidNumber'][0];
-        @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__,
+        @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__,
           'Found and used: <i>'.$attrs['dn'].'</i>',
           sprintf('Primary group "%s" exists, gidNumber is "%s".', $this->getUid(), $this->gidNumber));
       }
     } else {
       /* Primary group was selected by user */
       $this->gidNumber = $this->primaryGroup;
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__,
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__,
         sprintf('Primary group "%s" for user "%s" manually selected.',
         $this->gidNumber, $this->getUid()), '');
     }
@@ -597,7 +583,7 @@ class posixAccount extends simplePlugin
     }
 
     if ($this->trustMode == 'fullaccess') {
-      $this->attrs['host'] = array('*');
+      $this->attrs['host'] = ['*'];
     }
 
     /* Trust accounts */
@@ -624,7 +610,7 @@ class posixAccount extends simplePlugin
     return $errors;
   }
 
-  protected function shouldSave()
+  protected function shouldSave ()
   {
     if (parent::shouldSave()) {
       return TRUE;
@@ -635,19 +621,19 @@ class posixAccount extends simplePlugin
     return FALSE;
   }
 
-  function save()
+  function save ()
   {
     $errors = parent::save();
 
     foreach ($this->locks as $lock) {
       del_lock($lock);
     }
-    $this->locks = array();
+    $this->locks = [];
 
     return $errors;
   }
 
-  protected function ldap_save()
+  protected function ldap_save ()
   {
     $errors = parent::ldap_save();
 
@@ -697,7 +683,7 @@ class posixAccount extends simplePlugin
     return $errors;
   }
 
-  protected function ldap_remove()
+  protected function ldap_remove ()
   {
     /* Remove and write to LDAP */
     $errors = parent::ldap_remove();
@@ -712,7 +698,7 @@ class posixAccount extends simplePlugin
       } else {
         $type = 'group';
       }
-      $groups = objects::ls($type, array('cn' => 1, 'memberUid' => '*'), NULL, '(&(objectClass=posixGroup)(gidNumber='.ldap_escape_f($this->gidNumber).')(cn='.ldap_escape_f($this->getUid()).'))');
+      $groups = objects::ls($type, ['cn' => 1, 'memberUid' => '*'], NULL, '(&(objectClass=posixGroup)(gidNumber='.ldap_escape_f($this->gidNumber).')(cn='.ldap_escape_f($this->getUid()).'))');
       foreach ($groups as $dn => $group) {
         if (empty($group['memberUid']) || ((count($group['memberUid']) == 1) && ($group['memberUid'][0] == $this->getUid()))) {
           $tabobject = objects::open($dn, $type);
@@ -721,11 +707,11 @@ class posixAccount extends simplePlugin
       }
     }
 
-    return array();
+    return [];
   }
 
   /* Adapt from template, using 'dn' */
-  function adapt_from_template($attrs, $skip = array())
+  function adapt_from_template ($attrs, $skip = [])
   {
     /* Include global link_info */
 
@@ -778,7 +764,7 @@ class posixAccount extends simplePlugin
    *
    * \return Return the next id or NULL if failed
    */
-  static function getNextId($attrib, $dn)
+  static function getNextId ($attrib, $dn)
   {
     global $config;
 
@@ -799,14 +785,14 @@ class posixAccount extends simplePlugin
   /*!
    * \brief Get next id and add a lock to prevent other user to use it before us
    */
-  static function getNextIdLock($attrib, $dn)
+  static function getNextIdLock ($attrib, $dn)
   {
     /* Calculate new id's. We need to place a lock before calling getNextId
        to get real unique values.
      */
     $wait = 10;
     while ($user = get_lock($attrib)) {
-      sleep (1);
+      sleep(1);
 
       /* Oups - timed out */
       if ($wait-- == 0) {
@@ -829,7 +815,7 @@ class posixAccount extends simplePlugin
    *
    * \return Return the next id or NULL if failed
    */
-  protected static function getNextIdPool($attrib)
+  protected static function getNextIdPool ($attrib)
   {
     global $config;
 
@@ -852,8 +838,8 @@ class posixAccount extends simplePlugin
     while ($tries--) {
 
       /* Look for ID map entry */
-      $ldap->cd ($config->current['BASE']);
-      $ldap->search ("(&(objectClass=sambaUnixIdPool)($attrib=*))", array("$attrib"));
+      $ldap->cd($config->current['BASE']);
+      $ldap->search("(&(objectClass=sambaUnixIdPool)($attrib=*))", ["$attrib"]);
 
       /* If it does not exist, create one with these defaults */
       if ($ldap->count() == 0) {
@@ -862,12 +848,12 @@ class posixAccount extends simplePlugin
         $minGroupId = $config->get_cfg_value('gidPoolMin',  10000);
 
         /* Add as default */
-        $attrs = array(
-          'objectClass' => array('organizationalUnit', 'sambaUnixIdPool'),
+        $attrs = [
+          'objectClass' => ['organizationalUnit', 'sambaUnixIdPool'],
           'ou'          => 'idmap',
           'uidNumber'   => $minUserId,
           'gidNumber'   => $minGroupId,
-        );
+        ];
         $ldap->cd('ou=idmap,'.$config->current['BASE']);
         $ldap->add($attrs);
         if (!$ldap->success()) {
@@ -900,7 +886,7 @@ class posixAccount extends simplePlugin
       }
 
       $ldap->cd($dn);
-      $ldap->modify(array($attrib => $newAttr));
+      $ldap->modify([$attrib => $newAttr]);
       if (!$ldap->success()) {
         msg_dialog::display(_('Error'), _('Cannot allocate a free ID:').' '.$ldap->get_error(), ERROR_DIALOG);
         return NULL;
@@ -926,20 +912,20 @@ class posixAccount extends simplePlugin
    *
    * \return Return the next id
    */
-  protected static function getNextIdTraditional($attrib)
+  protected static function getNextIdTraditional ($attrib)
   {
     global $config;
 
-    $ids = array();
+    $ids = [];
     $ldap = $config->get_ldap_link();
 
-    $ldap->cd ($config->current['BASE']);
+    $ldap->cd($config->current['BASE']);
     if (preg_match('/gidNumber/i', $attrib)) {
       $oc = 'posixGroup';
     } else {
       $oc = 'posixAccount';
     }
-    $ldap->search ("(&(objectClass=$oc)($attrib=*))", array("$attrib"));
+    $ldap->search("(&(objectClass=$oc)($attrib=*))", ["$attrib"]);
 
     /* Get list of ids */
     while ($attrs = $ldap->fetch()) {
@@ -950,7 +936,7 @@ class posixAccount extends simplePlugin
     $ids[] = 65534;
 
     /* get the ranges */
-    $tmp = array('0' => 1000);
+    $tmp = ['0' => 1000];
     if (preg_match('/posixAccount/', $oc) && $config->get_cfg_value('uidNumberBase') != '') {
       $tmp = explode('-', $config->get_cfg_value('uidNumberBase'));
     } elseif ($config->get_cfg_value('gidNumberBase') != '') {
@@ -985,7 +971,7 @@ class posixAccount extends simplePlugin
    *
    * \param string $dn The DN
    */
-  protected static function getNextIdHook($attrib, $dn)
+  protected static function getNextIdHook ($attrib, $dn)
   {
     global $config;
 
@@ -994,7 +980,7 @@ class posixAccount extends simplePlugin
       $command = $config->get_cfg_value('nextIdHook');
 
       $command .= ' '.escapeshellarg($dn).' '.escapeshellarg($attrib);
-      @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, $command, 'Execute');
+      @DEBUG(DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, $command, 'Execute');
       exec($command, $output, $returnCode);
 
       $str = implode("\n", $output);
diff --git a/postfix/admin/systems/services/postfix/class_servicePostfix.inc b/postfix/admin/systems/services/postfix/class_servicePostfix.inc
index 734ccd95eeb1a8c5987b16f2c2bc1f1ce0e833a9..01ab1b8e3b9eb6aea2087609cf989b760dea0445 100644
--- a/postfix/admin/systems/services/postfix/class_servicePostfix.inc
+++ b/postfix/admin/systems/services/postfix/class_servicePostfix.inc
@@ -48,17 +48,17 @@ class MailDomainAttribute extends StringAttribute
 
 class servicePostfix extends simpleService
 {
-  var $objectclasses = array('fdPostfixServer');
+  var $objectclasses = ['fdPostfixServer'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Postfix (SMTP)'),
       'plDescription' => _('Postfix (SMTP)').' ('._('Services').')',
       'plIcon'        => 'geticon.php?context=applications&icon=smtp&size=16',
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   /*!
@@ -66,130 +66,130 @@ class servicePostfix extends simpleService
   */
   static function getAttributesInfo ()
   {
-    return array (
-      'section1' => array (
+    return  [
+      'section1' => [
         'name'  => _('Information'),
-        'attrs' => array (
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Hostname'), _('The host name.'),
             'postfixMyHostname', TRUE,
             '', '', '/^([^\.]+\.)*[^\.]+$/', 'smtp'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Domain'), _('The domain.'),
             'postfixMyDomain', TRUE,
             '', '', '/^([^\.]+\.)*[^\.]+$/', 'example.org'
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Max mail header size (KB)'), _('This value specifies the maximal header size.'),
             'postfixHeaderSizeLimit', FALSE,
             FALSE, FALSE, 0
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Max mailbox size (KB)'), _('Defines the maximal size of mail box.'),
             'postfixMailboxSizeLimit', FALSE,
             FALSE, FALSE, 0
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Max message size (KB)'), _('Specify the maximal size of a message.'),
             'postfixMessageSizeLimit', FALSE,
             FALSE, FALSE, 0
           )
-        )
-      ),
-      'routing' => array (
+        ]
+      ],
+      'routing' => [
         'name' => _('Domains and routing'),
-        'attrs' => array (
-          new SetAttribute (
-            new StringAttribute (
+        'attrs' => [
+          new SetAttribute(
+            new StringAttribute(
               _('Domains to accept mail for'), _('Postfix networks'),
               'postfixMyDestinations'
             )
           ),
-          new SubNodesAttribute (
+          new SubNodesAttribute(
             _('Transport table'), _('Transport table'),
             'fdPostfixTransportTable', 'fdPostfixTransportTable',
-            array(
-              new StringAttribute ('', '', 'fdTransportTableMatch'),
-              new CompositeAttribute (
+            [
+              new StringAttribute('', '', 'fdTransportTableMatch'),
+              new CompositeAttribute(
                 _('Transport rule'),
                 'fdTransportTableRule',
-                array(
-                  new StringAttribute ('', '', 'transport', TRUE, 'smtp'),
-                  new StringAttribute ('', '', 'nexthop', FALSE),
-                ),
+                [
+                  new StringAttribute('', '', 'transport', TRUE, 'smtp'),
+                  new StringAttribute('', '', 'nexthop', FALSE),
+                ],
                 '/^([^:]+):(.*)$/',
                 '%s:%s', '', ''
               )
-            )
+            ]
           ),
-          new SubNodesAttribute (
+          new SubNodesAttribute(
             _('Catchall table'), _('Catchall table'),
             'fdPostfixCatchallTable', 'fdPostfixCatchallTable',
-            array(
-              new MailDomainAttribute (
+            [
+              new MailDomainAttribute(
                 _('Domain'), _('Domain concerned by this catchall rule'),
                 'fdCatchallTableDomain', TRUE
               ),
-              new MailAttribute (
+              new MailAttribute(
                 _('Recipient'), _('Recipient mail address for this catchall rule'),
                 'fdCatchallTableRecipient', TRUE
               )
-            )
+            ]
           ),
-          new SubNodesAttribute (
+          new SubNodesAttribute(
             _('Domain alias table'), _('Domain alias table'),
             'fdPostfixDomainAliasTable', 'fdPostfixDomainAliasTable',
-            array(
-              new MailDomainAttribute (
+            [
+              new MailDomainAttribute(
                 _('From'), _('Domain concerned by this alias rule'),
                 'fdDomainAliasTableFrom', TRUE
               ),
-              new MailDomainAttribute (
+              new MailDomainAttribute(
                 _('To'), _('Recipient domain for this alias rule'),
                 'fdDomainAliasTableTo', TRUE
               )
-            )
+            ]
           )
-        )
-      ),
-      'section3' => array (
+        ]
+      ],
+      'section3' => [
         'name' => _('Restrictions'),
-        'attrs' => array (
-          new OrderedArrayAttribute (
-            new CompositeAttribute (
+        'attrs' => [
+          new OrderedArrayAttribute(
+            new CompositeAttribute(
              _('Restrictions for sender'),
             'postfixSenderRestrictions',
-              array(
-                new StringAttribute ('', '', 'first2'),
-                new SelectAttribute ('', '', 'filter2', TRUE, array('FILTER'), 'FILTER'),
-                new StringAttribute ('', '', 'second2'),
-              ),
+              [
+                new StringAttribute('', '', 'first2'),
+                new SelectAttribute('', '', 'filter2', TRUE, ['FILTER'], 'FILTER'),
+                new StringAttribute('', '', 'second2'),
+              ],
               '/^(.*) ([^:]+) (.*)$/',
               '%s %s %s',
               '', _('For sender')
             )
           ),
-          new OrderedArrayAttribute (
-            new CompositeAttribute (
+          new OrderedArrayAttribute(
+            new CompositeAttribute(
              _('Restrictions for recipient'),
             'postfixRecipientRestrictions',
-              array(
-                new StringAttribute ('', '', 'first3'),
-                new SelectAttribute ('', '', 'filter3', TRUE, array('FILTER'), 'FILTER'),
-                new StringAttribute ('', '', 'second3'),
-              ),
+              [
+                new StringAttribute('', '', 'first3'),
+                new SelectAttribute('', '', 'filter3', TRUE, ['FILTER'], 'FILTER'),
+                new StringAttribute('', '', 'second3'),
+              ],
               '/^(.*) ([^:]+) (.*)$/',
               '%s %s %s',
               '', _('For recipient')
             )
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
-  protected function shouldSave()
+  protected function shouldSave ()
   {
     /* We need ldap_save to always run */
     return TRUE;
diff --git a/postfix/locale/af_ZA/fusiondirectory.po b/postfix/locale/af_ZA/fusiondirectory.po
index c38a23ac786469341ac0e2b00c5aea5f7418dc9c..83ddad479bdeceb0e09ba8594d9ced41ccdf916f 100644
--- a/postfix/locale/af_ZA/fusiondirectory.po
+++ b/postfix/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/postfix/locale/ar/fusiondirectory.po b/postfix/locale/ar/fusiondirectory.po
index 33329c8abc0289a31ca5aa0fbe77f871391413d3..ea465c2364367181f275e09b3261b155f6465c75 100644
--- a/postfix/locale/ar/fusiondirectory.po
+++ b/postfix/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/postfix/locale/ca/fusiondirectory.po b/postfix/locale/ca/fusiondirectory.po
index 3913e1e33ce8c153f24f4106c8a434b34eea3cee..4ac032628612b6b63aed4aa7c2f8b69037a7abd6 100644
--- a/postfix/locale/ca/fusiondirectory.po
+++ b/postfix/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/postfix/locale/cs_CZ/fusiondirectory.po b/postfix/locale/cs_CZ/fusiondirectory.po
index fb8b5a4cc1e2357912c56cd47e1f993f41957453..2912cdfcd0c88a4dac5bd0e7a5f2c55afe8299eb 100644
--- a/postfix/locale/cs_CZ/fusiondirectory.po
+++ b/postfix/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/postfix/locale/de/fusiondirectory.po b/postfix/locale/de/fusiondirectory.po
index 62dff3fc7c1357ac538e8da0a97b51ad8548f2a4..9bea6db5852156c4285a33ff1803482e0b6a18f9 100644
--- a/postfix/locale/de/fusiondirectory.po
+++ b/postfix/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/postfix/locale/el_GR/fusiondirectory.po b/postfix/locale/el_GR/fusiondirectory.po
index 62d5264bd574b8bcffe052e986c256fdbb03df51..40fdbd08c94af2a433d32a0eee0c4f3d6192b97a 100644
--- a/postfix/locale/el_GR/fusiondirectory.po
+++ b/postfix/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/postfix/locale/en/fusiondirectory.po b/postfix/locale/en/fusiondirectory.po
index 216ae118a3ea2ed18b96962e16385d4177c80957..5e104a425353ce4548544b0bdb81acb774664324 100644
--- a/postfix/locale/en/fusiondirectory.po
+++ b/postfix/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,95 +17,132 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:29
-#: admin/systems/services/postfix/class_servicePostfix.inc:30
+#: admin/systems/services/postfix/class_servicePostfix.inc:56
+#: admin/systems/services/postfix/class_servicePostfix.inc:57
 msgid "Postfix (SMTP)"
 msgstr ""
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:30
+#: admin/systems/services/postfix/class_servicePostfix.inc:57
 msgid "Services"
 msgstr ""
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:44
+#: admin/systems/services/postfix/class_servicePostfix.inc:71
 msgid "Information"
 msgstr ""
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:47
+#: admin/systems/services/postfix/class_servicePostfix.inc:74
 msgid "Hostname"
 msgstr ""
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:47
+#: admin/systems/services/postfix/class_servicePostfix.inc:74
 msgid "The host name."
 msgstr ""
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:52
+#: admin/systems/services/postfix/class_servicePostfix.inc:79
+#: admin/systems/services/postfix/class_servicePostfix.inc:131
 msgid "Domain"
 msgstr ""
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:52
+#: admin/systems/services/postfix/class_servicePostfix.inc:79
 msgid "The domain."
 msgstr ""
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:57
+#: admin/systems/services/postfix/class_servicePostfix.inc:84
 msgid "Max mail header size (KB)"
 msgstr ""
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:57
+#: admin/systems/services/postfix/class_servicePostfix.inc:84
 msgid "This value specifies the maximal header size."
 msgstr ""
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:62
+#: admin/systems/services/postfix/class_servicePostfix.inc:89
 msgid "Max mailbox size (KB)"
 msgstr ""
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:62
+#: admin/systems/services/postfix/class_servicePostfix.inc:89
 msgid "Defines the maximal size of mail box."
 msgstr ""
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:67
+#: admin/systems/services/postfix/class_servicePostfix.inc:94
 msgid "Max message size (KB)"
 msgstr ""
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:67
+#: admin/systems/services/postfix/class_servicePostfix.inc:94
 msgid "Specify the maximal size of a message."
 msgstr ""
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:74
+#: admin/systems/services/postfix/class_servicePostfix.inc:101
 msgid "Domains and routing"
 msgstr ""
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:78
+#: admin/systems/services/postfix/class_servicePostfix.inc:105
 msgid "Domains to accept mail for"
 msgstr ""
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:78
+#: admin/systems/services/postfix/class_servicePostfix.inc:105
 msgid "Postfix networks"
 msgstr ""
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:83
+#: admin/systems/services/postfix/class_servicePostfix.inc:110
 msgid "Transport table"
 msgstr ""
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:88
+#: admin/systems/services/postfix/class_servicePostfix.inc:115
 msgid "Transport rule"
 msgstr ""
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:102
+#: admin/systems/services/postfix/class_servicePostfix.inc:127
+msgid "Catchall table"
+msgstr ""
+
+#: admin/systems/services/postfix/class_servicePostfix.inc:131
+msgid "Domain concerned by this catchall rule"
+msgstr ""
+
+#: admin/systems/services/postfix/class_servicePostfix.inc:135
+msgid "Recipient"
+msgstr ""
+
+#: admin/systems/services/postfix/class_servicePostfix.inc:135
+msgid "Recipient mail address for this catchall rule"
+msgstr ""
+
+#: admin/systems/services/postfix/class_servicePostfix.inc:141
+msgid "Domain alias table"
+msgstr ""
+
+#: admin/systems/services/postfix/class_servicePostfix.inc:145
+msgid "From"
+msgstr ""
+
+#: admin/systems/services/postfix/class_servicePostfix.inc:145
+msgid "Domain concerned by this alias rule"
+msgstr ""
+
+#: admin/systems/services/postfix/class_servicePostfix.inc:149
+msgid "To"
+msgstr ""
+
+#: admin/systems/services/postfix/class_servicePostfix.inc:149
+msgid "Recipient domain for this alias rule"
+msgstr ""
+
+#: admin/systems/services/postfix/class_servicePostfix.inc:157
 msgid "Restrictions"
 msgstr ""
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:106
+#: admin/systems/services/postfix/class_servicePostfix.inc:161
 msgid "Restrictions for sender"
 msgstr ""
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:115
+#: admin/systems/services/postfix/class_servicePostfix.inc:170
 msgid "For sender"
 msgstr ""
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:120
+#: admin/systems/services/postfix/class_servicePostfix.inc:175
 msgid "Restrictions for recipient"
 msgstr ""
 
-#: admin/systems/services/postfix/class_servicePostfix.inc:129
+#: admin/systems/services/postfix/class_servicePostfix.inc:184
 msgid "For recipient"
 msgstr ""
diff --git a/postfix/locale/es/fusiondirectory.po b/postfix/locale/es/fusiondirectory.po
index 344b761b8d38ed38b1ac599c49005eb7cc81c2f5..f1154191ea6146cfe63daf077e5b5c0ebab08ec0 100644
--- a/postfix/locale/es/fusiondirectory.po
+++ b/postfix/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:56
 #: admin/systems/services/postfix/class_servicePostfix.inc:57
diff --git a/postfix/locale/es_CO/fusiondirectory.po b/postfix/locale/es_CO/fusiondirectory.po
index b5b6450c9571d3c19c29431c55f530f6e0e3a6d4..2e2d0afdaf43ef99fa3aeaa816154a318485a51b 100644
--- a/postfix/locale/es_CO/fusiondirectory.po
+++ b/postfix/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:56
 #: admin/systems/services/postfix/class_servicePostfix.inc:57
diff --git a/postfix/locale/es_VE/fusiondirectory.po b/postfix/locale/es_VE/fusiondirectory.po
index 0bf3973d2065d29c883e7526c6c0530a38995331..f2dd60cda16ed12ea0392a27d55fce762c9f7f87 100644
--- a/postfix/locale/es_VE/fusiondirectory.po
+++ b/postfix/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:56
 #: admin/systems/services/postfix/class_servicePostfix.inc:57
diff --git a/postfix/locale/fa_IR/fusiondirectory.po b/postfix/locale/fa_IR/fusiondirectory.po
index 491f1361733683dc214b3a2960239d14915400ac..ee05d766e50eddd94b7bd88059794e42be5cf5b5 100644
--- a/postfix/locale/fa_IR/fusiondirectory.po
+++ b/postfix/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/postfix/locale/fi_FI/fusiondirectory.po b/postfix/locale/fi_FI/fusiondirectory.po
index b1e236355699d459ea9788f707e8c1626c8ef6be..5cdcae54ae63ef39c76dbb843b8b321028bc60f8 100644
--- a/postfix/locale/fi_FI/fusiondirectory.po
+++ b/postfix/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/postfix/locale/fr/fusiondirectory.po b/postfix/locale/fr/fusiondirectory.po
index d854bf6ec53eb3b14e0ba9ca597f68ce7805667d..19dda68ba59501056acb9dd6fde5f687ff039a9a 100644
--- a/postfix/locale/fr/fusiondirectory.po
+++ b/postfix/locale/fr/fusiondirectory.po
@@ -5,22 +5,22 @@
 # 
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2018
-# Benoit Mortier <benoit.mortier@opensides.be>, 2018
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
-"Last-Translator: Benoit Mortier <benoit.mortier@opensides.be>, 2018\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:56
 #: admin/systems/services/postfix/class_servicePostfix.inc:57
diff --git a/postfix/locale/hu_HU/fusiondirectory.po b/postfix/locale/hu_HU/fusiondirectory.po
index 2557c1ad1b29dc28bc511aec293ab33e32c1a0bf..f2fa36fdf5a152e1f39945b81bc4efbece1bfde1 100644
--- a/postfix/locale/hu_HU/fusiondirectory.po
+++ b/postfix/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/postfix/locale/id/fusiondirectory.po b/postfix/locale/id/fusiondirectory.po
index cfb54f535767bc80491f5ab9f95fe4d176aa5373..e8f60172e0936e57f3d1364372865a78f27e05d9 100644
--- a/postfix/locale/id/fusiondirectory.po
+++ b/postfix/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/postfix/locale/it_IT/fusiondirectory.po b/postfix/locale/it_IT/fusiondirectory.po
index 090b38cb4f7b144684d019eb7c02e564ef483770..dc35e58c4ccf2539ddeff08ea279894f984285f6 100644
--- a/postfix/locale/it_IT/fusiondirectory.po
+++ b/postfix/locale/it_IT/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: Paola Penati <paola.penati@opensides.be>, 2018\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -20,7 +20,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:56
 #: admin/systems/services/postfix/class_servicePostfix.inc:57
diff --git a/postfix/locale/ja/fusiondirectory.po b/postfix/locale/ja/fusiondirectory.po
index 0e0b8db465a89db05fed8cc6cb5722226327159b..6bfe3ac2609fdbcb568c886e4148f1def4ba1e35 100644
--- a/postfix/locale/ja/fusiondirectory.po
+++ b/postfix/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/postfix/locale/ko/fusiondirectory.po b/postfix/locale/ko/fusiondirectory.po
index b4bdd32ae0494b619a090a9181a1e0dde1e1701c..14d52f2421043b9f4c9017bd38c2a9921cea46ee 100644
--- a/postfix/locale/ko/fusiondirectory.po
+++ b/postfix/locale/ko/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# Choi Chris <chulwon.choi@gmail.com>, 2018
+# Choi Chris <chulwon.choi@gmail.com>, 2020
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
-"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
+"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2020\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -45,11 +45,11 @@ msgstr "호스트"
 #: admin/systems/services/postfix/class_servicePostfix.inc:79
 #: admin/systems/services/postfix/class_servicePostfix.inc:131
 msgid "Domain"
-msgstr "도메"
+msgstr "도메인"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:79
 msgid "The domain."
-msgstr "도메"
+msgstr "도메인"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:84
 msgid "Max mail header size (KB)"
@@ -97,43 +97,43 @@ msgstr "전송 규칙"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:127
 msgid "Catchall table"
-msgstr ""
+msgstr "Catchall 테이블"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:131
 msgid "Domain concerned by this catchall rule"
-msgstr ""
+msgstr "이 catchall 규칙이 관련된 도메인"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:135
 msgid "Recipient"
-msgstr ""
+msgstr "수신자"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:135
 msgid "Recipient mail address for this catchall rule"
-msgstr ""
+msgstr "이 catchall 규칙의 수신자 메일 주소"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:141
 msgid "Domain alias table"
-msgstr ""
+msgstr "도메인 별칭 테이블"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:145
 msgid "From"
-msgstr ""
+msgstr "보낸사람"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:145
 msgid "Domain concerned by this alias rule"
-msgstr ""
+msgstr "이 별칭 규칙이 관련된 도메인"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:149
 msgid "To"
-msgstr ""
+msgstr "받는사람"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:149
 msgid "Recipient domain for this alias rule"
-msgstr ""
+msgstr "이 별칭 규칙의 받는사람 도메인"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:157
 msgid "Restrictions"
-msgstr "제"
+msgstr "제한"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:161
 msgid "Restrictions for sender"
@@ -145,7 +145,7 @@ msgstr "발신자의 경우"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:175
 msgid "Restrictions for recipient"
-msgstr "수신자 제"
+msgstr "수신자 제한"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:184
 msgid "For recipient"
diff --git a/postfix/locale/lv/fusiondirectory.po b/postfix/locale/lv/fusiondirectory.po
index 2243447dcb2d5639e55f9b98eb0799bedc5f1526..45eda21f55f3a09daf6d0fbc0d3cb711068ebc53 100644
--- a/postfix/locale/lv/fusiondirectory.po
+++ b/postfix/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/postfix/locale/nb/fusiondirectory.po b/postfix/locale/nb/fusiondirectory.po
index 65b3f85fc6f1583de41f6da2d36b55b634072969..ee1fb9037bfb4413c68fd1f6d27e1cb1e68bd0e5 100644
--- a/postfix/locale/nb/fusiondirectory.po
+++ b/postfix/locale/nb/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
 "MIME-Version: 1.0\n"
diff --git a/postfix/locale/nl/fusiondirectory.po b/postfix/locale/nl/fusiondirectory.po
index 97b40a0ac7249674e483737ece25891d46b83750..3d789ddd9172664563b7c33d92d9c4f80cd566d6 100644
--- a/postfix/locale/nl/fusiondirectory.po
+++ b/postfix/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/postfix/locale/pl/fusiondirectory.po b/postfix/locale/pl/fusiondirectory.po
index 5d405dae3964b8e1fd1b59c48e7b9ecd26095d2a..c8ab2cdee5414522427357a60d7ac5cfa585f378 100644
--- a/postfix/locale/pl/fusiondirectory.po
+++ b/postfix/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/postfix/locale/pt/fusiondirectory.po b/postfix/locale/pt/fusiondirectory.po
index df5e23dd98232b776da3c08e49a680875d66b4b2..be8b6adf53a1302438dd72624f6058c719fc0df4 100644
--- a/postfix/locale/pt/fusiondirectory.po
+++ b/postfix/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:56
 #: admin/systems/services/postfix/class_servicePostfix.inc:57
diff --git a/postfix/locale/pt_BR/fusiondirectory.po b/postfix/locale/pt_BR/fusiondirectory.po
index d07b795fdd89db4800fc3292f62e9e1910d3bb32..ab6080006920f4e32f648514fc76ff143056ff5e 100644
--- a/postfix/locale/pt_BR/fusiondirectory.po
+++ b/postfix/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:56
 #: admin/systems/services/postfix/class_servicePostfix.inc:57
diff --git a/postfix/locale/ru/fusiondirectory.po b/postfix/locale/ru/fusiondirectory.po
index 186b10dc21b43ce7495241bf1d3f4629df6c1ed3..76fe05fc66090b90679849a7f94919d11f377107 100644
--- a/postfix/locale/ru/fusiondirectory.po
+++ b/postfix/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/postfix/locale/ru@petr1708/fusiondirectory.po b/postfix/locale/ru@petr1708/fusiondirectory.po
index 01e8000039890e1084501ec7c27cf917f0198f11..e3346049a4004d3c6b8aeefe0d6ad9f8eb326bc3 100644
--- a/postfix/locale/ru@petr1708/fusiondirectory.po
+++ b/postfix/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/postfix/locale/sv/fusiondirectory.po b/postfix/locale/sv/fusiondirectory.po
index 23bc106ed46a104bd311f4fd6b39a6c17d166516..70d9c8c0727891f0b44c7a09b90149fc5cf5ac19 100644
--- a/postfix/locale/sv/fusiondirectory.po
+++ b/postfix/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/postfix/locale/tr_TR/fusiondirectory.po b/postfix/locale/tr_TR/fusiondirectory.po
index 62cfee843ba76dd5482b7355dbd4d4afbf428fc8..0ce44b8142003ed2e546d5adabf4f1002e26d291 100644
--- a/postfix/locale/tr_TR/fusiondirectory.po
+++ b/postfix/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/postfix/locale/ug/fusiondirectory.po b/postfix/locale/ug/fusiondirectory.po
index fb668965332f5c46249ad685b8007d969ff80247..48697a661b4c50f50fb972c91ad55389d5d42e1a 100644
--- a/postfix/locale/ug/fusiondirectory.po
+++ b/postfix/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/systems/services/postfix/class_servicePostfix.inc:56
 #: admin/systems/services/postfix/class_servicePostfix.inc:57
diff --git a/postfix/locale/vi_VN/fusiondirectory.po b/postfix/locale/vi_VN/fusiondirectory.po
index 8414e62bc7ad9763a29e26386044722a54c0f3cf..e0c132667a0c807edbfe1a855f8527d617102b25 100644
--- a/postfix/locale/vi_VN/fusiondirectory.po
+++ b/postfix/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/postfix/locale/zh/fusiondirectory.po b/postfix/locale/zh/fusiondirectory.po
index 9fd2be406e76d4e5c582d35acca4764a2026e72f..66d285ff63f896c9950b73f8e10ffc7aa40ce045 100644
--- a/postfix/locale/zh/fusiondirectory.po
+++ b/postfix/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/postfix/locale/zh_TW/fusiondirectory.po b/postfix/locale/zh_TW/fusiondirectory.po
index 863030818eb0266246cfa93afb2cb8805ae70a01..60b1db012a251cb0364cefb3742f3429ca15c5ed 100644
--- a/postfix/locale/zh_TW/fusiondirectory.po
+++ b/postfix/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ppolicy/addons/dashboard/class_dashBoardPPolicy.inc b/ppolicy/addons/dashboard/class_dashBoardPPolicy.inc
index 88da640520875c2bd630325b90f13bb94ecce1d0..f3afc2770d20e3571dd6507d5f288a115d5a028c 100644
--- a/ppolicy/addons/dashboard/class_dashBoardPPolicy.inc
+++ b/ppolicy/addons/dashboard/class_dashBoardPPolicy.inc
@@ -21,51 +21,51 @@
 
 class dashboardPpolicy extends simplePlugin
 {
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Ppolicy'),
       'plDescription' => _('Statistics about ppolicy expired users'),
-      'plObjectType'  => array('dashboard'),
+      'plObjectType'  => ['dashboard'],
       'plPriority'    => 12,
 
-      'plProvidedAcls'  => array()
-    );
+      'plProvidedAcls'  => []
+    ];
   }
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
-    return array(
-      'expired_accounts' => array(
+    return [
+      'expired_accounts' => [
         'name'  => _('Expired accounts'),
-        'attrs' => array(new FakeAttribute('expired')),
+        'attrs' => [new FakeAttribute('expired')],
         'template' => get_template_path('users_accounts.tpl', TRUE, dirname(__FILE__)),
-      ),
-      'locked_accounts' => array(
+      ],
+      'locked_accounts' => [
         'name'  => _('Locked accounts'),
-        'attrs' => array(new FakeAttribute('locked')),
+        'attrs' => [new FakeAttribute('locked')],
         'template' => get_template_path('ppolicy_locked_accounts.tpl', TRUE, dirname(__FILE__)),
-      ),
-    );
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
   {
     parent::__construct($dn, $object, $parent, $mainTab);
 
-    $this->expiredAccountsColumns = array(
-      'user' => array(
+    $this->expiredAccountsColumns = [
+      'user' => [
         'uid'             => _('Login'),
         'cn'              => _('Name'),
         'telephoneNumber' => _('Phone number'),
         'expirationDate'  => _('Expiration date'),
-      ),
-      'manager' => array(
+      ],
+      'manager' => [
         'manager_cn'      => _('Name'),
         'manager_mail'    => _('Email'),
         'manager_phone'   => _('Phone number'),
-      )
-    );
+      ]
+    ];
 
     $this->compute_accounts_info();
   }
@@ -79,7 +79,7 @@ class dashboardPpolicy extends simplePlugin
     $ppolicydn = $config->get_cfg_value('ppolicyDefaultCn', '');
     if (!empty($ppolicydn)) {
       $ppolicydn = 'cn='.$ppolicydn.','.get_ou('ppolicyRDN').$config->current['BASE'];
-      $ldap->cat($ppolicydn, array('pwdMaxAge'));
+      $ldap->cat($ppolicydn, ['pwdMaxAge']);
       $policy = $ldap->fetch();
       if (!$policy) {
         msg_dialog::display(
@@ -100,7 +100,7 @@ class dashboardPpolicy extends simplePlugin
     $now = new DateTime('now', timezone::utc());
 
     /* search all expired accounts */
-    $users = objects::ls('user', array(
+    $users = objects::ls('user', [
         'dn'                    => 'raw',
         'uid'                   => 'raw',
         'cn'                    => 'raw',
@@ -110,12 +110,12 @@ class dashboardPpolicy extends simplePlugin
         'pwdChangedTime'        => 1,
         'pwdPolicySubentry'     => 1,
         'pwdAccountLockedTime'  => 1,
-      ), NULL, '(|(pwdAccountLockedTime=*)(pwdChangedTime=*))', TRUE);
-    $locked_users           = array();
-    $expired_accounts       = array();
-    $next_expired_accounts  = array();
+      ], NULL, '(|(pwdAccountLockedTime=*)(pwdChangedTime=*))', TRUE);
+    $locked_users           = [];
+    $expired_accounts       = [];
+    $next_expired_accounts  = [];
     // ppolicies cache
-    $maxAges = array();
+    $maxAges = [];
     foreach ($users as $user) {
       if (isset($user['pwdAccountLockedTime'])) {
         $locked_user  = dashboardUsers::get_user_infos($user);
@@ -132,7 +132,7 @@ class dashboardPpolicy extends simplePlugin
         if (isset($maxAges[$user['pwdPolicySubentry']])) {
           $maxAge = $maxAges[$user['pwdPolicySubentry']];
         } else {
-          $ldap->cat($user['pwdPolicySubentry'], array('pwdMaxAge'));
+          $ldap->cat($user['pwdPolicySubentry'], ['pwdMaxAge']);
           $policy = $ldap->fetch();
           if (!$policy) {
             msg_dialog::display(
@@ -169,18 +169,18 @@ class dashboardPpolicy extends simplePlugin
       }
     }
 
-    uasort($expired_accounts, array('dashboardUsers','compareUsers'));
-    uasort($next_expired_accounts, array('dashboardUsers','compareUsers'));
+    uasort($expired_accounts, ['dashboardUsers','compareUsers']);
+    uasort($next_expired_accounts, ['dashboardUsers','compareUsers']);
 
-    $this->expired = array(
+    $this->expired = [
       'columns'             => $this->expiredAccountsColumns,
       'accounts'            => $expired_accounts,
       'accounts_next_days'  => $next_expired_accounts,
       'next_days'           => $next_expired_days,
-    );
-    $this->locked = array(
+    ];
+    $this->locked = [
       'accounts'  => $locked_users,
-    );
+    ];
   }
 }
 ?>
diff --git a/ppolicy/admin/ppolicy/class_ppolicy.inc b/ppolicy/admin/ppolicy/class_ppolicy.inc
index 8db1ba6fc4eaf5fa8f7a5e488525a2b708d4d5fc..a9e368ca5300fb15e32c6bb58848ea8946b4efbf 100644
--- a/ppolicy/admin/ppolicy/class_ppolicy.inc
+++ b/ppolicy/admin/ppolicy/class_ppolicy.inc
@@ -23,36 +23,36 @@ class ppolicy extends simplePlugin
 {
   var $mainTab = TRUE;
 
-  var $objectclasses = array('device', 'pwdPolicy', 'pwdPolicyChecker');
+  var $objectclasses = ['device', 'pwdPolicy', 'pwdPolicyChecker'];
 
   /* Return plugin information for acl handling  */
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Password policy'),
       'plDescription' => _('Password policy for ppolicy overlay'),
-      'plObjectType'  => array('ppolicy' => array(
+      'plObjectType'  => ['ppolicy' => [
         'name'        => _('Password policy'),
         'filter'      => 'objectClass=pwdPolicy',
         'ou'          => get_ou('ppolicyRDN'),
         'icon'        => 'geticon.php?context=applications&icon=ppolicy&size=16'
-      )),
+      ]],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
-    return array(
+    return [
       // Attributes are grouped by section
-      'main' => array(
+      'main' => [
         'name'  => _('Policy'),
-        'attrs' => array(
-          new BaseSelectorAttribute (get_ou('ppolicyRDN')),
+        'attrs' => [
+          new BaseSelectorAttribute(get_ou('ppolicyRDN')),
           new HiddenAttribute('pwdAttribute', TRUE, 'userPassword'),
-          new HostNameAttribute (
+          new HostNameAttribute(
             _('Policy name'), _('Policy name'),
             'cn', TRUE
           ),
@@ -103,19 +103,19 @@ class ppolicy extends simplePlugin
           new SelectAttribute(
             _('Check quality'), _('Decides what to do if the function in "Check module" is not available'),
             'pwdCheckQuality', TRUE,
-            array(0, 1, 2), 0,
-            array(_('Disabled'), _('Ignore errors'), _('Reject on errors'))
+            [0, 1, 2], 0,
+            [_('Disabled'), _('Ignore errors'), _('Reject on errors')]
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Check module'), _('Name of a user supplied password quality check module that will be called to perform password quality checks and is only relevant if pwdCheckQuality is either 1 or 2'),
             'pwdCheckModule', FALSE
           ),
-        )
-      ),
-      'lockout' => array(
+        ]
+      ],
+      'lockout' => [
         'name'  => _('Lock out'),
         'attrs' =>
-        array(
+        [
           new BooleanAttribute(
             _('Activate lock out'), _('Whether to lock an account that had more consecutive failed bind attempts with invalid passwords than is defined by "Maximum failures"'),
             'pwdLockout', FALSE,
@@ -141,9 +141,9 @@ class ppolicy extends simplePlugin
             'pwdMustChange', FALSE,
             FALSE // default
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -152,41 +152,41 @@ class ppolicy extends simplePlugin
     parent::__construct($dn, $object, $parent, $mainTab);
 
     $this->attributesAccess['pwdMaxAge']->attributes[0]->setManagedAttributes(
-      array (
-        'disable' => array (
-          0 => array (
+       [
+        'disable' => [
+          0 => [
             'pwdExpireWarning', 'pwdGraceAuthNLimit'
-          )
-        )
-      )
+          ]
+        ]
+       ]
     );
     $this->attributesAccess['pwdLockout']->setManagedAttributes(
-      array (
-        'disable' => array (
-          FALSE => array (
+       [
+        'disable' => [
+          FALSE => [
             'pwdLockoutDuration',       'pwdMaxFailure',
             'pwdFailureCountInterval',  'pwdMustChange'
-          )
-        )
-      )
+          ]
+        ]
+       ]
     );
     $this->attributesAccess['pwdAllowUserChange']->setManagedAttributes(
-      array (
-        'disable' => array (
-          FALSE => array (
+       [
+        'disable' => [
+          FALSE => [
             'pwdSafeModify',
-          )
-        )
-      )
+          ]
+        ]
+       ]
     );
     $this->attributesAccess['pwdCheckQuality']->setManagedAttributes(
-      array (
-        'disable' => array (
-          0 => array (
+       [
+        'disable' => [
+          0 => [
             'pwdCheckModule'
-          )
-        )
-      )
+          ]
+        ]
+       ]
     );
 
     if (objects::count('ppolicy') == 0) {
diff --git a/ppolicy/admin/ppolicy/class_ppolicyManagement.inc b/ppolicy/admin/ppolicy/class_ppolicyManagement.inc
index f8cd56bcb4063ed14ceebb779d01dd47ce84280c..dd1fd5b4057ebd5b9274eb1a12f480fe8d7bbb6f 100644
--- a/ppolicy/admin/ppolicy/class_ppolicyManagement.inc
+++ b/ppolicy/admin/ppolicy/class_ppolicyManagement.inc
@@ -21,20 +21,20 @@
 
 class ppolicyManagement extends simpleManagement
 {
-  protected $objectTypes  = array('ppolicy');
+  protected $objectTypes  = ['ppolicy'];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Password policies'),
       'plDescription' => _('Password policies management'),
       'plIcon'        => 'geticon.php?context=applications&icon=ppolicy&size=48',
       'plSection'     => 'accounts',
       'plPriority'    => 57,
-      'plManages'     => array('ppolicy'),
+      'plManages'     => ['ppolicy'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 }
 ?>
diff --git a/ppolicy/config/ppolicy/class_ppolicyConfig.inc b/ppolicy/config/ppolicy/class_ppolicyConfig.inc
index c389f9e4519e6bab19aaa8092b4069140cb30ad6..8dbfd8d35d137326c1c4c37593a14d2038a6062e 100644
--- a/ppolicy/config/ppolicy/class_ppolicyConfig.inc
+++ b/ppolicy/config/ppolicy/class_ppolicyConfig.inc
@@ -21,40 +21,40 @@
 
 class ppolicyConfig extends simplePlugin
 {
-  var $objectclasses  = array("fdPpolicyPluginConf");
+  var $objectclasses  = ["fdPpolicyPluginConf"];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       "plShortName"     => _("Ppolicy plugin configuration"),
       "plDescription"   => _("FusionDirectory ppolicy plugin configuration"),
       "plSelfModify"    => FALSE,
-      "plCategory"      => array("configuration"),
-      "plObjectType"    => array("smallConfig"),
+      "plCategory"      => ["configuration"],
+      "plObjectType"    => ["smallConfig"],
 
       "plProvidedAcls"  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Ppolicy plugin'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Ppolicy RDN'), _('Branch in which ppolicies will be stored'),
             'fdPpolicyRDN', TRUE,
             'ou=ppolicies'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Default ppolicy cn'), _('What you put as default ppolicy in the overlay config'),
             'fdPpolicyDefaultCn', FALSE,
             'default'
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/ppolicy/locale/af_ZA/fusiondirectory.po b/ppolicy/locale/af_ZA/fusiondirectory.po
index 5cd54947360ff44bae101116677cdd6710bacd5e..d8553552ed1892f581c4be2d151b35d258f7504b 100644
--- a/ppolicy/locale/af_ZA/fusiondirectory.po
+++ b/ppolicy/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ppolicy/locale/ar/fusiondirectory.po b/ppolicy/locale/ar/fusiondirectory.po
index 290eae1d19229756543a79201117538e776964a6..46da89d608eb4f489c876c0bf88c0617e9fa6e66 100644
--- a/ppolicy/locale/ar/fusiondirectory.po
+++ b/ppolicy/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/ppolicy/locale/ca/fusiondirectory.po b/ppolicy/locale/ca/fusiondirectory.po
index 1658800e305904c91209c1e11bfdf755bf139386..640ce62999ce859fe1af11f386161a50043d8605 100644
--- a/ppolicy/locale/ca/fusiondirectory.po
+++ b/ppolicy/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/ppolicy/locale/cs_CZ/fusiondirectory.po b/ppolicy/locale/cs_CZ/fusiondirectory.po
index 368e13ac50c2eb24b9827e3bd505b48d4f60d7ea..6eed26a8259c30602ae7873db9a395cc24211ea2 100644
--- a/ppolicy/locale/cs_CZ/fusiondirectory.po
+++ b/ppolicy/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/ppolicy/locale/de/fusiondirectory.po b/ppolicy/locale/de/fusiondirectory.po
index 0400eeb08fca5236fce2a41355c8b832b87fcc5d..c6051c864c10685e1b12dca0c85775194bc320c4 100644
--- a/ppolicy/locale/de/fusiondirectory.po
+++ b/ppolicy/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/ppolicy/locale/el_GR/fusiondirectory.po b/ppolicy/locale/el_GR/fusiondirectory.po
index 11b1c310dc6f77860e695f24f309710e584988f8..f87ed2b6318b9048cfca6f38528de29aa3613de4 100644
--- a/ppolicy/locale/el_GR/fusiondirectory.po
+++ b/ppolicy/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/ppolicy/locale/en/fusiondirectory.po b/ppolicy/locale/en/fusiondirectory.po
index 9a55e13a8b5073c1243e1c61226bb9a98d72f579..5e0d7ec372f69c070ecfe199c992aa604d41bbcd 100644
--- a/ppolicy/locale/en/fusiondirectory.po
+++ b/ppolicy/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -18,71 +18,32 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: personal/ppolicy/class_ppolicyAccount.inc:29
-#: personal/ppolicy/class_ppolicyAccount.inc:44
-#: admin/ppolicy/class_ppolicy.inc:32 admin/ppolicy/class_ppolicy.inc:35
-msgid "Password policy"
-msgstr ""
-
-#: personal/ppolicy/class_ppolicyAccount.inc:30
-msgid "Edit user's password policy"
-msgstr ""
-
-#: personal/ppolicy/class_ppolicyAccount.inc:47
-#: admin/ppolicy/class_ppolicy.inc:51
-msgid "Policy"
-msgstr ""
-
-#: personal/ppolicy/class_ppolicyAccount.inc:47
-msgid "Use a specific policy for this user"
-msgstr ""
-
-#: personal/ppolicy/class_ppolicyAccount.inc:51
-msgid "Last password change"
-msgstr ""
-
-#: personal/ppolicy/class_ppolicyAccount.inc:51
-msgid "Last time the password for the entry was changed"
-msgstr ""
-
-#: personal/ppolicy/class_ppolicyAccount.inc:55
-msgid "Account locked time"
-msgstr ""
-
-#: personal/ppolicy/class_ppolicyAccount.inc:55
-msgid "Time the account was locked"
-msgstr ""
-
-#: personal/ppolicy/class_ppolicyAccount.inc:59
-msgid "Reset locking / force change"
-msgstr ""
-
-#: personal/ppolicy/class_ppolicyAccount.inc:59
-msgid "Resets the lock status of this account and/or force a password change"
+#: config/ppolicy/class_ppolicyConfig.inc:29
+msgid "Ppolicy plugin configuration"
 msgstr ""
 
-#: personal/ppolicy/class_ppolicyAccount.inc:62
-msgid "Force password change (resets locking)"
+#: config/ppolicy/class_ppolicyConfig.inc:30
+msgid "FusionDirectory ppolicy plugin configuration"
 msgstr ""
 
-#: personal/ppolicy/class_ppolicyAccount.inc:62
-msgid "Reset locking (same password)"
+#: config/ppolicy/class_ppolicyConfig.inc:43
+msgid "Ppolicy plugin"
 msgstr ""
 
-#: personal/ppolicy/class_ppolicyAccount.inc:77
-msgid "Use the default"
+#: config/ppolicy/class_ppolicyConfig.inc:46
+msgid "Ppolicy RDN"
 msgstr ""
 
-#: personal/ppolicy/class_ppolicyAccount.inc:83
-msgid "Never"
+#: config/ppolicy/class_ppolicyConfig.inc:46
+msgid "Branch in which ppolicies will be stored"
 msgstr ""
 
-#: personal/ppolicy/class_ppolicyAccount.inc:90
-msgid "Unlocked"
+#: config/ppolicy/class_ppolicyConfig.inc:51
+msgid "Default ppolicy cn"
 msgstr ""
 
-#: personal/ppolicy/class_ppolicyAccount.inc:92
-msgid "Locked permanently"
+#: config/ppolicy/class_ppolicyConfig.inc:51
+msgid "What you put as default ppolicy in the overlay config"
 msgstr ""
 
 #: addons/dashboard/class_dashBoardPPolicy.inc:27
@@ -93,92 +54,67 @@ msgstr ""
 msgid "Statistics about ppolicy expired users"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardPPolicy.inc:39
+#: addons/dashboard/class_dashBoardPPolicy.inc:40
 msgid "Expired accounts"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardPPolicy.inc:44
+#: addons/dashboard/class_dashBoardPPolicy.inc:45
 #: addons/dashboard/ppolicy_locked_accounts.tpl.c:8
 msgid "Locked accounts"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardPPolicy.inc:57
+#: addons/dashboard/class_dashBoardPPolicy.inc:58
 msgid "Login"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardPPolicy.inc:58
-#: addons/dashboard/class_dashBoardPPolicy.inc:63
+#: addons/dashboard/class_dashBoardPPolicy.inc:59
+#: addons/dashboard/class_dashBoardPPolicy.inc:64
 msgid "Name"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardPPolicy.inc:59
-#: addons/dashboard/class_dashBoardPPolicy.inc:65
+#: addons/dashboard/class_dashBoardPPolicy.inc:60
+#: addons/dashboard/class_dashBoardPPolicy.inc:66
 msgid "Phone number"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardPPolicy.inc:60
+#: addons/dashboard/class_dashBoardPPolicy.inc:61
 msgid "Expiration date"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardPPolicy.inc:64
+#: addons/dashboard/class_dashBoardPPolicy.inc:65
 msgid "Email"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardPPolicy.inc:85
-#: addons/dashboard/class_dashBoardPPolicy.inc:138
+#: addons/dashboard/class_dashBoardPPolicy.inc:86
+#: addons/dashboard/class_dashBoardPPolicy.inc:139
 msgid "Configuration error"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardPPolicy.inc:86
+#: addons/dashboard/class_dashBoardPPolicy.inc:87
 #, php-format
 msgid "Default ppolicy \"%s\" could not be found in the LDAP!"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardPPolicy.inc:139
+#: addons/dashboard/class_dashBoardPPolicy.inc:140
 #, php-format
 msgid "Ppolicy \"%s\" set for user \"%s\" could not be found in the LDAP!"
 msgstr ""
 
-#: config/ppolicy/class_ppolicyConfig.inc:29
-msgid "Ppolicy plugin configuration"
-msgstr ""
-
-#: config/ppolicy/class_ppolicyConfig.inc:30
-msgid "FusionDirectory ppolicy plugin configuration"
-msgstr ""
-
-#: config/ppolicy/class_ppolicyConfig.inc:43
-msgid "Ppolicy plugin"
-msgstr ""
-
-#: config/ppolicy/class_ppolicyConfig.inc:46
-msgid "Ppolicy RDN"
-msgstr ""
-
-#: config/ppolicy/class_ppolicyConfig.inc:46
-msgid "Branch in which ppolicies will be stored"
-msgstr ""
-
-#: config/ppolicy/class_ppolicyConfig.inc:51
-msgid "Default ppolicy cn"
-msgstr ""
-
-#: config/ppolicy/class_ppolicyConfig.inc:51
-msgid "What you put as default ppolicy in the overlay config"
-msgstr ""
-
-#: admin/ppolicy/class_ppolicyManagement.inc:29
-msgid "Password policies"
-msgstr ""
-
-#: admin/ppolicy/class_ppolicyManagement.inc:30
-msgid "Password policies management"
+#: admin/ppolicy/class_ppolicy.inc:32 admin/ppolicy/class_ppolicy.inc:35
+#: personal/ppolicy/class_ppolicyAccount.inc:29
+#: personal/ppolicy/class_ppolicyAccount.inc:44
+msgid "Password policy"
 msgstr ""
 
 #: admin/ppolicy/class_ppolicy.inc:33
 msgid "Password policy for ppolicy overlay"
 msgstr ""
 
+#: admin/ppolicy/class_ppolicy.inc:51
+#: personal/ppolicy/class_ppolicyAccount.inc:47
+msgid "Policy"
+msgstr ""
+
 #: admin/ppolicy/class_ppolicy.inc:56
 msgid "Policy name"
 msgstr ""
@@ -352,6 +288,70 @@ msgid ""
 "administrator following an automatic lockout"
 msgstr ""
 
+#: admin/ppolicy/class_ppolicyManagement.inc:29
+msgid "Password policies"
+msgstr ""
+
+#: admin/ppolicy/class_ppolicyManagement.inc:30
+msgid "Password policies management"
+msgstr ""
+
+#: personal/ppolicy/class_ppolicyAccount.inc:30
+msgid "Edit user's password policy"
+msgstr ""
+
+#: personal/ppolicy/class_ppolicyAccount.inc:47
+msgid "Use a specific policy for this user"
+msgstr ""
+
+#: personal/ppolicy/class_ppolicyAccount.inc:51
+msgid "Last password change"
+msgstr ""
+
+#: personal/ppolicy/class_ppolicyAccount.inc:51
+msgid "Last time the password for the entry was changed"
+msgstr ""
+
+#: personal/ppolicy/class_ppolicyAccount.inc:55
+msgid "Account locked time"
+msgstr ""
+
+#: personal/ppolicy/class_ppolicyAccount.inc:55
+msgid "Time the account was locked"
+msgstr ""
+
+#: personal/ppolicy/class_ppolicyAccount.inc:59
+msgid "Reset locking / force change"
+msgstr ""
+
+#: personal/ppolicy/class_ppolicyAccount.inc:59
+msgid "Resets the lock status of this account and/or force a password change"
+msgstr ""
+
+#: personal/ppolicy/class_ppolicyAccount.inc:62
+msgid "Force password change (resets locking)"
+msgstr ""
+
+#: personal/ppolicy/class_ppolicyAccount.inc:62
+msgid "Reset locking (same password)"
+msgstr ""
+
+#: personal/ppolicy/class_ppolicyAccount.inc:77
+msgid "Use the default"
+msgstr ""
+
+#: personal/ppolicy/class_ppolicyAccount.inc:83
+msgid "Never"
+msgstr ""
+
+#: personal/ppolicy/class_ppolicyAccount.inc:90
+msgid "Unlocked"
+msgstr ""
+
+#: personal/ppolicy/class_ppolicyAccount.inc:92
+msgid "Locked permanently"
+msgstr ""
+
 #: addons/dashboard/ppolicy_locked_accounts.tpl.c:2
 msgid "There is one locked account"
 msgid_plural "There are %1 locked accounts"
diff --git a/ppolicy/locale/es/fusiondirectory.po b/ppolicy/locale/es/fusiondirectory.po
index d866540bb6c7d0b86a6f9d00412421acdee68a57..0cb25821863fac354fea3ce11274c5121886f10d 100644
--- a/ppolicy/locale/es/fusiondirectory.po
+++ b/ppolicy/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/ppolicy/class_ppolicyManagement.inc:29
 msgid "Password policies"
@@ -361,6 +361,7 @@ msgid "There is one locked account"
 msgid_plural "There are %1 locked accounts"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: addons/dashboard/ppolicy_locked_accounts.tpl.c:5
 msgid "There is no locked account"
diff --git a/ppolicy/locale/es_CO/fusiondirectory.po b/ppolicy/locale/es_CO/fusiondirectory.po
index 6c836e202b5a6934f87a59ccb907eacc49cfb553..c7a72395f796750a7d2a939e9f35504ca8fc00c3 100644
--- a/ppolicy/locale/es_CO/fusiondirectory.po
+++ b/ppolicy/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/ppolicy/class_ppolicyManagement.inc:29
 msgid "Password policies"
@@ -361,6 +361,7 @@ msgid "There is one locked account"
 msgid_plural "There are %1 locked accounts"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: addons/dashboard/ppolicy_locked_accounts.tpl.c:5
 msgid "There is no locked account"
diff --git a/ppolicy/locale/es_VE/fusiondirectory.po b/ppolicy/locale/es_VE/fusiondirectory.po
index e853bced26fe792b2a7fb002792400eb044ff8f9..1efde86bce83332c2762bd81c537d3052b5d7ac7 100644
--- a/ppolicy/locale/es_VE/fusiondirectory.po
+++ b/ppolicy/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/ppolicy/class_ppolicyManagement.inc:29
 msgid "Password policies"
@@ -361,6 +361,7 @@ msgid "There is one locked account"
 msgid_plural "There are %1 locked accounts"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: addons/dashboard/ppolicy_locked_accounts.tpl.c:5
 msgid "There is no locked account"
diff --git a/ppolicy/locale/fa_IR/fusiondirectory.po b/ppolicy/locale/fa_IR/fusiondirectory.po
index 1f613dd810a65d4b45f77e1e827b4165292d6c93..eed0a870248cf59d617e1bff4e7d7bd5b95e617a 100644
--- a/ppolicy/locale/fa_IR/fusiondirectory.po
+++ b/ppolicy/locale/fa_IR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
diff --git a/ppolicy/locale/fi_FI/fusiondirectory.po b/ppolicy/locale/fi_FI/fusiondirectory.po
index 07fa37bc6b721ba8709d757830a19ed383e49c6d..4df28476f355f06cb5cc186b7f72485b19fabcc2 100644
--- a/ppolicy/locale/fi_FI/fusiondirectory.po
+++ b/ppolicy/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/ppolicy/locale/fr/fusiondirectory.po b/ppolicy/locale/fr/fusiondirectory.po
index 4840e7ad30dd0d9721ea0c6c677d3fcd308c4603..36df2c3a504751a6e645734a14a4c2992fdfa9be 100644
--- a/ppolicy/locale/fr/fusiondirectory.po
+++ b/ppolicy/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/ppolicy/class_ppolicyManagement.inc:29
 msgid "Password policies"
@@ -331,8 +331,8 @@ msgstr "La ppolicy par défaut \"%s\" n’a pas été trouvée dans le LDAP !"
 #, php-format
 msgid "Ppolicy \"%s\" set for user \"%s\" could not be found in the LDAP!"
 msgstr ""
-"La ppolicy \"%s\" pour l'utilisateur \"%s\" n’a pas été trouvée dans le LDAP"
-" !"
+"La ppolicy \"%s\" pour l'utilisateur \"%s\" n’a pas été trouvée dans le "
+"LDAP !"
 
 #: personal/ppolicy/class_ppolicyAccount.inc:30
 msgid "Edit user's password policy"
@@ -397,6 +397,7 @@ msgid "There is one locked account"
 msgid_plural "There are %1 locked accounts"
 msgstr[0] "Il y a un compte verrouille"
 msgstr[1] "Il y a %1 comptes verrouillés"
+msgstr[2] "Il y a %1 comptes verrouillés"
 
 #: addons/dashboard/ppolicy_locked_accounts.tpl.c:5
 msgid "There is no locked account"
diff --git a/ppolicy/locale/hu_HU/fusiondirectory.po b/ppolicy/locale/hu_HU/fusiondirectory.po
index 11601f125af4905fbda59f9b26a2eccbb7560729..436096dcef6a5d7b18b11a54a7d62f3440fa6cf0 100644
--- a/ppolicy/locale/hu_HU/fusiondirectory.po
+++ b/ppolicy/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
diff --git a/ppolicy/locale/id/fusiondirectory.po b/ppolicy/locale/id/fusiondirectory.po
index 57d42f2b44d6de4342678515014e65c042a282e6..3ab5ace15e1051e61d500d2789f4dd3e0ff42794 100644
--- a/ppolicy/locale/id/fusiondirectory.po
+++ b/ppolicy/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ppolicy/locale/it_IT/fusiondirectory.po b/ppolicy/locale/it_IT/fusiondirectory.po
index 191769e67f575c132e9ffdc46cb1c719c6f72ace..6fdad563e1c524f63a930ba10c33906bfc009d8d 100644
--- a/ppolicy/locale/it_IT/fusiondirectory.po
+++ b/ppolicy/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/ppolicy/class_ppolicyManagement.inc:29
 msgid "Password policies"
@@ -392,6 +392,7 @@ msgid "There is one locked account"
 msgid_plural "There are %1 locked accounts"
 msgstr[0] "C'é un account bloccato"
 msgstr[1] "Ci sono %1 accounts bloccati"
+msgstr[2] "Ci sono %1 accounts bloccati"
 
 #: addons/dashboard/ppolicy_locked_accounts.tpl.c:5
 msgid "There is no locked account"
diff --git a/ppolicy/locale/ja/fusiondirectory.po b/ppolicy/locale/ja/fusiondirectory.po
index 78e71c4063531a8f55263f147e525f7b4582cafe..83afe0212d4ab2f9ed5cd15ab15521b4738615ff 100644
--- a/ppolicy/locale/ja/fusiondirectory.po
+++ b/ppolicy/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ppolicy/locale/ko/fusiondirectory.po b/ppolicy/locale/ko/fusiondirectory.po
index a995f75a1a1f1743cc2ef544f5ad255eabe27606..b4ff31005b705332767d4186b9265a60519d1d23 100644
--- a/ppolicy/locale/ko/fusiondirectory.po
+++ b/ppolicy/locale/ko/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# Choi Chris <chulwon.choi@gmail.com>, 2018
+# Choi Chris <chulwon.choi@gmail.com>, 2020
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
-"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
+"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2020\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -23,30 +23,30 @@ msgstr ""
 
 #: admin/ppolicy/class_ppolicyManagement.inc:29
 msgid "Password policies"
-msgstr ""
+msgstr "패스워드 정책"
 
 #: admin/ppolicy/class_ppolicyManagement.inc:30
 msgid "Password policies management"
-msgstr ""
+msgstr "패스워드 정책 관리"
 
 #: admin/ppolicy/class_ppolicy.inc:32 admin/ppolicy/class_ppolicy.inc:35
 #: personal/ppolicy/class_ppolicyAccount.inc:29
 #: personal/ppolicy/class_ppolicyAccount.inc:44
 msgid "Password policy"
-msgstr ""
+msgstr "패스워드 정책"
 
 #: admin/ppolicy/class_ppolicy.inc:33
 msgid "Password policy for ppolicy overlay"
-msgstr ""
+msgstr "ppolicy 오버레이에 대한 비밀번호 정책"
 
 #: admin/ppolicy/class_ppolicy.inc:51
 #: personal/ppolicy/class_ppolicyAccount.inc:47
 msgid "Policy"
-msgstr ""
+msgstr "ì •ì±…"
 
 #: admin/ppolicy/class_ppolicy.inc:56
 msgid "Policy name"
-msgstr ""
+msgstr "정책명"
 
 #: admin/ppolicy/class_ppolicy.inc:60
 msgid "Description"
@@ -54,39 +54,39 @@ msgstr "설명"
 
 #: admin/ppolicy/class_ppolicy.inc:60
 msgid "A short description of this policy"
-msgstr ""
+msgstr "정책에 대한 간략한 설명"
 
 #: admin/ppolicy/class_ppolicy.inc:64
 msgid "Minimum length"
-msgstr ""
+msgstr "최대 길이"
 
 #: admin/ppolicy/class_ppolicy.inc:64
 msgid ""
 "Minimum length of the user supplied password - passwords shorter than this "
 "value will be rejected"
-msgstr ""
+msgstr "사용자 비밀번호의 최소 길이 - 이 값보다 짧은 비밀번호는 거부됩니다."
 
 #: admin/ppolicy/class_ppolicy.inc:69
 msgid "Passwords in history"
-msgstr ""
+msgstr "이전 이력의 비밀번호"
 
 #: admin/ppolicy/class_ppolicy.inc:69
 msgid ""
 "Number of passwords that are maintained in a list of previously used "
 "passwords"
-msgstr ""
+msgstr "이전에 사용한 비밀번호 목록에서 관리되는 비밀번호 수"
 
 #: admin/ppolicy/class_ppolicy.inc:74
 msgid "Minimum password age"
-msgstr ""
+msgstr "최소 암호 사용 기간"
 
 #: admin/ppolicy/class_ppolicy.inc:74
 msgid "Minimum time between password changes"
-msgstr ""
+msgstr "비밀번호 변경 사이의 최소 시간"
 
 #: admin/ppolicy/class_ppolicy.inc:79
 msgid "Maximum password age"
-msgstr ""
+msgstr "최대 암호 사용 기간"
 
 #: admin/ppolicy/class_ppolicy.inc:79
 msgid ""
@@ -94,53 +94,55 @@ msgid ""
 "usable and any bind operations attempted with the expired password will be "
 "treated as invalid"
 msgstr ""
+"비밀번호가 유효한 최대 시간이며, 그 이후에는 더 이상 사용할 수없는 것으로 간주되며 만료된 비밀번호로 시도한 바인드 조작은 유효하지 "
+"않은 것으로 간주됩니다."
 
 #: admin/ppolicy/class_ppolicy.inc:84
 msgid "Expiry warning delay"
-msgstr ""
+msgstr "만료 경고 지연"
 
 #: admin/ppolicy/class_ppolicy.inc:84
 msgid ""
 "Defines the start time - in seconds - prior to the password expiry that "
 "password expiry warning messages are returned in bind responses. 0 to "
 "disable"
-msgstr ""
+msgstr "비밀번호 만기 경고 메시지가 바인드 응답으로 리턴되는 비밀번호 만기 전의 시작 시간 (초)을 정의합니다. 비활성화하려면 0"
 
 #: admin/ppolicy/class_ppolicy.inc:89
 msgid "Grace period"
-msgstr ""
+msgstr "유예 기간"
 
 #: admin/ppolicy/class_ppolicy.inc:89
 msgid ""
 "Number of times a user is allowed to successfully bind using an expired "
 "password"
-msgstr ""
+msgstr "만료된 비밀번호를 사용하여 사용자가 바인드 할 수 있는 횟수"
 
 #: admin/ppolicy/class_ppolicy.inc:94
 msgid "Allow user change"
-msgstr ""
+msgstr "사용자 변경 허용"
 
 #: admin/ppolicy/class_ppolicy.inc:94
 msgid "Whether users are allowed to change their own passwords"
-msgstr ""
+msgstr "사용자가 자신의 비밀번호를 변경할 수 있는지 여부"
 
 #: admin/ppolicy/class_ppolicy.inc:99
 msgid "Safe modify"
-msgstr ""
+msgstr "안전한 수정"
 
 #: admin/ppolicy/class_ppolicy.inc:99
 msgid ""
 "Whether a user must send the current password during a password modification"
 " operation"
-msgstr ""
+msgstr "비밀번호 수정 조작 중에 사용자가 현재 비밀번호를 보내야하는지 여부"
 
 #: admin/ppolicy/class_ppolicy.inc:104
 msgid "Check quality"
-msgstr ""
+msgstr "품질 점검"
 
 #: admin/ppolicy/class_ppolicy.inc:104
 msgid "Decides what to do if the function in \"Check module\" is not available"
-msgstr ""
+msgstr "\"모듈 점검\"의 기능을 사용할 수없는 경우 수행 할 조치를 결정합니다."
 
 #: admin/ppolicy/class_ppolicy.inc:107
 msgid "Disabled"
@@ -148,15 +150,15 @@ msgstr "미사용"
 
 #: admin/ppolicy/class_ppolicy.inc:107
 msgid "Ignore errors"
-msgstr ""
+msgstr "오류 무시"
 
 #: admin/ppolicy/class_ppolicy.inc:107
 msgid "Reject on errors"
-msgstr ""
+msgstr "오류 거부"
 
 #: admin/ppolicy/class_ppolicy.inc:110
 msgid "Check module"
-msgstr ""
+msgstr "모듈 점검"
 
 #: admin/ppolicy/class_ppolicy.inc:110
 msgid ""
@@ -164,108 +166,110 @@ msgid ""
 " perform password quality checks and is only relevant if pwdCheckQuality is "
 "either 1 or 2"
 msgstr ""
+"비밀번호 품질 점검을 수행하기 위해 호출되며 pwdCheckQuality가 1 또는 2 인 경우에만 관련된 사용자 제공 비밀번호 품질 "
+"점검 모듈의 이름"
 
 #: admin/ppolicy/class_ppolicy.inc:116
 msgid "Lock out"
-msgstr ""
+msgstr "잠금"
 
 #: admin/ppolicy/class_ppolicy.inc:120
 msgid "Activate lock out"
-msgstr ""
+msgstr "잠금 활성화"
 
 #: admin/ppolicy/class_ppolicy.inc:120
 msgid ""
 "Whether to lock an account that had more consecutive failed bind attempts "
 "with invalid passwords than is defined by \"Maximum failures\""
-msgstr ""
+msgstr "\"Maximum failures\"에 정의 된 것보다 유효하지 않은 암호로 바인드 시도가 연속적으로 실패한 계정을 잠글지 여부"
 
 #: admin/ppolicy/class_ppolicy.inc:125
 msgid "Lock out duration"
-msgstr ""
+msgstr "잠금 기간"
 
 #: admin/ppolicy/class_ppolicy.inc:125
 msgid ""
 "Time the account remains locked after an automatic lock out (0 means for "
 "ever)"
-msgstr ""
+msgstr "자동 잠금 후에도 계정이 잠긴 상태로 유지되는 시간 (0은 영원히)"
 
 #: admin/ppolicy/class_ppolicy.inc:130
 msgid "Maximum failures"
-msgstr ""
+msgstr "최대 실패"
 
 #: admin/ppolicy/class_ppolicy.inc:130
 msgid ""
 "Number of consecutive password failures allowed before automatic lock out"
-msgstr ""
+msgstr "자동 잠금 전에 허용되는 연속 암호 실패 횟수"
 
 #: admin/ppolicy/class_ppolicy.inc:135
 msgid "Failure count interval"
-msgstr ""
+msgstr "실패 횟수 간격"
 
 #: admin/ppolicy/class_ppolicy.inc:135
 msgid ""
 "Time after which the count of consecutive password failures is reset even if"
 " no successful authentication has occurred"
-msgstr ""
+msgstr "성공적인 인증이 수행되지 않은 경우에도 연속 비밀번호 실패 횟수가 재설정되는 시간"
 
 #: admin/ppolicy/class_ppolicy.inc:140
 msgid "Must change"
-msgstr ""
+msgstr "반드시 변경"
 
 #: admin/ppolicy/class_ppolicy.inc:140
 msgid ""
 "Whether the user must change their password after an account is reset by an "
 "administrator following an automatic lockout"
-msgstr ""
+msgstr "관리자가 자동 ​​잠금 후 계정을 재설정 한 후 사용자가 비밀번호를 변경해야하는지 여부"
 
 #: config/ppolicy/class_ppolicyConfig.inc:29
 msgid "Ppolicy plugin configuration"
-msgstr ""
+msgstr "Ppolicy 플러그인 구성"
 
 #: config/ppolicy/class_ppolicyConfig.inc:30
 msgid "FusionDirectory ppolicy plugin configuration"
-msgstr ""
+msgstr "FusionDirectory ppolicy 플러그인 구성"
 
 #: config/ppolicy/class_ppolicyConfig.inc:43
 msgid "Ppolicy plugin"
-msgstr ""
+msgstr "Ppolicy 플러그인"
 
 #: config/ppolicy/class_ppolicyConfig.inc:46
 msgid "Ppolicy RDN"
-msgstr ""
+msgstr "Ppolicy RDN"
 
 #: config/ppolicy/class_ppolicyConfig.inc:46
 msgid "Branch in which ppolicies will be stored"
-msgstr ""
+msgstr "정책이 저장 될 브랜치"
 
 #: config/ppolicy/class_ppolicyConfig.inc:51
 msgid "Default ppolicy cn"
-msgstr ""
+msgstr "기본 ppolicy cn"
 
 #: config/ppolicy/class_ppolicyConfig.inc:51
 msgid "What you put as default ppolicy in the overlay config"
-msgstr ""
+msgstr "오버레이 설정에서 기본 정책으로 설정한 사항"
 
 #: addons/dashboard/class_dashBoardPPolicy.inc:27
 msgid "Ppolicy"
-msgstr ""
+msgstr "Ppolicy"
 
 #: addons/dashboard/class_dashBoardPPolicy.inc:28
 msgid "Statistics about ppolicy expired users"
-msgstr ""
+msgstr "ppolicy가 만료된 사용자에 대한 통계"
 
 #: addons/dashboard/class_dashBoardPPolicy.inc:40
 msgid "Expired accounts"
-msgstr ""
+msgstr "만료된 계정"
 
 #: addons/dashboard/class_dashBoardPPolicy.inc:45
 #: addons/dashboard/ppolicy_locked_accounts.tpl.c:8
 msgid "Locked accounts"
-msgstr ""
+msgstr "잠긴 계정"
 
 #: addons/dashboard/class_dashBoardPPolicy.inc:58
 msgid "Login"
-msgstr ""
+msgstr "로그인"
 
 #: addons/dashboard/class_dashBoardPPolicy.inc:59
 #: addons/dashboard/class_dashBoardPPolicy.inc:64
@@ -275,7 +279,7 @@ msgstr "명칭"
 #: addons/dashboard/class_dashBoardPPolicy.inc:60
 #: addons/dashboard/class_dashBoardPPolicy.inc:66
 msgid "Phone number"
-msgstr ""
+msgstr "전화 번호"
 
 #: addons/dashboard/class_dashBoardPPolicy.inc:61
 msgid "Expiration date"
@@ -283,7 +287,7 @@ msgstr "만료일자"
 
 #: addons/dashboard/class_dashBoardPPolicy.inc:65
 msgid "Email"
-msgstr ""
+msgstr "이메일"
 
 #: addons/dashboard/class_dashBoardPPolicy.inc:86
 #: addons/dashboard/class_dashBoardPPolicy.inc:139
@@ -293,103 +297,103 @@ msgstr "설정 에러"
 #: addons/dashboard/class_dashBoardPPolicy.inc:87
 #, php-format
 msgid "Default ppolicy \"%s\" could not be found in the LDAP!"
-msgstr ""
+msgstr "LDAP에서 기본 ppolicy \"%s\"를 찾을 수 없습니다!"
 
 #: addons/dashboard/class_dashBoardPPolicy.inc:140
 #, php-format
 msgid "Ppolicy \"%s\" set for user \"%s\" could not be found in the LDAP!"
-msgstr ""
+msgstr "LDAP에서 사용자 \"%s\"에 대한 Ppolicy \"%s\" 세트를 찾을 수 없습니다!"
 
 #: personal/ppolicy/class_ppolicyAccount.inc:30
 msgid "Edit user's password policy"
-msgstr ""
+msgstr "사용자 비밀번호 정책 편집"
 
 #: personal/ppolicy/class_ppolicyAccount.inc:47
 msgid "Use a specific policy for this user"
-msgstr ""
+msgstr "이 사용자에 대한 특정 정책을 사용하십시오"
 
 #: personal/ppolicy/class_ppolicyAccount.inc:51
 msgid "Last password change"
-msgstr ""
+msgstr "마지막 비밀번호 변경"
 
 #: personal/ppolicy/class_ppolicyAccount.inc:51
 msgid "Last time the password for the entry was changed"
-msgstr ""
+msgstr "항목의 비밀번호가 마지막으로 변경된 시간"
 
 #: personal/ppolicy/class_ppolicyAccount.inc:55
 msgid "Account locked time"
-msgstr ""
+msgstr "계정 잠금 시간"
 
 #: personal/ppolicy/class_ppolicyAccount.inc:55
 msgid "Time the account was locked"
-msgstr ""
+msgstr "계정이 잠긴 시간"
 
 #: personal/ppolicy/class_ppolicyAccount.inc:59
 msgid "Reset locking / force change"
-msgstr ""
+msgstr "잠금 /  강제변경 초기화"
 
 #: personal/ppolicy/class_ppolicyAccount.inc:59
 msgid "Resets the lock status of this account and/or force a password change"
-msgstr ""
+msgstr "이 계정의 잠금 상태를 재설정하거나 비밀번호를 강제로 변경합니다"
 
 #: personal/ppolicy/class_ppolicyAccount.inc:62
 msgid "Force password change (resets locking)"
-msgstr ""
+msgstr "비밀번호 변경 강제 실행 (잠금 재설정)"
 
 #: personal/ppolicy/class_ppolicyAccount.inc:62
 msgid "Reset locking (same password)"
-msgstr ""
+msgstr "잠금 재설정 (동일한 비밀번호)"
 
 #: personal/ppolicy/class_ppolicyAccount.inc:77
 msgid "Use the default"
-msgstr ""
+msgstr "기본값을 사용하십시오"
 
 #: personal/ppolicy/class_ppolicyAccount.inc:83
 msgid "Never"
-msgstr ""
+msgstr "제한없음"
 
 #: personal/ppolicy/class_ppolicyAccount.inc:90
 msgid "Unlocked"
-msgstr ""
+msgstr "잠금 해제"
 
 #: personal/ppolicy/class_ppolicyAccount.inc:92
 msgid "Locked permanently"
-msgstr ""
+msgstr "영구적으로 잠김"
 
 #: addons/dashboard/ppolicy_locked_accounts.tpl.c:2
 msgid "There is one locked account"
 msgid_plural "There are %1 locked accounts"
-msgstr[0] ""
+msgstr[0] "잠긴 계정 %1 이 있습니다"
 
 #: addons/dashboard/ppolicy_locked_accounts.tpl.c:5
 msgid "There is no locked account"
-msgstr ""
+msgstr "잠긴 계정이 없습니다"
 
 #: addons/dashboard/ppolicy_locked_accounts.tpl.c:11
 msgid "Manager concerned"
-msgstr ""
+msgstr "연관된 관리자"
 
 #: addons/dashboard/ppolicy_locked_accounts.tpl.c:14
 msgid "uid"
-msgstr ""
+msgstr "uid"
 
 #: addons/dashboard/ppolicy_locked_accounts.tpl.c:17
 msgid "cn"
-msgstr ""
+msgstr "cn"
 
 #: addons/dashboard/ppolicy_locked_accounts.tpl.c:20
 #: addons/dashboard/ppolicy_locked_accounts.tpl.c:32
 msgid "telephoneNumber"
-msgstr ""
+msgstr "telephoneNumber"
 
 #: addons/dashboard/ppolicy_locked_accounts.tpl.c:23
 msgid "pwdAccountLockedTime"
-msgstr ""
+msgstr "pwdAccountLockedTime"
 
 #: addons/dashboard/ppolicy_locked_accounts.tpl.c:26
 msgid "manager"
-msgstr ""
+msgstr "관리자"
 
 #: addons/dashboard/ppolicy_locked_accounts.tpl.c:29
 msgid "mail"
-msgstr ""
+msgstr "메일"
diff --git a/ppolicy/locale/lv/fusiondirectory.po b/ppolicy/locale/lv/fusiondirectory.po
index 39b1fcf7a69b08dcb5d7ea5781d22bdf09c7ff5b..e226a0901c5fad6983e90ff818f23bc610639b2c 100644
--- a/ppolicy/locale/lv/fusiondirectory.po
+++ b/ppolicy/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/ppolicy/locale/nb/fusiondirectory.po b/ppolicy/locale/nb/fusiondirectory.po
index 339674045a8b39dc47f74380e3f64f3ae4f4db21..4fbc9b108434e9f10ce397c595aafe4f15e41e0a 100644
--- a/ppolicy/locale/nb/fusiondirectory.po
+++ b/ppolicy/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/ppolicy/locale/nl/fusiondirectory.po b/ppolicy/locale/nl/fusiondirectory.po
index 0710712a7084043b98b999170557890473e2d249..578182ab277e7ed7f329bde11aeb18817022f1fc 100644
--- a/ppolicy/locale/nl/fusiondirectory.po
+++ b/ppolicy/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2018\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/ppolicy/locale/pl/fusiondirectory.po b/ppolicy/locale/pl/fusiondirectory.po
index 92e350d95eccd0c384134afa18f6b8ee08c5271a..800c50992d8b24b460b3f8b6b981f843af9dfb4d 100644
--- a/ppolicy/locale/pl/fusiondirectory.po
+++ b/ppolicy/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/ppolicy/locale/pt/fusiondirectory.po b/ppolicy/locale/pt/fusiondirectory.po
index 76d151ca3ad2f02c678fb5cd2f7c25c2136a5746..e37b646608e7eb83e032ad84b99fa2381807b7bd 100644
--- a/ppolicy/locale/pt/fusiondirectory.po
+++ b/ppolicy/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/ppolicy/class_ppolicyManagement.inc:29
 msgid "Password policies"
@@ -361,6 +361,7 @@ msgid "There is one locked account"
 msgid_plural "There are %1 locked accounts"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: addons/dashboard/ppolicy_locked_accounts.tpl.c:5
 msgid "There is no locked account"
diff --git a/ppolicy/locale/pt_BR/fusiondirectory.po b/ppolicy/locale/pt_BR/fusiondirectory.po
index c52929b326c34949708c08c0540553c90dbea191..2443eb5d6f1259b670ba9249ed006d6ee34996a3 100644
--- a/ppolicy/locale/pt_BR/fusiondirectory.po
+++ b/ppolicy/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/ppolicy/class_ppolicyManagement.inc:29
 msgid "Password policies"
@@ -361,6 +361,7 @@ msgid "There is one locked account"
 msgid_plural "There are %1 locked accounts"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: addons/dashboard/ppolicy_locked_accounts.tpl.c:5
 msgid "There is no locked account"
diff --git a/ppolicy/locale/ru/fusiondirectory.po b/ppolicy/locale/ru/fusiondirectory.po
index 8c4dd1d10963fb9183eb20099223ce813872de94..4bf2d039686b6b72e2e2e656313d5d2c574d18aa 100644
--- a/ppolicy/locale/ru/fusiondirectory.po
+++ b/ppolicy/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/ppolicy/locale/ru@petr1708/fusiondirectory.po b/ppolicy/locale/ru@petr1708/fusiondirectory.po
index 93ca8d9d858778b38eadbc04374b0cf66e63b617..f8c18aed02151f5b151d113caf8785381da17699 100644
--- a/ppolicy/locale/ru@petr1708/fusiondirectory.po
+++ b/ppolicy/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ppolicy/locale/sv/fusiondirectory.po b/ppolicy/locale/sv/fusiondirectory.po
index b5b9bb858f1a669de95a15aecf3a06f97272b9a3..dbe17c6f04828de7f6b170c490917c2e7ea7573a 100644
--- a/ppolicy/locale/sv/fusiondirectory.po
+++ b/ppolicy/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/ppolicy/locale/tr_TR/fusiondirectory.po b/ppolicy/locale/tr_TR/fusiondirectory.po
index 38a44a5ccf796948a80e84ce0bf2690ad31e831d..eba9ea2480f20acf0dfcaeeacaa799b60a317bde 100644
--- a/ppolicy/locale/tr_TR/fusiondirectory.po
+++ b/ppolicy/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ppolicy/locale/ug/fusiondirectory.po b/ppolicy/locale/ug/fusiondirectory.po
index 8523a094eb5a33c79518fb96e27482c11d09376d..9eb82f14b36bac2bee53cc0f4b87305b92c06fc1 100644
--- a/ppolicy/locale/ug/fusiondirectory.po
+++ b/ppolicy/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/ppolicy/class_ppolicyManagement.inc:29
 msgid "Password policies"
@@ -356,6 +356,7 @@ msgstr ""
 msgid "There is one locked account"
 msgid_plural "There are %1 locked accounts"
 msgstr[0] ""
+msgstr[1] ""
 
 #: addons/dashboard/ppolicy_locked_accounts.tpl.c:5
 msgid "There is no locked account"
diff --git a/ppolicy/locale/vi_VN/fusiondirectory.po b/ppolicy/locale/vi_VN/fusiondirectory.po
index c8a66eff2b23ef32056ee3f2825c23c04983478b..5cdd64c21803c0c4bea972f9945fb6e470e7f827 100644
--- a/ppolicy/locale/vi_VN/fusiondirectory.po
+++ b/ppolicy/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/ppolicy/locale/zh/fusiondirectory.po b/ppolicy/locale/zh/fusiondirectory.po
index 5c42475e56b3ac8826cc2339fbda0e824066ad57..8f66f5a17e7298fa6038625f082ca6c0fbcb3a1b 100644
--- a/ppolicy/locale/zh/fusiondirectory.po
+++ b/ppolicy/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/ppolicy/locale/zh_TW/fusiondirectory.po b/ppolicy/locale/zh_TW/fusiondirectory.po
index 18e0a1a901bca7cd390b139ca6bfb95ba74308e4..8431b075dc960db6a8e48427d6831713498ba5c3 100644
--- a/ppolicy/locale/zh_TW/fusiondirectory.po
+++ b/ppolicy/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ppolicy/personal/ppolicy/class_ppolicyAccount.inc b/ppolicy/personal/ppolicy/class_ppolicyAccount.inc
index 74cdbda4d338dc9d3b1a46688eb1c64c5bbe21a7..82bf6e4e52759753db71db03141acb6bc85a6605 100644
--- a/ppolicy/personal/ppolicy/class_ppolicyAccount.inc
+++ b/ppolicy/personal/ppolicy/class_ppolicyAccount.inc
@@ -21,28 +21,28 @@
 
 class ppolicyAccount extends simplePlugin
 {
-  var $objectclasses = array();
+  var $objectclasses = [];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Password policy'),
       'plDescription'   => _('Edit user\'s password policy'),
       'plSelfModify'    => TRUE,
-      'plObjectType'    => array('user', 'simpleSecurityObject'),
+      'plObjectType'    => ['user', 'simpleSecurityObject'],
       'plIcon'          => 'geticon.php?context=applications&icon=ppolicy&size=48',
       'plSmallIcon'     => 'geticon.php?context=applications&icon=ppolicy&size=16',
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Password policy'),
-        'attrs' => array(
+        'attrs' => [
           new SelectAttribute(
             _('Policy'), _('Use a specific policy for this user'),
             'pwdPolicySubentry', FALSE
@@ -58,12 +58,12 @@ class ppolicyAccount extends simplePlugin
           new SelectAttribute(
             _('Reset locking / force change'), _('Resets the lock status of this account and/or force a password change'),
             'pwdReset', FALSE,
-            array('', 'TRUE', 'FALSE'), '',
-            array('', _('Force password change (resets locking)'), _('Reset locking (same password)'))
+            ['', 'TRUE', 'FALSE'], '',
+            ['', _('Force password change (resets locking)'), _('Reset locking (same password)')]
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -97,7 +97,7 @@ class ppolicyAccount extends simplePlugin
     }
   }
 
-  protected function loadAttributes()
+  protected function loadAttributes ()
   {
     global $config;
     if ($this->dn != 'new') {
@@ -113,14 +113,14 @@ class ppolicyAccount extends simplePlugin
   {
     $errors = parent::prepare_save();
     if (!empty($this->pwdReset)) {
-      $this->attrs['pwdAccountLockedTime'] = array();
+      $this->attrs['pwdAccountLockedTime'] = [];
     } else {
       unset($this->attrs['pwdAccountLockedTime']);
     }
     return $errors;
   }
 
-  function remove($fulldelete = FALSE)
+  function remove ($fulldelete = FALSE)
   {
     /* ppolicy fields are not real fields, they can’t be removed through ldap_modify
      * It’s not possible to remove ppolicy info from a user node anyway */
diff --git a/puppet/admin/systems/puppet/class_puppetNode.inc b/puppet/admin/systems/puppet/class_puppetNode.inc
index 4297bf8b549bcb498ac644669d81c72603d4257e..16d501ebb3e3d82003ba4ce82e107a8278e0c1df 100644
--- a/puppet/admin/systems/puppet/class_puppetNode.inc
+++ b/puppet/admin/systems/puppet/class_puppetNode.inc
@@ -22,28 +22,28 @@
 class puppetNode extends simplePlugin
 {
   var $displayHeader  = TRUE;
-  var $objectclasses  = array("puppetClient");
+  var $objectclasses  = ["puppetClient"];
 
   static function getAttributesInfo ()
   {
-    return array(
+    return [
       // Attributes are grouped by section
-      'section1' => array(
+      'section1' => [
         'name'  => _("Puppet node settings"),
-        'attrs' => array(
-          new SetAttribute (
-            new StringAttribute (_("Puppet class"), _("Puppet Node Class"), "puppetClass")
+        'attrs' => [
+          new SetAttribute(
+            new StringAttribute(_("Puppet class"), _("Puppet Node Class"), "puppetClass")
           ),
-          new SelectAttribute (_("Parent node"), _("Puppet Parent Node"),       "parentNode", FALSE),
-          new SelectAttribute (_("Environment"), _("Puppet Node Environment"),  "environment", TRUE),
-          new SetAttribute (
-            new CompositeAttribute (
+          new SelectAttribute(_("Parent node"), _("Puppet Parent Node"),       "parentNode", FALSE),
+          new SelectAttribute(_("Environment"), _("Puppet Node Environment"),  "environment", TRUE),
+          new SetAttribute(
+            new CompositeAttribute(
               _("A variable setting for puppet"),
               'puppetVar',
-              array(
-                new StringAttribute ('',   _('Name of the variable'),   'puppetVar'),
-                new StringAttribute ('=',  _('Value of the variable'),  'puppetVarValue'),
-              ),
+              [
+                new StringAttribute('',   _('Name of the variable'),   'puppetVar'),
+                new StringAttribute('=',  _('Value of the variable'),  'puppetVarValue'),
+              ],
                // sscanf format
               '%[^ =]=%[^ ]',
               // sprintf format
@@ -53,23 +53,23 @@ class puppetNode extends simplePlugin
               'Puppet Vars'
             )
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   // We also need this function that return some information about the plugin
   static function plInfo ()
   {
-    return array(
+    return [
       "plShortName"       => _("Puppet"),
       "plDescription"     => _("Support for puppet schema in order to edit puppet classes and puppet vars"),
       "plSelfModify"      => FALSE,
-      "plObjectType"      => array("server", "workstation"),
+      "plObjectType"      => ["server", "workstation"],
 
       // But simplePlugin can generate the ACL list for us
       "plProvidedAcls"    => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -79,14 +79,14 @@ class puppetNode extends simplePlugin
 
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(objectClass=puppetClient)', array('cn'));
-    $nodes = array();
+    $ldap->search('(objectClass=puppetClient)', ['cn']);
+    $nodes = [];
     while ($attrs = $ldap->fetch()) {
       $nodes[] = $attrs['cn'][0];
     }
     $this->attributesAccess['parentNode']->setChoices($nodes);
-    $ldap->search('(objectClass=puppetServer)', array('puppetAvailableEnvironment'));
-    $envs = array();
+    $ldap->search('(objectClass=puppetServer)', ['puppetAvailableEnvironment']);
+    $envs = [];
     if ($attrs = $ldap->fetch()) {
       $envs = $attrs['puppetAvailableEnvironment'];
       unset($envs['count']);
@@ -94,14 +94,14 @@ class puppetNode extends simplePlugin
     $this->attributesAccess['environment']->setChoices($envs);
   }
 
-  public function getDisplayHeaderInfos()
+  public function getDisplayHeaderInfos ()
   {
     list($disabled,$buttonText,$text) = parent::getDisplayHeaderInfos();
     if (!$this->is_account && !$disabled && empty($this->attributesAccess['environment']->getChoices())) {
       $disabled = TRUE;
       $text     = _('You need to add the puppet service to a server to be able to use this tab');
     }
-    return array($disabled,$buttonText,$text);
+    return [$disabled,$buttonText,$text];
   }
 }
 
diff --git a/puppet/admin/systems/services/puppet/class_servicePuppet.inc b/puppet/admin/systems/services/puppet/class_servicePuppet.inc
index e3a6107bb770b379b1cbf10c775aec50a1ba58f1..ffac99f0722357250297c9a8f7daa7f3ed54b26c 100644
--- a/puppet/admin/systems/services/puppet/class_servicePuppet.inc
+++ b/puppet/admin/systems/services/puppet/class_servicePuppet.inc
@@ -19,40 +19,40 @@
 */
 
 class servicePuppet extends simpleService {
-  var $objectclasses = array('puppetServer');
+  var $objectclasses = ['puppetServer'];
 
   // We also need this function that return some information about the plugin
   static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'       => _('Puppet server'),
       'plDescription'     => _('This service allows you to use a puppet server'),
       'plIcon'            => 'geticon.php?context=applications&icon=puppet&size=16',
 
       'plProvidedAcls'    => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
-    return array(
+    return [
       // Attributes are grouped by section
-      'main' => array(
+      'main' => [
         'name'  => _('Puppet server'),
-        'attrs' => array(
-          new SetAttribute (
-            new StringAttribute (
+        'attrs' => [
+          new SetAttribute(
+            new StringAttribute(
               _('Environments'),
               _('Available environments for puppet nodes'),
               'puppetAvailableEnvironment',
               TRUE
             ),
-            array('production')
+            ['production']
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/puppet/locale/af_ZA/fusiondirectory.po b/puppet/locale/af_ZA/fusiondirectory.po
index 3fd9d2d388e1dc8d294e9ea1cc5ac5de4039d967..391474c6c1ea4611c419d98209b2b127914ad752 100644
--- a/puppet/locale/af_ZA/fusiondirectory.po
+++ b/puppet/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/puppet/locale/ar/fusiondirectory.po b/puppet/locale/ar/fusiondirectory.po
index 056800308246e602786dd65868de6a8352e87e15..98b0bfd078b4f3e166c792754927b2f0cce118d8 100644
--- a/puppet/locale/ar/fusiondirectory.po
+++ b/puppet/locale/ar/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
 "MIME-Version: 1.0\n"
diff --git a/puppet/locale/ca/fusiondirectory.po b/puppet/locale/ca/fusiondirectory.po
index c5c205e0344af80726ec3692a009d590738aba47..528a746ef7c05364400b3fc25d9c903688635733 100644
--- a/puppet/locale/ca/fusiondirectory.po
+++ b/puppet/locale/ca/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
 "MIME-Version: 1.0\n"
diff --git a/puppet/locale/cs_CZ/fusiondirectory.po b/puppet/locale/cs_CZ/fusiondirectory.po
index 3da6aff3a60fda2e7d1820b9fd866fff4002fb91..44ed7f520e4d86626aa3bd7fdd5ba98ee15d3e9e 100644
--- a/puppet/locale/cs_CZ/fusiondirectory.po
+++ b/puppet/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/puppet/locale/de/fusiondirectory.po b/puppet/locale/de/fusiondirectory.po
index e21adeafb01ab6a8cef571d38d9760711dc467d4..ee523377b2bc9855b25b4dbc64ee80fdfcbccc4f 100644
--- a/puppet/locale/de/fusiondirectory.po
+++ b/puppet/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/puppet/locale/el_GR/fusiondirectory.po b/puppet/locale/el_GR/fusiondirectory.po
index e60803009ed4ef208fa10dfff763eea452ee9c84..c2455927b5714345e434f4bd001f362c9026a0c9 100644
--- a/puppet/locale/el_GR/fusiondirectory.po
+++ b/puppet/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/puppet/locale/en/fusiondirectory.po b/puppet/locale/en/fusiondirectory.po
index 0eac29b5e11d5a3a1fe887cd9a30fe5d3ba2f762..d675920d7de9b45e1f2c84317320a8ecd0bbf7e8 100644
--- a/puppet/locale/en/fusiondirectory.po
+++ b/puppet/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -66,6 +66,11 @@ msgid ""
 "Support for puppet schema in order to edit puppet classes and puppet vars"
 msgstr ""
 
+#: admin/systems/puppet/class_puppetNode.inc:102
+msgid ""
+"You need to add the puppet service to a server to be able to use this tab"
+msgstr ""
+
 #: admin/systems/services/puppet/class_servicePuppet.inc:28
 #: admin/systems/services/puppet/class_servicePuppet.inc:42
 msgid "Puppet server"
diff --git a/puppet/locale/es/fusiondirectory.po b/puppet/locale/es/fusiondirectory.po
index f9e2bdfab62375048678645b7a8150e5980dd50f..ea6c0bfcaf0cfc5320bd4b8253d6a4b96c2f4774 100644
--- a/puppet/locale/es/fusiondirectory.po
+++ b/puppet/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/puppet/class_servicePuppet.inc:28
 #: admin/systems/services/puppet/class_servicePuppet.inc:42
diff --git a/puppet/locale/es_CO/fusiondirectory.po b/puppet/locale/es_CO/fusiondirectory.po
index a71fd65aa805264a873aee6d9c2f11b9de50a466..91d1f8ffc3c8a63a93ff7a49221b71e432ce0f89 100644
--- a/puppet/locale/es_CO/fusiondirectory.po
+++ b/puppet/locale/es_CO/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/puppet/class_servicePuppet.inc:28
 #: admin/systems/services/puppet/class_servicePuppet.inc:42
diff --git a/puppet/locale/es_VE/fusiondirectory.po b/puppet/locale/es_VE/fusiondirectory.po
index 904adbf55b528d1c137731dc8b2dd9d3f19bfac6..07dfe42ba5216442c973683ddf377928d2d9d604 100644
--- a/puppet/locale/es_VE/fusiondirectory.po
+++ b/puppet/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/puppet/class_servicePuppet.inc:28
 #: admin/systems/services/puppet/class_servicePuppet.inc:42
diff --git a/puppet/locale/fa_IR/fusiondirectory.po b/puppet/locale/fa_IR/fusiondirectory.po
index 1c58f294a9417910dc9ab501b190ebab0dc77363..aa487958c8fedbc2fd611ce2c2d2cdf212413945 100644
--- a/puppet/locale/fa_IR/fusiondirectory.po
+++ b/puppet/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/puppet/locale/fi_FI/fusiondirectory.po b/puppet/locale/fi_FI/fusiondirectory.po
index cf0f5f1b4427833be4d10072415855bd64206747..b8cffdf32867fd2dc0587dfff491f516e143686b 100644
--- a/puppet/locale/fi_FI/fusiondirectory.po
+++ b/puppet/locale/fi_FI/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
 "MIME-Version: 1.0\n"
diff --git a/puppet/locale/fr/fusiondirectory.po b/puppet/locale/fr/fusiondirectory.po
index e5d0552b993958cbac80fe92ec3d82b2bd18d490..cdb203f18d03287be3afc5716ce03931981bf679 100644
--- a/puppet/locale/fr/fusiondirectory.po
+++ b/puppet/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/puppet/class_servicePuppet.inc:28
 #: admin/systems/services/puppet/class_servicePuppet.inc:42
diff --git a/puppet/locale/hu_HU/fusiondirectory.po b/puppet/locale/hu_HU/fusiondirectory.po
index 088ff2cbc23fe6cd841787d2752206ac607d0f49..93873d74eb79c4d3f272546b8ae9fc8f80e8cfef 100644
--- a/puppet/locale/hu_HU/fusiondirectory.po
+++ b/puppet/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/puppet/locale/id/fusiondirectory.po b/puppet/locale/id/fusiondirectory.po
index eae4e5655aa283b4dc024e041d17dbd19619b147..fd107255a7ec17de7a411e368b789ad40dc5395a 100644
--- a/puppet/locale/id/fusiondirectory.po
+++ b/puppet/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/puppet/locale/it_IT/fusiondirectory.po b/puppet/locale/it_IT/fusiondirectory.po
index c0ae5c38fe1aa526703a78f11ef6c82e5e0d375e..4fa9bf941af92b24d9373fc5c731d6866f23916f 100644
--- a/puppet/locale/it_IT/fusiondirectory.po
+++ b/puppet/locale/it_IT/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: Paola Penati <paola.penati@opensides.be>, 2018\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -20,7 +20,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/puppet/class_servicePuppet.inc:28
 #: admin/systems/services/puppet/class_servicePuppet.inc:42
diff --git a/puppet/locale/ja/fusiondirectory.po b/puppet/locale/ja/fusiondirectory.po
index f6a6ace31dd5619ae8fac38ee7b3c9ce28fb9294..cb2f985eeac17709721b3963df24e9133c27578d 100644
--- a/puppet/locale/ja/fusiondirectory.po
+++ b/puppet/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/puppet/locale/ko/fusiondirectory.po b/puppet/locale/ko/fusiondirectory.po
index 648e6560285d18ea9dfeb35723a7e261c423d9a2..f1bf2634d60c4ab5b0744b5684a38ab8f6e8e2c9 100644
--- a/puppet/locale/ko/fusiondirectory.po
+++ b/puppet/locale/ko/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# Choi Chris <chulwon.choi@gmail.com>, 2020
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
+"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2020\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -20,70 +24,70 @@ msgstr ""
 #: admin/systems/services/puppet/class_servicePuppet.inc:28
 #: admin/systems/services/puppet/class_servicePuppet.inc:42
 msgid "Puppet server"
-msgstr ""
+msgstr "Puppet 서버"
 
 #: admin/systems/services/puppet/class_servicePuppet.inc:29
 msgid "This service allows you to use a puppet server"
-msgstr ""
+msgstr "이 서비스를 통해 퍼펫 서버를 사용할 수 있습니다"
 
 #: admin/systems/services/puppet/class_servicePuppet.inc:46
 msgid "Environments"
-msgstr ""
+msgstr "환경"
 
 #: admin/systems/services/puppet/class_servicePuppet.inc:47
 msgid "Available environments for puppet nodes"
-msgstr ""
+msgstr "퍼펫 노드에 사용 가능한 환경"
 
 #: admin/systems/puppet/class_puppetNode.inc:32
 msgid "Puppet node settings"
-msgstr ""
+msgstr "퍼펫 노드 설정"
 
 #: admin/systems/puppet/class_puppetNode.inc:35
 msgid "Puppet class"
-msgstr ""
+msgstr "퍼펫 클래스"
 
 #: admin/systems/puppet/class_puppetNode.inc:35
 msgid "Puppet Node Class"
-msgstr ""
+msgstr "퍼펫 노드 클래스"
 
 #: admin/systems/puppet/class_puppetNode.inc:37
 msgid "Parent node"
-msgstr ""
+msgstr "부모 노드"
 
 #: admin/systems/puppet/class_puppetNode.inc:37
 msgid "Puppet Parent Node"
-msgstr ""
+msgstr "퍼펫 부모 노드"
 
 #: admin/systems/puppet/class_puppetNode.inc:38
 msgid "Environment"
-msgstr ""
+msgstr "환경"
 
 #: admin/systems/puppet/class_puppetNode.inc:38
 msgid "Puppet Node Environment"
-msgstr ""
+msgstr "퍼펫 노드 환경"
 
 #: admin/systems/puppet/class_puppetNode.inc:41
 msgid "A variable setting for puppet"
-msgstr ""
+msgstr "퍼펫에 대한 변수 설정"
 
 #: admin/systems/puppet/class_puppetNode.inc:44
 msgid "Name of the variable"
-msgstr ""
+msgstr "변수 이름"
 
 #: admin/systems/puppet/class_puppetNode.inc:45
 msgid "Value of the variable"
-msgstr ""
+msgstr "변수의 값"
 
 #: admin/systems/puppet/class_puppetNode.inc:65
 msgid "Puppet"
-msgstr ""
+msgstr "퍼펫"
 
 #: admin/systems/puppet/class_puppetNode.inc:66
 msgid ""
 "Support for puppet schema in order to edit puppet classes and puppet vars"
-msgstr ""
+msgstr "퍼펫 클래스 및 퍼펫 변수를 편집하기위한 퍼펫 스키마 지원"
 
 #: admin/systems/puppet/class_puppetNode.inc:102
 msgid ""
 "You need to add the puppet service to a server to be able to use this tab"
-msgstr ""
+msgstr "이 탭을 사용하려면 서버에 퍼펫 서비스를 추가해야합니다"
diff --git a/puppet/locale/lv/fusiondirectory.po b/puppet/locale/lv/fusiondirectory.po
index 073bf2f329276ac694848e00835cb18ba18c43a7..ab2af8eb573376c5c7211e912ddfa06ef47e35d4 100644
--- a/puppet/locale/lv/fusiondirectory.po
+++ b/puppet/locale/lv/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
 "MIME-Version: 1.0\n"
diff --git a/puppet/locale/nb/fusiondirectory.po b/puppet/locale/nb/fusiondirectory.po
index 572140918837fb2319438ceaded20c6d3d81c8d6..205193db65179058deb62485f05d7ba4ca85beed 100644
--- a/puppet/locale/nb/fusiondirectory.po
+++ b/puppet/locale/nb/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
 "MIME-Version: 1.0\n"
diff --git a/puppet/locale/nl/fusiondirectory.po b/puppet/locale/nl/fusiondirectory.po
index b944a26f35e0c4972170dcfae8c98598a56a8bdf..a39e6afbd1c43265f07a9e7c014b3169ad3ff009 100644
--- a/puppet/locale/nl/fusiondirectory.po
+++ b/puppet/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/puppet/locale/pl/fusiondirectory.po b/puppet/locale/pl/fusiondirectory.po
index a3cb2fc2aa10e043df6c530bccf8abb3b10489dd..2fd33b4682c75cd39cd435e130a5f1c0b8e2f7b8 100644
--- a/puppet/locale/pl/fusiondirectory.po
+++ b/puppet/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/puppet/locale/pt/fusiondirectory.po b/puppet/locale/pt/fusiondirectory.po
index 86dbafed270d74fd79ba912324f71c3485ff84f0..d18e442b8776a55c6e4d85810e98e636e331ea02 100644
--- a/puppet/locale/pt/fusiondirectory.po
+++ b/puppet/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/puppet/class_servicePuppet.inc:28
 #: admin/systems/services/puppet/class_servicePuppet.inc:42
diff --git a/puppet/locale/pt_BR/fusiondirectory.po b/puppet/locale/pt_BR/fusiondirectory.po
index 3219e8232b04dba5878e922becf646ccc0581a7e..683ca97342fc6c975e2348e62aeee89f16a1925a 100644
--- a/puppet/locale/pt_BR/fusiondirectory.po
+++ b/puppet/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/puppet/class_servicePuppet.inc:28
 #: admin/systems/services/puppet/class_servicePuppet.inc:42
diff --git a/puppet/locale/ru/fusiondirectory.po b/puppet/locale/ru/fusiondirectory.po
index 45de14131e8970492ee6375f82f30f0ccf9f086a..0a235b2267ea7447093daa52873d04d76f7e38fd 100644
--- a/puppet/locale/ru/fusiondirectory.po
+++ b/puppet/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/puppet/locale/ru@petr1708/fusiondirectory.po b/puppet/locale/ru@petr1708/fusiondirectory.po
index 299c1eb53a5ba9606a45411b17af211ba270ee3d..2fb4236aa290f1ccda1a58c001a582ce7ef1eda3 100644
--- a/puppet/locale/ru@petr1708/fusiondirectory.po
+++ b/puppet/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/puppet/locale/sv/fusiondirectory.po b/puppet/locale/sv/fusiondirectory.po
index 7a1d036fdbdd89570ce9edcd0b3df2e8ec544afd..5fc40219a99a254062af7f0d2835493ae09d5b22 100644
--- a/puppet/locale/sv/fusiondirectory.po
+++ b/puppet/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/puppet/locale/tr_TR/fusiondirectory.po b/puppet/locale/tr_TR/fusiondirectory.po
index b4c7403515539b0499d66639ec845b2cdf7739c0..880fcd0f24f991ee4cbf535d65e05f98a2c75d97 100644
--- a/puppet/locale/tr_TR/fusiondirectory.po
+++ b/puppet/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/puppet/locale/ug/fusiondirectory.po b/puppet/locale/ug/fusiondirectory.po
index 5b04fe33de0c4278507a7a5bcbd5a54f9f0c3709..625802ea7cb3c1447280aaed9dc07418524f3b11 100644
--- a/puppet/locale/ug/fusiondirectory.po
+++ b/puppet/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/systems/services/puppet/class_servicePuppet.inc:28
 #: admin/systems/services/puppet/class_servicePuppet.inc:42
diff --git a/puppet/locale/vi_VN/fusiondirectory.po b/puppet/locale/vi_VN/fusiondirectory.po
index 41250353fc7ec8a08e5bc66c42c73d326a267920..4cd2c2bfc9d1034effafa884457075a4c133035e 100644
--- a/puppet/locale/vi_VN/fusiondirectory.po
+++ b/puppet/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/puppet/locale/zh/fusiondirectory.po b/puppet/locale/zh/fusiondirectory.po
index 3653075888ee9a89dcef1bafc16e23ddb90e850c..bc9993f91048e4f47cccfdbfb807294d1092f576 100644
--- a/puppet/locale/zh/fusiondirectory.po
+++ b/puppet/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/puppet/locale/zh_TW/fusiondirectory.po b/puppet/locale/zh_TW/fusiondirectory.po
index 2f245cba0b86e135b6fe1c8afc98f6bf60f0a906..a9f4ea2a07e682a7c1d476bd43bd353de5d9d409 100644
--- a/puppet/locale/zh_TW/fusiondirectory.po
+++ b/puppet/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:17+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/pureftpd/locale/af_ZA/fusiondirectory.po b/pureftpd/locale/af_ZA/fusiondirectory.po
index 9cd89365a8599a3c71d4a0c930dad1282b04373f..6b7791fb0fe03eb507dc7d4fd0028c50e43ec28f 100644
--- a/pureftpd/locale/af_ZA/fusiondirectory.po
+++ b/pureftpd/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/pureftpd/locale/ar/fusiondirectory.po b/pureftpd/locale/ar/fusiondirectory.po
index 5332257f0468e675d1582585a96ccd7650f05844..c4fec5ca900902f8bc68271fe4f2473301636b31 100644
--- a/pureftpd/locale/ar/fusiondirectory.po
+++ b/pureftpd/locale/ar/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
 "MIME-Version: 1.0\n"
diff --git a/pureftpd/locale/ca/fusiondirectory.po b/pureftpd/locale/ca/fusiondirectory.po
index c26dbb16597c4445e084d85795c72fa02e92a9a3..c0abb412f34673171c962067b9e92bdd6ea8fb88 100644
--- a/pureftpd/locale/ca/fusiondirectory.po
+++ b/pureftpd/locale/ca/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
 "MIME-Version: 1.0\n"
diff --git a/pureftpd/locale/cs_CZ/fusiondirectory.po b/pureftpd/locale/cs_CZ/fusiondirectory.po
index dcdb501bba082d716ace2aa17378b0641ef7ee4f..3cb18ea37d78b89d22a0618726e10902a34583ce 100644
--- a/pureftpd/locale/cs_CZ/fusiondirectory.po
+++ b/pureftpd/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/pureftpd/locale/de/fusiondirectory.po b/pureftpd/locale/de/fusiondirectory.po
index 18f0bbf8efe5786ee73bf6ef341a86377ffc8e39..d4a82b876f1cdc406faa4dbd6a4a2ba28a739d95 100644
--- a/pureftpd/locale/de/fusiondirectory.po
+++ b/pureftpd/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/pureftpd/locale/el_GR/fusiondirectory.po b/pureftpd/locale/el_GR/fusiondirectory.po
index 27fd1a70bdce19a2ab86e0390758ed561a817bd4..b3c0922bf8669bd9d73c374d81b611e8f6365c4b 100644
--- a/pureftpd/locale/el_GR/fusiondirectory.po
+++ b/pureftpd/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/pureftpd/locale/en/fusiondirectory.po b/pureftpd/locale/en/fusiondirectory.po
index 9eb94e652be1a75a9785607564398acafa5e20e3..c8d33e1067cc94c6b438e2bb7921a111f9c1b865 100644
--- a/pureftpd/locale/en/fusiondirectory.po
+++ b/pureftpd/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
diff --git a/pureftpd/locale/es/fusiondirectory.po b/pureftpd/locale/es/fusiondirectory.po
index 14a0dfddcc8fda5766b927daa01f170781bd7f15..eae12a9b9aaf8328d2e093dcde30f640d27c9577 100644
--- a/pureftpd/locale/es/fusiondirectory.po
+++ b/pureftpd/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/pureftpd/class_pureftpdAccount.inc:33
 msgid "Ftp"
diff --git a/pureftpd/locale/es_CO/fusiondirectory.po b/pureftpd/locale/es_CO/fusiondirectory.po
index 5185fea60029555a7181a5b0bb7cef14e4976e0e..221810f1b3d5d92d819e133d904b36b20100be46 100644
--- a/pureftpd/locale/es_CO/fusiondirectory.po
+++ b/pureftpd/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/pureftpd/class_pureftpdAccount.inc:33
 msgid "Ftp"
diff --git a/pureftpd/locale/es_VE/fusiondirectory.po b/pureftpd/locale/es_VE/fusiondirectory.po
index 30ae74bc5034f30bf8031409b365de5cb286df60..05da85c3b7c44daff18cf380890f2ebb22cb1e4d 100644
--- a/pureftpd/locale/es_VE/fusiondirectory.po
+++ b/pureftpd/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/pureftpd/class_pureftpdAccount.inc:33
 msgid "Ftp"
diff --git a/pureftpd/locale/fa_IR/fusiondirectory.po b/pureftpd/locale/fa_IR/fusiondirectory.po
index 0a1bfec6da83db44cc86fb4ac058599cc05b9c20..d09de3f1e7240480cdee662110dadaa1e887c7e7 100644
--- a/pureftpd/locale/fa_IR/fusiondirectory.po
+++ b/pureftpd/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/pureftpd/locale/fi_FI/fusiondirectory.po b/pureftpd/locale/fi_FI/fusiondirectory.po
index 9924497a7c79033b6eac5419c278d56fdfa3de62..bef5f8b2128f54c2da4d376fc77cd9bd54dadc4f 100644
--- a/pureftpd/locale/fi_FI/fusiondirectory.po
+++ b/pureftpd/locale/fi_FI/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
 "MIME-Version: 1.0\n"
diff --git a/pureftpd/locale/fr/fusiondirectory.po b/pureftpd/locale/fr/fusiondirectory.po
index b132ab7df765624221f3312ecf4d2980efbbfdec..797adc9800ac891ca374b7707886a1733b46fd25 100644
--- a/pureftpd/locale/fr/fusiondirectory.po
+++ b/pureftpd/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/pureftpd/class_pureftpdAccount.inc:33
 msgid "Ftp"
diff --git a/pureftpd/locale/hu_HU/fusiondirectory.po b/pureftpd/locale/hu_HU/fusiondirectory.po
index 6b88732603fc22b90f64ef86abc7ab3f2f00ff45..a43cb3b3c355ae38aef388d0df37e6897ee439ba 100644
--- a/pureftpd/locale/hu_HU/fusiondirectory.po
+++ b/pureftpd/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/pureftpd/locale/id/fusiondirectory.po b/pureftpd/locale/id/fusiondirectory.po
index 5c65ddeaa209f9b19f3dbd6f635139fe3423cf4a..2bba9b8cb9bc68271bfca469321cbc99f9249e4e 100644
--- a/pureftpd/locale/id/fusiondirectory.po
+++ b/pureftpd/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/pureftpd/locale/it_IT/fusiondirectory.po b/pureftpd/locale/it_IT/fusiondirectory.po
index 336539ca40df26463979696d2734eb28f1e93471..44c24f28c6cf1b802caf9f6031a649f34aa90a57 100644
--- a/pureftpd/locale/it_IT/fusiondirectory.po
+++ b/pureftpd/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/pureftpd/class_pureftpdAccount.inc:33
 msgid "Ftp"
diff --git a/pureftpd/locale/ja/fusiondirectory.po b/pureftpd/locale/ja/fusiondirectory.po
index 7ec2b8c242b3061056a759161262a9d1a49cb4bb..189ac0389bad82e99e1dc390ea2c9ea290b23b2e 100644
--- a/pureftpd/locale/ja/fusiondirectory.po
+++ b/pureftpd/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/pureftpd/locale/ko/fusiondirectory.po b/pureftpd/locale/ko/fusiondirectory.po
index b461739bdff7bbd8f50e4d97b53ab5a2e08e8e25..542758c1a01a1252e94746497b31fbe2a6a9f62f 100644
--- a/pureftpd/locale/ko/fusiondirectory.po
+++ b/pureftpd/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/pureftpd/locale/lv/fusiondirectory.po b/pureftpd/locale/lv/fusiondirectory.po
index 08473a817820018cb273bfc56074b8f86cca3990..0099c000ca4e3a36f7ef5a7d87296740673060d6 100644
--- a/pureftpd/locale/lv/fusiondirectory.po
+++ b/pureftpd/locale/lv/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
 "MIME-Version: 1.0\n"
diff --git a/pureftpd/locale/nb/fusiondirectory.po b/pureftpd/locale/nb/fusiondirectory.po
index 36601650d4d8c432662a9e1a12018f04acee639a..15908999f4618401217a6180a178f3756b35fd81 100644
--- a/pureftpd/locale/nb/fusiondirectory.po
+++ b/pureftpd/locale/nb/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
 "MIME-Version: 1.0\n"
diff --git a/pureftpd/locale/nl/fusiondirectory.po b/pureftpd/locale/nl/fusiondirectory.po
index 86a5361b6d429b87009ef4967ffd85b691c3f778..1dc70807bb1da75ed3a68e56c165a0090247176b 100644
--- a/pureftpd/locale/nl/fusiondirectory.po
+++ b/pureftpd/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/pureftpd/locale/pl/fusiondirectory.po b/pureftpd/locale/pl/fusiondirectory.po
index 87c0c6f1dc31afe8dfed6672e987cea030a806be..8315a440082aef8b01a54f2ee8307c849d4076f7 100644
--- a/pureftpd/locale/pl/fusiondirectory.po
+++ b/pureftpd/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/pureftpd/locale/pt/fusiondirectory.po b/pureftpd/locale/pt/fusiondirectory.po
index 103cf836dbaa04803f14cfd3c4ef7e1d351c3055..ebacd02d28cb7db2811ba098d58a9f77a5bfc816 100644
--- a/pureftpd/locale/pt/fusiondirectory.po
+++ b/pureftpd/locale/pt/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/pureftpd/class_pureftpdAccount.inc:33
 msgid "Ftp"
diff --git a/pureftpd/locale/pt_BR/fusiondirectory.po b/pureftpd/locale/pt_BR/fusiondirectory.po
index 9531815aa47dd034a0641d85bbf2c8693816236e..81186fd80a77c733556c1a61af443903719cbc2d 100644
--- a/pureftpd/locale/pt_BR/fusiondirectory.po
+++ b/pureftpd/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/pureftpd/class_pureftpdAccount.inc:33
 msgid "Ftp"
diff --git a/pureftpd/locale/ru/fusiondirectory.po b/pureftpd/locale/ru/fusiondirectory.po
index 63788d5f0fc579e85cc516378649e2e9a1d7f173..edfd5d9a24c67482f0622bf769d396ade3a04595 100644
--- a/pureftpd/locale/ru/fusiondirectory.po
+++ b/pureftpd/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/pureftpd/locale/ru@petr1708/fusiondirectory.po b/pureftpd/locale/ru@petr1708/fusiondirectory.po
index a8f35cba78bdf62207554e6f312e1efac3babde3..effd119d0622ac34a82cb2772c166cf9c07c1842 100644
--- a/pureftpd/locale/ru@petr1708/fusiondirectory.po
+++ b/pureftpd/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/pureftpd/locale/sv/fusiondirectory.po b/pureftpd/locale/sv/fusiondirectory.po
index e7c7f805043c814fc36e01ed07cc14f84fda1610..a6ac7f68113b6380025c333fbe1f7b55a57f1b2e 100644
--- a/pureftpd/locale/sv/fusiondirectory.po
+++ b/pureftpd/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/pureftpd/locale/tr_TR/fusiondirectory.po b/pureftpd/locale/tr_TR/fusiondirectory.po
index 4db9cb050800ea78c087572df4616ff10874617a..082915ba9d00b72b2f9cfb26cac7156cf5a2ee19 100644
--- a/pureftpd/locale/tr_TR/fusiondirectory.po
+++ b/pureftpd/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/pureftpd/locale/ug/fusiondirectory.po b/pureftpd/locale/ug/fusiondirectory.po
index bd36cb66098c7107246cbeea4324bb439380e1df..783cde27153dab28c94faad864fa92e1e8f10c89 100644
--- a/pureftpd/locale/ug/fusiondirectory.po
+++ b/pureftpd/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: personal/pureftpd/class_pureftpdAccount.inc:33
 msgid "Ftp"
diff --git a/pureftpd/locale/vi_VN/fusiondirectory.po b/pureftpd/locale/vi_VN/fusiondirectory.po
index 5920260b46b7805c3502c2382b1cf19e91c6a219..72b49594224de823a42bf957be7a1ded74381409 100644
--- a/pureftpd/locale/vi_VN/fusiondirectory.po
+++ b/pureftpd/locale/vi_VN/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
 "MIME-Version: 1.0\n"
diff --git a/pureftpd/locale/zh/fusiondirectory.po b/pureftpd/locale/zh/fusiondirectory.po
index fb1c737f774aff833814eaefa3b6dded27bf79dd..225c474fcf2baef63268eb0e63237f7f47cd778c 100644
--- a/pureftpd/locale/zh/fusiondirectory.po
+++ b/pureftpd/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/pureftpd/locale/zh_TW/fusiondirectory.po b/pureftpd/locale/zh_TW/fusiondirectory.po
index 90b7deb4254952d242776c34c56a9aa868a553a0..0f5bebb344d2a46eea1c4dc75edd8706a0b31ec8 100644
--- a/pureftpd/locale/zh_TW/fusiondirectory.po
+++ b/pureftpd/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/pureftpd/personal/pureftpd/class_pureftpdAccount.inc b/pureftpd/personal/pureftpd/class_pureftpdAccount.inc
index 60b024d4b6317b353079694e55755cc75c56bb9b..fb87bc97d2229408fad71bc0c3e80873f2307230 100644
--- a/pureftpd/personal/pureftpd/class_pureftpdAccount.inc
+++ b/pureftpd/personal/pureftpd/class_pureftpdAccount.inc
@@ -23,32 +23,32 @@ class pureftpdAccount extends simplePlugin
 {
   /* Definitions */
   var $displayHeader  = TRUE;
-  var $objectclasses  = array("PureFTPdUser");
+  var $objectclasses  = ["PureFTPdUser"];
 
 
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Ftp'),
       'plDescription'   => _('Pure ftp account').'&nbsp;('._('Connectivity addon').')',
       'plIcon'          => 'geticon.php?context=applications&icon=pureftpd&size=48',
       'plSmallIcon'     => 'geticon.php?context=applications&icon=pureftpd&size=16',
       'plSelfModify'    => TRUE,
       'plPriority'      => 10,
-      'plObjectType'    => array('user'),
+      'plObjectType'    => ['user'],
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
+    return [
     // Attributes are grouped by section
-      'section1' => array (
+      'section1' => [
         'name'  => _('Bandwidth'),
-        'attrs' => array (
-          new IntAttribute (
+        'attrs' => [
+          new IntAttribute(
             _('Upload bandwidth')._(' (kb/sec)'),
             _('Upload bandwidth'),
             'FTPUploadBandwidth',
@@ -57,7 +57,7 @@ class pureftpdAccount extends simplePlugin
             FALSE,
             ''
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Download bandwidth')._(' (kb/sec)'),
             _('Download bandwidth in kb/sec'),
             'FTPDownloadBandwidth',
@@ -66,12 +66,12 @@ class pureftpdAccount extends simplePlugin
             FALSE,
             ''
           )
-        )
-      ),
-      'section2' => array (
+        ]
+      ],
+      'section2' => [
         'name'  => _('Ratio'),
-        'attrs' => array(
-          new IntAttribute (
+        'attrs' => [
+          new IntAttribute(
             _('Uploaded files'),
             _('Uploaded files'),
             'FTPUploadRatio',
@@ -80,7 +80,7 @@ class pureftpdAccount extends simplePlugin
             FALSE,
             ''
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Downloaded files'),
             _('Downloaded files'),
             'FTPDownloadRatio',
@@ -89,12 +89,12 @@ class pureftpdAccount extends simplePlugin
             FALSE,
             ''
           )
-        )
-      ),
-      'section3' => array (
+        ]
+      ],
+      'section3' => [
         'name' => ('Quota'),
-        'attrs' => array (
-          new IntAttribute (
+        'attrs' => [
+          new IntAttribute(
             _('Files'),
             _('Quota files'),
             'FTPQuotaFiles',
@@ -103,7 +103,7 @@ class pureftpdAccount extends simplePlugin
             FALSE,
             ''
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Size')._(' (MB)'),
             _('Files size'),
             'FTPQuotaMBytes',
@@ -112,19 +112,19 @@ class pureftpdAccount extends simplePlugin
             FALSE,
             ''
           )
-        )
-      ),
-      'section4' => array (
+        ]
+      ],
+      'section4' => [
         'name' => _('Miscellaneous'),
-        'attrs' => array (
-          new BooleanAttribute (
+        'attrs' => [
+          new BooleanAttribute(
             _('Enable FTP access'), _('Enable or disable FTP access'),
             'FTPStatus', FALSE,
             TRUE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 }
 
diff --git a/quota/admin/systems/services/quota/class_serviceQuota.inc b/quota/admin/systems/services/quota/class_serviceQuota.inc
index a4a3fb31c1148c0c9879410385956ef99a418e1a..96aaeb414af4354d877e685412d2e31c372aeb70 100644
--- a/quota/admin/systems/services/quota/class_serviceQuota.inc
+++ b/quota/admin/systems/services/quota/class_serviceQuota.inc
@@ -21,31 +21,31 @@
 
 class serviceQuota extends simpleService
 {
-  var $objectclasses = array('quotaService');
+  var $objectclasses = ['quotaService'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Quota service'),
       'plDescription' => _('Quota service').' ('._('Services').')',
       'plIcon'        => 'geticon.php?context=applications&icon=quota&size=16',
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'template'  => get_template_path('service_quota_parameters.tpl', TRUE, dirname(__FILE__)),
         'name'      => _('Shares'),
-        'attrs'     => array(
+        'attrs'     => [
           new OrderedArrayAttribute(
             new CharSeparatedCompositeAttribute(
               _('Quotas for the shares this server hosts'),
               'quotaDeviceParameters',
-              array(
+              [
                 new SelectAttribute(
                   _('Device'), _('Device concerned by this quota'),
                   'quotaDevice', TRUE
@@ -63,20 +63,20 @@ class serviceQuota extends simpleService
                   _('Comment'), _('Short comment about this quota'),
                   'quotaDesc', FALSE
                 ),
-              ),
+              ],
               ':'
             ),
             // no order
             FALSE,
-            array(),
+            [],
             // edit button
             TRUE
           )
-        )
-      ),
-      'message' => array(
+        ]
+      ],
+      'message' => [
         'name'      => _('Quota warning message'),
-        'attrs'     => array(
+        'attrs'     => [
           new SelectAttribute(
             _('Charset'), _('Charset use for the message'),
             'quotaMsgCharsetSupport', TRUE
@@ -109,11 +109,11 @@ class serviceQuota extends simpleService
             _('Signature'), _('Signature to put at the end of the mail'),
             'quotaMsgSignatureSupport', FALSE
           ),
-        )
-      ),
-      'ldap' => array(
+        ]
+      ],
+      'ldap' => [
         'name'      => _('LDAP message support'),
-        'attrs'     => array(
+        'attrs'     => [
           new SelectAttribute(
             _('LDAP server'), _('The LDAP server to bind to'),
             'quotaLdapServer', TRUE
@@ -126,9 +126,9 @@ class serviceQuota extends simpleService
             _('Bind user password'), _('The password of the user used for bind'),
             'quotaLdapServerUserPassword', FALSE
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $parent = NULL)
@@ -149,8 +149,8 @@ class serviceQuota extends simpleService
     );
 
     /* get all encodings types available */
-    $charsets = array();
-    $configEncodings = $config->get_cfg_value('encodings', array());
+    $charsets = [];
+    $configEncodings = $config->get_cfg_value('encodings', []);
     foreach ($configEncodings as $str) {
       $arr = explode("=", $str);
       if (count($arr) == 2) {
@@ -165,10 +165,10 @@ class serviceQuota extends simpleService
 
   }
 
-  function getShares()
+  function getShares ()
   {
     /* loading of each array of any share delared on this server  */
-    $shareInfos = array();
+    $shareInfos = [];
     if (isset($this->attrs['goExportEntry'])) {
       for ($i = 0; $i < $this->attrs['goExportEntry']['count']; $i++) {
         $parts = explode("|", $this->attrs['goExportEntry'][$i]);
@@ -180,7 +180,7 @@ class serviceQuota extends simpleService
     return $shareInfos;
   }
 
-  function getLdapServers()
+  function getLdapServers ()
   {
     /* Get List of server with LDAP service */
     return objects::ls('server', NULL, NULL, '(objectClass=goLdapServer)');
diff --git a/quota/locale/af_ZA/fusiondirectory.po b/quota/locale/af_ZA/fusiondirectory.po
index cddabc5728a2aa99b011f84f4e84142a122c42db..a90548ddd11e6b5090ace000d4ff8542e55b4c93 100644
--- a/quota/locale/af_ZA/fusiondirectory.po
+++ b/quota/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/quota/locale/ar/fusiondirectory.po b/quota/locale/ar/fusiondirectory.po
index a1569d6a813ef47bd5a88e0bd9e6f5858027d7e2..7ab1aeaab79a4473303b09baba847a776c4f692d 100644
--- a/quota/locale/ar/fusiondirectory.po
+++ b/quota/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/quota/locale/ca/fusiondirectory.po b/quota/locale/ca/fusiondirectory.po
index 098f094de3128a91daa5cbf6e69352be7d5d87a1..5092aa4f20c78b5d0920b01717e4d876df52174b 100644
--- a/quota/locale/ca/fusiondirectory.po
+++ b/quota/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/quota/locale/cs_CZ/fusiondirectory.po b/quota/locale/cs_CZ/fusiondirectory.po
index 5cd9f51a3b125e2fc50de398933f472f794e6e3c..c91a2dd4238cf0ee017e7664128f0d110b11fcd8 100644
--- a/quota/locale/cs_CZ/fusiondirectory.po
+++ b/quota/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/quota/locale/de/fusiondirectory.po b/quota/locale/de/fusiondirectory.po
index e9f0a19808e90d8c0f690824da1f11d09988d754..c6243a66a5bf3c6c535e670f52a40fea023f414d 100644
--- a/quota/locale/de/fusiondirectory.po
+++ b/quota/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/quota/locale/el_GR/fusiondirectory.po b/quota/locale/el_GR/fusiondirectory.po
index a1b24b9e0e7797e79744113be95cdb6bf00038df..1db82d8f17c2af378f743cafce6199dfbc93e754 100644
--- a/quota/locale/el_GR/fusiondirectory.po
+++ b/quota/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/quota/locale/en/fusiondirectory.po b/quota/locale/en/fusiondirectory.po
index 43cf6a7e1cd9a78e204b57d571aa1a8076a3b774..df990f8e356662e523ea52fce195fe5c27469038 100644
--- a/quota/locale/en/fusiondirectory.po
+++ b/quota/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,71 +17,6 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: personal/quota/class_quotaAccount.inc:101
-msgid "Quota"
-msgstr ""
-
-#: personal/quota/class_quotaAccount.inc:102
-msgid "Plugin for quota support"
-msgstr ""
-
-#: personal/quota/class_quotaAccount.inc:120
-msgid "Quota information"
-msgstr ""
-
-#: personal/quota/class_quotaAccount.inc:125
-msgid "Quota information for this user"
-msgstr ""
-
-#: personal/quota/class_quotaAccount.inc:129
-#: admin/systems/services/quota/class_serviceQuota.inc:50
-msgid "Device"
-msgstr ""
-
-#: personal/quota/class_quotaAccount.inc:129
-msgid "Device this quota is for"
-msgstr ""
-
-#: personal/quota/class_quotaAccount.inc:133
-msgid "Block soft limit"
-msgstr ""
-
-#: personal/quota/class_quotaAccount.inc:133
-msgid "Soft limit for the block the user can use"
-msgstr ""
-
-#: personal/quota/class_quotaAccount.inc:142
-msgid "Block hard limit"
-msgstr ""
-
-#: personal/quota/class_quotaAccount.inc:142
-msgid "Hard limit for the block the user can use"
-msgstr ""
-
-#: personal/quota/class_quotaAccount.inc:151
-msgid "Inode soft limit"
-msgstr ""
-
-#: personal/quota/class_quotaAccount.inc:151
-msgid "Soft limit for the inodes the user can use"
-msgstr ""
-
-#: personal/quota/class_quotaAccount.inc:160
-msgid "Inode hard limit"
-msgstr ""
-
-#: personal/quota/class_quotaAccount.inc:160
-msgid "Hard limit for the inodes the user can use"
-msgstr ""
-
-#: personal/quota/class_quotaAccount.inc:169
-msgid "Server"
-msgstr ""
-
-#: personal/quota/class_quotaAccount.inc:169
-msgid "Server hosting the device this quota is for"
-msgstr ""
-
 #: admin/systems/services/quota/class_serviceQuota.inc:29
 #: admin/systems/services/quota/class_serviceQuota.inc:30
 msgid "Quota service"
@@ -99,6 +34,11 @@ msgstr ""
 msgid "Quotas for the shares this server hosts"
 msgstr ""
 
+#: admin/systems/services/quota/class_serviceQuota.inc:50
+#: personal/quota/class_quotaAccount.inc:129
+msgid "Device"
+msgstr ""
+
 #: admin/systems/services/quota/class_serviceQuota.inc:50
 msgid "Device concerned by this quota"
 msgstr ""
@@ -228,3 +168,63 @@ msgstr ""
 #, php-format
 msgid "(%s by %s)"
 msgstr ""
+
+#: personal/quota/class_quotaAccount.inc:101
+msgid "Quota"
+msgstr ""
+
+#: personal/quota/class_quotaAccount.inc:102
+msgid "Plugin for quota support"
+msgstr ""
+
+#: personal/quota/class_quotaAccount.inc:120
+msgid "Quota information"
+msgstr ""
+
+#: personal/quota/class_quotaAccount.inc:125
+msgid "Quota information for this user"
+msgstr ""
+
+#: personal/quota/class_quotaAccount.inc:129
+msgid "Device this quota is for"
+msgstr ""
+
+#: personal/quota/class_quotaAccount.inc:133
+msgid "Block soft limit"
+msgstr ""
+
+#: personal/quota/class_quotaAccount.inc:133
+msgid "Soft limit for the block the user can use"
+msgstr ""
+
+#: personal/quota/class_quotaAccount.inc:142
+msgid "Block hard limit"
+msgstr ""
+
+#: personal/quota/class_quotaAccount.inc:142
+msgid "Hard limit for the block the user can use"
+msgstr ""
+
+#: personal/quota/class_quotaAccount.inc:151
+msgid "Inode soft limit"
+msgstr ""
+
+#: personal/quota/class_quotaAccount.inc:151
+msgid "Soft limit for the inodes the user can use"
+msgstr ""
+
+#: personal/quota/class_quotaAccount.inc:160
+msgid "Inode hard limit"
+msgstr ""
+
+#: personal/quota/class_quotaAccount.inc:160
+msgid "Hard limit for the inodes the user can use"
+msgstr ""
+
+#: personal/quota/class_quotaAccount.inc:169
+msgid "Server"
+msgstr ""
+
+#: personal/quota/class_quotaAccount.inc:169
+msgid "Server hosting the device this quota is for"
+msgstr ""
diff --git a/quota/locale/es/fusiondirectory.po b/quota/locale/es/fusiondirectory.po
index 09b31079c4dc331846c7810294a6a76f77e8dea1..592c9e57e5937ba1af51996ef1403a7ccd39e1eb 100644
--- a/quota/locale/es/fusiondirectory.po
+++ b/quota/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:29
 #: admin/systems/services/quota/class_serviceQuota.inc:30
diff --git a/quota/locale/es_CO/fusiondirectory.po b/quota/locale/es_CO/fusiondirectory.po
index 3edc7b8ee668d92d948522bcfcd8292bb209a0d9..b3276b5e87855597d0587ca3fe5a4a4659e3d225 100644
--- a/quota/locale/es_CO/fusiondirectory.po
+++ b/quota/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:29
 #: admin/systems/services/quota/class_serviceQuota.inc:30
diff --git a/quota/locale/es_VE/fusiondirectory.po b/quota/locale/es_VE/fusiondirectory.po
index 49f492cfec8db06c0633787241af36107bfcb14f..51c6c4de1f9de841665b02cb2cc51332a05d2b70 100644
--- a/quota/locale/es_VE/fusiondirectory.po
+++ b/quota/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:29
 #: admin/systems/services/quota/class_serviceQuota.inc:30
diff --git a/quota/locale/fa_IR/fusiondirectory.po b/quota/locale/fa_IR/fusiondirectory.po
index 6f26bea456cc3b5ce177fa95ea205b410d1c190c..1188cce54d053bea12a1d4cecea57e3c157fba90 100644
--- a/quota/locale/fa_IR/fusiondirectory.po
+++ b/quota/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/quota/locale/fi_FI/fusiondirectory.po b/quota/locale/fi_FI/fusiondirectory.po
index 27831954cde996b47dd3d0711acc779704b6bc19..bb8cc6389b070529fedf64e03d97726a4a07370a 100644
--- a/quota/locale/fi_FI/fusiondirectory.po
+++ b/quota/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/quota/locale/fr/fusiondirectory.po b/quota/locale/fr/fusiondirectory.po
index 572953c8f030484a892dea50caa4c2a7bc551599..451c6e2560c02c1ab1bb02a4cb49ff2ee7a2e3ed 100644
--- a/quota/locale/fr/fusiondirectory.po
+++ b/quota/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:29
 #: admin/systems/services/quota/class_serviceQuota.inc:30
diff --git a/quota/locale/hu_HU/fusiondirectory.po b/quota/locale/hu_HU/fusiondirectory.po
index cc14d0076c8ff4f4b7bfc01fe03a9a4be9f909ff..e5ab4d7e1b2c99b84f2b87feab000d943892ccba 100644
--- a/quota/locale/hu_HU/fusiondirectory.po
+++ b/quota/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/quota/locale/id/fusiondirectory.po b/quota/locale/id/fusiondirectory.po
index 87d09f35c94ccd02257ac39fa226193ad3750e34..81f81928f1ccab68504a431dfdd03b77269e5e88 100644
--- a/quota/locale/id/fusiondirectory.po
+++ b/quota/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/quota/locale/it_IT/fusiondirectory.po b/quota/locale/it_IT/fusiondirectory.po
index d6e8feef9e52e9c24d918e268d2575552ab704f1..62e47c66d874c883064e00d440bf23808223f778 100644
--- a/quota/locale/it_IT/fusiondirectory.po
+++ b/quota/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:29
 #: admin/systems/services/quota/class_serviceQuota.inc:30
diff --git a/quota/locale/ja/fusiondirectory.po b/quota/locale/ja/fusiondirectory.po
index e04aedb0cb8875926834912f897fe34554878d07..c56b58493c6059bd0238313887b0ea4b89d82de2 100644
--- a/quota/locale/ja/fusiondirectory.po
+++ b/quota/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/quota/locale/ko/fusiondirectory.po b/quota/locale/ko/fusiondirectory.po
index 5f734ed319bde00c6b3b42d6aa14a04615e7b730..ba4b434b135e006c8dcd0a9c3c56683828cd75ca 100644
--- a/quota/locale/ko/fusiondirectory.po
+++ b/quota/locale/ko/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# Choi Chris <chulwon.choi@gmail.com>, 2018
+# Choi Chris <chulwon.choi@gmail.com>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
-"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
+"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2021\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -25,6 +25,10 @@ msgstr ""
 #: admin/systems/services/quota/class_serviceQuota.inc:30
 msgid "Quota service"
 msgstr ""
+" \n"
+"\n"
+" \n"
+"할당량 서비스"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:30
 msgid "Services"
@@ -36,76 +40,76 @@ msgstr "공유"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:46
 msgid "Quotas for the shares this server hosts"
-msgstr ""
+msgstr "이 서버 호스트의 공유 할당량"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:50
 #: personal/quota/class_quotaAccount.inc:129
 msgid "Device"
-msgstr ""
+msgstr "디바이스"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:50
 msgid "Device concerned by this quota"
-msgstr ""
+msgstr "이 할당량에 관련된 장치"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:54
 msgid "Quota block size"
-msgstr ""
+msgstr "할당량 블록 크기"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:54
 msgid "Quota block size on this share (usually 1024)"
-msgstr ""
+msgstr "이 공유의 할당량 블록 크기 (일반적으로 1024)"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:63
 msgid "Comment"
-msgstr ""
+msgstr "주석"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:63
 msgid "Short comment about this quota"
-msgstr ""
+msgstr "이 할당량에 대한 간단한 의견"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:78
 msgid "Quota warning message"
-msgstr ""
+msgstr "할당량 경고 메시지"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:81
 msgid "Charset"
-msgstr ""
+msgstr "문자셋"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:81
 msgid "Charset use for the message"
-msgstr ""
+msgstr "메시지의 문자셋 사용"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:85
 msgid "Mail command"
-msgstr ""
+msgstr "메일 명령"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:85
 msgid "Command allowing the server to send mails"
-msgstr ""
+msgstr "서버가 메일을 보내도록 허용하는 명령"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:89
 msgid "Support contact"
-msgstr ""
+msgstr "지원 연락처"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:89
 msgid "Email address to contact the administrator"
-msgstr ""
+msgstr "관리자에게 연락할 이메일 주소"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:93
 msgid "From"
-msgstr ""
+msgstr "From"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:93
 msgid "Email from which the email is sent"
-msgstr ""
+msgstr "이메일이 발송된 메일주소"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:97
 msgid "CC"
-msgstr ""
+msgstr "참조"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:97
 msgid "Send a copy of this email to"
-msgstr ""
+msgstr "이 이메일의 사본을 발송"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:101
 msgid "Subject"
@@ -113,51 +117,51 @@ msgstr "제목"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:101
 msgid "Subject of the sent warning email"
-msgstr ""
+msgstr "전송된 경고 이메일의 제목"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:105
 msgid "Content"
-msgstr ""
+msgstr "본문"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:105
 msgid "Content of the sent email"
-msgstr ""
+msgstr "전송된 이메일 내용"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:109
 msgid "Signature"
-msgstr ""
+msgstr "서명"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:109
 msgid "Signature to put at the end of the mail"
-msgstr ""
+msgstr "메일의 끝에 넣을 서명"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:115
 msgid "LDAP message support"
-msgstr ""
+msgstr "LDAP 메시지 지원"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:118
 msgid "LDAP server"
-msgstr ""
+msgstr "LDAP  서버"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:118
 msgid "The LDAP server to bind to"
-msgstr ""
+msgstr "바인딩 할 LDAP 서버"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:122
 msgid "Bind user dn"
-msgstr ""
+msgstr "사용자 DN 바인딩"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:122
 msgid "The user dn to use for bind"
-msgstr ""
+msgstr "바인드에 사용할 suer dn"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:126
 msgid "Bind user password"
-msgstr ""
+msgstr "사용자 비밀번호 바인딩"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:126
 msgid "The password of the user used for bind"
-msgstr ""
+msgstr "바인드에 사용된 사용자의 비밀번호"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:159
 msgid "Warning"
@@ -171,59 +175,59 @@ msgstr "잘못된 인코딩 값 : %s"
 #: admin/systems/services/quota/class_serviceQuota.inc:176
 #, php-format
 msgid "(%s by %s)"
-msgstr ""
+msgstr "(%s 중 %s)"
 
 #: personal/quota/class_quotaAccount.inc:101
 msgid "Quota"
-msgstr ""
+msgstr "할당량"
 
 #: personal/quota/class_quotaAccount.inc:102
 msgid "Plugin for quota support"
-msgstr ""
+msgstr "할당량 지원을 위한 플러그인"
 
 #: personal/quota/class_quotaAccount.inc:120
 msgid "Quota information"
-msgstr ""
+msgstr "할당량 정보"
 
 #: personal/quota/class_quotaAccount.inc:125
 msgid "Quota information for this user"
-msgstr ""
+msgstr "이 사용자의 할당량 정보"
 
 #: personal/quota/class_quotaAccount.inc:129
 msgid "Device this quota is for"
-msgstr ""
+msgstr "이 할당량의 기기"
 
 #: personal/quota/class_quotaAccount.inc:133
 msgid "Block soft limit"
-msgstr ""
+msgstr "소프트 제한 차단"
 
 #: personal/quota/class_quotaAccount.inc:133
 msgid "Soft limit for the block the user can use"
-msgstr ""
+msgstr "사용자가 사용할 수 있는 블록에 대한 소프트 제한"
 
 #: personal/quota/class_quotaAccount.inc:142
 msgid "Block hard limit"
-msgstr ""
+msgstr "하드 제한 차단"
 
 #: personal/quota/class_quotaAccount.inc:142
 msgid "Hard limit for the block the user can use"
-msgstr ""
+msgstr "사용자가 사용할 수있는 블록에 대한 하드 제한"
 
 #: personal/quota/class_quotaAccount.inc:151
 msgid "Inode soft limit"
-msgstr ""
+msgstr "Inode 소프트 제한"
 
 #: personal/quota/class_quotaAccount.inc:151
 msgid "Soft limit for the inodes the user can use"
-msgstr ""
+msgstr "사용자가 사용할 수있는 inode에 대한 소프트 제한"
 
 #: personal/quota/class_quotaAccount.inc:160
 msgid "Inode hard limit"
-msgstr ""
+msgstr "Inode 하드 제한"
 
 #: personal/quota/class_quotaAccount.inc:160
 msgid "Hard limit for the inodes the user can use"
-msgstr ""
+msgstr "사용자가 사용할 수있는 inode에 대한 하드 제한"
 
 #: personal/quota/class_quotaAccount.inc:169
 msgid "Server"
@@ -231,4 +235,4 @@ msgstr "서버"
 
 #: personal/quota/class_quotaAccount.inc:169
 msgid "Server hosting the device this quota is for"
-msgstr ""
+msgstr "이 할당량의 대상 장치를 호스팅하는 서버"
diff --git a/quota/locale/lv/fusiondirectory.po b/quota/locale/lv/fusiondirectory.po
index 43a1cd3c8f921b739e0c06fd7314cec11fdf3f81..55e991ce58cc3b200678b91d42f6923c9076eae6 100644
--- a/quota/locale/lv/fusiondirectory.po
+++ b/quota/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/quota/locale/nb/fusiondirectory.po b/quota/locale/nb/fusiondirectory.po
index 77eb0aa0223149c3aae791e137d519b3a4733881..4dc2bb1bfe308c3c3b59a2da9d776fabf28f0419 100644
--- a/quota/locale/nb/fusiondirectory.po
+++ b/quota/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/quota/locale/nl/fusiondirectory.po b/quota/locale/nl/fusiondirectory.po
index 4938e017e7e6fc6faf558a63836fe63d36ebf39c..c992afd660c8c032262abac831ec85c9c02b7a44 100644
--- a/quota/locale/nl/fusiondirectory.po
+++ b/quota/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/quota/locale/pl/fusiondirectory.po b/quota/locale/pl/fusiondirectory.po
index 026653ddc543f440dffad308d203b79f0942e27d..64b9d4b8ecd5c83199a32048c3374eb799808caa 100644
--- a/quota/locale/pl/fusiondirectory.po
+++ b/quota/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/quota/locale/pt/fusiondirectory.po b/quota/locale/pt/fusiondirectory.po
index 8a0e7423034fad8519d4bb73450d0a3559df1336..f709cf79cceda5a77265b94e6d2dd8884cebe86a 100644
--- a/quota/locale/pt/fusiondirectory.po
+++ b/quota/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:29
 #: admin/systems/services/quota/class_serviceQuota.inc:30
diff --git a/quota/locale/pt_BR/fusiondirectory.po b/quota/locale/pt_BR/fusiondirectory.po
index dbc4fd41796191ed4a377920566381ec775bec4e..df86d20f7d599b4f6b519a1e6f24f8c00e4335be 100644
--- a/quota/locale/pt_BR/fusiondirectory.po
+++ b/quota/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:29
 #: admin/systems/services/quota/class_serviceQuota.inc:30
diff --git a/quota/locale/ru/fusiondirectory.po b/quota/locale/ru/fusiondirectory.po
index 6bb38e2a298875790fb40681a886a485a975d908..36f5c6391e34fffad6ada6f5e97a20dc536a877d 100644
--- a/quota/locale/ru/fusiondirectory.po
+++ b/quota/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/quota/locale/ru@petr1708/fusiondirectory.po b/quota/locale/ru@petr1708/fusiondirectory.po
index 1e594eb4432a4d10318d8b0e0c5beb7735c0da46..355abefd6b02ca552617d337cea694fcc68df66e 100644
--- a/quota/locale/ru@petr1708/fusiondirectory.po
+++ b/quota/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/quota/locale/sv/fusiondirectory.po b/quota/locale/sv/fusiondirectory.po
index 5b37b04824aa02c9dabf12f4f68e794f00bdc3d3..77b23fd22b54a79249350ec4b96fa6cd1d72d612 100644
--- a/quota/locale/sv/fusiondirectory.po
+++ b/quota/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/quota/locale/tr_TR/fusiondirectory.po b/quota/locale/tr_TR/fusiondirectory.po
index 81082129624d57824131b3bf911d78f48fd1a0da..bfa6f50243035d1d37d284e4ac47cc7752fa7ccc 100644
--- a/quota/locale/tr_TR/fusiondirectory.po
+++ b/quota/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2021
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2021\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -157,7 +161,7 @@ msgstr ""
 
 #: admin/systems/services/quota/class_serviceQuota.inc:159
 msgid "Warning"
-msgstr ""
+msgstr "İkaz"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:159
 #, php-format
diff --git a/quota/locale/ug/fusiondirectory.po b/quota/locale/ug/fusiondirectory.po
index 79d2e5f9610ae7a5c537fbbd6d204bfd41d4ba8e..a487a493297324b7ca85b6788ab814d4083e7b4a 100644
--- a/quota/locale/ug/fusiondirectory.po
+++ b/quota/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/systems/services/quota/class_serviceQuota.inc:29
 #: admin/systems/services/quota/class_serviceQuota.inc:30
diff --git a/quota/locale/vi_VN/fusiondirectory.po b/quota/locale/vi_VN/fusiondirectory.po
index 110588372be76101939f3ca95a097000e28f67fe..308be93af4e5d6d38e50ad5db001c89579f929d7 100644
--- a/quota/locale/vi_VN/fusiondirectory.po
+++ b/quota/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/quota/locale/zh/fusiondirectory.po b/quota/locale/zh/fusiondirectory.po
index 208a5b41a140d3401518709e4b3b11ed419bd736..8509c2e020e6ce043f22cf06ec2104679a1426f0 100644
--- a/quota/locale/zh/fusiondirectory.po
+++ b/quota/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/quota/locale/zh_TW/fusiondirectory.po b/quota/locale/zh_TW/fusiondirectory.po
index 3a63754a36f3cd4a1abba5cd036c73955777b985..bf13bf812a0d50b85364c06ebd9ce15a2223286d 100644
--- a/quota/locale/zh_TW/fusiondirectory.po
+++ b/quota/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:18+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/quota/personal/quota/class_quotaAccount.inc b/quota/personal/quota/class_quotaAccount.inc
index e1378860423fe3c371538605d55be194ae4c9dc8..43bdac07e0d8495832b3fc593012132b62ca609c 100644
--- a/quota/personal/quota/class_quotaAccount.inc
+++ b/quota/personal/quota/class_quotaAccount.inc
@@ -25,7 +25,7 @@
 
 class QuotaEntryAttribute extends CharSeparatedCompositeAttribute
 {
-  function readValues($value)
+  function readValues ($value)
   {
     $values = parent::readValues($value);
     $blocksize = $this->plugin->getBlockSize($values[5], $values[0]);
@@ -36,7 +36,7 @@ class QuotaEntryAttribute extends CharSeparatedCompositeAttribute
     return $values;
   }
 
-  function writeValues($values)
+  function writeValues ($values)
   {
     if (!empty($values[5])) {
       $blocksize = $this->plugin->getBlockSize($values[5], $values[0]);
@@ -48,13 +48,13 @@ class QuotaEntryAttribute extends CharSeparatedCompositeAttribute
     return parent::writeValues($values);
   }
 
-  function updateDeviceList()
+  function updateDeviceList ()
   {
     $quotaDeviceList = $this->plugin->getDeviceList($this->attributes[5]->getValue());
     $this->attributes[0]->setChoices(array_keys($quotaDeviceList), array_values($quotaDeviceList));
   }
 
-  function applyPostValue()
+  function applyPostValue ()
   {
     parent::applyPostValue();
     $this->updateDeviceList();
@@ -91,40 +91,40 @@ class QuotaEntryAttribute extends CharSeparatedCompositeAttribute
 
 class quotaAccount extends simplePlugin
 {
-  var $objectclasses = array('systemQuotas');
+  var $objectclasses = ['systemQuotas'];
 
   var $displayHeader = TRUE;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Quota'),
       'plDescription' => _('Plugin for quota support'),
       'plIcon'        => 'geticon.php?context=applications&icon=quota&size=48',
       'plSmallIcon'   => 'geticon.php?context=applications&icon=quota&size=16',
       'plSelfModify'  => TRUE,
       'plPriority'    => 8,
-      'plObjectType'  => array('user'),
-      'plDepends'     => array('posixAccount'),
+      'plObjectType'  => ['user'],
+      'plDepends'     => ['posixAccount'],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'template'  => get_template_path('quota_section.tpl', TRUE, dirname(__FILE__)),
-        'class'     => array('fullwidth'),
+        'class'     => ['fullwidth'],
         'name'      => _('Quota information'),
         'icon'      => 'geticon.php?context=applications&icon=quota&size=16',
-        'attrs'     => array(
+        'attrs'     => [
           new OrderedArrayAttribute(
             new QuotaEntryAttribute(
               _('Quota information for this user'),
               'quota',
-              array(
+              [
                 new SelectAttribute(
                   _('Device'), _('Device this quota is for'),
                   'quotaDevice', TRUE
@@ -169,18 +169,18 @@ class quotaAccount extends simplePlugin
                   _('Server'), _('Server hosting the device this quota is for'),
                   'quotaServer', TRUE
                 ),
-              ),
+              ],
               ':'
             ),
             // no order
             FALSE,
-            array(),
+            [],
             // edit button
             TRUE
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -189,9 +189,9 @@ class quotaAccount extends simplePlugin
     /* Get List of server with Quota service */
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(objectClass=quotaService)', array('cn','description','quotaDeviceParameters'));
-    $this->quotaDeviceParameters = array();
-    $quotaServersList = array();
+    $ldap->search('(objectClass=quotaService)', ['cn','description','quotaDeviceParameters']);
+    $this->quotaDeviceParameters = [];
+    $quotaServersList = [];
     while ($attrs = $ldap->fetch()) {
       $this->quotaDeviceParameters[$attrs['cn'][0]] = $attrs['quotaDeviceParameters'];
       unset($this->quotaDeviceParameters[$attrs['cn'][0]]['count']);
@@ -213,9 +213,9 @@ class quotaAccount extends simplePlugin
     parent::__construct($dn, $object, $parent, $mainTab, $attributesInfo);
   }
 
-  function getDeviceList($server)
+  function getDeviceList ($server)
   {
-    $quotaDeviceList = array();
+    $quotaDeviceList = [];
     if (isset($this->quotaDeviceParameters[$server])) {
       foreach ($this->quotaDeviceParameters[$server] as $infos) {
         $quotas = explode(":", $infos);
@@ -228,7 +228,7 @@ class quotaAccount extends simplePlugin
     return $quotaDeviceList;
   }
 
-  function getBlockSize($server, $device)
+  function getBlockSize ($server, $device)
   {
     foreach ($this->quotaDeviceParameters[$server] as $infos) {
       $quotas = explode(":", $infos);
diff --git a/renater-partage/admin/groups/renater-partage/class_partageGroup.inc b/renater-partage/admin/groups/renater-partage/class_partageGroup.inc
index e4a663fda3a0c530c625ec5cdb043947bffbdd58..00fc2f6d352eb3d02460d5a3259a2ed90ed63f14 100644
--- a/renater-partage/admin/groups/renater-partage/class_partageGroup.inc
+++ b/renater-partage/admin/groups/renater-partage/class_partageGroup.inc
@@ -21,52 +21,52 @@
 class partageGroup extends simplePlugin
 {
   var $displayHeader  = TRUE;
-  var $objectclasses  = array('fdRenaterPartageGroup');
+  var $objectclasses  = ['fdRenaterPartageGroup'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'    => _('Partage'),
       'plDescription'  => _('Partage group options'),
       'plSmallIcon'    => 'geticon.php?context=applications&icon=renater-partage&size=16',
-      'plDepends'      => array('mailGroup'),
-      'plObjectType'   => array('group', 'ogroup-user'),
+      'plDepends'      => ['mailGroup'],
+      'plObjectType'   => ['group', 'ogroup-user'],
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Information'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Display name'), _('Name to display for this group'),
             'displayName'
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Hide from global catalog'), _('Whether this group should be hidden from the global catalog'),
             'fdRenaterPartageGroupHideInGal', FALSE,
             FALSE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Type'), _('Type of PARTAGE group'),
             'fdRenaterPartageGroupMailStatus', TRUE,
-            array('enabled','disabled'), 'enabled',
-            array(_('Distribution list'), _('Group'))
+            ['enabled','disabled'], 'enabled',
+            [_('Distribution list'), _('Group')]
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Alert new members'), _('Send a message to alert new members, they have joined this group'),
             'fdRenaterPartageGroupSendShareMessageToNewMembers', FALSE,
             TRUE
           ),
-          new TextAreaAttribute (
+          new TextAreaAttribute(
             _('Notes'), _('Notes about this group'),
             'fdRenaterPartageGroupNotes', FALSE
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 }
diff --git a/renater-partage/admin/sympa/renater-partage/class_sympaAliasPartage.inc b/renater-partage/admin/sympa/renater-partage/class_sympaAliasPartage.inc
index a14cd5ac86e326f38c8ac1c12b41528457541635..6c4bb85564bf6886ce3d00a0c01bccb69703feb0 100644
--- a/renater-partage/admin/sympa/renater-partage/class_sympaAliasPartage.inc
+++ b/renater-partage/admin/sympa/renater-partage/class_sympaAliasPartage.inc
@@ -21,59 +21,59 @@
 class sympaAliasPartage extends simplePlugin
 {
   var $displayHeader  = TRUE;
-  var $objectclasses  = array('fdRenaterPartageSympaAlias');
+  var $objectclasses  = ['fdRenaterPartageSympaAlias'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'    => _('Partage'),
       'plDescription'  => _('Partage sympa options'),
-      'plObjectType'   => array('sympaAlias'),
+      'plObjectType'   => ['sympaAlias'],
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Information'),
-        'attrs' => array(
+        'attrs' => [
           new SelectAttribute(
             _('Server'), _('Email server'),
             'gosaMailServer', TRUE,
-            array('')
+            ['']
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Display name'), _('Name to display for this group'),
             'displayName'
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Hide from global catalog'), _('Whether this group should be hidden from the global catalog'),
             'fdRenaterPartageGroupHideInGal', FALSE,
             FALSE
           ),
-          new HiddenAttribute (
+          new HiddenAttribute(
             'fdRenaterPartageGroupMailStatus', TRUE, 'enabled'
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             'fdRenaterPartageGroupSendShareMessageToNewMembers', '',
             'fdRenaterPartageGroupSendShareMessageToNewMembers', FALSE,
             FALSE
           ),
-          new TextAreaAttribute (
+          new TextAreaAttribute(
             _('Notes'), _('Notes about this group'),
             'fdRenaterPartageGroupNotes', FALSE
           ),
-          new SetAttribute (
-            new StringAttribute (
+          new SetAttribute(
+            new StringAttribute(
               _('Alternative addresses'), _('Alternative mail addresses for the list'),
               'gosaMailAlternateAddress'
             )
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -87,7 +87,7 @@ class sympaAliasPartage extends simplePlugin
   }
 
   /* We need $mailAccount->cn to return the cn for mailMethod */
-  public function __get($name)
+  public function __get ($name)
   {
     if (($name == 'cn') && isset($this->parent)) {
       return $this->parent->getBaseObject()->$name;
@@ -103,7 +103,7 @@ class sympaAliasPartage extends simplePlugin
     }
   }
 
-  public function __isset($name)
+  public function __isset ($name)
   {
     if (($name == 'cn') && isset($this->parent)) {
       return isset($this->parent->getBaseObject()->$name);
@@ -115,7 +115,7 @@ class sympaAliasPartage extends simplePlugin
     }
   }
 
-  private function getEmailDomain()
+  private function getEmailDomain ()
   {
     $servers  = mailMethod::getMailServers();
     $infos    = $servers[$this->gosaMailServer];
@@ -126,7 +126,7 @@ class sympaAliasPartage extends simplePlugin
     }
   }
 
-  public function mailServerChanged()
+  public function mailServerChanged ()
   {
     /* Intialize the used mailMethod */
     if ($this->gosaMailServer == '') {
@@ -149,13 +149,13 @@ class sympaAliasPartage extends simplePlugin
     return $messages;
   }
 
-  protected function shouldSave()
+  protected function shouldSave ()
   {
     /* mail method might have something to save */
     return TRUE;
   }
 
-  public function ldap_save()
+  public function ldap_save ()
   {
     if (!empty($this->attrs)) {
       $errors = parent::ldap_save();
@@ -164,7 +164,7 @@ class sympaAliasPartage extends simplePlugin
       }
     }
 
-    $errors = array();
+    $errors = [];
 
     /* Only do IMAP actions if we are not a template */
     if (!$this->is_template) {
@@ -189,7 +189,7 @@ class sympaAliasPartage extends simplePlugin
     return $errors;
   }
 
-  function post_remove()
+  function post_remove ()
   {
     /* Let the mailMethod remove this mailbox */
     if (!$this->is_template) {
diff --git a/renater-partage/admin/systems/services/renater-partage/class_serviceRenaterPartage.inc b/renater-partage/admin/systems/services/renater-partage/class_serviceRenaterPartage.inc
index 149e639629a33378404fb1517ca13ab4c4ae4356..2e77875c78fce947f4c0325d7b8baa68c940d569 100644
--- a/renater-partage/admin/systems/services/renater-partage/class_serviceRenaterPartage.inc
+++ b/renater-partage/admin/systems/services/renater-partage/class_serviceRenaterPartage.inc
@@ -20,26 +20,26 @@
 
 class serviceRenaterPartage extends simpleMailMethodService
 {
-  var $objectclasses = array('fdRenaterPartageServer');
+  var $objectclasses = ['fdRenaterPartageServer'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Renater Partage'),
       'plDescription'   => _('Renater Partage'),
       'plIcon'          => 'geticon.php?context=applications&icon=renater-partage&size=16',
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array (
-      'main' => array (
+    return  [
+      'main' => [
         'name'  => _('Settings'),
-        'class' => array('fullwidth'),
-        'attrs' => array (
+        'class' => ['fullwidth'],
+        'attrs' => [
           new URLAttribute(
             _('URI'), _('URI to contact the Renater Partage API'),
             'fdRenaterPartageServerUri', TRUE
@@ -52,46 +52,46 @@ class serviceRenaterPartage extends simpleMailMethodService
           new SelectAttribute(
             _('Mailbox deletion'), _('What to do with the PARTAGE account when mail tab is deactivated or user is deleted'),
             'fdRenaterPartageServerDeletionType', TRUE,
-            array(  'delete',   'disable'), '',
-            array(_('Delete'),_('Disable'))
+            [  'delete',   'disable'], '',
+            [_('Delete'),_('Disable')]
           ),
-        )
-      ),
-      'domains' => array(
+        ]
+      ],
+      'domains' => [
         'template'  => get_template_path('renater_domains.tpl', TRUE, dirname(__FILE__)),
         'name'      => _('Domains'),
-        'class'     => array('fullwidth'),
-        'attrs'     => array(
+        'class'     => ['fullwidth'],
+        'attrs'     => [
           new OrderedArrayAttribute(
             new CharSeparatedCompositeAttribute(
               _('Domains handled by this Renater Partage server'),
               'fdRenaterPartageServerMailDomain',
-              array(
-                new StringAttribute (
+              [
+                new StringAttribute(
                   _('Domain'), _('Domain handled by this server'),
                   'renaterPartageDomain', TRUE
                 ),
-                new StringAttribute (
+                new StringAttribute(
                   _('Key'), _('Key for this domain'),
                   'renaterPartageDomainKey', TRUE
                 ),
-                new StringAttribute (
+                new StringAttribute(
                   _('Classes of service'), _('Possible classes of service for this domain and their ids, separated by commas. Format is cos1Name|cos1Id,cos2Name|cos2Id.'),
                   'renaterPartageDomainCOS', TRUE,
                   '', '',
                   '/^[^,|]+\|[^,|]+(,[^,|]+\|[^,|]+)*$/',
                   'cos1|cos1id,cos2|cos2id'
                 )
-              ),
+              ],
               ':',
               '',
               _('Domains')
             ),
-            FALSE, array(), TRUE
+            FALSE, [], TRUE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $parent = NULL)
diff --git a/renater-partage/locale/af_ZA/fusiondirectory.po b/renater-partage/locale/af_ZA/fusiondirectory.po
index 7992c55a2131dd0b42c7da8f279f54fa5f621f01..a83d61067c325649d4f5bf5c04b11261eaa69bc5 100644
--- a/renater-partage/locale/af_ZA/fusiondirectory.po
+++ b/renater-partage/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/renater-partage/locale/ar/fusiondirectory.po b/renater-partage/locale/ar/fusiondirectory.po
index dea03ec2421de5b2230247149cc36e55f6e36195..e79ac6a6e37d4eb4e0dd7ef5fb4aee951e714a2c 100644
--- a/renater-partage/locale/ar/fusiondirectory.po
+++ b/renater-partage/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/renater-partage/locale/ca/fusiondirectory.po b/renater-partage/locale/ca/fusiondirectory.po
index 5b820dbcc4197764770a60439e06f31c201996e8..a14e1ef62d4b24bc6a1d9fa9d67cf6fe06aa4268 100644
--- a/renater-partage/locale/ca/fusiondirectory.po
+++ b/renater-partage/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/renater-partage/locale/cs_CZ/fusiondirectory.po b/renater-partage/locale/cs_CZ/fusiondirectory.po
index b49121c7cbda9d56b0651dd4cbab68d5d3038e0a..53d581cd00215dc41fbfd106ddd6ba84e24018b1 100644
--- a/renater-partage/locale/cs_CZ/fusiondirectory.po
+++ b/renater-partage/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/renater-partage/locale/de/fusiondirectory.po b/renater-partage/locale/de/fusiondirectory.po
index 67f5a6c10ad48716e04b1acb6505e999e69a244e..26347fea51f27f20770ca9c040421bee9026d2b8 100644
--- a/renater-partage/locale/de/fusiondirectory.po
+++ b/renater-partage/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/renater-partage/locale/el_GR/fusiondirectory.po b/renater-partage/locale/el_GR/fusiondirectory.po
index 8e4456fbeb5d07480e0a57eafc47ab34621913a3..09a164bbcec09be4f55a77bdff9c45634e81defb 100644
--- a/renater-partage/locale/el_GR/fusiondirectory.po
+++ b/renater-partage/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/renater-partage/locale/en/fusiondirectory.po b/renater-partage/locale/en/fusiondirectory.po
index c1175b8cba98a603bc94efb0aab4cc8579afc433..87ff84a91a1175bcb133152c6d7f7189901e72f4 100644
--- a/renater-partage/locale/en/fusiondirectory.po
+++ b/renater-partage/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,130 +17,164 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:61
-msgid "Server did not return auth token"
+#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:28
+#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:29
+msgid "Renater Partage"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:114
-msgid "Partage API answer malformated"
+#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:40
+msgid "Settings"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:118
-#, php-format
-msgid "Partage API Auth failed: %s"
+#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:44
+msgid "URI"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:120
-msgid "Partage API Auth failed with no error message"
+#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:44
+msgid "URI to contact the Renater Partage API"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:129
-#, php-format
-msgid "Unable to connect to %s: %s"
+#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:48
+msgid "User Agent"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:131
-#, php-format
-msgid "Unable to connect to %s"
+#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:48
+msgid "User Agent to use to contact the Renater Partage API"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:226
-msgid "Warning"
+#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:53
+msgid "Mailbox deletion"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:226
-#, php-format
+#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:53
 msgid ""
-"Several addresses were given in gosaMailForwardingAddress but only one is "
-"supported by PARTAGE. %s will be sent to PARTAGE."
+"What to do with the PARTAGE account when mail tab is deactivated or user is "
+"deleted"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:458
-msgid "PARTAGE error"
+#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:56
+msgid "Delete"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:459
-#, php-format
-msgid "Several users have uid \"%s\". Ignoring this member."
+#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:56
+msgid "Disable"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:498
-#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:511
-msgid "An account with the same email address already exists in Partage"
+#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:62
+#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:88
+msgid "Domains"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:576
-msgid "Invalid value in fdRenaterPartageServerDeletionType"
+#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:67
+msgid "Domains handled by this Renater Partage server"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:613
-msgid "Never"
+#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:71
+msgid "Domain"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:620
-msgid "Last login"
+#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:71
+msgid "Domain handled by this server"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:621
-msgid "Account status"
+#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:75
+msgid "Key"
 msgstr ""
 
-#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:621
-msgid "Unknown"
+#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:75
+msgid "Key for this domain"
 msgstr ""
 
-#: admin/sympa/renater-partage/class_sympaAliasPartage.inc:29
-#: admin/groups/renater-partage/class_partageGroup.inc:29
-msgid "Partage"
+#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:79
+msgid "Classes of service"
 msgstr ""
 
-#: admin/sympa/renater-partage/class_sympaAliasPartage.inc:30
-msgid "Partage sympa options"
+#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:79
+msgid ""
+"Possible classes of service for this domain and their ids, separated by "
+"commas. Format is cos1Name|cos1Id,cos2Name|cos2Id."
 msgstr ""
 
-#: admin/sympa/renater-partage/class_sympaAliasPartage.inc:40
-#: admin/groups/renater-partage/class_partageGroup.inc:41
-msgid "Information"
+#: admin/groups/renater-partage/class_partageGroup.inc:29
+#: admin/sympa/renater-partage/class_sympaAliasPartage.inc:29
+msgid "Partage"
 msgstr ""
 
-#: admin/sympa/renater-partage/class_sympaAliasPartage.inc:43
-msgid "Server"
+#: admin/groups/renater-partage/class_partageGroup.inc:30
+msgid "Partage group options"
 msgstr ""
 
-#: admin/sympa/renater-partage/class_sympaAliasPartage.inc:43
-msgid "Email server"
+#: admin/groups/renater-partage/class_partageGroup.inc:42
+#: admin/sympa/renater-partage/class_sympaAliasPartage.inc:40
+msgid "Information"
 msgstr ""
 
+#: admin/groups/renater-partage/class_partageGroup.inc:45
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:48
-#: admin/groups/renater-partage/class_partageGroup.inc:44
 msgid "Display name"
 msgstr ""
 
+#: admin/groups/renater-partage/class_partageGroup.inc:45
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:48
-#: admin/groups/renater-partage/class_partageGroup.inc:44
 msgid "Name to display for this group"
 msgstr ""
 
+#: admin/groups/renater-partage/class_partageGroup.inc:49
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:52
-#: admin/groups/renater-partage/class_partageGroup.inc:48
 msgid "Hide from global catalog"
 msgstr ""
 
+#: admin/groups/renater-partage/class_partageGroup.inc:49
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:52
-#: admin/groups/renater-partage/class_partageGroup.inc:48
 msgid "Whether this group should be hidden from the global catalog"
 msgstr ""
 
+#: admin/groups/renater-partage/class_partageGroup.inc:54
+msgid "Type"
+msgstr ""
+
+#: admin/groups/renater-partage/class_partageGroup.inc:54
+msgid "Type of PARTAGE group"
+msgstr ""
+
+#: admin/groups/renater-partage/class_partageGroup.inc:57
+msgid "Distribution list"
+msgstr ""
+
+#: admin/groups/renater-partage/class_partageGroup.inc:57
+msgid "Group"
+msgstr ""
+
+#: admin/groups/renater-partage/class_partageGroup.inc:60
+msgid "Alert new members"
+msgstr ""
+
+#: admin/groups/renater-partage/class_partageGroup.inc:60
+msgid "Send a message to alert new members, they have joined this group"
+msgstr ""
+
+#: admin/groups/renater-partage/class_partageGroup.inc:65
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:65
-#: admin/groups/renater-partage/class_partageGroup.inc:64
 msgid "Notes"
 msgstr ""
 
+#: admin/groups/renater-partage/class_partageGroup.inc:65
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:65
-#: admin/groups/renater-partage/class_partageGroup.inc:64
 msgid "Notes about this group"
 msgstr ""
 
+#: admin/sympa/renater-partage/class_sympaAliasPartage.inc:30
+msgid "Partage sympa options"
+msgstr ""
+
+#: admin/sympa/renater-partage/class_sympaAliasPartage.inc:43
+msgid "Server"
+msgstr ""
+
+#: admin/sympa/renater-partage/class_sympaAliasPartage.inc:43
+msgid "Email server"
+msgstr ""
+
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:70
 msgid "Alternative addresses"
 msgstr ""
@@ -149,131 +183,104 @@ msgstr ""
 msgid "Alternative mail addresses for the list"
 msgstr ""
 
-#: admin/sympa/renater-partage/class_sympaAliasPartage.inc:158
+#: admin/sympa/renater-partage/class_sympaAliasPartage.inc:173
 #, php-format
 msgid "Mail method cannot connect: %s"
 msgstr ""
 
-#: admin/sympa/renater-partage/class_sympaAliasPartage.inc:161
+#: admin/sympa/renater-partage/class_sympaAliasPartage.inc:176
 #, php-format
 msgid "Cannot update mailbox: %s"
 msgstr ""
 
-#: admin/sympa/renater-partage/class_sympaAliasPartage.inc:182
-#: admin/sympa/renater-partage/class_sympaAliasPartage.inc:186
+#: admin/sympa/renater-partage/class_sympaAliasPartage.inc:197
+#: admin/sympa/renater-partage/class_sympaAliasPartage.inc:201
 msgid "Mail error"
 msgstr ""
 
-#: admin/sympa/renater-partage/class_sympaAliasPartage.inc:182
+#: admin/sympa/renater-partage/class_sympaAliasPartage.inc:197
 #, php-format
 msgid "Cannot remove mailbox, mail method cannot connect: %s"
 msgstr ""
 
-#: admin/sympa/renater-partage/class_sympaAliasPartage.inc:186
+#: admin/sympa/renater-partage/class_sympaAliasPartage.inc:201
 #, php-format
 msgid "Cannot remove mailbox: %s"
 msgstr ""
 
-#: admin/groups/renater-partage/class_partageGroup.inc:30
-msgid "Partage group options"
-msgstr ""
-
-#: admin/groups/renater-partage/class_partageGroup.inc:53
-msgid "Type"
-msgstr ""
-
-#: admin/groups/renater-partage/class_partageGroup.inc:53
-msgid "Type of PARTAGE group"
-msgstr ""
-
-#: admin/groups/renater-partage/class_partageGroup.inc:56
-msgid "Distribution list"
-msgstr ""
-
-#: admin/groups/renater-partage/class_partageGroup.inc:56
-msgid "Group"
-msgstr ""
-
-#: admin/groups/renater-partage/class_partageGroup.inc:59
-msgid "Alert new members"
-msgstr ""
-
-#: admin/groups/renater-partage/class_partageGroup.inc:59
-msgid "Send a message to alert new members, they have joined this group"
+#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:64
+msgid "Server did not return auth token"
 msgstr ""
 
-#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:28
-#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:29
-msgid "Renater Partage"
+#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:129
+msgid "Partage API answer malformated"
 msgstr ""
 
-#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:40
-msgid "Settings"
+#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:133
+#, php-format
+msgid "Partage API Auth failed: %s"
 msgstr ""
 
-#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:44
-msgid "URI"
+#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:135
+msgid "Partage API Auth failed with no error message"
 msgstr ""
 
-#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:44
-msgid "URI to contact the Renater Partage API"
+#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:144
+#, php-format
+msgid "Unable to connect to %s: %s"
 msgstr ""
 
-#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:48
-msgid "User Agent"
+#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:146
+#, php-format
+msgid "Unable to connect to %s"
 msgstr ""
 
-#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:48
-msgid "User Agent to use to contact the Renater Partage API"
+#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:172
+#, php-format
+msgid "Email address \"%s\" does not use the correct partage domain \"%s\""
 msgstr ""
 
-#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:53
-msgid "Mailbox deletion"
+#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:259
+msgid "Warning"
 msgstr ""
 
-#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:53
+#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:259
+#, php-format
 msgid ""
-"What to do with the PARTAGE account when mail tab is deactivated or user is "
-"deleted"
-msgstr ""
-
-#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:56
-msgid "Delete"
-msgstr ""
-
-#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:56
-msgid "Disable"
+"Several addresses were given in gosaMailForwardingAddress but only one is "
+"supported by PARTAGE. %s will be sent to PARTAGE."
 msgstr ""
 
-#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:62
-#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:85
-msgid "Domains"
+#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:491
+msgid "PARTAGE error"
 msgstr ""
 
-#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:67
-msgid "Domains handled by this Renater Partage server"
+#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:492
+#, php-format
+msgid "Several users have uid \"%s\". Ignoring this member."
 msgstr ""
 
-#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:71
-msgid "Domain"
+#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:531
+#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:544
+msgid "An account with the same email address already exists in Partage"
 msgstr ""
 
-#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:71
-msgid "Domain handled by this server"
+#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:609
+msgid "Invalid value in fdRenaterPartageServerDeletionType"
 msgstr ""
 
-#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:75
-msgid "Key"
+#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:646
+msgid "Never"
 msgstr ""
 
-#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:75
-msgid "Key for this domain"
+#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:653
+msgid "Last login"
 msgstr ""
 
-#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:79
-msgid "Class of service"
+#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:654
+msgid "Account status"
 msgstr ""
 
-#: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:79
-msgid "Possible classes of service for this domain, separated by commas"
+#: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:654
+msgid "Unknown"
 msgstr ""
diff --git a/renater-partage/locale/es/fusiondirectory.po b/renater-partage/locale/es/fusiondirectory.po
index 6654e400fe0fb09929c0330fd8fe142fca26f9eb..5a718a34c7042c410a609120d9acbdcec2574349 100644
--- a/renater-partage/locale/es/fusiondirectory.po
+++ b/renater-partage/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/groups/renater-partage/class_partageGroup.inc:29
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:29
diff --git a/renater-partage/locale/es_CO/fusiondirectory.po b/renater-partage/locale/es_CO/fusiondirectory.po
index 9555d0cf06ed3af11066aa01f30b506b3f8e902f..4f6327c4bfb0c04490e376676e353afbae97a995 100644
--- a/renater-partage/locale/es_CO/fusiondirectory.po
+++ b/renater-partage/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/groups/renater-partage/class_partageGroup.inc:29
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:29
diff --git a/renater-partage/locale/es_VE/fusiondirectory.po b/renater-partage/locale/es_VE/fusiondirectory.po
index ee355d0f7d58bff71133866a0febcaec7dc8d80b..c1b5d8050f139ccf25be579362fd7c06fb98db92 100644
--- a/renater-partage/locale/es_VE/fusiondirectory.po
+++ b/renater-partage/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/groups/renater-partage/class_partageGroup.inc:29
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:29
diff --git a/renater-partage/locale/fa_IR/fusiondirectory.po b/renater-partage/locale/fa_IR/fusiondirectory.po
index 33d32038ca7a035d59d6b1862eada1e820a2fa9c..a6b392d64a713df90534991f4b4edd4b58eb7f6f 100644
--- a/renater-partage/locale/fa_IR/fusiondirectory.po
+++ b/renater-partage/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/renater-partage/locale/fi_FI/fusiondirectory.po b/renater-partage/locale/fi_FI/fusiondirectory.po
index 895d1589842433bd8d2a1a71932ba8d96b5126c4..a6eee850eb6a57b6d5346c87cdd1fe3aaea42469 100644
--- a/renater-partage/locale/fi_FI/fusiondirectory.po
+++ b/renater-partage/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/renater-partage/locale/fr/fusiondirectory.po b/renater-partage/locale/fr/fusiondirectory.po
index 4c9030a7778e317a9ba2a2eade809f3f05d4aed3..f502b53bc08804ec1ef6618703d5ef6fc9d38fda 100644
--- a/renater-partage/locale/fr/fusiondirectory.po
+++ b/renater-partage/locale/fr/fusiondirectory.po
@@ -5,22 +5,22 @@
 # 
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2017
-# Benoit Mortier <benoit.mortier@opensides.be>, 2018
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
-"Last-Translator: Benoit Mortier <benoit.mortier@opensides.be>, 2018\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/groups/renater-partage/class_partageGroup.inc:29
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:29
diff --git a/renater-partage/locale/hu_HU/fusiondirectory.po b/renater-partage/locale/hu_HU/fusiondirectory.po
index 86f64f7ea81103763533ee603bb63158fdc0142e..50a8c335af43fdc86fe8b4efdfcc8298977c2b1e 100644
--- a/renater-partage/locale/hu_HU/fusiondirectory.po
+++ b/renater-partage/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/renater-partage/locale/id/fusiondirectory.po b/renater-partage/locale/id/fusiondirectory.po
index 160ddc016cd01cd1f0b7651d1808d63780646613..b7e2b194f52c33d37d8362998fe07f635f762ac4 100644
--- a/renater-partage/locale/id/fusiondirectory.po
+++ b/renater-partage/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/renater-partage/locale/it_IT/fusiondirectory.po b/renater-partage/locale/it_IT/fusiondirectory.po
index fec11917ea0c5073152d49b96d8420b67b22082b..721dcd2f19c354fdb1467e9e735478631a952325 100644
--- a/renater-partage/locale/it_IT/fusiondirectory.po
+++ b/renater-partage/locale/it_IT/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Last-Translator: Paola Penati <paola.penati@opensides.be>, 2018\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -20,7 +20,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/groups/renater-partage/class_partageGroup.inc:29
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:29
diff --git a/renater-partage/locale/ja/fusiondirectory.po b/renater-partage/locale/ja/fusiondirectory.po
index 5bcd15df2f5532e2971fdf11a18fd4aa56418ad2..04b18c013208bebd7dd188d290e4c703ae6893db 100644
--- a/renater-partage/locale/ja/fusiondirectory.po
+++ b/renater-partage/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/renater-partage/locale/ko/fusiondirectory.po b/renater-partage/locale/ko/fusiondirectory.po
index bbc74082944d8cd306371df658a1ed66ec2a94ba..749bcdcdaf5ecbd96f902598302588d993d2b4fe 100644
--- a/renater-partage/locale/ko/fusiondirectory.po
+++ b/renater-partage/locale/ko/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# Choi Chris <chulwon.choi@gmail.com>, 2018
+# Choi Chris <chulwon.choi@gmail.com>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
-"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
+"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2021\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -24,11 +24,11 @@ msgstr ""
 #: admin/groups/renater-partage/class_partageGroup.inc:29
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:29
 msgid "Partage"
-msgstr ""
+msgstr "파티지"
 
 #: admin/groups/renater-partage/class_partageGroup.inc:30
 msgid "Partage group options"
-msgstr ""
+msgstr "파티지 그룹 옵션"
 
 #: admin/groups/renater-partage/class_partageGroup.inc:42
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:40
@@ -43,17 +43,17 @@ msgstr "표시 이름"
 #: admin/groups/renater-partage/class_partageGroup.inc:45
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:48
 msgid "Name to display for this group"
-msgstr ""
+msgstr "이 그룹에 대해 표시할 이름"
 
 #: admin/groups/renater-partage/class_partageGroup.inc:49
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:52
 msgid "Hide from global catalog"
-msgstr ""
+msgstr "글로벌 카탈로그에서 숨기기"
 
 #: admin/groups/renater-partage/class_partageGroup.inc:49
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:52
 msgid "Whether this group should be hidden from the global catalog"
-msgstr ""
+msgstr "이 그룹을 글로벌 카탈로그에서 숨겨야 하는지 여부"
 
 #: admin/groups/renater-partage/class_partageGroup.inc:54
 msgid "Type"
@@ -61,11 +61,11 @@ msgstr "타입"
 
 #: admin/groups/renater-partage/class_partageGroup.inc:54
 msgid "Type of PARTAGE group"
-msgstr ""
+msgstr "PARTAGE 그룹 유형"
 
 #: admin/groups/renater-partage/class_partageGroup.inc:57
 msgid "Distribution list"
-msgstr ""
+msgstr "배포 목록"
 
 #: admin/groups/renater-partage/class_partageGroup.inc:57
 msgid "Group"
@@ -73,26 +73,26 @@ msgstr "그룹"
 
 #: admin/groups/renater-partage/class_partageGroup.inc:60
 msgid "Alert new members"
-msgstr ""
+msgstr "새 회원에게 알림"
 
 #: admin/groups/renater-partage/class_partageGroup.inc:60
 msgid "Send a message to alert new members, they have joined this group"
-msgstr ""
+msgstr "이 그룹에 가입한 새 회원에게 알리는 메시지를 보내십시오."
 
 #: admin/groups/renater-partage/class_partageGroup.inc:65
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:65
 msgid "Notes"
-msgstr ""
+msgstr "노트"
 
 #: admin/groups/renater-partage/class_partageGroup.inc:65
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:65
 msgid "Notes about this group"
-msgstr ""
+msgstr "이 그룹에 대한 참고 사항"
 
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:28
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:29
 msgid "Renater Partage"
-msgstr ""
+msgstr "레나터 파티지"
 
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:40
 msgid "Settings"
@@ -100,46 +100,46 @@ msgstr "설정"
 
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:44
 msgid "URI"
-msgstr ""
+msgstr "URI"
 
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:44
 msgid "URI to contact the Renater Partage API"
-msgstr ""
+msgstr "Renater Partage API에 연결하기위한 URI"
 
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:48
 msgid "User Agent"
-msgstr ""
+msgstr "사용자 에이전트"
 
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:48
 msgid "User Agent to use to contact the Renater Partage API"
-msgstr ""
+msgstr "Renater Partage API에 연결하는데 사용할 사용자 에이전트"
 
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:53
 msgid "Mailbox deletion"
-msgstr ""
+msgstr "사서함 삭제"
 
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:53
 msgid ""
 "What to do with the PARTAGE account when mail tab is deactivated or user is "
 "deleted"
-msgstr ""
+msgstr "메일 탭이 비활성화되거나 사용자가 삭제 된 경우 Partage 계정으로 수행 할 작업"
 
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:56
 msgid "Delete"
-msgstr ""
+msgstr "삭제"
 
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:56
 msgid "Disable"
-msgstr ""
+msgstr "미사용"
 
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:62
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:88
 msgid "Domains"
-msgstr ""
+msgstr "도메인"
 
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:67
 msgid "Domains handled by this Renater Partage server"
-msgstr ""
+msgstr "이 Renater Partage 서버에서 처리하는 도메인"
 
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:71
 msgid "Domain"
@@ -147,29 +147,31 @@ msgstr "도메"
 
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:71
 msgid "Domain handled by this server"
-msgstr ""
+msgstr "이 서버에서 처리하는 도메인"
 
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:75
 msgid "Key"
-msgstr ""
+msgstr "키"
 
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:75
 msgid "Key for this domain"
-msgstr ""
+msgstr "이 도메인의 키"
 
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:79
 msgid "Classes of service"
-msgstr ""
+msgstr "서비스 등급"
 
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:79
 msgid ""
 "Possible classes of service for this domain and their ids, separated by "
 "commas. Format is cos1Name|cos1Id,cos2Name|cos2Id."
 msgstr ""
+"이 도메인 및 해당 ID에 대해 가능한 서비스 클래스 (쉼표로 구분). 형식은 cos1Name | cos1Id, cos2Name | "
+"cos2Id입니다."
 
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:30
 msgid "Partage sympa options"
-msgstr ""
+msgstr "Partage sympa 옵션"
 
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:43
 msgid "Server"
@@ -185,7 +187,7 @@ msgstr "대체메일"
 
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:70
 msgid "Alternative mail addresses for the list"
-msgstr ""
+msgstr "목록의 대체 메일 주소"
 
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:173
 #, php-format
@@ -214,35 +216,35 @@ msgstr "메일박스 삭제 불가: %s"
 
 #: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:64
 msgid "Server did not return auth token"
-msgstr ""
+msgstr "서버가 인증 토큰을 반환하지 않았습니다."
 
 #: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:129
 msgid "Partage API answer malformated"
-msgstr ""
+msgstr "Partage API 응답 형식이 잘못되었습니다."
 
 #: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:133
 #, php-format
 msgid "Partage API Auth failed: %s"
-msgstr ""
+msgstr "Partage API 인증 실패 : %s"
 
 #: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:135
 msgid "Partage API Auth failed with no error message"
-msgstr ""
+msgstr "오류 메시지없이 Partage API 인증에 실패했습니다."
 
 #: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:144
 #, php-format
 msgid "Unable to connect to %s: %s"
-msgstr ""
+msgstr "%s 에 연결할 수 없습니다 : %s"
 
 #: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:146
 #, php-format
 msgid "Unable to connect to %s"
-msgstr ""
+msgstr "%s에 연결할 수 없습니다."
 
 #: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:172
 #, php-format
 msgid "Email address \"%s\" does not use the correct partage domain \"%s\""
-msgstr ""
+msgstr "이메일 주소 \"%s\"에서 올바른 파티지 도메인 \"%s\"을 사용하지 않습니다."
 
 #: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:259
 msgid "Warning"
@@ -254,6 +256,8 @@ msgid ""
 "Several addresses were given in gosaMailForwardingAddress but only one is "
 "supported by PARTAGE. %s will be sent to PARTAGE."
 msgstr ""
+"gosaMailForwardingAddress에 여러 주소가 제공되었지만 Partage에서는 하나만 지원합니다. %s는 Partage로 "
+"전송됩니다."
 
 #: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:491
 msgid "PARTAGE error"
@@ -262,28 +266,28 @@ msgstr ""
 #: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:492
 #, php-format
 msgid "Several users have uid \"%s\". Ignoring this member."
-msgstr ""
+msgstr "여러 사용자가 uid \"%s\"를 가지고 있습니다. 이 멤버를 무시합니다."
 
 #: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:531
 #: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:544
 msgid "An account with the same email address already exists in Partage"
-msgstr ""
+msgstr "동일한 이메일 주소를 가진 계정이 이미 Partage에 있습니다."
 
 #: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:609
 msgid "Invalid value in fdRenaterPartageServerDeletionType"
-msgstr ""
+msgstr "fdRenaterPartageServerDeletionType의 잘못된 값"
 
 #: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:646
 msgid "Never"
-msgstr ""
+msgstr "제한없음"
 
 #: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:653
 msgid "Last login"
-msgstr ""
+msgstr "마지막 로그인"
 
 #: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:654
 msgid "Account status"
-msgstr ""
+msgstr "계정 상태"
 
 #: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:654
 msgid "Unknown"
diff --git a/renater-partage/locale/lv/fusiondirectory.po b/renater-partage/locale/lv/fusiondirectory.po
index 61ae671c0aeee314c1d3284dd120fe6799b43c84..80f211e5219c2d6877b21399b7a7fe07df761b56 100644
--- a/renater-partage/locale/lv/fusiondirectory.po
+++ b/renater-partage/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/renater-partage/locale/nb/fusiondirectory.po b/renater-partage/locale/nb/fusiondirectory.po
index 05c5e3a932775e466ab1a36ec43dd55c063e088c..40f494ed833906facb886454914d0f3ca12b8fb5 100644
--- a/renater-partage/locale/nb/fusiondirectory.po
+++ b/renater-partage/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/renater-partage/locale/nl/fusiondirectory.po b/renater-partage/locale/nl/fusiondirectory.po
index db7cde134433ae238fc9de8300263bc8b316f11b..29b3ed1323d30c542ac66ab7f7b6f2636e4deedb 100644
--- a/renater-partage/locale/nl/fusiondirectory.po
+++ b/renater-partage/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/renater-partage/locale/pl/fusiondirectory.po b/renater-partage/locale/pl/fusiondirectory.po
index 301009dd3d1d15c210a72cdffca79eb463bd7e2b..d42279d095399eb066446531d7e81fd26846b23a 100644
--- a/renater-partage/locale/pl/fusiondirectory.po
+++ b/renater-partage/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/renater-partage/locale/pt/fusiondirectory.po b/renater-partage/locale/pt/fusiondirectory.po
index e3f5ba6313ef1c47a99117bc69d7a456238fcdb5..74f0c31ee0c2792b7be90fcd4a97db5362899310 100644
--- a/renater-partage/locale/pt/fusiondirectory.po
+++ b/renater-partage/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/groups/renater-partage/class_partageGroup.inc:29
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:29
diff --git a/renater-partage/locale/pt_BR/fusiondirectory.po b/renater-partage/locale/pt_BR/fusiondirectory.po
index 654d445075e48bf56209dad8e8f0f51ca6943816..50e2b3809176581d59c83feeb116ec1a4e8134b7 100644
--- a/renater-partage/locale/pt_BR/fusiondirectory.po
+++ b/renater-partage/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/groups/renater-partage/class_partageGroup.inc:29
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:29
diff --git a/renater-partage/locale/ru/fusiondirectory.po b/renater-partage/locale/ru/fusiondirectory.po
index f4869e0682240d63a82b76f4d6b27d2de569ebbe..3982703c64c91198e837f6bc7a7e1a303be3903b 100644
--- a/renater-partage/locale/ru/fusiondirectory.po
+++ b/renater-partage/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/renater-partage/locale/ru@petr1708/fusiondirectory.po b/renater-partage/locale/ru@petr1708/fusiondirectory.po
index 1e03f3aa58cfebbb272b195021c53b4ae498ecd0..5ac3e7dbee66d45400bcab286f84bd89a5a6612b 100644
--- a/renater-partage/locale/ru@petr1708/fusiondirectory.po
+++ b/renater-partage/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/renater-partage/locale/sv/fusiondirectory.po b/renater-partage/locale/sv/fusiondirectory.po
index 5a06e75e7b929f2a1d96ddc7f075d5a3e96989f7..f3ab0c539928847999f81d34e893e3c839eaaa36 100644
--- a/renater-partage/locale/sv/fusiondirectory.po
+++ b/renater-partage/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/renater-partage/locale/tr_TR/fusiondirectory.po b/renater-partage/locale/tr_TR/fusiondirectory.po
index 3b992d16182ed1f6a0a3a2f2b1fc9240cd0a6350..8a779484d45fc6f49fd2a4c7719dc7d990ca5111 100644
--- a/renater-partage/locale/tr_TR/fusiondirectory.po
+++ b/renater-partage/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2021
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2021\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -53,7 +57,7 @@ msgstr ""
 
 #: admin/groups/renater-partage/class_partageGroup.inc:54
 msgid "Type"
-msgstr ""
+msgstr "Tür"
 
 #: admin/groups/renater-partage/class_partageGroup.inc:54
 msgid "Type of PARTAGE group"
@@ -92,7 +96,7 @@ msgstr ""
 
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:40
 msgid "Settings"
-msgstr ""
+msgstr "Ayarlar"
 
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:44
 msgid "URI"
@@ -122,7 +126,7 @@ msgstr ""
 
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:56
 msgid "Delete"
-msgstr ""
+msgstr "Sil"
 
 #: admin/systems/services/renater-partage/class_serviceRenaterPartage.inc:56
 msgid "Disable"
@@ -242,7 +246,7 @@ msgstr ""
 
 #: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:259
 msgid "Warning"
-msgstr ""
+msgstr "İkaz"
 
 #: personal/mail/mail-methods/class_mail-methods-renater-partage.inc:259
 #, php-format
diff --git a/renater-partage/locale/ug/fusiondirectory.po b/renater-partage/locale/ug/fusiondirectory.po
index 8022af003495eca60d4953686db43c8497706170..b09dccb3468e781990f389ecf802ef980e0eb47d 100644
--- a/renater-partage/locale/ug/fusiondirectory.po
+++ b/renater-partage/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/groups/renater-partage/class_partageGroup.inc:29
 #: admin/sympa/renater-partage/class_sympaAliasPartage.inc:29
diff --git a/renater-partage/locale/vi_VN/fusiondirectory.po b/renater-partage/locale/vi_VN/fusiondirectory.po
index 3993923792fbcec2e1e335259094aa91344de81f..b2401fdd4e3f4f33df7d5551e60bcd07a5d66060 100644
--- a/renater-partage/locale/vi_VN/fusiondirectory.po
+++ b/renater-partage/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/renater-partage/locale/zh/fusiondirectory.po b/renater-partage/locale/zh/fusiondirectory.po
index 8c8264a020b63383997ba5ce1dee0d088b340d91..b29c7ede2197812e069d07821f7489dd449fad07 100644
--- a/renater-partage/locale/zh/fusiondirectory.po
+++ b/renater-partage/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/renater-partage/locale/zh_TW/fusiondirectory.po b/renater-partage/locale/zh_TW/fusiondirectory.po
index f64d11d0688f07462170ac30372f3197de89c8bd..2e443f28e4bcb5f8667b1e16723b0524e81debf6 100644
--- a/renater-partage/locale/zh_TW/fusiondirectory.po
+++ b/renater-partage/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2017-01-25 17:30+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/renater-partage/personal/mail/mail-methods/class_mail-methods-renater-partage.inc b/renater-partage/personal/mail/mail-methods/class_mail-methods-renater-partage.inc
index e61f19f952ada2e87446dc175ba26907b0fecc7d..79e2dbcd46160763d1cc22548b06047dff1db3a5 100644
--- a/renater-partage/personal/mail/mail-methods/class_mail-methods-renater-partage.inc
+++ b/renater-partage/personal/mail/mail-methods/class_mail-methods-renater-partage.inc
@@ -30,8 +30,8 @@ class mailMethodRenaterPartage extends mailMethod
   protected $user_id  = '%MAIL%';
   protected $share_id = '%MAIL%';
 
-  private $http_options = array();
-  private $ssl_options = array();
+  private $http_options = [];
+  private $ssl_options = [];
   private $token;
   private $tokenTime;
   private $cachedAccount;
@@ -39,7 +39,7 @@ class mailMethodRenaterPartage extends mailMethod
   /*! \brief  Connect to renater PARTAGE API and store the auth token
       @return Boolean True if connection was successful
    */
-  public function connect()
+  public function connect ()
   {
     parent::connect();
     $servers = static::getMailServers();
@@ -50,11 +50,11 @@ class mailMethodRenaterPartage extends mailMethod
     $ts = time();
     $preauth = hash_hmac('sha1', $infos['domain'].'|'.$ts, $infos['key']);
 
-    $request = array(
+    $request = [
       'domain'    => $infos['domain'],
       'timestamp' => $ts,
       'preauth'   => $preauth
-    );
+    ];
 
     $response = $this->query('Auth', $request);
 
@@ -71,7 +71,7 @@ class mailMethodRenaterPartage extends mailMethod
     }
   }
 
-  private function query($command, $post)
+  private function query ($command, $post)
   {
     $servers = static::getMailServers();
     $infos = $servers[$this->parent->gosaMailServer];
@@ -82,24 +82,24 @@ class mailMethodRenaterPartage extends mailMethod
       $post = preg_replace('/%5B[0-9]+%5D/simU', '%5B%5D', $post);
     }
 
-    @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $command, '<b>MAIL: Command</b>');
-    @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, htmlentities($post, ENT_COMPAT, 'UTF-8'),
+    @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $command, '<b>MAIL: Command</b>');
+    @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, htmlentities($post, ENT_COMPAT, 'UTF-8'),
       '<b>MAIL: Query</b>');
 
     // performs the HTTP(S) POST
-    $opts = array (
+    $opts = [
       'http' => array_merge(
-        array (
+         [
           'method'      => 'POST',
           'user_agent'  => $infos['user_agent'],
           'header'      => 'Content-type: application/x-www-form-urlencoded'."\r\n"
                           .'Content-Length: '.strlen($post)."\r\n",
           'content'     => $post
-        ),
-        $this->http_options
+         ],
+         $this->http_options
       ),
       'ssl' => $this->ssl_options
-    );
+    ];
 
     if ($command != 'Auth') {
       $command .= '/'.$this->token;
@@ -123,7 +123,7 @@ class mailMethodRenaterPartage extends mailMethod
         $response .= trim($row)."\n";
       }
       $response = xml::xml2array($response, FALSE);
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $response, '<b>MAIL: Answer</b>');
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $response, '<b>MAIL: Answer</b>');
 
       if (!isset($response['Response']['status'])) {
         $this->error = _('Partage API answer malformated');
@@ -139,7 +139,7 @@ class mailMethodRenaterPartage extends mailMethod
 
       return $response;
     } else {
-      @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $fp, '<b>MAIL: No Answer</b>');
+      @DEBUG(DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $fp, '<b>MAIL: No Answer</b>');
       if (!empty($fp)) {
         $this->error = sprintf(_('Unable to connect to %s: %s'), $infos['uri'], implode("\n", $fp));
       } else {
@@ -151,7 +151,7 @@ class mailMethodRenaterPartage extends mailMethod
 
   /*! \brief  Disconnect from the API (deletes the auth token)
    */
-  public function disconnect()
+  public function disconnect ()
   {
     parent::disconnect();
     unset($this->token);
@@ -160,7 +160,7 @@ class mailMethodRenaterPartage extends mailMethod
 
   /*! \brief Checks data consistency
   */
-  public function check()
+  public function check ()
   {
     $messages = parent::check();
     $servers  = static::getMailServers();
@@ -179,7 +179,7 @@ class mailMethodRenaterPartage extends mailMethod
   /*! \brief  Returns the connection status of this method.
       @return Boolean True if this method is connected else false.
    */
-  public function is_connected()
+  public function is_connected ()
   {
     /* If the token is older than 5 minutes it will get rejected. 5min = 300sec */
     return (parent::is_connected() && (time() - $this->tokenTime < 250));
@@ -188,13 +188,13 @@ class mailMethodRenaterPartage extends mailMethod
   /*! \brief  Returns true the current object represents a valid account
       @return Boolean TRUE if this is a valid account else FALSE
   */
-  public function account_exists()
+  public function account_exists ()
   {
     $this->reset_error();
     return $this->cacheAccount();
   }
 
-  private function cacheAccount()
+  private function cacheAccount ()
   {
     if (empty($this->account_id)) {
       return FALSE;
@@ -208,13 +208,13 @@ class mailMethodRenaterPartage extends mailMethod
       $command    = 'GetGroup';
       $answerkey  = 'group';
     }
-    $answer = $this->query($command, array('name' => $this->account_id));
+    $answer = $this->query($command, ['name' => $this->account_id]);
     if (($answer !== FALSE) && isset($answer['Response'][$answerkey])) {
-      $this->cachedAccount = array(
+      $this->cachedAccount = [
         'account' => $answer['Response'][$answerkey],
         'id'      => $this->account_id,
         'time'    => time()
-      );
+      ];
       $this->cleanCachedAccountArrays();
       return TRUE;
     } else {
@@ -230,9 +230,9 @@ class mailMethodRenaterPartage extends mailMethod
    * We want:
    * [members] => Array ( user1, user2 )
    * */
-  private function cleanCachedAccountArrays()
+  private function cleanCachedAccountArrays ()
   {
-    $keys = array('members', 'zimbraMailAlias', 'zimbraAllowFromAddress');
+    $keys = ['members', 'zimbraMailAlias', 'zimbraAllowFromAddress'];
     foreach ($keys as $key) {
       if (isset($this->cachedAccount['account'][$key])) {
         $this->cachedAccount['account'][$key] = array_values($this->cachedAccount['account'][$key]);
@@ -243,11 +243,11 @@ class mailMethodRenaterPartage extends mailMethod
     }
   }
 
-  private function getAccountArray($infos)
+  private function getAccountArray ($infos)
   {
-    $account = array(
+    $account = [
       'name'                                => $this->account_id,
-    );
+    ];
     if ($this->type == 'user') {
       $account['zimbraCOSId']                         = $infos['cos_id'];
       $account['zimbraMailQuota']                     = $this->parent->gosaMailQuota * 1024 * 1024;
@@ -263,18 +263,18 @@ class mailMethodRenaterPartage extends mailMethod
     }
 
     if ($this->type == 'user') {
-      $mainFields = array(
+      $mainFields = [
         'sn', 'givenName', 'description',
         'l', 'st',
         'telephoneNumber', 'mobile', 'pager', 'facsimileTelephoneNumber',
         'displayName', 'homePhone',
         'title', 'ou',
         'street', 'postalCode', 'postOfficeBox'
-      );
+      ];
     } else {
-      $mainFields = array(
+      $mainFields = [
         'description'
-      );
+      ];
     }
     $mainTab = $this->parent->parent->getBaseObject();
     foreach ($mainFields as $field) {
@@ -284,10 +284,10 @@ class mailMethodRenaterPartage extends mailMethod
     }
 
     if ($this->type == 'user') {
-      $userMatchingFields = array(
+      $userMatchingFields = [
         'o' => 'company',
         'roomNumber' => 'physicalDeliveryOfficeName'
-      );
+      ];
       foreach ($userMatchingFields as $fdField => $partageField) {
         if (isset($mainTab->$fdField)) {
           $account[$partageField] = $mainTab->$fdField;
@@ -316,11 +316,11 @@ class mailMethodRenaterPartage extends mailMethod
         $partageTabName = 'sympaAliasPartage';
       }
       if (isset($this->parent->parent->by_object[$partageTabName]) && $this->parent->parent->by_object[$partageTabName]->is_account) {
-        $partageFields = array(
+        $partageFields = [
           'displayName' => 'displayName',
           'fdRenaterPartageGroupMailStatus' => 'zimbraMailStatus',
           'fdRenaterPartageGroupNotes' => 'zimbraNotes'
-        );
+        ];
         $partageTab = $this->parent->parent->by_object[$partageTabName];
         foreach ($partageFields as $fdField => $partageField) {
           if (isset($partageTab->$fdField)) {
@@ -335,7 +335,7 @@ class mailMethodRenaterPartage extends mailMethod
     return $account;
   }
 
-  private function createAccount($infos)
+  private function createAccount ($infos)
   {
     $account = $this->getAccountArray($infos);
 
@@ -364,7 +364,7 @@ class mailMethodRenaterPartage extends mailMethod
     return $this->query($command, $account);
   }
 
-  private function updateAccount($infos)
+  private function updateAccount ($infos)
   {
     /* Step 1 - We fill $account */
     $account = $this->getAccountArray($infos);
@@ -379,7 +379,7 @@ class mailMethodRenaterPartage extends mailMethod
       }
     }
     /* If value of zimbraAccountStatus is not something we understand, do not touch it (example: closed) */
-    if (isset($this->cachedAccount['account']['zimbraAccountStatus']) && !in_array($this->cachedAccount['account']['zimbraAccountStatus'], array('active', 'locked'))) {
+    if (isset($this->cachedAccount['account']['zimbraAccountStatus']) && !in_array($this->cachedAccount['account']['zimbraAccountStatus'], ['active', 'locked'])) {
       unset($account['zimbraAccountStatus']);
     }
 
@@ -402,10 +402,10 @@ class mailMethodRenaterPartage extends mailMethod
     if ($this->type == 'user') {
       $userTab = $this->parent->parent->getBaseObject();
       if ($userTab->attributesAccess['userPassword']->getClear() != '') {
-        $account = array(
+        $account = [
           'name'      => $this->account_id,
           'password'  => $userTab->attributesAccess['userPassword']->getClear()
-        );
+        ];
         $answer = $this->query('SetPassword', $account);
 
         if ($answer === FALSE) {
@@ -417,7 +417,7 @@ class mailMethodRenaterPartage extends mailMethod
     return TRUE;
   }
 
-  private function setAliases($initialAliases, $aliases)
+  private function setAliases ($initialAliases, $aliases)
   {
     $remove = array_diff($initialAliases, $aliases);
     $add    = array_diff($aliases, $initialAliases);
@@ -427,7 +427,7 @@ class mailMethodRenaterPartage extends mailMethod
       $command = 'RemoveDistributionListAlias';
     }
     foreach ($remove as $alias) {
-      $answer = $this->query($command, array('name' => $this->account_id, 'alias' => $alias));
+      $answer = $this->query($command, ['name' => $this->account_id, 'alias' => $alias]);
       if ($answer === FALSE) {
         return FALSE;
       }
@@ -438,7 +438,7 @@ class mailMethodRenaterPartage extends mailMethod
       $command = 'AddDistributionListAlias';
     }
     foreach ($add as $alias) {
-      $answer = $this->query($command, array('name' => $this->account_id, 'alias' => $alias));
+      $answer = $this->query($command, ['name' => $this->account_id, 'alias' => $alias]);
       if ($answer === FALSE) {
         return FALSE;
       }
@@ -446,21 +446,21 @@ class mailMethodRenaterPartage extends mailMethod
     return TRUE;
   }
 
-  private function updateMembers()
+  private function updateMembers ()
   {
     global $config;
 
-    if (!in_array($this->type, array('group','sympaAlias'))) {
+    if (!in_array($this->type, ['group','sympaAlias'])) {
       return TRUE;
     }
 
     $this->cacheAccount();
-    $oldmembers = array();
+    $oldmembers = [];
     if (isset($this->cachedAccount['account']['members'])) {
       $oldmembers = $this->cachedAccount['account']['members'];
     }
     $mainTab = $this->parent->parent->getBaseObject();
-    $newmembers = array();
+    $newmembers = [];
     if ($this->type == 'sympaAlias') {
       $newmember = '';
       /* We take the shortest mail to filter out -editor and other addresses */
@@ -469,7 +469,7 @@ class mailMethodRenaterPartage extends mailMethod
           $newmember = $mail;
         }
       }
-      $newmembers = array($newmember);
+      $newmembers = [$newmember];
     } elseif (isset($mainTab->member)) {
       $ldap = $config->get_ldap_link();
       $dns = $mainTab->member;
@@ -503,13 +503,13 @@ class mailMethodRenaterPartage extends mailMethod
     $remove = array_diff($oldmembers, $newmembers);
     $add    = array_diff($newmembers, $oldmembers);
     if (!empty($remove)) {
-      $answer = $this->query('RemoveGroupMembers', array('name' => $this->account_id, 'members' => $remove));
+      $answer = $this->query('RemoveGroupMembers', ['name' => $this->account_id, 'members' => $remove]);
       if ($answer === FALSE) {
         return FALSE;
       }
     }
     if (!empty($add)) {
-      $answer = $this->query('AddGroupMembers', array('name' => $this->account_id, 'members' => $add));
+      $answer = $this->query('AddGroupMembers', ['name' => $this->account_id, 'members' => $add]);
       if ($answer === FALSE) {
         return FALSE;
       }
@@ -518,7 +518,7 @@ class mailMethodRenaterPartage extends mailMethod
     return TRUE;
   }
 
-  public function updateMailbox()
+  public function updateMailbox ()
   {
     parent::updateMailbox();
     $servers = static::getMailServers();
@@ -545,10 +545,10 @@ class mailMethodRenaterPartage extends mailMethod
           return FALSE;
         }
 
-        $account = array(
+        $account = [
           'name'    => $this->initial_account_id,
           'newname' => $this->account_id
-        );
+        ];
         if ($this->type == 'user') {
           $command = 'RenameAccount';
         } else {
@@ -592,7 +592,7 @@ class mailMethodRenaterPartage extends mailMethod
     return TRUE;
   }
 
-  public function deleteMailbox()
+  public function deleteMailbox ()
   {
     parent::deleteMailbox();
     $servers = static::getMailServers();
@@ -601,15 +601,15 @@ class mailMethodRenaterPartage extends mailMethod
     if ($this->account_exists()) {
       if ($this->type == 'user') {
         if ($infos['delete_type'] == 'delete') {
-          $answer = $this->query('DeleteAccount', array('name' => $this->initial_account_id));
+          $answer = $this->query('DeleteAccount', ['name' => $this->initial_account_id]);
         } elseif ($infos['delete_type'] == 'disable') {
-          $answer = $this->query('ModifyAccount', array('name' => $this->initial_account_id, 'zimbraAccountStatus' => 'closed'));
+          $answer = $this->query('ModifyAccount', ['name' => $this->initial_account_id, 'zimbraAccountStatus' => 'closed']);
         } else {
           $answer = FALSE;
           $this->error = _('Invalid value in fdRenaterPartageServerDeletionType');
         }
       } else {
-        $answer = $this->query('DeleteGroup', array('name' => $this->initial_account_id));
+        $answer = $this->query('DeleteGroup', ['name' => $this->initial_account_id]);
       }
       return ($answer !== FALSE);
     }
@@ -619,7 +619,7 @@ class mailMethodRenaterPartage extends mailMethod
   /*! \brief  Returns the used quota in MiB
       @return Integer Quota used.
    */
-  public function getQuotaUsage()
+  public function getQuotaUsage ()
   {
     if ($this->cacheAccount()) {
       /* Partage sends quota in bytes */
@@ -631,16 +631,16 @@ class mailMethodRenaterPartage extends mailMethod
   /*! \brief  Returns the quota restrictions in MiB.
       @return Integer Quota restrictions.
    */
-  public function getQuota($quotaValue)
+  public function getQuota ($quotaValue)
   {
     if ($this->cacheAccount()) {
       /* Partage sends quota in bytes */
-      return $this->cachedAccount['account']['quota'] / (1024 * 1024);
+      return (int)($this->cachedAccount['account']['quota'] / (1024 * 1024));
     }
     return $quotaValue;
   }
 
-  public function additionalInformations()
+  public function additionalInformations ()
   {
     if ($this->cacheAccount()) {
       $lastlogin = _('Never');
@@ -649,32 +649,32 @@ class mailMethodRenaterPartage extends mailMethod
         $date->setTimezone(timezone::getDefaultTimeZone());
         $lastlogin = $date->format('Y-m-d H:i:s');
       }
-      return array(
+      return [
         _('Last login')     => $lastlogin,
         _('Account status') => (isset($this->cachedAccount['account']['zimbraAccountStatus']) ? $this->cachedAccount['account']['zimbraAccountStatus'] : _('Unknown')),
-      );
+      ];
     }
-    return array();
+    return [];
   }
 
-  static public function get_server_list()
+  static public function get_server_list ()
   {
     global $config;
-    $serverList = array();
+    $serverList = [];
 
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search ('(&(objectClass=fdRenaterPartageServer)(fdRenaterPartageServerMailDomain=*))',
-                  array('cn', 'fdRenaterPartageServerUri', 'fdRenaterPartageServerMailDomain', 'fdRenaterPartageServerUserAgent', 'fdRenaterPartageServerDeletionType'));
+    $ldap->search('(&(objectClass=fdRenaterPartageServer)(fdRenaterPartageServerMailDomain=*))',
+                  ['cn', 'fdRenaterPartageServerUri', 'fdRenaterPartageServerMailDomain', 'fdRenaterPartageServerUserAgent', 'fdRenaterPartageServerDeletionType']);
     while ($attrs = $ldap->fetch()) {
       unset($attrs['fdRenaterPartageServerMailDomain']['count']);
       foreach ($attrs['fdRenaterPartageServerMailDomain'] as $domainAndKey) {
         list($domain, $key, $cosString) = explode(':', $domainAndKey, 3);
         $cosArray = explode(',', $cosString);
         foreach ($cosArray as $cos) {
-          list ($cosName, $cosId) = explode('|', $cos);
+          list($cosName, $cosId) = explode('|', $cos);
           $deleteMode = (isset($attrs['fdRenaterPartageServerDeletionType'][0]) ? $attrs['fdRenaterPartageServerDeletionType'][0] : 'delete');
-          $serverList[$attrs['cn'][0].' - '.$domain.' - '.$cosName] = array(
+          $serverList[$attrs['cn'][0].' - '.$domain.' - '.$cosName] = [
             'server_dn'   => $attrs['dn'],
             'user_agent'  => $attrs['fdRenaterPartageServerUserAgent'][0],
             'uri'         => $attrs['fdRenaterPartageServerUri'][0],
@@ -683,7 +683,7 @@ class mailMethodRenaterPartage extends mailMethod
             'key'         => $key,
             'cos_name'    => $cosName,
             'cos_id'      => $cosId
-          );
+          ];
         }
       }
     }
diff --git a/repository/admin/repository/class_buildRepository.inc b/repository/admin/repository/class_buildRepository.inc
index 75cf3e11d0db2a4a8de79877919a8ca27810fe94..9df991e42f8134553daac53e870f3695bc0ed793 100644
--- a/repository/admin/repository/class_buildRepository.inc
+++ b/repository/admin/repository/class_buildRepository.inc
@@ -22,73 +22,73 @@ class buildRepository extends simplePlugin
 {
   var $mainTab = TRUE;
 
-  var $objectclasses = array('fdBuildRepository');
+  var $objectclasses = ['fdBuildRepository'];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Build repository'),
       'plDescription' => _('Build repository'),
-      'plObjectType'  => array('buildRepository' => array(
+      'plObjectType'  => ['buildRepository' => [
         'name'        => _('Build repository'),
         'filter'      => 'objectClass=fdBuildRepository',
         'aclCategory' => 'repository',
         'ou'          => get_ou('repositoryRDN'),
         'icon'        => 'geticon.php?context=applications&icon=repository&size=16'
-      )),
-      'plForeignKeys'  => array(
+      ]],
+      'plForeignKeys'  => [
         'fdRepoAdmin'     => 'user',
         'fdRepoUploader'  => 'user',
         'fdRepoUser'      => 'user',
-        'fdRepoDistributionSection'   => array(
-          array('repositoryDistribution', 'cn', '(fdRepoDistributionSection=%oldvalue%|*)'),
-          array('repositorySection',      'cn', '(fdRepoDistributionSection=*|%oldvalue%)'),
-        ),
-      ),
+        'fdRepoDistributionSection'   => [
+          ['repositoryDistribution', 'cn', '(fdRepoDistributionSection=%oldvalue%|*)'],
+          ['repositorySection',      'cn', '(fdRepoDistributionSection=*|%oldvalue%)'],
+        ],
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
     global $config;
 
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Build repository'),
-        'attrs' => array(
-          new BaseSelectorAttribute (get_ou('repositoryRDN')),
-          new HostNameAttribute (
+        'attrs' => [
+          new BaseSelectorAttribute(get_ou('repositoryRDN')),
+          new HostNameAttribute(
             _('Name'), _('Unique name for this repository'),
             'cn', TRUE
           ),
-          new TextAreaAttribute (
+          new TextAreaAttribute(
             _('Description'), _('Description of this repository'),
             'description', FALSE
           ),
-          new SetAttribute (
-            new SelectAttribute (
+          new SetAttribute(
+            new SelectAttribute(
               _('Distribution sections'), _('The distribution sections this repository provides'),
               'fdRepoDistributionSection', TRUE,
-              array()
+              []
             )
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Private'), _('Is this repository private or public?'),
             'fdRepoPrivate', FALSE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Type'), _('Repository type'),
             'fdRepoType', TRUE,
-            $config->get_cfg_value('repositoryTypes', array('debian'))
+            $config->get_cfg_value('repositoryTypes', ['debian'])
           )
-        )
-      ),
-      'users' => array(
+        ]
+      ],
+      'users' => [
         'name'  => _('Members'),
-        'attrs' => array(
-          new UsersAttribute (
+        'attrs' => [
+          new UsersAttribute(
             _('Admins'), _('Admins of this repository'),
             'fdRepoAdmin', FALSE
           ),
@@ -100,9 +100,9 @@ class buildRepository extends simplePlugin
             _('Users'), _('Users of this repository'),
             'fdRepoUser', FALSE
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -111,8 +111,8 @@ class buildRepository extends simplePlugin
 
     $this->attributesAccess['cn']->setUnique(TRUE);
 
-    $distros = objects::ls('repoDistribution', array('cn' => '1', 'fdRepoSection' => '*'));
-    $choices = array();
+    $distros = objects::ls('repoDistribution', ['cn' => '1', 'fdRepoSection' => '*']);
+    $choices = [];
     foreach ($distros as $infos) {
       foreach ($infos['fdRepoSection'] as $section) {
         $choices[] = $infos['cn'].'|'.$section;
@@ -134,11 +134,11 @@ class buildRepository extends simplePlugin
         }
       }
     } else {
-      return parent::foreignKeyCheck ($field, $fieldvalue, $source);
+      return parent::foreignKeyCheck($field, $fieldvalue, $source);
     }
   }
 
-  function foreignKeyUpdate($field, $oldvalue, $newvalue, $source)
+  function foreignKeyUpdate ($field, $oldvalue, $newvalue, $source)
   {
     if ($field == 'fdRepoDistributionSection') {
       $values = $this->fdRepoDistributionSection;
diff --git a/repository/admin/repository/class_repositoryDistribution.inc b/repository/admin/repository/class_repositoryDistribution.inc
index 7a1485810b496101714a6d0028d7286b77c6d50f..257d44b0b107956c7551476baecf44d317a713ad 100644
--- a/repository/admin/repository/class_repositoryDistribution.inc
+++ b/repository/admin/repository/class_repositoryDistribution.inc
@@ -22,65 +22,65 @@ class repositoryDistribution extends simplePlugin
 {
   var $mainTab = TRUE;
 
-  var $objectclasses = array('fdBuildRepositoryDistribution');
+  var $objectclasses = ['fdBuildRepositoryDistribution'];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Repository distribution'),
       'plDescription' => _('Repository distribution'),
-      'plObjectType'  => array('repoDistribution' => array(
+      'plObjectType'  => ['repoDistribution' => [
         'name'        => _('Repository distribution'),
         'filter'      => 'objectClass=fdBuildRepositoryDistribution',
         'aclCategory' => 'repository',
         'ou'          => get_ou('repositoryRDN'),
         'icon'        => 'geticon.php?context=applications&icon=repository-distribution&size=16'
-      )),
-      'plForeignKeys'  => array(
-        'fdBasedOn' => array(
-          array('repositoryDistribution', 'cn'),
-        ),
-        'fdRepoSection' => array(
-          array('repositorySection', 'cn'),
-        ),
-      ),
+      ]],
+      'plForeignKeys'  => [
+        'fdBasedOn' => [
+          ['repositoryDistribution', 'cn'],
+        ],
+        'fdRepoSection' => [
+          ['repositorySection', 'cn'],
+        ],
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Repository distribution'),
-        'attrs' => array(
-          new BaseSelectorAttribute (get_ou('repositoryRDN')),
-          new StringAttribute (
+        'attrs' => [
+          new BaseSelectorAttribute(get_ou('repositoryRDN')),
+          new StringAttribute(
             _('Name'), _('Unique name for this distribution'),
             'cn', TRUE
           ),
-          new TextAreaAttribute (
+          new TextAreaAttribute(
             _('Description'), _('Description of this distribution'),
             'description', FALSE
           ),
-          new SetAttribute (
-            new SelectAttribute (
+          new SetAttribute(
+            new SelectAttribute(
               _('Section'), _('The sections this distribution contains'),
               'fdRepoSection', TRUE,
-              array()
+              []
             )
           ),
-          new SetAttribute (
-            new SelectAttribute (
+          new SetAttribute(
+            new SelectAttribute(
               _('Based on'), _('The distributions this one is based on'),
               'fdBasedOn', FALSE,
-              array()
+              []
             )
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
diff --git a/repository/admin/repository/class_repositoryManagement.inc b/repository/admin/repository/class_repositoryManagement.inc
index b6508a0f96b09e8998d24d92adcea5d3c84a2c41..29a559c4d888af6a08fbea8978ad1ca7548f7ff3 100644
--- a/repository/admin/repository/class_repositoryManagement.inc
+++ b/repository/admin/repository/class_repositoryManagement.inc
@@ -20,24 +20,24 @@
 
 class repositoryManagement extends simpleManagement
 {
-  protected $objectTypes  = array('buildRepository', 'repoDistribution', 'repoSection');
+  protected $objectTypes  = ['buildRepository', 'repoDistribution', 'repoSection'];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Repository management'),
       'plDescription' => _('Repository management'),
       'plIcon'        => 'geticon.php?context=applications&icon=repository&size=48',
       'plSection'     => 'systems',
       'plPriority'    => 22,
-      'plCategory'    => array('repository' => array(
+      'plCategory'    => ['repository' => [
         'description'  => _('Repository'),
-        'objectClass'  => array('fdBuildRepository', 'fdBuildRepositoryDistribution', 'fdBuildRepositorySection')
-      )),
-      'plManages'     => array('buildRepository', 'repoDistribution', 'repoSection'),
+        'objectClass'  => ['fdBuildRepository', 'fdBuildRepositoryDistribution', 'fdBuildRepositorySection']
+      ]],
+      'plManages'     => ['buildRepository', 'repoDistribution', 'repoSection'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 }
 ?>
diff --git a/repository/admin/repository/class_repositorySection.inc b/repository/admin/repository/class_repositorySection.inc
index 9030e2a09413c1fe3e894648bcddd00c79fc6f3c..d6fafeb989a8f19e1d0134d1acd61279e114134c 100644
--- a/repository/admin/repository/class_repositorySection.inc
+++ b/repository/admin/repository/class_repositorySection.inc
@@ -22,55 +22,55 @@ class repositorySection extends simplePlugin
 {
   var $mainTab = TRUE;
 
-  var $objectclasses = array('fdBuildRepositorySection');
+  var $objectclasses = ['fdBuildRepositorySection'];
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Repository section'),
       'plDescription' => _('Repository section'),
-      'plObjectType'  => array('repoSection' => array(
+      'plObjectType'  => ['repoSection' => [
         'name'        => _('Repository section'),
         'filter'      => 'objectClass=fdBuildRepositorySection',
         'aclCategory' => 'repository',
         'ou'          => get_ou('repositoryRDN'),
         'icon'        => 'geticon.php?context=applications&icon=repository-section&size=16',
-      )),
-      'plForeignKeys'  => array(
-        'fdBasedOn' => array(
-          array('repositorySection',  'cn'),
-        )
-      ),
+      ]],
+      'plForeignKeys'  => [
+        'fdBasedOn' => [
+          ['repositorySection',  'cn'],
+        ]
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Repository section'),
-        'attrs' => array(
-          new BaseSelectorAttribute (get_ou('repositoryRDN')),
-          new StringAttribute (
+        'attrs' => [
+          new BaseSelectorAttribute(get_ou('repositoryRDN')),
+          new StringAttribute(
             _('Name'), _('Unique name for this section'),
             'cn', TRUE
           ),
-          new TextAreaAttribute (
+          new TextAreaAttribute(
             _('Description'), _('Description of this section'),
             'description', FALSE
           ),
-          new SetAttribute (
-            new SelectAttribute (
+          new SetAttribute(
+            new SelectAttribute(
               _('Based on'), _('The sections this one is based on'),
               'fdBasedOn', FALSE,
-              array()
+              []
             )
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
diff --git a/repository/config/repository/class_repositoryConfig.inc b/repository/config/repository/class_repositoryConfig.inc
index d3b921f08d994ada725ddbe32040767b064f6766..91d8bc1f28007b571d858f976e447b0a758792f3 100644
--- a/repository/config/repository/class_repositoryConfig.inc
+++ b/repository/config/repository/class_repositoryConfig.inc
@@ -20,42 +20,42 @@
 
 class repositoryConfig extends simplePlugin
 {
-  var $objectclasses  = array('fdRepositoryPluginConf');
+  var $objectclasses  = ['fdRepositoryPluginConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Repository configuration'),
       'plDescription'   => _('FusionDirectory repository plugin configuration'),
       'plSelfModify'    => FALSE,
-      'plCategory'      => array('configuration'),
-      'plObjectType'    => array('smallConfig'),
+      'plCategory'      => ['configuration'],
+      'plObjectType'    => ['smallConfig'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Repository'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Repository RDN'), _('Branch in which repository objects will be stored'),
             'fdRepositoryRDN', TRUE,
             'ou=repository'
           ),
           new SetAttribute(
-            new StringAttribute (
+            new StringAttribute(
               _('Repository types'), _('Available repository types'),
               'fdRepositoryTypes', TRUE
             ),
-            array('debian')
+            ['debian']
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/repository/locale/af_ZA/fusiondirectory.po b/repository/locale/af_ZA/fusiondirectory.po
index 1452e8ca2543db30faebc77bb2ac6f3e76588f70..86358db77caae57f63be9fac061e5ea77a5c7f7d 100644
--- a/repository/locale/af_ZA/fusiondirectory.po
+++ b/repository/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/repository/locale/ar/fusiondirectory.po b/repository/locale/ar/fusiondirectory.po
index 98e91d071d3ae8d1122057699e8e37aae8aca3d0..817a17538ddce2e8f37811249615bb80e0c8d829 100644
--- a/repository/locale/ar/fusiondirectory.po
+++ b/repository/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/repository/locale/ca/fusiondirectory.po b/repository/locale/ca/fusiondirectory.po
index 39f0b3fa7a2d72731abd2bdba74d8a649b1fa64a..b6409b1aca4d80b97111dc7050c4a5661625ecd0 100644
--- a/repository/locale/ca/fusiondirectory.po
+++ b/repository/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/repository/locale/cs_CZ/fusiondirectory.po b/repository/locale/cs_CZ/fusiondirectory.po
index a55c5b7ea6bab9171b1aa8f6c557112723951473..8f8c03764b47ecc870a0d5cfc4a91fbbbf460303 100644
--- a/repository/locale/cs_CZ/fusiondirectory.po
+++ b/repository/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/repository/locale/de/fusiondirectory.po b/repository/locale/de/fusiondirectory.po
index ca325df4475ac8551935753af66b8e649af40d98..d6e04529cfc4b9c5e4bfe8054d625e8f99516d19 100644
--- a/repository/locale/de/fusiondirectory.po
+++ b/repository/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/repository/locale/el_GR/fusiondirectory.po b/repository/locale/el_GR/fusiondirectory.po
index 4a6aeb2eadea6dd80cc89bed5e2862496fe8a724..43360e34ef6cf0bf6cf03887b5be54bad3261f75 100644
--- a/repository/locale/el_GR/fusiondirectory.po
+++ b/repository/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/repository/locale/en/fusiondirectory.po b/repository/locale/en/fusiondirectory.po
index 7ddacea0f39a48a8370435a7e16f27a899012a7c..6795f870f3c0c1b916fda71d4f19b14f8a14cdc6 100644
--- a/repository/locale/en/fusiondirectory.po
+++ b/repository/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -46,29 +46,61 @@ msgstr ""
 msgid "Available repository types"
 msgstr ""
 
-#: admin/repository/class_buildRepository.inc:30
-#: admin/repository/class_buildRepository.inc:31
-#: admin/repository/class_buildRepository.inc:33
-#: admin/repository/class_buildRepository.inc:59
-msgid "Build repository"
+#: admin/repository/class_repositoryDistribution.inc:30
+#: admin/repository/class_repositoryDistribution.inc:31
+#: admin/repository/class_repositoryDistribution.inc:33
+#: admin/repository/class_repositoryDistribution.inc:56
+msgid "Repository distribution"
 msgstr ""
 
-#: admin/repository/class_buildRepository.inc:63
 #: admin/repository/class_repositoryDistribution.inc:60
+#: admin/repository/class_buildRepository.inc:63
 #: admin/repository/class_repositorySection.inc:57
 msgid "Name"
 msgstr ""
 
-#: admin/repository/class_buildRepository.inc:63
-msgid "Unique name for this repository"
+#: admin/repository/class_repositoryDistribution.inc:60
+msgid "Unique name for this distribution"
 msgstr ""
 
-#: admin/repository/class_buildRepository.inc:67
 #: admin/repository/class_repositoryDistribution.inc:64
+#: admin/repository/class_buildRepository.inc:67
 #: admin/repository/class_repositorySection.inc:61
 msgid "Description"
 msgstr ""
 
+#: admin/repository/class_repositoryDistribution.inc:64
+msgid "Description of this distribution"
+msgstr ""
+
+#: admin/repository/class_repositoryDistribution.inc:69
+msgid "Section"
+msgstr ""
+
+#: admin/repository/class_repositoryDistribution.inc:69
+msgid "The sections this distribution contains"
+msgstr ""
+
+#: admin/repository/class_repositoryDistribution.inc:76
+#: admin/repository/class_repositorySection.inc:66
+msgid "Based on"
+msgstr ""
+
+#: admin/repository/class_repositoryDistribution.inc:76
+msgid "The distributions this one is based on"
+msgstr ""
+
+#: admin/repository/class_buildRepository.inc:30
+#: admin/repository/class_buildRepository.inc:31
+#: admin/repository/class_buildRepository.inc:33
+#: admin/repository/class_buildRepository.inc:59
+msgid "Build repository"
+msgstr ""
+
+#: admin/repository/class_buildRepository.inc:63
+msgid "Unique name for this repository"
+msgstr ""
+
 #: admin/repository/class_buildRepository.inc:67
 msgid "Description of this repository"
 msgstr ""
@@ -125,43 +157,6 @@ msgstr ""
 msgid "Users of this repository"
 msgstr ""
 
-#: admin/repository/class_repositoryManagement.inc:28
-#: admin/repository/class_repositoryManagement.inc:29
-msgid "Repository management"
-msgstr ""
-
-#: admin/repository/class_repositoryDistribution.inc:30
-#: admin/repository/class_repositoryDistribution.inc:31
-#: admin/repository/class_repositoryDistribution.inc:33
-#: admin/repository/class_repositoryDistribution.inc:56
-msgid "Repository distribution"
-msgstr ""
-
-#: admin/repository/class_repositoryDistribution.inc:60
-msgid "Unique name for this distribution"
-msgstr ""
-
-#: admin/repository/class_repositoryDistribution.inc:64
-msgid "Description of this distribution"
-msgstr ""
-
-#: admin/repository/class_repositoryDistribution.inc:69
-msgid "Section"
-msgstr ""
-
-#: admin/repository/class_repositoryDistribution.inc:69
-msgid "The sections this distribution contains"
-msgstr ""
-
-#: admin/repository/class_repositoryDistribution.inc:76
-#: admin/repository/class_repositorySection.inc:66
-msgid "Based on"
-msgstr ""
-
-#: admin/repository/class_repositoryDistribution.inc:76
-msgid "The distributions this one is based on"
-msgstr ""
-
 #: admin/repository/class_repositorySection.inc:30
 #: admin/repository/class_repositorySection.inc:31
 #: admin/repository/class_repositorySection.inc:33
@@ -180,3 +175,8 @@ msgstr ""
 #: admin/repository/class_repositorySection.inc:66
 msgid "The sections this one is based on"
 msgstr ""
+
+#: admin/repository/class_repositoryManagement.inc:28
+#: admin/repository/class_repositoryManagement.inc:29
+msgid "Repository management"
+msgstr ""
diff --git a/repository/locale/es/fusiondirectory.po b/repository/locale/es/fusiondirectory.po
index e1aa41886841f01cd0d9af28553f25579b5c8c9e..11ab9a856279187032dbe6ad8abc05b427005144 100644
--- a/repository/locale/es/fusiondirectory.po
+++ b/repository/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/repository/class_repositoryManagement.inc:28
 #: admin/repository/class_repositoryManagement.inc:29
diff --git a/repository/locale/es_CO/fusiondirectory.po b/repository/locale/es_CO/fusiondirectory.po
index bc3ee5fe6a23ebd105b62d40929c16a45b39d45a..de650bf4828ccc65f0607735517ee1177221d9b6 100644
--- a/repository/locale/es_CO/fusiondirectory.po
+++ b/repository/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/repository/class_repositoryManagement.inc:28
 #: admin/repository/class_repositoryManagement.inc:29
diff --git a/repository/locale/es_VE/fusiondirectory.po b/repository/locale/es_VE/fusiondirectory.po
index 42564fd8348c23ac1a319f7e9b500181f3c06956..9c4ec426a2d3861aee7f4f13632ad35c795546a6 100644
--- a/repository/locale/es_VE/fusiondirectory.po
+++ b/repository/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/repository/class_repositoryManagement.inc:28
 #: admin/repository/class_repositoryManagement.inc:29
diff --git a/repository/locale/fa_IR/fusiondirectory.po b/repository/locale/fa_IR/fusiondirectory.po
index 30a2ed50b8d9d8f2df349f71188e23741789af30..f57e06dbc84a07851c22d70cadd3c07c52636116 100644
--- a/repository/locale/fa_IR/fusiondirectory.po
+++ b/repository/locale/fa_IR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
diff --git a/repository/locale/fi_FI/fusiondirectory.po b/repository/locale/fi_FI/fusiondirectory.po
index 84d11376848002d82b562a33e89fc8f709ca6d16..63687f78e125817c2512fa458bf06de64ada63cb 100644
--- a/repository/locale/fi_FI/fusiondirectory.po
+++ b/repository/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/repository/locale/fr/fusiondirectory.po b/repository/locale/fr/fusiondirectory.po
index 5803a26b1ba36bbd8fd603b25dc179a672c8caaf..3b5feee1f8a3288ac450428385f11f8e67940105 100644
--- a/repository/locale/fr/fusiondirectory.po
+++ b/repository/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/repository/class_repositoryManagement.inc:28
 #: admin/repository/class_repositoryManagement.inc:29
diff --git a/repository/locale/hu_HU/fusiondirectory.po b/repository/locale/hu_HU/fusiondirectory.po
index cfaddef79e3e5f1a0ec2b235d366103300fbf61f..ff36cc014529053ba1c0325366ab014a9caaf399 100644
--- a/repository/locale/hu_HU/fusiondirectory.po
+++ b/repository/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
diff --git a/repository/locale/id/fusiondirectory.po b/repository/locale/id/fusiondirectory.po
index c7509c57c3ec5b0c5a3d8bffe1de192629c66ac6..1705ead4c68f6ca78a73d7bfd3193fc251d20321 100644
--- a/repository/locale/id/fusiondirectory.po
+++ b/repository/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/repository/locale/it_IT/fusiondirectory.po b/repository/locale/it_IT/fusiondirectory.po
index dc6228e659707ef2e54a9e5687e34dfb5550ea5a..08fd39aef5e81e17636c967edd498883c8a5795c 100644
--- a/repository/locale/it_IT/fusiondirectory.po
+++ b/repository/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/repository/class_repositoryManagement.inc:28
 #: admin/repository/class_repositoryManagement.inc:29
diff --git a/repository/locale/ja/fusiondirectory.po b/repository/locale/ja/fusiondirectory.po
index 61a5e26682ab4db4c1a5759e2eebc90443e1fd3c..8d8038f6a994567d5c59f23c8127fca40c3af159 100644
--- a/repository/locale/ja/fusiondirectory.po
+++ b/repository/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/repository/locale/ko/fusiondirectory.po b/repository/locale/ko/fusiondirectory.po
index a4189790e7cf1f9fe11453a442b2483dbad2c8ce..2e32492480231a62b463513a34721ea47f8ebacf 100644
--- a/repository/locale/ko/fusiondirectory.po
+++ b/repository/locale/ko/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# Choi Chris <chulwon.choi@gmail.com>, 2018
+# Choi Chris <chulwon.choi@gmail.com>, 2020
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
-"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
+"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2020\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -24,19 +24,19 @@ msgstr ""
 #: admin/repository/class_repositoryManagement.inc:28
 #: admin/repository/class_repositoryManagement.inc:29
 msgid "Repository management"
-msgstr ""
+msgstr "저장소 관"
 
 #: admin/repository/class_repositoryManagement.inc:34
 #: config/repository/class_repositoryConfig.inc:42
 msgid "Repository"
-msgstr ""
+msgstr "리포지토리"
 
 #: admin/repository/class_buildRepository.inc:30
 #: admin/repository/class_buildRepository.inc:31
 #: admin/repository/class_buildRepository.inc:33
 #: admin/repository/class_buildRepository.inc:59
 msgid "Build repository"
-msgstr ""
+msgstr "빌드 저장"
 
 #: admin/repository/class_buildRepository.inc:63
 #: admin/repository/class_repositoryDistribution.inc:60
@@ -46,7 +46,7 @@ msgstr "명칭"
 
 #: admin/repository/class_buildRepository.inc:63
 msgid "Unique name for this repository"
-msgstr ""
+msgstr "이 저장소의 고유 이름"
 
 #: admin/repository/class_buildRepository.inc:67
 #: admin/repository/class_repositoryDistribution.inc:64
@@ -56,23 +56,23 @@ msgstr "설명"
 
 #: admin/repository/class_buildRepository.inc:67
 msgid "Description of this repository"
-msgstr ""
+msgstr "이 저장소에 대한 설명"
 
 #: admin/repository/class_buildRepository.inc:72
 msgid "Distribution sections"
-msgstr ""
+msgstr "배포 섹션"
 
 #: admin/repository/class_buildRepository.inc:72
 msgid "The distribution sections this repository provides"
-msgstr ""
+msgstr "이 저장소가 제공하는 배포 섹션"
 
 #: admin/repository/class_buildRepository.inc:78
 msgid "Private"
-msgstr ""
+msgstr "프라이"
 
 #: admin/repository/class_buildRepository.inc:78
 msgid "Is this repository private or public?"
-msgstr ""
+msgstr "이 저장소는 개인 또는 공용입니까?"
 
 #: admin/repository/class_buildRepository.inc:82
 msgid "Type"
@@ -80,50 +80,50 @@ msgstr "타입"
 
 #: admin/repository/class_buildRepository.inc:82
 msgid "Repository type"
-msgstr ""
+msgstr "저장소 유형"
 
 #: admin/repository/class_buildRepository.inc:89
 msgid "Members"
-msgstr ""
+msgstr "멤"
 
 #: admin/repository/class_buildRepository.inc:92
 msgid "Admins"
-msgstr ""
+msgstr "관리자"
 
 #: admin/repository/class_buildRepository.inc:92
 msgid "Admins of this repository"
-msgstr ""
+msgstr "이 저장소의 관리자"
 
 #: admin/repository/class_buildRepository.inc:96
 msgid "Uploaders"
-msgstr ""
+msgstr "업로"
 
 #: admin/repository/class_buildRepository.inc:96
 msgid "Uploaders of this repository"
-msgstr ""
+msgstr "이 저장소의 업로더"
 
 #: admin/repository/class_buildRepository.inc:100
 msgid "Users"
-msgstr ""
+msgstr "사용자"
 
 #: admin/repository/class_buildRepository.inc:100
 msgid "Users of this repository"
-msgstr ""
+msgstr "이 저장소의 사용자"
 
 #: admin/repository/class_repositoryDistribution.inc:30
 #: admin/repository/class_repositoryDistribution.inc:31
 #: admin/repository/class_repositoryDistribution.inc:33
 #: admin/repository/class_repositoryDistribution.inc:56
 msgid "Repository distribution"
-msgstr ""
+msgstr "저장소 배포"
 
 #: admin/repository/class_repositoryDistribution.inc:60
 msgid "Unique name for this distribution"
-msgstr ""
+msgstr "이 배포판의 고유 이름"
 
 #: admin/repository/class_repositoryDistribution.inc:64
 msgid "Description of this distribution"
-msgstr ""
+msgstr "이 배포판에 대한 설명"
 
 #: admin/repository/class_repositoryDistribution.inc:69
 msgid "Section"
@@ -131,56 +131,56 @@ msgstr "섹션"
 
 #: admin/repository/class_repositoryDistribution.inc:69
 msgid "The sections this distribution contains"
-msgstr ""
+msgstr "이 배포에 포함된 섹션"
 
 #: admin/repository/class_repositoryDistribution.inc:76
 #: admin/repository/class_repositorySection.inc:66
 msgid "Based on"
-msgstr ""
+msgstr "기"
 
 #: admin/repository/class_repositoryDistribution.inc:76
 msgid "The distributions this one is based on"
-msgstr ""
+msgstr "기반이 되는 배포"
 
 #: admin/repository/class_repositorySection.inc:30
 #: admin/repository/class_repositorySection.inc:31
 #: admin/repository/class_repositorySection.inc:33
 #: admin/repository/class_repositorySection.inc:53
 msgid "Repository section"
-msgstr ""
+msgstr "저장소 섹션"
 
 #: admin/repository/class_repositorySection.inc:57
 msgid "Unique name for this section"
-msgstr ""
+msgstr "이 섹션의 고유 이름"
 
 #: admin/repository/class_repositorySection.inc:61
 msgid "Description of this section"
-msgstr ""
+msgstr "이 섹션에 대한 설명"
 
 #: admin/repository/class_repositorySection.inc:66
 msgid "The sections this one is based on"
-msgstr ""
+msgstr "기반이 되는 섹션"
 
 #: config/repository/class_repositoryConfig.inc:28
 msgid "Repository configuration"
-msgstr ""
+msgstr "저장소 구성"
 
 #: config/repository/class_repositoryConfig.inc:29
 msgid "FusionDirectory repository plugin configuration"
-msgstr ""
+msgstr "FusionDirectory 저장소 플러그인 구성"
 
 #: config/repository/class_repositoryConfig.inc:45
 msgid "Repository RDN"
-msgstr ""
+msgstr "저장소 RDN"
 
 #: config/repository/class_repositoryConfig.inc:45
 msgid "Branch in which repository objects will be stored"
-msgstr ""
+msgstr "저장소 개체가 저장될 브랜치"
 
 #: config/repository/class_repositoryConfig.inc:51
 msgid "Repository types"
-msgstr ""
+msgstr "저장소 유형"
 
 #: config/repository/class_repositoryConfig.inc:51
 msgid "Available repository types"
-msgstr ""
+msgstr "사용 가능한 저장소 유형"
diff --git a/repository/locale/lv/fusiondirectory.po b/repository/locale/lv/fusiondirectory.po
index e57a87737f65df708b3e38dca0a1a7b09c9b6977..a6c8643dc984716d77715c65cf2f4f88d7739732 100644
--- a/repository/locale/lv/fusiondirectory.po
+++ b/repository/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/repository/locale/nb/fusiondirectory.po b/repository/locale/nb/fusiondirectory.po
index 0c8eae1bdbdaef21244a674eb296f875a1875f29..8b62550a3b22f739a4c40463e614a67e8b643273 100644
--- a/repository/locale/nb/fusiondirectory.po
+++ b/repository/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/repository/locale/nl/fusiondirectory.po b/repository/locale/nl/fusiondirectory.po
index 77f856753c1acab8248ff9798535a0f5afbcdcfa..9d9c0fdd4dde8ba53b9bd6a0f82e692738b7bbd5 100644
--- a/repository/locale/nl/fusiondirectory.po
+++ b/repository/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/repository/locale/pl/fusiondirectory.po b/repository/locale/pl/fusiondirectory.po
index b51c86682f8d891170a96856e10aff382605e463..b86bfa5d63a90ca2a56824a0db1ce82c80b5f4bd 100644
--- a/repository/locale/pl/fusiondirectory.po
+++ b/repository/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/repository/locale/pt/fusiondirectory.po b/repository/locale/pt/fusiondirectory.po
index c2a25371bd4839941c737042cb5c92d1dce4b25c..5cbdfa0b3809f831181e323875a54309344beddd 100644
--- a/repository/locale/pt/fusiondirectory.po
+++ b/repository/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/repository/class_repositoryManagement.inc:28
 #: admin/repository/class_repositoryManagement.inc:29
diff --git a/repository/locale/pt_BR/fusiondirectory.po b/repository/locale/pt_BR/fusiondirectory.po
index 586ff189349f24589575fbf4b3f2d6d4c1d5b455..149996b3aab871617a4f1219c6538e3b55827bbf 100644
--- a/repository/locale/pt_BR/fusiondirectory.po
+++ b/repository/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/repository/class_repositoryManagement.inc:28
 #: admin/repository/class_repositoryManagement.inc:29
diff --git a/repository/locale/ru/fusiondirectory.po b/repository/locale/ru/fusiondirectory.po
index 826b65cf56d39bedc4588ec2e78441f0ed92b007..1ef56c5c32982b1b3ad442ac4fcf720018c8153d 100644
--- a/repository/locale/ru/fusiondirectory.po
+++ b/repository/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/repository/locale/ru@petr1708/fusiondirectory.po b/repository/locale/ru@petr1708/fusiondirectory.po
index 49a66263cb96c1de3d68891c815572b24db6478b..0cba1b136f7d6dbdec86eb2dd95632adda76a4b1 100644
--- a/repository/locale/ru@petr1708/fusiondirectory.po
+++ b/repository/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/repository/locale/sv/fusiondirectory.po b/repository/locale/sv/fusiondirectory.po
index bf9dcfd1f934ca0f59c0a88c16dc180bd049b34f..16329f65722145fa16e0bad3d8c8246f098c10f4 100644
--- a/repository/locale/sv/fusiondirectory.po
+++ b/repository/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/repository/locale/tr_TR/fusiondirectory.po b/repository/locale/tr_TR/fusiondirectory.po
index c15dccd854785e9cddf12c2f18b85bfab2409ee1..1c780f64c9ceddbea7a86df5cf575a364205ae41 100644
--- a/repository/locale/tr_TR/fusiondirectory.po
+++ b/repository/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2021
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2021\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -72,7 +76,7 @@ msgstr ""
 
 #: admin/repository/class_buildRepository.inc:82
 msgid "Type"
-msgstr ""
+msgstr "Tür"
 
 #: admin/repository/class_buildRepository.inc:82
 msgid "Repository type"
diff --git a/repository/locale/ug/fusiondirectory.po b/repository/locale/ug/fusiondirectory.po
index 61ff80637872e9c5d868d9ed995a18f9e84b1742..0032258961b51c7ef802bc52a92b9a9b8a447744 100644
--- a/repository/locale/ug/fusiondirectory.po
+++ b/repository/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/repository/class_repositoryManagement.inc:28
 #: admin/repository/class_repositoryManagement.inc:29
diff --git a/repository/locale/vi_VN/fusiondirectory.po b/repository/locale/vi_VN/fusiondirectory.po
index 379fc11ae631453581b86342debabe61ff346ec6..780bcdbfbcb16e04cf8678bbed282f641d22b6df 100644
--- a/repository/locale/vi_VN/fusiondirectory.po
+++ b/repository/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/repository/locale/zh/fusiondirectory.po b/repository/locale/zh/fusiondirectory.po
index e19c04cbc3b0174b8a36a2d09801fe71e68aa6f6..75a992e569e8c16f187fbfa3899792ac9acbc353 100644
--- a/repository/locale/zh/fusiondirectory.po
+++ b/repository/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/repository/locale/zh_TW/fusiondirectory.po b/repository/locale/zh_TW/fusiondirectory.po
index b41d368f7d4b353451e3c5d2e662224cfd318ac9..d9e6b4ab9831fe6b2fde125dd39fc4d5871a1cd3 100644
--- a/repository/locale/zh_TW/fusiondirectory.po
+++ b/repository/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/samba/admin/groups/samba/class_sambaGroup.inc b/samba/admin/groups/samba/class_sambaGroup.inc
index b6265c2cbfe01a8dbc2fdf3eed32583d0f0232b7..947769f74fb0872a38d3ebeea203634f6b21c7c2 100644
--- a/samba/admin/groups/samba/class_sambaGroup.inc
+++ b/samba/admin/groups/samba/class_sambaGroup.inc
@@ -21,27 +21,27 @@
 class sambaGroup extends simplePlugin
 {
   var $displayHeader  = TRUE;
-  var $objectclasses  = array("sambaGroupMapping");
+  var $objectclasses  = ["sambaGroupMapping"];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Samba'),
       'plDescription' => _('Samba group settings'),
       'plIcon'        => 'geticon.php?context=applications&icon=samba&size=48',
       'plSmallIcon'   => 'geticon.php?context=applications&icon=samba&size=16',
-      'plObjectType'  => array('group'),
+      'plObjectType'  => ['group'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Domain'),
-        'attrs' => array(
+        'attrs' => [
           new SelectAttribute(
             _('Domain'), _('Samba domain'),
             'sambaDomainName', TRUE
@@ -49,18 +49,18 @@ class sambaGroup extends simplePlugin
           new CompositeAttribute(
             _('Samba information'),
             'sambaSID',
-            array(
+            [
               new HiddenAttribute(
                 'SID'
               ),
               new SelectAttribute(
                 _('Group type'), _('Samba group type'),
                 'GID', TRUE,
-                array(0,                512,                513,                514),
+                [0,                512,                513,                514],
                 0,
-                array(_("Samba group"), _("Domain admins"), _("Domain users"),  _("Domain guests"))
+                [_("Samba group"), _("Domain admins"), _("Domain users"),  _("Domain guests")]
               )
-            ),
+            ],
             '/^([^ ]+)-([0-9]+)$/',
             '%s-%d'
           ),
@@ -68,9 +68,9 @@ class sambaGroup extends simplePlugin
             'sambaGroupType', TRUE,
             2
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -117,14 +117,14 @@ class sambaGroup extends simplePlugin
     /* Don't lose special groups! If not key'ed above, add it to the combo box */
     if (!in_array($this->getGID(), $this->attributesAccess['sambaSID']->attributes[1]->getChoices())) {
       $this->attributesAccess['sambaSID']->attributes[1]->setChoices(
-        array(0,                512,                513,                514,                $this->getGID()),
-        array(_("Samba group"), _("Domain admins"), _("Domain users"),  _("Domain guests"), sprintf(_("Special group (%d)"), $this->getGID()))
+        [0,                512,                513,                514,                $this->getGID()],
+        [_("Samba group"), _("Domain admins"), _("Domain users"),  _("Domain guests"), sprintf(_("Special group (%d)"), $this->getGID())]
       );
     }
     $this->attributesAccess['sambaSID']->attributes[1]->setInitialValue($this->getGID());
   }
 
-  function prepare_save()
+  function prepare_save ()
   {
     global $config;
     $errors = parent::prepare_save();
@@ -157,7 +157,7 @@ class sambaGroup extends simplePlugin
   }
 
   /*! \brief Get a new SambaSID for a group */
-  function getSambaSID()
+  function getSambaSID ()
   {
     global $config;
     $ldap       = $config->get_ldap_link();
@@ -169,14 +169,14 @@ class sambaGroup extends simplePlugin
     do {
       $sid = $this->getSID()."-".($gidNumber * 2 + $this->getRidBase() + 1);
       $ldap->cd($config->current['BASE']);
-      $ldap->search("(sambaSID=$sid)", array("sambaSID"));
+      $ldap->search("(sambaSID=$sid)", ["sambaSID"]);
       $gidNumber++;
     } while ($ldap->count() != 0);
 
     return $sid;
   }
 
-  function resetCopyInfos()
+  function resetCopyInfos ()
   {
     parent::resetCopyInfos();
 
@@ -185,28 +185,28 @@ class sambaGroup extends simplePlugin
     $this->attributesAccess['sambaDomainName']->setInitialValue('');
   }
 
-  function getRidBase()
+  function getRidBase ()
   {
     global $config;
     return $config->data['SERVERS']['SAMBA'][$this->sambaDomainName]['RIDBASE'];
   }
 
-  function getSID()
+  function getSID ()
   {
     return $this->attributesAccess['sambaSID']->attributes[0]->getValue();
   }
 
-  function setSID($value)
+  function setSID ($value)
   {
     $this->attributesAccess['sambaSID']->attributes[0]->setValue($value);
   }
 
-  function getGID()
+  function getGID ()
   {
     return $this->attributesAccess['sambaSID']->attributes[1]->getValue();
   }
 
-  function setGID($value)
+  function setGID ($value)
   {
     $this->attributesAccess['sambaSID']->attributes[1]->setValue($value);
   }
diff --git a/samba/admin/samba/class_sambaDomain.inc b/samba/admin/samba/class_sambaDomain.inc
index 93c5f383d91b4010f1649c984cd03f07bfcca3ef..61eec7c374cf94b4d5812d9daf5e8f91b3aee810 100644
--- a/samba/admin/samba/class_sambaDomain.inc
+++ b/samba/admin/samba/class_sambaDomain.inc
@@ -22,43 +22,43 @@ class sambaDomain extends simplePlugin
 {
   var $mainTab = TRUE;
 
-  var $objectclasses = array('sambaDomain');
+  var $objectclasses = ['sambaDomain'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Samba Domain'),
       'plDescription' => _('Samba Domain'),
-      'plObjectType'  => array(
-        'sambaDomain' => array(
+      'plObjectType'  => [
+        'sambaDomain' => [
           'name'        => _('Samba Domain'),
           'description' => _('Samba domain settings'),
           'filter'      => '(objectClass=sambaDomain)',
           'icon'        => 'geticon.php?context=applications&icon=samba&size=16',
           'ou'          => '',
           'mainAttr'    => 'sambaDomainName',
-        )
-      ),
+        ]
+      ],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Properties'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Domain name'), _('Name of this domain'),
             'sambaDomainName', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('SID'), _('SID of this domain'),
             'sambaSID', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Rid base'), _('Algorithmic rid base'),
             'sambaAlgorithmicRidBase', FALSE
           ),
@@ -129,9 +129,9 @@ class sambaDomain extends simplePlugin
             _('Allow Machine Password changes (default: 0 => off)'),
             'sambaRefuseMachinePwdChange'
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function compute_dn ()
diff --git a/samba/admin/samba/class_sambaDomainManagement.inc b/samba/admin/samba/class_sambaDomainManagement.inc
index 6614f4f11a44c871c42366364c703f10fd228bc1..ed1db6f29f1775878dd11246d3515200d6cbe44b 100644
--- a/samba/admin/samba/class_sambaDomainManagement.inc
+++ b/samba/admin/samba/class_sambaDomainManagement.inc
@@ -21,25 +21,25 @@
 class sambaDomainManagement extends simpleManagement
 {
   // Tab definition
-  protected $objectTypes  = array('sambaDomain');
+  protected $objectTypes  = ['sambaDomain'];
 
   protected $departmentBrowser      = FALSE;
   protected $departmentRootVisible  = FALSE;
   protected $baseMode               = FALSE;
   protected $skipCpHandler          = TRUE;
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Samba domains'),
       'plDescription' => _('Samba domain management'),
       'plIcon'        => 'geticon.php?context=applications&icon=samba&size=48',
       'plSection'     => 'systems',
       'plPriority'    => 40,
-      'plManages'     => array('sambaDomain'),
+      'plManages'     => ['sambaDomain'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 
   function configureHeadpage ()
diff --git a/samba/admin/systems/samba/class_argonautEventSambaShares.inc b/samba/admin/systems/samba/class_argonautEventSambaShares.inc
index 9f0911e083bee2c8ad184c606ba5679bd1e6d3f7..b9a67398606a335f3a876481b938ef3a08484483 100644
--- a/samba/admin/systems/samba/class_argonautEventSambaShares.inc
+++ b/samba/admin/systems/samba/class_argonautEventSambaShares.inc
@@ -20,13 +20,13 @@
 
 class argonautEventTypesSambaShares
 {
-  static public function get_event_types_list()
+  static public function get_event_types_list ()
   {
-    return array(
-      'SambaShares.start' => array(
+    return [
+      'SambaShares.start' => [
         'name'  => _('Update Samba Shares'),
         'img'   => 'geticon.php?context=applications&icon=samba&size=16'
-      ),
-    );
+      ],
+    ];
   }
 }
diff --git a/samba/admin/systems/samba/class_sambaSystemTab.inc b/samba/admin/systems/samba/class_sambaSystemTab.inc
index e15a53233b58909dfcdbd43ba9ea216f6ea13439..309bbe3682aeafe202eff68d7b88d88ebb539f21 100644
--- a/samba/admin/systems/samba/class_sambaSystemTab.inc
+++ b/samba/admin/systems/samba/class_sambaSystemTab.inc
@@ -21,41 +21,41 @@
 
 class sambaSystemTab extends simplePlugin
 {
-  var $objectclasses = array('posixAccount','sambaSamAccount');
+  var $objectclasses = ['posixAccount','sambaSamAccount'];
   var $displayHeader = TRUE;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Samba'),
       'plDescription' => _('Windows workstation information'),
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array('workstation'),
+      'plObjectType'  => ['workstation'],
       'plPriority'    => 6,
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ($word = NULL, $rdn = NULL)
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Properties'),
-        'attrs' => array(
-          new HiddenAttribute ('uid'),
-          new HiddenAttribute ('sambaSID'),
-          new HiddenAttribute ('homeDirectory', TRUE, '/dev/null'),
-          new HiddenAttribute ('uidNumber', TRUE, 1000),
-          new HiddenAttribute ('gidNumber', TRUE, 515),
-          new HiddenAttribute ('sambaAcctFlags', TRUE, '[W          ]'),
-          new SelectAttribute (
+        'attrs' => [
+          new HiddenAttribute('uid'),
+          new HiddenAttribute('sambaSID'),
+          new HiddenAttribute('homeDirectory', TRUE, '/dev/null'),
+          new HiddenAttribute('uidNumber', TRUE, 1000),
+          new HiddenAttribute('gidNumber', TRUE, 515),
+          new HiddenAttribute('sambaAcctFlags', TRUE, '[W          ]'),
+          new SelectAttribute(
             _('Domain'), _('Samba domain name'),
             'sambaDomainName', TRUE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -69,10 +69,10 @@ class sambaSystemTab extends simplePlugin
 
     // Get samba domain and its sid/rid base
     if ($this->sambaSID != '') {
-      $this->SID = preg_replace ('/-[^-]+$/', '', $this->sambaSID);
+      $this->SID = preg_replace('/-[^-]+$/', '', $this->sambaSID);
       $ldap = $config->get_ldap_link();
       $ldap->cd($config->current['BASE']);
-      $ldap->search('(&(objectClass=sambaDomain)(sambaSID='.$this->SID.'))', array('sambaAlgorithmicRidBase','sambaDomainName'));
+      $ldap->search('(&(objectClass=sambaDomain)(sambaSID='.$this->SID.'))', ['sambaAlgorithmicRidBase','sambaDomainName']);
       if ($ldap->count() != 0) {
         $attrs = $ldap->fetch();
         if (isset($attrs['sambaAlgorithmicRidBase'])) {
@@ -96,18 +96,18 @@ class sambaSystemTab extends simplePlugin
     }
   }
 
-  protected function update_uid()
+  protected function update_uid ()
   {
     $this->attributesAccess['uid']->setValue($this->parent->getBaseObject()->cn.'$');
   }
 
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
     $this->update_uid();
   }
 
-  function prepare_save()
+  function prepare_save ()
   {
     global $config;
     $this->update_uid();
@@ -129,7 +129,7 @@ class sambaSystemTab extends simplePlugin
         $sid = $this->SID.'-'.($uidNumber * 2 + $this->ridBase);
         $ldap = $config->get_ldap_link();
         $ldap->cd($config->current['BASE']);
-        $ldap->search('(sambaSID='.$sid.')', array('sambaSID'));
+        $ldap->search('(sambaSID='.$sid.')', ['sambaSID']);
         $uidNumber++;
       } while ($ldap->count() != 0);
       $uidNumber--;
diff --git a/samba/config/samba/class_sambaPluginConfig.inc b/samba/config/samba/class_sambaPluginConfig.inc
index ddb57bfdabfe4c21cc305c2b4a03ce763b709d3a..c1996cd8537c96a07a6e4dc4fcc2bf82b651e758 100644
--- a/samba/config/samba/class_sambaPluginConfig.inc
+++ b/samba/config/samba/class_sambaPluginConfig.inc
@@ -20,60 +20,60 @@
 
 class sambaPluginConfig extends simplePlugin
 {
-  var $objectclasses  = array('fdSambaPluginConf');
+  var $objectclasses  = ['fdSambaPluginConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Samba'),
       'plDescription'   => _('Samba plugin configuration'),
       'plPriority'      => 2,
-      'plObjectType'    => array('configuration'),
+      'plObjectType'    => ['configuration'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'samba' => array(
+    return [
+      'samba' => [
         'name'  => _('Samba settings'),
-        'attrs' => array(
-          new BooleanAttribute (
+        'attrs' => [
+          new BooleanAttribute(
             _('Samba ID mapping'),
             _('Maintain sambaIdmapEntry objects. Depending on your setup this can drastically improve the windows login performance.'),
             'fdSambaIdMapping'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Samba SID'),
             _('A samba SID if not available inside of the LDAP though samba schema. You can retrieve the current sid by net getlocalsid.'),
             'fdSambaSID', FALSE,
             '0-815-4711'
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Samba rid base'),
             _('The base id to add to ordinary sid calculations - if not available inside of the LDAP though samba schema.'),
             'fdSambaRidBase', FALSE,
             0, FALSE, 1
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Expiration date synchronisaton'), _('Synchronisaton the expiration date with the POSIX one?'),
             'fdSambaExpirationSync', FALSE,
-            array('', 'posix', 'samba'), '',
-            array('Do not synchronise', 'Synchronise from POSIX', 'Synchronise to POSIX')
+            ['', 'posix', 'samba'], '',
+            ['Do not synchronise', 'Synchronise from POSIX', 'Synchronise to POSIX']
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Generate sambaLMPassword'), _('Needed to be compliant with Windows <= 98 or Samba < 3.2'),
             'fdSambaGenLMPassword', FALSE
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Activate primary group warning'), _('Issue a warning if POSIX primary group cannot be converted to Samba primary group when activating the Samba tab of a user'),
             'fdSambaPrimaryGroupWarning', FALSE
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/samba/include/class_smbHash.inc b/samba/include/class_smbHash.inc
index 1cda1b1da565745348785b7ceb72277c6f149d52..9ddd4d88edc2bf839052e1e2c582b389860929cd 100644
--- a/samba/include/class_smbHash.inc
+++ b/samba/include/class_smbHash.inc
@@ -33,7 +33,7 @@ $Id$
 /**
 * Calculates NT and LM hashes.
 *
-* The important functions are lmhash($password) and nthash($password).
+* The important functions are lmhash ($password) and nthash ($password).
 *
 * @package lam
 */
@@ -41,101 +41,101 @@ class smbHash {
 
   // Contants used in lanlam hash calculations
   // Ported from SAMBA/source/libsmb/smbdes.c:perm1[56]
-  private $perm1 = array(57, 49, 41, 33, 25, 17,  9,
+  private $perm1 = [57, 49, 41, 33, 25, 17,  9,
               1, 58, 50, 42, 34, 26, 18,
              10,  2, 59, 51, 43, 35, 27,
              19, 11,  3, 60, 52, 44, 36,
              63, 55, 47, 39, 31, 23, 15,
               7, 62, 54, 46, 38, 30, 22,
              14,  6, 61, 53, 45, 37, 29,
-             21, 13,  5, 28, 20, 12,  4);
+             21, 13,  5, 28, 20, 12,  4];
   // Ported from SAMBA/source/libsmb/smbdes.c:perm2[48]
-  private $perm2 = array(14, 17, 11, 24,  1,  5,
+  private $perm2 = [14, 17, 11, 24,  1,  5,
               3, 28, 15,  6, 21, 10,
              23, 19, 12,  4, 26,  8,
              16,  7, 27, 20, 13,  2,
              41, 52, 31, 37, 47, 55,
              30, 40, 51, 45, 33, 48,
              44, 49, 39, 56, 34, 53,
-             46, 42, 50, 36, 29, 32);
+             46, 42, 50, 36, 29, 32];
   // Ported from SAMBA/source/libsmb/smbdes.c:perm3[64]
-  private $perm3 = array(58, 50, 42, 34, 26, 18, 10,  2,
+  private $perm3 = [58, 50, 42, 34, 26, 18, 10,  2,
              60, 52, 44, 36, 28, 20, 12,  4,
              62, 54, 46, 38, 30, 22, 14,  6,
              64, 56, 48, 40, 32, 24, 16,  8,
              57, 49, 41, 33, 25, 17,  9,  1,
              59, 51, 43, 35, 27, 19, 11,  3,
              61, 53, 45, 37, 29, 21, 13,  5,
-             63, 55, 47, 39, 31, 23, 15,  7);
+             63, 55, 47, 39, 31, 23, 15,  7];
   // Ported from SAMBA/source/libsmb/smbdes.c:perm4[48]
-  private $perm4 = array(32,  1,  2,  3,  4,  5,
+  private $perm4 = [32,  1,  2,  3,  4,  5,
                  4,  5,  6,  7,  8,  9,
                  8,  9, 10, 11, 12, 13,
                 12, 13, 14, 15, 16, 17,
                 16, 17, 18, 19, 20, 21,
                 20, 21, 22, 23, 24, 25,
                 24, 25, 26, 27, 28, 29,
-                28, 29, 30, 31, 32,  1);
+                28, 29, 30, 31, 32,  1];
   // Ported from SAMBA/source/libsmb/smbdes.c:perm5[32]
-  private $perm5 = array(16,  7, 20, 21,
+  private $perm5 = [16,  7, 20, 21,
                    29, 12, 28, 17,
                     1, 15, 23, 26,
                     5, 18, 31, 10,
                     2,  8, 24, 14,
                    32, 27,  3,  9,
                    19, 13, 30,  6,
-                   22, 11,  4, 25);
+                   22, 11,  4, 25];
   // Ported from SAMBA/source/libsmb/smbdes.c:perm6[64]
-  private $perm6 = array(40,  8, 48, 16, 56, 24, 64, 32,
+  private $perm6 = [40,  8, 48, 16, 56, 24, 64, 32,
              39,  7, 47, 15, 55, 23, 63, 31,
              38,  6, 46, 14, 54, 22, 62, 30,
              37,  5, 45, 13, 53, 21, 61, 29,
              36,  4, 44, 12, 52, 20, 60, 28,
              35,  3, 43, 11, 51, 19, 59, 27,
              34,  2, 42, 10, 50, 18, 58, 26,
-             33,  1, 41,  9, 49, 17, 57, 25);
+             33,  1, 41,  9, 49, 17, 57, 25];
   // Ported from SAMBA/source/libsmb/smbdes.c:sc[16]
-  private $sc = array(1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1);
+  private $sc = [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1];
   // Ported from SAMBA/source/libsmb/smbdes.c:sbox[8][4][16]
   // Side note, I used cut and paste for all these numbers, I did NOT
   // type them all in =)
-  private $sbox = array(array(array(14,  4, 13,  1,  2, 15, 11,  8,  3, 10,  6, 12,  5,  9,  0,  7),
-             array( 0, 15,  7,  4, 14,  2, 13,  1, 10,  6, 12, 11,  9,  5,  3,  8),
-             array( 4,  1, 14,  8, 13,  6,  2, 11, 15, 12,  9,  7,  3, 10,  5,  0),
-             array(15, 12,  8,  2,  4,  9,  1,  7,  5, 11,  3, 14, 10,  0,  6, 13)),
-            array(array(15,  1,  8, 14,  6, 11,  3,  4,  9,  7,  2, 13, 12,  0,  5, 10),
-             array( 3, 13,  4,  7, 15,  2,  8, 14, 12,  0,  1, 10,  6,  9, 11,  5),
-             array( 0, 14,  7, 11, 10,  4, 13,  1,  5,  8, 12,  6,  9,  3,  2, 15),
-             array(13,  8, 10,  1,  3, 15,  4,  2, 11,  6,  7, 12,  0,  5, 14,  9)),
-            array(array(10,  0,  9, 14,  6,  3, 15,  5,  1, 13, 12,  7, 11,  4,  2,  8),
-             array(13,  7,  0,  9,  3,  4,  6, 10,  2,  8,  5, 14, 12, 11, 15,  1),
-             array(13,  6,  4,  9,  8, 15,  3,  0, 11,  1,  2, 12,  5, 10, 14,  7),
-             array( 1, 10, 13,  0,  6,  9,  8,  7,  4, 15, 14,  3, 11,  5,  2, 12)),
-            array(array( 7, 13, 14,  3,  0,  6,  9, 10,  1,  2,  8,  5, 11, 12,  4, 15),
-             array(13,  8, 11,  5,  6, 15,  0,  3,  4,  7,  2, 12,  1, 10, 14,  9),
-             array(10,  6,  9,  0, 12, 11,  7, 13, 15,  1,  3, 14,  5,  2,  8,  4),
-             array( 3, 15,  0,  6, 10,  1, 13,  8,  9,  4,  5, 11, 12,  7,  2, 14)),
-            array(array( 2, 12,  4,  1,  7, 10, 11,  6,  8,  5,  3, 15, 13,  0, 14,  9),
-             array(14, 11,  2, 12,  4,  7, 13,  1,  5,  0, 15, 10,  3,  9,  8,  6),
-             array( 4,  2,  1, 11, 10, 13,  7,  8, 15,  9, 12,  5,  6,  3,  0, 14),
-             array(11,  8, 12,  7,  1, 14,  2, 13,  6, 15,  0,  9, 10,  4,  5,  3)),
-            array(array(12,  1, 10, 15,  9,  2,  6,  8,  0, 13,  3,  4, 14,  7,  5, 11),
-             array(10, 15,  4,  2,  7, 12,  9,  5,  6,  1, 13, 14,  0, 11,  3,  8),
-             array( 9, 14, 15,  5,  2,  8, 12,  3,  7,  0,  4, 10,  1, 13, 11,  6),
-             array( 4,  3,  2, 12,  9,  5, 15, 10, 11, 14,  1,  7,  6,  0,  8, 13)),
-            array(array( 4, 11,  2, 14, 15,  0,  8, 13,  3, 12,  9,  7,  5, 10,  6,  1),
-             array(13,  0, 11,  7,  4,  9,  1, 10, 14,  3,  5, 12,  2, 15,  8,  6),
-             array( 1,  4, 11, 13, 12,  3,  7, 14, 10, 15,  6,  8,  0,  5,  9,  2),
-             array( 6, 11, 13,  8,  1,  4, 10,  7,  9,  5,  0, 15, 14,  2,  3, 12)),
-            array(array(13,  2,  8,  4,  6, 15, 11,  1, 10,  9,  3, 14,  5,  0, 12,  7),
-             array( 1, 15, 13,  8, 10,  3,  7,  4, 12,  5,  6, 11,  0, 14,  9,  2),
-             array( 7, 11,  4,  1,  9, 12, 14,  2,  0,  6, 10, 13, 15,  3,  5,  8),
-             array( 2,  1, 14,  7,  4, 10,  8, 13, 15, 12,  9,  0,  3,  5,  6, 11)));
+  private $sbox = [[[14,  4, 13,  1,  2, 15, 11,  8,  3, 10,  6, 12,  5,  9,  0,  7],
+             [ 0, 15,  7,  4, 14,  2, 13,  1, 10,  6, 12, 11,  9,  5,  3,  8],
+             [ 4,  1, 14,  8, 13,  6,  2, 11, 15, 12,  9,  7,  3, 10,  5,  0],
+             [15, 12,  8,  2,  4,  9,  1,  7,  5, 11,  3, 14, 10,  0,  6, 13]],
+            [[15,  1,  8, 14,  6, 11,  3,  4,  9,  7,  2, 13, 12,  0,  5, 10],
+             [ 3, 13,  4,  7, 15,  2,  8, 14, 12,  0,  1, 10,  6,  9, 11,  5],
+             [ 0, 14,  7, 11, 10,  4, 13,  1,  5,  8, 12,  6,  9,  3,  2, 15],
+             [13,  8, 10,  1,  3, 15,  4,  2, 11,  6,  7, 12,  0,  5, 14,  9]],
+            [[10,  0,  9, 14,  6,  3, 15,  5,  1, 13, 12,  7, 11,  4,  2,  8],
+             [13,  7,  0,  9,  3,  4,  6, 10,  2,  8,  5, 14, 12, 11, 15,  1],
+             [13,  6,  4,  9,  8, 15,  3,  0, 11,  1,  2, 12,  5, 10, 14,  7],
+             [ 1, 10, 13,  0,  6,  9,  8,  7,  4, 15, 14,  3, 11,  5,  2, 12]],
+            [[ 7, 13, 14,  3,  0,  6,  9, 10,  1,  2,  8,  5, 11, 12,  4, 15],
+             [13,  8, 11,  5,  6, 15,  0,  3,  4,  7,  2, 12,  1, 10, 14,  9],
+             [10,  6,  9,  0, 12, 11,  7, 13, 15,  1,  3, 14,  5,  2,  8,  4],
+             [ 3, 15,  0,  6, 10,  1, 13,  8,  9,  4,  5, 11, 12,  7,  2, 14]],
+            [[ 2, 12,  4,  1,  7, 10, 11,  6,  8,  5,  3, 15, 13,  0, 14,  9],
+             [14, 11,  2, 12,  4,  7, 13,  1,  5,  0, 15, 10,  3,  9,  8,  6],
+             [ 4,  2,  1, 11, 10, 13,  7,  8, 15,  9, 12,  5,  6,  3,  0, 14],
+             [11,  8, 12,  7,  1, 14,  2, 13,  6, 15,  0,  9, 10,  4,  5,  3]],
+            [[12,  1, 10, 15,  9,  2,  6,  8,  0, 13,  3,  4, 14,  7,  5, 11],
+             [10, 15,  4,  2,  7, 12,  9,  5,  6,  1, 13, 14,  0, 11,  3,  8],
+             [ 9, 14, 15,  5,  2,  8, 12,  3,  7,  0,  4, 10,  1, 13, 11,  6],
+             [ 4,  3,  2, 12,  9,  5, 15, 10, 11, 14,  1,  7,  6,  0,  8, 13]],
+            [[ 4, 11,  2, 14, 15,  0,  8, 13,  3, 12,  9,  7,  5, 10,  6,  1],
+             [13,  0, 11,  7,  4,  9,  1, 10, 14,  3,  5, 12,  2, 15,  8,  6],
+             [ 1,  4, 11, 13, 12,  3,  7, 14, 10, 15,  6,  8,  0,  5,  9,  2],
+             [ 6, 11, 13,  8,  1,  4, 10,  7,  9,  5,  0, 15, 14,  2,  3, 12]],
+            [[13,  2,  8,  4,  6, 15, 11,  1, 10,  9,  3, 14,  5,  0, 12,  7],
+             [ 1, 15, 13,  8, 10,  3,  7,  4, 12,  5,  6, 11,  0, 14,  9,  2],
+             [ 7, 11,  4,  1,  9, 12, 14,  2,  0,  6, 10, 13, 15,  3,  5,  8],
+             [ 2,  1, 14,  7,  4, 10,  8, 13, 15, 12,  9,  0,  3,  5,  6, 11]]];
 
   /**
   * Fixes too large numbers
   */
-  private function x($i)
+  private function x ($i)
   {
     if ($i < 0) return 4294967296 - $i;
     else return $i;
@@ -146,9 +146,9 @@ class smbHash {
   * @param array $data
   * @return array
   */
-  private function lshift($count, $data)
+  private function lshift ($count, $data)
   {
-    $ret = array();
+    $ret = [];
     for ($i = 0; $i < sizeof($data); $i++) {
       $ret[$i] = $data[($i + $count) % sizeof($data)];
     }
@@ -160,9 +160,9 @@ class smbHash {
   * @param array p permutation
   * @return array
   */
-  private function permute($in, $p, $n)
+  private function permute ($in, $p, $n)
   {
-    $ret = array();
+    $ret = [];
     for ($i = 0; $i < $n; $i++) {
       $ret[$i] = $in[$p[$i] - 1] ? 1 : 0;
     }
@@ -174,9 +174,9 @@ class smbHash {
   * @param array $in2
   * @return array
   */
-  private function mxor($in1, $in2)
+  private function mxor ($in1, $in2)
   {
-    $ret = array();
+    $ret = [];
     for ($i = 0; $i < sizeof($in1); $i++) {
       $ret[$i] = $in1[$i] ^ $in2[$i];
     }
@@ -189,14 +189,14 @@ class smbHash {
   * @param boolean $forw
   * @return array
   */
-  function doHash($in, $key, $forw)
+  function doHash ($in, $key, $forw)
   {
-    $ki = array();
+    $ki = [];
 
     $pk1 = $this->permute($key, $this->perm1, 56);
 
-    $c = array();
-    $d = array();
+    $c = [];
+    $d = [];
     for ($i = 0; $i < 28; $i++) {
       $c[$i] = $pk1[$i];
       $d[$i] = $pk1[28 + $i];
@@ -213,8 +213,8 @@ class smbHash {
 
     $pd1 = $this->permute($in, $this->perm3, 64);
 
-    $l = array();
-    $r = array();
+    $l = [];
+    $r = [];
     for ($i = 0; $i < 32; $i++) {
       $l[$i] = $pd1[$i];
       $r[$i] = $pd1[32 + $i];
@@ -234,8 +234,8 @@ class smbHash {
         }
       }
       for ($j = 0; $j < 8; $j++) {
-        $m = array();
-        $n = array();
+        $m = [];
+        $n = [];
         $m = ($b[$j][0] << 1) | $b[$j][5];
         $n = ($b[$j][1] << 3) | ($b[$j][2] << 2) | ($b[$j][3] << 1) | $b[$j][4];
 
@@ -265,7 +265,7 @@ class smbHash {
    * @param string $str
    * @return string key
    */
-  private function str_to_key($str)
+  private function str_to_key ($str)
   {
     $key[0] = $this->unsigned_shift_r($str[0], 1);
     $key[1] = (($str[0] & 0x01) << 6) | $this->unsigned_shift_r($str[1], 2);
@@ -289,7 +289,7 @@ class smbHash {
    * @param unknown_type $forw
    * @return unknown
    */
-  private function smb_hash($in, $key, $forw)
+  private function smb_hash ($in, $key, $forw)
   {
     $key2 = $this->str_to_key($key);
 
@@ -316,12 +316,12 @@ class smbHash {
    * @param unknown_type $in
    * @return unknown
    */
-  private function E_P16($in)
+  private function E_P16 ($in)
   {
     $p14 = array_values(unpack("C*", $in));
-    $sp8 = array(0x4b, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25);
-    $p14_1 = array();
-    $p14_2 = array();
+    $sp8 = [0x4b, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25];
+    $p14_1 = [];
+    $p14_2 = [];
     for ($i = 0; $i < 7; $i++) {
       $p14_1[$i] = $p14[$i];
       $p14_2[$i] = $p14[$i + 7];
@@ -341,7 +341,7 @@ class smbHash {
   * @param string $password password
   * @return string hash value
   */
-  public function lmhash($password = "")
+  public function lmhash ($password = "")
   {
     $password = strtoupper($password);
     $password = substr($password, 0, 14);
@@ -359,7 +359,7 @@ class smbHash {
   * @param string $password password
   * @return string hash value
   */
-  public function nthash($password = "")
+  public function nthash ($password = "")
   {
     if (function_exists('mhash') && defined('MHASH_MD4')) {
       return strtoupper(bin2hex(mhash(MHASH_MD4, iconv('UTF-8', 'UTF-16LE', $password))));
@@ -375,7 +375,7 @@ class smbHash {
   *
   * PHP 4 only supports signed shifts by default.
   */
-  private function unsigned_shift_r($a, $b)
+  private function unsigned_shift_r ($a, $b)
   {
     $z = 0x80000000;
     if ($z & $a) {
diff --git a/samba/locale/af_ZA/fusiondirectory.po b/samba/locale/af_ZA/fusiondirectory.po
index 2325a9b3ee8daae478e25a0baf02a5e890335d59..db0ce43ca54b33994ac1207178a80d5564a2cf07 100644
--- a/samba/locale/af_ZA/fusiondirectory.po
+++ b/samba/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/samba/locale/ar/fusiondirectory.po b/samba/locale/ar/fusiondirectory.po
index b3064305df5ed6b160a31245c63709202933d28e..50b484d3b36f81c9bd5c86800d0d15838bce63e6 100644
--- a/samba/locale/ar/fusiondirectory.po
+++ b/samba/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/samba/locale/ca/fusiondirectory.po b/samba/locale/ca/fusiondirectory.po
index 32e53b5e302042805a33611a27e28c90460d01aa..1e624cf2da9b32bea5556ae61d87bef097fc9947 100644
--- a/samba/locale/ca/fusiondirectory.po
+++ b/samba/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/samba/locale/cs_CZ/fusiondirectory.po b/samba/locale/cs_CZ/fusiondirectory.po
index d355168b8b4eedf997967f170d931230cf7a0f7e..dd82e87264d3478611df38eecd03c7dd9d4538d3 100644
--- a/samba/locale/cs_CZ/fusiondirectory.po
+++ b/samba/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/samba/locale/de/fusiondirectory.po b/samba/locale/de/fusiondirectory.po
index 2be2d5e9c142e7ae61f72cb15dd03ef779a09876..c6999a870fc5afa263b2fc72bf6a339a7fb2adb6 100644
--- a/samba/locale/de/fusiondirectory.po
+++ b/samba/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/samba/locale/el_GR/fusiondirectory.po b/samba/locale/el_GR/fusiondirectory.po
index b9b87112db37c79c81919beabe5a7a62e0c7231d..16d06491ab67465e8de5b0cb9c7da5a28514fbee 100644
--- a/samba/locale/el_GR/fusiondirectory.po
+++ b/samba/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/samba/locale/en/fusiondirectory.po b/samba/locale/en/fusiondirectory.po
index aa5aca4677ac1cdf5a51090934d6a56b4faa6be4..2a48610f43c5e8256f51651c0775685b2c34cff3 100644
--- a/samba/locale/en/fusiondirectory.po
+++ b/samba/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,596 +17,596 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: include/class_smbHash.inc:356
-msgid ""
-"Your PHP install does not have the mhash() nor the hash function. Cannot do "
-"MD4 hashes."
-msgstr ""
-
-#: personal/samba/class_sambaAccount.inc:31
-msgid "Samba Munged Dial"
-msgstr ""
-
-#: personal/samba/class_sambaAccount.inc:158
 #: config/samba/class_sambaPluginConfig.inc:28
-#: admin/groups/samba/class_sambaGroup.inc:29
 #: admin/systems/samba/class_sambaSystemTab.inc:30
+#: admin/groups/samba/class_sambaGroup.inc:29
+#: personal/samba/class_sambaAccount.inc:158
 msgid "Samba"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:159
+#: config/samba/class_sambaPluginConfig.inc:29
+msgid "Samba plugin configuration"
+msgstr ""
+
 #: config/samba/class_sambaPluginConfig.inc:41
+#: personal/samba/class_sambaAccount.inc:159
 msgid "Samba settings"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:183
-msgid "Samba profile"
+#: config/samba/class_sambaPluginConfig.inc:44
+msgid "Samba ID mapping"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:189
-#: personal/samba/class_sambaAccount.inc:222
-msgid "Home directory drive"
+#: config/samba/class_sambaPluginConfig.inc:45
+msgid ""
+"Maintain sambaIdmapEntry objects. Depending on your setup this can "
+"drastically improve the windows login performance."
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:189
-#: personal/samba/class_sambaAccount.inc:222
-msgid "Letter for the home drive"
+#: config/samba/class_sambaPluginConfig.inc:49
+msgid "Samba SID"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:194
-#: personal/samba/class_sambaAccount.inc:227
-msgid "Home directory path"
+#: config/samba/class_sambaPluginConfig.inc:50
+msgid ""
+"A samba SID if not available inside of the LDAP though samba schema. You can "
+"retrieve the current sid by net getlocalsid."
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:194
-#: personal/samba/class_sambaAccount.inc:227
-msgid "UNC path for the home drive"
+#: config/samba/class_sambaPluginConfig.inc:55
+msgid "Samba rid base"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:199
-#: admin/groups/samba/class_sambaGroup.inc:42
-#: admin/groups/samba/class_sambaGroup.inc:45
-#: admin/systems/samba/class_sambaSystemTab.inc:53
-msgid "Domain"
+#: config/samba/class_sambaPluginConfig.inc:56
+msgid ""
+"The base id to add to ordinary sid calculations - if not available inside of "
+"the LDAP though samba schema."
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:199
-#: admin/systems/samba/class_sambaSystemTab.inc:53
-msgid "Samba domain name"
+#: config/samba/class_sambaPluginConfig.inc:61
+msgid "Expiration date synchronisaton"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:203
-msgid "Script path"
+#: config/samba/class_sambaPluginConfig.inc:61
+msgid "Synchronisaton the expiration date with the POSIX one?"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:203
-msgid "Login script path"
+#: config/samba/class_sambaPluginConfig.inc:67
+msgid "Generate sambaLMPassword"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:207
-#: personal/samba/class_sambaAccount.inc:232
-msgid "Profile path"
+#: config/samba/class_sambaPluginConfig.inc:67
+msgid "Needed to be compliant with Windows <= 98 or Samba < 3.2"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:207
-#: personal/samba/class_sambaAccount.inc:232
-msgid "UNC profile path"
+#: config/samba/class_sambaPluginConfig.inc:71
+msgid "Activate primary group warning"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:214
-msgid "Terminal server"
+#: config/samba/class_sambaPluginConfig.inc:71
+msgid ""
+"Issue a warning if POSIX primary group cannot be converted to Samba primary "
+"group when activating the Samba tab of a user"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:218
-msgid "Allow login on terminal server"
+#: include/class_smbHash.inc:369
+msgid ""
+"Your PHP install does not have the mhash() nor the hash function. Cannot do "
+"MD4 hashes."
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:237
-msgid "Inherit client config"
+#: admin/systems/samba/class_sambaSystemTab.inc:31
+msgid "Windows workstation information"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:237
-msgid "Inherit client configuration"
+#: admin/systems/samba/class_sambaSystemTab.inc:44
+#: admin/samba/class_sambaDomain.inc:51
+msgid "Properties"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:241
-msgid "Initial progam"
+#: admin/systems/samba/class_sambaSystemTab.inc:53
+#: admin/groups/samba/class_sambaGroup.inc:43
+#: admin/groups/samba/class_sambaGroup.inc:46
+#: personal/samba/class_sambaAccount.inc:199
+msgid "Domain"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:241
-msgid "Program to start after connecting"
+#: admin/systems/samba/class_sambaSystemTab.inc:53
+#: personal/samba/class_sambaAccount.inc:199
+msgid "Samba domain name"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:245
-msgid "Working directory"
+#: admin/systems/samba/class_argonautEventSambaShares.inc:27
+msgid "Update Samba Shares"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:245
-msgid "Basic working directory"
+#: admin/groups/samba/class_sambaGroup.inc:30
+msgid "Samba group settings"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:249
-msgid "Connection timeout"
+#: admin/groups/samba/class_sambaGroup.inc:46
+msgid "Samba domain"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:249
-msgid "Timeout when connecting to terminal server"
+#: admin/groups/samba/class_sambaGroup.inc:50
+msgid "Samba information"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:254
-msgid "Disconnection timeout"
+#: admin/groups/samba/class_sambaGroup.inc:57
+msgid "Group type"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:254
-msgid "Timeout before disconnecting from terminal server"
+#: admin/groups/samba/class_sambaGroup.inc:57
+msgid "Samba group type"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:259
-msgid "Idle timeout"
+#: admin/groups/samba/class_sambaGroup.inc:61
+#: admin/groups/samba/class_sambaGroup.inc:121
+msgid "Samba group"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:259
-msgid "Idle timeout before disconnecting from terminal server"
+#: admin/groups/samba/class_sambaGroup.inc:61
+#: admin/groups/samba/class_sambaGroup.inc:121
+msgid "Domain admins"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:264
-msgid "Connect client drives at logon"
+#: admin/groups/samba/class_sambaGroup.inc:61
+#: admin/groups/samba/class_sambaGroup.inc:121
+msgid "Domain users"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:264
-msgid "Drive to connect after login"
+#: admin/groups/samba/class_sambaGroup.inc:61
+#: admin/groups/samba/class_sambaGroup.inc:121
+msgid "Domain guests"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:268
-msgid "Connect client printers at logon"
+#: admin/groups/samba/class_sambaGroup.inc:107
+msgid "Configuration error"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:268
-msgid "Printers to connect after login"
+#: admin/groups/samba/class_sambaGroup.inc:107
+msgid "Cannot find group SID in your configuration!"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:272
-msgid "Default to main client printer"
+#: admin/groups/samba/class_sambaGroup.inc:121
+#, php-format
+msgid "Special group (%d)"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:272
-msgid "Default printer for this client"
+#: admin/groups/samba/class_sambaGroup.inc:137
+#: personal/samba/class_sambaAccount.inc:516
+#: personal/samba/class_sambaAccount.inc:542
+#: personal/samba/class_sambaAccount.inc:563
+msgid "Warning"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:276
-msgid "Shadowing"
+#: admin/groups/samba/class_sambaGroup.inc:137
+#: personal/samba/class_sambaAccount.inc:516
+msgid "Undefined Samba SID detected. Please fix this problem manually!"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:279
-msgid "disabled"
+#: admin/samba/class_sambaDomain.inc:30 admin/samba/class_sambaDomain.inc:31
+#: admin/samba/class_sambaDomain.inc:34
+msgid "Samba Domain"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:279
-msgid "input on, notify on"
+#: admin/samba/class_sambaDomain.inc:35
+msgid "Samba domain settings"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:279
-msgid "input on, notify off"
+#: admin/samba/class_sambaDomain.inc:54
+msgid "Domain name"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:280
-msgid "input off, notify on"
+#: admin/samba/class_sambaDomain.inc:54
+msgid "Name of this domain"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:280
-msgid "input off, nofify off"
+#: admin/samba/class_sambaDomain.inc:58
+msgid "SID"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:283
-msgid "On broken or timed out"
+#: admin/samba/class_sambaDomain.inc:58
+msgid "SID of this domain"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:283
-msgid "What happen if disconnected or timeout"
+#: admin/samba/class_sambaDomain.inc:62
+msgid "Rid base"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:286
-msgid "disconnect"
+#: admin/samba/class_sambaDomain.inc:62
+msgid "Algorithmic rid base"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:286
-msgid "reset"
+#: admin/samba/class_sambaDomain.inc:66
+msgid "Minimum password age"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:289
-msgid "Reconnect if disconnected"
+#: admin/samba/class_sambaDomain.inc:67
+msgid ""
+"Minimum password age, in seconds (default: 0 => allow immediate password "
+"change)"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:292
-msgid "from any client"
+#: admin/samba/class_sambaDomain.inc:72
+msgid "Maximum password age"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:292
-msgid "from previous client only"
+#: admin/samba/class_sambaDomain.inc:73
+msgid ""
+"Maximum password age, in seconds (default: -1 => never expire passwords)"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:304
-msgid "Access options"
+#: admin/samba/class_sambaDomain.inc:78
+msgid "Next RID"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:308
-msgid "Enforce password change"
+#: admin/samba/class_sambaDomain.inc:79
+msgid "Next NT rid to give out for anything"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:308
-msgid "Force the user to change his password"
+#: admin/samba/class_sambaDomain.inc:83
+msgid "Next group RID"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:313
-msgid "The password never expire"
+#: admin/samba/class_sambaDomain.inc:84
+msgid "Next NT rid to give out for groups"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:313
-msgid "The password will never expire"
+#: admin/samba/class_sambaDomain.inc:88
+msgid "Next user RID"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:318
-msgid "Login from windows client requires no password"
+#: admin/samba/class_sambaDomain.inc:89
+msgid "Next NT rid to give our for users"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:318
-msgid "Login from a client without a password"
+#: admin/samba/class_sambaDomain.inc:93
+msgid "Minimum password length"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:323
-msgid "Lock samba account"
+#: admin/samba/class_sambaDomain.inc:94
+msgid "Minimal password length (default: 5)"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:323
-msgid "Lock the account"
+#: admin/samba/class_sambaDomain.inc:98
+msgid "Password history length"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:328
-msgid "Cannot change password"
+#: admin/samba/class_sambaDomain.inc:99
+msgid "Length of Password History Entries (default: 0 => off)"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:328
-msgid "Not allowed to change password"
+#: admin/samba/class_sambaDomain.inc:103
+msgid "Logon to change password"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:332
-msgid "Account expiration"
+#: admin/samba/class_sambaDomain.inc:104
+msgid "Force Users to logon for password change (default: 0 => off, 2 => on)"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:332
-msgid "When does the account expire"
+#: admin/samba/class_sambaDomain.inc:108
+msgid "Lockout duration"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:340
-msgid "Samba logon times"
+#: admin/samba/class_sambaDomain.inc:109
+msgid "Lockout duration in minutes (default: 30, -1 => forever)"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:340
-msgid "What is the allowed time to connect"
+#: admin/samba/class_sambaDomain.inc:113
+msgid "Lockout observation window"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:341
-msgid "Edit settings"
+#: admin/samba/class_sambaDomain.inc:114
+msgid "Reset time after lockout in minutes (default: 30)"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:357
-msgid "System trust"
+#: admin/samba/class_sambaDomain.inc:118
+msgid "Lockout threshold"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:363
-msgid "Allow connection from these workstations only"
+#: admin/samba/class_sambaDomain.inc:119
+msgid "Lockout users after bad logon attempts (default: 0 => off)"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:363
-msgid "Only allow this user to connect to this list of hosts"
+#: admin/samba/class_sambaDomain.inc:123
+msgid "Force logoff"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:479
-#: personal/samba/class_sambaAccount.inc:486
-#, php-format
-msgid ""
-"Field \"%s\" is required when \"%s\" is filled! Fill both field or empty "
-"them."
+#: admin/samba/class_sambaDomain.inc:124
+msgid "Disconnect Users outside logon hours (default: -1 => off, 0 => on)"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:494
-msgid "The windows user manager allows eight clients at maximum!"
+#: admin/samba/class_sambaDomain.inc:128
+msgid "Refuse machine password change"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:511
-#: personal/samba/class_sambaAccount.inc:537
-#: personal/samba/class_sambaAccount.inc:558
-#: admin/groups/samba/class_sambaGroup.inc:133
-msgid "Warning"
+#: admin/samba/class_sambaDomain.inc:129
+msgid "Allow Machine Password changes (default: 0 => off)"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:511
-#: admin/groups/samba/class_sambaGroup.inc:133
-msgid "Undefined Samba SID detected. Please fix this problem manually!"
+#: admin/samba/class_sambaDomainManagement.inc:34
+msgid "Samba domains"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:538
-msgid ""
-"Cannot convert primary group to samba group: group cannot be identified!"
+#: admin/samba/class_sambaDomainManagement.inc:35
+msgid "Samba domain management"
 msgstr ""
 
-#: personal/samba/class_sambaAccount.inc:559
-msgid ""
-"Cannot convert primary group to samba group: group samba tab is disabled!"
+#: personal/samba/class_sambaAccount.inc:31
+msgid "Samba Munged Dial"
 msgstr ""
 
-#: config/samba/class_sambaPluginConfig.inc:29
-msgid "Samba plugin configuration"
+#: personal/samba/class_sambaAccount.inc:183
+msgid "Samba profile"
 msgstr ""
 
-#: config/samba/class_sambaPluginConfig.inc:44
-msgid "Samba ID mapping"
+#: personal/samba/class_sambaAccount.inc:189
+#: personal/samba/class_sambaAccount.inc:222
+msgid "Home directory drive"
 msgstr ""
 
-#: config/samba/class_sambaPluginConfig.inc:45
-msgid ""
-"Maintain sambaIdmapEntry objects. Depending on your setup this can "
-"drastically improve the windows login performance."
+#: personal/samba/class_sambaAccount.inc:189
+#: personal/samba/class_sambaAccount.inc:222
+msgid "Letter for the home drive"
+msgstr ""
+
+#: personal/samba/class_sambaAccount.inc:194
+#: personal/samba/class_sambaAccount.inc:227
+msgid "Home directory path"
 msgstr ""
 
-#: config/samba/class_sambaPluginConfig.inc:49
-msgid "Samba SID"
+#: personal/samba/class_sambaAccount.inc:194
+#: personal/samba/class_sambaAccount.inc:227
+msgid "UNC path for the home drive"
 msgstr ""
 
-#: config/samba/class_sambaPluginConfig.inc:50
-msgid ""
-"A samba SID if not available inside of the LDAP though samba schema. You can "
-"retrieve the current sid by net getlocalsid."
+#: personal/samba/class_sambaAccount.inc:203
+msgid "Script path"
 msgstr ""
 
-#: config/samba/class_sambaPluginConfig.inc:55
-msgid "Samba rid base"
+#: personal/samba/class_sambaAccount.inc:203
+msgid "Login script path"
 msgstr ""
 
-#: config/samba/class_sambaPluginConfig.inc:56
-msgid ""
-"The base id to add to ordinary sid calculations - if not available inside of "
-"the LDAP though samba schema."
+#: personal/samba/class_sambaAccount.inc:207
+#: personal/samba/class_sambaAccount.inc:232
+msgid "Profile path"
 msgstr ""
 
-#: config/samba/class_sambaPluginConfig.inc:61
-msgid "Expiration date synchronisaton"
+#: personal/samba/class_sambaAccount.inc:207
+#: personal/samba/class_sambaAccount.inc:232
+msgid "UNC profile path"
 msgstr ""
 
-#: config/samba/class_sambaPluginConfig.inc:61
-msgid "Synchronisaton the expiration date with the POSIX one?"
+#: personal/samba/class_sambaAccount.inc:214
+msgid "Terminal server"
 msgstr ""
 
-#: config/samba/class_sambaPluginConfig.inc:67
-msgid "Generate sambaLMPassword"
+#: personal/samba/class_sambaAccount.inc:218
+msgid "Allow login on terminal server"
 msgstr ""
 
-#: config/samba/class_sambaPluginConfig.inc:67
-msgid "Needed to be compliant with Windows <= 98 or Samba < 3.2"
+#: personal/samba/class_sambaAccount.inc:237
+msgid "Inherit client config"
 msgstr ""
 
-#: config/samba/class_sambaPluginConfig.inc:71
-msgid "Activate primary group warning"
+#: personal/samba/class_sambaAccount.inc:237
+msgid "Inherit client configuration"
 msgstr ""
 
-#: config/samba/class_sambaPluginConfig.inc:71
-msgid ""
-"Issue a warning if POSIX primary group cannot be converted to Samba primary "
-"group when activating the Samba tab of a user"
+#: personal/samba/class_sambaAccount.inc:241
+msgid "Initial progam"
 msgstr ""
 
-#: admin/groups/samba/class_sambaGroup.inc:30
-msgid "Samba group settings"
+#: personal/samba/class_sambaAccount.inc:241
+msgid "Program to start after connecting"
 msgstr ""
 
-#: admin/groups/samba/class_sambaGroup.inc:45
-msgid "Samba domain"
+#: personal/samba/class_sambaAccount.inc:245
+msgid "Working directory"
 msgstr ""
 
-#: admin/groups/samba/class_sambaGroup.inc:49
-msgid "Samba information"
+#: personal/samba/class_sambaAccount.inc:245
+msgid "Basic working directory"
 msgstr ""
 
-#: admin/groups/samba/class_sambaGroup.inc:56
-msgid "Group type"
+#: personal/samba/class_sambaAccount.inc:249
+msgid "Connection timeout"
 msgstr ""
 
-#: admin/groups/samba/class_sambaGroup.inc:56
-msgid "Samba group type"
+#: personal/samba/class_sambaAccount.inc:249
+msgid "Timeout when connecting to terminal server"
 msgstr ""
 
-#: admin/groups/samba/class_sambaGroup.inc:60
-#: admin/groups/samba/class_sambaGroup.inc:120
-msgid "Samba group"
+#: personal/samba/class_sambaAccount.inc:254
+msgid "Disconnection timeout"
 msgstr ""
 
-#: admin/groups/samba/class_sambaGroup.inc:60
-#: admin/groups/samba/class_sambaGroup.inc:120
-msgid "Domain admins"
+#: personal/samba/class_sambaAccount.inc:254
+msgid "Timeout before disconnecting from terminal server"
 msgstr ""
 
-#: admin/groups/samba/class_sambaGroup.inc:60
-#: admin/groups/samba/class_sambaGroup.inc:120
-msgid "Domain users"
+#: personal/samba/class_sambaAccount.inc:259
+msgid "Idle timeout"
 msgstr ""
 
-#: admin/groups/samba/class_sambaGroup.inc:60
-#: admin/groups/samba/class_sambaGroup.inc:120
-msgid "Domain guests"
+#: personal/samba/class_sambaAccount.inc:259
+msgid "Idle timeout before disconnecting from terminal server"
 msgstr ""
 
-#: admin/groups/samba/class_sambaGroup.inc:106
-msgid "Configuration error"
+#: personal/samba/class_sambaAccount.inc:264
+msgid "Connect client drives at logon"
 msgstr ""
 
-#: admin/groups/samba/class_sambaGroup.inc:106
-msgid "Cannot find group SID in your configuration!"
+#: personal/samba/class_sambaAccount.inc:264
+msgid "Drive to connect after login"
 msgstr ""
 
-#: admin/groups/samba/class_sambaGroup.inc:120
-#, php-format
-msgid "Special group (%d)"
+#: personal/samba/class_sambaAccount.inc:268
+msgid "Connect client printers at logon"
 msgstr ""
 
-#: admin/samba/class_sambaDomainManagement.inc:34
-msgid "Samba domains"
+#: personal/samba/class_sambaAccount.inc:268
+msgid "Printers to connect after login"
 msgstr ""
 
-#: admin/samba/class_sambaDomainManagement.inc:35
-msgid "Samba domain management"
+#: personal/samba/class_sambaAccount.inc:272
+msgid "Default to main client printer"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:30 admin/samba/class_sambaDomain.inc:31
-#: admin/samba/class_sambaDomain.inc:34
-msgid "Samba Domain"
+#: personal/samba/class_sambaAccount.inc:272
+msgid "Default printer for this client"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:35
-msgid "Samba domain settings"
+#: personal/samba/class_sambaAccount.inc:276
+msgid "Shadowing"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:51
-#: admin/systems/samba/class_sambaSystemTab.inc:44
-msgid "Properties"
+#: personal/samba/class_sambaAccount.inc:279
+msgid "disabled"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:54
-msgid "Domain name"
+#: personal/samba/class_sambaAccount.inc:279
+msgid "input on, notify on"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:54
-msgid "Name of this domain"
+#: personal/samba/class_sambaAccount.inc:279
+msgid "input on, notify off"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:58
-msgid "SID"
+#: personal/samba/class_sambaAccount.inc:280
+msgid "input off, notify on"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:58
-msgid "SID of this domain"
+#: personal/samba/class_sambaAccount.inc:280
+msgid "input off, nofify off"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:62
-msgid "Rid base"
+#: personal/samba/class_sambaAccount.inc:283
+msgid "On broken or timed out"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:62
-msgid "Algorithmic rid base"
+#: personal/samba/class_sambaAccount.inc:283
+msgid "What happen if disconnected or timeout"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:66
-msgid "Minimum password age"
+#: personal/samba/class_sambaAccount.inc:286
+msgid "disconnect"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:67
-msgid ""
-"Minimum password age, in seconds (default: 0 => allow immediate password "
-"change)"
+#: personal/samba/class_sambaAccount.inc:286
+msgid "reset"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:72
-msgid "Maximum password age"
+#: personal/samba/class_sambaAccount.inc:289
+msgid "Reconnect if disconnected"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:73
-msgid ""
-"Maximum password age, in seconds (default: -1 => never expire passwords)"
+#: personal/samba/class_sambaAccount.inc:292
+msgid "from any client"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:78
-msgid "Next RID"
+#: personal/samba/class_sambaAccount.inc:292
+msgid "from previous client only"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:79
-msgid "Next NT rid to give out for anything"
+#: personal/samba/class_sambaAccount.inc:304
+msgid "Access options"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:83
-msgid "Next group RID"
+#: personal/samba/class_sambaAccount.inc:308
+msgid "Enforce password change"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:84
-msgid "Next NT rid to give out for groups"
+#: personal/samba/class_sambaAccount.inc:308
+msgid "Force the user to change his password"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:88
-msgid "Next user RID"
+#: personal/samba/class_sambaAccount.inc:313
+msgid "The password never expire"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:89
-msgid "Next NT rid to give our for users"
+#: personal/samba/class_sambaAccount.inc:313
+msgid "The password will never expire"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:93
-msgid "Minimum password length"
+#: personal/samba/class_sambaAccount.inc:318
+msgid "Login from windows client requires no password"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:94
-msgid "Minimal password length (default: 5)"
+#: personal/samba/class_sambaAccount.inc:318
+msgid "Login from a client without a password"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:98
-msgid "Password history length"
+#: personal/samba/class_sambaAccount.inc:323
+msgid "Lock samba account"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:99
-msgid "Length of Password History Entries (default: 0 => off)"
+#: personal/samba/class_sambaAccount.inc:323
+msgid "Lock the account"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:103
-msgid "Logon to change password"
+#: personal/samba/class_sambaAccount.inc:328
+msgid "Cannot change password"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:104
-msgid "Force Users to logon for password change (default: 0 => off, 2 => on)"
+#: personal/samba/class_sambaAccount.inc:328
+msgid "Not allowed to change password"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:108
-msgid "Lockout duration"
+#: personal/samba/class_sambaAccount.inc:332
+msgid "Account expiration"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:109
-msgid "Lockout duration in minutes (default: 30, -1 => forever)"
+#: personal/samba/class_sambaAccount.inc:332
+msgid "When does the account expire"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:113
-msgid "Lockout observation window"
+#: personal/samba/class_sambaAccount.inc:340
+msgid "Samba logon times"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:114
-msgid "Reset time after lockout in minutes (default: 30)"
+#: personal/samba/class_sambaAccount.inc:340
+msgid "What is the allowed time to connect"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:118
-msgid "Lockout threshold"
+#: personal/samba/class_sambaAccount.inc:341
+msgid "Edit settings"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:119
-msgid "Lockout users after bad logon attempts (default: 0 => off)"
+#: personal/samba/class_sambaAccount.inc:357
+msgid "System trust"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:123
-msgid "Force logoff"
+#: personal/samba/class_sambaAccount.inc:363
+msgid "Allow connection from these workstations only"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:124
-msgid "Disconnect Users outside logon hours (default: -1 => off, 0 => on)"
+#: personal/samba/class_sambaAccount.inc:363
+msgid "Only allow this user to connect to this list of hosts"
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:128
-msgid "Refuse machine password change"
+#: personal/samba/class_sambaAccount.inc:479
+#: personal/samba/class_sambaAccount.inc:486
+#, php-format
+msgid ""
+"Field \"%s\" is required when \"%s\" is filled! Fill both field or empty "
+"them."
 msgstr ""
 
-#: admin/samba/class_sambaDomain.inc:129
-msgid "Allow Machine Password changes (default: 0 => off)"
+#: personal/samba/class_sambaAccount.inc:494
+msgid "The windows user manager allows eight clients at maximum!"
 msgstr ""
 
-#: admin/systems/samba/class_sambaSystemTab.inc:31
-msgid "Windows workstation information"
+#: personal/samba/class_sambaAccount.inc:543
+msgid ""
+"Cannot convert primary group to samba group: group cannot be identified!"
 msgstr ""
 
-#: admin/systems/samba/class_argonautEventSambaShares.inc:27
-msgid "Update Samba Shares"
+#: personal/samba/class_sambaAccount.inc:564
+msgid ""
+"Cannot convert primary group to samba group: group samba tab is disabled!"
 msgstr ""
 
 #: personal/samba/sambaLogonHours.tpl.c:2
diff --git a/samba/locale/es/fusiondirectory.po b/samba/locale/es/fusiondirectory.po
index 62b43953f135bae4a7c549590f8a6b82426092a4..953c8c18423b53994703bd6149bbf6f57881f380 100644
--- a/samba/locale/es/fusiondirectory.po
+++ b/samba/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: include/class_smbHash.inc:369
 msgid ""
diff --git a/samba/locale/es_CO/fusiondirectory.po b/samba/locale/es_CO/fusiondirectory.po
index 2e171f468f91a3cd5b1b6bc8c036e61981cc5746..381077b4ed5bd5e7c44baa14f0a99cfcfe2de23b 100644
--- a/samba/locale/es_CO/fusiondirectory.po
+++ b/samba/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: include/class_smbHash.inc:369
 msgid ""
diff --git a/samba/locale/es_VE/fusiondirectory.po b/samba/locale/es_VE/fusiondirectory.po
index 0376a320130a687ff085a279ff68b8df7ae6db20..64baf2c8a3b3fcca2b40b80e841029b0d616c081 100644
--- a/samba/locale/es_VE/fusiondirectory.po
+++ b/samba/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: include/class_smbHash.inc:369
 msgid ""
diff --git a/samba/locale/fa_IR/fusiondirectory.po b/samba/locale/fa_IR/fusiondirectory.po
index abdffef161fd0aca66ddf09c3fa75564301473a8..4752761ef62d4d1214e12b754bedb579d5f17e4a 100644
--- a/samba/locale/fa_IR/fusiondirectory.po
+++ b/samba/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/samba/locale/fi_FI/fusiondirectory.po b/samba/locale/fi_FI/fusiondirectory.po
index 609ba5845f80e36c467960c037c674a3f5a3c79e..73cf63a785342811db5c127e0554476aa65700bb 100644
--- a/samba/locale/fi_FI/fusiondirectory.po
+++ b/samba/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/samba/locale/fr/fusiondirectory.po b/samba/locale/fr/fusiondirectory.po
index 18fffa4f36c0b73d89e3e71ff24848dc6cab40be..9b68735ebf253bea80052597e3346d31133a1f48 100644
--- a/samba/locale/fr/fusiondirectory.po
+++ b/samba/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: include/class_smbHash.inc:369
 msgid ""
diff --git a/samba/locale/hu_HU/fusiondirectory.po b/samba/locale/hu_HU/fusiondirectory.po
index 738a17a8d1dbec9fca9906232a398f5a1c2e1c9b..2b164fd9c3b8d520a256f0b1a007b3bfa2ba3ccb 100644
--- a/samba/locale/hu_HU/fusiondirectory.po
+++ b/samba/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/samba/locale/id/fusiondirectory.po b/samba/locale/id/fusiondirectory.po
index fac4d271e50d5e4d34d235f30d5c4812c5d2a7af..63070928650eb32a6cf061496e5b3710ccf121c5 100644
--- a/samba/locale/id/fusiondirectory.po
+++ b/samba/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/samba/locale/it_IT/fusiondirectory.po b/samba/locale/it_IT/fusiondirectory.po
index 162c643876678ceab373406c2d6f73499d423d83..2184ebe7c2e84d93f3d64a4e413967caab7067ab 100644
--- a/samba/locale/it_IT/fusiondirectory.po
+++ b/samba/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: include/class_smbHash.inc:369
 msgid ""
diff --git a/samba/locale/ja/fusiondirectory.po b/samba/locale/ja/fusiondirectory.po
index 2e8e566f2d8d8b24b8e50c3eb5afd2749ac0cca7..7900c652878953130bdd7eea63a3c5fb38f853fc 100644
--- a/samba/locale/ja/fusiondirectory.po
+++ b/samba/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/samba/locale/ko/fusiondirectory.po b/samba/locale/ko/fusiondirectory.po
index ca023400c2b79c6beffb6b53c7508de12a782b72..f72cce1b018cef49743c4be9ee49cb6681eb0c48 100644
--- a/samba/locale/ko/fusiondirectory.po
+++ b/samba/locale/ko/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# Choi Chris <chulwon.choi@gmail.com>, 2018
+# Choi Chris <chulwon.choi@gmail.com>, 2020
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
-"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
+"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2020\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -25,24 +25,24 @@ msgstr ""
 msgid ""
 "Your PHP install does not have the mhash() nor the hash function. Cannot do "
 "MD4 hashes."
-msgstr ""
+msgstr "PHP 설치에는 mhash () 또는 해시 함수가 없습니다. MD4 해시를 수행 할 수 없습니다."
 
 #: admin/samba/class_sambaDomainManagement.inc:34
 msgid "Samba domains"
-msgstr ""
+msgstr "삼바 도메인"
 
 #: admin/samba/class_sambaDomainManagement.inc:35
 msgid "Samba domain management"
-msgstr ""
+msgstr "삼바 도메인 관리"
 
 #: admin/samba/class_sambaDomain.inc:30 admin/samba/class_sambaDomain.inc:31
 #: admin/samba/class_sambaDomain.inc:34
 msgid "Samba Domain"
-msgstr ""
+msgstr "삼바 도메인"
 
 #: admin/samba/class_sambaDomain.inc:35
 msgid "Samba domain settings"
-msgstr ""
+msgstr "삼바 도메인 설"
 
 #: admin/samba/class_sambaDomain.inc:51
 #: admin/systems/samba/class_sambaSystemTab.inc:44
@@ -51,145 +51,145 @@ msgstr "설정"
 
 #: admin/samba/class_sambaDomain.inc:54
 msgid "Domain name"
-msgstr ""
+msgstr "도메인 이름"
 
 #: admin/samba/class_sambaDomain.inc:54
 msgid "Name of this domain"
-msgstr ""
+msgstr "이 도메인의 이름"
 
 #: admin/samba/class_sambaDomain.inc:58
 msgid "SID"
-msgstr ""
+msgstr "SID"
 
 #: admin/samba/class_sambaDomain.inc:58
 msgid "SID of this domain"
-msgstr ""
+msgstr "이 도메인의 SID"
 
 #: admin/samba/class_sambaDomain.inc:62
 msgid "Rid base"
-msgstr ""
+msgstr "RID 베이스"
 
 #: admin/samba/class_sambaDomain.inc:62
 msgid "Algorithmic rid base"
-msgstr ""
+msgstr "알고리즘 RID 베이스"
 
 #: admin/samba/class_sambaDomain.inc:66
 msgid "Minimum password age"
-msgstr ""
+msgstr "최소 암호 사용 기간"
 
 #: admin/samba/class_sambaDomain.inc:67
 msgid ""
 "Minimum password age, in seconds (default: 0 => allow immediate password "
 "change)"
-msgstr ""
+msgstr "최소 암호 사용 기간 (초) (기본값 : 0 => 즉시 암호 변경 허용)"
 
 #: admin/samba/class_sambaDomain.inc:72
 msgid "Maximum password age"
-msgstr ""
+msgstr "최대 암호 사용 기간"
 
 #: admin/samba/class_sambaDomain.inc:73
 msgid ""
 "Maximum password age, in seconds (default: -1 => never expire passwords)"
-msgstr ""
+msgstr "최대 비밀번호 사용 기간 (초) (기본값 : -1 => 비밀번호가 만료되지 않음)"
 
 #: admin/samba/class_sambaDomain.inc:78
 msgid "Next RID"
-msgstr ""
+msgstr "다음 RID"
 
 #: admin/samba/class_sambaDomain.inc:79
 msgid "Next NT rid to give out for anything"
-msgstr ""
+msgstr "다음 번 NT rid가 제공하는 것"
 
 #: admin/samba/class_sambaDomain.inc:83
 msgid "Next group RID"
-msgstr ""
+msgstr "다음 그룹 RID"
 
 #: admin/samba/class_sambaDomain.inc:84
 msgid "Next NT rid to give out for groups"
-msgstr ""
+msgstr "그룹에게 줄 다음 NT RID"
 
 #: admin/samba/class_sambaDomain.inc:88
 msgid "Next user RID"
-msgstr ""
+msgstr "다음 사용자 RID"
 
 #: admin/samba/class_sambaDomain.inc:89
 msgid "Next NT rid to give our for users"
-msgstr ""
+msgstr "사용자에게 제공 할 다음 NT RID"
 
 #: admin/samba/class_sambaDomain.inc:93
 msgid "Minimum password length"
-msgstr ""
+msgstr "최소 비밀번호 길이"
 
 #: admin/samba/class_sambaDomain.inc:94
 msgid "Minimal password length (default: 5)"
-msgstr ""
+msgstr "최소 비밀번호 길이 (기본값 : 5)"
 
 #: admin/samba/class_sambaDomain.inc:98
 msgid "Password history length"
-msgstr ""
+msgstr "비밀번호 히스토리 개수"
 
 #: admin/samba/class_sambaDomain.inc:99
 msgid "Length of Password History Entries (default: 0 => off)"
-msgstr ""
+msgstr "비밀번호 히스토리 항목 개수 (기본값 : 0 => 꺼짐)"
 
 #: admin/samba/class_sambaDomain.inc:103
 msgid "Logon to change password"
-msgstr ""
+msgstr "비밀번호 변경을 위해 로그온"
 
 #: admin/samba/class_sambaDomain.inc:104
 msgid "Force Users to logon for password change (default: 0 => off, 2 => on)"
-msgstr ""
+msgstr "사용자가 비밀번호 변경을 위해 로그온하도록 강제 실행 (기본값 : 0 => 꺼짐, 2 => 켜짐)"
 
 #: admin/samba/class_sambaDomain.inc:108
 msgid "Lockout duration"
-msgstr ""
+msgstr "잠금 기간"
 
 #: admin/samba/class_sambaDomain.inc:109
 msgid "Lockout duration in minutes (default: 30, -1 => forever)"
-msgstr ""
+msgstr "잠금 시간, 분 (기본값 : 30, -1 => 영원히)"
 
 #: admin/samba/class_sambaDomain.inc:113
 msgid "Lockout observation window"
-msgstr ""
+msgstr "잠금 감시 창"
 
 #: admin/samba/class_sambaDomain.inc:114
 msgid "Reset time after lockout in minutes (default: 30)"
-msgstr ""
+msgstr "잠금 후 시간 재설정, 분 (기본값 : 30)"
 
 #: admin/samba/class_sambaDomain.inc:118
 msgid "Lockout threshold"
-msgstr ""
+msgstr "잠금 임계 값"
 
 #: admin/samba/class_sambaDomain.inc:119
 msgid "Lockout users after bad logon attempts (default: 0 => off)"
-msgstr ""
+msgstr "잘못된 로그온 시도 후 사용자 잠금 (기본값 : 0 => 꺼짐)"
 
 #: admin/samba/class_sambaDomain.inc:123
 msgid "Force logoff"
-msgstr ""
+msgstr "강제 로그오프"
 
 #: admin/samba/class_sambaDomain.inc:124
 msgid "Disconnect Users outside logon hours (default: -1 => off, 0 => on)"
-msgstr ""
+msgstr "로그온 시간 이외의 사용자 연결 끊기 (기본값 : -1 => 꺼짐, 0 => 켜짐)"
 
 #: admin/samba/class_sambaDomain.inc:128
 msgid "Refuse machine password change"
-msgstr ""
+msgstr "컴퓨터 비밀번호 변경 거부"
 
 #: admin/samba/class_sambaDomain.inc:129
 msgid "Allow Machine Password changes (default: 0 => off)"
-msgstr ""
+msgstr "컴퓨터 암호 변경 허용 (기본값 : 0 => 꺼짐)"
 
 #: admin/groups/samba/class_sambaGroup.inc:29
 #: admin/systems/samba/class_sambaSystemTab.inc:30
 #: config/samba/class_sambaPluginConfig.inc:28
 #: personal/samba/class_sambaAccount.inc:158
 msgid "Samba"
-msgstr ""
+msgstr "삼바"
 
 #: admin/groups/samba/class_sambaGroup.inc:30
 msgid "Samba group settings"
-msgstr ""
+msgstr "삼바 그룹 설정"
 
 #: admin/groups/samba/class_sambaGroup.inc:43
 #: admin/groups/samba/class_sambaGroup.inc:46
@@ -200,39 +200,39 @@ msgstr "도메"
 
 #: admin/groups/samba/class_sambaGroup.inc:46
 msgid "Samba domain"
-msgstr ""
+msgstr "삼바 도메인"
 
 #: admin/groups/samba/class_sambaGroup.inc:50
 msgid "Samba information"
-msgstr ""
+msgstr "삼바 정보"
 
 #: admin/groups/samba/class_sambaGroup.inc:57
 msgid "Group type"
-msgstr ""
+msgstr "그룹 유형"
 
 #: admin/groups/samba/class_sambaGroup.inc:57
 msgid "Samba group type"
-msgstr ""
+msgstr "삼바 그룹 유형"
 
 #: admin/groups/samba/class_sambaGroup.inc:61
 #: admin/groups/samba/class_sambaGroup.inc:121
 msgid "Samba group"
-msgstr ""
+msgstr "삼바 그룹"
 
 #: admin/groups/samba/class_sambaGroup.inc:61
 #: admin/groups/samba/class_sambaGroup.inc:121
 msgid "Domain admins"
-msgstr ""
+msgstr "도메인 관리자"
 
 #: admin/groups/samba/class_sambaGroup.inc:61
 #: admin/groups/samba/class_sambaGroup.inc:121
 msgid "Domain users"
-msgstr ""
+msgstr "도메인 사용자"
 
 #: admin/groups/samba/class_sambaGroup.inc:61
 #: admin/groups/samba/class_sambaGroup.inc:121
 msgid "Domain guests"
-msgstr ""
+msgstr "도메인 게스트"
 
 #: admin/groups/samba/class_sambaGroup.inc:107
 msgid "Configuration error"
@@ -240,12 +240,12 @@ msgstr "설정 에러"
 
 #: admin/groups/samba/class_sambaGroup.inc:107
 msgid "Cannot find group SID in your configuration!"
-msgstr ""
+msgstr "구성에서 그룹 SID를 찾을 수 없습니다!"
 
 #: admin/groups/samba/class_sambaGroup.inc:121
 #, php-format
 msgid "Special group (%d)"
-msgstr ""
+msgstr "특수 그룹 (%d)"
 
 #: admin/groups/samba/class_sambaGroup.inc:137
 #: personal/samba/class_sambaAccount.inc:516
@@ -257,131 +257,135 @@ msgstr "ã…—"
 #: admin/groups/samba/class_sambaGroup.inc:137
 #: personal/samba/class_sambaAccount.inc:516
 msgid "Undefined Samba SID detected. Please fix this problem manually!"
-msgstr ""
+msgstr "정의되지 않은 Samba SID가 감지되었습니다. 이 문제를 수동으로 수정하십시오!"
 
 #: admin/systems/samba/class_argonautEventSambaShares.inc:27
 msgid "Update Samba Shares"
-msgstr ""
+msgstr "삼바 공유 업데이트"
 
 #: admin/systems/samba/class_sambaSystemTab.inc:31
 msgid "Windows workstation information"
-msgstr ""
+msgstr "Windows 워크스테이션 정보"
 
 #: admin/systems/samba/class_sambaSystemTab.inc:53
 #: personal/samba/class_sambaAccount.inc:199
 msgid "Samba domain name"
-msgstr ""
+msgstr "삼바 도메인 이름"
 
 #: config/samba/class_sambaPluginConfig.inc:29
 msgid "Samba plugin configuration"
-msgstr ""
+msgstr "삼바 플러그인 구성"
 
 #: config/samba/class_sambaPluginConfig.inc:41
 #: personal/samba/class_sambaAccount.inc:159
 msgid "Samba settings"
-msgstr ""
+msgstr "삼바 설정"
 
 #: config/samba/class_sambaPluginConfig.inc:44
 msgid "Samba ID mapping"
-msgstr ""
+msgstr "삼바 ID 매핑"
 
 #: config/samba/class_sambaPluginConfig.inc:45
 msgid ""
 "Maintain sambaIdmapEntry objects. Depending on your setup this can "
 "drastically improve the windows login performance."
 msgstr ""
+"sambaIdmapEntry 오브젝트를 유지보수 하십시오. 설정에 따라 Windows 로그인 성능을 크게 향상시킬 수 있습니다."
 
 #: config/samba/class_sambaPluginConfig.inc:49
 msgid "Samba SID"
-msgstr ""
+msgstr "삼바 SID"
 
 #: config/samba/class_sambaPluginConfig.inc:50
 msgid ""
 "A samba SID if not available inside of the LDAP though samba schema. You can"
 " retrieve the current sid by net getlocalsid."
 msgstr ""
+"Samba 스키마를 통해 LDAP 내부에서 사용할 수없는 경우 Samba SID net getlocalsid로 현재 sid를 검색 할 수"
+" 있습니다."
 
 #: config/samba/class_sambaPluginConfig.inc:55
 msgid "Samba rid base"
-msgstr ""
+msgstr "삼바 RID 베이스"
 
 #: config/samba/class_sambaPluginConfig.inc:56
 msgid ""
 "The base id to add to ordinary sid calculations - if not available inside of"
 " the LDAP though samba schema."
-msgstr ""
+msgstr "samba 스키마를 통해 LDAP 내부에서 사용할 수 없는 경우 일반 sid 계산에 추가 할 기본 ID입니다."
 
 #: config/samba/class_sambaPluginConfig.inc:61
 msgid "Expiration date synchronisaton"
-msgstr ""
+msgstr "만료 날짜 동기화"
 
 #: config/samba/class_sambaPluginConfig.inc:61
 msgid "Synchronisaton the expiration date with the POSIX one?"
-msgstr ""
+msgstr "만료 날짜를 POSIX 날짜와 동기화 하시겠습니까?"
 
 #: config/samba/class_sambaPluginConfig.inc:67
 msgid "Generate sambaLMPassword"
-msgstr ""
+msgstr "sambaLMPassword 생성"
 
 #: config/samba/class_sambaPluginConfig.inc:67
 msgid "Needed to be compliant with Windows <= 98 or Samba < 3.2"
-msgstr ""
+msgstr "Windows <= 98 또는 Samba <3.2 를 준수해야 합니다."
 
 #: config/samba/class_sambaPluginConfig.inc:71
 msgid "Activate primary group warning"
-msgstr ""
+msgstr "기본 그룹 경고 활성화"
 
 #: config/samba/class_sambaPluginConfig.inc:71
 msgid ""
 "Issue a warning if POSIX primary group cannot be converted to Samba primary "
 "group when activating the Samba tab of a user"
 msgstr ""
+"사용자의 Samba 탭을 활성화 할 때 POSIX 기본 그룹을 Samba 기본 그룹으로 변환 할 수 없는 경우 경고를 발생하십시오."
 
 #: personal/samba/class_sambaAccount.inc:31
 msgid "Samba Munged Dial"
-msgstr ""
+msgstr "삼바 Munged Dial"
 
 #: personal/samba/class_sambaAccount.inc:183
 msgid "Samba profile"
-msgstr ""
+msgstr "삼바 프로필"
 
 #: personal/samba/class_sambaAccount.inc:189
 #: personal/samba/class_sambaAccount.inc:222
 msgid "Home directory drive"
-msgstr ""
+msgstr "홈 디렉토리 드라이브"
 
 #: personal/samba/class_sambaAccount.inc:189
 #: personal/samba/class_sambaAccount.inc:222
 msgid "Letter for the home drive"
-msgstr ""
+msgstr "홈 드라이브 문자"
 
 #: personal/samba/class_sambaAccount.inc:194
 #: personal/samba/class_sambaAccount.inc:227
 msgid "Home directory path"
-msgstr ""
+msgstr "홈 디렉토리 경로"
 
 #: personal/samba/class_sambaAccount.inc:194
 #: personal/samba/class_sambaAccount.inc:227
 msgid "UNC path for the home drive"
-msgstr ""
+msgstr "홈 드라이브의 UNC 경로"
 
 #: personal/samba/class_sambaAccount.inc:203
 msgid "Script path"
-msgstr ""
+msgstr "스크립트 경로"
 
 #: personal/samba/class_sambaAccount.inc:203
 msgid "Login script path"
-msgstr ""
+msgstr "로그인 스크립트 경로"
 
 #: personal/samba/class_sambaAccount.inc:207
 #: personal/samba/class_sambaAccount.inc:232
 msgid "Profile path"
-msgstr ""
+msgstr "프로필 경로"
 
 #: personal/samba/class_sambaAccount.inc:207
 #: personal/samba/class_sambaAccount.inc:232
 msgid "UNC profile path"
-msgstr ""
+msgstr "UNC 프로파일 경로"
 
 #: personal/samba/class_sambaAccount.inc:214
 msgid "Terminal server"
@@ -389,83 +393,83 @@ msgstr "터미널 서버"
 
 #: personal/samba/class_sambaAccount.inc:218
 msgid "Allow login on terminal server"
-msgstr ""
+msgstr "터미널 서버에서 로그인 허용"
 
 #: personal/samba/class_sambaAccount.inc:237
 msgid "Inherit client config"
-msgstr ""
+msgstr "클라이언트 구성 상속"
 
 #: personal/samba/class_sambaAccount.inc:237
 msgid "Inherit client configuration"
-msgstr ""
+msgstr "클라이언트 구성 상속"
 
 #: personal/samba/class_sambaAccount.inc:241
 msgid "Initial progam"
-msgstr ""
+msgstr "초기화 프로그램"
 
 #: personal/samba/class_sambaAccount.inc:241
 msgid "Program to start after connecting"
-msgstr ""
+msgstr "연결 후 시작되는 프로그램"
 
 #: personal/samba/class_sambaAccount.inc:245
 msgid "Working directory"
-msgstr ""
+msgstr "작업 디렉토리"
 
 #: personal/samba/class_sambaAccount.inc:245
 msgid "Basic working directory"
-msgstr ""
+msgstr "기본 작업 디렉토리"
 
 #: personal/samba/class_sambaAccount.inc:249
 msgid "Connection timeout"
-msgstr ""
+msgstr "접속 시간 초과"
 
 #: personal/samba/class_sambaAccount.inc:249
 msgid "Timeout when connecting to terminal server"
-msgstr ""
+msgstr "터미널 서버에 연결할 때 시간 초과"
 
 #: personal/samba/class_sambaAccount.inc:254
 msgid "Disconnection timeout"
-msgstr ""
+msgstr "연결 끊기 시간 초과"
 
 #: personal/samba/class_sambaAccount.inc:254
 msgid "Timeout before disconnecting from terminal server"
-msgstr ""
+msgstr "터미널 서버에서 연결을 끊기 전 시간 초과"
 
 #: personal/samba/class_sambaAccount.inc:259
 msgid "Idle timeout"
-msgstr ""
+msgstr "유휴 시간 초과"
 
 #: personal/samba/class_sambaAccount.inc:259
 msgid "Idle timeout before disconnecting from terminal server"
-msgstr ""
+msgstr "터미널 서버에서 연결을 끊기 전에 유휴 시간 초과"
 
 #: personal/samba/class_sambaAccount.inc:264
 msgid "Connect client drives at logon"
-msgstr ""
+msgstr "로그온시 클라이언트 드라이브 연결"
 
 #: personal/samba/class_sambaAccount.inc:264
 msgid "Drive to connect after login"
-msgstr ""
+msgstr "로그인 후 연결할 드라이브"
 
 #: personal/samba/class_sambaAccount.inc:268
 msgid "Connect client printers at logon"
-msgstr ""
+msgstr "로그온 시 클라이언트 프린터 연결"
 
 #: personal/samba/class_sambaAccount.inc:268
 msgid "Printers to connect after login"
-msgstr ""
+msgstr "로그인 후 연결할 프린터"
 
 #: personal/samba/class_sambaAccount.inc:272
 msgid "Default to main client printer"
-msgstr ""
+msgstr "기본 클라이언트 프린터로 기본 설정"
 
 #: personal/samba/class_sambaAccount.inc:272
 msgid "Default printer for this client"
-msgstr ""
+msgstr "이 클라이언트의 기본 프린터"
 
 #: personal/samba/class_sambaAccount.inc:276
 msgid "Shadowing"
-msgstr ""
+msgstr "쉐도"
 
 #: personal/samba/class_sambaAccount.inc:279
 msgid "disabled"
@@ -473,111 +477,111 @@ msgstr "미사용"
 
 #: personal/samba/class_sambaAccount.inc:279
 msgid "input on, notify on"
-msgstr ""
+msgstr "입력, 알림"
 
 #: personal/samba/class_sambaAccount.inc:279
 msgid "input on, notify off"
-msgstr ""
+msgstr "입력, 알림 끄기"
 
 #: personal/samba/class_sambaAccount.inc:280
 msgid "input off, notify on"
-msgstr ""
+msgstr "입력 해제, 알림"
 
 #: personal/samba/class_sambaAccount.inc:280
 msgid "input off, nofify off"
-msgstr ""
+msgstr "입력 해제, 알림 해제"
 
 #: personal/samba/class_sambaAccount.inc:283
 msgid "On broken or timed out"
-msgstr ""
+msgstr "고장 또는 시간 초과"
 
 #: personal/samba/class_sambaAccount.inc:283
 msgid "What happen if disconnected or timeout"
-msgstr ""
+msgstr "연결이 끊어지거나 시간이 초과되면 어떻게 됩니까?"
 
 #: personal/samba/class_sambaAccount.inc:286
 msgid "disconnect"
-msgstr ""
+msgstr "연결 끊김"
 
 #: personal/samba/class_sambaAccount.inc:286
 msgid "reset"
-msgstr ""
+msgstr "초기화"
 
 #: personal/samba/class_sambaAccount.inc:289
 msgid "Reconnect if disconnected"
-msgstr ""
+msgstr "연결이 끊긴 경우 다시 연결"
 
 #: personal/samba/class_sambaAccount.inc:292
 msgid "from any client"
-msgstr ""
+msgstr "모든 클라이언트에서"
 
 #: personal/samba/class_sambaAccount.inc:292
 msgid "from previous client only"
-msgstr ""
+msgstr "이전 클라이언트에서만"
 
 #: personal/samba/class_sambaAccount.inc:304
 msgid "Access options"
-msgstr ""
+msgstr "액세스 옵션"
 
 #: personal/samba/class_sambaAccount.inc:308
 msgid "Enforce password change"
-msgstr ""
+msgstr "비밀번호 변경 시행"
 
 #: personal/samba/class_sambaAccount.inc:308
 msgid "Force the user to change his password"
-msgstr ""
+msgstr "사용자가 비밀번호를 변경하도록 강제"
 
 #: personal/samba/class_sambaAccount.inc:313
 msgid "The password never expire"
-msgstr ""
+msgstr "비밀번호가 만료되지 않습니다"
 
 #: personal/samba/class_sambaAccount.inc:313
 msgid "The password will never expire"
-msgstr ""
+msgstr "비밀번호는 만료되지 않습니다"
 
 #: personal/samba/class_sambaAccount.inc:318
 msgid "Login from windows client requires no password"
-msgstr ""
+msgstr "Windows 클라이언트에서 로그인 할 때 비밀번호가 필요하지 않습니다"
 
 #: personal/samba/class_sambaAccount.inc:318
 msgid "Login from a client without a password"
-msgstr ""
+msgstr "비밀번호없이 클라이언트에서 로그인"
 
 #: personal/samba/class_sambaAccount.inc:323
 msgid "Lock samba account"
-msgstr ""
+msgstr "삼바 계정 잠금"
 
 #: personal/samba/class_sambaAccount.inc:323
 msgid "Lock the account"
-msgstr ""
+msgstr "계정 잠금"
 
 #: personal/samba/class_sambaAccount.inc:328
 msgid "Cannot change password"
-msgstr ""
+msgstr "비밀번호를 변경할 수 없습니다"
 
 #: personal/samba/class_sambaAccount.inc:328
 msgid "Not allowed to change password"
-msgstr ""
+msgstr "비밀번호를 변경할 수 없습니다"
 
 #: personal/samba/class_sambaAccount.inc:332
 msgid "Account expiration"
-msgstr ""
+msgstr "계정 만료"
 
 #: personal/samba/class_sambaAccount.inc:332
 msgid "When does the account expire"
-msgstr ""
+msgstr "계정은 언제 만료됩니까"
 
 #: personal/samba/class_sambaAccount.inc:340
 msgid "Samba logon times"
-msgstr ""
+msgstr "삼바 로그온 횟수"
 
 #: personal/samba/class_sambaAccount.inc:340
 msgid "What is the allowed time to connect"
-msgstr ""
+msgstr "연결이 허용되는 시간은 얼마입니까"
 
 #: personal/samba/class_sambaAccount.inc:341
 msgid "Edit settings"
-msgstr ""
+msgstr "설정 편집"
 
 #: personal/samba/class_sambaAccount.inc:357
 msgid "System trust"
@@ -585,7 +589,7 @@ msgstr "시스템 신뢰"
 
 #: personal/samba/class_sambaAccount.inc:363
 msgid "Allow connection from these workstations only"
-msgstr ""
+msgstr "이 워크스테이션에서만 연결 허용"
 
 #: personal/samba/class_sambaAccount.inc:363
 msgid "Only allow this user to connect to this list of hosts"
@@ -595,26 +599,26 @@ msgstr " 호스트 리스트에 만 접속 허용"
 #: personal/samba/class_sambaAccount.inc:486
 #, php-format
 msgid "Field \"%s\" is required when \"%s\" is filled! Fill both field or empty them."
-msgstr ""
+msgstr "\"%s\"가 채워지면 \"%s\" 필드가 필요합니다! 필드를 모두 채우거나 비웁니다."
 
 #: personal/samba/class_sambaAccount.inc:494
 msgid "The windows user manager allows eight clients at maximum!"
-msgstr ""
+msgstr "Windows 사용자 관리자는 최대 8명의 클라이언트를 허용합니다!"
 
 #: personal/samba/class_sambaAccount.inc:543
 msgid ""
 "Cannot convert primary group to samba group: group cannot be identified!"
-msgstr ""
+msgstr "기본 그룹을 삼바 그룹으로 변환 할 수 없습니다: 그룹을 식별 할 수 없습니다!"
 
 #: personal/samba/class_sambaAccount.inc:564
 msgid ""
 "Cannot convert primary group to samba group: group samba tab is disabled!"
-msgstr ""
+msgstr "기본 그룹을 삼바 그룹으로 변환 할 수 없습니다: 그룹 삼바 탭이 비활성화되었습니다!"
 
 #: personal/samba/sambaLogonHours.tpl.c:2
 msgid "Specify the hours this user is allowed to log in"
-msgstr ""
+msgstr "이 사용자가 로그인 할 수있는 시간을 지정하십시오."
 
 #: personal/samba/sambaLogonHours.tpl.c:5
 msgid "Hour"
-msgstr ""
+msgstr "시간"
diff --git a/samba/locale/lv/fusiondirectory.po b/samba/locale/lv/fusiondirectory.po
index a433b1eb8d660653885df666aec63c02a3bd0849..740496d03bde0fccbbb22f88298af7796bcf99e7 100644
--- a/samba/locale/lv/fusiondirectory.po
+++ b/samba/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/samba/locale/nb/fusiondirectory.po b/samba/locale/nb/fusiondirectory.po
index 5129391ff0f1aaafd01b52950a8e4675f72cb38e..9cec031a4209a4830480a74b0510b75bbdc3adc1 100644
--- a/samba/locale/nb/fusiondirectory.po
+++ b/samba/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/samba/locale/nl/fusiondirectory.po b/samba/locale/nl/fusiondirectory.po
index c3520d9584647be02952d0290277970264688827..9d8551fdde0456a5a686ae2d8a00534a9f86dfcf 100644
--- a/samba/locale/nl/fusiondirectory.po
+++ b/samba/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/samba/locale/pl/fusiondirectory.po b/samba/locale/pl/fusiondirectory.po
index afdaea5eba315a130599c408f93365e536f253d6..da8603bccadd5c2f562eab5776b3b455a9774f76 100644
--- a/samba/locale/pl/fusiondirectory.po
+++ b/samba/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/samba/locale/pt/fusiondirectory.po b/samba/locale/pt/fusiondirectory.po
index e8185bce6d33ec90561f194b3aac6f83ab2cf2f8..c486455a0aa8693aeb591a2147f6ea1169824969 100644
--- a/samba/locale/pt/fusiondirectory.po
+++ b/samba/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: include/class_smbHash.inc:369
 msgid ""
diff --git a/samba/locale/pt_BR/fusiondirectory.po b/samba/locale/pt_BR/fusiondirectory.po
index 07a5a61ab93d0ba99471d4da487173131b5fe62c..f4cbe7a8eab1e771756e57da025637d6ffe7b46c 100644
--- a/samba/locale/pt_BR/fusiondirectory.po
+++ b/samba/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: include/class_smbHash.inc:369
 msgid ""
diff --git a/samba/locale/ru/fusiondirectory.po b/samba/locale/ru/fusiondirectory.po
index d745d4cc1208e3220855b221ec3f961c145faa2e..c3bd68d71f5d25448038271e9cdd3d1469764fdd 100644
--- a/samba/locale/ru/fusiondirectory.po
+++ b/samba/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/samba/locale/ru@petr1708/fusiondirectory.po b/samba/locale/ru@petr1708/fusiondirectory.po
index 0e1e9fa11d12f7c97f6bb7a8b181e28e9608b1b6..215c9f6205bccb286a12f51250cbc5adc2fc64f7 100644
--- a/samba/locale/ru@petr1708/fusiondirectory.po
+++ b/samba/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/samba/locale/sv/fusiondirectory.po b/samba/locale/sv/fusiondirectory.po
index 5d6ece7a133ac9fbb62299bfbf27b694c2956f18..0883244f3750d1868f5cf08d9fbc06fbc2785824 100644
--- a/samba/locale/sv/fusiondirectory.po
+++ b/samba/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/samba/locale/tr_TR/fusiondirectory.po b/samba/locale/tr_TR/fusiondirectory.po
index 781bab2035aa459273bc2cdfc615f7cda72ef8a5..564ecbe6d900e92f3fdedd6e06ce0e3ecdca8e6d 100644
--- a/samba/locale/tr_TR/fusiondirectory.po
+++ b/samba/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2021
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2021\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -248,7 +252,7 @@ msgstr ""
 #: personal/samba/class_sambaAccount.inc:542
 #: personal/samba/class_sambaAccount.inc:563
 msgid "Warning"
-msgstr ""
+msgstr "İkaz"
 
 #: admin/groups/samba/class_sambaGroup.inc:137
 #: personal/samba/class_sambaAccount.inc:516
diff --git a/samba/locale/ug/fusiondirectory.po b/samba/locale/ug/fusiondirectory.po
index 4f9118d7528db4c14a75bcebb4ecb83f058aaf7c..6a030e699b289625aab5efa8796ad81a9137cda8 100644
--- a/samba/locale/ug/fusiondirectory.po
+++ b/samba/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: include/class_smbHash.inc:369
 msgid ""
diff --git a/samba/locale/vi_VN/fusiondirectory.po b/samba/locale/vi_VN/fusiondirectory.po
index 655f7f99da4c3202fefa4cbf66dba88bb3b9e5b5..7b0986dba6e6a4f735f0687a81f65800465548fe 100644
--- a/samba/locale/vi_VN/fusiondirectory.po
+++ b/samba/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/samba/locale/zh/fusiondirectory.po b/samba/locale/zh/fusiondirectory.po
index 702bf85f90094c2c234090e6879c1446b6d9683a..ed9f48b269180cb239266bcbbd4b9a2f125b066f 100644
--- a/samba/locale/zh/fusiondirectory.po
+++ b/samba/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/samba/locale/zh_TW/fusiondirectory.po b/samba/locale/zh_TW/fusiondirectory.po
index c262dea8abb7b3dce0a008796d4f70536497aa65..28947f63d021024afff0a2fb7f8831aea96d25b1 100644
--- a/samba/locale/zh_TW/fusiondirectory.po
+++ b/samba/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:19+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/samba/personal/samba/class_sambaAccount.inc b/samba/personal/samba/class_sambaAccount.inc
index 32c50c2360a35e8491b57d3021469d19fb8da5c3..d95feb07daf3b73b52ac282d20877f71678a3c2e 100644
--- a/samba/personal/samba/class_sambaAccount.inc
+++ b/samba/personal/samba/class_sambaAccount.inc
@@ -44,7 +44,7 @@ class MungedAttribute extends Attribute
     }
   }
 
-  function setParent(&$plugin)
+  function setParent (&$plugin)
   {
     $this->plugin = $plugin;
     if (is_object($this->plugin)) {
@@ -61,7 +61,7 @@ class MungedAttribute extends Attribute
     }
   }
 
-  function setValue($value)
+  function setValue ($value)
   {
     if (!empty($value)) {
       $this->mungedObject->load($value);
@@ -79,7 +79,7 @@ class MungedAttribute extends Attribute
     }
   }
 
-  function getValue()
+  function getValue ()
   {
     if (is_object($this->plugin)) {
       foreach ($this->attrList as $attr) {
@@ -93,7 +93,7 @@ class MungedAttribute extends Attribute
     return $this->mungedObject->getMunged();
   }
 
-  function getAttrList()
+  function getAttrList ()
   {
     return array_merge($this->attrList, $this->flagList);
   }
@@ -101,7 +101,7 @@ class MungedAttribute extends Attribute
 
 class SambaFlagsAttribute extends FlagsAttribute
 {
-  function getValue()
+  function getValue ()
   {
     $value = '[U';
     if (is_object($this->plugin)) {
@@ -137,40 +137,40 @@ class WinstationSelectDialog extends GenericSelectDialog
 
 class winstationSelect extends simpleSelectManagement
 {
-  protected $objectTypes = array(
+  protected $objectTypes = [
     'winstation'
-  );
-  protected $autoFilterAttributes = array('dn', 'cn', 'uid', 'description');
+  ];
+  protected $autoFilterAttributes = ['dn', 'cn', 'uid', 'description'];
 }
 
 class sambaAccount extends simplePlugin
 {
-  var $objectclasses = array('sambaSamAccount');
+  var $objectclasses = ['sambaSamAccount'];
 
   var $displayHeader = TRUE;
 
   var $SID      = "";
   var $ridBase  = 0;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Samba'),
       'plDescription'   => _('Samba settings'),
       'plIcon'          => 'geticon.php?context=applications&icon=samba&size=48',
       'plSmallIcon'     => 'geticon.php?context=applications&icon=samba&size=16',
       'plSelfModify'    => TRUE,
-      'plDepends'       => array('posixAccount'),
+      'plDepends'       => ['posixAccount'],
       'plPriority'      => 5,
-      'plObjectType'    => array('user'),
+      'plObjectType'    => ['user'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    static $letters = array();
+    static $letters = [];
     if (empty($letters)) {
       $letters[] = '';
       for ($i = 68; $i < 91; $i++) {
@@ -178,165 +178,165 @@ class sambaAccount extends simplePlugin
       }
     }
     static $sambaRegEx = '/^\\\\\\\\([a-z0-9%_.:$+-\\\\]+\\\\?)+$/i';
-    return array(
-      'generic' => array(
+    return [
+      'generic' => [
         'name'  => _('Samba profile'),
         'icon'  => 'geticon.php?context=applications&icon=samba&size=16',
-        'attrs' => array(
-          new HiddenAttribute ('sambaSID'),
-          new HiddenAttribute ('sambaPrimaryGroupSID'),
-          new SelectAttribute (
+        'attrs' => [
+          new HiddenAttribute('sambaSID'),
+          new HiddenAttribute('sambaPrimaryGroupSID'),
+          new SelectAttribute(
             _('Home directory drive'), _('Letter for the home drive'),
             'sambaHomeDrive', FALSE,
             $letters
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Home directory path'), _('UNC path for the home drive'),
             'sambaHomePath', FALSE, '', '',
             $sambaRegEx
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Domain'), _('Samba domain name'),
             'sambaDomainName', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Script path'), _('Login script path'),
             'sambaLogonScript'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Profile path'), _('UNC profile path'),
             'sambaProfilePath', FALSE, '', '',
             $sambaRegEx
           ),
-        )
-      ),
-      'terminal' => array(
+        ]
+      ],
+      'terminal' => [
         'name'  => _('Terminal server'),
         'icon'  => 'geticon.php?context=devices&icon=terminal&size=16',
-        'attrs' => array(
-          new BooleanAttribute (
+        'attrs' => [
+          new BooleanAttribute(
             _('Allow login on terminal server'), _('Allow login on terminal server'),
             'TsLogin', FALSE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Home directory drive'), _('Letter for the home drive'),
             'CtxWFHomeDirDrive', FALSE,
             $letters
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Home directory path'), _('UNC path for the home drive'),
             'CtxWFHomeDir', FALSE, '', '',
             $sambaRegEx
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Profile path'), _('UNC profile path'),
             'CtxWFProfilePath', FALSE, '', '',
             $sambaRegEx
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Inherit client config'), _('Inherit client configuration'),
             'InheritMode', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Initial progam'), _('Program to start after connecting'),
             'CtxInitialProgram'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Working directory'), _('Basic working directory'),
             'CtxWorkDirectory'
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Connection timeout'), _('Timeout when connecting to terminal server'),
             'CtxMaxConnectionTime', FALSE,
             0, FALSE
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Disconnection timeout'), _('Timeout before disconnecting from terminal server'),
             'CtxMaxDisconnectionTime', FALSE,
             0, FALSE
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Idle timeout'), _('Idle timeout before disconnecting from terminal server'),
             'CtxMaxIdleTime', FALSE,
             0, FALSE
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Connect client drives at logon'), _('Drive to connect after login'),
             'ConnectClientDrives', FALSE
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Connect client printers at logon'), _('Printers to connect after login'),
             'ConnectClientPrinters', FALSE
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Default to main client printer'), _('Default printer for this client'),
             'DefaultPrinter', FALSE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Shadowing'), _('Shadowing'),
             'Shadow', TRUE,
-            array(0,1,2,3,4), 0,
-            array(_('disabled'), _('input on, notify on'), _('input on, notify off'),
-                  _('input off, notify on'), _('input off, nofify off'))
+            [0,1,2,3,4], 0,
+            [_('disabled'), _('input on, notify on'), _('input on, notify off'),
+                  _('input off, notify on'), _('input off, nofify off')]
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('On broken or timed out'), _('What happen if disconnected or timeout'),
             'BrokenConn', TRUE,
-            array(0,1), 0,
-            array(_('disconnect'), _('reset'))
+            [0,1], 0,
+            [_('disconnect'), _('reset')]
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Reconnect if disconnected'), _('Reconnect if disconnected'),
             'ReConn', TRUE,
-            array(0,1), 0,
-            array(_('from any client'), _('from previous client only'))
+            [0,1], 0,
+            [_('from any client'), _('from previous client only')]
           ),
-          new MungedAttribute (
+          new MungedAttribute(
             'sambaMungedDial',
-            array(
+            [
               'ConnectClientDrives','ConnectClientPrinters','DefaultPrinter',
               'Shadow','ReConn','BrokenConn','TsLogin','InheritMode'
-            )
+            ]
           )
-        )
-      ),
-      'access' => array(
+        ]
+      ],
+      'access' => [
         'name'  => _('Access options'),
         'icon'  => 'geticon.php?context=status&icon=dialog-password&size=16',
-        'attrs' => array(
-          new BooleanAttribute (
+        'attrs' => [
+          new BooleanAttribute(
             _('Enforce password change'), _('Force the user to change his password'),
             'sambaPwdLastSet', FALSE, FALSE, '',
             '0', ''
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('The password never expire'), _('The password will never expire'),
             'flag_pwdExpire', FALSE, FALSE, '',
             'X', ''
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Login from windows client requires no password'), _('Login from a client without a password'),
             'flag_noPwdRequired', FALSE, FALSE, '',
             'N', ''
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Lock samba account'), _('Lock the account'),
             'flag_lockSamba', FALSE, FALSE, '',
             '[LD]', ''
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Cannot change password'), _('Not allowed to change password'),
             'fd_pwdCantChange'
           ),
-          new DateAttribute (
+          new DateAttribute(
             _('Account expiration'), _('When does the account expire'),
             'sambaKickoffTime', FALSE, 'U', ''
           ),
-          new SambaFlagsAttribute (
+          new SambaFlagsAttribute(
             'sambaAcctFlags',
-            array('flag_pwdExpire','flag_noPwdRequired','flag_lockSamba')
+            ['flag_pwdExpire','flag_noPwdRequired','flag_lockSamba']
           ),
-          new DialogButtonAttribute (
+          new DialogButtonAttribute(
             _('Samba logon times'), _('What is the allowed time to connect'),
             'sambaLogonHours', _('Edit settings'), 'SambaLogonHoursDialog'
           ),
@@ -351,12 +351,12 @@ class sambaAccount extends simplePlugin
           new HiddenAttribute('sambaBadPasswordCount'),
           new HiddenAttribute('sambaNTPassword'),
           new HiddenAttribute('sambaLMPassword'),
-        )
-      ),
-      'system_trust' => array(
+        ]
+      ],
+      'system_trust' => [
         'name'  => _('System trust'),
         'icon'  => 'geticon.php?context=categories&icon=acl&size=16',
-        'attrs' => array(
+        'attrs' => [
           new CommaListAttribute(
             'sambaUserWorkstations',
             new WinstationsAttribute(
@@ -364,9 +364,9 @@ class sambaAccount extends simplePlugin
               'sambaUserWorkstations_ta', FALSE
             )
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $baseobject = NULL, $parent = NULL, $mainTab = FALSE)
@@ -383,36 +383,36 @@ class sambaAccount extends simplePlugin
 
     $this->attributesAccess['sambaDomainName']->setChoices(array_keys($config->data['SERVERS']['SAMBA']));
     $this->attributesAccess['TsLogin']->setManagedAttributes(
-      array(
-        'disable' => array (
-          FALSE => array (
+      [
+        'disable' => [
+          FALSE => [
             'CtxWFHomeDir', 'CtxWFHomeDirDrive', 'CtxWFProfilePath',
             'InheritMode', 'CtxInitialProgram', 'CtxWorkDirectory',
             'CtxMaxConnectionTime', 'CtxMaxDisconnectionTime',
             'CtxMaxIdleTime', 'ConnectClientDrives', 'ConnectClientPrinters',
             'DefaultPrinter', 'Shadow','ReConn','BrokenConn'
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
     $this->attributesAccess['InheritMode']->setManagedAttributes(
-      array(
-        'disable' => array (
-          TRUE => array (
+      [
+        'disable' => [
+          TRUE => [
             'CtxInitialProgram', 'CtxWorkDirectory',
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
     $this->attributesAccess['sambaHomeDrive']->setManagedAttributes(
-      array(
-        'erase' => array ('' => array ('sambaHomePath'))
-      )
+      [
+        'erase' => ['' => ['sambaHomePath']]
+      ]
     );
     $this->attributesAccess['sambaPwdLastSet']->setManagedAttributes(
-      array(
-        'disable' => array (TRUE => array ('fd_pwdCantChange'))
-      )
+      [
+        'disable' => [TRUE => ['fd_pwdCantChange']]
+      ]
     );
     $this->attributesAccess['fd_pwdCantChange']->setInLdap(FALSE);
     $value = (isset($this->attrs['sambaPwdLastSet']) && ($this->attrs['sambaPwdLastSet'][0] == '4294967295'));
@@ -421,10 +421,10 @@ class sambaAccount extends simplePlugin
 
     // Get samba domain and its sid/rid base
     if ($this->sambaSID != "") {
-      $this->SID = preg_replace ("/-[^-]+$/", "", $this->sambaSID);
+      $this->SID = preg_replace("/-[^-]+$/", "", $this->sambaSID);
       $ldap = $config->get_ldap_link();
       $ldap->cd($config->current['BASE']);
-      $ldap->search ("(&(objectClass=sambaDomain)(sambaSID=$this->SID))", array("sambaAlgorithmicRidBase","sambaDomainName"));
+      $ldap->search("(&(objectClass=sambaDomain)(sambaSID=$this->SID))", ["sambaAlgorithmicRidBase","sambaDomainName"]);
       if ($ldap->count() != 0) {
         $attrs = $ldap->fetch();
         if (isset($attrs['sambaAlgorithmicRidBase'])) {
@@ -459,7 +459,7 @@ class sambaAccount extends simplePlugin
     $this->prepareSavedAttributes();
   }
 
-  function resetCopyInfos()
+  function resetCopyInfos ()
   {
     parent::resetCopyInfos();
 
@@ -469,7 +469,7 @@ class sambaAccount extends simplePlugin
 
 
   /* Check for input problems */
-  function check()
+  function check ()
   {
     $messages = parent::check();
 
@@ -497,7 +497,7 @@ class sambaAccount extends simplePlugin
     return $messages;
   }
 
-  function prepare_save()
+  function prepare_save ()
   {
     global $config;
 
@@ -526,7 +526,7 @@ class sambaAccount extends simplePlugin
       do {
         $sid = $this->SID."-".($uidNumber_tmp * 2 + $this->ridBase);
         $ldap->cd($config->current['BASE']);
-        $ldap->search("(sambaSID=$sid)", array("sambaSID"));
+        $ldap->search("(sambaSID=$sid)", ["sambaSID"]);
         $uidNumber_tmp++;
       } while ($ldap->count() > 0);
       $this->attrs['sambaSID'] = $sid;
@@ -536,7 +536,7 @@ class sambaAccount extends simplePlugin
       $ldap = $config->get_ldap_link();
       // Check for users primary group
       $ldap->cd($config->current['BASE']);
-      $ldap->search("(&(objectClass=posixGroup)(gidNumber=".$gidNumber."))", array("cn"));
+      $ldap->search("(&(objectClass=posixGroup)(gidNumber=".$gidNumber."))", ["cn"]);
       if ($ldap->count() != 1) {
         msg_dialog::display(
           _("Warning"),
@@ -573,7 +573,7 @@ class sambaAccount extends simplePlugin
     if (!$this->attributesAccess['sambaPwdLastSet']->hasChanged() && !$this->attributesAccess['fd_pwdCantChange']->hasChanged()) {
       unset($this->attrs['sambaPwdLastSet']);
     } elseif (!$this->sambaPwdLastSet) {
-      $this->attrs['sambaPwdLastSet'] = ($this->fd_pwdCantChange ? array('4294967295') : '');
+      $this->attrs['sambaPwdLastSet'] = ($this->fd_pwdCantChange ? ['4294967295'] : '');
     }
 
     if ($this->parent->getBaseObject()->attributesAccess['userPassword']->hasChanged()) {
@@ -582,7 +582,7 @@ class sambaAccount extends simplePlugin
       if ($config->get_cfg_value('sambaGenLMPassword', 'FALSE') == 'TRUE') {
         $this->attrs['sambaLMPassword'] = $smbHash->lmhash($password);
       } else {
-        $this->attrs['sambaLMPassword'] = array();
+        $this->attrs['sambaLMPassword'] = [];
       }
       $this->attrs['sambaNTPassword'] = $smbHash->nthash($password);
       $this->attrs['sambaPwdLastSet'] = date('U');
@@ -604,24 +604,24 @@ class sambaAccount extends simplePlugin
           $this->attrs['sambaKickoffTime'] = $this->parent->by_object['posixAccount']->attributesAccess['shadowExpire']->getDateValue()->format('U');
         } catch (Exception $e) {
           // shadowExpire is an invalid date, most likely because we’re a template and it uses patterns
-          $this->attrs['sambaKickoffTime'] = array();
+          $this->attrs['sambaKickoffTime'] = [];
         }
       } else {
-        $this->attrs['sambaKickoffTime'] = array();
+        $this->attrs['sambaKickoffTime'] = [];
       }
     }
 
     return $errors;
   }
 
-  function adapt_from_template($attrs, $skip = array())
+  function adapt_from_template ($attrs, $skip = [])
   {
     parent::adapt_from_template($attrs, $skip);
 
     $this->sambaSID = "";
   }
 
-  function callHook($cmd, array $addAttrs = array(), &$returnOutput = array(), &$returnCode = NULL)
+  function callHook ($cmd, array $addAttrs = [], &$returnOutput = [], &$returnCode = NULL)
   {
     $addAttrs['passwordMethod'] = $this->parent->getBaseObject()->attributesAccess['userPassword']->getMethod();
     $addAttrs['userLocked']     = $this->parent->getBaseObject()->attributesAccess['userPassword']->isLocked();
@@ -630,7 +630,7 @@ class sambaAccount extends simplePlugin
   }
 
   /* Returns TRUE if this attribute should be asked in the creation by template dialog */
-  function showInTemplate($attr, $templateAttrs)
+  function showInTemplate ($attr, $templateAttrs)
   {
     if (in_array($attr, $this->attributesAccess['sambaMungedDial']->getAttrList())) {
       return FALSE;
diff --git a/samba/personal/samba/class_sambaLogonHours.inc b/samba/personal/samba/class_sambaLogonHours.inc
index e824127d1b33f6ec108b95ec5347c4ae7c8563fa..8126ae2414aaa42c1c4c1b7494b020ef28e25dfb 100644
--- a/samba/personal/samba/class_sambaLogonHours.inc
+++ b/samba/personal/samba/class_sambaLogonHours.inc
@@ -22,7 +22,7 @@
 class sambaLogonHours
 {
   var $sambaLogonHours = "";
-  var $Matrix          = array();
+  var $Matrix          = [];
   var $timezone        = 0;
   var $acl;
 
@@ -64,7 +64,7 @@ class sambaLogonHours
     }
 
     /* Create matrix */
-    $this->Matrix = array();
+    $this->Matrix = [];
     for ($day = 0; $day < 7; $day++) {
       for ($hour  = 0; $hour < 24; $hour++) {
         $bitpos  = ($day * 24 + $hour) % 168;
@@ -73,14 +73,14 @@ class sambaLogonHours
     }
   }
 
-  function execute()
+  function execute ()
   {
     $week_days = msgPool::weekdays();
 
     $smarty = get_smarty();
     $smarty->assign("acl", preg_match("/w/i", $this->acl));
 
-    $hours = array();
+    $hours = [];
     for ($i = 0; $i < 24; $i++) {
       $hours[$i] = $i;
     }
@@ -91,7 +91,7 @@ class sambaLogonHours
     return $smarty->fetch(get_template_path("sambaLogonHours.tpl", TRUE, dirname(__FILE__)));
   }
 
-  function save_object()
+  function save_object ()
   {
     /* Check if dialog was opened and if there were any changes */
     if (isset($_POST['sambaLogonHoursPosted'])) {
@@ -107,7 +107,7 @@ class sambaLogonHours
     }
   }
 
-  function save()
+  function save ()
   {
     /* Convert Matrix to Hex */
     $slh = "";
diff --git a/samba/personal/samba/class_sambaMungedDial.inc b/samba/personal/samba/class_sambaMungedDial.inc
index a5a1c81ac443c9ad698a2b8c13c0fffd9891c3d2..13848af896bc22bb25e98443b492dd261134a427 100644
--- a/samba/personal/samba/class_sambaMungedDial.inc
+++ b/samba/personal/samba/class_sambaMungedDial.inc
@@ -21,7 +21,7 @@
 */
 
 /* File header is treated as constant. It cannot be defined inside the class if $PHP_VERSION < 5 */
-define ("FILEHEADER",
+define("FILEHEADER",
         "20002000200020002000200020002000".
         "20002000200020002000200020002000".
         "20002000200020002000200020002000".
@@ -30,7 +30,7 @@ define ("FILEHEADER",
         "20002000200020002000200020002000".
         "5000");
 /* This is the old header, it is needed to automatically convert old mungedDials to new ones */
-define ("FILEHEADER_OLD",
+define("FILEHEADER_OLD",
         "6d000800200020002000200020002000".
         "20002000200020002000200020002000".
         "20002000200020002000200064000100".
@@ -42,7 +42,7 @@ define ("FILEHEADER_OLD",
 class sambaMungedDial
 {
   /* Terminal server variables (samba3) */
-  var $ctx = array(
+  var $ctx = [
     'CtxCfgPresent'           => '551e0bb0',
     'CtxCfgFlags1'            => '00e00010',
     'CtxCallback'             => '',
@@ -59,27 +59,27 @@ class sambaMungedDial
     'CtxWFProfilePath'        => '',
     'CtxInitialProgram'       => '',
     'CtxCallbackNumber'       => ''
-  );
+  ];
 
   /* attribute list for save action */
-  var $ctxattributes = array("CtxCfgPresent", "CtxCfgFlags1", "CtxCallback",
+  var $ctxattributes = ["CtxCfgPresent", "CtxCfgFlags1", "CtxCallback",
         "CtxShadow", "CtxMaxConnectionTime", "CtxMaxDisconnectionTime",
         "CtxMaxIdleTime", "CtxKeyboardLayout", "CtxMinEncryptionLevel",
         "CtxWorkDirectory", "CtxNWLogonServer", "CtxWFHomeDir",
         "CtxWFHomeDirDrive", "CtxWFProfilePath", "CtxInitialProgram",
-        "CtxCallbackNumber");
+        "CtxCallbackNumber"];
 
   /* These parameters are treated as strings and get a trailing zero */
-  var $stringParams = array( "CtxWorkDirectory", "CtxNWLogonServer",
+  var $stringParams = [ "CtxWorkDirectory", "CtxNWLogonServer",
       "CtxWFHomeDir", "CtxWFHomeDirDrive",
-      "CtxWFProfilePath", "CtxInitialProgram", "CtxCallbackNumber");
+      "CtxWFProfilePath", "CtxInitialProgram", "CtxCallbackNumber"];
 
   /* These parameters are treated as time values and get converted */
-  var $timeParams = array("CtxMaxConnectionTime", "CtxMaxDisconnectionTime", "CtxMaxIdleTime");
+  var $timeParams = ["CtxMaxConnectionTime", "CtxMaxDisconnectionTime", "CtxMaxIdleTime"];
 
   var $old_behavior = FALSE;
 
-  function strhex($string)
+  function strhex ($string)
   {
     $hex = "";
 
@@ -90,7 +90,7 @@ class sambaMungedDial
     return $hex;
   }
 
-  function hexstr($hex)
+  function hexstr ($hex)
   {
     $string = "";
 
@@ -101,7 +101,7 @@ class sambaMungedDial
     return $string;
   }
 
-  function endian($src)
+  function endian ($src)
   {
     return substr($src, 2, 2).substr($src, 0, 2);
   }
@@ -124,7 +124,7 @@ class sambaMungedDial
     return (int)($usecs / (60 * 1000));
   }
 
-  function to8bit($string)
+  function to8bit ($string)
   {
     $result = "";
 
@@ -138,7 +138,7 @@ class sambaMungedDial
     return $result;
   }
 
-  function is_samba_path($path)
+  function is_samba_path ($path)
   {
     if ($path == "") {
       return TRUE;
@@ -148,7 +148,7 @@ class sambaMungedDial
       return FALSE;
     }
 
-    return preg_match ("/\\\\.+$/", $path);
+    return preg_match("/\\\\.+$/", $path);
   }
 
   /* Encode full MungedDial-String */
@@ -188,7 +188,7 @@ class sambaMungedDial
   }
 
   /* Setup parameter given by paramName to MungedDial-Format */
-  function munge($paramName, $paramValue, $isString)
+  function munge ($paramName, $paramValue, $isString)
   {
     $result = "";
 
@@ -226,9 +226,9 @@ class sambaMungedDial
   }
 
   /* Takes a base64-encoded MungedDial-String and returns an array of included parameters and values */
-  function decode_munged($munge)
+  function decode_munged ($munge)
   {
-    $result = array(
+    $result = [
       'CtxCfgPresent'           => '551e0bb0',
       'CtxCfgFlags1'            => '00e00010',
       'CtxCallback'             => '',
@@ -245,7 +245,7 @@ class sambaMungedDial
       'CtxWFProfilePath'        => '',
       'CtxInitialProgram'       => '',
       'CtxCallbackNumber'       => ''
-    );
+    ];
 
     /*
      * Remove base64 encoding and skip FILEHEADER.
@@ -320,7 +320,7 @@ class sambaMungedDial
   /* Returns array of flags, which can be set on-demand with activated java-script */
   function getOnDemandFlags ()
   {
-    $result = array();
+    $result = [];
     foreach ($this->timeParams as $value) {
       if (!isset($this->ctx[$value]) || (isset($this->ctx[$value]) && $this->ctx[$value] == 0)) {
         $result[$value."Mode"] = "disabled";
@@ -517,7 +517,7 @@ class sambaMungedDial
   function setCtxMaxConnectionTimeF ($checked)
   {
     if ($checked) {
-      unset ($this->ctx['CtxMaxConnectionTime']);
+      unset($this->ctx['CtxMaxConnectionTime']);
     }
   }
 
@@ -532,7 +532,7 @@ class sambaMungedDial
   function setCtxMaxDisconnectionTimeF ($checked)
   {
     if ($checked) {
-      unset ($this->ctx['CtxMaxDisconnectionTime']);
+      unset($this->ctx['CtxMaxDisconnectionTime']);
     }
   }
 
@@ -547,7 +547,7 @@ class sambaMungedDial
   function setCtxMaxIdleTimeF ($checked)
   {
     if ($checked) {
-      unset ($this->ctx['CtxMaxIdleTime']);
+      unset($this->ctx['CtxMaxIdleTime']);
     }
   }
 }
diff --git a/sinaps/config/sinaps/class_sinapsConfig.inc b/sinaps/config/sinaps/class_sinapsConfig.inc
index 8dd2a5f1b08383ed870ec0b76cf9e9488941a9f6..c795c0e87deef7ed521d1ab750ca5fedffe7a4d7 100644
--- a/sinaps/config/sinaps/class_sinapsConfig.inc
+++ b/sinaps/config/sinaps/class_sinapsConfig.inc
@@ -20,129 +20,198 @@
 
 class sinapsConfig extends simplePlugin
 {
-  var $objectclasses  = array('fdSinapsPluginConf');
+  var $objectclasses  = ['fdSinapsPluginConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('SINAPS configuration'),
       'plDescription'   => _('FusionDirectory SINAPS plugin configuration'),
-      'plCategory'      => array('configuration'),
-      'plObjectType'    => array('smallConfig'),
+      'plCategory'      => ['configuration'],
+      'plObjectType'    => ['smallConfig'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
     global $config;
 
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Sinaps'),
-        'attrs' => array(
-          new BooleanAttribute (
+        'attrs' => [
+          new BooleanAttribute(
             _('Enable SINAPS integration'), _('Whether to enable the SINAPS integration'),
             'fdSinapsEnabled', FALSE,
             TRUE
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Dry run mode'), _('Do not insert data in FusionDirectory, dump it to a file'),
             'fdSinapsDryRun', FALSE,
             FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Dump folder'), _('Folder in which received transactions should be dumped (leave empty to disable)'),
             'fdSinapsDumpFolder', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Application identifier'), _('Application identifier present in cross references with FusionDirectory'),
             'fdSinapsIdentifiantApplication', TRUE,
             'FUSIONDIRECTORY'
           ),
-          new SetAttribute (
-            new StringAttribute (
-              _('Applications identifiers to sync'), _('List of applications identifiers for which cross references should be synced from SINAPS'),
-              'fdSinapsIdentifiantApplicationSync', FALSE
-            ),
-            array('SAP')
-          ),
-          new StringAttribute (
+          new StringAttribute(
             _('UUID prefix'), _('Prefix used for UUID in supannRefId'),
             'fdSinapsUuidPrefix', TRUE,
             'LDAPUUID'
           ),
-          new StringAttribute (
+        ]
+      ],
+      'diffusion' => [
+        'name'  => _('Diffusion'),
+        'attrs' => [
+          new SetAttribute(
+            new StringAttribute(
+              _('Applications identifiers to sync'), _('List of applications identifiers for which cross references should be synced from SINAPS'),
+              'fdSinapsIdentifiantApplicationSync', FALSE
+            ),
+            ['SAP']
+          ),
+          new StringAttribute(
             _('User base'), _('Base in which users should be created when receiving a SINAPS diffusion'),
             'fdSinapsUserBase', TRUE,
             $config->current['BASE']
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('User template'), _('User template to use for user creation from SINAPS diffusion'),
             'fdSinapsUserTemplate', FALSE
           ),
-          new SetAttribute (
-            new StringAttribute (
+          new SetAttribute(
+            new StringAttribute(
               _('API Tokens'), _('One of these API tokens will need to be present in the diffusion URL used by SINAPS'),
               'fdSinapsFDToken', FALSE
             )
           ),
-          new SetAttribute (
-            new StringAttribute (
+          new SetAttribute(
+            new StringAttribute(
               _('User roles'), _('Roles which means a user still exists if present'),
               'fdSinapsUserRole', TRUE
             ),
-            array('PR', 'EXT/PRA')
+            ['PR', 'EXT/PRA']
+          ),
+          new OrderedArrayAttribute(
+            new PipeSeparatedCompositeAttribute(
+              _('Which field to sync in diffusion'),
+              'fdSinapsUserDiffusionMap',
+              [
+                new StringAttribute(
+                  '', _('XPath for the XML value to fetch'),
+                  'fdSinapsUserDiffusionMap_sinaps', TRUE
+                ),
+                new StringAttribute(
+                  '', _('Name of the FD tab'),
+                  'fdSinapsUserDiffusionMap_tab', TRUE
+                ),
+                new StringAttribute(
+                  '', _('Name of the FD field'),
+                  'fdSinapsUserDiffusionMap_field', TRUE
+                ),
+              ],
+              '',
+              _('User field mapping')
+            ),
+            // no order
+            FALSE,
+            [
+              'civilite|supannAccount|supannCivilite',
+              'nomUsage|user|sn',
+              'dateNaissance|personalInfo|dateOfBirth',
+              'sexe|personalInfo|gender'
+            ],
+            TRUE
+          ),
+          new OrderedArrayAttribute(
+            new PipeSeparatedCompositeAttribute(
+              _('Which field to sync in diffusion'),
+              'fdSinapsStructureDiffusionMap',
+              [
+                new StringAttribute(
+                  '', _('XPath for the XML value to fetch'),
+                  'fdSinapsStructureDiffusionMap_sinaps', TRUE
+                ),
+                new StringAttribute(
+                  '', _('Name of the FD tab'),
+                  'fdSinapsStructureDiffusionMap_tab', TRUE
+                ),
+                new StringAttribute(
+                  '', _('Name of the FD field'),
+                  'fdSinapsStructureDiffusionMap_field', TRUE
+                ),
+              ],
+              '',
+              _('Structure field mapping')
+            ),
+            // no order
+            FALSE,
+            [
+              'libelle20|entite|ou',
+              'descriptifLong|entite|description',
+              'codeStructure|entite|supannCodeEntite',
+              'codeSousType|entite|supannTypeEntite',
+              'dateDebutValidite|supannStructureExt|fdSupannStartDate',
+              'dateFinValidite|supannStructureExt|fdSupannEndDate',
+            ],
+            TRUE
           ),
-        )
-      ),
-      'acquisition' => array(
+        ]
+      ],
+      'acquisition' => [
         'name'  => _('Sinaps Acquisition'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Acquisition URL'), _('Full URL to which acquisition events should be sent'),
             'fdSinapsAcquisitionURL', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Login'), _('Login to use for Basic Auth when contacting SINAPS services'),
             'fdSinapsLogin', FALSE,
             'fusiondirectory'
           ),
-          new PasswordAttribute (
+          new PasswordAttribute(
             _('Password'), _('Password to use for Basic Auth when contacting SINAPS services'),
             'fdSinapsPassword', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Acquisition external type'), _('Set in typeExterne tag when sending acquisition data'),
             'fdSinapsAcquisitionTypeExterne', TRUE,
             'FD'
           ),
-          new OrderedArrayAttribute (
+          new OrderedArrayAttribute(
             new PipeSeparatedCompositeAttribute(
               _('Which field to sync as contact methods in acquisition'),
               'fdSinapsAcquisitionContactMethodMap',
-              array(
-                new StringAttribute (
+              [
+                new StringAttribute(
                   '', _('Name of an LDAP attribute'),
                   'fdSinapsAcquisitionContactMethodMap_ldap', TRUE
                 ),
-                new StringAttribute (
+                new StringAttribute(
                   '', _('Name of the Sinaps attribute'),
                   'fdSinapsAcquisitionContactMethodMap_sinaps', TRUE
                 ),
-              ),
+              ],
               '',
               _('Contact methods')
             ),
             // no order
             FALSE,
-            array('telephoneNumber|TELPRO','facsimileTelephoneNumber|FAXPRO','mail|MAILPRO','mobile|TELMOBILEPRO'),
+            ['telephoneNumber|TELPRO','facsimileTelephoneNumber|FAXPRO','mail|MAILPRO','mobile|TELMOBILEPRO'],
             TRUE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE, $attributesInfo = NULL)
@@ -151,11 +220,12 @@ class sinapsConfig extends simplePlugin
       $attributesInfo = $this->getAttributesInfo();
     }
     $userTemplates = objects::getTemplates('user');
-    $attributesInfo['main']['attrs'][7]->setChoices(array_keys($userTemplates), array_values($userTemplates));
+    $attributesInfo['diffusion']['attrs'][2]->setChoices(array_keys($userTemplates), array_values($userTemplates));
 
     parent::__construct($dn, $object, $parent, $mainTab, $attributesInfo);
 
-    $this->attributesAccess['fdSinapsAcquisitionContactMethodMap']->setHeaders(array(_('LDAP'), _('Sinaps')));
+    $this->attributesAccess['fdSinapsAcquisitionContactMethodMap']->setHeaders([_('LDAP'), _('Sinaps')]);
+    $this->attributesAccess['fdSinapsUserDiffusionMap']->setHeaders([_('XPath'), _('Tab'), _('Field')]);
+    $this->attributesAccess['fdSinapsStructureDiffusionMap']->setHeaders([_('XPath'), _('Tab'), _('Field')]);
   }
 }
-?>
diff --git a/sinaps/contrib/openldap/sinaps-fd-conf.schema b/sinaps/contrib/openldap/sinaps-fd-conf.schema
index 1aaad5900aebd1e2c3169d99560d95227facc94f..586a1873b9bb53dd7d1711ce39d1462f9bd33825 100644
--- a/sinaps/contrib/openldap/sinaps-fd-conf.schema
+++ b/sinaps/contrib/openldap/sinaps-fd-conf.schema
@@ -106,6 +106,18 @@ attributetype ( 1.3.6.1.4.1.38414.65.1.16 NAME 'fdSinapsUserRole'
   SUBSTR caseExactSubstringsMatch
   SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
 
+attributetype ( 1.3.6.1.4.1.38414.65.1.17 NAME 'fdSinapsUserDiffusionMap'
+  DESC 'FusionDirectory - Which field to sync for users in diffusion'
+  EQUALITY caseExactMatch
+  SUBSTR caseExactSubstringsMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+attributetype ( 1.3.6.1.4.1.38414.65.1.18 NAME 'fdSinapsStructureDiffusionMap'
+  DESC 'FusionDirectory - Which field to sync for structures in diffusion'
+  EQUALITY caseExactMatch
+  SUBSTR caseExactSubstringsMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
 objectclass ( 1.3.6.1.4.1.38414.65.2.1 NAME 'fdSinapsPluginConf'
   DESC 'FusionDirectory sinaps plugin configuration'
   SUP top AUXILIARY
@@ -119,5 +131,6 @@ objectclass ( 1.3.6.1.4.1.38414.65.2.1 NAME 'fdSinapsPluginConf'
     fdSinapsDryRun $
     fdSinapsUserBase $ fdSinapsUserTemplate $
     fdSinapsIdentifiantApplicationSync $ fdSinapsAcquisitionTypeExterne $
-    fdSinapsAcquisitionContactMethodMap $ fdSinapsUserRole
+    fdSinapsAcquisitionContactMethodMap $ fdSinapsUserRole $
+    fdSinapsUserDiffusionMap $ fdSinapsStructureDiffusionMap
   ) )
diff --git a/sinaps/contrib/test/testAcquisition.php b/sinaps/contrib/test/testAcquisition.php
index a89e71102da34de64aaa4a3ee8f05408dbb1e6c3..7c60a5a3e2941d6f6d244def6d86cee02c201742 100644
--- a/sinaps/contrib/test/testAcquisition.php
+++ b/sinaps/contrib/test/testAcquisition.php
@@ -12,7 +12,7 @@ require_once('include/class_sinapsRequestAcquisition.inc');
 require_once('include/class_sinapsDiffusionHandlerJob.inc');
 
 
-function usage($error = '')
+function usage ($error = '')
 {
   global $argv;
   if ($error) {
@@ -24,7 +24,7 @@ function usage($error = '')
 
 $options = getopt(
   'Ph',
-  array(
+  [
     'help',
     'url:',
     'ca:',
@@ -32,7 +32,7 @@ $options = getopt(
     'password:',
     'server:',
     'dn:',
-  )
+  ]
 );
 
 if (isset($options['h']) || isset($options['help'])) {
@@ -64,17 +64,17 @@ if (isset($options['url'])) {
   $options['url'] = 'https://localhost/fusiondirectory/jsonrpc.php';
 }
 
-$ssl_options = array(
-);
-$http_options = array(
+$ssl_options = [
+];
+$http_options = [
   'timeout' => 10
-);
+];
 
 if (isset($options['ca'])) {
   $ssl_options['cafile'] = $options['ca'];
 }
 
-function codeEntiteToldapUuidCallback($codeEntite)
+function codeEntiteToldapUuidCallback ($codeEntite)
 {
   global $client, $session_id, $configuration;
 
@@ -84,16 +84,16 @@ function codeEntiteToldapUuidCallback($codeEntite)
   $entites = $client->ls(
     $session_id,
     'entite',
-    array('supannRefId' => '*', 'supannTypeEntite' => 1, 'dn' => 'raw'),
+    ['supannRefId' => '*', 'supannTypeEntite' => 1, 'dn' => 'raw'],
     NULL,
     '(supannCodeEntite='.$codeEntite.')'
   );
   if (empty($entites)) {
     $error = 'Could not find entity '.$codeEntite;
-    die ($error);
+    die($error);
   } elseif (count($entites) > 1) {
     $error = 'Multiple entite matches codeEntite '.$codeEntite;
-    die ($error);
+    die($error);
   } else {
     $entite = reset($entites);
     foreach ($entite['supannRefId'] as $supannRefId) {
@@ -102,7 +102,7 @@ function codeEntiteToldapUuidCallback($codeEntite)
       }
     }
     $error = 'Could not find any UUID for '.$entite['dn'];
-    die ($error);
+    die($error);
   }
 }
 
@@ -115,7 +115,7 @@ try {
   $configurations = $client->ls(
     $session_id,
     'configuration',
-    array(
+    [
       'fdSinapsEnabled'                     => 1,
       'fdSinapsAcquisitionURL'              => 1,
       'fdSinapsLogin'                       => 1,
@@ -123,7 +123,7 @@ try {
       'fdSinapsUuidPrefix'                  => 1,
       'fdSinapsAcquisitionTypeExterne'      => 1,
       'fdSinapsAcquisitionContactMethodMap' => '*',
-    )
+    ]
   );
   $configuration = reset($configurations);
   if (isset($configuration['fdSinapsEnabled']) && ($configuration['fdSinapsEnabled'] == 'FALSE')) {
@@ -147,7 +147,7 @@ try {
 
   $attributes = sinapsRequestAcquisition::$attributes;
 
-  $mapping = array();
+  $mapping = [];
   foreach ($configuration['fdSinapsAcquisitionContactMethodMap'] as $field) {
     list($ldapField, $sinapsType) = explode('|', $field, 2);
 
diff --git a/sinaps/contrib/test/testEndPoint.php b/sinaps/contrib/test/testEndPoint.php
index cbfb08db623eba18e523fd0f39ea218648bb8f25..a89779bf810aa75975026aee7440b09703a7caa8 100644
--- a/sinaps/contrib/test/testEndPoint.php
+++ b/sinaps/contrib/test/testEndPoint.php
@@ -9,17 +9,17 @@ sendPost(
   file_get_contents($argv[2])
 );
 
-function sendPost($url, $xml)
+function sendPost ($url, $xml)
 {
   // performs the HTTP(S) POST
-  $opts = array (
-    'http' => array (
+  $opts = [
+    'http' => [
       'method'  => 'POST',
       'header'  => 'Content-type: application/xml',
       'content' => $xml,
-    ),
+    ],
     'ssl' => []
-  );
+  ];
 
   $context  = stream_context_create($opts);
   $fp = fopenWithErrorHandling($url, 'r', FALSE, $context);
@@ -41,9 +41,9 @@ function sendPost($url, $xml)
 }
 
 /* Calls fopen, gives errors as an array if any, file handle if successful */
-function fopenWithErrorHandling(...$args)
+function fopenWithErrorHandling (...$args)
 {
-  $errors = array();
+  $errors = [];
   set_error_handler(
     function ($errno, $errstr, $errfile, $errline, $errcontext) use (&$errors)
     {
diff --git a/sinaps/html/sinaps.php b/sinaps/html/sinaps.php
index 957c3c7ec4135564174bf7ddd8833b38e5d0c9dc..1e118a9f931cea5aebb518a86324eedca65a18ff 100644
--- a/sinaps/html/sinaps.php
+++ b/sinaps/html/sinaps.php
@@ -32,12 +32,12 @@ class sinapsHandler extends standAlonePage
 
   protected $request;
 
-  function readLdapConfig()
+  function readLdapConfig ()
   {
     global $config;
 
     $this->dumpFolder             = $config->get_cfg_value('SinapsDumpFolder');
-    $this->tokens                 = $config->get_cfg_value('SinapsFDToken', array());
+    $this->tokens                 = $config->get_cfg_value('SinapsFDToken', []);
 
     if ($config->get_cfg_value('SinapsEnabled') != 'TRUE') {
       $this->returnError(400, 1, 'SINAPS integration is disabled'."\n");
@@ -49,7 +49,7 @@ class sinapsHandler extends standAlonePage
     return TRUE;
   }
 
-  function execute()
+  function execute ()
   {
     global $config;
 
@@ -82,7 +82,7 @@ class sinapsHandler extends standAlonePage
     }
   }
 
-  function dumpFile($fileName, $fileContent)
+  function dumpFile ($fileName, $fileContent)
   {
     if (empty($this->dumpFolder)) {
       return;
@@ -104,7 +104,7 @@ class sinapsHandler extends standAlonePage
     }
   }
 
-  function returnError($responseCode, $codeAcquittement, $errorText, $dump = TRUE)
+  function returnError ($responseCode, $codeAcquittement, $errorText, $dump = TRUE)
   {
     $acquittement = sinapsRequest::acquittementFonctionnel($responseCode, $codeAcquittement, $errorText);
     echo "$acquittement\n";
@@ -120,7 +120,7 @@ class sinapsHandler extends standAlonePage
     exit();
   }
 
-  function outputAcquittementTechnique($acquittement)
+  function outputAcquittementTechnique ($acquittement)
   {
     echo "$acquittement\n";
     $this->dumpFile(
diff --git a/sinaps/include/class_sinapsDiffusionHandlerJob.inc b/sinaps/include/class_sinapsDiffusionHandlerJob.inc
index 314a823d99eaab3214ce6e64bc248747e72bff2d..fc87d6bf5f2543b3adbbfb1d56475b4790372e4e 100644
--- a/sinaps/include/class_sinapsDiffusionHandlerJob.inc
+++ b/sinaps/include/class_sinapsDiffusionHandlerJob.inc
@@ -32,7 +32,7 @@ class sinapsDiffusionHandlerJob
 
   protected $request;
 
-  function __construct(sinapsRequest $request)
+  function __construct (sinapsRequest $request)
   {
     global $config;
 
@@ -46,20 +46,31 @@ class sinapsDiffusionHandlerJob
     $this->identifiantApplication     = $config->get_cfg_value('SinapsIdentifiantApplication');
     $this->userBase                   = $config->get_cfg_value('SinapsUserBase', $config->current['BASE']);
     $this->userTemplate               = $config->get_cfg_value('SinapsUserTemplate');
-    $this->identifiantApplicationSync = $config->get_cfg_value('SinapsIdentifiantApplicationSync', array());
-    $this->userRoles                  = $config->get_cfg_value('SinapsUserRole', array('PR', 'EXT/PRA'));
+    $this->identifiantApplicationSync = $config->get_cfg_value('SinapsIdentifiantApplicationSync', []);
+    $this->userRoles                  = $config->get_cfg_value('SinapsUserRole', ['PR', 'EXT/PRA']);
+
+    $this->userMapping = [];
+    foreach ($config->get_cfg_value('SinapsUserDiffusionMap', []) as $line) {
+      list($sinaps, $tab, $field) = explode('|', $line);
+      $this->userMapping[$sinaps] = [$tab,$field];
+    }
+    $this->structureMapping = [];
+    foreach ($config->get_cfg_value('SinapsStructureDiffusionMap', []) as $line) {
+      list($sinaps, $tab, $field) = explode('|', $line);
+      $this->structureMapping[$sinaps] = [$tab,$field];
+    }
   }
 
-  function handleRequest()
+  function handleRequest ()
   {
     if ($this->request->codeOperation() != 'DIFFUSION') {
       throw new FusionDirectoryException('Invalid operation '.$this->request->codeOperation());
     }
 
     if ($this->request->codeDomaine() == 'STRUCTURE') {
-      $this->handleStructureDiffusion($this->request->getSupannEntiteValues($this->identifiantApplication, $this->identifiantApplicationSync, $this->uuidPrefix, array($this, 'ldapUuidToCodeEntite')));
+      $this->handleStructureDiffusion($this->request->getSupannEntiteValues($this->identifiantApplication, $this->identifiantApplicationSync, $this->uuidPrefix, [$this, 'ldapUuidToCodeEntite'], $this->structureMapping));
     } elseif ($this->request->codeDomaine() == 'PERSONNE') {
-      $this->handlePersonneDiffusion($this->request->getUserValues($this->identifiantApplication, $this->identifiantApplicationSync, $this->uuidPrefix, array($this, 'ldapUuidToCodeEntite'), $this->userRoles));
+      $this->handlePersonneDiffusion($this->request->getUserValues($this->identifiantApplication, $this->identifiantApplicationSync, $this->uuidPrefix, [$this, 'ldapUuidToCodeEntite'], $this->userRoles, $this->userMapping));
     } else {
       throw new FusionDirectoryException('Invalid domain '.$this->request->codeDomaine());
     }
@@ -73,7 +84,7 @@ class sinapsDiffusionHandlerJob
     if (!preg_match('/^{'.$this->uuidPrefix.'}/', $uuid)) {
       $uuid = '{'.$this->uuidPrefix.'}'.$uuid;
     }
-    $entites = objects::ls(array('entite','etablissement'), array('supannCodeEntite' => 1, 'supannTypeEntite' => 1), NULL, '(supannRefId='.$uuid.')');
+    $entites = objects::ls(['entite','etablissement'], ['supannCodeEntite' => 1, 'supannTypeEntite' => 1], NULL, '(supannRefId='.$uuid.')');
     if (empty($entites)) {
       $error = 'Could not find entite '.$uuid;
       $this->sendAcquittementFonctionnel(sinapsRequest::acquittementFonctionnel(200, 10, $error));
@@ -94,7 +105,7 @@ class sinapsDiffusionHandlerJob
     }
   }
 
-  public static function dumpFile($fileName, $fileContent)
+  public static function dumpFile ($fileName, $fileContent)
   {
     global $config;
     $dumpFolder = $config->get_cfg_value('SinapsDumpFolder');
@@ -119,11 +130,11 @@ class sinapsDiffusionHandlerJob
     }
   }
 
-  function handleStructureDiffusion($values)
+  function handleStructureDiffusion ($values)
   {
     $uuid     = $values['entite']['supannRefId'][0];
     $idObjApp = preg_replace('/^{'.$this->uuidPrefix.'}/', '', $uuid);
-    $entites  = objects::ls('entite', array('supannRefId' => '*'), NULL, '(supannRefId='.$uuid.')');
+    $entites  = objects::ls('entite', ['supannRefId' => '*'], NULL, '(supannRefId='.$uuid.')');
     $message  = 'Entite created';
     if (empty($entites)) {
       $dn = '';
@@ -151,11 +162,11 @@ class sinapsDiffusionHandlerJob
     }
   }
 
-  function handlePersonneDiffusion($values)
+  function handlePersonneDiffusion ($values)
   {
     $uuid     = $values['supannAccount']['supannRefId'][0];
     $idObjApp = preg_replace('/^{'.$this->uuidPrefix.'}/', '', $uuid);
-    $users    = objects::ls('user', array('supannRefId' => '*'), NULL, '(supannRefId='.$uuid.')');
+    $users    = objects::ls('user', ['supannRefId' => '*'], NULL, '(supannRefId='.$uuid.')');
     $message  = 'User created';
     if (!empty($users)) {
       if (count($users) > 1) {
@@ -172,7 +183,11 @@ class sinapsDiffusionHandlerJob
           }
         }
         $values['supannAccount']['supannRefId'] = array_values(array_unique($values['supannAccount']['supannRefId']));
-        $message = 'User updated';
+        if ($values['lock']) {
+          $message = 'User deleted';
+        } else {
+          $message = 'User updated';
+        }
       }
     } else {
       if ($values['lock']) {
@@ -185,11 +200,16 @@ class sinapsDiffusionHandlerJob
     if ($error !== TRUE) {
       $this->sendAcquittementFonctionnel(sinapsRequest::acquittementFonctionnel(200, 15, strip_tags(implode(', ', $error))));
     } else {
-      $this->sendAcquittementFonctionnel(sinapsRequest::acquittementFonctionnel(200, 0, $message, $idObjApp));
+      if ($values['lock']) {
+        /* $values['lock'] means this was a deletion, so we must not send an object identifier in the answer */
+        $this->sendAcquittementFonctionnel(sinapsRequest::acquittementFonctionnel(200, 0, $message));
+      } else {
+        $this->sendAcquittementFonctionnel(sinapsRequest::acquittementFonctionnel(200, 0, $message, $idObjApp));
+      }
     }
   }
 
-  function fillObject($type, $values, &$dn)
+  function fillObject ($type, $values, &$dn)
   {
     global $config;
 
@@ -214,7 +234,7 @@ class sinapsDiffusionHandlerJob
         $template = new template($type, $this->userTemplate);
         $error    = $template->deserialize($values);
         if ($error !== TRUE) {
-          return array($error);
+          return [$error];
         }
         $tabobject  = $template->apply();
         $errors     = $tabobject->save();
@@ -238,7 +258,7 @@ class sinapsDiffusionHandlerJob
     }
     foreach ($values as $tab => $tabvalues) {
       if (!isset($tabobject->by_object[$tab])) {
-        return array('This tab does not exists: "'.$tab.'"');
+        return ['This tab does not exists: "'.$tab.'"'];
       }
       if ($tabvalues === FALSE) {
         if (is_subclass_of($tabobject->by_object[$tab], 'simplePlugin') &&
@@ -287,14 +307,14 @@ class sinapsDiffusionHandlerJob
     return TRUE;
   }
 
-  protected function lockUser($dn)
+  protected function lockUser ($dn)
   {
     global $config;
 
     // Try to lock the entry
     $ldap   = $config->get_ldap_link();
-    $errors = array();
-    $ldap->cat($dn, array('userPassword'));
+    $errors = [];
+    $ldap->cat($dn, ['userPassword']);
     if ($ldap->count() == 1) {
       // We can't lock empty passwords.
       $val = $ldap->fetch();
@@ -329,7 +349,7 @@ class sinapsDiffusionHandlerJob
     return $errors;
   }
 
-  function sendAcquittementFonctionnel($xml)
+  function sendAcquittementFonctionnel ($xml)
   {
     static::dumpFile(
       $this->request->identifiantTransaction().'-acquittement.xml',
@@ -339,14 +359,14 @@ class sinapsDiffusionHandlerJob
     exit();
   }
 
-  public static function sendPostRequest($url, $user, $password, $data)
+  public static function sendPostRequest ($url, $user, $password, $data)
   {
     $ch = curl_init();
 
     curl_setopt($ch, CURLOPT_URL,         $url);
     curl_setopt($ch, CURLOPT_POST,        1);
     curl_setopt($ch, CURLOPT_POSTFIELDS,  $data);
-    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
+    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: text/xml']);
     curl_setopt($ch, CURLOPT_USERPWD, "$user:$password");
     curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
 
diff --git a/sinaps/include/class_sinapsRequest.inc b/sinaps/include/class_sinapsRequest.inc
index d910af6403d912c02362a0c18ba28b2dcfbafd67..b547c8cdae39dc5c654be8244aa3938f2f76e279 100644
--- a/sinaps/include/class_sinapsRequest.inc
+++ b/sinaps/include/class_sinapsRequest.inc
@@ -26,7 +26,7 @@ class sinapsRequest
 {
   protected $data;
 
-  public function __construct($xml)
+  public function __construct ($xml)
   {
     $this->data = new SimpleXMLElement($xml);
     if (!isset($this->data->domaine)) {
@@ -46,37 +46,37 @@ class sinapsRequest
     }
   }
 
-  public function codeDomaine()
+  public function codeDomaine ()
   {
     return $this->data->domaine['code'];
   }
 
-  public function codeOperation()
+  public function codeOperation ()
   {
     return $this->data->domaine->donnees->operation['codeOperation'];
   }
 
-  public function operationVersion()
+  public function operationVersion ()
   {
     return $this->data->domaine->donnees->operation['version'];
   }
 
-  public function identifiantTransaction()
+  public function identifiantTransaction ()
   {
     return $this->data->domaine->identifiantTransaction;
   }
 
-  public function getOperationStructure()
+  public function getOperationStructure ()
   {
     return $this->data->domaine->donnees->operation->structure;
   }
 
-  public function getOperationPersonne()
+  public function getOperationPersonne ()
   {
     return $this->data->domaine->donnees->operation->personne;
   }
 
-  public static function acquittementFonctionnel($responseCode = 200, $codeAcquittement = 0, $message = '', $identifiantObjApp = NULL, $synchrone = TRUE)
+  public static function acquittementFonctionnel ($responseCode = 200, $codeAcquittement = 0, $message = '', $identifiantObjApp = NULL, $synchrone = TRUE)
   {
     $xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?>
     <Acquittement xmlns:acq="http://referentiels.SINAPS.amue.fr/acquittementFonctionnel">
@@ -93,8 +93,8 @@ class sinapsRequest
     if ($synchrone) {
       /* Hack because SINAPS API makes no sense and needs a prefix for Acquittement only for synchrone mode */
       return preg_replace(
-        array('|<Acquittement |',   '|</Acquittement>$|'),
-        array('<acq:Acquittement ', '</acq:Acquittement>'),
+        ['|<Acquittement |',   '|</Acquittement>$|'],
+        ['<acq:Acquittement ', '</acq:Acquittement>'],
         $xml->asXML(),
         1
       );
@@ -103,7 +103,7 @@ class sinapsRequest
     }
   }
 
-  public function acquittementTechnique($responseCode = 200, $message = '')
+  public function acquittementTechnique ($responseCode = 200, $message = '')
   {
     $xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?>
     <WebServiceHTTPResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="acquittementTechnique.xsd">
@@ -115,26 +115,17 @@ class sinapsRequest
     return $xml->asXML();
   }
 
-  public function getSupannEntiteValues($identifiantApplication, $identifiantApplicationSync, $uuidPrefix, $ldapUuidToCodeEntiteCallback)
+  public function getSupannEntiteValues ($identifiantApplication, $identifiantApplicationSync, $uuidPrefix, $ldapUuidToCodeEntiteCallback, array $mapping)
   {
     $structure  = $this->getOperationStructure();
     $now        = new DateTime();
-
-    $mapping = array(
-      'libelle20'         => array('entite','ou'),
-      'descriptifLong'    => array('entite','description'),
-      'codeStructure'     => array('entite','supannCodeEntite'),
-      'codeSousType'      => array('entite','supannTypeEntite'),
-      'dateDebutValidite' => array('supannStructureExt','fdSupannStartDate'),
-      'dateFinValidite'   => array('supannStructureExt','fdSupannEndDate'),
-    );
-    $values = array(
-      'entite' => array(
-        'supannRefId'               => array(),
+    $values = [
+      'entite' => [
+        'supannRefId'               => [],
         'postalAddress'             => '',
-        'supannCodeEntiteParent'    => array(),
-      ),
-    );
+        'supannCodeEntiteParent'    => [],
+      ],
+    ];
 
     $uuid = '';
 
@@ -154,11 +145,13 @@ class sinapsRequest
 
     array_unshift($values['entite']['supannRefId'], '{'.$uuidPrefix.'}'.$uuid);
 
-    foreach ($mapping as $sinapsAttr => list($fdTab,$fdAttr)) {
-      if (isset($structure->$sinapsAttr)) {
-        $values[$fdTab][$fdAttr] = (string)$structure->$sinapsAttr;
-      } else {
+    foreach ($mapping as $xpath => list($fdTab, $fdAttr)) {
+      $nodes = $structure->xpath($xpath);
+      if (empty($nodes)) {
         $values[$fdTab][$fdAttr] = '';
+      } else {
+        /* Note: We only support monovalued attributes through custom mapping for now */
+        $values[$fdTab][$fdAttr] = (string)$nodes[0];
       }
     }
 
@@ -203,38 +196,32 @@ class sinapsRequest
     return $values;
   }
 
-  public function getUserValues($identifiantApplication, array $identifiantApplicationSync, $uuidPrefix, $ldapUuidToCodeEntiteCallback, array $userRoles)
+  public function getUserValues ($identifiantApplication, array $identifiantApplicationSync, $uuidPrefix, $ldapUuidToCodeEntiteCallback, array $userRoles, array $mapping)
   {
     $personne   = $this->getOperationPersonne();
     $now        = new DateTime();
-    $mapping = array(
-      'civilite'        => array('supannAccount','supannCivilite'),
-      'nomUsage'        => array('user','sn'),
-      'dateNaissance'   => array('personalInfo','dateOfBirth'),
-      'sexe'            => array('personalInfo','gender'),
-    );
-    $values = array(
+    $values = [
       'lock'          => FALSE,
-      'user'          => array(
+      'user'          => [
         'homePhone'                 => '',
         'postalAddress'             => '',
         'homePostalAddress'         => '',
         'employeeNumber'            => '',
-      ),
-      'supannAccount' => array(
-        'supannRefId'                       => array(),
-        'supannEntiteAffectation'           => array(),
-        'supannRoleGenerique'               => array(),
-        'supannTypeEntiteAffectation'       => array(),
-        'supannRoleEntite'                  => array(),
-        'supannActivite'                    => array(),
+      ],
+      'supannAccount' => [
+        'supannRefId'                       => [],
+        'supannEntiteAffectation'           => [],
+        'supannRoleGenerique'               => [],
+        'supannTypeEntiteAffectation'       => [],
+        'supannRoleEntite'                  => [],
+        'supannActivite'                    => [],
         'supannEmpCorps'                    => '',
         'supannEntiteAffectationPrincipale' => '',
-      ),
-      'personalInfo'  => array(
-        'fdPrivateMail' => array(),
-      ),
-    );
+      ],
+      'personalInfo'  => [
+        'fdPrivateMail' => [],
+      ],
+    ];
 
     $uuid = '';
 
@@ -258,7 +245,7 @@ class sinapsRequest
     array_unshift($values['supannAccount']['supannRefId'], '{'.$uuidPrefix.'}'.$uuid);
 
     /* Check if the user still has at least one role which means he exists, otherwise this is a deletion */
-    $userRoleExists = array();
+    $userRoleExists = [];
     foreach ($userRoles as $typeRole) {
       if (preg_match('|^([^/]+)/(.+)$|', $typeRole, $m)) {
         $userRoleExists[$m[1]][] = $m[2];
@@ -309,11 +296,13 @@ class sinapsRequest
       return $values;
     }
 
-    foreach ($mapping as $sinapsAttr => list($fdTab,$fdAttr)) {
-      if (isset($personne->$sinapsAttr)) {
-        $values[$fdTab][$fdAttr] = (string)$personne->$sinapsAttr;
-      } else {
+    foreach ($mapping as $xpath => list($fdTab, $fdAttr)) {
+      $nodes = $personne->xpath($xpath);
+      if (empty($nodes)) {
         $values[$fdTab][$fdAttr] = '';
+      } else {
+        /* Note: We only support monovalued attributes through custom mapping for now */
+        $values[$fdTab][$fdAttr] = (string)$nodes[0];
       }
     }
 
@@ -427,14 +416,14 @@ class sinapsRequest
       }
     }
 
-    foreach (array('supannRefId','supannEntiteAffectation','supannRoleGenerique','supannTypeEntiteAffectation','supannRoleEntite','supannActivite') as $arrayattribute) {
+    foreach (['supannRefId','supannEntiteAffectation','supannRoleGenerique','supannTypeEntiteAffectation','supannRoleEntite','supannActivite'] as $arrayattribute) {
       $values['supannAccount'][$arrayattribute] = array_values(array_unique($values['supannAccount'][$arrayattribute]));
     }
 
     return $values;
   }
 
-  protected function convertAddress(SimpleXMLElement $address)
+  protected function convertAddress (SimpleXMLElement $address)
   {
     $adresse = '';
     if (!empty($address->adresseFR)) {
@@ -488,7 +477,7 @@ class sinapsRequest
     return $adresse;
   }
 
-  protected function checkValidite(SimpleXMLElement $object, DateTime $now)
+  protected function checkValidite (SimpleXMLElement $object, DateTime $now)
   {
     if ($object->dateDebutValidite) {
       $dateDebutValidite = new DateTime($object->dateDebutValidite);
@@ -507,7 +496,7 @@ class sinapsRequest
     return TRUE;
   }
 
-  protected function getUUIDFromReferenceCroisee($identifiantApplication, $referenceCroisee)
+  protected function getUUIDFromReferenceCroisee ($identifiantApplication, $referenceCroisee)
   {
     foreach ($referenceCroisee->identifiantsExternes as $ref) {
       if ($ref->identifiantApplication == $identifiantApplication) {
@@ -518,7 +507,7 @@ class sinapsRequest
     return '';
   }
 
-  public static function genUUID()
+  public static function genUUID ()
   {
     //UUID v4
     return sprintf(
diff --git a/sinaps/include/class_sinapsRequestAcquisition.inc b/sinaps/include/class_sinapsRequestAcquisition.inc
index 376c080ac9d462a6018cb95631c709a1a7a3bdc4..adb4df591f8df16778c1dfe6c5ab94be0a70b4db 100644
--- a/sinaps/include/class_sinapsRequestAcquisition.inc
+++ b/sinaps/include/class_sinapsRequestAcquisition.inc
@@ -23,12 +23,12 @@ class sinapsRequestAcquisition
   protected $data;
   protected $identifiantTransaction;
 
-  public static $attributes = array(
+  public static $attributes = [
     'supannRefId'                       => '*',
     'supannEntiteAffectationPrincipale' => 1,
-  );
+  ];
 
-  public function __construct()
+  public function __construct ()
   {
     $this->identifiantTransaction = sinapsRequest::genUUID();
     $xml = '<?xml version="1.0" encoding="UTF-8" ?>
@@ -46,7 +46,7 @@ class sinapsRequestAcquisition
     $this->data = new SimpleXMLElement($xml);
   }
 
-  public function fill(array $user, string $uuidPrefix, string $typeExterne, array $methodeContactMapping, $codeEntiteToldapUuidCallback, $contractEnded = FALSE)
+  public function fill (array $user, string $uuidPrefix, string $typeExterne, array $methodeContactMapping, $codeEntiteToldapUuidCallback, $contractEnded = FALSE)
   {
     $personne = $this->data->domaine->donnees->operation->personne;
 
@@ -87,7 +87,7 @@ class sinapsRequestAcquisition
     $personne->rattachements->rattachement->roles->role->externe->typeExterne   = $typeExterne;
   }
 
-  public function getXML()
+  public function getXML ()
   {
     return $this->data->asXML();
   }
diff --git a/sinaps/locale/af_ZA/fusiondirectory.po b/sinaps/locale/af_ZA/fusiondirectory.po
index 54a5adfdf981958b3c97ee026cdc5da0a422ddf1..3da3c1305e2bafc10ec9ca8093e56fc5d384f3fa 100644
--- a/sinaps/locale/af_ZA/fusiondirectory.po
+++ b/sinaps/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
@@ -17,18 +17,18 @@ msgstr ""
 "Language: af_ZA\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -42,7 +42,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -84,115 +84,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr ""
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/ar/fusiondirectory.po b/sinaps/locale/ar/fusiondirectory.po
index f7bc3b90415e3d3f51608f0652b23fa3a0941df4..b7f2826bdb33d064c7d43d16dc4d3fc19fc590bc 100644
--- a/sinaps/locale/ar/fusiondirectory.po
+++ b/sinaps/locale/ar/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
 "MIME-Version: 1.0\n"
@@ -17,18 +17,18 @@ msgstr ""
 "Language: ar\n"
 "Plural-Forms: 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;\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -42,7 +42,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -84,115 +84,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr ""
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/ca/fusiondirectory.po b/sinaps/locale/ca/fusiondirectory.po
index 343849298a51052ba7e0e13d3e598bbcbccd3b02..bf239894eb638823b5acf65dbb3edcd56f3b6c65 100644
--- a/sinaps/locale/ca/fusiondirectory.po
+++ b/sinaps/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
@@ -21,18 +21,18 @@ msgstr ""
 "Language: ca\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -46,7 +46,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -88,115 +88,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr "Entrada"
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr "Contrasenya"
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr ""
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/cs_CZ/fusiondirectory.po b/sinaps/locale/cs_CZ/fusiondirectory.po
index 812b3faac795e697e95dfa466d0197017f86c479..d2ae4e3deff0987923f958cb1333bf7903ac648c 100644
--- a/sinaps/locale/cs_CZ/fusiondirectory.po
+++ b/sinaps/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2019\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
@@ -22,22 +22,22 @@ msgstr ""
 "Language: cs_CZ\n"
 "Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 "Nepodařilo se zjistit jaká metoda je používána pro heslo u účtu „%s“. Nebyl "
 "proto uzamčen!"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 "S metodou ukládání hesla „%s“ se zamykání nezdařilo. Účet „%s“ nebyl "
 "uzamčen!"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr "Účet „%s“ se nepodařilo v LDAP najít. Nebyl proto uzamčen!"
@@ -51,7 +51,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -93,115 +93,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr "Šablona uživatele"
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr "Uživatelské role"
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr "uživatelské jméno"
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr "Heslo"
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr "LDAP"
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr "Karta"
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr "Kolonka"
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/de/fusiondirectory.po b/sinaps/locale/de/fusiondirectory.po
index d5bc53fe2b81ac183523faeb4b1726def64589fb..f88da728801ad07c2641c4a00c00a3f0bdb73c63 100644
--- a/sinaps/locale/de/fusiondirectory.po
+++ b/sinaps/locale/de/fusiondirectory.po
@@ -5,15 +5,16 @@
 # 
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2018
+# Ettore Atalan <atalanttore@googlemail.com>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
-"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
+"Last-Translator: Ettore Atalan <atalanttore@googlemail.com>, 2021\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -21,18 +22,18 @@ msgstr ""
 "Language: de\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -46,7 +47,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -88,115 +89,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr "Kennung"
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr "Passwort"
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr "LDAP"
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr "Feld"
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/el_GR/fusiondirectory.po b/sinaps/locale/el_GR/fusiondirectory.po
index 053ca83c208d4fa3e9c34171db7695560c622f86..43e30ecff94764cd7bccc123352892e776702508 100644
--- a/sinaps/locale/el_GR/fusiondirectory.po
+++ b/sinaps/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
@@ -21,18 +21,18 @@ msgstr ""
 "Language: el_GR\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -46,7 +46,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -88,115 +88,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr "Σύνδεση"
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr "Κωδικός πρόσβασης:"
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr "LDAP"
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/en/fusiondirectory.po b/sinaps/locale/en/fusiondirectory.po
index 7791d458aac5c66ca1614acce033459820bd8b51..c3e5020388d330818043b7378d61984099623a4e 100644
--- a/sinaps/locale/en/fusiondirectory.po
+++ b/sinaps/locale/en/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2018-12-10 23:16+0100\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,35 +17,6 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:294
-#: include/class_sinapsDiffusionHandlerJob.inc:315
-#, php-format
-msgid ""
-"Failed to get password method for account \"%s\". It has not been locked!"
-msgstr ""
-
-#: include/class_sinapsDiffusionHandlerJob.inc:311
-#, php-format
-msgid ""
-"Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
-msgstr ""
-
-#: include/class_sinapsDiffusionHandlerJob.inc:318
-#, php-format
-msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
-msgstr ""
-
-#: personal/sinaps/class_sinapsUser.inc:26
-#: personal/sinaps/class_sinapsUser.inc:27
-#: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:155
-msgid "Sinaps"
-msgstr ""
-
-#: personal/sinaps/class_sinapsUser.inc:28
-msgid "Used to send acquisition request for users"
-msgstr ""
-
 #: config/sinaps/class_sinapsConfig.inc:28
 msgid "SINAPS configuration"
 msgstr ""
@@ -54,6 +25,14 @@ msgstr ""
 msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
+#: config/sinaps/class_sinapsConfig.inc:43
+#: config/sinaps/class_sinapsConfig.inc:227
+#: personal/sinaps/class_sinapsUser.inc:27
+#: personal/sinaps/class_sinapsUser.inc:28
+#: personal/sinaps/class_sinapsUser.inc:44
+msgid "Sinaps"
+msgstr ""
+
 #: config/sinaps/class_sinapsConfig.inc:46
 msgid "Enable SINAPS integration"
 msgstr ""
@@ -71,127 +50,210 @@ msgid "Do not insert data in FusionDirectory, dump it to a file"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:56
-msgid "Acknowledgement URL"
-msgstr ""
-
-#: config/sinaps/class_sinapsConfig.inc:56
-msgid "Full URL to which functionnal acknowledgement should be sent"
-msgstr ""
-
-#: config/sinaps/class_sinapsConfig.inc:60
 msgid "Dump folder"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:60
+#: config/sinaps/class_sinapsConfig.inc:56
 msgid ""
 "Folder in which received transactions should be dumped (leave empty to "
 "disable)"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:64
+#: config/sinaps/class_sinapsConfig.inc:60
 msgid "Application identifier"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:64
+#: config/sinaps/class_sinapsConfig.inc:60
 msgid "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:70
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:70
-msgid ""
-"List of applications identifiers for which cross references should be synced "
-"from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:72
+msgid "Diffusion"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:76
-msgid "UUID prefix"
+msgid "Applications identifiers to sync"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:76
-msgid "Prefix used for UUID in supannRefId"
+msgid ""
+"List of applications identifiers for which cross references should be synced "
+"from SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:81
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:81
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:86
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:86
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:91
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:91
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by "
 "SINAPS"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:98
+msgid "User roles"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:98
+msgid "Roles which means a user still exists if present"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
-msgid "Acquisiton URL"
+#: config/sinaps/class_sinapsConfig.inc:173
+msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
-msgid "Full URL to which acquisiton events should be sent"
+#: config/sinaps/class_sinapsConfig.inc:173
+msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:110
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:110
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:114
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:114
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:120
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:124
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:128
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:133
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:155
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
+#: include/class_sinapsDiffusionHandlerJob.inc:313
+#: include/class_sinapsDiffusionHandlerJob.inc:334
+#, php-format
+msgid ""
+"Failed to get password method for account \"%s\". It has not been locked!"
+msgstr ""
+
+#: include/class_sinapsDiffusionHandlerJob.inc:330
+#, php-format
+msgid ""
+"Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
+msgstr ""
+
+#: include/class_sinapsDiffusionHandlerJob.inc:337
+#, php-format
+msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
+msgstr ""
+
+#: personal/sinaps/class_sinapsUser.inc:29
+msgid "Used to send acquisition request for users"
+msgstr ""
+
+#: personal/sinaps/class_sinapsUser.inc:50
+msgid ""
+"This tab takes care of sending Acquisition event to Sinaps whenever a user "
+"is modified."
+msgstr ""
+
+#: personal/sinaps/class_sinapsUser.inc:53
+msgid "Force Sinaps Acquisition"
+msgstr ""
+
+#: personal/sinaps/class_sinapsUser.inc:53
+msgid "Send Acquisition data even if data was not modified in FusionDirectory"
+msgstr ""
diff --git a/sinaps/locale/es/fusiondirectory.po b/sinaps/locale/es/fusiondirectory.po
index e48e22887f1bccf0b6d4d5f6a267512ef174458c..ad0c90aff09fa363c656bdc22f59a86d85ae874f 100644
--- a/sinaps/locale/es/fusiondirectory.po
+++ b/sinaps/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,20 +19,20 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -46,7 +46,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -88,115 +88,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr "Inicio"
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr "Contraseña"
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr "LDAP"
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/es_CO/fusiondirectory.po b/sinaps/locale/es_CO/fusiondirectory.po
index 89dad29be47cc524925d8a6aa027d5e502529871..e01e96fab6149058a18488eb0dfb222a3b096724 100644
--- a/sinaps/locale/es_CO/fusiondirectory.po
+++ b/sinaps/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,20 +19,20 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -46,7 +46,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -88,115 +88,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr "Usuario"
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr "Contraseña"
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr ""
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/es_VE/fusiondirectory.po b/sinaps/locale/es_VE/fusiondirectory.po
index 3fa1a6fb31231ecec7c826596322e2fe75257754..2a0b41da32ce1844cdaa8a65f2fd92ebea801b84 100644
--- a/sinaps/locale/es_VE/fusiondirectory.po
+++ b/sinaps/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,20 +19,20 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -46,7 +46,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -88,115 +88,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr "Inicio"
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr "Contraseña"
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr "LDAP"
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/fa_IR/fusiondirectory.po b/sinaps/locale/fa_IR/fusiondirectory.po
index 7ea956664b17ad8c7b9032bd52a88892e738f79d..b851f04f381ec3f76e6b8adb194c4aebeb920766 100644
--- a/sinaps/locale/fa_IR/fusiondirectory.po
+++ b/sinaps/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
@@ -17,18 +17,18 @@ msgstr ""
 "Language: fa_IR\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -42,7 +42,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -84,115 +84,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr ""
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/fi_FI/fusiondirectory.po b/sinaps/locale/fi_FI/fusiondirectory.po
index 0905458606e53a2d39722e3c229a69a988ac870e..113df2ed75b492ef7c15e02300fb2dcef7c33b04 100644
--- a/sinaps/locale/fi_FI/fusiondirectory.po
+++ b/sinaps/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
@@ -21,18 +21,18 @@ msgstr ""
 "Language: fi_FI\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -46,7 +46,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -88,115 +88,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr "Salasana"
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr ""
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/fr/fusiondirectory.po b/sinaps/locale/fr/fusiondirectory.po
index 85be13373b14fb911366f706e01dc59ebbf28208..1c8758df1147a302b4832905132cee0711c8701c 100644
--- a/sinaps/locale/fr/fusiondirectory.po
+++ b/sinaps/locale/fr/fusiondirectory.po
@@ -4,40 +4,40 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# fusiondirectory <contact@fusiondirectory.org>, 2018
-# Benoit Mortier <benoit.mortier@opensides.be>, 2019
+# fusiondirectory <contact@fusiondirectory.org>, 2019
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2019
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
-"Last-Translator: Benoit Mortier <benoit.mortier@opensides.be>, 2019\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2019\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 "Impossible d'obtenir la méthode de mot de passe pour le compte \"%s\". Le "
 "compte n'a pas été verrouillé !"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 "La méthode de mot de passe \"%s\" a échoué. Le compte \"%s\" n'a pas été "
 "verrouillé !"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -53,7 +53,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr "Configuration du plugin SINAPS"
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -100,11 +100,23 @@ msgstr ""
 "Identifiant d'application présent dans les références croisées avec "
 "FusionDirectory"
 
-#: config/sinaps/class_sinapsConfig.inc:66
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
+msgstr "Préfixe UUID"
+
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
+msgstr "Préfixe utilisé pour UUID dans supannRefId"
+
+#: config/sinaps/class_sinapsConfig.inc:72
+msgid "Diffusion"
+msgstr "Diffusion"
+
+#: config/sinaps/class_sinapsConfig.inc:76
 msgid "Applications identifiers to sync"
 msgstr "Identifiants d'applications à synchroniser"
 
-#: config/sinaps/class_sinapsConfig.inc:66
+#: config/sinaps/class_sinapsConfig.inc:76
 msgid ""
 "List of applications identifiers for which cross references should be synced"
 " from SINAPS"
@@ -112,40 +124,32 @@ msgstr ""
 "Liste des identifiants d'applications pour lesquels les références croisées "
 "doivent être synchronisées à partir de SINAPS"
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
-msgstr "Préfixe UUID"
-
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
-msgstr "Préfixe utilisé pour UUID dans supannRefId"
-
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr "Base d'utilisateur"
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 "Base dans laquelle les utilisateurs doivent être créés lors de la réception "
 "d'une diffusion SINAPS"
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr "Modèle utilisateur"
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 "Modèle d'utilisateur à utiliser pour la création d'utilisateur à partir de "
 "SINAPS diffusion"
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr "Jetons d'API"
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
@@ -153,76 +157,119 @@ msgstr ""
 "L'un de ces jetons API devra être présent dans l'URL de diffusion utilisée "
 "par SINAPS."
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr "Rôles utilisateur"
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr "Les rôles qui signifient un utilisateur existe toujours sont présent"
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr "Quel champ synchroniser en diffusion"
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr "XPath pour la valeur XML à récupérer"
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr "Nom de l'onglet FusionDirectory"
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr "Nom du champ FusionDirectory"
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr "Correspondance des champs utilisateurs"
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr "Correspondance des champs structures"
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr "Acquisition Sinaps"
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr "URL d'acquisition"
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 "URL complète à laquelle les événements d'acquisition doivent être envoyés"
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr "Identifiant"
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 "Identifiant à utiliser pour l’authentification de base lorsque vous "
 "contactez les services SINAPS"
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr "Mot de passe"
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 "Mot de passe à utiliser pour l’authentification de base lorsque vous "
 "contactez les services SINAPS"
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr "Acquisition type externe"
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 "Défini la balise typeExterne lors de l'envoi des données d'acquisition"
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr "Quel champ synchroniser en tant que méthode de contact en acquisition"
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr "Nom d'un attribut LDAP"
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr "Nom de l'attribut Sinaps"
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr "Méthodes de contact"
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr "LDAP"
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr "XPath"
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr "Onglet"
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr "Champ"
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr "Utilisé pour envoyer une demande d'acquisition aux utilisateurs"
diff --git a/sinaps/locale/hu_HU/fusiondirectory.po b/sinaps/locale/hu_HU/fusiondirectory.po
index a8a928933b30c2375a479b1ddbac649cd5ee4d22..cc711d67a797ff7204afb9cf563ef917e08d4258 100644
--- a/sinaps/locale/hu_HU/fusiondirectory.po
+++ b/sinaps/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
@@ -17,18 +17,18 @@ msgstr ""
 "Language: hu_HU\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -42,7 +42,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -84,115 +84,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr ""
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/id/fusiondirectory.po b/sinaps/locale/id/fusiondirectory.po
index ed565a7d4f5a6e6487390f219ab0d5f649b9f535..64589624deb8c415aa823467134c25b24edb8538 100644
--- a/sinaps/locale/id/fusiondirectory.po
+++ b/sinaps/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
@@ -17,18 +17,18 @@ msgstr ""
 "Language: id\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -42,7 +42,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -84,115 +84,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr ""
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/it_IT/fusiondirectory.po b/sinaps/locale/it_IT/fusiondirectory.po
index 26c0cdf453f4af5ea126d30b84a11d42350083e1..c21c8acd3b89df586e63e6264cfe9ce30135773c 100644
--- a/sinaps/locale/it_IT/fusiondirectory.po
+++ b/sinaps/locale/it_IT/fusiondirectory.po
@@ -4,40 +4,41 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# fusiondirectory <contact@fusiondirectory.org>, 2018
+# fusiondirectory <contact@fusiondirectory.org>, 2019
 # Paola Penati <paola.penati@opensides.be>, 2019
+# Paola <paola.penati@fusiondirectory.org>, 2019
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
-"Last-Translator: Paola Penati <paola.penati@opensides.be>, 2019\n"
+"Last-Translator: Paola <paola.penati@fusiondirectory.org>, 2019\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 "Impossibile ottenere metodo di password per l'account\"%s\". Non è stato "
 "bloccato!"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 "Il metodo di bloccaggio \"%s\" é fallito. L'account \"%s\" non é stato "
 "bloccato!"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr "Account \"%s\" non trovato nella LDAP. Non é stato bloccato!"
@@ -51,7 +52,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr "Configurazione del plugin SINAPS di FusionDirectory"
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -97,11 +98,23 @@ msgstr ""
 "Identificatore dell'applicazione presente nei riferimenti incrociati con "
 "FusionDirectory"
 
-#: config/sinaps/class_sinapsConfig.inc:66
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
+msgstr "Prefisso UUID"
+
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
+msgstr "Prefisso utilizzato per UUID in supannRefId"
+
+#: config/sinaps/class_sinapsConfig.inc:72
+msgid "Diffusion"
+msgstr "Diffusione"
+
+#: config/sinaps/class_sinapsConfig.inc:76
 msgid "Applications identifiers to sync"
 msgstr "Identificativi delle applicazioni da sincronizzare"
 
-#: config/sinaps/class_sinapsConfig.inc:66
+#: config/sinaps/class_sinapsConfig.inc:76
 msgid ""
 "List of applications identifiers for which cross references should be synced"
 " from SINAPS"
@@ -109,40 +122,32 @@ msgstr ""
 "Elenco di identificatori di applicazioni per i quali i riferimenti "
 "incrociati devono essere sincronizzati da SINAPS"
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
-msgstr "Prefisso UUID"
-
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
-msgstr "Prefisso utilizzato per UUID in supannRefId"
-
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr "Base utente"
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 "Base in cui devono essere creati gli utenti quando si riceve una diffusione "
 "SINAPS"
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr "Modello utente"
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 "Modello utente da utilizzare per la creazione dell'utente dalla diffusione "
 "SINAPS"
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr "Token API "
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
@@ -150,73 +155,116 @@ msgstr ""
 "Uno di questi token API dovrà essere presente nell'URL di diffusione "
 "utilizzato da SINAPS"
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr "Ruoli utente"
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr "Ruoli che significa che un utente esiste ancora se presente"
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr "Quale campo sincronizzare in diffusione"
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr "XPath per il valore XML da recuperare"
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr "Nome della tab FD"
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr "Nome del campo FD"
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr "Mappatura del campo utente"
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr "Mappatura dei campi della struttura"
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr "Sinaps Acquisition"
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr "URL di acquisizione"
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr "URL completo a cui devono essere inviati gli eventi di acquisizione"
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr "Nome utente"
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 "Login da utilizzare per Basic Auth quando si contattano i servizi SINAPS"
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr "Password"
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 "Password da utilizzare per l'autenticazione di base quando si contattano i "
 "servizi SINAPS"
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr "Acquisizione tipo esterno"
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr "Imposta il tag typeExterne quando invii i dati di acquisizione"
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr "Quale campo sincronizzare come metodi di contatto nell'acquisizione"
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr "Nome di un attributo LDAP"
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr "Nome dell'attributo Sinaps"
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr "Metodi di contatto"
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr "LDAP"
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr "XPath"
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr "Tab"
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr "Campo"
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr "Utilizzato per inviare una richiesta di acquisizione per gli utenti"
diff --git a/sinaps/locale/ja/fusiondirectory.po b/sinaps/locale/ja/fusiondirectory.po
index c8d748b7a285d6164883a8567f5a9fd6174e77f0..b1ab07cd1eaac085ecb350de5c3f32a93f0bb509 100644
--- a/sinaps/locale/ja/fusiondirectory.po
+++ b/sinaps/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
@@ -17,18 +17,18 @@ msgstr ""
 "Language: ja\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -42,7 +42,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -84,115 +84,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr ""
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/ko/fusiondirectory.po b/sinaps/locale/ko/fusiondirectory.po
index 9bdf65cef36ad860c5d7bbba2791457f528f71e2..9ea14116e7715b631e78590fc0fcbdaf1ef58dc7 100644
--- a/sinaps/locale/ko/fusiondirectory.po
+++ b/sinaps/locale/ko/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# Choi Chris <chulwon.choi@gmail.com>, 2018
+# Choi Chris <chulwon.choi@gmail.com>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
-"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
+"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2021\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -21,18 +21,18 @@ msgstr ""
 "Language: ko\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr "\"%s\" 계정의 패스워드를 가져올 수 없습니다. 잠겨있지 않습니다."
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr "\"%s\"의 패스워드를 잠글 수 없습니다. \"%s\" 계정이 잠겨있지 않습니다."
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr "LDAP에서 계정 \"%s\"을 찾을 수 없습니다. 잠겨있지 않습니다."
@@ -46,7 +46,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -88,115 +88,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
-msgstr ""
+msgstr "로그인"
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr "패스워드"
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr "LDAP"
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr "필드"
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/lv/fusiondirectory.po b/sinaps/locale/lv/fusiondirectory.po
index ccd1ccfd491b2e6c5955a8dea2c94c131a1b9560..c1c153a1ca6cab42160d8f1c4b7723be5c7db1f0 100644
--- a/sinaps/locale/lv/fusiondirectory.po
+++ b/sinaps/locale/lv/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
 "MIME-Version: 1.0\n"
@@ -17,18 +17,18 @@ msgstr ""
 "Language: lv\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -42,7 +42,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -84,115 +84,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr ""
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/nb/fusiondirectory.po b/sinaps/locale/nb/fusiondirectory.po
index 21cec864056f91360b723ff190916be2f299d823..ebc34f9de38fcfda494620a91f3e48bf1d13f829 100644
--- a/sinaps/locale/nb/fusiondirectory.po
+++ b/sinaps/locale/nb/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
 "MIME-Version: 1.0\n"
@@ -17,18 +17,18 @@ msgstr ""
 "Language: nb\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -42,7 +42,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -84,115 +84,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr ""
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/nl/fusiondirectory.po b/sinaps/locale/nl/fusiondirectory.po
index 266c4c937eff46b98faf9802f00bc92329d35a69..acf0e86a9b424f9d5c95cfa67190c4089c2ecd9b 100644
--- a/sinaps/locale/nl/fusiondirectory.po
+++ b/sinaps/locale/nl/fusiondirectory.po
@@ -4,17 +4,17 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# fusiondirectory <contact@fusiondirectory.org>, 2018
 # Lucien Antonissen <lucien.antonissen@digipolis.be>, 2018
+# fusiondirectory <contact@fusiondirectory.org>, 2019
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
-"Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2018\n"
+"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2019\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -22,22 +22,22 @@ msgstr ""
 "Language: nl\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 "Kan de wachtwoordmethode niet opvragen voor account \"%s\". Het is niet "
 "vergrendeld!"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 "Wachtwoordmethode \"%s\" kon niet vergrendelen. Account \"%s\" is niet "
 "vergrendeld!"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr "Account \"%s\" kon niet gevonden worden in LDAP. Het is niet vergrendeld."
@@ -51,7 +51,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -93,115 +93,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr "Login"
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr "Paswoord"
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr "LDAP"
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr "Tab"
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/pl/fusiondirectory.po b/sinaps/locale/pl/fusiondirectory.po
index 8e3b267cdd0f5237fe7cf21884d544c135627a8b..6ef89602939bd18acc4d206209c344ed73a2ecd6 100644
--- a/sinaps/locale/pl/fusiondirectory.po
+++ b/sinaps/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
@@ -21,18 +21,18 @@ msgstr ""
 "Language: pl\n"
 "Plural-Forms: 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);\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -46,7 +46,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -88,115 +88,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr "Login"
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr "Hasło"
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr "LDAP"
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/pt/fusiondirectory.po b/sinaps/locale/pt/fusiondirectory.po
index 408a54918cdfb2287f8d5213fee7cd8a2c070cdb..5ea798245cd3f7d9c21de4e6d958558441d4c88d 100644
--- a/sinaps/locale/pt/fusiondirectory.po
+++ b/sinaps/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,20 +19,20 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -46,7 +46,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -88,115 +88,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr "Login"
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr "Senha"
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr ""
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/pt_BR/fusiondirectory.po b/sinaps/locale/pt_BR/fusiondirectory.po
index 65734f152e11dcc2e9b61e93ec6fe95779c210cf..f54d13c1d9047af699005ef658b846b8db747a9f 100644
--- a/sinaps/locale/pt_BR/fusiondirectory.po
+++ b/sinaps/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,20 +19,20 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -46,7 +46,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -88,115 +88,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr "Login"
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr "Senha"
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr "LDAP"
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/ru/fusiondirectory.po b/sinaps/locale/ru/fusiondirectory.po
index 3a096a0d566ef5ea91aef0bb71e989b15a9399ae..fdf4ea4a24198caae794f0af8b362af89745372d 100644
--- a/sinaps/locale/ru/fusiondirectory.po
+++ b/sinaps/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
@@ -21,18 +21,18 @@ msgstr ""
 "Language: ru\n"
 "Plural-Forms: 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);\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -46,7 +46,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -88,115 +88,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr "Имя пользователя"
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr "Пароль"
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr "LDAP"
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/ru@petr1708/fusiondirectory.po b/sinaps/locale/ru@petr1708/fusiondirectory.po
index 234bda9b37347365a8bd49beeeb1a02edfbb6962..a819b2b4854d4e2791b5b7151180cbe1462a6eb4 100644
--- a/sinaps/locale/ru@petr1708/fusiondirectory.po
+++ b/sinaps/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
@@ -17,18 +17,18 @@ msgstr ""
 "Language: ru@petr1708\n"
 "Plural-Forms: 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);\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -42,7 +42,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -84,115 +84,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr ""
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/sv/fusiondirectory.po b/sinaps/locale/sv/fusiondirectory.po
index a9b30cde548612aabb427829265681b07f5d3dcf..7a2b8e8c6e25ad6bcdfeccbcae0d006b484f54ab 100644
--- a/sinaps/locale/sv/fusiondirectory.po
+++ b/sinaps/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
@@ -21,18 +21,18 @@ msgstr ""
 "Language: sv\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -46,7 +46,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -88,115 +88,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr "Användarnamn"
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr "Lösenord"
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr ""
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/tr_TR/fusiondirectory.po b/sinaps/locale/tr_TR/fusiondirectory.po
index bf3af14b3af728107069745571324a42ee6ebaa1..78a3ec7da75978526b85d2de95c6514175b0ae25 100644
--- a/sinaps/locale/tr_TR/fusiondirectory.po
+++ b/sinaps/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2021
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2021\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -17,18 +21,18 @@ msgstr ""
 "Language: tr_TR\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -42,7 +46,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -84,115 +88,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
-msgstr ""
+msgstr "Parola"
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr ""
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/ug/fusiondirectory.po b/sinaps/locale/ug/fusiondirectory.po
index d0104c61c7b20c5ae5f5ce39f09fc01c24d71d14..0161616104c6d7dda4c58752cb70437cf9f516df 100644
--- a/sinaps/locale/ug/fusiondirectory.po
+++ b/sinaps/locale/ug/fusiondirectory.po
@@ -8,27 +8,27 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -42,7 +42,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -84,115 +84,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr ""
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/vi_VN/fusiondirectory.po b/sinaps/locale/vi_VN/fusiondirectory.po
index 9caf4a488fece0221a158464b5b81f68931085a5..d83456b46dc868a5253d9a79e75c387ac91a5987 100644
--- a/sinaps/locale/vi_VN/fusiondirectory.po
+++ b/sinaps/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
@@ -21,18 +21,18 @@ msgstr ""
 "Language: vi_VN\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -46,7 +46,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -88,115 +88,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr "Đăng nhập"
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr "Mật khẩu"
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr "LDAP"
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/zh/fusiondirectory.po b/sinaps/locale/zh/fusiondirectory.po
index 2ce7f20db4e68be5f0bd1998502efd665435ac9d..50f2f0d154d497b2eed23b75cd1057643afc76db 100644
--- a/sinaps/locale/zh/fusiondirectory.po
+++ b/sinaps/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
@@ -21,18 +21,18 @@ msgstr ""
 "Language: zh\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -46,7 +46,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -88,115 +88,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr "登录名"
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr "口令"
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr ""
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/locale/zh_TW/fusiondirectory.po b/sinaps/locale/zh_TW/fusiondirectory.po
index b5aca8e2f3d02b427251d7b045217ff6c4389b22..1c1bad9487d820d9990032fb4263cbda70baf98b 100644
--- a/sinaps/locale/zh_TW/fusiondirectory.po
+++ b/sinaps/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2018-12-10 21:10+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
@@ -17,18 +17,18 @@ msgstr ""
 "Language: zh_TW\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: include/class_sinapsDiffusionHandlerJob.inc:302
-#: include/class_sinapsDiffusionHandlerJob.inc:323
+#: include/class_sinapsDiffusionHandlerJob.inc:322
+#: include/class_sinapsDiffusionHandlerJob.inc:343
 #, php-format
 msgid "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:319
+#: include/class_sinapsDiffusionHandlerJob.inc:339
 #, php-format
 msgid "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: include/class_sinapsDiffusionHandlerJob.inc:326
+#: include/class_sinapsDiffusionHandlerJob.inc:346
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
@@ -42,7 +42,7 @@ msgid "FusionDirectory SINAPS plugin configuration"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:43
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 #: personal/sinaps/class_sinapsUser.inc:27
 #: personal/sinaps/class_sinapsUser.inc:28
 #: personal/sinaps/class_sinapsUser.inc:44
@@ -84,115 +84,162 @@ msgid ""
 "Application identifier present in cross references with FusionDirectory"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid "Applications identifiers to sync"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "UUID prefix"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:66
-msgid ""
-"List of applications identifiers for which cross references should be synced"
-" from SINAPS"
+#: config/sinaps/class_sinapsConfig.inc:65
+msgid "Prefix used for UUID in supannRefId"
 msgstr ""
 
 #: config/sinaps/class_sinapsConfig.inc:72
-msgid "UUID prefix"
+msgid "Diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:72
-msgid "Prefix used for UUID in supannRefId"
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid "Applications identifiers to sync"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:76
+msgid ""
+"List of applications identifiers for which cross references should be synced"
+" from SINAPS"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid "User base"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:77
+#: config/sinaps/class_sinapsConfig.inc:82
 msgid ""
 "Base in which users should be created when receiving a SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:82
+#: config/sinaps/class_sinapsConfig.inc:87
 msgid "User template to use for user creation from SINAPS diffusion"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid "API Tokens"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:87
+#: config/sinaps/class_sinapsConfig.inc:92
 msgid ""
 "One of these API tokens will need to be present in the diffusion URL used by"
 " SINAPS"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "User roles"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:93
+#: config/sinaps/class_sinapsConfig.inc:98
 msgid "Roles which means a user still exists if present"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:101
+#: config/sinaps/class_sinapsConfig.inc:105
+#: config/sinaps/class_sinapsConfig.inc:136
+msgid "Which field to sync in diffusion"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:109
+#: config/sinaps/class_sinapsConfig.inc:140
+msgid "XPath for the XML value to fetch"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:144
+msgid "Name of the FD tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:148
+msgid "Name of the FD field"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:122
+msgid "User field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:153
+msgid "Structure field mapping"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:170
 msgid "Sinaps Acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Acquisition URL"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:104
+#: config/sinaps/class_sinapsConfig.inc:173
 msgid "Full URL to which acquisition events should be sent"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:108
+#: config/sinaps/class_sinapsConfig.inc:177
 msgid "Login to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:113
+#: config/sinaps/class_sinapsConfig.inc:182
 msgid "Password to use for Basic Auth when contacting SINAPS services"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Acquisition external type"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:117
+#: config/sinaps/class_sinapsConfig.inc:186
 msgid "Set in typeExterne tag when sending acquisition data"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:123
+#: config/sinaps/class_sinapsConfig.inc:192
 msgid "Which field to sync as contact methods in acquisition"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:127
+#: config/sinaps/class_sinapsConfig.inc:196
 msgid "Name of an LDAP attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:131
+#: config/sinaps/class_sinapsConfig.inc:200
 msgid "Name of the Sinaps attribute"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:136
+#: config/sinaps/class_sinapsConfig.inc:205
 msgid "Contact methods"
 msgstr ""
 
-#: config/sinaps/class_sinapsConfig.inc:158
+#: config/sinaps/class_sinapsConfig.inc:227
 msgid "LDAP"
 msgstr ""
 
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "XPath"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Tab"
+msgstr ""
+
+#: config/sinaps/class_sinapsConfig.inc:228
+#: config/sinaps/class_sinapsConfig.inc:229
+msgid "Field"
+msgstr ""
+
 #: personal/sinaps/class_sinapsUser.inc:29
 msgid "Used to send acquisition request for users"
 msgstr ""
diff --git a/sinaps/personal/sinaps/class_sinapsUser.inc b/sinaps/personal/sinaps/class_sinapsUser.inc
index b8040d320a760743c9c4ba50c265dd0c0addef28..8b7e47d1688c9bdc4ce6482dba79efb971cc6c2c 100644
--- a/sinaps/personal/sinaps/class_sinapsUser.inc
+++ b/sinaps/personal/sinaps/class_sinapsUser.inc
@@ -21,30 +21,30 @@
 
 class sinapsUser extends simplePlugin
 {
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Sinaps'),
       'plTitle'         => _('Sinaps'),
       'plDescription'   => _('Used to send acquisition request for users'),
       'plSelfModify'    => FALSE,
-      'plObjectClass'   => array(),
-      'plObjectType'    => array('user'),
+      'plObjectClass'   => [],
+      'plObjectType'    => ['user'],
       'plIcon'        => 'geticon.php?context=applications&icon=sinaps&size=48',
       'plSmallIcon'   => 'geticon.php?context=applications&icon=sinaps&size=16',
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Sinaps'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
-          new DisplayAttribute (
+        'class' => ['fullwidth'],
+        'attrs' => [
+          new DisplayAttribute(
             '', '',
             'sinaps_explanation', FALSE,
             _('This tab takes care of sending Acquisition event to Sinaps whenever a user is modified.')
@@ -53,9 +53,9 @@ class sinapsUser extends simplePlugin
             _('Force Sinaps Acquisition'), _('Send Acquisition data even if data was not modified in FusionDirectory'),
             'force_acquisition', FALSE
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE, $attributesInfo = NULL)
@@ -73,8 +73,8 @@ class sinapsUser extends simplePlugin
      * This is done here to make sure sinapsRequestAcquisition does not perform LDAP searches by itself
      * */
     $entites = objects::ls(
-      array('entite','etablissement'),
-      array('supannRefId' => '*', 'dn' => 'raw'),
+      ['entite','etablissement'],
+      ['supannRefId' => '*', 'dn' => 'raw'],
       NULL,
       '(supannCodeEntite='.$codeEntite.')'
     );
@@ -107,11 +107,11 @@ class sinapsUser extends simplePlugin
     }
 
     if ($config->get_cfg_value('SinapsEnabled', 'FALSE') == 'FALSE') {
-      return array();
+      return [];
     }
 
     if ($config->get_cfg_value('SinapsAcquisitionURL', '') == '') {
-      return array('Sinaps acquisition URL is not filled in FusionDirectory configuration');
+      return ['Sinaps acquisition URL is not filled in FusionDirectory configuration'];
     }
 
     $contractEnded = FALSE;
@@ -130,8 +130,8 @@ class sinapsUser extends simplePlugin
 
     $attributes = sinapsRequestAcquisition::$attributes;
 
-    $mapping = array();
-    foreach ($config->get_cfg_value('SinapsAcquisitionContactMethodMap', array()) as $field) {
+    $mapping = [];
+    foreach ($config->get_cfg_value('SinapsAcquisitionContactMethodMap', []) as $field) {
       list($ldapField, $sinapsType) = explode('|', $field, 2);
 
       $mapping[$ldapField]    = $sinapsType;
@@ -153,7 +153,7 @@ class sinapsUser extends simplePlugin
         }
       }
       if (!$sync) {
-        return array();
+        return [];
       }
     }
 
@@ -168,7 +168,7 @@ class sinapsUser extends simplePlugin
 
     try {
       $request = new sinapsRequestAcquisition();
-      $request->fill($user, $config->get_cfg_value('SinapsUuidPrefix', 'LDAPUUID'), $config->get_cfg_value('SinapsAcquisitionTypeExterne', 'FD'), $mapping, array($this, 'codeEntiteToldapUuidCallback'), $contractEnded);
+      $request->fill($user, $config->get_cfg_value('SinapsUuidPrefix', 'LDAPUUID'), $config->get_cfg_value('SinapsAcquisitionTypeExterne', 'FD'), $mapping, [$this, 'codeEntiteToldapUuidCallback'], $contractEnded);
       $xml = $request->getXml();
       $date = date('Y-m-d_H-i-s');
       sinapsDiffusionHandlerJob::dumpFile($date.'_acquittement.xml', $xml);
diff --git a/sogo/admin/sogo/class_sogoManagement.inc b/sogo/admin/sogo/class_sogoManagement.inc
index 6716fecd79065171be22db13e99a2930ff57c013..5673288f458777d5a568070cea693cbd34cf32c7 100644
--- a/sogo/admin/sogo/class_sogoManagement.inc
+++ b/sogo/admin/sogo/class_sogoManagement.inc
@@ -21,26 +21,26 @@
 class sogoManagement extends simpleManagement
 {
   // Tab definition
-  protected $objectTypes  = array('sogoResource');
+  protected $objectTypes  = ['sogoResource'];
 
   protected $departmentBrowser      = TRUE;
   protected $departmentRootVisible  = TRUE;
   protected $baseMode               = TRUE;
 
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('SOGo'),
       'plDescription' => _('SOGo management'),
       'plIcon'        => 'geticon.php?context=applications&icon=sogo&size=48',
       'plSection'     => 'systems',
       'plPriority'    => 50,
-      'plCategory'    => array('sogo' => array('description'  => _('SOGo'),
-                                              'objectClass'  => array('sogoResource'))),
-      'plManages'     => array('sogoResource'),
+      'plCategory'    => ['sogo' => ['description'  => _('SOGo'),
+                                              'objectClass'  => ['sogoResource']]],
+      'plManages'     => ['sogoResource'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 }
 ?>
diff --git a/sogo/admin/sogo/class_sogoResource.inc b/sogo/admin/sogo/class_sogoResource.inc
index 13d44019941ec24c03243857a03aceab4aa0f6de..d6313b8dc6fb739622b96982b7e0b3b069755bb2 100644
--- a/sogo/admin/sogo/class_sogoResource.inc
+++ b/sogo/admin/sogo/class_sogoResource.inc
@@ -22,64 +22,64 @@ class sogoResource extends simplePlugin
 {
   var $mainTab = TRUE;
 
-  var $objectclasses = array('inetOrgPerson','top','CalendarResource');
+  var $objectclasses = ['inetOrgPerson','top','CalendarResource'];
 
   /* Return plugin information for acl handling */
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('SOGo resource'),
       'plDescription' => _('SOGo resource'),
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array('sogoResource' => array(
+      'plObjectType'  => ['sogoResource' => [
         'name'        => _('SOGo resource'),
         'filter'      => 'objectClass=CalendarResource',
         'aclCategory' => 'sogo',
         'ou'          => get_ou('sogoRDN'),
         'icon'        => 'geticon.php?context=applications&icon=sogo&size=16',
         'mainAttr'    => 'uid'
-      )),
+      ]],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
-    return array(
+    return [
       // Attributes are grouped by section
-      'main' => array(
+      'main' => [
         'name'  => _('SOGo resource'),
-        'attrs' => array(
-          new BaseSelectorAttribute (get_ou('sogoRDN')),
-          new HostNameAttribute (
+        'attrs' => [
+          new BaseSelectorAttribute(get_ou('sogoRDN')),
+          new HostNameAttribute(
             _('Entry name'), _('Account name'),
             'uid', TRUE
           ),
-          new MailAttribute (
+          new MailAttribute(
             _('Mail'), _('Mail'),
             'mail', TRUE
           ),
-          new HiddenAttribute ('sn'),
-          new HiddenAttribute ('cn'),
-          new TextAreaAttribute (
+          new HiddenAttribute('sn'),
+          new HiddenAttribute('cn'),
+          new TextAreaAttribute(
             _('description'), _('description'),
             'description', FALSE
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Multiplebookings'), _('Multiplebookings'),
             'Multiplebookings', FALSE,
             0, FALSE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Kind'), _('Kind'),
             'Kind', FALSE,
-            array('location', 'thing', 'group')
+            ['location', 'thing', 'group']
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -92,7 +92,7 @@ class sogoResource extends simplePlugin
     $this->attributesAccess['cn']->setValue($this->attributesAccess['uid']->getValue());
   }
 
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
     $this->attributesAccess['sn']->setValue($this->attributesAccess['uid']->getValue());
diff --git a/sogo/config/sogo/class_sogoConfig.inc b/sogo/config/sogo/class_sogoConfig.inc
index abe378d86e09190a9b85421e8803a8211206802f..604731bb87d7e08d01bd0421a9e436b3d0f01fee 100644
--- a/sogo/config/sogo/class_sogoConfig.inc
+++ b/sogo/config/sogo/class_sogoConfig.inc
@@ -20,35 +20,35 @@
 
 class sogoConfig extends simplePlugin
 {
-  var $objectclasses  = array('fdSogoPluginConf');
+  var $objectclasses  = ['fdSogoPluginConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('SOGo configuration'),
       'plDescription'   => _('FusionDirectory sogo plugin configuration'),
       'plSelfModify'    => FALSE,
-      'plCategory'      => array('configuration'),
-      'plObjectType'    => array('smallConfig'),
+      'plCategory'      => ['configuration'],
+      'plObjectType'    => ['smallConfig'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('SOGo'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('SOGo RDN'), _('Branch in which SOGo objects will be stored'),
             'fdSogoRDN', TRUE,
             'ou=resources'
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/sogo/locale/af_ZA/fusiondirectory.po b/sogo/locale/af_ZA/fusiondirectory.po
index eec6fc5783f3e225ae200caad7c023d0ff168043..cf313a41cac94f794b96c159155a5e90e7312ab8 100644
--- a/sogo/locale/af_ZA/fusiondirectory.po
+++ b/sogo/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/sogo/locale/ar/fusiondirectory.po b/sogo/locale/ar/fusiondirectory.po
index 0d408331d9c2f79e750010fe4ad18ad7b2b246a6..3f480e673668b3a021a34ce0b72d2a8a99da9a0d 100644
--- a/sogo/locale/ar/fusiondirectory.po
+++ b/sogo/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/sogo/locale/ca/fusiondirectory.po b/sogo/locale/ca/fusiondirectory.po
index 0b79ca06cf31e4842d0d217b729e026188404fe4..146e2b2392d2f8c35f5196862142ae27ff06652c 100644
--- a/sogo/locale/ca/fusiondirectory.po
+++ b/sogo/locale/ca/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
 "MIME-Version: 1.0\n"
diff --git a/sogo/locale/cs_CZ/fusiondirectory.po b/sogo/locale/cs_CZ/fusiondirectory.po
index f60777088ac8bbbf73ad48288768db0a60101d8f..31a3e1b184f61cb445bf0713eb967ab4d97f2ea7 100644
--- a/sogo/locale/cs_CZ/fusiondirectory.po
+++ b/sogo/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/sogo/locale/de/fusiondirectory.po b/sogo/locale/de/fusiondirectory.po
index e84d7b72fde92c7d19f0955ddd2d1d6f97cee391..79bb3e7803f1779ecefa5c464f5626237636a214 100644
--- a/sogo/locale/de/fusiondirectory.po
+++ b/sogo/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/sogo/locale/el_GR/fusiondirectory.po b/sogo/locale/el_GR/fusiondirectory.po
index 56c7e575e9bfd733c3b1b4b2d6dd8fb392498a02..772fa19480ccc2ec227803d982577cc69fca4209 100644
--- a/sogo/locale/el_GR/fusiondirectory.po
+++ b/sogo/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/sogo/locale/en/fusiondirectory.po b/sogo/locale/en/fusiondirectory.po
index 70c927d0531c1b5578b4a4278e7c7843a2b327c2..91a4244e84bd7483a5fc47c2a5bd9c2542476ddf 100644
--- a/sogo/locale/en/fusiondirectory.po
+++ b/sogo/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
diff --git a/sogo/locale/es/fusiondirectory.po b/sogo/locale/es/fusiondirectory.po
index d1580e93c675ad950048fa73803dd624836b0fee..2cf7ec7ab1a0a76a93fba3c5eef132633fc41916 100644
--- a/sogo/locale/es/fusiondirectory.po
+++ b/sogo/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/sogo/class_sogoManagement.inc:33
 #: admin/sogo/class_sogoManagement.inc:38 config/sogo/class_sogoConfig.inc:42
diff --git a/sogo/locale/es_CO/fusiondirectory.po b/sogo/locale/es_CO/fusiondirectory.po
index 5d83339ca526ea3aa211b2409860c6cc22eb5c9a..f57824f0a983ea7a393fea51e51e086069b61214 100644
--- a/sogo/locale/es_CO/fusiondirectory.po
+++ b/sogo/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/sogo/class_sogoManagement.inc:33
 #: admin/sogo/class_sogoManagement.inc:38 config/sogo/class_sogoConfig.inc:42
diff --git a/sogo/locale/es_VE/fusiondirectory.po b/sogo/locale/es_VE/fusiondirectory.po
index 7de1f18f7d096d113ff6d71c273d3dfe3f25f887..641202ff3af60c38f2aad49cbedd5e8c1553d560 100644
--- a/sogo/locale/es_VE/fusiondirectory.po
+++ b/sogo/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/sogo/class_sogoManagement.inc:33
 #: admin/sogo/class_sogoManagement.inc:38 config/sogo/class_sogoConfig.inc:42
diff --git a/sogo/locale/fa_IR/fusiondirectory.po b/sogo/locale/fa_IR/fusiondirectory.po
index 5811ca75b7b9f2732deb0e93fb21c731a1a27296..3f305ac7a2a62eec6e17b70fca8ac5a3d806314e 100644
--- a/sogo/locale/fa_IR/fusiondirectory.po
+++ b/sogo/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/sogo/locale/fi_FI/fusiondirectory.po b/sogo/locale/fi_FI/fusiondirectory.po
index 7f525bc5bbd744c2bf2496be5c8feb5d8015316d..41c87473277b218b087eb84a364bc5109dc6ba9a 100644
--- a/sogo/locale/fi_FI/fusiondirectory.po
+++ b/sogo/locale/fi_FI/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
 "MIME-Version: 1.0\n"
diff --git a/sogo/locale/fr/fusiondirectory.po b/sogo/locale/fr/fusiondirectory.po
index 66a144cac2c6cf4f5e8ecef2b7d45b18ba8a1b4d..ccfc293899f5074ce0f9661f03756f62842d1e21 100644
--- a/sogo/locale/fr/fusiondirectory.po
+++ b/sogo/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/sogo/class_sogoManagement.inc:33
 #: admin/sogo/class_sogoManagement.inc:38 config/sogo/class_sogoConfig.inc:42
diff --git a/sogo/locale/hu_HU/fusiondirectory.po b/sogo/locale/hu_HU/fusiondirectory.po
index 8f1d2e50832988c1326654dffbedf20c21d0c39e..8cccf1e7de9565f9d5c119ed6faa08e6e521538d 100644
--- a/sogo/locale/hu_HU/fusiondirectory.po
+++ b/sogo/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/sogo/locale/id/fusiondirectory.po b/sogo/locale/id/fusiondirectory.po
index 32af97ceb6a1996ec2c1697c2a8c21151587275b..fde45b1be4c0248f43a9cc15540c043a7dfd10b6 100644
--- a/sogo/locale/id/fusiondirectory.po
+++ b/sogo/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/sogo/locale/it_IT/fusiondirectory.po b/sogo/locale/it_IT/fusiondirectory.po
index f223251a93c57e446a9db652681002a82bff1078..d169e7f85df391c14223aa6f346f0ce432aaa746 100644
--- a/sogo/locale/it_IT/fusiondirectory.po
+++ b/sogo/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/sogo/class_sogoManagement.inc:33
 #: admin/sogo/class_sogoManagement.inc:38 config/sogo/class_sogoConfig.inc:42
diff --git a/sogo/locale/ja/fusiondirectory.po b/sogo/locale/ja/fusiondirectory.po
index 9f631e2b70d889057e4efa0fa4fb7dec4ccdf0f4..f6e085d6af591828d9fbcaa11b1a0751f125fc3f 100644
--- a/sogo/locale/ja/fusiondirectory.po
+++ b/sogo/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/sogo/locale/ko/fusiondirectory.po b/sogo/locale/ko/fusiondirectory.po
index cf087517d3c0ee783a0d4d6f8dba1ec529868c5e..2f469d244d27567a8f1b2b7ead15edc4d0b49de4 100644
--- a/sogo/locale/ko/fusiondirectory.po
+++ b/sogo/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/sogo/locale/lv/fusiondirectory.po b/sogo/locale/lv/fusiondirectory.po
index 4a209b07848c9b972014d35d2a08aee131b530fd..bc55141231cc30873cf38bda140cdd8ec91c412c 100644
--- a/sogo/locale/lv/fusiondirectory.po
+++ b/sogo/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/sogo/locale/nb/fusiondirectory.po b/sogo/locale/nb/fusiondirectory.po
index 5b023b88f6b4cc2592d542041c894566409923b7..07bf541060ce7eee7bfa53844798816fc7ee1966 100644
--- a/sogo/locale/nb/fusiondirectory.po
+++ b/sogo/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/sogo/locale/nl/fusiondirectory.po b/sogo/locale/nl/fusiondirectory.po
index fa103efee65eff34056243b7022cb36198352fe4..898ea74665c8e32e100dc2cbb2eb7528aba31bc3 100644
--- a/sogo/locale/nl/fusiondirectory.po
+++ b/sogo/locale/nl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/sogo/locale/pl/fusiondirectory.po b/sogo/locale/pl/fusiondirectory.po
index 438fb92facd7b82b915ae7d40179d9d8036ad081..556fe5362eb8190e421bfa2ec5d11ea639a78940 100644
--- a/sogo/locale/pl/fusiondirectory.po
+++ b/sogo/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/sogo/locale/pt/fusiondirectory.po b/sogo/locale/pt/fusiondirectory.po
index aab7f6820a877a58cb1b985b869333f0eb93583a..615063bea5fba4e27f1ee6dc996bfca754e7649d 100644
--- a/sogo/locale/pt/fusiondirectory.po
+++ b/sogo/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/sogo/class_sogoManagement.inc:33
 #: admin/sogo/class_sogoManagement.inc:38 config/sogo/class_sogoConfig.inc:42
diff --git a/sogo/locale/pt_BR/fusiondirectory.po b/sogo/locale/pt_BR/fusiondirectory.po
index 2020921652e6c2167ebb63f4db46cdd0192e4edf..35df96a59b4f5812357a172ba720df4a6d82c013 100644
--- a/sogo/locale/pt_BR/fusiondirectory.po
+++ b/sogo/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/sogo/class_sogoManagement.inc:33
 #: admin/sogo/class_sogoManagement.inc:38 config/sogo/class_sogoConfig.inc:42
diff --git a/sogo/locale/ru/fusiondirectory.po b/sogo/locale/ru/fusiondirectory.po
index 87d3fce42f0a6db5c9e92926af4093b6a1513b72..0453782fc7dce3368e3b661bdfc46e61d3c3a355 100644
--- a/sogo/locale/ru/fusiondirectory.po
+++ b/sogo/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/sogo/locale/ru@petr1708/fusiondirectory.po b/sogo/locale/ru@petr1708/fusiondirectory.po
index 8305ce025ec2767bbcaea34acc56a4d6dc7a9040..e4508a8fddc9b5ddfc3f36b49f18253ae399b19a 100644
--- a/sogo/locale/ru@petr1708/fusiondirectory.po
+++ b/sogo/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/sogo/locale/sv/fusiondirectory.po b/sogo/locale/sv/fusiondirectory.po
index 66ae31ecf3e73abc1e6c42c665cb37521f3acc5d..d4b7bfbf0fdddfdeaaf868a0aa15dc38a2ee656e 100644
--- a/sogo/locale/sv/fusiondirectory.po
+++ b/sogo/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/sogo/locale/tr_TR/fusiondirectory.po b/sogo/locale/tr_TR/fusiondirectory.po
index aa222993b103cf37bdd3c9cec9855eda5944dcc4..efdc78fcd08a20c5645cffb6a07713a6550c1860 100644
--- a/sogo/locale/tr_TR/fusiondirectory.po
+++ b/sogo/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/sogo/locale/ug/fusiondirectory.po b/sogo/locale/ug/fusiondirectory.po
index e1137c3135a28ecf0a10330c19d99842416bfe36..2023b4bf5f156d723a10d2cdb68b8ec998b2d5ac 100644
--- a/sogo/locale/ug/fusiondirectory.po
+++ b/sogo/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/sogo/class_sogoManagement.inc:33
 #: admin/sogo/class_sogoManagement.inc:38 config/sogo/class_sogoConfig.inc:42
diff --git a/sogo/locale/vi_VN/fusiondirectory.po b/sogo/locale/vi_VN/fusiondirectory.po
index e4e1a96b190c9830c247a2a172beb909b8c2a23a..d694344e072fc51331bfaf9cb208954e385f556e 100644
--- a/sogo/locale/vi_VN/fusiondirectory.po
+++ b/sogo/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/sogo/locale/zh/fusiondirectory.po b/sogo/locale/zh/fusiondirectory.po
index ddeb57aefbecebe67c9635132f3cc61dcafa6855..9842cdb1f6036a9aea5ec7fca8923a9f8660fe8b 100644
--- a/sogo/locale/zh/fusiondirectory.po
+++ b/sogo/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/sogo/locale/zh_TW/fusiondirectory.po b/sogo/locale/zh_TW/fusiondirectory.po
index d00191a954305ab8e24c36c45e2002d14b404327..cbb1f4657e0d3cf2bc45003e4232dfbbed88b470 100644
--- a/sogo/locale/zh_TW/fusiondirectory.po
+++ b/sogo/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/spamassassin/admin/systems/services/spam/class_serviceSpamAssassin.inc b/spamassassin/admin/systems/services/spam/class_serviceSpamAssassin.inc
index 74eee4c22514d6a886132aa674ffca1a01ce5727..56041895a8752e311b0189c3bdce1364f012efcd 100644
--- a/spamassassin/admin/systems/services/spam/class_serviceSpamAssassin.inc
+++ b/spamassassin/admin/systems/services/spam/class_serviceSpamAssassin.inc
@@ -23,17 +23,17 @@
 class serviceSpamAssassin extends simpleService {
 
   /* This plugin only writes its objectClass */
-  var $objectclasses = array('goSpamServer');
+  var $objectclasses = ['goSpamServer'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Spamassassin service'),
       'plDescription' => _('Spamassassin service').' ('._('Services').')',
       'plIcon'        => 'geticon.php?context=applications&icon=spamassassin&size=16',
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   /*!
@@ -41,89 +41,89 @@ class serviceSpamAssassin extends simpleService {
   */
   static function getAttributesInfo ()
   {
-    return array (
-      'section1' => array (
+    return  [
+      'section1' => [
         'name'  => _('Spam tagging'),
-        'attrs' => array (
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Rewrite header'), _('Rewrite header'),
             'saRewriteHeader'
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Required score'), _('Select required score to tag mail as spam'),
             'saRequiredScore', FALSE,
-            array (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)
+             [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
           ),
-          new SetAttribute (
-            new StringAttribute (
+          new SetAttribute(
+            new StringAttribute(
               _('Trusted networks'), _('Trusted networks'),
               'saTrustedNetworks'
             )
           )
-        )
-      ),
-      'section2' => array (
+        ]
+      ],
+      'section2' => [
         'name'  => _('Flags'),
-        'attrs' => array (
-          new BooleanAttribute (
+        'attrs' => [
+          new BooleanAttribute(
             _('Enable use of bayes filtering'), '',
             'flag_enable_bayes', FALSE,
             FALSE, '', 'B', ''
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Enable bayes auto learning'), '',
             'flag_bayes_autolearn', FALSE,
             FALSE, '', 'b', ''
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Enable RBL checks'), '',
             'flag_enable_rblcheck', FALSE,
             FALSE, '', 'C', ''
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Enable use of Razor'), '',
             'flag_enable_razor', FALSE,
             FALSE, '', 'R', ''
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Enable use of DCC'), '',
             'flag_enable_ddc', FALSE,
             FALSE, '', 'D', ''
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Enable use of Pyzor'), '',
             'flag_enable_pyzor', FALSE,
             FALSE, '', 'P', ''
           ),
-          new FlagsAttribute ('saFlags', array(
+          new FlagsAttribute('saFlags', [
             'flag_enable_bayes',
             'flag_bayes_autolearn',
             'flag_enable_rblcheck',
             'flag_enable_razor',
             'flag_enable_ddc',
             'flag_enable_pyzor'
-          ))
-        )
-      ),
-      'section3' => array (
+          ])
+        ]
+      ],
+      'section3' => [
         'name' => _('Rules'),
-        'attrs' => array (
-          new SetAttribute (
-            new CompositeAttribute (
+        'attrs' => [
+          new SetAttribute(
+            new CompositeAttribute(
               _('Edit spam rule'),
               'saRule',
-              array (
-                new StringAttribute (_('Name'), '', 'ruleName'),
-                new TextAreaAttribute (_('Rule'), '', 'ruleDesc'),
-              ),
+               [
+                new StringAttribute(_('Name'), '', 'ruleName'),
+                new TextAreaAttribute(_('Rule'), '', 'ruleDesc'),
+               ],
               '/^([^:]*):(.*)$/',
               '%s:%s',
               '', _('Edit spam rule')
             )
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 }
 
diff --git a/spamassassin/locale/af_ZA/fusiondirectory.po b/spamassassin/locale/af_ZA/fusiondirectory.po
index efd78ac3bd1b5ff1af8d070f3005f1994491022a..5bc138d8271ad5288187cafea45bbbc657995ce1 100644
--- a/spamassassin/locale/af_ZA/fusiondirectory.po
+++ b/spamassassin/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/spamassassin/locale/ar/fusiondirectory.po b/spamassassin/locale/ar/fusiondirectory.po
index 277065dee4dd010b0f1d17b7abf99e462f785a22..9ed5cf8a9407065c7cfffad96d80e000b13c0bce 100644
--- a/spamassassin/locale/ar/fusiondirectory.po
+++ b/spamassassin/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/spamassassin/locale/ca/fusiondirectory.po b/spamassassin/locale/ca/fusiondirectory.po
index f2de8aff317ce5384fdd00410d9eba8895a564a2..3835086084ff978479b8eecb89917c54d13b7334 100644
--- a/spamassassin/locale/ca/fusiondirectory.po
+++ b/spamassassin/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/spamassassin/locale/cs_CZ/fusiondirectory.po b/spamassassin/locale/cs_CZ/fusiondirectory.po
index 9c80be0866fc869978589f436b83df81f3c92a3b..89e27334d77678d4c6b42f8a49e64c07358882bd 100644
--- a/spamassassin/locale/cs_CZ/fusiondirectory.po
+++ b/spamassassin/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/spamassassin/locale/de/fusiondirectory.po b/spamassassin/locale/de/fusiondirectory.po
index 7e180ba8d89f5f13b59f04e8612801300461f66f..a1abfab34e3df343fc630674ee06fb52abda304b 100644
--- a/spamassassin/locale/de/fusiondirectory.po
+++ b/spamassassin/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/spamassassin/locale/el_GR/fusiondirectory.po b/spamassassin/locale/el_GR/fusiondirectory.po
index c8d83d27bba8d950acc73275808bb92dc872fdbd..9865f4db68d332346e62980775e43cb9220d519a 100644
--- a/spamassassin/locale/el_GR/fusiondirectory.po
+++ b/spamassassin/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/spamassassin/locale/en/fusiondirectory.po b/spamassassin/locale/en/fusiondirectory.po
index 56a3e0d53a85f10b2a11569a52833784e5415592..9e8edf615e4b8c7062f4ad723bac9ffbcba6f656 100644
--- a/spamassassin/locale/en/fusiondirectory.po
+++ b/spamassassin/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,42 +17,6 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: personal/spamassassin/class_spamAssassinAccount.inc:31
-msgid "Spam rules"
-msgstr ""
-
-#: personal/spamassassin/class_spamAssassinAccount.inc:38
-msgid "SpamAssassin user preferences settings"
-msgstr ""
-
-#: personal/spamassassin/class_spamAssassinAccount.inc:42
-msgid "Directive"
-msgstr ""
-
-#: personal/spamassassin/class_spamAssassinAccount.inc:42
-msgid "The name of a SpamAssassin configuration directive"
-msgstr ""
-
-#: personal/spamassassin/class_spamAssassinAccount.inc:47
-msgid "Value"
-msgstr ""
-
-#: personal/spamassassin/class_spamAssassinAccount.inc:47
-msgid "The value for the directive"
-msgstr ""
-
-#: personal/spamassassin/class_spamAssassinAccount.inc:54
-msgid "SpamAssassin user rules"
-msgstr ""
-
-#: personal/spamassassin/class_spamAssassinAccount.inc:65
-msgid "SpamAssassin"
-msgstr ""
-
-#: personal/spamassassin/class_spamAssassinAccount.inc:66
-msgid "Edit user's spam rules"
-msgstr ""
-
 #: admin/systems/services/spam/class_serviceSpamAssassin.inc:31
 #: admin/systems/services/spam/class_serviceSpamAssassin.inc:32
 msgid "Spamassassin service"
@@ -126,3 +90,39 @@ msgstr ""
 #: admin/systems/services/spam/class_serviceSpamAssassin.inc:117
 msgid "Rule"
 msgstr ""
+
+#: personal/spamassassin/class_spamAssassinAccount.inc:31
+msgid "Spam rules"
+msgstr ""
+
+#: personal/spamassassin/class_spamAssassinAccount.inc:38
+msgid "SpamAssassin user preferences settings"
+msgstr ""
+
+#: personal/spamassassin/class_spamAssassinAccount.inc:42
+msgid "Directive"
+msgstr ""
+
+#: personal/spamassassin/class_spamAssassinAccount.inc:42
+msgid "The name of a SpamAssassin configuration directive"
+msgstr ""
+
+#: personal/spamassassin/class_spamAssassinAccount.inc:47
+msgid "Value"
+msgstr ""
+
+#: personal/spamassassin/class_spamAssassinAccount.inc:47
+msgid "The value for the directive"
+msgstr ""
+
+#: personal/spamassassin/class_spamAssassinAccount.inc:54
+msgid "SpamAssassin user rules"
+msgstr ""
+
+#: personal/spamassassin/class_spamAssassinAccount.inc:65
+msgid "SpamAssassin"
+msgstr ""
+
+#: personal/spamassassin/class_spamAssassinAccount.inc:66
+msgid "Edit user's spam rules"
+msgstr ""
diff --git a/spamassassin/locale/es/fusiondirectory.po b/spamassassin/locale/es/fusiondirectory.po
index 50a3c364c3edae519c4ef46db9bad3f2cc5661c3..10c671ae831ddb83640f196aca607ccfc8840299 100644
--- a/spamassassin/locale/es/fusiondirectory.po
+++ b/spamassassin/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/spam/class_serviceSpamAssassin.inc:31
 #: admin/systems/services/spam/class_serviceSpamAssassin.inc:32
diff --git a/spamassassin/locale/es_CO/fusiondirectory.po b/spamassassin/locale/es_CO/fusiondirectory.po
index c9f7147237b531c35f287da7266e095e4cd10d4a..a3ddf3d371f04e59d5e91b2b7b7e29a4088029d2 100644
--- a/spamassassin/locale/es_CO/fusiondirectory.po
+++ b/spamassassin/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/spam/class_serviceSpamAssassin.inc:31
 #: admin/systems/services/spam/class_serviceSpamAssassin.inc:32
diff --git a/spamassassin/locale/es_VE/fusiondirectory.po b/spamassassin/locale/es_VE/fusiondirectory.po
index 7f5c8f90d0776129471b15deed53f881cfaef498..1b076a6c018dba80a1c34bf1e0dbf654ec2ce955 100644
--- a/spamassassin/locale/es_VE/fusiondirectory.po
+++ b/spamassassin/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/spam/class_serviceSpamAssassin.inc:31
 #: admin/systems/services/spam/class_serviceSpamAssassin.inc:32
diff --git a/spamassassin/locale/fa_IR/fusiondirectory.po b/spamassassin/locale/fa_IR/fusiondirectory.po
index cbce0ba16f43f663bee561ca47768c251d6d6bd7..cbcda0ce3e4444ca70cd2f32c4378766f97b40b7 100644
--- a/spamassassin/locale/fa_IR/fusiondirectory.po
+++ b/spamassassin/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/spamassassin/locale/fi_FI/fusiondirectory.po b/spamassassin/locale/fi_FI/fusiondirectory.po
index 533ef61b621c198959febe91a5a2f469cc0c226d..ed096681cbfc115955698aef684d5add803c6406 100644
--- a/spamassassin/locale/fi_FI/fusiondirectory.po
+++ b/spamassassin/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/spamassassin/locale/fr/fusiondirectory.po b/spamassassin/locale/fr/fusiondirectory.po
index dd3a1d8ccb509aafdd6bd73f0c7910f1ca82b63d..ae440c3e644370c029f1b81e9fd462ef25fb0072 100644
--- a/spamassassin/locale/fr/fusiondirectory.po
+++ b/spamassassin/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/spam/class_serviceSpamAssassin.inc:31
 #: admin/systems/services/spam/class_serviceSpamAssassin.inc:32
diff --git a/spamassassin/locale/hu_HU/fusiondirectory.po b/spamassassin/locale/hu_HU/fusiondirectory.po
index d88b7408610300fc6b3d2cfa513d2589546843a4..62e873c4b0ea1fdf2f47535971b710703aded1fd 100644
--- a/spamassassin/locale/hu_HU/fusiondirectory.po
+++ b/spamassassin/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
diff --git a/spamassassin/locale/id/fusiondirectory.po b/spamassassin/locale/id/fusiondirectory.po
index 7023b37837c83b1f2a27a670e2b3394c30af35ff..79290f01c432c01d2f12896263e54ddee20bbcfc 100644
--- a/spamassassin/locale/id/fusiondirectory.po
+++ b/spamassassin/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/spamassassin/locale/it_IT/fusiondirectory.po b/spamassassin/locale/it_IT/fusiondirectory.po
index cd8a4ef32b5fb8052022352557263990f21990e2..6fe6811b983450738a4bdb3642489605f0aac203 100644
--- a/spamassassin/locale/it_IT/fusiondirectory.po
+++ b/spamassassin/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/spam/class_serviceSpamAssassin.inc:31
 #: admin/systems/services/spam/class_serviceSpamAssassin.inc:32
diff --git a/spamassassin/locale/ja/fusiondirectory.po b/spamassassin/locale/ja/fusiondirectory.po
index 65857a70d63500956ff7ece9af0e5fa4404c73cb..46d0beb59163ee62f52e9f19c64996b042de7be7 100644
--- a/spamassassin/locale/ja/fusiondirectory.po
+++ b/spamassassin/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/spamassassin/locale/ko/fusiondirectory.po b/spamassassin/locale/ko/fusiondirectory.po
index efc41e9edff87689a87dcffc524b73b7b7fcab8a..c6708014a6fe102ad17176a3a8357432d172e896 100644
--- a/spamassassin/locale/ko/fusiondirectory.po
+++ b/spamassassin/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/spamassassin/locale/lv/fusiondirectory.po b/spamassassin/locale/lv/fusiondirectory.po
index ad1c56eacde474ec81ce36df61e183749f45eebc..707988382570e4ea8529da1211d861cb530bda3c 100644
--- a/spamassassin/locale/lv/fusiondirectory.po
+++ b/spamassassin/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/spamassassin/locale/nb/fusiondirectory.po b/spamassassin/locale/nb/fusiondirectory.po
index a121d541925cf4860455dfb9becaf51cd729e484..82bcc7be83901b0eac9352b78ebf90c1f1fabef5 100644
--- a/spamassassin/locale/nb/fusiondirectory.po
+++ b/spamassassin/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/spamassassin/locale/nl/fusiondirectory.po b/spamassassin/locale/nl/fusiondirectory.po
index 45c4a09889101a30e68fe7ec9622c5676af94f29..e4e1eda45490c079ddc5f9346b81a997740fadbd 100644
--- a/spamassassin/locale/nl/fusiondirectory.po
+++ b/spamassassin/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/spamassassin/locale/pl/fusiondirectory.po b/spamassassin/locale/pl/fusiondirectory.po
index ebef29ffee4ea8e4d65d20baae40bebe41f14e68..bd98a1cc11f20db39a4422e119b2dfa853b20ce3 100644
--- a/spamassassin/locale/pl/fusiondirectory.po
+++ b/spamassassin/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/spamassassin/locale/pt/fusiondirectory.po b/spamassassin/locale/pt/fusiondirectory.po
index d9b69e311536cda1454fe201e424dbd60de1cf15..bdd9c2c051d384477cb8f1059249f75542777a2a 100644
--- a/spamassassin/locale/pt/fusiondirectory.po
+++ b/spamassassin/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/spam/class_serviceSpamAssassin.inc:31
 #: admin/systems/services/spam/class_serviceSpamAssassin.inc:32
diff --git a/spamassassin/locale/pt_BR/fusiondirectory.po b/spamassassin/locale/pt_BR/fusiondirectory.po
index 7527c272814fb9b68383dc07bd8f6adbd0a71b58..8dbb272ae2d2b9ff27ffb45603fd382b28734a83 100644
--- a/spamassassin/locale/pt_BR/fusiondirectory.po
+++ b/spamassassin/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/spam/class_serviceSpamAssassin.inc:31
 #: admin/systems/services/spam/class_serviceSpamAssassin.inc:32
diff --git a/spamassassin/locale/ru/fusiondirectory.po b/spamassassin/locale/ru/fusiondirectory.po
index 023839799d6e2b40394e8a2cfd1f6478eda581a7..0df9d87568000c4806bbd39f7ba62963e98c28ca 100644
--- a/spamassassin/locale/ru/fusiondirectory.po
+++ b/spamassassin/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/spamassassin/locale/ru@petr1708/fusiondirectory.po b/spamassassin/locale/ru@petr1708/fusiondirectory.po
index 04057dd0a7e695cb955e2cd1778bc8c7ffc54659..38b9ee032f60c2bf06d42cea7b8aa262526b28ab 100644
--- a/spamassassin/locale/ru@petr1708/fusiondirectory.po
+++ b/spamassassin/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/spamassassin/locale/sv/fusiondirectory.po b/spamassassin/locale/sv/fusiondirectory.po
index 4c30cce1df8ab0e94637d7f1179ab5ab8e9b1d26..c1a348f300540171488a5f9cafd1118dfdd845c0 100644
--- a/spamassassin/locale/sv/fusiondirectory.po
+++ b/spamassassin/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/spamassassin/locale/tr_TR/fusiondirectory.po b/spamassassin/locale/tr_TR/fusiondirectory.po
index 4e29bd79b39a0f27b8c4805cb5c2a089333d5b38..ea7d23d61d828878b0aad5d47c69744ac21c08d0 100644
--- a/spamassassin/locale/tr_TR/fusiondirectory.po
+++ b/spamassassin/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/spamassassin/locale/ug/fusiondirectory.po b/spamassassin/locale/ug/fusiondirectory.po
index d6aab3e58df0c9a9b6798e2e1bcd6435dbee3d85..8076da983c38a3c539923350274257a0b09523ae 100644
--- a/spamassassin/locale/ug/fusiondirectory.po
+++ b/spamassassin/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/systems/services/spam/class_serviceSpamAssassin.inc:31
 #: admin/systems/services/spam/class_serviceSpamAssassin.inc:32
diff --git a/spamassassin/locale/vi_VN/fusiondirectory.po b/spamassassin/locale/vi_VN/fusiondirectory.po
index 0fff68eb1d8c140f9795d872b9f0b45f6c066374..33f7171dc73bdfc3bbf232195b2f91d7622aef53 100644
--- a/spamassassin/locale/vi_VN/fusiondirectory.po
+++ b/spamassassin/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/spamassassin/locale/zh/fusiondirectory.po b/spamassassin/locale/zh/fusiondirectory.po
index 81b505795dfc4c23699b2746721c60b4d59a765c..3f1554066d0f5bf7d6328135bb37408b9a68049e 100644
--- a/spamassassin/locale/zh/fusiondirectory.po
+++ b/spamassassin/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/spamassassin/locale/zh_TW/fusiondirectory.po b/spamassassin/locale/zh_TW/fusiondirectory.po
index 7763ebda52266ba02e41f7bd1130994a828c5270..5c9713dd8ada12d9b7afe428fd93d0171135ebb6 100644
--- a/spamassassin/locale/zh_TW/fusiondirectory.po
+++ b/spamassassin/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:20+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/spamassassin/personal/spamassassin/class_spamAssassinAccount.inc b/spamassassin/personal/spamassassin/class_spamAssassinAccount.inc
index 637080657708af82e2a0bd57cc0df57b88131116..13c70ec40a3b889abd50401fbbe7a662182e8893 100644
--- a/spamassassin/personal/spamassassin/class_spamAssassinAccount.inc
+++ b/spamassassin/personal/spamassassin/class_spamAssassinAccount.inc
@@ -21,56 +21,56 @@
 class spamAssassinAccount extends simplePlugin
 {
   var $displayHeader = TRUE;
-  var $objectclasses = array('fdSpamAssassinUser');
+  var $objectclasses = ['fdSpamAssassinUser'];
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Spam rules'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
+        'class' => ['fullwidth'],
+        'attrs' => [
         //~ A user object will have multiple spamassassin attributes, one for each preference setting.
         //~ The attributes themselves should be stored in the database. A spamassassin LDAP attribute should be set to the name of a SpamAssassin configuration directive followed by the value for the directive, separated by a space.
-          new SetAttribute (
-            new CompositeAttribute (
+          new SetAttribute(
+            new CompositeAttribute(
               _('SpamAssassin user preferences settings'),
             'fdSpamAssassinRules',
-              array(
-                new SelectAttribute (
+              [
+                new SelectAttribute(
                   _('Directive'),    _('The name of a SpamAssassin configuration directive'),
                   'fdSpamAssassinRules_directive', TRUE,
-                  array('score', 'whitelist_from', 'required_score')
+                  ['score', 'whitelist_from', 'required_score']
                 ),
-                new StringAttribute (
+                new StringAttribute(
                   _('Value'), _('The value for the directive'),
                   'fdSpamAssassinRules_value'
                 ),
-              ),
+              ],
               '/^(\S*) (.*)$/',
               '%s %s',
               '',
               _('SpamAssassin user rules')
             )
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('SpamAssassin'),
       'plDescription'   => _('Edit user\'s spam rules'),
       'plSelfModify'    => TRUE,
-      'plObjectType'    => array('user'),
+      'plObjectType'    => ['user'],
       'plIcon'          => 'geticon.php?context=applications&icon=spamassassin&size=48',
       'plSmallIcon'     => 'geticon.php?context=applications&icon=spamassassin&size=16',
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 }
 ?>
diff --git a/squid/locale/af_ZA/fusiondirectory.po b/squid/locale/af_ZA/fusiondirectory.po
index e63e3919d750984b31c04261904b1c23d06fc2be..fe0afda19e77bcdf5db4ec97d8ce426937f6221d 100644
--- a/squid/locale/af_ZA/fusiondirectory.po
+++ b/squid/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/squid/locale/ar/fusiondirectory.po b/squid/locale/ar/fusiondirectory.po
index 5a194e4b50f39a54371f074552181453f324e210..2f9d941aeccf2d638302e9f0b8fc64e4104f9775 100644
--- a/squid/locale/ar/fusiondirectory.po
+++ b/squid/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/squid/locale/ca/fusiondirectory.po b/squid/locale/ca/fusiondirectory.po
index e65d95b25b2c35b262dd355da4e470f5782d0df8..30bf3eb3b2e04ed416f87fa1c284b0ac900cb9d8 100644
--- a/squid/locale/ca/fusiondirectory.po
+++ b/squid/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/squid/locale/cs_CZ/fusiondirectory.po b/squid/locale/cs_CZ/fusiondirectory.po
index 76002c5a7d222408dd18351ff22ef712d7e3d29a..bcdeff17579f79f84ccad408924f3e0402b44453 100644
--- a/squid/locale/cs_CZ/fusiondirectory.po
+++ b/squid/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/squid/locale/de/fusiondirectory.po b/squid/locale/de/fusiondirectory.po
index f9508278fd2f3505f5fc720eeb04cfa40b47eee0..e5a7993794c5bd2d2da5b1cfdf37e282caf27e47 100644
--- a/squid/locale/de/fusiondirectory.po
+++ b/squid/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/squid/locale/el_GR/fusiondirectory.po b/squid/locale/el_GR/fusiondirectory.po
index 9bb66e94f57f810f8230015916ad17e31449d7b5..c2c8b4be4d46808b9a4f88eabf8764c30406c4cc 100644
--- a/squid/locale/el_GR/fusiondirectory.po
+++ b/squid/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/squid/locale/en/fusiondirectory.po b/squid/locale/en/fusiondirectory.po
index dd474ceb60863ed82ed8b8dacbce3b27dfc69f4c..b848260164bd3a575db344d7230c187a6fd3faed 100644
--- a/squid/locale/en/fusiondirectory.po
+++ b/squid/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
diff --git a/squid/locale/es/fusiondirectory.po b/squid/locale/es/fusiondirectory.po
index 004c2ab7573893cd2993c1ec2c761513bd8929a6..a5073a47069ecb257638b70c67dbd9f7cc3d1fd2 100644
--- a/squid/locale/es/fusiondirectory.po
+++ b/squid/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/squid/class_proxyAccount.inc:65
 msgid "Proxy"
diff --git a/squid/locale/es_CO/fusiondirectory.po b/squid/locale/es_CO/fusiondirectory.po
index 9c95c921fb940f19f7a69059dbef91556910e22d..2f9d4a55c6ab711842cc4f91160f633ced09db1d 100644
--- a/squid/locale/es_CO/fusiondirectory.po
+++ b/squid/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/squid/class_proxyAccount.inc:65
 msgid "Proxy"
diff --git a/squid/locale/es_VE/fusiondirectory.po b/squid/locale/es_VE/fusiondirectory.po
index bc25924693948b02e54d164b781fca63b709e571..3069da5a533d6b371922a9c059a3de6dbd68fb06 100644
--- a/squid/locale/es_VE/fusiondirectory.po
+++ b/squid/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/squid/class_proxyAccount.inc:65
 msgid "Proxy"
diff --git a/squid/locale/fa_IR/fusiondirectory.po b/squid/locale/fa_IR/fusiondirectory.po
index f277825e7d9c1c264180a00979d5a18ebd8e0070..0230d75184b3cde159b02fa0b1da1d9187917377 100644
--- a/squid/locale/fa_IR/fusiondirectory.po
+++ b/squid/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/squid/locale/fi_FI/fusiondirectory.po b/squid/locale/fi_FI/fusiondirectory.po
index fdffa3f12b2d1e512079407c8233ff346dbbbee0..004321c4c83da123d28c2f85f75b841c9167d2d0 100644
--- a/squid/locale/fi_FI/fusiondirectory.po
+++ b/squid/locale/fi_FI/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
 "MIME-Version: 1.0\n"
diff --git a/squid/locale/fr/fusiondirectory.po b/squid/locale/fr/fusiondirectory.po
index fa480688dd4da4a9125b723ae7386e083fd89bb6..6fec74dddc3dec24f7d2fc7f37649a5bd62bb5f1 100644
--- a/squid/locale/fr/fusiondirectory.po
+++ b/squid/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/squid/class_proxyAccount.inc:65
 msgid "Proxy"
diff --git a/squid/locale/hu_HU/fusiondirectory.po b/squid/locale/hu_HU/fusiondirectory.po
index 374228cf650394c2bb8ba7b60f2078e245c83fea..fe06215e90e0e9462969819dc107d124ed0a8d84 100644
--- a/squid/locale/hu_HU/fusiondirectory.po
+++ b/squid/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/squid/locale/id/fusiondirectory.po b/squid/locale/id/fusiondirectory.po
index 9d396569d49b9aa14fd6d8719966e02d7b4adc28..0b4ab66a1f544d8313f40fdc821ccf790a708256 100644
--- a/squid/locale/id/fusiondirectory.po
+++ b/squid/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/squid/locale/it_IT/fusiondirectory.po b/squid/locale/it_IT/fusiondirectory.po
index 8527083a2cdba9342115728a2df7fdc89c25ad7d..dae4491e6cc635187983ef47af7890c113696ab0 100644
--- a/squid/locale/it_IT/fusiondirectory.po
+++ b/squid/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/squid/class_proxyAccount.inc:65
 msgid "Proxy"
diff --git a/squid/locale/ja/fusiondirectory.po b/squid/locale/ja/fusiondirectory.po
index 1394e59a9bcd8212d28bf02bd35099e81af7d251..e1e6139153e361edcd69dfc1e8e885786866209f 100644
--- a/squid/locale/ja/fusiondirectory.po
+++ b/squid/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/squid/locale/ko/fusiondirectory.po b/squid/locale/ko/fusiondirectory.po
index b343c5381b198c6ca945e2f4d1772919ce5aaf2d..4bdd16b0417ec19205716d738777290979684121 100644
--- a/squid/locale/ko/fusiondirectory.po
+++ b/squid/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/squid/locale/lv/fusiondirectory.po b/squid/locale/lv/fusiondirectory.po
index 8e6d6d47e584b6e777ed21dcbe24f8c5f7026641..8b4b189b58ff232221939708522c19d7f033d421 100644
--- a/squid/locale/lv/fusiondirectory.po
+++ b/squid/locale/lv/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
 "MIME-Version: 1.0\n"
diff --git a/squid/locale/nb/fusiondirectory.po b/squid/locale/nb/fusiondirectory.po
index 182b133a1a2f68902d811e8ce72edc9297c7f4b2..9be8f61156c2fb952f49d4d950b84328be7e2c5b 100644
--- a/squid/locale/nb/fusiondirectory.po
+++ b/squid/locale/nb/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
 "MIME-Version: 1.0\n"
diff --git a/squid/locale/nl/fusiondirectory.po b/squid/locale/nl/fusiondirectory.po
index 2b3379f9a8655b48474ff710212e8c491dcd859e..9c8a18dc8170f54df1bced008a1d61a6fa51caa4 100644
--- a/squid/locale/nl/fusiondirectory.po
+++ b/squid/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/squid/locale/pl/fusiondirectory.po b/squid/locale/pl/fusiondirectory.po
index fad2619a08f10284900002514645066194316feb..24bbd80e58925c73a9e616952e3efcc68a94f63e 100644
--- a/squid/locale/pl/fusiondirectory.po
+++ b/squid/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/squid/locale/pt/fusiondirectory.po b/squid/locale/pt/fusiondirectory.po
index 4cd18e89cb709d19d1883297485c468a7e436b3f..afe13fae365e5effc4f192f9db947da49c0b4be1 100644
--- a/squid/locale/pt/fusiondirectory.po
+++ b/squid/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/squid/class_proxyAccount.inc:65
 msgid "Proxy"
diff --git a/squid/locale/pt_BR/fusiondirectory.po b/squid/locale/pt_BR/fusiondirectory.po
index e9487586b8d995c93e6e2f72e66ca05206bf029d..8c438826ff278fed071b6d40da4f61bb1c161db5 100644
--- a/squid/locale/pt_BR/fusiondirectory.po
+++ b/squid/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/squid/class_proxyAccount.inc:65
 msgid "Proxy"
diff --git a/squid/locale/ru/fusiondirectory.po b/squid/locale/ru/fusiondirectory.po
index 3c51b0ac8aa83dfa483aff4dd03731b4abf66a28..71f4496e82a10d7890f6fd478eb0a285bdcfe6c5 100644
--- a/squid/locale/ru/fusiondirectory.po
+++ b/squid/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/squid/locale/ru@petr1708/fusiondirectory.po b/squid/locale/ru@petr1708/fusiondirectory.po
index 30ebc04d3d433aa3a47768a24cd19f41507ab94f..51a4e9eac9ecffb73f3f2a0b664fedbc0298d732 100644
--- a/squid/locale/ru@petr1708/fusiondirectory.po
+++ b/squid/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/squid/locale/sv/fusiondirectory.po b/squid/locale/sv/fusiondirectory.po
index 2f4a7e5d2b8f8014d8cfbe91f9cadc4d13d4f1c9..c8ecacfa35fa4cee9e3325f2c1c531c5510d7b29 100644
--- a/squid/locale/sv/fusiondirectory.po
+++ b/squid/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/squid/locale/tr_TR/fusiondirectory.po b/squid/locale/tr_TR/fusiondirectory.po
index 31da486d0ff45d676d144108a0017c7eb030bdd6..b09975ac33a62f73ce3724495d72f0d1d6a70562 100644
--- a/squid/locale/tr_TR/fusiondirectory.po
+++ b/squid/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/squid/locale/ug/fusiondirectory.po b/squid/locale/ug/fusiondirectory.po
index d435947a9d3dcc19cd8a98154586bf0d96678fa2..1b5037cd0ca11a3ab5bf3b597a8ac30e6bb89b58 100644
--- a/squid/locale/ug/fusiondirectory.po
+++ b/squid/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: personal/squid/class_proxyAccount.inc:65
 msgid "Proxy"
diff --git a/squid/locale/vi_VN/fusiondirectory.po b/squid/locale/vi_VN/fusiondirectory.po
index e8d76d379f43e5219c1fbc0c4064d74598e707d2..c6c91f6231e08a7b8a0c033676e298898db934a7 100644
--- a/squid/locale/vi_VN/fusiondirectory.po
+++ b/squid/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/squid/locale/zh/fusiondirectory.po b/squid/locale/zh/fusiondirectory.po
index f91a6c6ffbb4ac17a630d98cacae4af693c9f576..ba0c4eef5d61ef5c5a0725d7118303b450a8f642 100644
--- a/squid/locale/zh/fusiondirectory.po
+++ b/squid/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/squid/locale/zh_TW/fusiondirectory.po b/squid/locale/zh_TW/fusiondirectory.po
index dfd86a26064f4f476c609241ce8baa36ed85836a..f753dec823b841e16382dde065ce3aafd42bbaec 100644
--- a/squid/locale/zh_TW/fusiondirectory.po
+++ b/squid/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/squid/personal/squid/class_proxyAccount.inc b/squid/personal/squid/class_proxyAccount.inc
index 3c5d2f4d91d6d9b266f609acf1c58b3800a6abac..77347133731d36de9a8dd34cde0796f2cb3467a1 100644
--- a/squid/personal/squid/class_proxyAccount.inc
+++ b/squid/personal/squid/class_proxyAccount.inc
@@ -29,7 +29,7 @@ class workingTime extends CompositeAttribute
   /*!
    * \brief Write working time values
    */
-  function writeValues($values)
+  function writeValues ($values)
   {
     return $values[0] * 60 + $values[1];
   }
@@ -37,9 +37,9 @@ class workingTime extends CompositeAttribute
   /*!
    * \brief Read working time values
    */
-  function readValues($val)
+  function readValues ($val)
   {
-    $tab = array();
+    $tab = [];
     $val = intval($val);
     $tab[1] = $val % 60;
     $tab[0] = ($val - $tab[1]) / 60;
@@ -52,26 +52,26 @@ class proxyAccount extends simplePlugin
 {
   /* Definitions */
   var $displayHeader    = TRUE;
-  var $objectclasses    = array("gosaProxyAccount");
+  var $objectclasses    = ["gosaProxyAccount"];
 
   /*!
    * \brief  Static  Function returning an ACL information array.
    *
    * \return Array   Returns an ACL array
    */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Proxy'),
       'plDescription'   => _('This allow to store basic squid settings in ldap for each user'),
       'plIcon'          => 'geticon.php?context=applications&icon=squid&size=48',
       'plSmallIcon'     => 'geticon.php?context=applications&icon=squid&size=16',
       'plSelfModify'    => TRUE,
       'plPriority'      => 9,
-      'plObjectType'    => array('user'),
+      'plObjectType'    => ['user'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   /*!
@@ -79,13 +79,13 @@ class proxyAccount extends simplePlugin
    */
   static function getAttributesInfo ()
   {
-    return array(
-      'section1' => array(
+    return [
+      'section1' => [
         'name'      => _('Proxy account'),
         'template'  => get_template_path('proxyAccount.tpl', TRUE, dirname(__FILE__)),
-        'class'     => array('fullwidth'),
+        'class'     => ['fullwidth'],
 
-        'attrs' => array (
+        'attrs' => [
           new BooleanAttribute(
             _('Filter unwanted content (i.e. pornographic or violence related)'),
             _('filterF'),
@@ -93,13 +93,13 @@ class proxyAccount extends simplePlugin
             FALSE,
             FALSE
           ),
-          new workingTime (
+          new workingTime(
             _('Working Start'),
             'gosaProxyWorkingStart',
-            array (
-              new SelectAttribute ( '',  _('HourStart'),   'hourstart',   TRUE, array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24), 1, array('01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24')),
-              new SelectAttribute ( ':', _('MinuteStart'), 'minutestart', TRUE, array('00','15','30','45'))
-            ),
+             [
+              new SelectAttribute( '',  _('HourStart'),   'hourstart',   TRUE, [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24], 1, ['01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24']),
+              new SelectAttribute( ':', _('MinuteStart'), 'minutestart', TRUE, ['00','15','30','45'])
+             ],
             // read format (not used)
             '',
             // write format (not used)
@@ -108,37 +108,37 @@ class proxyAccount extends simplePlugin
             '',
             _('Limit proxy access to working time')
           ),
-          new workingTime (
+          new workingTime(
             _('Working Stop'),
             'gosaProxyWorkingStop',
-            array (
-              new SelectAttribute ( _('-'), _('HourStart'), 'hourstop',   TRUE, array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24), 1, array('01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24')),
-              new SelectAttribute ( _(':'), _('MinuteStop'), 'minutestop', TRUE, array('00','15','30','45'))
-            ),
+             [
+              new SelectAttribute( _('-'), _('HourStart'), 'hourstop',   TRUE, [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24], 1, ['01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24']),
+              new SelectAttribute( _(':'), _('MinuteStop'), 'minutestop', TRUE, ['00','15','30','45'])
+             ],
             '',
             ''
           ),
-          new CompositeAttribute (
+          new CompositeAttribute(
             _('Restrict proxy usage by quota'),
             'gosaProxyQuota',
-            array(
-              new IntAttribute    ('',  _('Up'), 'quota_size', FALSE, 0, FALSE, 21),
-              new SelectAttribute ('', '', 'quota_unit', FALSE, array('k','m','g'), '', array('KB','MB','GB')),
-            ),
+            [
+              new IntAttribute('',  _('Up'), 'quota_size', FALSE, 0, FALSE, 21),
+              new SelectAttribute('', '', 'quota_unit', FALSE, ['k','m','g'], '', ['KB','MB','GB']),
+            ],
             '/^(\\d+)(.)$/',
             '%d%s',
              // acl
             '',
             _('Restrict proxy usage by quota')
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('per'),
             _('per'),
             'gosaProxyQuotaPeriod',
             FALSE,
-            array ('h','d','w','m'), "", array (_("hour"),_("day"),_("week"),_("month"))
+             ['h','d','w','m'], "",  [_("hour"),_("day"),_("week"),_("month")]
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Start Working Hours'),
             _('Starting hours for internet access'),
             'enableWorkingTime',
@@ -147,7 +147,7 @@ class proxyAccount extends simplePlugin
             // acl
             'gosaProxyWorkingStart'
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Proxy Quota'),
             _('Max Data quota for the proxy'),
             'enableQuota',
@@ -156,9 +156,9 @@ class proxyAccount extends simplePlugin
              // acl
             'gosaProxyQuota'
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -170,26 +170,26 @@ class proxyAccount extends simplePlugin
     $this->attributesInfo['section1']['attrs']['enableWorkingTime']->setValue(isset($this->attrs['gosaProxyWorkingStart']));
     $this->attributesInfo['section1']['attrs']['enableWorkingTime']->setInLdap(FALSE);
     $this->attributesInfo['section1']['attrs']['enableWorkingTime']->setManagedAttributes(
-      array(
-        'erase' => array(
-          FALSE => array(
+      [
+        'erase' => [
+          FALSE => [
             'gosaProxyWorkingStart',
             'gosaProxyWorkingStop',
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
     $this->attributesInfo['section1']['attrs']['enableQuota']->setValue(isset($this->attrs['gosaProxyQuota']));
     $this->attributesInfo['section1']['attrs']['enableQuota']->setInLdap(FALSE);
     $this->attributesInfo['section1']['attrs']['enableQuota']->setManagedAttributes(
-      array(
-        'erase' => array(
-          FALSE => array(
+      [
+        'erase' => [
+          FALSE => [
             'gosaProxyQuota',
             'gosaProxyQuotaPeriod',
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
   }
 }
diff --git a/ssh/locale/af_ZA/fusiondirectory.po b/ssh/locale/af_ZA/fusiondirectory.po
index e916190106fb17e2c4e30c196fcb8ab9ebf39de9..664bf11c2159a8343c3aff6e6479746a97445563 100644
--- a/ssh/locale/af_ZA/fusiondirectory.po
+++ b/ssh/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ssh/locale/ar/fusiondirectory.po b/ssh/locale/ar/fusiondirectory.po
index 84f24ef83d116c7e38eab5dc81e4987f4b7910c9..a81118c3d27713c904e56c5623ff9f99da4a278e 100644
--- a/ssh/locale/ar/fusiondirectory.po
+++ b/ssh/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/ssh/locale/ca/fusiondirectory.po b/ssh/locale/ca/fusiondirectory.po
index 07006832bcbd3217ad738b67e20b524872ac3eaf..c7138f2489defe0b8f33baf8784d909fe51c8c92 100644
--- a/ssh/locale/ca/fusiondirectory.po
+++ b/ssh/locale/ca/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ssh/locale/cs_CZ/fusiondirectory.po b/ssh/locale/cs_CZ/fusiondirectory.po
index b20f0d85bb0310e53c54c409a7d6bab671902442..d37e5bdd4c11739db7cb5754bf74c537e6508580 100644
--- a/ssh/locale/cs_CZ/fusiondirectory.po
+++ b/ssh/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/ssh/locale/de/fusiondirectory.po b/ssh/locale/de/fusiondirectory.po
index afbff283d22e2e2e3aab2884a214ba6edda23ee8..864d6842d10224bb20c76cf445db58d8c59580d3 100644
--- a/ssh/locale/de/fusiondirectory.po
+++ b/ssh/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/ssh/locale/el_GR/fusiondirectory.po b/ssh/locale/el_GR/fusiondirectory.po
index 9ca07cad7504a4c52113d3bbe280000d96d355b6..3d85886e04b458e4488f877b951583c4bdf61f91 100644
--- a/ssh/locale/el_GR/fusiondirectory.po
+++ b/ssh/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/ssh/locale/en/fusiondirectory.po b/ssh/locale/en/fusiondirectory.po
index faf62411e636a82e1c3775530d2d6763e6512fa2..fa377c9722bdc566651b96e38ad19c690b47acaf 100644
--- a/ssh/locale/en/fusiondirectory.po
+++ b/ssh/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,31 +17,31 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: personal/ssh/class_sshAccount.inc:58
+#: personal/ssh/class_sshAccount.inc:61
 msgid "Upload error"
 msgstr ""
 
-#: personal/ssh/class_sshAccount.inc:58
+#: personal/ssh/class_sshAccount.inc:61
 msgid "Unknown public key format!"
 msgstr ""
 
-#: personal/ssh/class_sshAccount.inc:81
+#: personal/ssh/class_sshAccount.inc:84
 msgid "SSH Keys"
 msgstr ""
 
-#: personal/ssh/class_sshAccount.inc:87
+#: personal/ssh/class_sshAccount.inc:90
 msgid "SSH public keys for this user"
 msgstr ""
 
-#: personal/ssh/class_sshAccount.inc:104
+#: personal/ssh/class_sshAccount.inc:107
 msgid "SSH"
 msgstr ""
 
-#: personal/ssh/class_sshAccount.inc:105
+#: personal/ssh/class_sshAccount.inc:108
 msgid "Edit user's SSH public keys"
 msgstr ""
 
-#: personal/ssh/class_sshAccount.inc:127
+#: personal/ssh/class_sshAccount.inc:130
 #, php-format
 msgid "Error : there are several keys with fingerprint %s"
 msgstr ""
diff --git a/ssh/locale/es/fusiondirectory.po b/ssh/locale/es/fusiondirectory.po
index dd9a6b01cf330369b3d3d64b4dad2c8a2b81b3ba..56ac7fd49721c2fdaebf79c30ba577ba19309783 100644
--- a/ssh/locale/es/fusiondirectory.po
+++ b/ssh/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/ssh/class_sshAccount.inc:61
 msgid "Upload error"
diff --git a/ssh/locale/es_CO/fusiondirectory.po b/ssh/locale/es_CO/fusiondirectory.po
index d6509207e46411032bd30adc2373abac9f73ba85..5ea5d342b0509533dcea653c06404061b9890a70 100644
--- a/ssh/locale/es_CO/fusiondirectory.po
+++ b/ssh/locale/es_CO/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/ssh/class_sshAccount.inc:61
 msgid "Upload error"
diff --git a/ssh/locale/es_VE/fusiondirectory.po b/ssh/locale/es_VE/fusiondirectory.po
index 538b1547e1e54f3c48615f1119810a3099e74bc3..0112be40257a168d4cfd20e41d3baf9172df4e05 100644
--- a/ssh/locale/es_VE/fusiondirectory.po
+++ b/ssh/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/ssh/class_sshAccount.inc:61
 msgid "Upload error"
diff --git a/ssh/locale/fa_IR/fusiondirectory.po b/ssh/locale/fa_IR/fusiondirectory.po
index f9876be5693b830a6190d89ed9c87edd43658c7c..dcc7352fa82c38653f5aa74f60e0ca4c7f20a4c6 100644
--- a/ssh/locale/fa_IR/fusiondirectory.po
+++ b/ssh/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ssh/locale/fi_FI/fusiondirectory.po b/ssh/locale/fi_FI/fusiondirectory.po
index df6803fb884ca3cbd1e874a75ac826f029e75797..191de58fa03738a56ed7e0859f979cf8e771eb47 100644
--- a/ssh/locale/fi_FI/fusiondirectory.po
+++ b/ssh/locale/fi_FI/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ssh/locale/fr/fusiondirectory.po b/ssh/locale/fr/fusiondirectory.po
index 97cf0be140a790f24dbe8dfbf1932a9b0466d157..83bef99754bfeaa8419c795369cf9faa109110ac 100644
--- a/ssh/locale/fr/fusiondirectory.po
+++ b/ssh/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/ssh/class_sshAccount.inc:61
 msgid "Upload error"
diff --git a/ssh/locale/hu_HU/fusiondirectory.po b/ssh/locale/hu_HU/fusiondirectory.po
index 2149f51990ddeff66747b501f4b99c395c703117..2a1d53e4b742b7c62797cde56f538c503cdba2b2 100644
--- a/ssh/locale/hu_HU/fusiondirectory.po
+++ b/ssh/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ssh/locale/id/fusiondirectory.po b/ssh/locale/id/fusiondirectory.po
index ce7de516f19c7713528ca78d602a68f32c7c9fe0..04242650b38567963823b8fa24f8756bd583d5e6 100644
--- a/ssh/locale/id/fusiondirectory.po
+++ b/ssh/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ssh/locale/it_IT/fusiondirectory.po b/ssh/locale/it_IT/fusiondirectory.po
index 5e360411bfa928f34a83f995105f7aa5f78e3fcd..4d44efa9ba8cd30a4afeddf25536b141a7cf450c 100644
--- a/ssh/locale/it_IT/fusiondirectory.po
+++ b/ssh/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/ssh/class_sshAccount.inc:61
 msgid "Upload error"
diff --git a/ssh/locale/ja/fusiondirectory.po b/ssh/locale/ja/fusiondirectory.po
index 357c7fb7268c3ff4110a049bbc3765c575662e35..b0e07860dc07fbc20cd05088f4f586fe813a96ab 100644
--- a/ssh/locale/ja/fusiondirectory.po
+++ b/ssh/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ssh/locale/ko/fusiondirectory.po b/ssh/locale/ko/fusiondirectory.po
index 1fa1aff59c7d37db670640e07d92f8880683b604..f344ca23d5c51835b4a9d95a922ed61a461ab1c1 100644
--- a/ssh/locale/ko/fusiondirectory.po
+++ b/ssh/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/ssh/locale/lv/fusiondirectory.po b/ssh/locale/lv/fusiondirectory.po
index 6416c52de079cfe7a7c078e9eb20f4ddfd85ebd8..f1fefdf56ffef561d21442f21df09859395a24d5 100644
--- a/ssh/locale/lv/fusiondirectory.po
+++ b/ssh/locale/lv/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ssh/locale/nb/fusiondirectory.po b/ssh/locale/nb/fusiondirectory.po
index dbb452df4fd517e79e59186d6295f63cce6eecdf..a23d725455b685ee1660aca9e32e4d6d000c502b 100644
--- a/ssh/locale/nb/fusiondirectory.po
+++ b/ssh/locale/nb/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ssh/locale/nl/fusiondirectory.po b/ssh/locale/nl/fusiondirectory.po
index 2fed07e5d9348f6b957eb1aade8821bfc3a89687..be477624155d4588f564d87ada322aa396e4ab2e 100644
--- a/ssh/locale/nl/fusiondirectory.po
+++ b/ssh/locale/nl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/ssh/locale/pl/fusiondirectory.po b/ssh/locale/pl/fusiondirectory.po
index f54ee7308c88a9503ace878f11a198f534edf8db..effce449d43bf4a60ad2bb5532dc147967e01844 100644
--- a/ssh/locale/pl/fusiondirectory.po
+++ b/ssh/locale/pl/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ssh/locale/pt/fusiondirectory.po b/ssh/locale/pt/fusiondirectory.po
index e2917ef1a27c1f05e971369b91fb73c9be92c059..dd46f3dd6c96e730eebb0bdba2eaac888e95b5cb 100644
--- a/ssh/locale/pt/fusiondirectory.po
+++ b/ssh/locale/pt/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/ssh/class_sshAccount.inc:61
 msgid "Upload error"
diff --git a/ssh/locale/pt_BR/fusiondirectory.po b/ssh/locale/pt_BR/fusiondirectory.po
index b0138ca94b96000102dd20c370c6dc266f6b8653..81effd2faea6377832da77e1b7073b95998e7f76 100644
--- a/ssh/locale/pt_BR/fusiondirectory.po
+++ b/ssh/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/ssh/class_sshAccount.inc:61
 msgid "Upload error"
diff --git a/ssh/locale/ru/fusiondirectory.po b/ssh/locale/ru/fusiondirectory.po
index 0b1ca4798a605c441169b71137bed20e7347c655..8fc7e06c67537718b2ef40feae6781091ad1d593 100644
--- a/ssh/locale/ru/fusiondirectory.po
+++ b/ssh/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/ssh/locale/ru@petr1708/fusiondirectory.po b/ssh/locale/ru@petr1708/fusiondirectory.po
index 97763eb0d2037bbbf0d9bc23d049d2c79cf195fa..9359bb3eb52c4e7a8b42ecea9f5f20ea94841724 100644
--- a/ssh/locale/ru@petr1708/fusiondirectory.po
+++ b/ssh/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ssh/locale/sv/fusiondirectory.po b/ssh/locale/sv/fusiondirectory.po
index 5bef3e7b25a71c4200d1bda9bfccd01294293896..0567c4ebf0df869551a88db5b56901ce1c062f07 100644
--- a/ssh/locale/sv/fusiondirectory.po
+++ b/ssh/locale/sv/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ssh/locale/tr_TR/fusiondirectory.po b/ssh/locale/tr_TR/fusiondirectory.po
index 005bad7022b817a437ef3bc7a7b75b76204e0166..cb8e4865151e2a2f5d352211f70215ec767d982e 100644
--- a/ssh/locale/tr_TR/fusiondirectory.po
+++ b/ssh/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2020
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2020\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -23,15 +27,15 @@ msgstr ""
 
 #: personal/ssh/class_sshAccount.inc:61
 msgid "Unknown public key format!"
-msgstr ""
+msgstr "Bilinmeyen ortak anahtar biçimi!"
 
 #: personal/ssh/class_sshAccount.inc:84
 msgid "SSH Keys"
-msgstr ""
+msgstr "SSH Anahtarları"
 
 #: personal/ssh/class_sshAccount.inc:90
 msgid "SSH public keys for this user"
-msgstr ""
+msgstr "Bu kullanıcı için SSH açık anahtarları"
 
 #: personal/ssh/class_sshAccount.inc:107
 msgid "SSH"
@@ -39,9 +43,9 @@ msgstr ""
 
 #: personal/ssh/class_sshAccount.inc:108
 msgid "Edit user's SSH public keys"
-msgstr ""
+msgstr "Kullanıcının SSH açık anahtarlarını düzenleme"
 
 #: personal/ssh/class_sshAccount.inc:130
 #, php-format
 msgid "Error : there are several keys with fingerprint %s"
-msgstr ""
+msgstr "Hata: parmak izine sahip birkaç anahtar var. %s"
diff --git a/ssh/locale/ug/fusiondirectory.po b/ssh/locale/ug/fusiondirectory.po
index 400cbcc47eb39ea3d4f6c3cd736ee707d144cb76..bf38decdb8606e6a10bc374f8f75978a53851f2b 100644
--- a/ssh/locale/ug/fusiondirectory.po
+++ b/ssh/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: personal/ssh/class_sshAccount.inc:61
 msgid "Upload error"
diff --git a/ssh/locale/vi_VN/fusiondirectory.po b/ssh/locale/vi_VN/fusiondirectory.po
index 6ec8f43df16d54eab123ed69d47cd7c58299b188..32e435f28b62b79a6abd480a45de1aa61220a239 100644
--- a/ssh/locale/vi_VN/fusiondirectory.po
+++ b/ssh/locale/vi_VN/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ssh/locale/zh/fusiondirectory.po b/ssh/locale/zh/fusiondirectory.po
index 828c3b79728bb4770838468f89fb2afd1ff58c29..06c312664a132f35cb848db64a94f0970707b391 100644
--- a/ssh/locale/zh/fusiondirectory.po
+++ b/ssh/locale/zh/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ssh/locale/zh_TW/fusiondirectory.po b/ssh/locale/zh_TW/fusiondirectory.po
index 19f095b85d8d23ecd4b06bc3f07a6efbd4500117..e9ca5b09aa5c636cd593289b2a48d04e593e5f71 100644
--- a/ssh/locale/zh_TW/fusiondirectory.po
+++ b/ssh/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/ssh/personal/ssh/class_sshAccount.inc b/ssh/personal/ssh/class_sshAccount.inc
index d75c7bed072e96ea48f540672c1ec61ac2c88ded..9ce341bef008ea26219540ebe201620e2a633614 100644
--- a/ssh/personal/ssh/class_sshAccount.inc
+++ b/ssh/personal/ssh/class_sshAccount.inc
@@ -43,16 +43,16 @@ class SSHPublicKeyAttribute extends FileTextAreaAttribute
           $type = $match[3];
           break;
       }
-      return array(
+      return [
         $type,
         $fingerprint,
         $comment
-      );
+      ];
     }
     return parent::getArrayValue();
   }
 
-  function readFile($handle)
+  function readFile ($handle)
   {
     $line = fgets($handle);
     if (preg_match($this->format, $line)) {
@@ -63,7 +63,7 @@ class SSHPublicKeyAttribute extends FileTextAreaAttribute
     @fclose($handle);
   }
 
-  function fingerprint($data)
+  function fingerprint ($data)
   {
     $result = md5($data);
     $result = preg_replace('/(..)/', '\1:', $result);
@@ -74,17 +74,17 @@ class SSHPublicKeyAttribute extends FileTextAreaAttribute
 class sshAccount extends simplePlugin
 {
   var $displayHeader = TRUE;
-  var $objectclasses = array('ldapPublicKey');
+  var $objectclasses = ['ldapPublicKey'];
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('SSH Keys'),
         'icon'  => 'geticon.php?context=status&icon=dialog-password&size=16',
-        'class' => array('fullwidth'),
-        'attrs' => array(
+        'class' => ['fullwidth'],
+        'attrs' => [
           new OrderedArrayAttribute(
             new SSHPublicKeyAttribute(
               '', _('SSH public keys for this user'),
@@ -92,36 +92,36 @@ class sshAccount extends simplePlugin
             ),
             // no order
             FALSE,
-            array(),
+            [],
             // edit enabled
             TRUE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('SSH'),
       'plDescription'   => _('Edit user\'s SSH public keys'),
       'plSelfModify'    => TRUE,
-      'plDepends'       => array('posixAccount'),
+      'plDepends'       => ['posixAccount'],
       'plPriority'      => 6,
-      'plObjectType'    => array('user'),
+      'plObjectType'    => ['user'],
       'plIcon'          => 'geticon.php?context=applications&icon=ssh&size=48',
       'plSmallIcon'     => 'geticon.php?context=applications&icon=ssh&size=16',
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
-  function check()
+  function check ()
   {
     $message = parent::check();
 
-    $fingerprints = array();
+    $fingerprints = [];
     $values = $this->attributesAccess['sshPublicKey']->getValue();
     foreach ($values as $value) {
       $this->attributesAccess['sshPublicKey']->attribute->setValue($value);
diff --git a/subcontracting/locale/af_ZA/fusiondirectory.po b/subcontracting/locale/af_ZA/fusiondirectory.po
index 3e1f792120e932c273986648a8ded7206830983e..b218ac001c560884dee340ba746de2db66b6de2e 100644
--- a/subcontracting/locale/af_ZA/fusiondirectory.po
+++ b/subcontracting/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/subcontracting/locale/ar/fusiondirectory.po b/subcontracting/locale/ar/fusiondirectory.po
index 92f5bcb9d50f6b04f2dc76c107db42894143db17..8723b9215224e06961219329e6793b2875850a07 100644
--- a/subcontracting/locale/ar/fusiondirectory.po
+++ b/subcontracting/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/subcontracting/locale/ca/fusiondirectory.po b/subcontracting/locale/ca/fusiondirectory.po
index 42259272bc4731cd7c8f9a5f152033d35c99734c..83210df479d0273a16179eb07ecf8b71b21c5de9 100644
--- a/subcontracting/locale/ca/fusiondirectory.po
+++ b/subcontracting/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/subcontracting/locale/cs_CZ/fusiondirectory.po b/subcontracting/locale/cs_CZ/fusiondirectory.po
index d10d55b48bbe50d2c6e1ac973a8f894cf0bdf6fb..215ca8d7eb5c490b57ae998a24ef20dc92431472 100644
--- a/subcontracting/locale/cs_CZ/fusiondirectory.po
+++ b/subcontracting/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/subcontracting/locale/de/fusiondirectory.po b/subcontracting/locale/de/fusiondirectory.po
index ab2840c7c99968494e4bf607593e10915f3b4f21..fbe6b0d3057d11aabbec9f4708a238e4c4e8039c 100644
--- a/subcontracting/locale/de/fusiondirectory.po
+++ b/subcontracting/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/subcontracting/locale/el_GR/fusiondirectory.po b/subcontracting/locale/el_GR/fusiondirectory.po
index cea9184dff01501d892494a1e1aa430cf565b005..3ff2464fa50d4cf5210b53f5124ee9db328a3ad4 100644
--- a/subcontracting/locale/el_GR/fusiondirectory.po
+++ b/subcontracting/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/subcontracting/locale/en/fusiondirectory.po b/subcontracting/locale/en/fusiondirectory.po
index c8f376cb7858c0f916165033be22134d20b36329..76e84ff3f673a588de2fb5c748d0ce2e6c7eb8a6 100644
--- a/subcontracting/locale/en/fusiondirectory.po
+++ b/subcontracting/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
diff --git a/subcontracting/locale/es/fusiondirectory.po b/subcontracting/locale/es/fusiondirectory.po
index d323a4f30dea330cf8da4bcd601f1e7b70a668d1..9133bc6c4a33182d037ee1ae7c30c7492c8fdeca 100644
--- a/subcontracting/locale/es/fusiondirectory.po
+++ b/subcontracting/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/subcontracting/class_subContracting.inc:33
 msgid "Subcontracting"
diff --git a/subcontracting/locale/es_CO/fusiondirectory.po b/subcontracting/locale/es_CO/fusiondirectory.po
index 15373810a460ac9071acd414fa2eec63ef6ae6f5..ff5d86168b35ff38adb984e9dde5cb58b3d45b79 100644
--- a/subcontracting/locale/es_CO/fusiondirectory.po
+++ b/subcontracting/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/subcontracting/class_subContracting.inc:33
 msgid "Subcontracting"
diff --git a/subcontracting/locale/es_VE/fusiondirectory.po b/subcontracting/locale/es_VE/fusiondirectory.po
index b46ba41b430719352a16e7a61c390ba80ab659d9..1529f376f1294157fcd4099211f0d4382f0c29c6 100644
--- a/subcontracting/locale/es_VE/fusiondirectory.po
+++ b/subcontracting/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/subcontracting/class_subContracting.inc:33
 msgid "Subcontracting"
diff --git a/subcontracting/locale/fa_IR/fusiondirectory.po b/subcontracting/locale/fa_IR/fusiondirectory.po
index 5e9ae365442c203afbb058c5b95599ecdb705bb5..faf698e871e81a432dd8369b0ba6556cbca7a5ad 100644
--- a/subcontracting/locale/fa_IR/fusiondirectory.po
+++ b/subcontracting/locale/fa_IR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
diff --git a/subcontracting/locale/fi_FI/fusiondirectory.po b/subcontracting/locale/fi_FI/fusiondirectory.po
index 96b2ba4474950a31d65f569baf98bae5a08c20b8..02f0c2579de0cda0e017f2c1f1812dcb8264cc69 100644
--- a/subcontracting/locale/fi_FI/fusiondirectory.po
+++ b/subcontracting/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/subcontracting/locale/fr/fusiondirectory.po b/subcontracting/locale/fr/fusiondirectory.po
index f1972a592db5d0312db677fad0d4bea98efa5b73..24cb13d4033cba6f8d1ab096c3745bdab7df9260 100644
--- a/subcontracting/locale/fr/fusiondirectory.po
+++ b/subcontracting/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/subcontracting/class_subContracting.inc:33
 msgid "Subcontracting"
diff --git a/subcontracting/locale/hu_HU/fusiondirectory.po b/subcontracting/locale/hu_HU/fusiondirectory.po
index 70ea1e132c0690e4b183ab34019eb3b842b210f6..1639d3875eb4f4d48ea87be0fb06d44e4d4feda7 100644
--- a/subcontracting/locale/hu_HU/fusiondirectory.po
+++ b/subcontracting/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/subcontracting/locale/id/fusiondirectory.po b/subcontracting/locale/id/fusiondirectory.po
index 07557c4ddb98c823710957a28672a8f756d00dff..73fa4dbadca16da03bdcce5864cb2f843862bb96 100644
--- a/subcontracting/locale/id/fusiondirectory.po
+++ b/subcontracting/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/subcontracting/locale/it_IT/fusiondirectory.po b/subcontracting/locale/it_IT/fusiondirectory.po
index 5d8d8c713360174b61a34dea2e9ffd70956236fc..43550405e54c8982d05646b075e34890e6ce6b77 100644
--- a/subcontracting/locale/it_IT/fusiondirectory.po
+++ b/subcontracting/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/subcontracting/class_subContracting.inc:33
 msgid "Subcontracting"
diff --git a/subcontracting/locale/ja/fusiondirectory.po b/subcontracting/locale/ja/fusiondirectory.po
index 56badc687f61a18e119be40ebbfb2afb026042af..ff1ec74d5f86d899a20521616fb9e0ebd6bc79e2 100644
--- a/subcontracting/locale/ja/fusiondirectory.po
+++ b/subcontracting/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/subcontracting/locale/ko/fusiondirectory.po b/subcontracting/locale/ko/fusiondirectory.po
index 64fce6575f6409a5985722236b19654375f71f1e..4c4f17341e0570c6cca53074faa66ceeeaa6e6ae 100644
--- a/subcontracting/locale/ko/fusiondirectory.po
+++ b/subcontracting/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/subcontracting/locale/lv/fusiondirectory.po b/subcontracting/locale/lv/fusiondirectory.po
index 9e1a82d8eb814b44d8bcc78cbb27a27222bbcec9..0c75c78ddc366ad1ca4903955c0fbe55737a1839 100644
--- a/subcontracting/locale/lv/fusiondirectory.po
+++ b/subcontracting/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/subcontracting/locale/nb/fusiondirectory.po b/subcontracting/locale/nb/fusiondirectory.po
index 7a33b1726fa27985968be8876e4452bbdfe1a1a2..8612fc2dfdda0ca90e46349c56b7bfd407a7ee4b 100644
--- a/subcontracting/locale/nb/fusiondirectory.po
+++ b/subcontracting/locale/nb/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
 "MIME-Version: 1.0\n"
diff --git a/subcontracting/locale/nl/fusiondirectory.po b/subcontracting/locale/nl/fusiondirectory.po
index b983d4826d2b93ef55735eaef0d7b4f0d49f0205..0e836b5985570acc317163d43ac0cd7bd8ceed6a 100644
--- a/subcontracting/locale/nl/fusiondirectory.po
+++ b/subcontracting/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/subcontracting/locale/pl/fusiondirectory.po b/subcontracting/locale/pl/fusiondirectory.po
index 0cf7e8a28719eafd5505cf6f757851c6ab5e4147..125cdb8dc328778c15f7e90d2fd31e4658a29abc 100644
--- a/subcontracting/locale/pl/fusiondirectory.po
+++ b/subcontracting/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/subcontracting/locale/pt/fusiondirectory.po b/subcontracting/locale/pt/fusiondirectory.po
index dce824a1ef634eb1c9c0997deca3861f9bc00f50..44d4b238c25b8b97a8bd3975c1888a5ecf309278 100644
--- a/subcontracting/locale/pt/fusiondirectory.po
+++ b/subcontracting/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/subcontracting/class_subContracting.inc:33
 msgid "Subcontracting"
diff --git a/subcontracting/locale/pt_BR/fusiondirectory.po b/subcontracting/locale/pt_BR/fusiondirectory.po
index 1058579ab675473d32706a1e2ab0f4e3ac11d5af..17e2de62d3d7840d58dec748783ef8269341665c 100644
--- a/subcontracting/locale/pt_BR/fusiondirectory.po
+++ b/subcontracting/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: personal/subcontracting/class_subContracting.inc:33
 msgid "Subcontracting"
diff --git a/subcontracting/locale/ru/fusiondirectory.po b/subcontracting/locale/ru/fusiondirectory.po
index dbac70d8c90a9aabd3df72ce66e1d1557eafd91c..f014ed6685351c6ecd852e67ca46be7605ac6c4e 100644
--- a/subcontracting/locale/ru/fusiondirectory.po
+++ b/subcontracting/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/subcontracting/locale/ru@petr1708/fusiondirectory.po b/subcontracting/locale/ru@petr1708/fusiondirectory.po
index 3a78f12e4efd661c3d125ad483ffacbeb454e34f..4b47f65eaaa343ee3d3f0899c52a3cf220384731 100644
--- a/subcontracting/locale/ru@petr1708/fusiondirectory.po
+++ b/subcontracting/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/subcontracting/locale/sv/fusiondirectory.po b/subcontracting/locale/sv/fusiondirectory.po
index d5b6d540101edddb9d845ad1089f3f39419fc589..6cd3b8e09c95de0b2b8644d8e103fb617259a3c3 100644
--- a/subcontracting/locale/sv/fusiondirectory.po
+++ b/subcontracting/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/subcontracting/locale/tr_TR/fusiondirectory.po b/subcontracting/locale/tr_TR/fusiondirectory.po
index e7d9790e9f926bca1f41e2ab409b182cd5bffcc3..a9b5cedd80c0e25fc153225d197050ad4afc01b1 100644
--- a/subcontracting/locale/tr_TR/fusiondirectory.po
+++ b/subcontracting/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/subcontracting/locale/ug/fusiondirectory.po b/subcontracting/locale/ug/fusiondirectory.po
index 119c5e823f3bdaa898a3628479fa731ecaa3d1e2..905adc10cdeb8018f765854508e82f51efbe44fe 100644
--- a/subcontracting/locale/ug/fusiondirectory.po
+++ b/subcontracting/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: personal/subcontracting/class_subContracting.inc:33
 msgid "Subcontracting"
diff --git a/subcontracting/locale/vi_VN/fusiondirectory.po b/subcontracting/locale/vi_VN/fusiondirectory.po
index 51e30c7d61c651edfae29a25c96087f97152fac3..0da58656bc367440ce1477b6745c300538700283 100644
--- a/subcontracting/locale/vi_VN/fusiondirectory.po
+++ b/subcontracting/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/subcontracting/locale/zh/fusiondirectory.po b/subcontracting/locale/zh/fusiondirectory.po
index 2c6d6b3dc8424b004ec0f6dc036c4956da710b48..bb36718299281b09b055b9a9a653fcaba62719b1 100644
--- a/subcontracting/locale/zh/fusiondirectory.po
+++ b/subcontracting/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/subcontracting/locale/zh_TW/fusiondirectory.po b/subcontracting/locale/zh_TW/fusiondirectory.po
index 0ce205717a26a9beefdd35ec5d04516012f93f81..799716670a5233814832a49959a57ade93c735a3 100644
--- a/subcontracting/locale/zh_TW/fusiondirectory.po
+++ b/subcontracting/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:45+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/subcontracting/personal/subcontracting/class_subContracting.inc b/subcontracting/personal/subcontracting/class_subContracting.inc
index d9e3789248992d13a636cfe5dcfb059403f4626d..bafeb767a8deb106e020fb6445a98c13b6788210 100644
--- a/subcontracting/personal/subcontracting/class_subContracting.inc
+++ b/subcontracting/personal/subcontracting/class_subContracting.inc
@@ -25,65 +25,65 @@ class subContractingAccount extends simplePlugin
   var $displayHeader = TRUE;
 
   // Here we indicate which LDAP classes our plugin is using.
-  var $objectclasses = array('fdSubcontractingPerson');
+  var $objectclasses = ['fdSubcontractingPerson'];
 
   static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Subcontracting'),
       'plDescription' => _('Information needed for sub contracts'),
-      'plObjectType'  => array('user'),
+      'plObjectType'  => ['user'],
       'plIcon'        => 'geticon.php?context=applications&icon=subcontracting&size=48',
       'plSmallIcon'   => 'geticon.php?context=applications&icon=subcontracting&size=16',
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('SubContracting Information'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Intermediate'),
             _('Contact to the final customer'),
             'fdMissionIntermediate',
             FALSE,
             ''
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Final Customer'),
             _('Final Customer for this mission'),
             'fdMissionFinalCustomer',
             FALSE,
             ''
           ),
-          new MailAttribute (
+          new MailAttribute(
             _('Mail Address'),
             _('Mail address assigned for this mission'),
             'fdMissionMail',
             FALSE,
             ''
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Phone'),
             _('Phone number assigned for this mission'),
             'fdMissionPhone',
             FALSE,
             ''
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Street Address'),
             _('Address where this mission is executed'),
             'fdMissionAddress',
             FALSE,
             ''
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/sudo/admin/sudo/class_sudoGeneric.inc b/sudo/admin/sudo/class_sudoGeneric.inc
index 27b984bdc1686506857cba211a815f41b33fff92..3d33328c7cdbe1edf850bb56a32aa08fc1557368 100644
--- a/sudo/admin/sudo/class_sudoGeneric.inc
+++ b/sudo/admin/sudo/class_sudoGeneric.inc
@@ -37,7 +37,7 @@ class SudoUsersGroupsAttribute extends DialogAttribute
 
   function getFilterBlackList ()
   {
-    $used = array();
+    $used = [];
     foreach ($this->value as $name) {
       $str = preg_replace("/^!/", "", $name);
       if (preg_match("/^%/", $str)) {
@@ -57,12 +57,12 @@ class SudoSystemsAttribute extends SystemsAttribute
     $id = $this->getHtmlId();
     $buttons  = $this->renderInputField(
       'submit', 'add'.$id.'_ALL',
-      array('value' => 'ALL')
+      ['value' => 'ALL']
     );
     return $buttons.parent::renderButtons();
   }
 
-  public function htmlIds()
+  public function htmlIds ()
   {
     $id = $this->getHtmlId();
     $ids = parent::htmlIds();
@@ -75,7 +75,7 @@ class SudoSystemsAttribute extends SystemsAttribute
     parent::loadPostValue();
     if ($this->isVisible()) {
       if (isset($_POST['add'.$this->getHtmlId().'_ALL'])) {
-        $this->value = array('ALL');
+        $this->value = ['ALL'];
       }
     }
   }
@@ -114,109 +114,109 @@ class defaultRoleAttribute extends BooleanAttribute
  */
 class sudo extends simplePlugin
 {
-  public $objectclasses = array('sudoRole');
+  public $objectclasses = ['sudoRole'];
   var $mainTab          = TRUE;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    $posixGroupClass = (class_available('mixedGroup') ? 'ogroup' : 'posixGroup');
+    return [
       'plShortName'   => _('Sudo'),
       'plDescription' => _('Sudo role'),
       'plIcon'        => 'geticon.php?context=applications&icon=sudo&size=48',
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array('sudo' => array(
+      'plObjectType'  => ['sudo' => [
         'name'      => _('Sudo role'),
         'filter'    => 'objectClass=sudoRole',
         'icon'      => 'geticon.php?context=applications&icon=sudo&size=16',
         'ou'        => get_ou('sudoRDN'),
         'tabClass'  => 'sudotabs',
-      )),
-      'plForeignKeys'  => array(
-        'sudoUser'   => array(
-          array('user', 'uid', '(sudoUser=%oldvalue%)'),
-          array('posixGroup', 'cn', '(sudoUser=%|%%oldvalue%)'),
-          array('mixedGroup', 'cn', '(sudoUser=%|%%oldvalue%)'),
-        ),
-        'sudoHost'   => array(
-          array('serverGeneric', 'cn'),
-          array('workstationGeneric', 'cn'),
-          array('terminalGeneric', 'cn'),
-        ),
-      ),
+      ]],
+      'plForeignKeys'  => [
+        'sudoUser'   => [
+          ['user', 'uid', '(sudoUser=%oldvalue%)'],
+          [$posixGroupClass, 'cn', '(sudoUser=%|%%oldvalue%)'],
+        ],
+        'sudoHost'   => [
+          ['serverGeneric', 'cn'],
+          ['workstationGeneric', 'cn'],
+          ['terminalGeneric', 'cn'],
+        ],
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array (
-      'section1' => array (
+    return  [
+      'section1' => [
         'name'  => _('Role settings'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
-          new defaultRoleAttribute (FALSE),
-          new BaseSelectorAttribute (get_ou('sudoRDN')),
-          new StringAttribute (
+        'class' => ['fullwidth'],
+        'attrs' => [
+          new defaultRoleAttribute(FALSE),
+          new BaseSelectorAttribute(get_ou('sudoRDN')),
+          new StringAttribute(
             _('Name'), _('Name of the role'),
             'cn', TRUE,
             ''
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Description'), _('Description for the new sudo role'),
             'description', FALSE
           ),
-          new SetAttribute (
-            new StringAttribute (
+          new SetAttribute(
+            new StringAttribute(
               _('Commands'),
               _('A Unix command with optional command line arguments, potentially including globbing characters (aka wild cards)'),
               'sudoCommand', FALSE
             )
           ),
-          new SetAttribute (
-            new StringAttribute (
+          new SetAttribute(
+            new StringAttribute(
               _('Run as (user)'),
               _('User(s) impersonated by sudo'),
               'sudoRunAsUser', FALSE
             ),
-            array('ALL')
+            ['ALL']
           ),
-          new SetAttribute (
-            new StringAttribute (
+          new SetAttribute(
+            new StringAttribute(
               _('Run as (group)'),
               _('Group(s) impersonated by sudo'),
               'sudoRunAsGroup', FALSE
             ),
-            array('ALL')
+            ['ALL']
           ),
-          new SudoSystemsAttribute (
+          new SudoSystemsAttribute(
             _('Systems'), _('A host name, IP address or IP network'),
             'sudoHost', FALSE,
-            array('ALL')
+            ['ALL']
           ),
-          new SudoUsersGroupsAttribute (
+          new SudoUsersGroupsAttribute(
             _('Users and groups'),
             _("A user name, user ID (prefixed with '#'), Unix group (prefixed with '%')"),
             'sudoUser', FALSE
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Priority'), _('This rule priority compared to others'),
             'sudoOrder', FALSE,
             0, FALSE, 0
           ),
-          new GeneralizedTimeDateAttribute (
+          new GeneralizedTimeDateAttribute(
             _('Valid starting from'), _('Start of time interval for which the entry is valid (leave empty to disable)'),
             'sudoNotBefore', FALSE,
             ''
           ),
-          new GeneralizedTimeDateAttribute (
+          new GeneralizedTimeDateAttribute(
             _('Valid until'), _('End of time interval for which the entry is valid (leave empty to disable)'),
             'sudoNotAfter', FALSE,
             ''
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -224,9 +224,9 @@ class sudo extends simplePlugin
     parent::__construct($dn, $object, $parent, $mainTab);
     $this->attributesAccess['isDefaultRole']->setValue($this->is_default());
     $this->attributesAccess['isDefaultRole']->setManagedAttributes(
-      array(
-        'erase' => array(
-          TRUE => array(
+      [
+        'erase' => [
+          TRUE => [
             'base',
             'sudoUser',
             'sudoCommand',
@@ -234,40 +234,40 @@ class sudo extends simplePlugin
             'sudoRunAsUser',
             'sudoRunAsGroup',
             'sudoOrder',
-          )
-        ),
-        'disable' => array(
-          TRUE => array(
+          ]
+        ],
+        'disable' => [
+          TRUE => [
             'cn'
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
   }
 
 
-  public function set_default($state)
+  public function set_default ($state)
   {
     $this->attributesAccess['isDefaultRole']->setValue($state);
   }
 
-  public function is_default()
+  public function is_default ()
   {
     return preg_match("/^defaults$/i", $this->attributesAccess['cn']->getValue());
   }
 
   function foreignKeyCheck ($field, $fieldvalue, $source)
   {
-    if (($field == 'sudoUser') && (($source['CLASS'] == 'posixGroup') || ($source['CLASS'] == 'mixedGroup'))) {
+    if (($field == 'sudoUser') && (($source['CLASS'] == 'posixGroup') || ($source['CLASS'] == 'ogroup'))) {
       return parent::foreignKeyCheck($field, '%'.$fieldvalue, $source);
     } else {
       return parent::foreignKeyCheck($field, $fieldvalue, $source);
     }
   }
 
-  function foreignKeyUpdate($field, $oldvalue, $newvalue, $source)
+  function foreignKeyUpdate ($field, $oldvalue, $newvalue, $source)
   {
-    if (($field == 'sudoUser') && (($source['CLASS'] == 'posixGroup') || ($source['CLASS'] == 'mixedGroup'))) {
+    if (($field == 'sudoUser') && (($source['CLASS'] == 'posixGroup') || ($source['CLASS'] == 'ogroup'))) {
       return parent::foreignKeyUpdate($field, '%'.$oldvalue, '%'.$newvalue, $source);
     } else {
       return parent::foreignKeyUpdate($field, $oldvalue, $newvalue, $source);
diff --git a/sudo/admin/sudo/class_sudoManagement.inc b/sudo/admin/sudo/class_sudoManagement.inc
index c1013cac5a8527c2123dda158200e90bf44e34b8..123bb53678bedda8626c2db4305902a8a1d98808 100644
--- a/sudo/admin/sudo/class_sudoManagement.inc
+++ b/sudo/admin/sudo/class_sudoManagement.inc
@@ -21,39 +21,39 @@
 
 class sudoManagement extends simpleManagement
 {
-  protected $objectTypes = array('sudo');
+  protected $objectTypes = ['sudo'];
 
-  protected $autoFilterAttributes = array('dn', 'cn', 'description', 'sudoUser', 'sudoHost');
+  protected $autoFilterAttributes = ['dn', 'cn', 'description', 'sudoUser', 'sudoHost'];
 
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _("Sudo"),
       'plDescription' => _("Sudo management"),
       'plIcon'        => 'geticon.php?context=applications&icon=sudo&size=48',
       'plSection'     => 'accounts',
       'plPriority'    => 45,
-      'plManages'     => array('sudo'),
+      'plManages'     => ['sudo'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 
   function configureHeadpage ()
   {
     parent::configureHeadpage();
     $this->registerAction('new_default', 'newEntry');
-    $this->headpage->xmlData['actionmenu']['action'][0]['action'][] = array(
+    $this->headpage->xmlData['actionmenu']['action'][0]['action'][] = [
       'name'  => 'new_default',
       'type'  => 'entry',
       'image' => 'geticon.php?context=applications&icon=sudo&size=16',
       'label' => 'Default',
       'acl'   => 'sudo/sudo[c]',
-    );
+    ];
   }
 
-  function newEntry($action, array $target, array $all)
+  function newEntry ($action, array $target, array $all)
   {
     $str = parent::newEntry('new_SUDO', $target, $all);
 
diff --git a/sudo/admin/sudo/class_sudoOption.inc b/sudo/admin/sudo/class_sudoOption.inc
index 8dd6f1c03781fae8903a93b13171d65f430013a1..1a32030e7a56b83b3872eb6ab11fb5b796985fe2 100644
--- a/sudo/admin/sudo/class_sudoOption.inc
+++ b/sudo/admin/sudo/class_sudoOption.inc
@@ -23,7 +23,7 @@ class UsedOptionAttribute extends CompositeAttribute
 {
   function __construct ($description, $ldapName, $acl = "")
   {
-    parent::__construct($description, $ldapName, array(), "", "", $acl);
+    parent::__construct($description, $ldapName, [], "", "", $acl);
   }
 
   function addOption ($name, $params, $value = NULL)
@@ -67,7 +67,7 @@ class UsedOptionAttribute extends CompositeAttribute
          */
         $value = $this->plugin->unescape_command($value);
 
-        $opt = preg_replace(array('/\-$/','/\+$/'), array('_moins','_plus'), $opt);
+        $opt = preg_replace(['/\-$/','/\+$/'], ['_moins','_plus'], $opt);
 
         /* Check if the given value is part of our options list.
            If it is not, add it as type STRING and display a warning.
@@ -79,7 +79,7 @@ class UsedOptionAttribute extends CompositeAttribute
             WARNING_DIALOG
           );
         } else {
-          $this->addOption($opt, sudoOptions::get($opt), array('negate' => $negation,'value' => $value));
+          $this->addOption($opt, sudoOptions::get($opt), ['negate' => $negation,'value' => $value]);
         }
       }
     }
@@ -116,7 +116,7 @@ class AvailableSudoOptionAttribute extends SelectAttribute
   {
     $choices = sudoOptions::listOptions();
     sort($choices);
-    parent::__construct ($label, $description, $ldapName, $required, $choices, "", NULL, $acl);
+    parent::__construct($label, $description, $ldapName, $required, $choices, "", NULL, $acl);
     $this->setInLdap(FALSE);
   }
 
@@ -134,7 +134,7 @@ class AvailableSudoOptionAttribute extends SelectAttribute
     $outputs = array_map(
       function ($choice)
       {
-        $opt = preg_replace(array('/_moins$/','/_plus$/'), array('-','+'), $choice);
+        $opt = preg_replace(['/_moins$/','/_plus$/'], ['-','+'], $choice);
         return sprintf(_("%s (%s)"), $opt, sudoOptions::get($choice)['TYPE']);
       },
       $choices
@@ -159,17 +159,17 @@ class ListSudoOptionAttribute extends SetAttribute
 {
   function __construct ($name, $desc, $defaultValue, $acl = "")
   {
-    parent::__construct(new StringAttribute(preg_replace(array('/_moins$/','/_plus$/'), array('-','+'), $name), $desc, $name, FALSE, $defaultValue, $acl));
+    parent::__construct(new StringAttribute(preg_replace(['/_moins$/','/_plus$/'], ['-','+'], $name), $desc, $name, FALSE, $defaultValue, $acl));
   }
 
   function getValue ()
   {
     if (count($this->value) <= 0) {
-      return preg_replace(array('/_moins$/','/_plus$/'), array('-','+'), $this->getLdapName()).'=';
+      return preg_replace(['/_moins$/','/_plus$/'], ['-','+'], $this->getLdapName()).'=';
     } elseif (count($this->value) > 1) {
-      return preg_replace(array('/_moins$/','/_plus$/'), array('-','+'), $this->getLdapName()).'="'.implode(' ', $this->value).'"';
+      return preg_replace(['/_moins$/','/_plus$/'], ['-','+'], $this->getLdapName()).'="'.implode(' ', $this->value).'"';
     } else {
-      return preg_replace(array('/_moins$/','/_plus$/'), array('-','+'), $this->getLdapName()).'='.$this->value[0];
+      return preg_replace(['/_moins$/','/_plus$/'], ['-','+'], $this->getLdapName()).'='.$this->value[0];
     }
   }
 
@@ -183,12 +183,12 @@ class ListSudoOptionAttribute extends SetAttribute
     if (isset($value['value'])) {
       $value = $value['value'];
       if ($value == "") {
-        $value = array();
+        $value = [];
       } elseif ($value[0] != '"') {
-        $value = array($value);
+        $value = [$value];
       } else {
         $value = preg_split('/ /',
-          preg_replace(array('/^"/','/"$/'), '', $value)
+          preg_replace(['/^"/','/"$/'], '', $value)
         );
       }
     }
@@ -202,15 +202,15 @@ class SudoOptionAttribute extends Attribute
 
   function __construct ($name, $desc, $type, $defaultValue, $acl = "")
   {
-    parent::__construct($name, $desc, $name, FALSE, array('negate' => FALSE, 'value' => $defaultValue), $acl);
+    parent::__construct($name, $desc, $name, FALSE, ['negate' => FALSE, 'value' => $defaultValue], $acl);
     $this->type = $type;
   }
 
   function loadPostValue ()
   {
-    if (in_array($this->type, array('STRING','INTEGER','BOOLEAN'))) {
+    if (in_array($this->type, ['STRING','INTEGER','BOOLEAN'])) {
       if (isset($_POST[$this->getLdapName()])) {
-        $this->setPostValue(array('negate' => FALSE, 'value' => $_POST[$this->getLdapName()]));
+        $this->setPostValue(['negate' => FALSE, 'value' => $_POST[$this->getLdapName()]]);
       }
     } else {
       if (isset($_POST[$this->getLdapName().'_selection'])) {
@@ -221,9 +221,9 @@ class SudoOptionAttribute extends Attribute
         }
 
         if ($sel == "FALSE" || $sel == "TRUE") {
-          $this->setPostValue(array('negate' => FALSE, 'value' => $sel));
+          $this->setPostValue(['negate' => FALSE, 'value' => $sel]);
         } else {
-          $this->setPostValue(array('negate' => $this->postValue['negate'], 'value' => $val));
+          $this->setPostValue(['negate' => $this->postValue['negate'], 'value' => $val]);
         }
       }
     }
@@ -246,9 +246,9 @@ class SudoOptionAttribute extends Attribute
     $id = $this->getLdapName();
     $value = htmlentities($this->value['value'], ENT_COMPAT, 'UTF-8');
     $smarty = get_smarty();
-    $smarty->assign("boolStringOptions", array("FALSE","TRUE","STRING"));
-    $smarty->assign("boolIntOptions", array("FALSE","TRUE","INTEGER"));
-    $smarty->assign("booleanOptions", array("FALSE","TRUE"));
+    $smarty->assign("boolStringOptions", ["FALSE","TRUE","STRING"]);
+    $smarty->assign("boolIntOptions", ["FALSE","TRUE","INTEGER"]);
+    $smarty->assign("booleanOptions", ["FALSE","TRUE"]);
     if ($this->type == "STRING") {
       $display = '<input type="text" name="'.$id.'" id="'.$id.'" value="'.$value.'" />';
     } elseif ($this->type == "LISTS") {
@@ -294,7 +294,7 @@ class SudoOptionAttribute extends Attribute
       if ($value == "FALSE") {
         $option = "!".$option;
       }
-    } elseif (in_array($this->type, array("STRING","INTEGER","LISTS"))) {
+    } elseif (in_array($this->type, ["STRING","INTEGER","LISTS"])) {
       if ($value == "") {
         $option = $name;
       } else {
@@ -303,7 +303,7 @@ class SudoOptionAttribute extends Attribute
       if ($neg) {
         $option = "!".$option;
       }
-    } elseif (in_array($this->type, array("STRING_BOOL","BOOL_INTEGER"))) {
+    } elseif (in_array($this->type, ["STRING_BOOL","BOOL_INTEGER"])) {
       if ($value == "FALSE") {
         $option = "!".$name;
       } elseif ($value == "TRUE") {
@@ -330,29 +330,29 @@ class SudoOptionAttribute extends Attribute
 class sudoOption extends simplePlugin
 {
   var $displayHeader = FALSE;
-  var $objectclasses = array();
+  var $objectclasses = [];
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
-    return array(
+    return [
       // Attributes are grouped by section
-      'available_options' => array(
+      'available_options' => [
         'name'  => _('Available options'),
-        'attrs' => array(
-          new AvailableSudoOptionAttribute (
+        'attrs' => [
+          new AvailableSudoOptionAttribute(
             _('Option'), _('Add a new sudo option'), 'availableSudoOptions'
           ),
-        )
-      ),
-      'used_options' => array(
+        ]
+      ],
+      'used_options' => [
         'name'  => _('Used sudo role options'),
-        'attrs' => array(
-          new UsedOptionAttribute (_('Used sudo role options'), 'sudoOption')
-        ),
+        'attrs' => [
+          new UsedOptionAttribute(_('Used sudo role options'), 'sudoOption')
+        ],
         'template' => get_template_path('usedoptions_section.tpl', TRUE, dirname(__FILE__))
-      ),
-    );
+      ],
+    ];
   }
 
   function execute ()
@@ -381,7 +381,7 @@ SCRIPT;
   /*!  \brief   Escape special chars in function parameters.
        @param   String the string to that must be escaped.
    */
-  public function escape_command($str)
+  public function escape_command ($str)
   {
     /* Check if given value is a command (/[a-z]/ ..)
      */
@@ -396,7 +396,7 @@ SCRIPT;
   /*!  \brief   Unescape special chars in function parameters.
        @param   String the string to that must be unescaped.
    */
-  public function unescape_command($str)
+  public function unescape_command ($str)
   {
     /* Check if given value is a command (/[a-z]/ ..)
      */
@@ -404,8 +404,8 @@ SCRIPT;
       $cmd = preg_replace("/^([^ ]*).*$/", "\\1", $str);
       $val = preg_replace("/^[^ ]*(.*)$/", "\\1", $str);
       $val = preg_replace(
-        array("/\\\\\\\\/", "/\\\\,/", "/\\\\:/", "/\\\\=/"),
-        array("\\",",",":","="), $val
+        ["/\\\\\\\\/", "/\\\\,/", "/\\\\:/", "/\\\\=/"],
+        ["\\",",",":","="], $val
       );
       $str = $cmd.$val;
     }
@@ -414,15 +414,15 @@ SCRIPT;
 
   static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Options'),
       'plDescription' => _('Sudo options'),
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array('sudo'),
+      'plObjectType'  => ['sudo'],
       'plPriority'    => 2,
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 }
 ?>
diff --git a/sudo/admin/sudo/class_sudoOptions.inc b/sudo/admin/sudo/class_sudoOptions.inc
index 5c29fcaa39b713a4b8ea43468eab37778e8adbf2..82eeb2e0dce3f2f1acd04b18da0922cc06f357af 100644
--- a/sudo/admin/sudo/class_sudoOptions.inc
+++ b/sudo/admin/sudo/class_sudoOptions.inc
@@ -22,355 +22,355 @@ class sudoOptions
 {
   private static $options = NULL;
 
-  public static function exists($option)
+  public static function exists ($option)
   {
     static::initOptionsArray();
     return isset(static::$options[$option]);
   }
 
-  public static function get($option)
+  public static function get ($option)
   {
     static::initOptionsArray();
     return static::$options[$option];
   }
 
-  public static function listOptions()
+  public static function listOptions ()
   {
     static::initOptionsArray();
     return array_keys(static::$options);
   }
 
-  private static function initOptionsArray()
+  private static function initOptionsArray ()
   {
     if (static::$options !== NULL) {
       return;
     }
-    static::$options = array(
-      'long_otp_prompt'       => array(
+    static::$options = [
+      'long_otp_prompt'       => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'FALSE',
         'DESC'    => _('When validating with a One Time Password (OTP) scheme such as S/Key or OPIE, a two-line prompt is used to make it easier to cut and paste the challenge to a local window')
-      ),
-      'ignore_dot'            => array(
+      ],
+      'ignore_dot'            => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'TRUE',
         'DESC'    => _('If set, sudo will ignore \'.\' or \'\' (current dir) in the PATH environment variable')
-      ),
-      'mail_always'           => array(
+      ],
+      'mail_always'           => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'FALSE',
         'DESC'    => _('Send mail to the mailto user every time a users runs sudo')
-      ),
-      'mail_badpass'          => array(
+      ],
+      'mail_badpass'          => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'FALSE',
         'DESC'    => _('Send mail to the mailto user if the user running sudo does not enter the correct password')
-      ),
-      'mail_no_user'          => array(
+      ],
+      'mail_no_user'          => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'TRUE',
         'DESC'    => _('If set, mail will be sent to the mailto user if the invoking user is not in the sudoers file')
-      ),
-      'mail_no_host'          => array(
+      ],
+      'mail_no_host'          => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'FALSE',
         'DESC'    => _('If set, mail will be sent to the mailto user if the invoking user exists in the sudoers file, but is not allowed to run commands on the current host')
-      ),
-      'mail_no_perms'         => array(
+      ],
+      'mail_no_perms'         => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'FALSE',
         'DESC'    => _('If set, mail will be sent to the mailto user if the invoking user is allowed to use sudo but not for this command')
-      ),
-      'tty_tickets'           => array(
+      ],
+      'tty_tickets'           => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'TRUE',
         'DESC'    => _('If set, users must authenticate on a per-tty basis')
-      ),
-      'authenticate'          => array(
+      ],
+      'authenticate'          => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'TRUE',
         'DESC'    => _('If set, users must authenticate themselves via a password (or other means of authentication)')
-      ),
-      'root_sudo'             => array(
+      ],
+      'root_sudo'             => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'TRUE',
         'DESC'    => _('If set, root is allowed to run sudo too')
-      ),
-      'log_host'              => array(
+      ],
+      'log_host'              => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'FALSE',
         'DESC'    => _('If set, the host name will be logged in the (non-syslog) sudo log file')
-      ),
-      'log_year'              => array(
+      ],
+      'log_year'              => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'FALSE',
         'DESC'    => _('If set, the four-digit year will be logged in the (non-syslog) sudo log file')
-      ),
-      'shell_noargs'          => array(
+      ],
+      'shell_noargs'          => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'FALSE',
         'DESC'    => _('If set and sudo is invoked with no arguments it acts as if the -s option had been given')
-      ),
-      'set_home'              => array(
+      ],
+      'set_home'              => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'FALSE',
         'DESC'    => _('If enabled and sudo is invoked with the -s option the HOME environment variable will be set to the home directory of the target user (usually root)')
-      ),
-      'always_set_home'       => array(
+      ],
+      'always_set_home'       => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'FALSE',
         'DESC'    => _('If enabled, sudo will set the HOME environment variable to the home directory of the target user (usually root)')
-      ),
-      'path_info'             => array(
+      ],
+      'path_info'             => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'FALSE',
         'DESC'    => _('If the executable is simply not in the user\'s PATH, sudo will tell the user that they are not allowed to run it')
-      ),
-      'preserve_groups'       => array(
+      ],
+      'preserve_groups'       => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'FALSE',
         'DESC'    => _('If set, the user\'s existing group vector is left unaltered')
-      ),
-      'fqdn'                  => array(
+      ],
+      'fqdn'                  => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'FALSE',
         'DESC'    => _('Set this flag if you want to put fully qualified host names in the sudoers file')
-      ),
-      'insults'               => array(
+      ],
+      'insults'               => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'FALSE',
         'DESC'    => _('If set, sudo will insult users when they enter an incorrect password')
-      ),
-      'requiretty'            => array(
+      ],
+      'requiretty'            => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'FALSE',
         'DESC'    => _('If set, sudo will only run when the user is logged in to a real tty')
-      ),
-      'env_editor'            => array(
+      ],
+      'env_editor'            => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'TRUE',
         'DESC'    => _('If set, visudo will use the value of the EDITOR or VISUAL environment variables before falling back on the default editor list')
-      ),
-      'rootpw'                => array(
+      ],
+      'rootpw'                => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'FALSE',
         'DESC'    => _('If set, sudo will prompt for the root password instead of the password of the invoking user')
-      ),
-      'runaspw'               => array(
+      ],
+      'runaspw'               => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'FALSE',
         'DESC'    => _('If set, sudo will prompt for the password of the user defined by the runas_default option (defaults to root) instead of the password of the invoking user')
-      ),
-      'targetpw'              => array(
+      ],
+      'targetpw'              => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'FALSE',
         'DESC'    => _('If set, sudo will prompt for the password of the user specified by the -u option (defaults to root) instead of the password of the invoking user')
-      ),
-      'set_logname'           => array(
+      ],
+      'set_logname'           => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'TRUE',
         'DESC'    => _('If set, sudo will set the LOGNAME environment variables to the name of the target user')
-      ),
-      'stay_setuid'           => array(
+      ],
+      'stay_setuid'           => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'TRUE',
         'DESC'    => ''
-      ),
-      'env_reset'             => array(
+      ],
+      'env_reset'             => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'TRUE',
         'DESC'    => _('If set, sudo will run the command in a minimal environment containing the TERM, PATH, HOME, MAIL, SHELL, LOGNAME, USER, USERNAME and SUDO_ variables')
-      ),
-      'use_loginclass'        => array(
+      ],
+      'use_loginclass'        => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'FALSE',
         'DESC'    => _('If set, sudo will apply the defaults specified for the target user\'s login class if one exists')
-      ),
-      'noexec'                => array(
+      ],
+      'noexec'                => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'FALSE',
         'DESC'    => _('If set, all commands run via sudo will behave as if the NOEXEC tag has been set, unless overridden by a EXEC tag')
-      ),
-      'ignore_local_sudoers'  => array(
+      ],
+      'ignore_local_sudoers'  => [
         'TYPE'    => 'BOOLEAN',
         'DEFAULT' => 'FALSE',
         'DESC'    => _('If set, parsing of /etc/sudoers file will be skipped.')
-      ),
-      'passwd_tries'          => array(
+      ],
+      'passwd_tries'          => [
         'TYPE'    => 'INTEGER',
         'DEFAULT' => 3,
         'DESC'    => _('The number of tries a user gets to enter his/her password before sudo logs the failure and exits')
-      ),
-      'loglinelen'            => array(
+      ],
+      'loglinelen'            => [
         'TYPE'    => 'BOOL_INTEGER',
         'DEFAULT' => 80,
         'DESC'    => _('Number of characters per line for the file log')
-      ),
-      'timestamp_timeout'     => array(
+      ],
+      'timestamp_timeout'     => [
         'TYPE'    => 'BOOL_INTEGER',
         'DEFAULT' => 0,
         'DESC'    => _('Number of minutes that can elapse before sudo will ask for a passwd again')
-      ),
-      'passwd_timeout'        => array(
+      ],
+      'passwd_timeout'        => [
         'TYPE'    => 'BOOL_INTEGER',
         'DEFAULT' => 15,
         'DESC'    => _('Number of minutes before the sudo password prompt times out, or 0 for no timeout')
-      ),
-      'umask'                 => array(
+      ],
+      'umask'                 => [
         'TYPE'    => 'BOOL_INTEGER',
         'DEFAULT' => "0022",
         'DESC'    => _('Umask to use when running the command. Set to FALSE to preserve the user\'s umask')
-      ),
-      'mailsub'               => array(
+      ],
+      'mailsub'               => [
         'TYPE'    => 'STRING',
         'DEFAULT' => '*** SECURITY information for %h ***',
         'DESC'    => _('Subject of the mail sent to the mailto user. The escape %h will expand to the host name of the machine')
-      ),
-      'badpass_message'       => array(
+      ],
+      'badpass_message'       => [
         'TYPE'    => 'STRING',
         'DEFAULT' => 'Sorry, try again',
         'DESC'    => _('Message that is displayed if a user enters an incorrect password')
-      ),
-      'timestampdir'          => array(
+      ],
+      'timestampdir'          => [
         'TYPE'    => 'STRING',
         'DEFAULT' => '/var/run/sudo',
         'DESC'    => _('The directory in which sudo stores its timestamp files')
-      ),
-      'timestampowner'        => array(
+      ],
+      'timestampowner'        => [
         'TYPE'    => 'STRING',
         'DEFAULT' => 'root',
         'DESC'    => _('The owner of the timestamp directory and the timestamps stored therein')
-      ),
-      'passprompt'            => array(
+      ],
+      'passprompt'            => [
         'TYPE'    => 'STRING',
         'DEFAULT' => '[sudo] password for %p: ',
         'DESC'    => _('The default prompt to use when asking for a password; can be overridden via the -p option or the SUDO_PROMPT environment variable')
-      ),
-      'runas_default'         => array(
+      ],
+      'runas_default'         => [
         'TYPE'    => 'STRING',
         'DEFAULT' => 'root',
         'DESC'    => _('The default user to run commands as if the -u option is not specified on the command line')
-      ),
-      'syslog_goodpri'        => array(
+      ],
+      'syslog_goodpri'        => [
         'TYPE'    => 'STRING',
         'DEFAULT' => 'notice',
         'DESC'    => _('Syslog priority to use when user authenticates successfully')
-      ),
-      'syslog_badpri'         => array(
+      ],
+      'syslog_badpri'         => [
         'TYPE'    => 'STRING',
         'DEFAULT' => 'alert',
         'DESC'    => _('Syslog priority to use when user authenticates unsuccessfully')
-      ),
-      'editor'                => array(
+      ],
+      'editor'                => [
         'TYPE'    => 'STRING',
         'DEFAULT' => '/usr/bin/vi',
         'DESC'    => _('A colon separated list of editors allowed to be used with visudo')
-      ),
-      'noexec_file'           => array(
+      ],
+      'noexec_file'           => [
         'TYPE'    => 'STRING',
         'DEFAULT' => '/usr/lib/sudo/sudo_noexec.so',
         'DESC'    => ''
-      ),
-      'secure_path'           => array(
+      ],
+      'secure_path'           => [
         'TYPE'    => 'STRING',
         'DEFAULT' => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
         'DESC'    => _('Path used for every command run from sudo. If you don\'t trust the people running sudo to have a sane PATH environment variable you may want to use this.')
-      ),
-      'lecture'               => array(
+      ],
+      'lecture'               => [
         'TYPE'    => 'STRING_BOOL',
         'DEFAULT' => 'once',
         'DESC'    => _('This option controls when a short lecture will be printed along with the password prompt')
-      ),
-      'lecture_file'          => array(
+      ],
+      'lecture_file'          => [
         'TYPE'    => 'STRING_BOOL',
         'DEFAULT' => '',
         'DESC'    => _('Path to a file containing an alternate sudo lecture that will be used in place of the standard lecture')
-      ),
-      'logfile'               => array(
+      ],
+      'logfile'               => [
         'TYPE'    => 'STRING_BOOL',
         'DEFAULT' => 'syslog',
         'DESC'    => _('Path to the sudo log file (not the syslog log file)')
-      ),
-      'syslog'                => array(
+      ],
+      'syslog'                => [
         'TYPE'    => 'STRING_BOOL',
         'DEFAULT' => 'authpriv',
         'DESC'    => _('Syslog facility if syslog is being used for logging')
-      ),
-      'mailerpath'            => array(
+      ],
+      'mailerpath'            => [
         'TYPE'    => 'STRING_BOOL',
         'DEFAULT' => '',
         'DESC'    => _('Path to mail program used to send warning mail')
-      ),
-      'mailerflags'           => array(
+      ],
+      'mailerflags'           => [
         'TYPE'    => 'STRING_BOOL',
         'DEFAULT' => '-t',
         'DESC'    => _('Flags to use when invoking mailer')
-      ),
-      'mailto'                => array(
+      ],
+      'mailto'                => [
         'TYPE'    => 'STRING_BOOL',
         'DEFAULT' => 'root',
         'DESC'    => _('Address to send warning and error mail to')
-      ),
-      'exempt_group'          => array(
+      ],
+      'exempt_group'          => [
         'TYPE'    => 'STRING_BOOL',
         'DEFAULT' => 'root',
         'DESC'    => _('Users in this group are exempt from password and PATH requirements')
-      ),
-      'verifypw'              => array(
+      ],
+      'verifypw'              => [
         'TYPE'    => 'STRING_BOOL',
         'DEFAULT' => 'all',
         'DESC'    => _('This option controls when a password will be required when a user runs sudo with the -v option')
-      ),
-      'listpw'                => array(
+      ],
+      'listpw'                => [
         'TYPE'    => 'STRING_BOOL',
         'DEFAULT' => 'any',
         'DESC'    => _('This option controls when a password will be required when a user runs sudo with the -l option')
-      ),
-      'env_check'             => array(
+      ],
+      'env_check'             => [
         'TYPE'    => 'LISTS',
         'DEFAULT' => '',
         'DESC'    => _('Environment variables to be removed from the user\'s environment if the variable\'s value contains % or / characters')
-      ),
-      'env_delete'            => array(
+      ],
+      'env_delete'            => [
         'TYPE'    => 'LISTS',
         'DEFAULT' => '',
         'DESC'    => _('Environment variables to be removed from the user\'s environment when the env_reset option is not in effect')
-      ),
-      'env_keep'              => array(
+      ],
+      'env_keep'              => [
         'TYPE'    => 'LISTS',
         'DEFAULT' => '',
         'DESC'    => _('Environment variables to be preserved in the user\'s environment when the env_reset option is in effect')
-      ),
-      'env_check_moins'       => array(
+      ],
+      'env_check_moins'       => [
         'TYPE'    => 'LISTS',
         'DEFAULT' => '',
         'DESC'    => _('Environment variables to be removed from the user\'s environment if the variable\'s value contains % or / characters')
-      ),
-      'env_delete_moins'      => array(
+      ],
+      'env_delete_moins'      => [
         'TYPE'    => 'LISTS',
         'DEFAULT' => '',
         'DESC'    => _('Environment variables to be removed from the user\'s environment when the env_reset option is not in effect')
-      ),
-      'env_keep_moins'        => array(
+      ],
+      'env_keep_moins'        => [
         'TYPE'    => 'LISTS',
         'DEFAULT' => '',
         'DESC'    => _('Environment variables to be preserved in the user\'s environment when the env_reset option is in effect')
-      ),
-      'env_check_plus'        => array(
+      ],
+      'env_check_plus'        => [
         'TYPE'    => 'LISTS',
         'DEFAULT' => '',
         'DESC'    => _('Environment variables to be removed from the user\'s environment if the variable\'s value contains % or / characters')
-      ),
-      'env_delete_plus'       => array(
+      ],
+      'env_delete_plus'       => [
         'TYPE'    => 'LISTS',
         'DEFAULT' => '',
         'DESC'    => _('Environment variables to be removed from the user\'s environment when the env_reset option is not in effect')
-      ),
-      'env_keep_plus'         => array(
+      ],
+      'env_keep_plus'         => [
         'TYPE'    => 'LISTS',
         'DEFAULT' => '',
         'DESC'    => _('Environment variables to be preserved in the user\'s environment when the env_reset option is in effect')
-      )
-    );
+      ]
+    ];
   }
 }
diff --git a/sudo/admin/sudo/tabs_sudo.inc b/sudo/admin/sudo/tabs_sudo.inc
index 938b414cd769f50093c08c749967c9a8fc07ad97..8484d1d4f7bd755a4414865c5e31ba7fae62efe9 100644
--- a/sudo/admin/sudo/tabs_sudo.inc
+++ b/sudo/admin/sudo/tabs_sudo.inc
@@ -20,7 +20,7 @@
 
 class sudotabs extends simpleTabs
 {
-  function set_default($state)
+  function set_default ($state)
   {
     if (isset($this->by_object['sudo'])) {
       $this->by_object['sudo']->set_default($state);
diff --git a/sudo/config/sudo/class_sudoConfig.inc b/sudo/config/sudo/class_sudoConfig.inc
index d4da8efd7da457814a627dc7776448e810b20588..a4c1345bf9198cf92419b4bf5eff8a452b27c6f3 100644
--- a/sudo/config/sudo/class_sudoConfig.inc
+++ b/sudo/config/sudo/class_sudoConfig.inc
@@ -20,35 +20,35 @@
 
 class sudoConfig extends simplePlugin
 {
-  var $objectclasses  = array('fdSudoPluginConf');
+  var $objectclasses  = ['fdSudoPluginConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Sudo configuration'),
       'plDescription'   => _('FusionDirectory sudo plugin configuration'),
       'plSelfModify'    => FALSE,
-      'plCategory'      => array('configuration'),
-      'plObjectType'    => array('smallConfig'),
+      'plCategory'      => ['configuration'],
+      'plObjectType'    => ['smallConfig'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Sudo'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Sudo RDN'), _('Branch in which sudoers will be stored'),
             'fdSudoRDN', TRUE,
             'ou=sudoers'
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/sudo/locale/af_ZA/fusiondirectory.po b/sudo/locale/af_ZA/fusiondirectory.po
index 2b6099534922bb2322d667564274bc4d5a98bd9c..74978fa651d1eda3aefab0cec82cc20e516d45ed 100644
--- a/sudo/locale/af_ZA/fusiondirectory.po
+++ b/sudo/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
@@ -17,7 +17,7 @@ msgstr ""
 "Language: af_ZA\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr ""
@@ -26,7 +26,7 @@ msgstr ""
 msgid "Sudo management"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr ""
 
diff --git a/sudo/locale/ar/fusiondirectory.po b/sudo/locale/ar/fusiondirectory.po
index 54d92bbe9b18c19afc6a101c7c53788b6d2ebc2c..688726ac5fdac087287d2c5c531856a5ca102a24 100644
--- a/sudo/locale/ar/fusiondirectory.po
+++ b/sudo/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
@@ -21,7 +21,7 @@ msgstr ""
 "Language: ar\n"
 "Plural-Forms: 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;\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr ""
@@ -30,7 +30,7 @@ msgstr ""
 msgid "Sudo management"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr ""
 
diff --git a/sudo/locale/ca/fusiondirectory.po b/sudo/locale/ca/fusiondirectory.po
index 6eb3ad2a681aa6aafc602b50b4e91faf2281c5fb..2b1fa8c246aa6e1b61b8a73fcc642f34387bd757 100644
--- a/sudo/locale/ca/fusiondirectory.po
+++ b/sudo/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
@@ -21,7 +21,7 @@ msgstr ""
 "Language: ca\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr ""
@@ -30,7 +30,7 @@ msgstr ""
 msgid "Sudo management"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr ""
 
diff --git a/sudo/locale/cs_CZ/fusiondirectory.po b/sudo/locale/cs_CZ/fusiondirectory.po
index 288761d9edbcbf84281a9bffa4f038e9b6e59344..015ec5691e1b214742996306eeb7f1a4151c42b1 100644
--- a/sudo/locale/cs_CZ/fusiondirectory.po
+++ b/sudo/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
@@ -22,7 +22,7 @@ msgstr ""
 "Language: cs_CZ\n"
 "Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr "sudo"
@@ -31,7 +31,7 @@ msgstr "sudo"
 msgid "Sudo management"
 msgstr "Správa sudo"
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr "role v sudo"
 
diff --git a/sudo/locale/de/fusiondirectory.po b/sudo/locale/de/fusiondirectory.po
index 8c25ba2f29493f15a203c7498375a122a2a84e00..7078a9e416982c93d2bd7a18e2c812e1a2345efa 100644
--- a/sudo/locale/de/fusiondirectory.po
+++ b/sudo/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
@@ -21,7 +21,7 @@ msgstr ""
 "Language: de\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr "Sudo"
@@ -30,7 +30,7 @@ msgstr "Sudo"
 msgid "Sudo management"
 msgstr "SUDO-Verwaltung"
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr "Sudo-Rolle"
 
diff --git a/sudo/locale/el_GR/fusiondirectory.po b/sudo/locale/el_GR/fusiondirectory.po
index 1db129827f23182bc47bde1b93eb68ca57872f19..93e211d1d64ea5874143c90cf0bf1a04de120548 100644
--- a/sudo/locale/el_GR/fusiondirectory.po
+++ b/sudo/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
@@ -21,7 +21,7 @@ msgstr ""
 "Language: el_GR\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr "Sudo"
@@ -30,7 +30,7 @@ msgstr "Sudo"
 msgid "Sudo management"
 msgstr "Διαχείριση Sudo"
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr "Ρόλος Sudo"
 
diff --git a/sudo/locale/en/fusiondirectory.po b/sudo/locale/en/fusiondirectory.po
index 53e791290ecca97213753f43d64017a85fdee3c0..07bf20fafd5801c95c07ea028c01c64c4c6a6d27 100644
--- a/sudo/locale/en/fusiondirectory.po
+++ b/sudo/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -25,8 +25,8 @@ msgstr ""
 msgid "FusionDirectory sudo plugin configuration"
 msgstr ""
 
-#: config/sudo/class_sudoConfig.inc:42 admin/sudo/class_sudoManagement.inc:32
-#: admin/sudo/class_sudoGeneric.inc:123
+#: config/sudo/class_sudoConfig.inc:42 admin/sudo/class_sudoGeneric.inc:124
+#: admin/sudo/class_sudoManagement.inc:32
 msgid "Sudo"
 msgstr ""
 
@@ -38,10 +38,6 @@ msgstr ""
 msgid "Branch in which sudoers will be stored"
 msgstr ""
 
-#: admin/sudo/class_sudoManagement.inc:33
-msgid "Sudo management"
-msgstr ""
-
 #: admin/sudo/class_sudoOption.inc:77
 msgid "Unknown option"
 msgstr ""
@@ -51,124 +47,433 @@ msgstr ""
 msgid "The sudo option '%s' is invalid!"
 msgstr ""
 
-#: admin/sudo/class_sudoOption.inc:273
+#: admin/sudo/class_sudoOption.inc:138
 #, php-format
 msgid "%s (%s)"
 msgstr ""
 
-#: admin/sudo/class_sudoOption.inc:476
+#: admin/sudo/class_sudoOption.inc:341
 msgid "Available options"
 msgstr ""
 
-#: admin/sudo/class_sudoOption.inc:479
+#: admin/sudo/class_sudoOption.inc:344
 msgid "Option"
 msgstr ""
 
-#: admin/sudo/class_sudoOption.inc:479
+#: admin/sudo/class_sudoOption.inc:344
 msgid "Add a new sudo option"
 msgstr ""
 
-#: admin/sudo/class_sudoOption.inc:484 admin/sudo/class_sudoOption.inc:486
+#: admin/sudo/class_sudoOption.inc:349 admin/sudo/class_sudoOption.inc:351
 msgid "Used sudo role options"
 msgstr ""
 
-#: admin/sudo/class_sudoOption.inc:553
+#: admin/sudo/class_sudoOption.inc:418
 msgid "Options"
 msgstr ""
 
-#: admin/sudo/class_sudoOption.inc:554
+#: admin/sudo/class_sudoOption.inc:419
 msgid "Sudo options"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:154
+#: admin/sudo/class_sudoGeneric.inc:155
 msgid "Role settings"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:160
+#: admin/sudo/class_sudoGeneric.inc:161
 msgid "Name"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:160
+#: admin/sudo/class_sudoGeneric.inc:161
 msgid "Name of the role"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:165
+#: admin/sudo/class_sudoGeneric.inc:166
 msgid "Description"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:165
+#: admin/sudo/class_sudoGeneric.inc:166
 msgid "Description for the new sudo role"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:170
+#: admin/sudo/class_sudoGeneric.inc:171
 msgid "Commands"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:171
+#: admin/sudo/class_sudoGeneric.inc:172
 msgid ""
 "A Unix command with optional command line arguments, potentially including "
 "globbing characters (aka wild cards)"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:177
+#: admin/sudo/class_sudoGeneric.inc:178
 msgid "Run as (user)"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:178
+#: admin/sudo/class_sudoGeneric.inc:179
 msgid "User(s) impersonated by sudo"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:185
+#: admin/sudo/class_sudoGeneric.inc:186
 msgid "Run as (group)"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:186
+#: admin/sudo/class_sudoGeneric.inc:187
 msgid "Group(s) impersonated by sudo"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:192
+#: admin/sudo/class_sudoGeneric.inc:193
 msgid "Systems"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:192
+#: admin/sudo/class_sudoGeneric.inc:193
 msgid "A host name, IP address or IP network"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:197
+#: admin/sudo/class_sudoGeneric.inc:198
 msgid "Users and groups"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:198
+#: admin/sudo/class_sudoGeneric.inc:199
 msgid ""
 "A user name, user ID (prefixed with '#'), Unix group (prefixed with '%')"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:202
+#: admin/sudo/class_sudoGeneric.inc:203
 msgid "Priority"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:202
+#: admin/sudo/class_sudoGeneric.inc:203
 msgid "This rule priority compared to others"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:207
+#: admin/sudo/class_sudoGeneric.inc:208
 msgid "Valid starting from"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:207
+#: admin/sudo/class_sudoGeneric.inc:208
 msgid ""
 "Start of time interval for which the entry is valid (leave empty to disable)"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:212
+#: admin/sudo/class_sudoGeneric.inc:213
 msgid "Valid until"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:212
+#: admin/sudo/class_sudoGeneric.inc:213
 msgid ""
 "End of time interval for which the entry is valid (leave empty to disable)"
 msgstr ""
+
+#: admin/sudo/class_sudoManagement.inc:33
+msgid "Sudo management"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:52
+msgid ""
+"When validating with a One Time Password (OTP) scheme such as S/Key or OPIE, "
+"a two-line prompt is used to make it easier to cut and paste the challenge "
+"to a local window"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:57
+msgid ""
+"If set, sudo will ignore '.' or '' (current dir) in the PATH environment "
+"variable"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:62
+msgid "Send mail to the mailto user every time a users runs sudo"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:67
+msgid ""
+"Send mail to the mailto user if the user running sudo does not enter the "
+"correct password"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:72
+msgid ""
+"If set, mail will be sent to the mailto user if the invoking user is not in "
+"the sudoers file"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:77
+msgid ""
+"If set, mail will be sent to the mailto user if the invoking user exists in "
+"the sudoers file, but is not allowed to run commands on the current host"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:82
+msgid ""
+"If set, mail will be sent to the mailto user if the invoking user is allowed "
+"to use sudo but not for this command"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:87
+msgid "If set, users must authenticate on a per-tty basis"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:92
+msgid ""
+"If set, users must authenticate themselves via a password (or other means of "
+"authentication)"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:97
+msgid "If set, root is allowed to run sudo too"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:102
+msgid "If set, the host name will be logged in the (non-syslog) sudo log file"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:107
+msgid ""
+"If set, the four-digit year will be logged in the (non-syslog) sudo log file"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:112
+msgid ""
+"If set and sudo is invoked with no arguments it acts as if the -s option had "
+"been given"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:117
+msgid ""
+"If enabled and sudo is invoked with the -s option the HOME environment "
+"variable will be set to the home directory of the target user (usually root)"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:122
+msgid ""
+"If enabled, sudo will set the HOME environment variable to the home "
+"directory of the target user (usually root)"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:127
+msgid ""
+"If the executable is simply not in the user's PATH, sudo will tell the user "
+"that they are not allowed to run it"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:132
+msgid "If set, the user's existing group vector is left unaltered"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:137
+msgid ""
+"Set this flag if you want to put fully qualified host names in the sudoers "
+"file"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:142
+msgid "If set, sudo will insult users when they enter an incorrect password"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:147
+msgid "If set, sudo will only run when the user is logged in to a real tty"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:152
+msgid ""
+"If set, visudo will use the value of the EDITOR or VISUAL environment "
+"variables before falling back on the default editor list"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:157
+msgid ""
+"If set, sudo will prompt for the root password instead of the password of "
+"the invoking user"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:162
+msgid ""
+"If set, sudo will prompt for the password of the user defined by the "
+"runas_default option (defaults to root) instead of the password of the "
+"invoking user"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:167
+msgid ""
+"If set, sudo will prompt for the password of the user specified by the -u "
+"option (defaults to root) instead of the password of the invoking user"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:172
+msgid ""
+"If set, sudo will set the LOGNAME environment variables to the name of the "
+"target user"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:182
+msgid ""
+"If set, sudo will run the command in a minimal environment containing the "
+"TERM, PATH, HOME, MAIL, SHELL, LOGNAME, USER, USERNAME and SUDO_ variables"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:187
+msgid ""
+"If set, sudo will apply the defaults specified for the target user's login "
+"class if one exists"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:192
+msgid ""
+"If set, all commands run via sudo will behave as if the NOEXEC tag has been "
+"set, unless overridden by a EXEC tag"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:197
+msgid "If set, parsing of /etc/sudoers file will be skipped."
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:202
+msgid ""
+"The number of tries a user gets to enter his/her password before sudo logs "
+"the failure and exits"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:207
+msgid "Number of characters per line for the file log"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:212
+msgid ""
+"Number of minutes that can elapse before sudo will ask for a passwd again"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:217
+msgid ""
+"Number of minutes before the sudo password prompt times out, or 0 for no "
+"timeout"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:222
+msgid ""
+"Umask to use when running the command. Set to FALSE to preserve the user's "
+"umask"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:227
+msgid ""
+"Subject of the mail sent to the mailto user. The escape %h will expand to "
+"the host name of the machine"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:232
+msgid "Message that is displayed if a user enters an incorrect password"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:237
+msgid "The directory in which sudo stores its timestamp files"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:242
+msgid "The owner of the timestamp directory and the timestamps stored therein"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:247
+msgid ""
+"The default prompt to use when asking for a password; can be overridden via "
+"the -p option or the SUDO_PROMPT environment variable"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:252
+msgid ""
+"The default user to run commands as if the -u option is not specified on the "
+"command line"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:257
+msgid "Syslog priority to use when user authenticates successfully"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:262
+msgid "Syslog priority to use when user authenticates unsuccessfully"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:267
+msgid "A colon separated list of editors allowed to be used with visudo"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:277
+msgid ""
+"Path used for every command run from sudo. If you don't trust the people "
+"running sudo to have a sane PATH environment variable you may want to use "
+"this."
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:282
+msgid ""
+"This option controls when a short lecture will be printed along with the "
+"password prompt"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:287
+msgid ""
+"Path to a file containing an alternate sudo lecture that will be used in "
+"place of the standard lecture"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:292
+msgid "Path to the sudo log file (not the syslog log file)"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:297
+msgid "Syslog facility if syslog is being used for logging"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:302
+msgid "Path to mail program used to send warning mail"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:307
+msgid "Flags to use when invoking mailer"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:312
+msgid "Address to send warning and error mail to"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:317
+msgid "Users in this group are exempt from password and PATH requirements"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:322
+msgid ""
+"This option controls when a password will be required when a user runs sudo "
+"with the -v option"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:327
+msgid ""
+"This option controls when a password will be required when a user runs sudo "
+"with the -l option"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:332 admin/sudo/class_sudoOptions.inc:347
+#: admin/sudo/class_sudoOptions.inc:362
+#, php-format
+msgid ""
+"Environment variables to be removed from the user's environment if the "
+"variable's value contains % or / characters"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:337 admin/sudo/class_sudoOptions.inc:352
+#: admin/sudo/class_sudoOptions.inc:367
+msgid ""
+"Environment variables to be removed from the user's environment when the "
+"env_reset option is not in effect"
+msgstr ""
+
+#: admin/sudo/class_sudoOptions.inc:342 admin/sudo/class_sudoOptions.inc:357
+#: admin/sudo/class_sudoOptions.inc:372
+msgid ""
+"Environment variables to be preserved in the user's environment when the "
+"env_reset option is in effect"
+msgstr ""
diff --git a/sudo/locale/es/fusiondirectory.po b/sudo/locale/es/fusiondirectory.po
index 2f33f35dca108c5e2915c7eaf179be8baad609aa..27112f22bfc0eeae139f6591a06cd053938b6cc2 100644
--- a/sudo/locale/es/fusiondirectory.po
+++ b/sudo/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,9 +19,9 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr "Sudo"
@@ -30,7 +30,7 @@ msgstr "Sudo"
 msgid "Sudo management"
 msgstr "Administración Sudo"
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr "Rol Sudo"
 
diff --git a/sudo/locale/es_CO/fusiondirectory.po b/sudo/locale/es_CO/fusiondirectory.po
index 2bb81931739cd99387de7445e22f6aabc01013be..5e49e2f99a5103bb5d76af1d42e2dd14296110fd 100644
--- a/sudo/locale/es_CO/fusiondirectory.po
+++ b/sudo/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,9 +19,9 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr ""
@@ -30,7 +30,7 @@ msgstr ""
 msgid "Sudo management"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr ""
 
diff --git a/sudo/locale/es_VE/fusiondirectory.po b/sudo/locale/es_VE/fusiondirectory.po
index 9cc42373a0d15a14bfce1f775bbf23c30b56b18d..2e5d7ecc6aa9293c0572881c1a9475a3247199ec 100644
--- a/sudo/locale/es_VE/fusiondirectory.po
+++ b/sudo/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,9 +19,9 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr "Sudo"
@@ -30,7 +30,7 @@ msgstr "Sudo"
 msgid "Sudo management"
 msgstr "Administración Sudo"
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr "Rol Sudo"
 
diff --git a/sudo/locale/fa_IR/fusiondirectory.po b/sudo/locale/fa_IR/fusiondirectory.po
index df029ce9873d7c44a2e5d7a215f1206b558c3287..7d2aa17947d7bcb1aefcd0c01ebb3e986779842a 100644
--- a/sudo/locale/fa_IR/fusiondirectory.po
+++ b/sudo/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
@@ -17,7 +17,7 @@ msgstr ""
 "Language: fa_IR\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr ""
@@ -26,7 +26,7 @@ msgstr ""
 msgid "Sudo management"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr ""
 
diff --git a/sudo/locale/fi_FI/fusiondirectory.po b/sudo/locale/fi_FI/fusiondirectory.po
index 21b92365ec9e3bca67bfb689cffa5b75cebf2b57..7ec8b8240cd213608c382cc8634a8806d1e64b66 100644
--- a/sudo/locale/fi_FI/fusiondirectory.po
+++ b/sudo/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
@@ -21,7 +21,7 @@ msgstr ""
 "Language: fi_FI\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr ""
@@ -30,7 +30,7 @@ msgstr ""
 msgid "Sudo management"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr ""
 
diff --git a/sudo/locale/fr/fusiondirectory.po b/sudo/locale/fr/fusiondirectory.po
index bb23569a70ade57769bae413cd9e6526bcb9592f..5fa8814468094886a681ebfa7b92fcc0ae71c0aa 100644
--- a/sudo/locale/fr/fusiondirectory.po
+++ b/sudo/locale/fr/fusiondirectory.po
@@ -5,24 +5,24 @@
 # 
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2017
-# Benoit Mortier <benoit.mortier@opensides.be>, 2018
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
-"Last-Translator: Benoit Mortier <benoit.mortier@opensides.be>, 2018\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr "Sudo"
@@ -31,7 +31,7 @@ msgstr "Sudo"
 msgid "Sudo management"
 msgstr "Gestion sudo"
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr "Rôle sudo"
 
diff --git a/sudo/locale/hu_HU/fusiondirectory.po b/sudo/locale/hu_HU/fusiondirectory.po
index 448ac02975d9d7f4f68b4f5be674910eedc20968..a2726cb4b3815dd0c35e7f904dbc716b37bff73e 100644
--- a/sudo/locale/hu_HU/fusiondirectory.po
+++ b/sudo/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
@@ -21,7 +21,7 @@ msgstr ""
 "Language: hu_HU\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr ""
@@ -30,7 +30,7 @@ msgstr ""
 msgid "Sudo management"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr ""
 
diff --git a/sudo/locale/id/fusiondirectory.po b/sudo/locale/id/fusiondirectory.po
index 5e5d42947c99866fc7ad4bd6b223ce38f832ed6a..0ae018c1f1a64715b7fea5a352bd0d624a26eb6f 100644
--- a/sudo/locale/id/fusiondirectory.po
+++ b/sudo/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
@@ -17,7 +17,7 @@ msgstr ""
 "Language: id\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr ""
@@ -26,7 +26,7 @@ msgstr ""
 msgid "Sudo management"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr ""
 
diff --git a/sudo/locale/it_IT/fusiondirectory.po b/sudo/locale/it_IT/fusiondirectory.po
index 84d4c1923cac6175f3ed108d2cc086eb3a27d67d..b92be2df300d3000c21388981fe063491958c41a 100644
--- a/sudo/locale/it_IT/fusiondirectory.po
+++ b/sudo/locale/it_IT/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: Paola Penati <paola.penati@opensides.be>, 2018\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -20,9 +20,9 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr "Sudo"
@@ -31,7 +31,7 @@ msgstr "Sudo"
 msgid "Sudo management"
 msgstr "Gestione di Sudo"
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr "Ruolo Sudo"
 
diff --git a/sudo/locale/ja/fusiondirectory.po b/sudo/locale/ja/fusiondirectory.po
index 02713fcc06953b7f5486dec5eb2b3422bb7042ca..8876e850620210e5801f2287788d322774175a4d 100644
--- a/sudo/locale/ja/fusiondirectory.po
+++ b/sudo/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
@@ -17,7 +17,7 @@ msgstr ""
 "Language: ja\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr ""
@@ -26,7 +26,7 @@ msgstr ""
 msgid "Sudo management"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr ""
 
diff --git a/sudo/locale/ko/fusiondirectory.po b/sudo/locale/ko/fusiondirectory.po
index a211918affbc4edd27cf2fe9e9f56e1684a64103..f7a6db7500eeedc96388e1c12aae4b3829323f26 100644
--- a/sudo/locale/ko/fusiondirectory.po
+++ b/sudo/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
@@ -21,7 +21,7 @@ msgstr ""
 "Language: ko\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr "Sudo"
@@ -30,7 +30,7 @@ msgstr "Sudo"
 msgid "Sudo management"
 msgstr "Sudo  관리"
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr "Sudo ì—­í• "
 
diff --git a/sudo/locale/lv/fusiondirectory.po b/sudo/locale/lv/fusiondirectory.po
index d62058be492a4138e2ee78cc81865c7c095ac78e..28c504db69fb75a3f43e23e0211886a5bf27f257 100644
--- a/sudo/locale/lv/fusiondirectory.po
+++ b/sudo/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
@@ -21,7 +21,7 @@ msgstr ""
 "Language: lv\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr ""
@@ -30,7 +30,7 @@ msgstr ""
 msgid "Sudo management"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr ""
 
diff --git a/sudo/locale/nb/fusiondirectory.po b/sudo/locale/nb/fusiondirectory.po
index 9abd296de4603b65811e7f4cc2173c2678a36b7b..394fb31aad791a7e517cfe7c3b88501c62d4eda3 100644
--- a/sudo/locale/nb/fusiondirectory.po
+++ b/sudo/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
@@ -21,7 +21,7 @@ msgstr ""
 "Language: nb\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr ""
@@ -30,7 +30,7 @@ msgstr ""
 msgid "Sudo management"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr ""
 
diff --git a/sudo/locale/nl/fusiondirectory.po b/sudo/locale/nl/fusiondirectory.po
index aeb6421b3b05ca089277789281be0c9f33a9c9e0..357d458756e38c8d71f1b885f65f88aec32d2f45 100644
--- a/sudo/locale/nl/fusiondirectory.po
+++ b/sudo/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
@@ -22,7 +22,7 @@ msgstr ""
 "Language: nl\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr "Sudo"
@@ -31,7 +31,7 @@ msgstr "Sudo"
 msgid "Sudo management"
 msgstr "Sudo-beheer"
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr "Sudo-rol"
 
diff --git a/sudo/locale/pl/fusiondirectory.po b/sudo/locale/pl/fusiondirectory.po
index 5b38b3f9b1700567773a2814322091225dad8e4e..7596ab8bf38c6add90f523d650ad80489a936baf 100644
--- a/sudo/locale/pl/fusiondirectory.po
+++ b/sudo/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
@@ -21,7 +21,7 @@ msgstr ""
 "Language: pl\n"
 "Plural-Forms: 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);\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr ""
@@ -30,7 +30,7 @@ msgstr ""
 msgid "Sudo management"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr ""
 
diff --git a/sudo/locale/pt/fusiondirectory.po b/sudo/locale/pt/fusiondirectory.po
index 2ac5ec2d09d8927f1666594fc9da098749308ffc..c19b1547a1a12c606f60864115201e72a6490d9e 100644
--- a/sudo/locale/pt/fusiondirectory.po
+++ b/sudo/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,9 +19,9 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr ""
@@ -30,7 +30,7 @@ msgstr ""
 msgid "Sudo management"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr ""
 
diff --git a/sudo/locale/pt_BR/fusiondirectory.po b/sudo/locale/pt_BR/fusiondirectory.po
index e7ae786950013038784417636634a4f306a0f2e2..7c1f994bc2a0471ba8b23900567f1259e7fb8c3e 100644
--- a/sudo/locale/pt_BR/fusiondirectory.po
+++ b/sudo/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,9 +19,9 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr "Sudo"
@@ -30,7 +30,7 @@ msgstr "Sudo"
 msgid "Sudo management"
 msgstr "Gestação sudo"
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr "Função sudo"
 
diff --git a/sudo/locale/ru/fusiondirectory.po b/sudo/locale/ru/fusiondirectory.po
index cc3dc559edbe8996f0ccfeb4c7f380132729a837..67e571fbaf5dea85395286b750fb62a3b50d4450 100644
--- a/sudo/locale/ru/fusiondirectory.po
+++ b/sudo/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
@@ -21,7 +21,7 @@ msgstr ""
 "Language: ru\n"
 "Plural-Forms: 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);\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr ""
@@ -30,7 +30,7 @@ msgstr ""
 msgid "Sudo management"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr ""
 
diff --git a/sudo/locale/ru@petr1708/fusiondirectory.po b/sudo/locale/ru@petr1708/fusiondirectory.po
index 3eac3d222b13fbec4fcfa28eff4d188c8115dbe7..a9363ef6dd228f0a886fa688be38dea733b219cd 100644
--- a/sudo/locale/ru@petr1708/fusiondirectory.po
+++ b/sudo/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
@@ -17,7 +17,7 @@ msgstr ""
 "Language: ru@petr1708\n"
 "Plural-Forms: 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);\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr ""
@@ -26,7 +26,7 @@ msgstr ""
 msgid "Sudo management"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr ""
 
diff --git a/sudo/locale/sv/fusiondirectory.po b/sudo/locale/sv/fusiondirectory.po
index 5e3bf97b1c373966638c3825fcf44e7c78fc5085..8a5fd9022c83c45db1c1246a724d9a5219a05a02 100644
--- a/sudo/locale/sv/fusiondirectory.po
+++ b/sudo/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
@@ -21,7 +21,7 @@ msgstr ""
 "Language: sv\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr ""
@@ -30,7 +30,7 @@ msgstr ""
 msgid "Sudo management"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr ""
 
diff --git a/sudo/locale/tr_TR/fusiondirectory.po b/sudo/locale/tr_TR/fusiondirectory.po
index 3dcc891cd948cef43370c19b3efdfa2f28f2a011..781b20575e92abd96a0a516675ebe680788e93ce 100644
--- a/sudo/locale/tr_TR/fusiondirectory.po
+++ b/sudo/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
@@ -17,7 +17,7 @@ msgstr ""
 "Language: tr_TR\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr ""
@@ -26,7 +26,7 @@ msgstr ""
 msgid "Sudo management"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr ""
 
diff --git a/sudo/locale/ug/fusiondirectory.po b/sudo/locale/ug/fusiondirectory.po
index e0374b36fe2e212237555da782aa86237db95f38..565244cdf90a810848abc8b14f2f12e176ce7cf5 100644
--- a/sudo/locale/ug/fusiondirectory.po
+++ b/sudo/locale/ug/fusiondirectory.po
@@ -8,16 +8,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr ""
@@ -26,7 +26,7 @@ msgstr ""
 msgid "Sudo management"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr ""
 
diff --git a/sudo/locale/vi_VN/fusiondirectory.po b/sudo/locale/vi_VN/fusiondirectory.po
index 32346b8715d6a3f52c053f5491b818bb28187913..76cdca81b02b73043c16d119364cedab18aa259f 100644
--- a/sudo/locale/vi_VN/fusiondirectory.po
+++ b/sudo/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
@@ -21,7 +21,7 @@ msgstr ""
 "Language: vi_VN\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr ""
@@ -30,7 +30,7 @@ msgstr ""
 msgid "Sudo management"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr ""
 
diff --git a/sudo/locale/zh/fusiondirectory.po b/sudo/locale/zh/fusiondirectory.po
index 5c334dfa5758a5f84d63ecb509ec784aaf9eb3cc..2ef12d2da0e31b250a9aa5fef753f6110ea29a0c 100644
--- a/sudo/locale/zh/fusiondirectory.po
+++ b/sudo/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
@@ -21,7 +21,7 @@ msgstr ""
 "Language: zh\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr ""
@@ -30,7 +30,7 @@ msgstr ""
 msgid "Sudo management"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr ""
 
diff --git a/sudo/locale/zh_TW/fusiondirectory.po b/sudo/locale/zh_TW/fusiondirectory.po
index 8981d990139382095257f587bd53787b60e940b2..336dba49ad80049b17749c9805c8a69bc7500df7 100644
--- a/sudo/locale/zh_TW/fusiondirectory.po
+++ b/sudo/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:21+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
@@ -17,7 +17,7 @@ msgstr ""
 "Language: zh_TW\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:123
+#: admin/sudo/class_sudoManagement.inc:32 admin/sudo/class_sudoGeneric.inc:124
 #: config/sudo/class_sudoConfig.inc:42
 msgid "Sudo"
 msgstr ""
@@ -26,7 +26,7 @@ msgstr ""
 msgid "Sudo management"
 msgstr ""
 
-#: admin/sudo/class_sudoGeneric.inc:124 admin/sudo/class_sudoGeneric.inc:128
+#: admin/sudo/class_sudoGeneric.inc:125 admin/sudo/class_sudoGeneric.inc:129
 msgid "Sudo role"
 msgstr ""
 
diff --git a/supann-ext/admin/supannStructures/class_supannStructureExt.inc b/supann-ext/admin/supannStructures/class_supannStructureExt.inc
index a0425811fbda6e76ac2bf1b7f0e47a66ee65d0cb..99210736a05db30bf89bcf857896f8ed3698a207 100644
--- a/supann-ext/admin/supannStructures/class_supannStructureExt.inc
+++ b/supann-ext/admin/supannStructures/class_supannStructureExt.inc
@@ -20,29 +20,29 @@
 
 class supannStructureExt extends simplePlugin
 {
-  var $objectclasses = array('fdSupannExt');
+  var $objectclasses = ['fdSupannExt'];
 
   var $mainTab = TRUE;
 
   /* Return plugin information */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('SUPANN-Ext'),
       'plDescription' => _('SUPANN Non-Official Extension'),
-      'plObjectType'  => array('entite', 'etablissement'),
+      'plObjectType'  => ['entite', 'etablissement'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
-    return array(
-      'validity' => array(
+    return [
+      'validity' => [
         'name'  => _('Validity'),
-        'attrs' => array(
+        'attrs' => [
           new GeneralizedTimeDateAttribute(
             _('Start date'), _('The date from which this structure will be valid'),
             'fdSupannStartDate', FALSE,
@@ -53,12 +53,12 @@ class supannStructureExt extends simplePlugin
             'fdSupannEndDate', FALSE,
             ''
           ),
-        )
-      ),
-      'relation' => array(
+        ]
+      ],
+      'relation' => [
         'name'  => _('Relations'),
-        'class'     => array('fullwidth'),
-        'attrs'     => array(
+        'class'     => ['fullwidth'],
+        'attrs'     => [
           /* These attributes are handled by the SupannOrderedArrayAttribute */
           new HiddenAttribute('fdSupannRelationEntiteType'),
           new HiddenAttribute('fdSupannRelationEntiteRole'),
@@ -67,7 +67,7 @@ class supannStructureExt extends simplePlugin
             new SupannCompositeAttribute(
               _('fdSupannRelationEntite'),
               'fdSupannRelationEntite',
-              array(
+              [
                 new SupannPrefixedSelectAttribute(
                   _('Role'), _('Role'),
                   'fdSupannRelationEntiteRole_role', TRUE,
@@ -82,20 +82,20 @@ class supannStructureExt extends simplePlugin
                   _('Entity'), _('Entity'),
                   'fdSupannRelationEntiteCode_code', FALSE
                 ),
-              ),
+              ],
               '',
               // no label
               ''
             ),
             // no order
             FALSE,
-            array(),
+            [],
             // no edit button
             FALSE
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -105,10 +105,10 @@ class supannStructureExt extends simplePlugin
 
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(objectClass=supannEntite)', array('supannCodeEntite', 'ou', 'o','supannEtablissement'));
+    $ldap->search('(objectClass=supannEntite)', ['supannCodeEntite', 'ou', 'o','supannEtablissement']);
 
-    $code_entites   = array();
-    $label_entites  = array();
+    $code_entites   = [];
+    $label_entites  = [];
     while ($attrs = $ldap->fetch()) {
       if (isset($attrs['supannCodeEntite'][0])) {
         $code_entites[] = $attrs['supannCodeEntite'][0];
diff --git a/supann-ext/locale/en/fusiondirectory.po b/supann-ext/locale/en/fusiondirectory.po
index 34127ebd39fe0b427bae3a3e11f6665da4d5559f..d970d8f2b8c914457f0ad4d24461bcae7e5f6e80 100644
--- a/supann-ext/locale/en/fusiondirectory.po
+++ b/supann-ext/locale/en/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2018-06-25 10:51+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -64,3 +64,7 @@ msgstr ""
 #: admin/supannStructures/class_supannStructureExt.inc:82
 msgid "Entity"
 msgstr ""
+
+#: admin/supannStructures/class_supannStructureExt.inc:136
+msgid "Start date must be smaller than end date"
+msgstr ""
diff --git a/supann/admin/supannStructures/class_entite.inc b/supann/admin/supannStructures/class_entite.inc
index 38d061df97493337eea2c4cae7884ce4d4b22e79..6b033309337eefd5abc6b1e388c510fe89801a86 100644
--- a/supann/admin/supannStructures/class_entite.inc
+++ b/supann/admin/supannStructures/class_entite.inc
@@ -21,36 +21,36 @@
 
 class entite extends simplePlugin
 {
-  var $objectclasses = array('top','supannEntite','organizationalUnit');
+  var $objectclasses = ['top','supannEntite','organizationalUnit'];
 
   var $mainTab = TRUE;
 
   /* Return plugin information */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Entity'),
       'plDescription' => _('SupAnn Entity Settings'),
-      'plObjectType'  => array('entite' => array(
+      'plObjectType'  => ['entite' => [
         'name'        => _('SupAnn Entity'),
         'filter'      => '(&(objectClass=supannEntite)(objectClass=organizationalUnit))',
         'ou'          => get_ou('supannStructuresRDN'),
         'mainAttr'    => 'supannCodeEntite',
         'icon'        => 'geticon.php?context=applications&icon=supann-entite&size=16',
         'nameAttr'    => 'ou',
-      )),
+      ]],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Entity'),
-        'attrs' => array(
+        'attrs' => [
           new StringAttribute(
             _('Name'), _('The name to write in the ou attribute for this entity'),
             'ou', TRUE
@@ -59,11 +59,11 @@ class entite extends simplePlugin
             _('Description'), _('Short description of this entity'),
             'description', FALSE
           ),
-        )
-      ),
-      'admin' => array(
+        ]
+      ],
+      'admin' => [
         'name'  => _('Administrative information'),
-        'attrs' => array(
+        'attrs' => [
           new PhoneNumberAttribute(
             _('Telephone'), _('Phone number of this entity'),
             'telephoneNumber', FALSE
@@ -76,11 +76,11 @@ class entite extends simplePlugin
             _('Postal address'), _('Postal address of this entity'),
             'postalAddress', FALSE
           ),
-        )
-      ),
-      'supann' => array(
+        ]
+      ],
+      'supann' => [
         'name'  => _('SupAnn information'),
-        'attrs' => array(
+        'attrs' => [
           new SupannPrefixedSelectAttribute(
             _('Entity type'), _('The SupAnn type that best fits this entity'),
             'supannTypeEntite', FALSE, 'entite'
@@ -88,7 +88,7 @@ class entite extends simplePlugin
           new StringAttribute(
             _('Entity code'), _('The SupAnn code of this entity'),
             'supannCodeEntite', TRUE,
-            '', '', '/^[a-z0-9_-]*$/i'
+            '', '', '|^[a-zA-Z0-9_/-]*$|'
           ),
           new SetAttribute(
             new SelectAttribute(
@@ -105,9 +105,9 @@ class entite extends simplePlugin
               '/^{[^}]+}.+$/'
             )
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -117,10 +117,10 @@ class entite extends simplePlugin
 
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(objectClass=supannEntite)', array('supannCodeEntite','ou','o'));
+    $ldap->search('(objectClass=supannEntite)', ['supannCodeEntite','ou','o']);
 
-    $entity_codes   = array('');
-    $entity_labels  = array('');
+    $entity_codes   = [''];
+    $entity_labels  = [''];
     while ($attrs = $ldap->fetch()) {
       if (isset($attrs['supannCodeEntite'][0])) {
         $entity_codes[] = $attrs['supannCodeEntite'][0];
diff --git a/supann/admin/supannStructures/class_etablissement.inc b/supann/admin/supannStructures/class_etablissement.inc
index 7fc3226c946392d3ef118e7961065774078af115..3d4a4d1d8b5207a2fc0965bb292b7458824fb4d2 100644
--- a/supann/admin/supannStructures/class_etablissement.inc
+++ b/supann/admin/supannStructures/class_etablissement.inc
@@ -21,36 +21,36 @@
 
 class etablissement extends simplePlugin
 {
-  var $objectclasses = array('top','supannEntite','organization','supannOrg','eduOrg');
+  var $objectclasses = ['top','supannEntite','organization','supannOrg','eduOrg'];
 
   var $mainTab = TRUE;
 
   /* Return plugin information */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Establishment'),
       'plDescription' => _('SupAnn Establishment Settings'),
-      'plObjectType'  => array('etablissement' => array(
+      'plObjectType'  => ['etablissement' => [
         'name'        => _('SupAnn Establishment'),
         'filter'      => '(&(objectClass=supannEntite)(objectClass=organization))',
         'ou'          => get_ou('supannStructuresRDN'),
         'mainAttr'    => 'supannCodeEntite',
         'icon'        => 'geticon.php?context=applications&icon=supann-etablissement&size=16',
         'nameAttr'    => 'o',
-      )),
+      ]],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Properties'),
-        'attrs' => array(
+        'attrs' => [
           new BooleanAttribute(
             _('Root establishment'), _('Set this establishment as the root one'),
             'set_root'
@@ -63,11 +63,11 @@ class etablissement extends simplePlugin
             _('Description'), _('A short description of this establishment'),
             'description', FALSE
           )
-        )
-      ),
-      'location' => array(
+        ]
+      ],
+      'location' => [
         'name'  => _('Location'),
-        'attrs' => array(
+        'attrs' => [
           new StringAttribute(
             _('Location'), _('Usually the city where this establishment is'),
             'l', FALSE
@@ -84,11 +84,11 @@ class etablissement extends simplePlugin
             _('Fax'), _('Fax number of this establishment'),
             'facsimileTelephoneNumber', FALSE
           ),
-        )
-      ),
-      'supann' => array(
+        ]
+      ],
+      'supann' => [
         'name'  => _('SupAnn properties'),
-        'attrs' => array(
+        'attrs' => [
           new StringAttribute(
             _('Establishment code'), _('The code of this establishment (must have a prefix between {})'),
             'supannEtablissement', TRUE,
@@ -101,7 +101,7 @@ class etablissement extends simplePlugin
           new StringAttribute(
             _('SupAnn code'), _('The SupAnn code for this establishment'),
             'supannCodeEntite', TRUE,
-            '', '', '/^[a-z0-9_-]*$/i'
+            '', '', '|^[a-zA-Z0-9_/-]*$|'
           ),
           new SetAttribute(
             new SelectAttribute(
@@ -134,9 +134,9 @@ class etablissement extends simplePlugin
             _('White pages URI'), _('The URI of this establishment white pages'),
             'eduOrgWhitePagesURI', FALSE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -186,10 +186,10 @@ class etablissement extends simplePlugin
         msg_dialog::display(_('LDAP error'), msgPool::ldaperror($ldap->get_error(), $dn, LDAP_DEL, get_class()));
       }
     }
-    return array();
+    return [];
   }
 
-  function ldap_save()
+  function ldap_save ()
   {
     global $config;
 
@@ -230,7 +230,7 @@ class etablissement extends simplePlugin
       if ($root_mode == 'delete') {
         $ldap->rmdir($dn);
       } else {
-        $root_attrs['objectClass'] = array('top','dcObject','organization','supannOrg','eduOrg');
+        $root_attrs['objectClass'] = ['top','dcObject','organization','supannOrg','eduOrg'];
         $root_attrs['dc'] = $root_attrs['o'];
         unset($root_attrs['supannTypeEntite']);
         unset($root_attrs['supannCodeEntite']);
@@ -247,13 +247,13 @@ class etablissement extends simplePlugin
     return $errors;
   }
 
-  function get_root_code()
+  function get_root_code ()
   {
     global $config;
     $ldap = $config->get_ldap_link();
 
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(objectClass=supannOrg)', array('*'), 'one');
+    $ldap->search('(objectClass=supannOrg)', ['*'], 'one');
 
     if ($ldap->count() > 1) {
       msg_dialog::display(_('LDAP error'), 'There are several establishments at root!');
diff --git a/supann/admin/supannStructures/class_supann.inc b/supann/admin/supannStructures/class_supann.inc
index c7cefb4d9ad2c14fa44e7b3c224166c45539a133..2b6dfc29b0272006a76cf2e380fe03a2c63eec2a 100644
--- a/supann/admin/supannStructures/class_supann.inc
+++ b/supann/admin/supannStructures/class_supann.inc
@@ -20,13 +20,13 @@
 
 class supann
 {
-  static $choices_for = array();
+  static $choices_for = [];
 
-  static function get_prefixed_choices_for($shortname)
+  static function get_prefixed_choices_for ($shortname)
   {
     $dir  = @opendir(SUPANN_DIR);
-    $m    = array();
-    $res  = array();
+    $m    = [];
+    $res  = [];
 
     while ($file = readdir($dir)) {
       if (preg_match('/^'.$shortname.'_(.+)$/', $file, $m)) {
@@ -39,13 +39,13 @@ class supann
     return $res;
   }
 
-  static function &get_choices_for($type, $prefix = '')
+  static function &get_choices_for ($type, $prefix = '')
   {
     if (isset(static::$choices_for[$prefix.$type])) {
       return static::$choices_for[$prefix.$type];
     }
-    $entity_codes   = array();
-    $entity_labels  = array();
+    $entity_codes   = [];
+    $entity_labels  = [];
     if (file_exists(SUPANN_DIR.'/'.$type)) {
       $entiteList = fopen(SUPANN_DIR.'/'.$type, 'r');
       if ($entiteList === FALSE) {
@@ -54,11 +54,11 @@ class supann
           sprintf(_("Cannot read file: '%s'"), SUPANN_DIR.'/'.$type),
           ERROR_DIALOG
         );
-        return array(array(), array());
+        return [[], []];
       }
       while (($line = fgets($entiteList)) !== FALSE) {
         $line = trim($line);
-        if (!preg_match ('/^#/', $line) && !empty($line)) {
+        if (!preg_match('/^#/', $line) && !empty($line)) {
           $entite_line = preg_split('/;/', $line);
 
           $entity_codes[]   = $prefix.$entite_line[0];
@@ -68,12 +68,12 @@ class supann
       fclose($entiteList);
     }
     array_multisort($entity_labels, $entity_codes);
-    static::$choices_for[$prefix.$type] = array($entity_codes, $entity_labels);
+    static::$choices_for[$prefix.$type] = [$entity_codes, $entity_labels];
     return static::$choices_for[$prefix.$type];
   }
 
   /* return the 64 first chars and "…" after if text is longer */
-  static function truncate_label($str, $len = 50)
+  static function truncate_label ($str, $len = 50)
   {
     if (mb_strlen($str) > $len) {
       return mb_substr($str, 0, $len).'…';
diff --git a/supann/admin/supannStructures/class_supannStructuresManagement.inc b/supann/admin/supannStructures/class_supannStructuresManagement.inc
index c5b3ab1f59648bfa00c8e3b053856f0ae8a4643b..3187b4e676e6d876de453f4dd315bd3309fa9036 100644
--- a/supann/admin/supannStructures/class_supannStructuresManagement.inc
+++ b/supann/admin/supannStructures/class_supannStructuresManagement.inc
@@ -20,49 +20,49 @@
 
 class supannStructuresManagement extends simpleManagement
 {
-  protected $objectTypes = array('etablissement', 'entite');
+  protected $objectTypes = ['etablissement', 'entite'];
 
-  protected $autoFilterAttributes = array('dn', 'ou', 'o', 'description', 'supannCodeEntite', 'supannCodeEntiteParent');
+  protected $autoFilterAttributes = ['dn', 'ou', 'o', 'description', 'supannCodeEntite', 'supannCodeEntiteParent'];
 
   protected $departmentBrowser      = FALSE;
   protected $departmentRootVisible  = FALSE;
   protected $baseMode               = FALSE;
 
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('SupAnn structures'),
       'plDescription' => _('SupAnn structures management'),
       'plIcon'        => 'geticon.php?context=applications&icon=supann&size=48',
       'plSection'     => 'accounts',
       'plPriority'    => 40,
-      'plManages'     => array('etablissement', 'entite'),
+      'plManages'     => ['etablissement', 'entite'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 
   function parseXML ($file)
   {
     $data = parent::parseXML($file);
     $data['list']['table']['layout'] = '|20px;c|||||150px;r|';
-    $columns = array (
-      array(
+    $columns = [
+      [
         'label'         => 'supannCodeEntite',
         'sortAttribute' => 'supannCodeEntite',
         'sortType'      => 'string',
         'value'         => '%{filter:link(row,dn,"%s",supannCodeEntite)}',
         'export'        => 'true',
-      ),
-      array(
+      ],
+      [
         'label'         => 'supannCodeEntiteParent',
         'sortAttribute' => 'supannCodeEntiteParent',
         'sortType'      => 'string',
         'value'         => '%{filter:link(row,dn,"%s",supannCodeEntiteParent)}',
         'export'        => 'true',
-      ),
-    );
+      ],
+    ];
     array_splice($data['list']['table']['column'], 2, 0, $columns);
     return $data;
   }
diff --git a/supann/config/supann/class_supannConfig.inc b/supann/config/supann/class_supannConfig.inc
index a92584f607132bf8bb97ad8520e7f41f99fe16e9..96ecbff44ced0954624d180ebc810a467efaa5c1 100644
--- a/supann/config/supann/class_supannConfig.inc
+++ b/supann/config/supann/class_supannConfig.inc
@@ -20,39 +20,39 @@
 
 class supannConfig extends simplePlugin
 {
-  var $objectclasses  = array('fdSupannPluginConf');
+  var $objectclasses  = ['fdSupannPluginConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('SupAnn configuration'),
       'plDescription'   => _('FusionDirectory SupAnn plugin configuration'),
-      'plCategory'      => array('configuration'),
-      'plObjectType'    => array('smallConfig'),
+      'plCategory'      => ['configuration'],
+      'plObjectType'    => ['smallConfig'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('SupAnn'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('SupAnn RDN'), _('Branch in which SupAnn structures will be stored'),
             'fdSupannStructuresRDN', TRUE,
             'ou=structures'
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('SupAnn mail for recovery'), _('Allow the use of mail addresses from the personal mail address field from SupAnn account for password recovery'),
             'fdSupannPasswordRecovery', FALSE,
             TRUE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/supann/locale/af_ZA/fusiondirectory.po b/supann/locale/af_ZA/fusiondirectory.po
index 718700f42d6ebe4046793a0599fdf322736ebe28..4c91b5abd7d9109ed6b05735a061a02b6b2726a1 100644
--- a/supann/locale/af_ZA/fusiondirectory.po
+++ b/supann/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/supann/locale/ar/fusiondirectory.po b/supann/locale/ar/fusiondirectory.po
index f0decf1f45ab23df0f799ad2db005102d296459e..917cafba7109bd2cec089b65df1c3efd72da0f8d 100644
--- a/supann/locale/ar/fusiondirectory.po
+++ b/supann/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/supann/locale/ca/fusiondirectory.po b/supann/locale/ca/fusiondirectory.po
index 804ab9e20f0b6cde020fea91c94b54bd58938f23..220347cd89283532fae54b2451cf1d2ca6467a44 100644
--- a/supann/locale/ca/fusiondirectory.po
+++ b/supann/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/supann/locale/cs_CZ/fusiondirectory.po b/supann/locale/cs_CZ/fusiondirectory.po
index 7875f2e464ca3c2f05b53af8580cb818b310be6e..e2c60f2b594e193adb4c46693fb16ab68fc98f34 100644
--- a/supann/locale/cs_CZ/fusiondirectory.po
+++ b/supann/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2019\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/supann/locale/de/fusiondirectory.po b/supann/locale/de/fusiondirectory.po
index e69c6d1872b7e561bcf97eb218cc9170f03301ee..e11837d6536e84536fbf9c49286f2ff3406f690a 100644
--- a/supann/locale/de/fusiondirectory.po
+++ b/supann/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/supann/locale/el_GR/fusiondirectory.po b/supann/locale/el_GR/fusiondirectory.po
index c9ea0bcbdb8e2da10f885980672a1a9cc8e99587..10845e599391486aec2ecd7ec67033ac502897d0 100644
--- a/supann/locale/el_GR/fusiondirectory.po
+++ b/supann/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/supann/locale/en/fusiondirectory.po b/supann/locale/en/fusiondirectory.po
index 873e4e574cb67f28418d0b71c6eaf690993346f4..5e7e633fe610ebe00b301bcee3caf5eb40911e99 100644
--- a/supann/locale/en/fusiondirectory.po
+++ b/supann/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -17,630 +17,650 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: personal/supann/class_supannAccount.inc:36
-#: personal/supann/class_supannAccount.inc:111
-msgid "None"
+#: config/supann/class_supannConfig.inc:28
+msgid "SupAnn configuration"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:108
-msgid "Licence"
+#: config/supann/class_supannConfig.inc:29
+msgid "FusionDirectory SupAnn plugin configuration"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:108
-msgid "Master"
+#: config/supann/class_supannConfig.inc:41
+#: personal/supann/class_supannAccount.inc:224
+msgid "SupAnn"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:108
-msgid "Ph.D."
+#: config/supann/class_supannConfig.inc:44
+msgid "SupAnn RDN"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:108
-msgid "Another class of degree"
+#: config/supann/class_supannConfig.inc:44
+msgid "Branch in which SupAnn structures will be stored"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:108
-msgid "post-graduate year"
+#: config/supann/class_supannConfig.inc:49
+msgid "SupAnn mail for recovery"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:111
-msgid "1st year"
+#: config/supann/class_supannConfig.inc:49
+msgid ""
+"Allow the use of mail addresses from the personal mail address field from "
+"SupAnn account for password recovery"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:111
-msgid "2nd year"
+#: admin/supannStructures/class_etablissement.inc:32
+#: personal/supann/class_supannAccount.inc:335
+#: personal/supann/class_supannAccount.inc:374
+msgid "Establishment"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:111
-msgid "3rd year"
+#: admin/supannStructures/class_etablissement.inc:33
+msgid "SupAnn Establishment Settings"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:112
-msgid "4th year"
+#: admin/supannStructures/class_etablissement.inc:35
+msgid "SupAnn Establishment"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:112
-msgid "5th year"
+#: admin/supannStructures/class_etablissement.inc:52
+msgid "Properties"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:112
-msgid "6th year"
+#: admin/supannStructures/class_etablissement.inc:55
+msgid "Root establishment"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:113
-msgid "7th year"
+#: admin/supannStructures/class_etablissement.inc:55
+msgid "Set this establishment as the root one"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:113
-msgid "8th year"
+#: admin/supannStructures/class_etablissement.inc:59
+#: admin/supannStructures/class_entite.inc:55
+msgid "Name"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:113
-msgid "9th year"
+#: admin/supannStructures/class_etablissement.inc:59
+msgid "The name to write in the o attribute for this establishment"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:216
-msgid "SupAnn"
+#: admin/supannStructures/class_etablissement.inc:63
+#: admin/supannStructures/class_entite.inc:59
+msgid "Description"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:217
-msgid "SupAnn information management plugin"
+#: admin/supannStructures/class_etablissement.inc:63
+msgid "A short description of this establishment"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:234
-msgid "Identity"
+#: admin/supannStructures/class_etablissement.inc:69
+#: admin/supannStructures/class_etablissement.inc:72
+msgid "Location"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:237
-msgid "Civilite"
+#: admin/supannStructures/class_etablissement.inc:72
+msgid "Usually the city where this establishment is"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:237
-msgid "supannCivilite - Civility for this person"
+#: admin/supannStructures/class_etablissement.inc:76
+msgid "Address"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:242
-msgid "Alias login"
+#: admin/supannStructures/class_etablissement.inc:76
+msgid "The postal address of this establishment"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:242
-msgid "supannAliasLogin - An alias for the login of this user"
+#: admin/supannStructures/class_etablissement.inc:80
+#: admin/supannStructures/class_entite.inc:68
+msgid "Telephone"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:246
-msgid "eduPersonPrincipalName"
+#: admin/supannStructures/class_etablissement.inc:80
+msgid "Phone number of this establishment"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:246
-msgid ""
-"eduPersonPrincipalName - A name that look like <id>@<domain> which is unique "
-"for this domain, and has not be assigned to anyone else recently"
+#: admin/supannStructures/class_etablissement.inc:84
+#: admin/supannStructures/class_entite.inc:72
+msgid "Fax"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:250
-msgid "Nick name"
+#: admin/supannStructures/class_etablissement.inc:84
+msgid "Fax number of this establishment"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:250
-msgid "eduPersonNickname - Can contain a nick name for this user"
+#: admin/supannStructures/class_etablissement.inc:90
+msgid "SupAnn properties"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:255
-msgid "Ref ids"
+#: admin/supannStructures/class_etablissement.inc:93
+msgid "Establishment code"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:255
-msgid "supannRefId - IDs/links for this user on other systems"
+#: admin/supannStructures/class_etablissement.inc:93
+msgid "The code of this establishment (must have a prefix between {})"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:265
-msgid "Contact"
+#: admin/supannStructures/class_etablissement.inc:98
+msgid "Establishment type"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:269
-msgid "Other phone numbers"
+#: admin/supannStructures/class_etablissement.inc:98
+msgid "The SupAnn type that best fits this Establishment"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:269
-msgid "supannAutreTelephone - Other phone numbers for this user"
+#: admin/supannStructures/class_etablissement.inc:102
+msgid "SupAnn code"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:275
-msgid "Other mail addresses"
+#: admin/supannStructures/class_etablissement.inc:102
+msgid "The SupAnn code for this establishment"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:275
-msgid ""
-"supannAutreMail - Other mail addresses for this user. Each must be unique"
+#: admin/supannStructures/class_etablissement.inc:108
+#: admin/supannStructures/class_entite.inc:95
+msgid "Parent entities"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:281
-msgid "Personal mail addresses"
+#: admin/supannStructures/class_etablissement.inc:108
+#: admin/supannStructures/class_entite.inc:95
+msgid "The parent entities of this entity"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:281
-msgid "supannMailPerso - Personal mail addresses for this user"
+#: admin/supannStructures/class_etablissement.inc:114
+#: admin/supannStructures/class_entite.inc:101
+msgid "Reference IDs"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:286
-msgid "red List"
+#: admin/supannStructures/class_etablissement.inc:114
+#: admin/supannStructures/class_entite.inc:101
+msgid "supannRefId - IDs/links for this entity on other systems"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:286
-msgid "supannListeRouge - Should this person be on the red list"
+#: admin/supannStructures/class_etablissement.inc:122
+msgid "Legal name"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:292
-msgid "Affectation"
+#: admin/supannStructures/class_etablissement.inc:122
+msgid "The legal name of this establishment"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:295
-msgid "Entity primary assignment"
+#: admin/supannStructures/class_etablissement.inc:126
+msgid "Home page URI"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:295
-msgid "supannEntiteAffectationPrincipale - Main assignment of the person"
+#: admin/supannStructures/class_etablissement.inc:126
+msgid "The URI of this establishment website home page"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:300
-#: personal/supann/class_supannAccount.inc:391
-#: personal/supann/class_supannAccount.inc:455
-msgid "Entity assignment"
+#: admin/supannStructures/class_etablissement.inc:130
+msgid "Institution URI"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:300
-#: personal/supann/class_supannAccount.inc:455
-msgid ""
-"supannEntiteAffectation - represents assignments of the person in an "
-"institution, a component, service, etc."
+#: admin/supannStructures/class_etablissement.inc:130
+msgid "The URI of this establishment institution website"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:306
-msgid "Entity type assignment"
+#: admin/supannStructures/class_etablissement.inc:134
+msgid "White pages URI"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:306
-#: personal/supann/class_supannAccount.inc:451
-msgid "supannTypeEntiteAffectation"
+#: admin/supannStructures/class_etablissement.inc:134
+msgid "The URI of this establishment white pages"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:313
-msgid "Affiliation"
+#: admin/supannStructures/class_etablissement.inc:186
+#: admin/supannStructures/class_etablissement.inc:259
+msgid "LDAP error"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:316
-msgid "Primary affiliation"
+#: admin/supannStructures/class_supannStructuresManagement.inc:35
+msgid "SupAnn structures"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:316
-msgid "eduPersonPrimaryAffiliation - Main status of the person"
+#: admin/supannStructures/class_supannStructuresManagement.inc:36
+msgid "SupAnn structures management"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:321
-msgid "Affiliations"
+#: admin/supannStructures/class_entite.inc:32
+#: admin/supannStructures/class_entite.inc:52
+#: personal/supann/class_supannAccount.inc:463
+msgid "Entity"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:321
-msgid ""
-"eduPersonAffiliation - status of the person: student, BIATOSS, teacher, "
-"contract, retired, hosted staff (CNRS, INSERM, etc.), a former student, etc."
+#: admin/supannStructures/class_entite.inc:33
+msgid "SupAnn Entity Settings"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:327
-#: personal/supann/class_supannAccount.inc:366
-#: admin/supannStructures/class_etablissement.inc:31
-msgid "Establishment"
+#: admin/supannStructures/class_entite.inc:35
+msgid "SupAnn Entity"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:327
-msgid ""
-"supannEtablissement - institution or unit of administrative attachment of "
-"the person"
+#: admin/supannStructures/class_entite.inc:55
+msgid "The name to write in the ou attribute for this entity"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:334
-msgid "Student profile"
+#: admin/supannStructures/class_entite.inc:59
+msgid "Short description of this entity"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:337
-msgid "INE code"
+#: admin/supannStructures/class_entite.inc:65
+msgid "Administrative information"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:337
-msgid "supannCodeINE - INE code of this student"
+#: admin/supannStructures/class_entite.inc:68
+msgid "Phone number of this entity"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:341
-msgid "Student ID"
+#: admin/supannStructures/class_entite.inc:72
+msgid "Fax number of this entity"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:341
-msgid "supannEtuId - Scolarity id"
+#: admin/supannStructures/class_entite.inc:76
+msgid "Postal address"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:347
-msgid "Student subscriptions"
+#: admin/supannStructures/class_entite.inc:76
+msgid "Postal address of this entity"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:362
-msgid "supannEtuInscription - Subscriptions for this student"
+#: admin/supannStructures/class_entite.inc:82
+msgid "SupAnn information"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:366
-msgid "supannEtablissement - Etablissement in which this subscription was done"
+#: admin/supannStructures/class_entite.inc:85
+#: personal/supann/class_supannAccount.inc:459
+msgid "Entity type"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:370
-msgid "Year"
+#: admin/supannStructures/class_entite.inc:85
+msgid "The SupAnn type that best fits this entity"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:370
-msgid "supannEtuAnneeInscription - The year this subscription will begin"
+#: admin/supannStructures/class_entite.inc:89
+msgid "Entity code"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:375
-msgid "Subscription type"
+#: admin/supannStructures/class_entite.inc:89
+msgid "The SupAnn code of this entity"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:375
-msgid "supannEtuRegimeInscription - The type of this subscription"
+#: admin/supannStructures/class_supann.inc:53
+msgid "File error"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:379
-msgid "Disciplinary Sector"
+#: admin/supannStructures/class_supann.inc:54
+#, php-format
+msgid "Cannot read file: '%s'"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:379
-msgid "supannEtuSecteurDisciplinaire - Disciplinary sector education diploma"
+#: personal/supann/class_supannAccount.inc:36
+#: personal/supann/class_supannAccount.inc:119
+msgid "None"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:383
-msgid "Diploma type"
+#: personal/supann/class_supannAccount.inc:116
+msgid "Licence"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:383
-msgid "supannEtuTypeDiplome - Type of diploma"
+#: personal/supann/class_supannAccount.inc:116
+msgid "Master"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:387
-msgid "Curriculum year "
+#: personal/supann/class_supannAccount.inc:116
+msgid "Ph.D."
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:387
-msgid ""
-"supannEtuCursusAnnee - type of curriculum (L, M, D or X, ...) and the year "
-"in the diploma."
+#: personal/supann/class_supannAccount.inc:116
+msgid "Another class of degree"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:391
-msgid "supannEntiteAffectation_affect"
+#: personal/supann/class_supannAccount.inc:116
+msgid "Post-graduate year"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:395
-msgid "Diploma"
+#: personal/supann/class_supannAccount.inc:119
+msgid "1st year"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:395
-msgid "supannEtuDiplome - Diploma prepared by the student"
+#: personal/supann/class_supannAccount.inc:119
+msgid "2nd year"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:399
-msgid "Step"
+#: personal/supann/class_supannAccount.inc:119
+msgid "3rd year"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:399
-msgid ""
-"supannEtuEtape - Step can be considered a split (semester, year, etc.) in "
-"time of education leading to a diploma"
+#: personal/supann/class_supannAccount.inc:120
+msgid "4th year"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:403
-msgid "educational element"
+#: personal/supann/class_supannAccount.inc:120
+msgid "5th year"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:403
-msgid ""
-"supannEtuElementPedagogique - Generic description of the content of "
-"education with a high level of granularity"
+#: personal/supann/class_supannAccount.inc:120
+msgid "6th year"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:417
-msgid "Personal profile"
+#: personal/supann/class_supannAccount.inc:121
+msgid "7th year"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:420
-msgid "Personal ID"
+#: personal/supann/class_supannAccount.inc:121
+msgid "8th year"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:420
-msgid "supannEmpId - Employee identifier"
+#: personal/supann/class_supannAccount.inc:121
+msgid "9th year"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:424
-msgid "Personal corps"
+#: personal/supann/class_supannAccount.inc:225
+msgid "SupAnn information management plugin"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:424
-msgid "supannEmpCorps"
+#: personal/supann/class_supannAccount.inc:242
+msgid "Identity"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:429
-msgid "Activity"
+#: personal/supann/class_supannAccount.inc:245
+msgid "Civilite"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:429
-msgid "supannActivite - category of profession"
+#: personal/supann/class_supannAccount.inc:245
+msgid "supannCivilite - Civility for this person"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:436
-msgid "Roles"
+#: personal/supann/class_supannAccount.inc:250
+msgid "Alias login"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:443
-msgid "supannRoleEntite"
+#: personal/supann/class_supannAccount.inc:250
+msgid "supannAliasLogin - An alias for the login of this user"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:447
-msgid "Generic role"
+#: personal/supann/class_supannAccount.inc:254
+msgid "eduPersonPrincipalName"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:447
-msgid "supannRoleGenerique - Generics Roles of the person in the facility"
+#: personal/supann/class_supannAccount.inc:254
+msgid ""
+"eduPersonPrincipalName - A name that looks like <id>@<domain> which is "
+"unique for this domain, and has not be assigned to anyone else recently"
 msgstr ""
 
-#: personal/supann/class_supannAccount.inc:451
-msgid "Entity assignment type"
+#: personal/supann/class_supannAccount.inc:258
+msgid "Nickname"
 msgstr ""
 
-#: config/supann/class_supannConfig.inc:28
-msgid "SUPANN configuration"
+#: personal/supann/class_supannAccount.inc:258
+msgid "eduPersonNickname - Can contain a nickname for this user"
 msgstr ""
 
-#: config/supann/class_supannConfig.inc:29
-msgid "FusionDirectory SUPANN plugin configuration"
+#: personal/supann/class_supannAccount.inc:263
+msgid "Ref ids"
 msgstr ""
 
-#: config/supann/class_supannConfig.inc:41
-msgid "SUPANN"
+#: personal/supann/class_supannAccount.inc:263
+msgid "supannRefId - IDs/links for this user on other systems"
 msgstr ""
 
-#: config/supann/class_supannConfig.inc:44
-msgid "SUPANN RDN"
+#: personal/supann/class_supannAccount.inc:273
+msgid "Contact"
 msgstr ""
 
-#: config/supann/class_supannConfig.inc:44
-msgid "Branch in which SUPANN structures will be stored"
+#: personal/supann/class_supannAccount.inc:277
+msgid "Other phone numbers"
 msgstr ""
 
-#: config/supann/class_supannConfig.inc:49
-msgid "SUPANN mail for recovery"
+#: personal/supann/class_supannAccount.inc:277
+msgid "supannAutreTelephone - Other phone numbers for this user"
 msgstr ""
 
-#: config/supann/class_supannConfig.inc:49
+#: personal/supann/class_supannAccount.inc:283
+msgid "Other mail addresses"
+msgstr ""
+
+#: personal/supann/class_supannAccount.inc:283
 msgid ""
-"Allow the use of mail addresses from the personal mail address field from "
-"SUPANN account for password recovery"
+"supannAutreMail - Other mail addresses for this user. Each must be unique"
 msgstr ""
 
-#: admin/supannStructures/class_supannStructuresManagement.inc:35
-msgid "Supann structures"
+#: personal/supann/class_supannAccount.inc:289
+msgid "Personal mail addresses"
 msgstr ""
 
-#: admin/supannStructures/class_supannStructuresManagement.inc:36
-msgid "Supann structures management"
+#: personal/supann/class_supannAccount.inc:289
+msgid "supannMailPerso - Personal mail addresses for this user"
 msgstr ""
 
-#: admin/supannStructures/class_supann.inc:53
-msgid "File error"
+#: personal/supann/class_supannAccount.inc:294
+msgid "Red list"
 msgstr ""
 
-#: admin/supannStructures/class_supann.inc:54
-#, php-format
-msgid "Cannot read file: '%s'"
+#: personal/supann/class_supannAccount.inc:294
+msgid "supannListeRouge - Should this person be on the red list"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:32
-msgid "SUPANN Establishment Settings"
+#: personal/supann/class_supannAccount.inc:300
+msgid "Assignment"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:35
-msgid "SUPANN Establishment"
+#: personal/supann/class_supannAccount.inc:303
+msgid "Primary assignment"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:52
-msgid "Properties"
+#: personal/supann/class_supannAccount.inc:303
+msgid "supannEntiteAffectationPrincipale - Main assignment of the person"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:55
-msgid "Root Establishment"
+#: personal/supann/class_supannAccount.inc:308
+msgid "Assignments"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:55
-msgid "Set this Establishment as the root one"
+#: personal/supann/class_supannAccount.inc:308
+#: personal/supann/class_supannAccount.inc:463
+msgid ""
+"supannEntiteAffectation - Represents assignments of the person in an "
+"institution, a component, service, etc."
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:59
-#: admin/supannStructures/class_entite.inc:55
-msgid "Name"
+#: personal/supann/class_supannAccount.inc:314
+msgid "Entity types"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:59
-msgid "The name to write in the o attribute for this Establishment"
+#: personal/supann/class_supannAccount.inc:314
+msgid ""
+"supannTypeEntiteAffectation - Types of the entities this person is assigned "
+"to"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:63
-#: admin/supannStructures/class_entite.inc:76
-msgid "Description"
+#: personal/supann/class_supannAccount.inc:321
+msgid "Affiliation"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:63
-msgid "A short description of this Establishment"
+#: personal/supann/class_supannAccount.inc:324
+msgid "Primary affiliation"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:69
-#: admin/supannStructures/class_etablissement.inc:72
-msgid "Location"
+#: personal/supann/class_supannAccount.inc:324
+msgid "eduPersonPrimaryAffiliation - Main status of the person"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:72
-msgid "Usually the city where this Establishment is"
+#: personal/supann/class_supannAccount.inc:329
+msgid "Affiliations"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:76
-msgid "Address"
+#: personal/supann/class_supannAccount.inc:329
+msgid ""
+"eduPersonAffiliation - Status of the person: student, BIATOSS, teacher, "
+"contract, retired, hosted staff (CNRS, INSERM, etc.), a former student, etc."
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:76
-msgid "The postal address of this Establishment"
+#: personal/supann/class_supannAccount.inc:335
+msgid ""
+"supannEtablissement - Institution or unit of administrative attachment of "
+"the person"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:80
-#: admin/supannStructures/class_entite.inc:64
-msgid "Telephone"
+#: personal/supann/class_supannAccount.inc:342
+msgid "Student profile"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:80
-msgid "Phone number for this Establishment"
+#: personal/supann/class_supannAccount.inc:345
+msgid "INE code"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:84
-#: admin/supannStructures/class_entite.inc:68
-msgid "Fax"
+#: personal/supann/class_supannAccount.inc:345
+msgid "supannCodeINE - INE code of this student"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:84
-msgid "Fax number for this Establishment"
+#: personal/supann/class_supannAccount.inc:349
+msgid "Student ID"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:90
-msgid "SUPANN properties"
+#: personal/supann/class_supannAccount.inc:349
+msgid "supannEtuId - Scolarity id"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:93
-msgid "Establishment code"
+#: personal/supann/class_supannAccount.inc:355
+msgid "Student registrations"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:93
-msgid "The code of this Establishment (must have a prefix between {})"
+#: personal/supann/class_supannAccount.inc:370
+msgid "supannEtuInscription - Registrations for this student"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:98
-msgid "SUPANN code"
+#: personal/supann/class_supannAccount.inc:374
+msgid "supannEtablissement - Etablissement in which this registration was done"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:98
-msgid "The SUPANN code for this Establishment"
+#: personal/supann/class_supannAccount.inc:378
+msgid "Year"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:103
-msgid "Legal name"
+#: personal/supann/class_supannAccount.inc:378
+msgid "supannEtuAnneeInscription - The year this registration will begin"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:103
-msgid "The legal name of this Establishment"
+#: personal/supann/class_supannAccount.inc:383
+msgid "Registration type"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:107
-msgid "Home page URI"
+#: personal/supann/class_supannAccount.inc:383
+msgid "supannEtuRegimeInscription - The type of this registration"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:107
-msgid "The URI of this Establishment website home page"
+#: personal/supann/class_supannAccount.inc:387
+msgid "Disciplinary Sector"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:111
-msgid "Institution URI"
+#: personal/supann/class_supannAccount.inc:387
+msgid "supannEtuSecteurDisciplinaire - Disciplinary sector education diploma"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:111
-msgid "The URI of this Establishment institution website"
+#: personal/supann/class_supannAccount.inc:391
+msgid "Diploma type"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:115
-msgid "White pages URI"
+#: personal/supann/class_supannAccount.inc:391
+msgid "supannEtuTypeDiplome - Type of diploma"
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:115
-msgid "The URI of this Establishment white pages"
+#: personal/supann/class_supannAccount.inc:395
+msgid "Curriculum year "
 msgstr ""
 
-#: admin/supannStructures/class_etablissement.inc:152
-#: admin/supannStructures/class_etablissement.inc:218
-msgid "LDAP error"
+#: personal/supann/class_supannAccount.inc:395
+msgid ""
+"supannEtuCursusAnnee - Type of curriculum (L, M, D or X, ...) and the year "
+"in the diploma."
 msgstr ""
 
-#: admin/supannStructures/class_entite.inc:31
-#: admin/supannStructures/class_entite.inc:52
-msgid "Entity"
+#: personal/supann/class_supannAccount.inc:399
+msgid "Entity assignment"
 msgstr ""
 
-#: admin/supannStructures/class_entite.inc:32
-msgid "SUPANN Entity Settings"
+#: personal/supann/class_supannAccount.inc:399
+msgid "supannEntiteAffectation - To wich entities does this user belong to"
 msgstr ""
 
-#: admin/supannStructures/class_entite.inc:35
-msgid "SUPANN Entity"
+#: personal/supann/class_supannAccount.inc:403
+msgid "Diploma"
 msgstr ""
 
-#: admin/supannStructures/class_entite.inc:55
-msgid "The name to write in the ou attribute for this entity"
+#: personal/supann/class_supannAccount.inc:403
+msgid "supannEtuDiplome - Diploma prepared by the student"
 msgstr ""
 
-#: admin/supannStructures/class_entite.inc:61
-msgid "Administrative information"
+#: personal/supann/class_supannAccount.inc:407
+msgid "Step"
 msgstr ""
 
-#: admin/supannStructures/class_entite.inc:64
-msgid "Phone number for this entity"
+#: personal/supann/class_supannAccount.inc:407
+msgid ""
+"supannEtuEtape - Step can be considered a split (semester, year, etc.) in "
+"time of education leading to a diploma"
 msgstr ""
 
-#: admin/supannStructures/class_entite.inc:68
-msgid "Fax number for this entity"
+#: personal/supann/class_supannAccount.inc:411
+msgid "educational element"
 msgstr ""
 
-#: admin/supannStructures/class_entite.inc:72
-msgid "Postal address"
+#: personal/supann/class_supannAccount.inc:411
+msgid ""
+"supannEtuElementPedagogique - Generic description of the content of "
+"education with a high level of granularity"
 msgstr ""
 
-#: admin/supannStructures/class_entite.inc:72
-msgid "Postal address of this entity"
+#: personal/supann/class_supannAccount.inc:425
+msgid "Personal profile"
 msgstr ""
 
-#: admin/supannStructures/class_entite.inc:76
-msgid "Short description of this entity"
+#: personal/supann/class_supannAccount.inc:428
+msgid "Personal ID"
 msgstr ""
 
-#: admin/supannStructures/class_entite.inc:82
-msgid "SUPANN information"
+#: personal/supann/class_supannAccount.inc:428
+msgid "supannEmpId - Employee identifier"
 msgstr ""
 
-#: admin/supannStructures/class_entite.inc:85
-msgid "Entity type"
+#: personal/supann/class_supannAccount.inc:432
+msgid "Personal corps"
 msgstr ""
 
-#: admin/supannStructures/class_entite.inc:85
-msgid "The best SUPANN type that fits this entity"
+#: personal/supann/class_supannAccount.inc:432
+msgid "supannEmpCorps"
 msgstr ""
 
-#: admin/supannStructures/class_entite.inc:89
-msgid "Entity code"
+#: personal/supann/class_supannAccount.inc:437
+msgid "Activity"
 msgstr ""
 
-#: admin/supannStructures/class_entite.inc:89
-msgid "The SUPANN code of this entity"
+#: personal/supann/class_supannAccount.inc:437
+msgid "supannActivite - Category of profession"
 msgstr ""
 
-#: admin/supannStructures/class_entite.inc:94
-msgid "Parent entity"
+#: personal/supann/class_supannAccount.inc:444
+msgid "Roles"
 msgstr ""
 
-#: admin/supannStructures/class_entite.inc:94
-msgid "The parent entity of this entity"
+#: personal/supann/class_supannAccount.inc:451
+msgid "supannRoleEntite"
 msgstr ""
 
-#: admin/supannStructures/class_entite.inc:98
-msgid "Reference ID"
+#: personal/supann/class_supannAccount.inc:455
+msgid "Generic role"
 msgstr ""
 
-#: admin/supannStructures/class_entite.inc:98
-msgid "SUPANN reference ID of this entity"
+#: personal/supann/class_supannAccount.inc:455
+msgid "supannRoleGenerique - Generic role of the person in the facility"
+msgstr ""
+
+#: personal/supann/class_supannAccount.inc:459
+msgid "supannTypeEntiteAffectation - type of the assigned entity"
+msgstr ""
+
+#: personal/supann/class_supannAccount.inc:569
+msgid ""
+"\"member\" and \"affiliate\" values are incompatible for "
+"eduPersonAffiliation. Please remove one of them."
 msgstr ""
diff --git a/supann/locale/es/fusiondirectory.po b/supann/locale/es/fusiondirectory.po
index 75652b68f04957552c4c161e4a0c05a41d8ae71a..37fcda4ebcb583a03ab5e85c660d8e0039650b68 100644
--- a/supann/locale/es/fusiondirectory.po
+++ b/supann/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/supannStructures/class_etablissement.inc:32
 #: personal/supann/class_supannAccount.inc:335
diff --git a/supann/locale/es_CO/fusiondirectory.po b/supann/locale/es_CO/fusiondirectory.po
index 900e63b3f49add6fb9b694963e5ab408dd5048ca..ac658ce6c4fa65f5b9483e3fcecd5e77f21b4b93 100644
--- a/supann/locale/es_CO/fusiondirectory.po
+++ b/supann/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/supannStructures/class_etablissement.inc:32
 #: personal/supann/class_supannAccount.inc:335
diff --git a/supann/locale/es_VE/fusiondirectory.po b/supann/locale/es_VE/fusiondirectory.po
index beafbe991db04fb72a70421f3760783938f76c16..65dcccfe04626d5c214775f227310355cf4305fe 100644
--- a/supann/locale/es_VE/fusiondirectory.po
+++ b/supann/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/supannStructures/class_etablissement.inc:32
 #: personal/supann/class_supannAccount.inc:335
diff --git a/supann/locale/fa_IR/fusiondirectory.po b/supann/locale/fa_IR/fusiondirectory.po
index 56680054cb1ae5c3fb769d8be82e5ad081dfbfba..f68247e90ac1b20bfde8b78bf17d4966e9b7302a 100644
--- a/supann/locale/fa_IR/fusiondirectory.po
+++ b/supann/locale/fa_IR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
diff --git a/supann/locale/fi_FI/fusiondirectory.po b/supann/locale/fi_FI/fusiondirectory.po
index d0f2ee275a655bf603b7727ad8c390030a6f383e..df2ab8e6ea9979dca4663910b77089711e2ff6a3 100644
--- a/supann/locale/fi_FI/fusiondirectory.po
+++ b/supann/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/supann/locale/fr/fusiondirectory.po b/supann/locale/fr/fusiondirectory.po
index 2e631938a1d45c157e1ead818340bf7d03ce6db2..04e621fdf368dbe78f4998a91a1ace46f40f4b4d 100644
--- a/supann/locale/fr/fusiondirectory.po
+++ b/supann/locale/fr/fusiondirectory.po
@@ -5,22 +5,22 @@
 # 
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2018
-# Benoit Mortier <benoit.mortier@opensides.be>, 2019
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2019
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
-"Last-Translator: Benoit Mortier <benoit.mortier@opensides.be>, 2019\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2019\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/supannStructures/class_etablissement.inc:32
 #: personal/supann/class_supannAccount.inc:335
diff --git a/supann/locale/hu_HU/fusiondirectory.po b/supann/locale/hu_HU/fusiondirectory.po
index e5cab7743d9cfd1fc02fccd99536ead9c23686e8..3a15163084bd6b9291dba3588838814012c6a317 100644
--- a/supann/locale/hu_HU/fusiondirectory.po
+++ b/supann/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
diff --git a/supann/locale/id/fusiondirectory.po b/supann/locale/id/fusiondirectory.po
index 29deceafc611c8d6ca01b9fad455dad967482b83..4475bd0b420b3c672fd0baefc341b8054b4ae2dc 100644
--- a/supann/locale/id/fusiondirectory.po
+++ b/supann/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/supann/locale/it_IT/fusiondirectory.po b/supann/locale/it_IT/fusiondirectory.po
index 1d4b9f695e71628220595954b57fcd79ab1c436c..c1f1f1646c9bf514141ff2426d58ba4886680ec1 100644
--- a/supann/locale/it_IT/fusiondirectory.po
+++ b/supann/locale/it_IT/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: Paola Penati <paola.penati@opensides.be>, 2019\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -20,7 +20,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/supannStructures/class_etablissement.inc:32
 #: personal/supann/class_supannAccount.inc:335
diff --git a/supann/locale/ja/fusiondirectory.po b/supann/locale/ja/fusiondirectory.po
index ad5c2746beb8d77e5b1a46d3d1c7bdd933edd5bb..3d4a968fdc1ee7d0784d26919a3b15418e6ebe97 100644
--- a/supann/locale/ja/fusiondirectory.po
+++ b/supann/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/supann/locale/ko/fusiondirectory.po b/supann/locale/ko/fusiondirectory.po
index a368d474ed344fa5da467c0f6fd2396ad7baa1cf..bc09f322ec338c19c8935a415213e9abd0294446 100644
--- a/supann/locale/ko/fusiondirectory.po
+++ b/supann/locale/ko/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# Choi Chris <chulwon.choi@gmail.com>, 2018
+# Choi Chris <chulwon.choi@gmail.com>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
-"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
+"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2021\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -25,15 +25,15 @@ msgstr ""
 #: personal/supann/class_supannAccount.inc:335
 #: personal/supann/class_supannAccount.inc:374
 msgid "Establishment"
-msgstr ""
+msgstr "설립"
 
 #: admin/supannStructures/class_etablissement.inc:33
 msgid "SupAnn Establishment Settings"
-msgstr ""
+msgstr "SupAnn 설립 설정"
 
 #: admin/supannStructures/class_etablissement.inc:35
 msgid "SupAnn Establishment"
-msgstr ""
+msgstr "SupAnn 설립"
 
 #: admin/supannStructures/class_etablissement.inc:52
 msgid "Properties"
@@ -41,11 +41,11 @@ msgstr "설정"
 
 #: admin/supannStructures/class_etablissement.inc:55
 msgid "Root establishment"
-msgstr ""
+msgstr "Root 설립"
 
 #: admin/supannStructures/class_etablissement.inc:55
 msgid "Set this establishment as the root one"
-msgstr ""
+msgstr "이 시설을 root로 설정"
 
 #: admin/supannStructures/class_etablissement.inc:59
 #: admin/supannStructures/class_entite.inc:55
@@ -54,7 +54,7 @@ msgstr "명칭"
 
 #: admin/supannStructures/class_etablissement.inc:59
 msgid "The name to write in the o attribute for this establishment"
-msgstr ""
+msgstr "이 시설의 o 속성에 쓸 이름"
 
 #: admin/supannStructures/class_etablissement.inc:63
 #: admin/supannStructures/class_entite.inc:59
@@ -63,7 +63,7 @@ msgstr "설명"
 
 #: admin/supannStructures/class_etablissement.inc:63
 msgid "A short description of this establishment"
-msgstr ""
+msgstr "이 시설에 대한 간단한 설명"
 
 #: admin/supannStructures/class_etablissement.inc:69
 #: admin/supannStructures/class_etablissement.inc:72
@@ -72,7 +72,7 @@ msgstr "위치"
 
 #: admin/supannStructures/class_etablissement.inc:72
 msgid "Usually the city where this establishment is"
-msgstr ""
+msgstr "보통 이 시설이 있는 도시"
 
 #: admin/supannStructures/class_etablissement.inc:76
 msgid "Address"
@@ -80,105 +80,105 @@ msgstr "주소"
 
 #: admin/supannStructures/class_etablissement.inc:76
 msgid "The postal address of this establishment"
-msgstr ""
+msgstr "이 시설의 우편 주소"
 
 #: admin/supannStructures/class_etablissement.inc:80
 #: admin/supannStructures/class_entite.inc:68
 msgid "Telephone"
-msgstr ""
+msgstr "ì „í™”"
 
 #: admin/supannStructures/class_etablissement.inc:80
 msgid "Phone number of this establishment"
-msgstr ""
+msgstr "이 시설의 전화 번호"
 
 #: admin/supannStructures/class_etablissement.inc:84
 #: admin/supannStructures/class_entite.inc:72
 msgid "Fax"
-msgstr ""
+msgstr "팩스"
 
 #: admin/supannStructures/class_etablissement.inc:84
 msgid "Fax number of this establishment"
-msgstr ""
+msgstr "이 시설의 팩스 번호"
 
 #: admin/supannStructures/class_etablissement.inc:90
 msgid "SupAnn properties"
-msgstr ""
+msgstr "SUPANN 속성"
 
 #: admin/supannStructures/class_etablissement.inc:93
 msgid "Establishment code"
-msgstr ""
+msgstr "시설 코드"
 
 #: admin/supannStructures/class_etablissement.inc:93
 msgid "The code of this establishment (must have a prefix between {})"
-msgstr ""
+msgstr "이 시설의 코드 ({} 사이에 접두사가 있어야 함)"
 
 #: admin/supannStructures/class_etablissement.inc:98
 msgid "Establishment type"
-msgstr ""
+msgstr "시설 유형"
 
 #: admin/supannStructures/class_etablissement.inc:98
 msgid "The SupAnn type that best fits this Establishment"
-msgstr ""
+msgstr "이 시설에 가장 잘 맞는 SupAnn 유형"
 
 #: admin/supannStructures/class_etablissement.inc:102
 msgid "SupAnn code"
-msgstr ""
+msgstr "SupAnn 코드"
 
 #: admin/supannStructures/class_etablissement.inc:102
 msgid "The SupAnn code for this establishment"
-msgstr ""
+msgstr "이 시설의 SupAnn 코드"
 
 #: admin/supannStructures/class_etablissement.inc:108
 #: admin/supannStructures/class_entite.inc:95
 msgid "Parent entities"
-msgstr ""
+msgstr "부모 엔터티"
 
 #: admin/supannStructures/class_etablissement.inc:108
 #: admin/supannStructures/class_entite.inc:95
 msgid "The parent entities of this entity"
-msgstr ""
+msgstr "이 엔티티의 상위 엔티티"
 
 #: admin/supannStructures/class_etablissement.inc:114
 #: admin/supannStructures/class_entite.inc:101
 msgid "Reference IDs"
-msgstr ""
+msgstr "참조 ID"
 
 #: admin/supannStructures/class_etablissement.inc:114
 #: admin/supannStructures/class_entite.inc:101
 msgid "supannRefId - IDs/links for this entity on other systems"
-msgstr ""
+msgstr "supannRefId - 다른 시스템에서 이 엔티티에 대한 ID / 링크"
 
 #: admin/supannStructures/class_etablissement.inc:122
 msgid "Legal name"
-msgstr ""
+msgstr "법적 이름"
 
 #: admin/supannStructures/class_etablissement.inc:122
 msgid "The legal name of this establishment"
-msgstr ""
+msgstr "이 시설의 법적 이름"
 
 #: admin/supannStructures/class_etablissement.inc:126
 msgid "Home page URI"
-msgstr ""
+msgstr "홈페이지 URI"
 
 #: admin/supannStructures/class_etablissement.inc:126
 msgid "The URI of this establishment website home page"
-msgstr ""
+msgstr "이 시설 웹사이트 홈페이지의 URI"
 
 #: admin/supannStructures/class_etablissement.inc:130
 msgid "Institution URI"
-msgstr ""
+msgstr "기관 URI"
 
 #: admin/supannStructures/class_etablissement.inc:130
 msgid "The URI of this establishment institution website"
-msgstr ""
+msgstr "이 설립 기관 웹사이트의 URI"
 
 #: admin/supannStructures/class_etablissement.inc:134
 msgid "White pages URI"
-msgstr ""
+msgstr "화이트 페이지 URI"
 
 #: admin/supannStructures/class_etablissement.inc:134
 msgid "The URI of this establishment white pages"
-msgstr ""
+msgstr "이 시설 화이트 페이지의 URI"
 
 #: admin/supannStructures/class_etablissement.inc:186
 #: admin/supannStructures/class_etablissement.inc:259
@@ -191,110 +191,110 @@ msgstr ""
 
 #: admin/supannStructures/class_supannStructuresManagement.inc:36
 msgid "SupAnn structures management"
-msgstr ""
+msgstr "Supann 구조 관리"
 
 #: admin/supannStructures/class_supann.inc:53
 msgid "File error"
-msgstr ""
+msgstr "파일 오류"
 
 #: admin/supannStructures/class_supann.inc:54
 #, php-format
 msgid "Cannot read file: '%s'"
-msgstr ""
+msgstr "파일을 읽을 수 없습니다 : '%s'"
 
 #: admin/supannStructures/class_entite.inc:32
 #: admin/supannStructures/class_entite.inc:52
 #: personal/supann/class_supannAccount.inc:463
 msgid "Entity"
-msgstr ""
+msgstr "엔티티"
 
 #: admin/supannStructures/class_entite.inc:33
 msgid "SupAnn Entity Settings"
-msgstr ""
+msgstr "SupAnn 엔티티 설정"
 
 #: admin/supannStructures/class_entite.inc:35
 msgid "SupAnn Entity"
-msgstr ""
+msgstr "SupAnn 엔티티"
 
 #: admin/supannStructures/class_entite.inc:55
 msgid "The name to write in the ou attribute for this entity"
-msgstr ""
+msgstr "이 엔티티의 ou 속성에 쓸 이름"
 
 #: admin/supannStructures/class_entite.inc:59
 msgid "Short description of this entity"
-msgstr ""
+msgstr "이 엔티티에 대한 간단한 설명"
 
 #: admin/supannStructures/class_entite.inc:65
 msgid "Administrative information"
-msgstr ""
+msgstr "관리적인 정보"
 
 #: admin/supannStructures/class_entite.inc:68
 msgid "Phone number of this entity"
-msgstr ""
+msgstr "이 엔티티의 전화 번호"
 
 #: admin/supannStructures/class_entite.inc:72
 msgid "Fax number of this entity"
-msgstr ""
+msgstr "이 엔티티의 팩스 번호"
 
 #: admin/supannStructures/class_entite.inc:76
 msgid "Postal address"
-msgstr ""
+msgstr "우편 주소"
 
 #: admin/supannStructures/class_entite.inc:76
 msgid "Postal address of this entity"
-msgstr ""
+msgstr "이 엔티티의 우편 주소"
 
 #: admin/supannStructures/class_entite.inc:82
 msgid "SupAnn information"
-msgstr ""
+msgstr "SupAnn ì •ë³´"
 
 #: admin/supannStructures/class_entite.inc:85
 #: personal/supann/class_supannAccount.inc:459
 msgid "Entity type"
-msgstr ""
+msgstr "엔터티 유형"
 
 #: admin/supannStructures/class_entite.inc:85
 msgid "The SupAnn type that best fits this entity"
-msgstr ""
+msgstr "이 시설에 가장 잘 맞는 SupAnn 유형"
 
 #: admin/supannStructures/class_entite.inc:89
 msgid "Entity code"
-msgstr ""
+msgstr "엔티티 코드"
 
 #: admin/supannStructures/class_entite.inc:89
 msgid "The SupAnn code of this entity"
-msgstr ""
+msgstr "이 엔티티의 SupAnn 코드"
 
 #: config/supann/class_supannConfig.inc:28
 msgid "SupAnn configuration"
-msgstr ""
+msgstr "SupAnn 구성"
 
 #: config/supann/class_supannConfig.inc:29
 msgid "FusionDirectory SupAnn plugin configuration"
-msgstr ""
+msgstr "FusionDirectory SupAnn 플러그인 구성"
 
 #: config/supann/class_supannConfig.inc:41
 #: personal/supann/class_supannAccount.inc:224
 msgid "SupAnn"
-msgstr ""
+msgstr "SupAnn"
 
 #: config/supann/class_supannConfig.inc:44
 msgid "SupAnn RDN"
-msgstr ""
+msgstr "SupAnn RDN"
 
 #: config/supann/class_supannConfig.inc:44
 msgid "Branch in which SupAnn structures will be stored"
-msgstr ""
+msgstr "SupAnn 구조가 저장될 브랜치"
 
 #: config/supann/class_supannConfig.inc:49
 msgid "SupAnn mail for recovery"
-msgstr ""
+msgstr "복구를 위한 SupAnn 메일"
 
 #: config/supann/class_supannConfig.inc:49
 msgid ""
 "Allow the use of mail addresses from the personal mail address field from "
 "SupAnn account for password recovery"
-msgstr ""
+msgstr "비밀번호 복구를 위해 SupAnn 계정의 개인 메일 주소 필드에서 메일 주소 사용 허용"
 
 #: personal/supann/class_supannAccount.inc:36
 #: personal/supann/class_supannAccount.inc:119
@@ -303,19 +303,21 @@ msgstr "없음"
 
 #: personal/supann/class_supannAccount.inc:116
 msgid "Licence"
-msgstr ""
+msgstr "라이선스"
 
 #: personal/supann/class_supannAccount.inc:116
 msgid "Master"
-msgstr ""
+msgstr "마스터"
 
 #: personal/supann/class_supannAccount.inc:116
 msgid "Ph.D."
-msgstr ""
+msgstr "박사"
 
 #: personal/supann/class_supannAccount.inc:116
 msgid "Another class of degree"
 msgstr ""
+"다른 등급의 학위\n"
+" "
 
 #: personal/supann/class_supannAccount.inc:116
 msgid "Post-graduate year"
@@ -323,67 +325,67 @@ msgstr ""
 
 #: personal/supann/class_supannAccount.inc:119
 msgid "1st year"
-msgstr ""
+msgstr "1 ë…„ì°¨"
 
 #: personal/supann/class_supannAccount.inc:119
 msgid "2nd year"
-msgstr ""
+msgstr "2 ë…„ì°¨"
 
 #: personal/supann/class_supannAccount.inc:119
 msgid "3rd year"
-msgstr ""
+msgstr "3 ë…„ì°¨"
 
 #: personal/supann/class_supannAccount.inc:120
 msgid "4th year"
-msgstr ""
+msgstr "4 ë…„ì°¨"
 
 #: personal/supann/class_supannAccount.inc:120
 msgid "5th year"
-msgstr ""
+msgstr "5 ë…„ì°¨"
 
 #: personal/supann/class_supannAccount.inc:120
 msgid "6th year"
-msgstr ""
+msgstr "6ë…„ì°¨"
 
 #: personal/supann/class_supannAccount.inc:121
 msgid "7th year"
-msgstr ""
+msgstr "7 ë…„ì°¨"
 
 #: personal/supann/class_supannAccount.inc:121
 msgid "8th year"
-msgstr ""
+msgstr "8 ë…„ì°¨"
 
 #: personal/supann/class_supannAccount.inc:121
 msgid "9th year"
-msgstr ""
+msgstr "9 ë…„ì°¨"
 
 #: personal/supann/class_supannAccount.inc:225
 msgid "SupAnn information management plugin"
-msgstr ""
+msgstr "SupAnn 정보 관리 플러그인"
 
 #: personal/supann/class_supannAccount.inc:242
 msgid "Identity"
-msgstr ""
+msgstr "신원"
 
 #: personal/supann/class_supannAccount.inc:245
 msgid "Civilite"
-msgstr ""
+msgstr "호칭"
 
 #: personal/supann/class_supannAccount.inc:245
 msgid "supannCivilite - Civility for this person"
-msgstr ""
+msgstr "supannCivilite - 이 사람에 대한 호칭"
 
 #: personal/supann/class_supannAccount.inc:250
 msgid "Alias login"
-msgstr ""
+msgstr "별칭 로그인"
 
 #: personal/supann/class_supannAccount.inc:250
 msgid "supannAliasLogin - An alias for the login of this user"
-msgstr ""
+msgstr "supannAliasLogin - 이 사용자의 로그인 별칭"
 
 #: personal/supann/class_supannAccount.inc:254
 msgid "eduPersonPrincipalName"
-msgstr ""
+msgstr "eduPersonPrincipalName"
 
 #: personal/supann/class_supannAccount.inc:254
 msgid ""
@@ -401,11 +403,11 @@ msgstr ""
 
 #: personal/supann/class_supannAccount.inc:263
 msgid "Ref ids"
-msgstr ""
+msgstr "참조 ID"
 
 #: personal/supann/class_supannAccount.inc:263
 msgid "supannRefId - IDs/links for this user on other systems"
-msgstr ""
+msgstr "supannRefId - 다른 시스템에서 이 사용자에 대한 ID / 링크"
 
 #: personal/supann/class_supannAccount.inc:273
 msgid "Contact"
@@ -413,28 +415,28 @@ msgstr "연락처"
 
 #: personal/supann/class_supannAccount.inc:277
 msgid "Other phone numbers"
-msgstr ""
+msgstr "다른 전화 번호"
 
 #: personal/supann/class_supannAccount.inc:277
 msgid "supannAutreTelephone - Other phone numbers for this user"
-msgstr ""
+msgstr "supannAutreTelephone - 이 사용자의 다른 전화 번호"
 
 #: personal/supann/class_supannAccount.inc:283
 msgid "Other mail addresses"
-msgstr ""
+msgstr "다른 메일 주소"
 
 #: personal/supann/class_supannAccount.inc:283
 msgid ""
 "supannAutreMail - Other mail addresses for this user. Each must be unique"
-msgstr ""
+msgstr "supannAutreMail - 이 사용자의 다른 메일 주소. 각각 고유해야 합니다"
 
 #: personal/supann/class_supannAccount.inc:289
 msgid "Personal mail addresses"
-msgstr ""
+msgstr "개인 메일 주소"
 
 #: personal/supann/class_supannAccount.inc:289
 msgid "supannMailPerso - Personal mail addresses for this user"
-msgstr ""
+msgstr "supannMailPerso - 이 사용자의 개인 메일 주소"
 
 #: personal/supann/class_supannAccount.inc:294
 msgid "Red list"
@@ -442,7 +444,7 @@ msgstr ""
 
 #: personal/supann/class_supannAccount.inc:294
 msgid "supannListeRouge - Should this person be on the red list"
-msgstr ""
+msgstr "supannListeRouge - 이 사람은 적색 목록에 있어야 합니다"
 
 #: personal/supann/class_supannAccount.inc:300
 msgid "Assignment"
@@ -454,7 +456,7 @@ msgstr ""
 
 #: personal/supann/class_supannAccount.inc:303
 msgid "supannEntiteAffectationPrincipale - Main assignment of the person"
-msgstr ""
+msgstr "supannEntiteAffectationPrincipale - 사람의 주요 임무"
 
 #: personal/supann/class_supannAccount.inc:308
 msgid "Assignments"
@@ -479,19 +481,19 @@ msgstr ""
 
 #: personal/supann/class_supannAccount.inc:321
 msgid "Affiliation"
-msgstr ""
+msgstr "Affiliation"
 
 #: personal/supann/class_supannAccount.inc:324
 msgid "Primary affiliation"
-msgstr ""
+msgstr "기본 제휴"
 
 #: personal/supann/class_supannAccount.inc:324
 msgid "eduPersonPrimaryAffiliation - Main status of the person"
-msgstr ""
+msgstr "eduPersonPrimaryAffiliation - 개인의 기본 상태"
 
 #: personal/supann/class_supannAccount.inc:329
 msgid "Affiliations"
-msgstr ""
+msgstr "Affiliations"
 
 #: personal/supann/class_supannAccount.inc:329
 msgid ""
@@ -507,23 +509,23 @@ msgstr ""
 
 #: personal/supann/class_supannAccount.inc:342
 msgid "Student profile"
-msgstr ""
+msgstr "학생 프로필"
 
 #: personal/supann/class_supannAccount.inc:345
 msgid "INE code"
-msgstr ""
+msgstr "INE 코드"
 
 #: personal/supann/class_supannAccount.inc:345
 msgid "supannCodeINE - INE code of this student"
-msgstr ""
+msgstr "supannCodeINE - 이 학생의 INE 코드"
 
 #: personal/supann/class_supannAccount.inc:349
 msgid "Student ID"
-msgstr ""
+msgstr "학생 아이디"
 
 #: personal/supann/class_supannAccount.inc:349
 msgid "supannEtuId - Scolarity id"
-msgstr ""
+msgstr "supannEtuId - 장학생 ID"
 
 #: personal/supann/class_supannAccount.inc:355
 msgid "Student registrations"
@@ -540,7 +542,7 @@ msgstr ""
 
 #: personal/supann/class_supannAccount.inc:378
 msgid "Year"
-msgstr ""
+msgstr "í•´"
 
 #: personal/supann/class_supannAccount.inc:378
 msgid "supannEtuAnneeInscription - The year this registration will begin"
@@ -556,23 +558,23 @@ msgstr ""
 
 #: personal/supann/class_supannAccount.inc:387
 msgid "Disciplinary Sector"
-msgstr ""
+msgstr "징계 분야"
 
 #: personal/supann/class_supannAccount.inc:387
 msgid "supannEtuSecteurDisciplinaire - Disciplinary sector education diploma"
-msgstr ""
+msgstr "supannEtuSecteurDisciplinaire - 징계 분야 교육 디플로마"
 
 #: personal/supann/class_supannAccount.inc:391
 msgid "Diploma type"
-msgstr ""
+msgstr "디플로마 유형"
 
 #: personal/supann/class_supannAccount.inc:391
 msgid "supannEtuTypeDiplome - Type of diploma"
-msgstr ""
+msgstr "supannEtuTypeDiplome - 디플로마 유형"
 
 #: personal/supann/class_supannAccount.inc:395
 msgid "Curriculum year "
-msgstr ""
+msgstr "커리큘럼 년도"
 
 #: personal/supann/class_supannAccount.inc:395
 msgid ""
@@ -582,7 +584,7 @@ msgstr ""
 
 #: personal/supann/class_supannAccount.inc:399
 msgid "Entity assignment"
-msgstr ""
+msgstr "엔터티 할당"
 
 #: personal/supann/class_supannAccount.inc:399
 msgid "supannEntiteAffectation - To wich entities does this user belong to"
@@ -590,55 +592,55 @@ msgstr ""
 
 #: personal/supann/class_supannAccount.inc:403
 msgid "Diploma"
-msgstr ""
+msgstr "Diploma"
 
 #: personal/supann/class_supannAccount.inc:403
 msgid "supannEtuDiplome - Diploma prepared by the student"
-msgstr ""
+msgstr "supannEtuDiplome - 학생이 준비한 졸업장"
 
 #: personal/supann/class_supannAccount.inc:407
 msgid "Step"
-msgstr ""
+msgstr "단계"
 
 #: personal/supann/class_supannAccount.inc:407
 msgid ""
 "supannEtuEtape - Step can be considered a split (semester, year, etc.) in "
 "time of education leading to a diploma"
-msgstr ""
+msgstr "supannEtuEtape - 단계는 졸업장으로 이어지는 교육 시간의 분할 (학기, 연도 등)로 간주 될 수 있습니다"
 
 #: personal/supann/class_supannAccount.inc:411
 msgid "educational element"
-msgstr ""
+msgstr "교육 요소"
 
 #: personal/supann/class_supannAccount.inc:411
 msgid ""
 "supannEtuElementPedagogique - Generic description of the content of "
 "education with a high level of granularity"
-msgstr ""
+msgstr "supannEtuElementPedagogique - 세분화 수준이 높은 교육 내용에 대한 일반적인 설명"
 
 #: personal/supann/class_supannAccount.inc:425
 msgid "Personal profile"
-msgstr ""
+msgstr "개인 프로필"
 
 #: personal/supann/class_supannAccount.inc:428
 msgid "Personal ID"
-msgstr ""
+msgstr "개인 ID"
 
 #: personal/supann/class_supannAccount.inc:428
 msgid "supannEmpId - Employee identifier"
-msgstr ""
+msgstr "supannEmpId - 직원 식별자"
 
 #: personal/supann/class_supannAccount.inc:432
 msgid "Personal corps"
-msgstr ""
+msgstr "개인 단쳋"
 
 #: personal/supann/class_supannAccount.inc:432
 msgid "supannEmpCorps"
-msgstr ""
+msgstr "supannEmpCorps"
 
 #: personal/supann/class_supannAccount.inc:437
 msgid "Activity"
-msgstr ""
+msgstr "Activity"
 
 #: personal/supann/class_supannAccount.inc:437
 msgid "supannActivite - Category of profession"
@@ -646,15 +648,15 @@ msgstr ""
 
 #: personal/supann/class_supannAccount.inc:444
 msgid "Roles"
-msgstr ""
+msgstr "ì—­í• "
 
 #: personal/supann/class_supannAccount.inc:451
 msgid "supannRoleEntite"
-msgstr ""
+msgstr "supannRoleEntite"
 
 #: personal/supann/class_supannAccount.inc:455
 msgid "Generic role"
-msgstr ""
+msgstr "일반적인 역할"
 
 #: personal/supann/class_supannAccount.inc:455
 msgid "supannRoleGenerique - Generic role of the person in the facility"
@@ -668,4 +670,4 @@ msgstr ""
 msgid ""
 "\"member\" and \"affiliate\" values are incompatible for "
 "eduPersonAffiliation. Please remove one of them."
-msgstr ""
+msgstr "\"member\"및 \"affiliate\"값은 eduPersonAffiliation과 호환되지 않습니다. 그중 하나를 제거하십시오."
diff --git a/supann/locale/lv/fusiondirectory.po b/supann/locale/lv/fusiondirectory.po
index 4658b93ac0946da44541661f29c078e6cb679d03..6b57820e215fc7441468850a340d866b70e041c1 100644
--- a/supann/locale/lv/fusiondirectory.po
+++ b/supann/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/supann/locale/nb/fusiondirectory.po b/supann/locale/nb/fusiondirectory.po
index ac8d6e5433890988d09f07e99ac0390636e8743b..9e59d4b16d61cdac1b94840da6c2d5ee1edb1d5a 100644
--- a/supann/locale/nb/fusiondirectory.po
+++ b/supann/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/supann/locale/nl/fusiondirectory.po b/supann/locale/nl/fusiondirectory.po
index 71dd88c19c4b39a86cd41524e4b74dbe4e2cb91d..5cae7ec6ad0759936d8df562f0aa60201764c22e 100644
--- a/supann/locale/nl/fusiondirectory.po
+++ b/supann/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2018\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/supann/locale/pl/fusiondirectory.po b/supann/locale/pl/fusiondirectory.po
index 2cd66b7e9982896bd394e8486f7745345b3fc007..4a8cd1474c384b5bc133c59672ad2d7aed646110 100644
--- a/supann/locale/pl/fusiondirectory.po
+++ b/supann/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/supann/locale/pt/fusiondirectory.po b/supann/locale/pt/fusiondirectory.po
index ab9eb508ad32f3b09fd8911f9aa749a3f9b160e4..5b2548747a2b199365aaa01dfd21dad442507f54 100644
--- a/supann/locale/pt/fusiondirectory.po
+++ b/supann/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/supannStructures/class_etablissement.inc:32
 #: personal/supann/class_supannAccount.inc:335
diff --git a/supann/locale/pt_BR/fusiondirectory.po b/supann/locale/pt_BR/fusiondirectory.po
index 8338faa4cd921f789a9c38d4f78d90b65bf25162..fd49bbe8f97bf01724a44d8aaf0f1908a693abe3 100644
--- a/supann/locale/pt_BR/fusiondirectory.po
+++ b/supann/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/supannStructures/class_etablissement.inc:32
 #: personal/supann/class_supannAccount.inc:335
diff --git a/supann/locale/ru/fusiondirectory.po b/supann/locale/ru/fusiondirectory.po
index daff8787b0349b17b10be2c358dc6eb5ac2e064b..f3753b8d7b18ed0d9ad98e5367f2800180964291 100644
--- a/supann/locale/ru/fusiondirectory.po
+++ b/supann/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/supann/locale/ru@petr1708/fusiondirectory.po b/supann/locale/ru@petr1708/fusiondirectory.po
index 6b279558180808b91e2f4797d581f265a470d507..545306a24552403c85cca5c2805a556f1544afda 100644
--- a/supann/locale/ru@petr1708/fusiondirectory.po
+++ b/supann/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/supann/locale/sv/fusiondirectory.po b/supann/locale/sv/fusiondirectory.po
index 7d3f223fd61c677ad2bbb9a1dfff794fecad0c62..f353d11e96d03dfb71fb20e9faa812164399587a 100644
--- a/supann/locale/sv/fusiondirectory.po
+++ b/supann/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/supann/locale/tr_TR/fusiondirectory.po b/supann/locale/tr_TR/fusiondirectory.po
index e9057be013aa7682fdd4ad1a19946cbaf00e01c0..0102cdea4fa07e3453bfcb7f2e2972aca490857e 100644
--- a/supann/locale/tr_TR/fusiondirectory.po
+++ b/supann/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/supann/locale/ug/fusiondirectory.po b/supann/locale/ug/fusiondirectory.po
index ac803b508522fb96c885bc6e5844cd65a17dcb68..ede25d8cd3d4ee70d149b2c8badfbff557fbd3b1 100644
--- a/supann/locale/ug/fusiondirectory.po
+++ b/supann/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/supannStructures/class_etablissement.inc:32
 #: personal/supann/class_supannAccount.inc:335
diff --git a/supann/locale/vi_VN/fusiondirectory.po b/supann/locale/vi_VN/fusiondirectory.po
index e83c84779e9212c457d711322d08086dfa6e797d..15de6a6cd5073fc0e5d9340af79814bb23e9e676 100644
--- a/supann/locale/vi_VN/fusiondirectory.po
+++ b/supann/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/supann/locale/zh/fusiondirectory.po b/supann/locale/zh/fusiondirectory.po
index 920f35b291031bfd297282fa06a3384a0c2c6dc3..013657bb10ac6079ae4235b9029d55ce730eee13 100644
--- a/supann/locale/zh/fusiondirectory.po
+++ b/supann/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/supann/locale/zh_TW/fusiondirectory.po b/supann/locale/zh_TW/fusiondirectory.po
index 0d60744d1ad560b0f48c8ad08dd7c7e52c3c6dbd..004298656d9f7140e6ac6686849efe9d3166205c 100644
--- a/supann/locale/zh_TW/fusiondirectory.po
+++ b/supann/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/supann/personal/supann/class_supannAccount.inc b/supann/personal/supann/class_supannAccount.inc
index 2c1ed44f5a50abc3cf61d99b6c1669a56fd93c34..c3002ee20b4c3e1483187da687a3680247eec51e 100644
--- a/supann/personal/supann/class_supannAccount.inc
+++ b/supann/personal/supann/class_supannAccount.inc
@@ -23,17 +23,17 @@ class SupannPrefixedSelectAttribute extends CompositeAttribute
 {
   protected $prefixedChoices;
 
-  function __construct($label, $description, $ldapName, $required, $filename, $acl = "")
+  function __construct ($label, $description, $ldapName, $required, $filename, $acl = "")
   {
-    $attributes = array(
+    $attributes = [
       new SelectAttribute('', '', $ldapName.'_prefix', $required),
       new SelectAttribute('', '', $ldapName.'_content', $required)
-    );
+    ];
     parent::__construct($description, $ldapName, $attributes, '/^{(.*)}(.*)$/', '{%s}%s', $acl, $label);
     $this->setLinearRendering(TRUE);
     $this->prefixedChoices = supann::get_prefixed_choices_for($filename);
     if (!$required) {
-      $this->prefixedChoices[''] = array(array(''), array(_('None')));
+      $this->prefixedChoices[''] = [[''], [_('None')]];
     }
     $this->attributes[0]->setChoices(array_keys($this->prefixedChoices));
     $this->attributes[0]->setSubmitForm(TRUE);
@@ -41,17 +41,17 @@ class SupannPrefixedSelectAttribute extends CompositeAttribute
     $this->setRequired($required);
   }
 
-  protected function supannUpdateSelect()
+  protected function supannUpdateSelect ()
   {
     $prefix = $this->attributes[0]->getValue();
     if (!isset($this->prefixedChoices[$prefix])) {
-      $this->prefixedChoices[$prefix] = array(array(), array());
+      $this->prefixedChoices[$prefix] = [[], []];
     }
     $this->attributes[1]->setChoices($this->prefixedChoices[$prefix][0], $this->prefixedChoices[$prefix][1]);
     $this->attributes[1]->setRequired($prefix != '');
   }
 
-  function applyPostValue()
+  function applyPostValue ()
   {
     parent::applyPostValue();
     $this->supannUpdateSelect();
@@ -83,7 +83,7 @@ class SupannPrefixedSelectAttribute extends CompositeAttribute
     }
   }
 
-  function displayValue($values)
+  function displayValue ($values)
   {
     if (!is_array($values)) {
       $values = $this->inputValue($values);
@@ -102,36 +102,36 @@ class SupannPrefixedSelectAttribute extends CompositeAttribute
 
 class SupannCursusAnneeAttribute extends SupannPrefixedSelectAttribute
 {
-  function __construct($label, $description, $ldapName, $required, $acl = "")
+  function __construct ($label, $description, $ldapName, $required, $acl = "")
   {
-    $attributes = array(
+    $attributes = [
       new SelectAttribute('', '', $ldapName.'_prefix', $required),
       new SelectAttribute('', '', $ldapName.'_content', FALSE)
-    );
+    ];
     CompositeAttribute::__construct($description, $ldapName, $attributes, '/^{SUPANN}(.)(\\d+)$/', '{SUPANN}%s%d', $acl, $label);
     $this->setLinearRendering(TRUE);
 
     $this->attributes[0]->setChoices(
-      array('L','M','D','X','B'),
-      array(_('Licence'),_('Master'),_('Ph.D.'),_('Another class of degree'),_('Post-graduate year'))
+      ['L','M','D','X','B'],
+      [_('Licence'),_('Master'),_('Ph.D.'),_('Another class of degree'),_('Post-graduate year')]
     );
-    $yearLabels = array(
+    $yearLabels = [
       _('None'),_('1st year'),_('2nd year'),_('3rd year'),
       _('4th year'),_('5th year'),_('6th year'),
       _('7th year'),_('8th year'),_('9th year'),
-    );
-    $this->prefixedChoices = array(
-      'L' => array(range(0, 3),array_slice($yearLabels, 0, 3 + 1)),
-      'M' => array(range(0, 2),array_slice($yearLabels, 0, 2 + 1)),
-      'D' => array(range(0, 9),array_slice($yearLabels, 0, 10)),
-      'X' => array(range(0, 9),array_slice($yearLabels, 0, 10)),
-      'B' => array(range(0, 20),range(0, 20)),
-    );
+    ];
+    $this->prefixedChoices = [
+      'L' => [range(0, 3),array_slice($yearLabels, 0, 3 + 1)],
+      'M' => [range(0, 2),array_slice($yearLabels, 0, 2 + 1)],
+      'D' => [range(0, 9),array_slice($yearLabels, 0, 10)],
+      'X' => [range(0, 9),array_slice($yearLabels, 0, 10)],
+      'B' => [range(0, 20),range(0, 20)],
+    ];
     $this->attributes[0]->setSubmitForm(TRUE);
     $this->supannUpdateSelect();
     $this->setRequired($required);
   }
-  protected function supannUpdateSelect()
+  protected function supannUpdateSelect ()
   {
     $prefix = $this->attributes[0]->getValue();
     $this->attributes[1]->setChoices($this->prefixedChoices[$prefix][0], $this->prefixedChoices[$prefix][1]);
@@ -140,15 +140,15 @@ class SupannCursusAnneeAttribute extends SupannPrefixedSelectAttribute
 
 class SupannCompositeAttribute extends CompositeAttribute
 {
-  function __construct($description, $ldapName, $attributes, $acl = "", $label = "Composite attribute")
+  function __construct ($description, $ldapName, $attributes, $acl = "", $label = "Composite attribute")
   {
     parent::__construct($description, $ldapName, $attributes, '', '', $acl, $label);
   }
 
-  function readValues($value)
+  function readValues ($value)
   {
-    $values = array();
-    $m = array();
+    $values = [];
+    $m = [];
     foreach ($this->attributes as &$attribute) {
       $shortname = preg_replace('/^[^_]+_/', '', $attribute->getLdapName());
       if (preg_match("/\\[$shortname=([^\\]]+)\\]/", $value, $m)) {
@@ -162,7 +162,7 @@ class SupannCompositeAttribute extends CompositeAttribute
     return $values;
   }
 
-  function writeValues($values)
+  function writeValues ($values)
   {
     $value  = '';
     $i      = 0;
@@ -177,13 +177,13 @@ class SupannCompositeAttribute extends CompositeAttribute
     return $value;
   }
 
-  function supannGetValues(&$values)
+  function supannGetValues (&$values)
   {
     foreach ($this->attributes as &$attribute) {
       $shortname = preg_replace('/^([^_]+)_.*$/', '\\1', $attribute->getLdapName());
       $value = $attribute->getValue();
       if (!isset($values[$shortname])) {
-        $values[$shortname] = array();
+        $values[$shortname] = [];
       }
       if ($value == "") {
         continue;
@@ -196,9 +196,9 @@ class SupannCompositeAttribute extends CompositeAttribute
 
 class SupannOrderedArrayAttribute extends OrderedArrayAttribute
 {
-  function supannPrepareSave()
+  function supannPrepareSave ()
   {
-    $values = array();
+    $values = [];
     foreach ($this->value as $value) {
       $this->attribute->setValue($value);
       $this->attribute->supannGetValues($values);
@@ -214,37 +214,37 @@ class SupannOrderedArrayAttribute extends OrderedArrayAttribute
 
 class supannAccount extends simplePlugin
 {
-  var $objectclasses = array('eduPerson', 'supannPerson');
+  var $objectclasses = ['eduPerson', 'supannPerson'];
 
   var $displayHeader = TRUE;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('SupAnn'),
       'plDescription' => _('SupAnn information management plugin'),
       'plIcon'        => 'geticon.php?context=applications&icon=supann&size=48',
       'plSmallIcon'   => 'geticon.php?context=applications&icon=supann&size=16',
       'plSelfModify'  => TRUE,
       'plPriority'    => 14,
-      'plObjectType'  => array('user'),
+      'plObjectType'  => ['user'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
     $year = intval(date('Y'));
-    return array(
-      'identity' => array(
+    return [
+      'identity' => [
         'name'  => _('Identity'),
-        'attrs' => array(
+        'attrs' => [
           new SelectAttribute(
             _('Civilite'), _('supannCivilite - Civility for this person'),
             'supannCivilite', FALSE,
-            array('', 'M.', 'Mme', 'Mlle')
+            ['', 'M.', 'Mme', 'Mlle']
           ),
           new StringAttribute(
             _('Alias login'), _('supannAliasLogin - An alias for the login of this user'),
@@ -267,11 +267,11 @@ class supannAccount extends simplePlugin
               '/^{[^}]+}.+$/'
             )
           ),
-        )
-      ),
-      'contact' => array(
+        ]
+      ],
+      'contact' => [
         'name'  => _('Contact'),
-        'attrs' => array(
+        'attrs' => [
           new SetAttribute(
             new PhoneNumberAttribute(
               _('Other phone numbers'), _('supannAutreTelephone - Other phone numbers for this user'),
@@ -294,11 +294,11 @@ class supannAccount extends simplePlugin
             _('Red list'), _('supannListeRouge - Should this person be on the red list'),
             'supannListeRouge', TRUE
           )
-        )
-      ),
-      'affectation' => array(
+        ]
+      ],
+      'affectation' => [
         'name'  => _('Assignment'),
-        'attrs' => array(
+        'attrs' => [
           new SelectAttribute(
             _('Primary assignment'), _('supannEntiteAffectationPrincipale - Main assignment of the person'),
             'supannEntiteAffectationPrincipale', FALSE
@@ -315,11 +315,11 @@ class supannAccount extends simplePlugin
               'supannTypeEntiteAffectation', FALSE, 'entite'
             )
           ),
-        )
-      ),
-      'affiliation' => array(
+        ]
+      ],
+      'affiliation' => [
         'name'  => _('Affiliation'),
-        'attrs' => array(
+        'attrs' => [
           new SelectAttribute(
             _('Primary affiliation'), _('eduPersonPrimaryAffiliation - Main status of the person'),
             'eduPersonPrimaryAffiliation', FALSE
@@ -336,11 +336,11 @@ class supannAccount extends simplePlugin
               'supannEtablissement', FALSE
             )
           ),
-        )
-      ),
-      'student' => array(
+        ]
+      ],
+      'student' => [
         'name'  => _('Student profile'),
-        'attrs' => array(
+        'attrs' => [
           new StringAttribute(
             _('INE code'), _('supannCodeINE - INE code of this student'),
             'supannCodeINE', FALSE
@@ -349,13 +349,13 @@ class supannAccount extends simplePlugin
             _('Student ID'), _('supannEtuId - Scolarity id'),
             'supannEtuId', FALSE
           ),
-        )
-      ),
-      'student2' => array(
+        ]
+      ],
+      'student2' => [
         'name'      => _('Student registrations'),
-        'class'     => array('fullwidth'),
+        'class'     => ['fullwidth'],
         'template'  => get_template_path('student_subscription.tpl', TRUE, dirname(__FILE__)),
-        'attrs'     => array(
+        'attrs'     => [
           /* These attributes are handled by the SupannOrderedArrayAttribute */
           new HiddenAttribute('supannEtuAnneeInscription'),
           new HiddenAttribute('supannEtuRegimeInscription'),
@@ -369,7 +369,7 @@ class supannAccount extends simplePlugin
             new SupannCompositeAttribute(
               _('supannEtuInscription - Registrations for this student'),
               'supannEtuInscription',
-              array(
+              [
                 new SelectAttribute(
                   _('Establishment'), _('supannEtablissement - Etablissement in which this registration was done'),
                   'supannEtablissement_etab', TRUE
@@ -411,19 +411,19 @@ class supannAccount extends simplePlugin
                   _('educational element'), _('supannEtuElementPedagogique - Generic description of the content of education with a high level of granularity'),
                   'supannEtuElementPedagogique_eltpedago', FALSE, 'etuelementpedagogique'
                 ),
-              )
+              ]
             ),
             // no order
             FALSE,
-            array(),
+            [],
             // no edit button
             FALSE
           )
-        )
-      ),
-      'personnal' => array(
+        ]
+      ],
+      'personnal' => [
         'name'  => _('Personal profile'),
-        'attrs' => array(
+        'attrs' => [
           new StringAttribute(
             _('Personal ID'), _('supannEmpId - Employee identifier'),
             'supannEmpId', FALSE
@@ -438,19 +438,19 @@ class supannAccount extends simplePlugin
               'supannActivite', FALSE, 'activite'
             )
           )
-        )
-      ),
-      'personnal2' => array(
+        ]
+      ],
+      'personnal2' => [
         'name'      => _('Roles'),
-        'class'     => array('fullwidth'),
-        'attrs'     => array(
+        'class'     => ['fullwidth'],
+        'attrs'     => [
           /* These attributes are handled by the SupannOrderedArrayAttribute */
           new HiddenAttribute('supannRoleGenerique'),
           new SupannOrderedArrayAttribute(
             new SupannCompositeAttribute(
               _('supannRoleEntite'),
               'supannRoleEntite',
-              array(
+              [
                 new SupannPrefixedSelectAttribute(
                   _('Generic role'), _('supannRoleGenerique - Generic role of the person in the facility'),
                   'supannRoleGenerique_role', TRUE, 'role'
@@ -463,20 +463,20 @@ class supannAccount extends simplePlugin
                   _('Entity'), _('supannEntiteAffectation - Represents assignments of the person in an institution, a component, service, etc.'),
                   'supannEntiteAffectation_code', FALSE
                 ),
-              ),
+              ],
               '',
               // no label
               ''
             ),
             // no order
             FALSE,
-            array(),
+            [],
             // no edit button
             FALSE
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -487,12 +487,12 @@ class supannAccount extends simplePlugin
     /* list of entity stored in LDAP tree */
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(objectClass=supannEntite)', array('supannCodeEntite', 'ou', 'o','supannEtablissement'));
+    $ldap->search('(objectClass=supannEntite)', ['supannCodeEntite', 'ou', 'o','supannEtablissement']);
 
-    $code_entites   = array();
-    $label_entites  = array();
-    $code_etablissements  = array();
-    $label_etablissements = array();
+    $code_entites   = [];
+    $label_entites  = [];
+    $code_etablissements  = [];
+    $label_etablissements = [];
     while ($attrs = $ldap->fetch()) {
       if (isset($attrs['supannCodeEntite'][0])) {
         $code_entites[] = $attrs['supannCodeEntite'][0];
@@ -515,7 +515,7 @@ class supannAccount extends simplePlugin
     $this->supannInit();
   }
 
-  function supannInit()
+  function supannInit ()
   {
     list ($codes, $labels) = supann::get_choices_for('affiliation');
     $this->attributesAccess['eduPersonAffiliation']->attribute->setChoices($codes, $labels);
@@ -534,7 +534,7 @@ class supannAccount extends simplePlugin
   }
 
   /* Update choices of fields which depends on other fields values */
-  function updateFieldsChoices()
+  function updateFieldsChoices ()
   {
     $code_ent   = $this->attributesAccess['supannEntiteAffectation']->getValue();
     $label_ent  = $this->attributesAccess['supannEntiteAffectation']->getDisplayValues();
@@ -560,7 +560,7 @@ class supannAccount extends simplePlugin
     );
   }
 
-  function check()
+  function check ()
   {
     $message = parent::check();
 
@@ -572,13 +572,13 @@ class supannAccount extends simplePlugin
     return $message;
   }
 
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
     $this->updateFieldsChoices();
   }
 
-  function adapt_from_template($attrs, $skip = array())
+  function adapt_from_template ($attrs, $skip = [])
   {
     parent::adapt_from_template($attrs, $skip);
     $this->updateFieldsChoices();
diff --git a/sympa/admin/sympa/class_sympaAlias.inc b/sympa/admin/sympa/class_sympaAlias.inc
index 8e12fb69fadc384dcea5cbb702615410a2478af5..771da5b5af98a65f266bde4f43607faf00837246 100644
--- a/sympa/admin/sympa/class_sympaAlias.inc
+++ b/sympa/admin/sympa/class_sympaAlias.inc
@@ -20,54 +20,54 @@
 
 class sympaAlias extends simplePlugin
 {
-  var $objectclasses = array('sympaAlias');
+  var $objectclasses = ['sympaAlias'];
 
   /* Return plugin information for acl handling */
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Sympa list alias'),
       'plDescription' => _('Sympa list alias'),
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array('sympaAlias' => array(
+      'plObjectType'  => ['sympaAlias' => [
         'name'        => _('Sympa list alias'),
         'filter'      => 'objectClass=sympaAlias',
         'icon'        => 'geticon.php?context=applications&icon=sympa&size=16',
         'ou'          => get_ou('sympaRDN'),
-      )),
+      ]],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
-    return array(
+    return [
       // Attributes are grouped by section
-      'main' => array(
+      'main' => [
         'name'  => _('Sympa list alias'),
-        'attrs' => array(
-          new BaseSelectorAttribute (get_ou('sympaRDN')),
-          new StringAttribute (_('Name'), _('Name to identify this alias'), 'cn', TRUE),
-          new TextAreaAttribute (
+        'attrs' => [
+          new BaseSelectorAttribute(get_ou('sympaRDN')),
+          new StringAttribute(_('Name'), _('Name to identify this alias'), 'cn', TRUE),
+          new TextAreaAttribute(
             _('Description'), _('Description of this alias'),
             'description', FALSE
           ),
           new SetAttribute(
-            new MailAttribute (
+            new MailAttribute(
               _('Email address'), _('Email address'),
               'mail', TRUE
             )
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Sympa server'), _('Sympa server for this alias'),
             'sympaServerURL', TRUE,
-            array()
+            []
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -77,8 +77,8 @@ class sympaAlias extends simplePlugin
 
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(objectClass=sympaServer)', array('sympaServerURL'));
-    $server = array();
+    $ldap->search('(objectClass=sympaServer)', ['sympaServerURL']);
+    $server = [];
     while ($attrs = $ldap->fetch()) {
         $server[] = $attrs['sympaServerURL'][0];
     }
diff --git a/sympa/admin/sympa/class_sympaManagement.inc b/sympa/admin/sympa/class_sympaManagement.inc
index 06c56f2e78a3567fbd68127961dcb2b064093cde..a906fba680c1f1513199bb13a696857192d08afd 100644
--- a/sympa/admin/sympa/class_sympaManagement.inc
+++ b/sympa/admin/sympa/class_sympaManagement.inc
@@ -22,23 +22,23 @@
 class sympaManagement extends simpleManagement
 {
   // Tab definition
-  protected $objectTypes  = array('sympaAlias');
+  protected $objectTypes  = ['sympaAlias'];
 
-  protected $autoFilterAttributes = array('dn', 'cn', 'description');
+  protected $autoFilterAttributes = ['dn', 'cn', 'description'];
 
   /* Return plugin information for acl handling  */
-  public static function plInfo()
+  public static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Sympa'),
       'plDescription' => _('Sympa management'),
       'plIcon'        => 'geticon.php?context=applications&icon=sympa&size=48',
       'plSection'     => 'accounts',
       'plPriority'    => 26,
-      'plManages'     => array('sympaAlias'),
+      'plManages'     => ['sympaAlias'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 }
 ?>
diff --git a/sympa/admin/systems/services/sympa/class_serviceSympa.inc b/sympa/admin/systems/services/sympa/class_serviceSympa.inc
index 0c6047c8884399218f4a3fc44d4770286b7d343a..0a0e76f3c680b5cd9155614f377f8b9df2f2e81a 100644
--- a/sympa/admin/systems/services/sympa/class_serviceSympa.inc
+++ b/sympa/admin/systems/services/sympa/class_serviceSympa.inc
@@ -22,18 +22,18 @@
 class serviceSympa extends simpleService
 {
   /* This plugin only writes its objectClass */
-  var $objectclasses  = array("sympaServer");
+  var $objectclasses  = ["sympaServer"];
 
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Sympa Server'),
       'plDescription' => _('Sympa Server').' ('._('Services').')',
       'plIcon'        => 'geticon.php?context=applications&icon=sympa&size=16',
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
     /*!
@@ -41,25 +41,25 @@ class serviceSympa extends simpleService
    */
   static function getAttributesInfo ()
   {
-    return array (
-      'main' => array (
+    return  [
+      'main' => [
         'name'  => _('Sympa server'),
-        'attrs' => array (
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('URL'), _('URL to access the sympa server'),
             'sympaServerURL', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('User'), _('User to access sympa server SOAP API.'),
             'sympaServerUser', FALSE
           ),
-          new PasswordAttribute (
+          new PasswordAttribute(
             _('Password'), _('Password to access sympa server SOAP API.'),
             'sympaServerPassword', FALSE
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/sympa/config/sympa/class_sympaConfig.inc b/sympa/config/sympa/class_sympaConfig.inc
index 0420b85a45b45f3db0e3f0a8380bc4e47f64bc1d..dc9740324a5338e078e55505458e3612dc18c15f 100644
--- a/sympa/config/sympa/class_sympaConfig.inc
+++ b/sympa/config/sympa/class_sympaConfig.inc
@@ -20,35 +20,35 @@
 
 class sympaConfig extends simplePlugin
 {
-  var $objectclasses  = array('fdSympaPluginConf');
+  var $objectclasses  = ['fdSympaPluginConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Sympa configuration'),
       'plDescription'   => _('FusionDirectory sympa plugin configuration'),
       'plSelfModify'    => FALSE,
-      'plCategory'      => array('configuration'),
-      'plObjectType'    => array('smallConfig'),
+      'plCategory'      => ['configuration'],
+      'plObjectType'    => ['smallConfig'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Sympa'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Sympa RDN'), _('Branch in which Sympa objects will be stored'),
             'fdSympaRDN', TRUE,
             'ou=sympa'
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/sympa/locale/af_ZA/fusiondirectory.po b/sympa/locale/af_ZA/fusiondirectory.po
index 8da81189da5e8216946302df5de6c4ba77f17185..bb9db5124d4c132dea1cd15e3dbaadfc61cada09 100644
--- a/sympa/locale/af_ZA/fusiondirectory.po
+++ b/sympa/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/sympa/locale/ar/fusiondirectory.po b/sympa/locale/ar/fusiondirectory.po
index dc7cc0762bfda06aa6e7b9ffd70b7b5f9a32f945..eae6c2e9a747842f695be38801c7d616041b6ec7 100644
--- a/sympa/locale/ar/fusiondirectory.po
+++ b/sympa/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/sympa/locale/ca/fusiondirectory.po b/sympa/locale/ca/fusiondirectory.po
index 960a1d335dcaaa037ce9cb30dd04b847a91af712..ad2e7e587c545396b217e12fa17e0155b467f7ca 100644
--- a/sympa/locale/ca/fusiondirectory.po
+++ b/sympa/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/sympa/locale/cs_CZ/fusiondirectory.po b/sympa/locale/cs_CZ/fusiondirectory.po
index 29dcb14f3be48d78542cf462ac7c882bf3c1f5d9..9f863d7b94356d90e78978935f5711dfc91889c2 100644
--- a/sympa/locale/cs_CZ/fusiondirectory.po
+++ b/sympa/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/sympa/locale/de/fusiondirectory.po b/sympa/locale/de/fusiondirectory.po
index 06606166b89e25404f8c5ae8acd25da919f9a85b..22c206979b1c42c20acc3ae73d39ee3ec8db0206 100644
--- a/sympa/locale/de/fusiondirectory.po
+++ b/sympa/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/sympa/locale/el_GR/fusiondirectory.po b/sympa/locale/el_GR/fusiondirectory.po
index bcd5c02d9116b1f444fc2780eb6a4a9aaeafc86a..478fbadba13c356ed9fba44d060b1ee73a5141c0 100644
--- a/sympa/locale/el_GR/fusiondirectory.po
+++ b/sympa/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/sympa/locale/en/fusiondirectory.po b/sympa/locale/en/fusiondirectory.po
index 83f4b8fa373f7a91bdf495ecfedbafb4ad8a63bc..608de738c9e4669af4f6a53b7d3c5890c0aa2a7f 100644
--- a/sympa/locale/en/fusiondirectory.po
+++ b/sympa/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -38,73 +38,73 @@ msgstr ""
 msgid "Branch in which Sympa objects will be stored"
 msgstr ""
 
-#: admin/sympa/class_sympaManagement.inc:34
-msgid "Sympa management"
+#: admin/systems/services/sympa/class_serviceSympa.inc:31
+#: admin/systems/services/sympa/class_serviceSympa.inc:32
+msgid "Sympa Server"
 msgstr ""
 
-#: admin/sympa/class_sympaAlias.inc:29 admin/sympa/class_sympaAlias.inc:30
-#: admin/sympa/class_sympaAlias.inc:33 admin/sympa/class_sympaAlias.inc:49
-msgid "Sympa list alias"
+#: admin/systems/services/sympa/class_serviceSympa.inc:32
+msgid "Services"
 msgstr ""
 
-#: admin/sympa/class_sympaAlias.inc:52
-msgid "Name"
+#: admin/systems/services/sympa/class_serviceSympa.inc:46
+#: admin/sympa/class_sympaAlias.inc:64
+msgid "Sympa server"
 msgstr ""
 
-#: admin/sympa/class_sympaAlias.inc:52
-msgid "Name to identify this alias"
+#: admin/systems/services/sympa/class_serviceSympa.inc:49
+msgid "URL"
 msgstr ""
 
-#: admin/sympa/class_sympaAlias.inc:54
-msgid "Description"
+#: admin/systems/services/sympa/class_serviceSympa.inc:49
+msgid "URL to access the sympa server"
 msgstr ""
 
-#: admin/sympa/class_sympaAlias.inc:54
-msgid "Description of this alias"
+#: admin/systems/services/sympa/class_serviceSympa.inc:53
+msgid "User"
 msgstr ""
 
-#: admin/sympa/class_sympaAlias.inc:59
-msgid "Email address"
+#: admin/systems/services/sympa/class_serviceSympa.inc:53
+msgid "User to access sympa server SOAP API."
 msgstr ""
 
-#: admin/sympa/class_sympaAlias.inc:64
-#: admin/systems/services/sympa/class_serviceSympa.inc:46
-msgid "Sympa server"
+#: admin/systems/services/sympa/class_serviceSympa.inc:57
+msgid "Password"
 msgstr ""
 
-#: admin/sympa/class_sympaAlias.inc:64
-msgid "Sympa server for this alias"
+#: admin/systems/services/sympa/class_serviceSympa.inc:57
+msgid "Password to access sympa server SOAP API."
 msgstr ""
 
-#: admin/systems/services/sympa/class_serviceSympa.inc:31
-#: admin/systems/services/sympa/class_serviceSympa.inc:32
-msgid "Sympa Server"
+#: admin/sympa/class_sympaAlias.inc:29 admin/sympa/class_sympaAlias.inc:30
+#: admin/sympa/class_sympaAlias.inc:33 admin/sympa/class_sympaAlias.inc:49
+msgid "Sympa list alias"
 msgstr ""
 
-#: admin/systems/services/sympa/class_serviceSympa.inc:32
-msgid "Services"
+#: admin/sympa/class_sympaAlias.inc:52
+msgid "Name"
 msgstr ""
 
-#: admin/systems/services/sympa/class_serviceSympa.inc:49
-msgid "URL"
+#: admin/sympa/class_sympaAlias.inc:52
+msgid "Name to identify this alias"
 msgstr ""
 
-#: admin/systems/services/sympa/class_serviceSympa.inc:49
-msgid "URL to access the sympa server"
+#: admin/sympa/class_sympaAlias.inc:54
+msgid "Description"
 msgstr ""
 
-#: admin/systems/services/sympa/class_serviceSympa.inc:53
-msgid "User"
+#: admin/sympa/class_sympaAlias.inc:54
+msgid "Description of this alias"
 msgstr ""
 
-#: admin/systems/services/sympa/class_serviceSympa.inc:53
-msgid "User to access sympa server SOAP API."
+#: admin/sympa/class_sympaAlias.inc:59
+msgid "Email address"
 msgstr ""
 
-#: admin/systems/services/sympa/class_serviceSympa.inc:57
-msgid "Password"
+#: admin/sympa/class_sympaAlias.inc:64
+msgid "Sympa server for this alias"
 msgstr ""
 
-#: admin/systems/services/sympa/class_serviceSympa.inc:57
-msgid "Password to access sympa server SOAP API."
+#: admin/sympa/class_sympaManagement.inc:34
+msgid "Sympa management"
 msgstr ""
diff --git a/sympa/locale/es/fusiondirectory.po b/sympa/locale/es/fusiondirectory.po
index 5fb74629024a7425b1b282378787f169eedae704..b8968669133cc911bd19602e9fbd3eddbfed5d33 100644
--- a/sympa/locale/es/fusiondirectory.po
+++ b/sympa/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/sympa/class_serviceSympa.inc:31
 #: admin/systems/services/sympa/class_serviceSympa.inc:32
diff --git a/sympa/locale/es_CO/fusiondirectory.po b/sympa/locale/es_CO/fusiondirectory.po
index 185b08f0043a33b0cc4a103abc8a7268984763cc..93ad57ae76b09a773fa92f3d75d2a2dbf62f20c2 100644
--- a/sympa/locale/es_CO/fusiondirectory.po
+++ b/sympa/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/sympa/class_serviceSympa.inc:31
 #: admin/systems/services/sympa/class_serviceSympa.inc:32
diff --git a/sympa/locale/es_VE/fusiondirectory.po b/sympa/locale/es_VE/fusiondirectory.po
index 69f538178b56fa4db91e3db19e5513cb3e8e15c8..d376e12c0518b0839a9a1f2b940c52c719d66f18 100644
--- a/sympa/locale/es_VE/fusiondirectory.po
+++ b/sympa/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/sympa/class_serviceSympa.inc:31
 #: admin/systems/services/sympa/class_serviceSympa.inc:32
diff --git a/sympa/locale/fa_IR/fusiondirectory.po b/sympa/locale/fa_IR/fusiondirectory.po
index baef19a97b75b31a04fd7b07bd15578a6ab97872..655817631f396adcb1bee977e93f6696d59c95a3 100644
--- a/sympa/locale/fa_IR/fusiondirectory.po
+++ b/sympa/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/sympa/locale/fi_FI/fusiondirectory.po b/sympa/locale/fi_FI/fusiondirectory.po
index be10b27c8a71428430ea14e9f503b3c47ad2cfcd..fed3047d70b17569a4254e545a9437d56f8bb938 100644
--- a/sympa/locale/fi_FI/fusiondirectory.po
+++ b/sympa/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/sympa/locale/fr/fusiondirectory.po b/sympa/locale/fr/fusiondirectory.po
index ca86b685d8cd18c836e7b86c8cb7c0ece3d4bfd8..51e68d450de30d04e35364099b9144a57ef13d5b 100644
--- a/sympa/locale/fr/fusiondirectory.po
+++ b/sympa/locale/fr/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -20,7 +20,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/sympa/class_serviceSympa.inc:31
 #: admin/systems/services/sympa/class_serviceSympa.inc:32
diff --git a/sympa/locale/hu_HU/fusiondirectory.po b/sympa/locale/hu_HU/fusiondirectory.po
index 3452e1c2466c58f853cd30ec00588a8d91ac8a36..ccf0f6f833b1b029953359f58379e6b427f778e0 100644
--- a/sympa/locale/hu_HU/fusiondirectory.po
+++ b/sympa/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
diff --git a/sympa/locale/id/fusiondirectory.po b/sympa/locale/id/fusiondirectory.po
index 9d711989155fde11bb56bd08cbc5bc355bdfae6e..cc2473aaa15673f08877b7b8d43a63c99dbf3d30 100644
--- a/sympa/locale/id/fusiondirectory.po
+++ b/sympa/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/sympa/locale/it_IT/fusiondirectory.po b/sympa/locale/it_IT/fusiondirectory.po
index 0c0b5e05068988ddc223b4552afb0ddc25807297..7a9488c4bcbbda9b2b5b5e219a0a5e074881e53d 100644
--- a/sympa/locale/it_IT/fusiondirectory.po
+++ b/sympa/locale/it_IT/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/sympa/class_serviceSympa.inc:31
 #: admin/systems/services/sympa/class_serviceSympa.inc:32
diff --git a/sympa/locale/ja/fusiondirectory.po b/sympa/locale/ja/fusiondirectory.po
index 5984328bbdab26db8bf0b1288b4e79afb211b740..461655ec84ed335914f16a52f793324648c6f735 100644
--- a/sympa/locale/ja/fusiondirectory.po
+++ b/sympa/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/sympa/locale/ko/fusiondirectory.po b/sympa/locale/ko/fusiondirectory.po
index adf818c68229d42714a4969e22c605e502028c96..f80856d0cc4077a1ac2c7809318aa8df5b304933 100644
--- a/sympa/locale/ko/fusiondirectory.po
+++ b/sympa/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/sympa/locale/lv/fusiondirectory.po b/sympa/locale/lv/fusiondirectory.po
index df9dac289b91f9a168c4dcf61f0c3575209d622e..73759c7aad466276a2d472470f7cfe26d0e12faf 100644
--- a/sympa/locale/lv/fusiondirectory.po
+++ b/sympa/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/sympa/locale/nb/fusiondirectory.po b/sympa/locale/nb/fusiondirectory.po
index b543deecc7d240b5f4bc06d4ff517ca8b5950a90..4c23e6f1054300459c2013ed3b082794f7f2bed0 100644
--- a/sympa/locale/nb/fusiondirectory.po
+++ b/sympa/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/sympa/locale/nl/fusiondirectory.po b/sympa/locale/nl/fusiondirectory.po
index f82985fcaf7cef1e8e5f72471d6542124f15a2b1..ed82a4ce43ae5881d85fdcf02797f4312fd19600 100644
--- a/sympa/locale/nl/fusiondirectory.po
+++ b/sympa/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/sympa/locale/pl/fusiondirectory.po b/sympa/locale/pl/fusiondirectory.po
index c151a20ecc27135e885d462e4f3f0cbd174154d6..3cc560d806425466f0e84391b35e721f7218f90b 100644
--- a/sympa/locale/pl/fusiondirectory.po
+++ b/sympa/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/sympa/locale/pt/fusiondirectory.po b/sympa/locale/pt/fusiondirectory.po
index 7d5288cd6e37325930c7bc0c8f1caf2d195a5f55..67f7235c907e18eeb437707cc3effcfc094efae0 100644
--- a/sympa/locale/pt/fusiondirectory.po
+++ b/sympa/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/sympa/class_serviceSympa.inc:31
 #: admin/systems/services/sympa/class_serviceSympa.inc:32
diff --git a/sympa/locale/pt_BR/fusiondirectory.po b/sympa/locale/pt_BR/fusiondirectory.po
index c5cf1838734cf9c72a070dc7e3f8a3c6f41c42cf..da941ee87fb215dbec807666b48b9bd05364e24a 100644
--- a/sympa/locale/pt_BR/fusiondirectory.po
+++ b/sympa/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/services/sympa/class_serviceSympa.inc:31
 #: admin/systems/services/sympa/class_serviceSympa.inc:32
diff --git a/sympa/locale/ru/fusiondirectory.po b/sympa/locale/ru/fusiondirectory.po
index 4b569cb3a425e4e81f310701a95ccded9655d3f5..27d372121c8f9dbe9ad26a12ab53244ce9faf228 100644
--- a/sympa/locale/ru/fusiondirectory.po
+++ b/sympa/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/sympa/locale/ru@petr1708/fusiondirectory.po b/sympa/locale/ru@petr1708/fusiondirectory.po
index 90deead1661f826a693dc3e5f2b36ad12ec402df..b8e09d32d7bdab031aee47672e977b2556f79768 100644
--- a/sympa/locale/ru@petr1708/fusiondirectory.po
+++ b/sympa/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/sympa/locale/sv/fusiondirectory.po b/sympa/locale/sv/fusiondirectory.po
index 6dea35b6c89899ec711ebc5f12fda8c39c4c93ea..992de0d303177b7c573bd7db6a31a3ea2de10ed7 100644
--- a/sympa/locale/sv/fusiondirectory.po
+++ b/sympa/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/sympa/locale/tr_TR/fusiondirectory.po b/sympa/locale/tr_TR/fusiondirectory.po
index 597ec2356ef45f8dd3b4743ad41c508014014ab7..ae535d14fea3d125973f6d4d631df315e1a4b352 100644
--- a/sympa/locale/tr_TR/fusiondirectory.po
+++ b/sympa/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2021
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2021\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -49,7 +53,7 @@ msgstr ""
 
 #: admin/systems/services/sympa/class_serviceSympa.inc:57
 msgid "Password"
-msgstr ""
+msgstr "Parola"
 
 #: admin/systems/services/sympa/class_serviceSympa.inc:57
 msgid "Password to access sympa server SOAP API."
diff --git a/sympa/locale/ug/fusiondirectory.po b/sympa/locale/ug/fusiondirectory.po
index ac06af6a90d639aafaa8fffba3395ed927f46ec2..f9b0d5fa110ec090e3db6949811d26cd4a01fa2c 100644
--- a/sympa/locale/ug/fusiondirectory.po
+++ b/sympa/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/systems/services/sympa/class_serviceSympa.inc:31
 #: admin/systems/services/sympa/class_serviceSympa.inc:32
diff --git a/sympa/locale/vi_VN/fusiondirectory.po b/sympa/locale/vi_VN/fusiondirectory.po
index 972851f8d85d954d8c0511eff67553306d903e31..baec66d3033c96379eda971a564a4391eb04154e 100644
--- a/sympa/locale/vi_VN/fusiondirectory.po
+++ b/sympa/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/sympa/locale/zh/fusiondirectory.po b/sympa/locale/zh/fusiondirectory.po
index d92075722c2e2751231f5de9b074c03fd62c0334..bb6f70ffa1b1893e6d19e33f48bd1334613e02f3 100644
--- a/sympa/locale/zh/fusiondirectory.po
+++ b/sympa/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/sympa/locale/zh_TW/fusiondirectory.po b/sympa/locale/zh_TW/fusiondirectory.po
index c0b20e045cac0c9a4b88df5654a4348bb2fa1731..2f63f8fdcb26aa2425328bd1337edfdd80f771b5 100644
--- a/sympa/locale/zh_TW/fusiondirectory.po
+++ b/sympa/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:22+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/systems/addons/dashboard/class_dashBoardNetwork.inc b/systems/addons/dashboard/class_dashBoardNetwork.inc
index 741cd759278ad7eed28b1ecf603734af5f74854c..47505e78312b05c683959167705ef9b034e52d9e 100644
--- a/systems/addons/dashboard/class_dashBoardNetwork.inc
+++ b/systems/addons/dashboard/class_dashBoardNetwork.inc
@@ -22,32 +22,32 @@
 class dashboardNetwork extends simplePlugin
 {
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Network'),
       'plDescription' => _('Statistics and various information'),
-      'plObjectType'  => array('dashboard'),
+      'plObjectType'  => ['dashboard'],
       'plPriority'    => 22,
 
-      'plProvidedAcls'  => array()
-    );
+      'plProvidedAcls'  => []
+    ];
   }
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
-    return array(
-      'dhcp' => array(
+    return [
+      'dhcp' => [
         'name'  => _('DHCP'),
-        'attrs' => array(new FakeAttribute('dhcp_infos')),
+        'attrs' => [new FakeAttribute('dhcp_infos')],
         'template' => get_template_path('network_dhcp.tpl', TRUE, dirname(__FILE__)),
-      ),
-      'dns' => array(
+      ],
+      'dns' => [
         'name'  => _('DNS'),
-        'attrs' => array(new FakeAttribute('dns_infos')),
+        'attrs' => [new FakeAttribute('dns_infos')],
         'template' => get_template_path('network_dhcp.tpl', TRUE, dirname(__FILE__)),
-      ),
-    );
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -65,18 +65,18 @@ class dashboardNetwork extends simplePlugin
     }
   }
 
-  function dhcp_infos()
+  function dhcp_infos ()
   {
     global $config, $ui;
 
     if (!class_available('dhcpService')) {
-      return array();
+      return [];
     }
 
     try {
-      $objects = objects::ls('server', array('cn' => 'raw', 'dhcpServiceDN' => 1), NULL, '(objectClass=dhcpServer)', TRUE);
+      $objects = objects::ls('server', ['cn' => 'raw', 'dhcpServiceDN' => 1], NULL, '(objectClass=dhcpServer)', TRUE);
     } catch (FusionDirectoryException $e) {
-      $objects = array();
+      $objects = [];
       msg_dialog::display(
         _('Error'),
         sprintf(_('Statistics for DHCP could not be computed because of the following error: %s'), $e->getMessage()),
@@ -84,51 +84,51 @@ class dashboardNetwork extends simplePlugin
       );
     }
 
-    $servers = array();
+    $servers = [];
     foreach ($objects as $dn => $attrs) {
-      $zones = array();
+      $zones = [];
       if (strpos($ui->get_permissions($attrs['dhcpServiceDN'], 'dhcpConfiguration/dhcpSubnet', 'dhcpNetMask'), 'r') !== FALSE) {
         $ldap_zone = $config->get_ldap_link();
         $ldap_zone->cd($attrs['dhcpServiceDN']);
-        $ldap_zone->search('(objectClass=dhcpSubnet)', array('cn','dhcpNetMask'));
+        $ldap_zone->search('(objectClass=dhcpSubnet)', ['cn','dhcpNetMask']);
         while ($attrs_zone = $ldap_zone->fetch()) {
-          $zones[] = array(
+          $zones[] = [
             'text' => $attrs_zone['cn'][0]."/".$attrs_zone['dhcpNetMask'][0]
-          );
+          ];
         }
       }
 
-      $servers[] = array(
+      $servers[] = [
         'name'  => $attrs['cn'][0],
         'link'  => objects::link($dn, 'server', 'service_serviceDHCP', $attrs, FALSE),
         'zones' => $zones
-      );
+      ];
     }
 
     return $servers;
   }
 
-  function dns_infos()
+  function dns_infos ()
   {
     if (!class_available('dnsZone')) {
-      return array();
+      return [];
     }
-    $servers  = array();
-    $zones    = objects::ls('dnsZone', array('zoneName' => 1, 'sOARecord' => 1), NULL, '', TRUE);
+    $servers  = [];
+    $zones    = objects::ls('dnsZone', ['zoneName' => 1, 'sOARecord' => 1], NULL, '', TRUE);
     foreach ($zones as $zonedn => $zone) {
-      list ($fqdn)  = explode(' ', $zone['sOARecord']);
+      list($fqdn)  = explode(' ', $zone['sOARecord']);
       $search = dnsManagement::findServerByFQDN($fqdn, $zonedn);
       foreach ($search as $dn => $name) {
         if (!isset($servers[$dn])) {
-          $servers[$dn] = array(
+          $servers[$dn] = [
             'name'  => $name,
             'link'  => objects::link($dn, 'server', 'tab_dnsHost', $name, FALSE),
-            'zones' => array()
-          );
+            'zones' => []
+          ];
         }
-        $servers[$dn]['zones'][] = array(
+        $servers[$dn]['zones'][] = [
           'link' => objects::link($zonedn, 'dnsZone', '', $zone['zoneName'], FALSE)
-        );
+        ];
       }
     }
 
diff --git a/systems/addons/dashboard/class_dashBoardSystems.inc b/systems/addons/dashboard/class_dashBoardSystems.inc
index dec3a11c3cd86281dc3c364a7b92e16555bab6eb..a806b7dff8e0c47d31d4a1d3dee255dd7bbcf9b1 100644
--- a/systems/addons/dashboard/class_dashBoardSystems.inc
+++ b/systems/addons/dashboard/class_dashBoardSystems.inc
@@ -24,42 +24,42 @@ class dashboardSystems extends simplePlugin
   /* default values */
   var $default_start_computer_id = 0;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Systems'),
       'plDescription' => _('Statistics and information about systems'),
-      'plObjectType'  => array('dashboard'),
+      'plObjectType'  => ['dashboard'],
       'plPriority'    => 20,
 
-      'plProvidedAcls'  => array()
-    );
+      'plProvidedAcls'  => []
+    ];
   }
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
-    return array(
-      'stats' => array(
+    return [
+      'stats' => [
         'name'  => _('Statistics'),
-        'attrs' => array(new FakeAttribute('stats')),
+        'attrs' => [new FakeAttribute('stats')],
         'template' => get_template_path('systems_stats.tpl', TRUE, dirname(__FILE__)),
-      ),
-      'pc_ids' => array(
+      ],
+      'pc_ids' => [
         'name'  => _('Computer name to use by unit'),
-        'attrs' => array(new FakeAttribute('pc_ids')),
+        'attrs' => [new FakeAttribute('pc_ids')],
         'template' => get_template_path('systems_pcids.tpl', TRUE, dirname(__FILE__)),
-      ),
-    );
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
   {
     parent::__construct($dn, $object, $parent, $mainTab);
 
-    $this->stats = array(
+    $this->stats = [
       'systems' => $this->systems_stats(),
       'argonaut' => $this->argonaut_stats(),
-    );
+    ];
     $this->pc_ids = $this->computer_ids_rules();
   }
 
@@ -69,40 +69,40 @@ class dashboardSystems extends simplePlugin
     $ldap = $config->get_ldap_link();
 
     /* Statistics */
-    $stats = array(
-      array('name'  => _('Workstations'),
+    $stats = [
+      ['name'  => _('Workstations'),
             'type'  => 'workstation',
             'img'   => 'geticon.php?context=devices&icon=computer&size=16'
-      ),
-      array('name'  => _('Servers'),
+      ],
+      ['name'  => _('Servers'),
             'type'  => 'server',
             'img'   => 'geticon.php?context=devices&icon=server&size=16'
-      ),
-      array('name'    => _('Windows Workstations'),
+      ],
+      ['name'    => _('Windows Workstations'),
             'type'    => 'workstation',
             'filter'  => '(objectClass=sambaSamAccount)',
             'img'     => 'geticon.php?context=devices&icon=computer-windows&size=16'
-      ),
-      array('name'  => _('Terminals'),
+      ],
+      ['name'  => _('Terminals'),
             'type'  => 'terminal',
             'img'   => 'geticon.php?context=devices&icon=terminal&size=16'
-      ),
-      array('name'  => _('Printers'),
+      ],
+      ['name'  => _('Printers'),
             'type'  => 'printer',
             'img'   => 'geticon.php?context=devices&icon=printer&size=16'
-      ),
-      array('name'  => _('Phones'),
+      ],
+      ['name'  => _('Phones'),
             'type'  => 'phone',
             'img'   => 'geticon.php?context=devices&icon=telephone&size=16'
-      ),
-      array('name'  => _('Components'),
+      ],
+      ['name'  => _('Components'),
             'type'  => 'component',
             'img'   => 'geticon.php?context=devices&icon=network-device&size=16'
-      ),
-      array('name'  => _('Mobile phones'),
+      ],
+      ['name'  => _('Mobile phones'),
             'type'  => 'mobilePhone',
-            'img'   => 'geticon.php?context=devices&icon=phone&size=16'),
-    );
+            'img'   => 'geticon.php?context=devices&icon=phone&size=16'],
+    ];
 
     foreach ($stats as $key => &$stat) {
       try {
@@ -134,16 +134,16 @@ class dashboardSystems extends simplePlugin
 
     $argonaut_servers = objects::ls(
       'server',
-      array('cn' => 'raw','ipHostNumber' => 'raw','argonautProtocol' => 'raw','argonautPort' => 'raw'),
+      ['cn' => 'raw','ipHostNumber' => 'raw','argonautProtocol' => 'raw','argonautPort' => 'raw'],
       NULL,
       '(objectClass=argonautServer)',
       TRUE
     );
     $nb_argonaut_server = count($argonaut_servers);
-    $argonaut_server    = array();
+    $argonaut_server    = [];
     if ($nb_argonaut_server == 1) {
       $attrs = reset($argonaut_servers);
-      foreach (array('cn','ipHostNumber','argonautProtocol','argonautPort') as $key) {
+      foreach (['cn','ipHostNumber','argonautProtocol','argonautPort'] as $key) {
         $argonaut_server[$key] = $attrs[$key][0];
       }
       $argonaut_server['link'] = objects::link(key($argonaut_servers), 'server', 'service_serviceArgonaut', $attrs);
@@ -154,15 +154,15 @@ class dashboardSystems extends simplePlugin
     } else {
       $ldap = $config->get_ldap_link();
       $ldap->cd($config->current['BASE']);
-      $ldap->search('(objectClass=argonautClient)', array('cn'));
+      $ldap->search('(objectClass=argonautClient)', ['cn']);
       $nb_argonaut_clients = $ldap->count();
     }
 
-    return array(
+    return [
       'nb_servers'  => $nb_argonaut_server,
       'server'      => $argonaut_server,
       'nb_clients'  => $nb_argonaut_clients,
-    );
+    ];
   }
 
   protected function computer_ids_rules ()
@@ -182,9 +182,9 @@ class dashboardSystems extends simplePlugin
     */
 
     $output_next_computer_ids = "";
-    $computer_ids_rules = $config->get_cfg_value('dashboardPrefix', array('PC'));
+    $computer_ids_rules = $config->get_cfg_value('dashboardPrefix', ['PC']);
     if (!is_array($computer_ids_rules)) {
-      $computer_ids_rules = array($computer_ids_rules);
+      $computer_ids_rules = [$computer_ids_rules];
     }
 
     $nb_digits = $config->get_cfg_value('dashboardNumberOfDigit', 3);
@@ -192,9 +192,9 @@ class dashboardSystems extends simplePlugin
     /* running all the table */
     foreach ($computer_ids_rules as $rule) {
       /* aray initialization*/
-      $array_complete_list  = array();
-      $array_real_list      = array();
-      $unused_computer_ids  = array();
+      $array_complete_list  = [];
+      $array_real_list      = [];
+      $unused_computer_ids  = [];
       /* get computer ids configuration */
       $config_ids = explode("=", $rule);
       /* fist is is the prefix */
@@ -217,7 +217,7 @@ class dashboardSystems extends simplePlugin
 
       /* request of all computer beginning by the prefix */
       $request = '(&(cn='.$prefix.'*)(ou:dn:=systems))';
-      $ldap->search($request, array("cn"));
+      $ldap->search($request, ["cn"]);
       while ($attrs = $ldap->fetch()) {
         /* if a computer is a windows host, we have to delete the $ at the end */
         $computer_id        = str_replace("$", "", $attrs["cn"][0]);
diff --git a/systems/admin/systems/class_componentGeneric.inc b/systems/admin/systems/class_componentGeneric.inc
index 3de4d2cc4ad58ea56627d16c33ebf965aafd86dd..0335f3e6d76c12f490bfd6658d511dc3825c3ec8 100644
--- a/systems/admin/systems/class_componentGeneric.inc
+++ b/systems/admin/systems/class_componentGeneric.inc
@@ -22,26 +22,26 @@ class componentGeneric extends ipHostPlugin
 {
   var $mainTab = TRUE;
 
-  var $objectclasses = array('device', 'ieee802Device');
+  var $objectclasses = ['device', 'ieee802Device'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Component'),
       'plDescription' => _('Component information'),
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array(
-        'component' => array(
+      'plObjectType'  => [
+        'component' => [
           'name'        => _('Network device'),
           'description' => _('Network device'),
           'filter'      => '(&(objectClass=ieee802Device)(objectClass=device))',
           'icon'        => 'geticon.php?context=devices&icon=network-device&size=16',
           'ou'          => get_ou('componentRDN'),
-        )
-      ),
+        ]
+      ],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   /*!
@@ -49,25 +49,25 @@ class componentGeneric extends ipHostPlugin
    */
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Properties'),
-        'attrs' => array(
-          new HostNameAttribute (
+        'attrs' => [
+          new HostNameAttribute(
             _('Name'), _('The name of the component'),
             'cn', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Description'), _('A short description of the component'),
             'description', FALSE
           ),
           new BaseSelectorAttribute(get_ou("componentRDN")),
-        )
-      ),
-      'network' => array(
+        ]
+      ],
+      'network' => [
         'name'      => _('Network settings'),
         'icon'      => 'geticon.php?context=categories&icon=applications-internet&size=16',
-        'attrs'     => array(
+        'attrs'     => [
           new IPAttribute(
             _('IP address'), _('IP address this system uses'),
             'ipHostNumber', TRUE
@@ -76,9 +76,9 @@ class componentGeneric extends ipHostPlugin
             _('Mac address'), _('Mac address of this system'),
             'macAddress', FALSE
           ),
-        ),
-      ),
-    );
+        ],
+      ],
+    ];
   }
 }
 
diff --git a/systems/admin/systems/class_filterServerService.inc b/systems/admin/systems/class_filterServerService.inc
index 4554283a1f7e873e40e3922c5af7226822027bc8..3c9a8dccf81e55f5a2234c24e902d7a1157a0ebc 100644
--- a/systems/admin/systems/class_filterServerService.inc
+++ b/systems/admin/systems/class_filterServerService.inc
@@ -21,23 +21,23 @@
 
 class filterServerService
 {
-  static function query($parent, $base, $scope, $filter, $attributes, $category, $objectStorage = "")
+  static function query ($parent, $base, $scope, $filter, $attributes, $category, $objectStorage = "")
   {
     $plugins  = ServerService::getServiceList();
-    $list     = array();
+    $list     = [];
     foreach ($plugins as $name => $obj) {
       if ($obj->is_account) {
         $data = $plugins[$name]->getListEntry();
-        $data['objectClass']  = array('FAKE_OC_ServerService');
+        $data['objectClass']  = ['FAKE_OC_ServerService'];
         $data['name']         = $name;
-        foreach (array('AllowStatus','AllowStart','AllowStop','AllowRestart','AllowRemove','AllowEdit') as $key) {
+        foreach (['AllowStatus','AllowStart','AllowStop','AllowRestart','AllowRemove','AllowEdit'] as $key) {
           if ($data[$key]) {
             $data['objectClass'][] = $key;
           }
         }
         foreach ($data as $key => $value) {
           if (!is_array($value)) {
-            $value = array($value);
+            $value = [$value];
           }
           $list[$name][]              = $key;
           $list[$name][$key]          = $value;
diff --git a/systems/admin/systems/class_ipHostPlugin.inc b/systems/admin/systems/class_ipHostPlugin.inc
index b4f4c616f02566262a89b17e6f8454a02005091f..75efb182f5bd50d40aab5164f65eddd072ee6e41 100644
--- a/systems/admin/systems/class_ipHostPlugin.inc
+++ b/systems/admin/systems/class_ipHostPlugin.inc
@@ -32,7 +32,7 @@ class ipHostPlugin extends simplePlugin
     parent::__construct($dn, $object, $parent, $mainTab);
 
     $this->attributesAccess['ipHostNumber']->setRequired(
-      in_array(get_class($this), $config->get_cfg_value('mandatoryIpClasses', array()))
+      in_array(get_class($this), $config->get_cfg_value('mandatoryIpClasses', []))
     );
     $this->attributesAccess['ipHostNumber']->setUnique('whole', '(objectClass=ipHost)');
     if (isset($this->attributesAccess['macAddress'])) {
@@ -41,11 +41,11 @@ class ipHostPlugin extends simplePlugin
   }
 
   /* Used by prepare_save and template::apply */
-  public function mergeObjectClasses(array $oc)
+  public function mergeObjectClasses (array $oc)
   {
     $objectclasses = $oc;
     if (empty($this->ipHostNumber)) {
-      $objectclasses = array_remove_entries_ics(array('ipHost'), $objectclasses);
+      $objectclasses = array_remove_entries_ics(['ipHost'], $objectclasses);
     } else {
       $objectclasses[] = 'ipHost';
     }
diff --git a/systems/admin/systems/class_mobilePhoneGeneric.inc b/systems/admin/systems/class_mobilePhoneGeneric.inc
index 998919d6dffd8a951cf6fd2cf65b4837257cb06e..51cc33036cfa9a720c1032bec856828468dac82e 100644
--- a/systems/admin/systems/class_mobilePhoneGeneric.inc
+++ b/systems/admin/systems/class_mobilePhoneGeneric.inc
@@ -22,28 +22,28 @@ class mobilePhoneGeneric extends ipHostPlugin
 {
   var $mainTab = TRUE;
 
-  var $objectclasses = array('fdMobilePhone', 'ieee802Device');
+  var $objectclasses = ['fdMobilePhone', 'ieee802Device'];
 
-  var $inheritance = array("gosaGroupOfNames" => "member");
+  var $inheritance = ["gosaGroupOfNames" => "member"];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Mobile phone'),
       'plDescription' => _('Mobile phone information'),
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array(
-        'mobilePhone' => array(
+      'plObjectType'  => [
+        'mobilePhone' => [
           'name'        => _('Mobile phone'),
           'description' => _('Mobile phone'),
           'filter'      => 'objectClass=fdMobilePhone',
           'icon'        => 'geticon.php?context=devices&icon=phone&size=16',
           'ou'          => get_ou('mobilePhoneRDN'),
-        )
-      ),
+        ]
+      ],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   /*!
@@ -51,57 +51,57 @@ class mobilePhoneGeneric extends ipHostPlugin
    */
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Properties'),
-        'attrs' => array(
+        'attrs' => [
           new BaseSelectorAttribute(get_ou('mobilePhoneRDN')),
-          new HostNameAttribute (
+          new HostNameAttribute(
             _('Name'), _('The name of the mobile phone'),
             'cn', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Description'), _('A short description of the mobile phone'),
             'description', FALSE
           ),
-        )
-      ),
-      'phone' => array(
+        ]
+      ],
+      'phone' => [
         'name'  => _('Phone'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Serial Number'), _('The serial number of the mobile phone'),
             'serialNumber', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('IMEI Number'), _('The IMEI number of the mobile phone'),
             'fdMobileIMEI', FALSE, '', '',
             '/[[:digit:]]+/'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('OS'), _('The Operating System installed on this phone'),
             'fdMobileOS', FALSE
           ),
-        )
-      ),
-      'simcard' => array(
+        ]
+      ],
+      'simcard' => [
         'name'  => _('SimCard'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Telephone Number'), _('The telephone number of the mobile phone'),
             'telephoneNumber', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('PUK Number'), _('The PUK number of the simcard in this mobile phone'),
             'fdMobilePUK', FALSE, '', '',
             '/[[:digit:]]+/'
           ),
-        )
-      ),
-      'network' => array(
+        ]
+      ],
+      'network' => [
         'name'      => _('Network settings'),
         'icon'      => 'geticon.php?context=categories&icon=applications-internet&size=16',
-        'attrs'     => array(
+        'attrs'     => [
           new IPAttribute(
             _('IP address'), _('IP address this system uses'),
             'ipHostNumber', FALSE
@@ -110,9 +110,9 @@ class mobilePhoneGeneric extends ipHostPlugin
             _('Mac address'), _('Mac address of this system'),
             'macAddress', FALSE
           ),
-        ),
-      ),
-    );
+        ],
+      ],
+    ];
   }
 }
 ?>
diff --git a/systems/admin/systems/class_phoneGeneric.inc b/systems/admin/systems/class_phoneGeneric.inc
index efa9b894a1a530fbeed9ad90ba823574cc94db18..f23b9e8f7b335b8f0d9c9fefd979eef27f655f28 100644
--- a/systems/admin/systems/class_phoneGeneric.inc
+++ b/systems/admin/systems/class_phoneGeneric.inc
@@ -22,63 +22,63 @@ class phoneGeneric extends ipHostPlugin
 {
   var $mainTab = TRUE;
 
-  var $objectclasses = array('fdPhone', 'ieee802Device');
+  var $objectclasses = ['fdPhone', 'ieee802Device'];
 
-  var $inheritance = array('gosaGroupOfNames' => 'member');
+  var $inheritance = ['gosaGroupOfNames' => 'member'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Phone'),
       'plDescription' => _('Phone information'),
-      'plObjectType'  => array(
-        'phone' => array(
+      'plObjectType'  => [
+        'phone' => [
           'name'        => _('Phone'),
           'description' => _('Phone hardware'),
           'filter'      => 'objectClass=fdPhone',
           'icon'        => 'geticon.php?context=devices&icon=telephone&size=16',
           'ou'          => get_ou('phoneRDN'),
-        )
-      ),
+        ]
+      ],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Properties'),
-        'attrs' => array(
+        'attrs' => [
           new BaseSelectorAttribute(get_ou('phoneRDN')),
-          new HostNameAttribute (
+          new HostNameAttribute(
             _('Name'), _('The name of the phone'),
             'cn', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Description'), _('A short description of the phone'),
             'description', FALSE
           ),
-        )
-      ),
-      'phone' => array(
+        ]
+      ],
+      'phone' => [
         'name'  => _('Phone'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Serial Number'), _('The serial number of the phone'),
             'serialNumber', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Telephone Number'), _('The telephone number of the phone'),
             'telephoneNumber', FALSE
           ),
-        )
-      ),
-      'network' => array(
+        ]
+      ],
+      'network' => [
         'name'      => _('Network settings'),
         'icon'      => 'geticon.php?context=categories&icon=applications-internet&size=16',
-        'attrs'     => array(
+        'attrs'     => [
           new SetAttribute(
             new IPAttribute(
               _('IP address'), _('IP addresses this system uses (v4 or v6)'),
@@ -91,9 +91,9 @@ class phoneGeneric extends ipHostPlugin
               'macAddress', FALSE
             )
           ),
-        ),
-      ),
-    );
+        ],
+      ],
+    ];
   }
 }
 ?>
diff --git a/systems/admin/systems/class_printGeneric.inc b/systems/admin/systems/class_printGeneric.inc
index 8eede26aa92be85c867e793c3d5da00f7b1d1d8c..471ae9c12233802b753d3fd1ed2691874a7eaa41 100644
--- a/systems/admin/systems/class_printGeneric.inc
+++ b/systems/admin/systems/class_printGeneric.inc
@@ -21,31 +21,31 @@
 
 class printGeneric extends ipHostPlugin
 {
-  var $objectclasses  = array('fdPrinter', 'ieee802Device');
+  var $objectclasses  = ['fdPrinter', 'ieee802Device'];
 
   /* Return plugin information */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Printer'),
       'plDescription' => _('Printer information'),
       'plPriority'    => 10,
-      'plObjectType'  => array('printer' =>
-        array(
+      'plObjectType'  => ['printer' =>
+        [
           'name'        => _('Printer'),
           'description' => _('Printer'),
           'filter'      => 'objectClass=fdPrinter',
           'icon'        => 'geticon.php?context=devices&icon=printer&size=16',
           'ou'          => get_ou('printerRDN'),
-        )
-      ),
-      'plForeignKeys'  => array(
+        ]
+      ],
+      'plForeignKeys'  => [
         'fdPrinterUsers'      => 'user',
         'fdPrinterAdminUsers' => 'user',
-      ),
+      ],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   /*!
@@ -53,56 +53,56 @@ class printGeneric extends ipHostPlugin
    */
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Properties'),
-        'attrs' => array(
+        'attrs' => [
           new BaseSelectorAttribute(get_ou('printerRDN')),
-          new HostNameAttribute (
+          new HostNameAttribute(
             _('Name'), _('The name of the printer'),
             'cn', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Description'), _('A short description of the printer'),
             'description', FALSE
           ),
-        )
-      ),
-      'details' => array(
+        ]
+      ],
+      'details' => [
         'name'  => _('Details'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Printer location'), _('The location of the printer'),
             'l', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Printer URL'), _('The URL of the printer'),
             'labeledURI', TRUE
           ),
-        )
-      ),
-      'users' => array(
+        ]
+      ],
+      'users' => [
         'name'  => _('Users which are allowed to use this printer'),
-        'attrs' => array(
+        'attrs' => [
           new UsersAttribute(
             '', _('Users which are allowed to use this printer'),
             'fdPrinterUsers', FALSE
           )
-        )
-      ),
-      'admins' => array(
+        ]
+      ],
+      'admins' => [
         'name'  => _('Users which are allowed to administrate this printer'),
-        'attrs' => array(
+        'attrs' => [
           new UsersAttribute(
             '', _('Users which are allowed to administrate this printer'),
             'fdPrinterAdminUsers', FALSE
           )
-        )
-      ),
-      'network' => array(
+        ]
+      ],
+      'network' => [
         'name'      => _('Network settings'),
         'icon'      => 'geticon.php?context=categories&icon=applications-internet&size=16',
-        'attrs'     => array(
+        'attrs'     => [
           new SetAttribute(
             new IPAttribute(
               _('IP address'), _('IP address this system uses'),
@@ -115,27 +115,27 @@ class printGeneric extends ipHostPlugin
               'macAddress', FALSE
             )
           ),
-        ),
-      ),
-      'windows' => array(
+        ],
+      ],
+      'windows' => [
         'name'      => _('Windows paths'),
         'icon'      => 'geticon.php?context=devices&icon=computer-windows&size=16',
-        'attrs'     => array(
-          new StringAttribute (
+        'attrs'     => [
+          new StringAttribute(
             _('Inf file'), _('Path to windows inf file for this printer'),
             'fdPrinterWindowsInfFile', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Driver directory'), _('Path to directory that contains windows drivers for this printer'),
             'fdPrinterWindowsDriverDir', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Driver name'), _('Windows name of the printer driver'),
             'fdPrinterWindowsDriverName', FALSE
           ),
-        ),
-      ),
-    );
+        ],
+      ],
+    ];
   }
 }
 ?>
diff --git a/systems/admin/systems/class_serverGeneric.inc b/systems/admin/systems/class_serverGeneric.inc
index e30a5031fecb29bbc0c94273e560302e2de88f36..120f0ab8b8161492ddd7d3c745aa3fdc32cf216b 100644
--- a/systems/admin/systems/class_serverGeneric.inc
+++ b/systems/admin/systems/class_serverGeneric.inc
@@ -20,7 +20,7 @@
 
 class serverGeneric extends workstationGeneric
 {
-  var $objectclasses = array('fdServer', 'ieee802Device');
+  var $objectclasses = ['fdServer', 'ieee802Device'];
 
   static function getAttributesInfo ($word = NULL, $rdn = NULL)
   {
@@ -33,24 +33,24 @@ class serverGeneric extends workstationGeneric
     return parent::getAttributesInfo($word, $rdn);
   }
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Server'),
       'plDescription' => _('Server information'),
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array(
-        'server' => array(
+      'plObjectType'  => [
+        'server' => [
           'name'        => _('Server'),
           'description' => _('Server'),
           'filter'      => 'objectClass=fdServer',
           'icon'        => 'geticon.php?context=devices&icon=server&size=16',
           'ou'          => get_ou('serverRDN'),
           'tabClass'    => 'servtabs',
-        )
-      ),
+        ]
+      ],
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 }
 ?>
diff --git a/systems/admin/systems/class_serverService.inc b/systems/admin/systems/class_serverService.inc
index 7ddfc5f0c0f4aaaeb74516748ac996ceaf5f2748..6d460d4cb913be9ece65b8e91fc3e888a37d6726 100644
--- a/systems/admin/systems/class_serverService.inc
+++ b/systems/admin/systems/class_serverService.inc
@@ -21,12 +21,12 @@
 
 class ServerService extends simpleManagement
 {
-  static public $actionStatus = array(
+  static public $actionStatus = [
     'start'   => 'running',
     'stop'    => 'stopped',
     'restart' => 'running',
     'status'  => '',
-  );
+  ];
 
   protected $departmentBrowser      = FALSE;
   protected $departmentRootVisible  = FALSE;
@@ -39,7 +39,7 @@ class ServerService extends simpleManagement
   var $skipFooter       = TRUE;
   var $skipHeader       = TRUE;
   var $skipCpHandler    = TRUE;
-  var $plugins          = array();
+  var $plugins          = [];
   var $current          = "";
   var $dialog           = FALSE;
   var $read_only        = FALSE;
@@ -55,18 +55,18 @@ class ServerService extends simpleManagement
   var $is_account;
 
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Services'),
       'plDescription' => _('Server services'),
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array('server'),
+      'plObjectType'  => ['server'],
       'plPrority'     => 5,
       'plSubTabs'     => 'SERVERSERVICE',
 
-      'plProvidedAcls'  => array()
-    );
+      'plProvidedAcls'  => []
+    ];
   }
 
   function __construct ($dn, $object, $parent = NULL)
@@ -138,9 +138,9 @@ class ServerService extends simpleManagement
     $this->updateActionMenu();
   }
 
-  function updateActionMenu()
+  function updateActionMenu ()
   {
-    $this->headpage->xmlData['actionmenu']['action'][0]['action'] = array();
+    $this->headpage->xmlData['actionmenu']['action'][0]['action'] = [];
     $available_services = $this->getAllUnusedServices();
     foreach ($available_services as $class => $label) {
       $icon = 'geticon.php?context=actions&icon=document-new&size=16';
@@ -148,18 +148,18 @@ class ServerService extends simpleManagement
       if (isset($infos['plIcon'])) {
         $icon = $infos['plIcon'];
       }
-      $this->headpage->xmlData['actionmenu']['action'][0]['action'][] = array(
+      $this->headpage->xmlData['actionmenu']['action'][0]['action'][] = [
         'name' => 'new_'.$class,
         'type' => 'entry',
         'image' => $icon,
         'label' => $label,
-      );
+      ];
     }
   }
 
   /*! \brief    Filter extra POST and GET variables for this plugin.
    */
-  function detectPostActions()
+  function detectPostActions ()
   {
     $action = parent::detectPostActions();
     if (isset($_POST['SaveService'])) {
@@ -173,7 +173,7 @@ class ServerService extends simpleManagement
   /*! \brief  Edit an existing service here.
    *          Somebody clicked on the paper and pencil icon.
    */
-  function editEntry($action, array $target, array $all)
+  function editEntry ($action, array $target, array $all)
   {
     $s_entry = array_pop($target);
     if ($this->plugins[$s_entry]->acl_is_readable("")) {
@@ -187,7 +187,7 @@ class ServerService extends simpleManagement
   /*! \brief  Editing an object was caneled.
    *          Close dialogs/tabs and remove locks.
    */
-  protected function cancelEdit()
+  protected function cancelEdit ()
   {
     if (($this->backup == NULL) && $this->current) {
       $this->plugins[$this->current] = new $this->current($this->dn, $this);
@@ -205,7 +205,7 @@ class ServerService extends simpleManagement
 
   /*! \brief  Let the user create a new service
    */
-  function newService($action = '')
+  function newService ($action = '')
   {
     $this->closeDialogs();
     $serv = preg_replace('/^new_/', '', $action);
@@ -217,7 +217,7 @@ class ServerService extends simpleManagement
 
   /*! \brief  Save the currently edited service.
    */
-  function saveService()
+  function saveService ()
   {
     $this->dialogObject->save_object();
     $msgs = $this->dialogObject->check();
@@ -236,7 +236,7 @@ class ServerService extends simpleManagement
   /*!\brief   Close all opened dialogs
    *          And reset "dialog open" flags to display bottom buttons again.
    */
-  function closeDialogs()
+  function closeDialogs ()
   {
     parent::closeDialogs();
     $this->dialog = FALSE;
@@ -247,7 +247,7 @@ class ServerService extends simpleManagement
 
   /*! \brief    Remove the selected service(s)
    */
-  protected function removeService($action, array $target)
+  protected function removeService ($action, array $target)
   {
     foreach ($target as $s_entry) {
       $new_obj = new $s_entry($this->dn, $this);
@@ -263,7 +263,7 @@ class ServerService extends simpleManagement
     }
   }
 
-  function renderList()
+  function renderList ()
   {
     /* Save services in session, will be used by filterServerService when updating list */
     session::set('ServerService', $this->plugins);
@@ -272,7 +272,7 @@ class ServerService extends simpleManagement
 
   function updateServicesVars ($service)
   {
-    foreach (array('cn','dn') as $var) {
+    foreach (['cn','dn'] as $var) {
       if (isset($this->$var)) {
         $this->plugins[$service]->$var = $this->$var;
       }
@@ -281,7 +281,7 @@ class ServerService extends simpleManagement
 
   /*! \brief    Updates the status for a list of services.
    */
-  function updateServiceStatus($action, array $target)
+  function updateServiceStatus ($action, array $target)
   {
     /* Skip if this is a new server */
     if ($this->dn == 'new') {
@@ -304,7 +304,7 @@ class ServerService extends simpleManagement
   /*! \brief    Updates the status of a service and
    *             calls an external hook if specified in fusiondirectory.conf
    */
-  private function updateSingleServiceStatus($action, $service)
+  private function updateSingleServiceStatus ($action, $service)
   {
     if ($this->plugins[$service]->is_account) {
       $this->updateServicesVars($service);
@@ -328,7 +328,7 @@ class ServerService extends simpleManagement
           $target = $target[0];
         }
         if ($action == 'status') {
-          $res = $s_daemon->append_call('Service.is_running', $target, array('args' => array($service)));
+          $res = $s_daemon->append_call('Service.is_running', $target, ['args' => [$service]]);
 
           if ($s_daemon->is_error()) {
             msg_dialog::display(
@@ -339,7 +339,7 @@ class ServerService extends simpleManagement
             $this->plugins[$service]->setStatus($res == 'yes' ? 'running' : 'stopped');
           }
         } else {
-          $res = $s_daemon->append_call('Service.manage', $target, array('args' => array($service, $action)));
+          $res = $s_daemon->append_call('Service.manage', $target, ['args' => [$service, $action]]);
 
           if ($s_daemon->is_error()) {
             msg_dialog::display(
@@ -358,9 +358,9 @@ class ServerService extends simpleManagement
   /*! \brief   Returns a list of all used services
    *            CLASSNAME => _($this->plugins[*]->DisplayName);
    */
-  function getAllUsedServices()
+  function getAllUsedServices ()
   {
-    $ret = array();
+    $ret = [];
     foreach ($this->plugins as $name => $obj) {
       if ($obj->is_account) {
         if (isset($obj->DisplayName)) {
@@ -375,10 +375,10 @@ class ServerService extends simpleManagement
 
   /*! \brief    Returns a list of all unused services.
    */
-  function getAllUnusedServices()
+  function getAllUnusedServices ()
   {
     $tmp = $this->getAllUsedServices();
-    $pool_of_ocs = array();
+    $pool_of_ocs = [];
     foreach ($tmp as $name => $value) {
       $pool_of_ocs[] = get_class($this->plugins[$name]);
       if (isset($this->plugins[$name]->conflicts)) {
@@ -386,14 +386,14 @@ class ServerService extends simpleManagement
       }
     }
 
-    $ret = array();
+    $ret = [];
     foreach ($this->plugins as $name => $obj) {
       if (!$obj->acl_is_createable()) {
         continue;
       }
 
       /* Skip all pluigns that will lead into conflicts */
-      $conflicts = array();
+      $conflicts = [];
       if (isset($obj->conflicts)) {
         $conflicts = $obj->conflicts;
       }
@@ -413,23 +413,23 @@ class ServerService extends simpleManagement
 
   /*! \brief    No checks here.
    */
-  function check()
+  function check ()
   {
-    return array();
+    return [];
   }
 
   /*! \brief    Keep posted form values in opened dialogs
    */
-  function save_object()
+  function save_object ()
   {
     // save_object of the dialog is called in management::execute
   }
 
   /*! \brief Remove all active services
    */
-  function remove($fulldelete = FALSE)
+  function remove ($fulldelete = FALSE)
   {
-    $errors = array();
+    $errors = [];
     foreach ($this->plugins as $name => $obj) {
       $this->updateServicesVars($name);
       if ($this->plugins[$name]->initially_was_account) {
@@ -444,9 +444,9 @@ class ServerService extends simpleManagement
 
   /*! \brief    Save all active services
    */
-  function save()
+  function save ()
   {
-    $errors = array();
+    $errors = [];
     foreach ($this->plugins as $name => $obj) {
       $this->updateServicesVars($name);
 
@@ -464,7 +464,7 @@ class ServerService extends simpleManagement
 
   /*! \brief    Prepare active services to be copied.
    */
-  function resetCopyInfos()
+  function resetCopyInfos ()
   {
     $this->dn = 'new';
     foreach ($this->plugins as &$plugin) {
@@ -475,7 +475,7 @@ class ServerService extends simpleManagement
 
   /*! \brief    Forward plugin acls
    */
-  function set_acl_base($base)
+  function set_acl_base ($base)
   {
     $this->acl_base = $base;
     foreach ($this->plugins as $name => $obj) {
@@ -485,7 +485,7 @@ class ServerService extends simpleManagement
 
   /*! \brief    Forward plugin acls
    */
-  function set_acl_category($category)
+  function set_acl_category ($category)
   {
     $this->acl_category = $category;
     foreach ($this->plugins as $name => $obj) {
@@ -501,12 +501,12 @@ class ServerService extends simpleManagement
     unset($plugin);
   }
 
-  function getRequiredAttributes()
+  function getRequiredAttributes ()
   {
-    return array();
+    return [];
   }
 
-  function adapt_from_template($attrs, $skip = array())
+  function adapt_from_template ($attrs, $skip = [])
   {
     foreach ($this->plugins as &$plugin) {
       $plugin->adapt_from_template($attrs, $skip);
@@ -518,7 +518,7 @@ class ServerService extends simpleManagement
    *            Used in the filter class for services.
    *             class_filterServerService.inc
    */
-  static function getServiceList()
+  static function getServiceList ()
   {
     return session::get('ServerService');
   }
@@ -526,7 +526,7 @@ class ServerService extends simpleManagement
   /*! \brief    Returns an image for the service status.
    *            Used in the service list class.
    */
-  static function filterServiceStatus($a, $b, $c, $d)
+  static function filterServiceStatus ($a, $b, $c, $d)
   {
     $img = '';
     if (isset($d['0'])) {
diff --git a/systems/admin/systems/class_systemImport.inc b/systems/admin/systems/class_systemImport.inc
index cd250c04ee435aaf8890059c6fde5321077e6150..62537156df25778e20353d539d011df1fb2619b2 100644
--- a/systems/admin/systems/class_systemImport.inc
+++ b/systems/admin/systems/class_systemImport.inc
@@ -29,15 +29,15 @@ class ImportServerAttribute extends ObjectSelectAttribute
 
 class systemImport extends simplePlugin
 {
-  protected $types = array();
+  protected $types = [];
 
-  static function getAttributesInfo($filter = '')
+  static function getAttributesInfo ($filter = '')
   {
-    return array(
-      'import' => array(
+    return [
+      'import' => [
         'template'  => get_template_path('server_import.tpl', TRUE, dirname(__FILE__)),
         'name'      => _('Import'),
-        'attrs'     => array(
+        'attrs'     => [
           new BaseSelectorAttribute(get_ou('workstationRDN')),
           new ImportServerAttribute(
             _('Server'), _('The server you wish to import hosts from'),
@@ -46,21 +46,21 @@ class systemImport extends simplePlugin
           new SelectAttribute(
             _('Type'), _('Type of objects you wish to import'),
             'type', TRUE,
-            array(), '', NULL
+            [], '', NULL
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Template'), _('Select a template to apply to imported entries'),
             'template_dn', FALSE,
-            array(), '', NULL
+            [], '', NULL
           ),
-          new ButtonAttribute (
+          new ButtonAttribute(
             '', '',
             'import',
             _('Import')
           )
-        ),
-      ),
-    );
+        ],
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -69,7 +69,7 @@ class systemImport extends simplePlugin
     $this->messages = FALSE;
 
     $this->attributesAccess['type']->setSubmitForm('typeChanged');
-    $choices = array();
+    $choices = [];
     foreach ($this->types as $type) {
       $infos = objects::infos($type);
       $choices[$type] = $infos['name'];
@@ -90,32 +90,32 @@ class systemImport extends simplePlugin
     }
     session::global_set("CurrentMainBase", $base);
 
-    $messages = array();
-    $dhcps    = array();
+    $messages = [];
+    $dhcps    = [];
     try {
       $dns    = objects::ls('dnsZone');
     } catch (NonExistingObjectTypeException $e) {
-      $dns    = array();
+      $dns    = [];
     }
     if (!empty($template_dn)) {
       $template = new template($type, $template_dn);
     }
     foreach ($hosts as $host) {
       if (!preg_match('/^([^.]+)\.(.*)$/', $host['id'], $m)) {
-        $messages[$host['id']] = array(sprintf(_('Could not parse %s'), $host['id']));
+        $messages[$host['id']] = [sprintf(_('Could not parse %s'), $host['id'])];
         continue;
       }
       $cn   = $m[1];
       $zone = $m[2];
       if (empty($host['ipAddress'])) {
-        $host['ipAddress'] = array();
+        $host['ipAddress'] = [];
       } elseif (!is_array($host['ipAddress'])) {
-        $host['ipAddress'] = array($host['ipAddress']);
+        $host['ipAddress'] = [$host['ipAddress']];
       }
       if (empty($host['hardwareAddress'])) {
-        $host['hardwareAddress'] = array();
+        $host['hardwareAddress'] = [];
       } elseif (!is_array($host['hardwareAddress'])) {
-        $host['hardwareAddress'] = array($host['hardwareAddress']);
+        $host['hardwareAddress'] = [$host['hardwareAddress']];
       }
 
       if (empty($template_dn)) {
@@ -133,15 +133,15 @@ class systemImport extends simplePlugin
       } else {
         $template->reset();
         // For now we only need to import workstations
-        $values = array(
-          'workstationGeneric' => array(
+        $values = [
+          'workstationGeneric' => [
             'base'          => $base,
             'cn'            => $cn,
             'description'   => $host['description'],
             'ipHostNumber'  => $host['ipAddress'],
             'macAddress'    => $host['hardwareAddress'],
-          )
-        );
+          ]
+        ];
         $error = $template->deserialize($values);
         if ($error !== TRUE) {
           $messages[$host['id']] = $error;
@@ -157,7 +157,7 @@ class systemImport extends simplePlugin
           list(, $dhcpParentNodes) = dhcpSystem::getDhcpParentNodes();
           foreach ($dhcpParentNodes as $dn => $attrs) {
             if (isset($attrs['dhcpNetMask'])) {
-              $dhcps[$dn] = array($attrs['cn'][0], normalize_netmask($attrs['dhcpNetMask'][0]));
+              $dhcps[$dn] = [$attrs['cn'][0], normalize_netmask($attrs['dhcpNetMask'][0])];
             }
           }
         }
@@ -168,14 +168,14 @@ class systemImport extends simplePlugin
             foreach ($baseObject->ipHostNumber as $ipHostNumber) {
               if (tests::is_in_network($ip, $mask, $ipHostNumber)) {
                 $tabObject->by_object['dhcpSystem']->attributesAccess['dhcpHosts']->addPostValue(
-                  array($dn, $baseObject->macAddress, $ipHostNumber, '')
+                  [$dn, $baseObject->macAddress, $ipHostNumber, '']
                 );
                 $tabObject->by_object['dhcpSystem']->attributesAccess['dhcpHosts']->applyPostValue();
               }
             }
           }
           if (empty($tabObject->by_object['dhcpSystem']->dhcpHosts)) {
-            $messages[$host['id']] = array(sprintf(_('No DHCP server found for IPs %s'), implode(',', $baseObject->ipHostNumber)));
+            $messages[$host['id']] = [sprintf(_('No DHCP server found for IPs %s'), implode(',', $baseObject->ipHostNumber))];
             continue;
           }
         }
@@ -186,15 +186,15 @@ class systemImport extends simplePlugin
         foreach ($dns as $dn => $value) {
           if (preg_match('/^'.$zone.'\.?$/', $value)) {
             $tabObject->by_object['dnsHost']->is_account  = TRUE;
-            $tabObject->by_object['dnsHost']->fdDNSZoneDn = array($dn);
+            $tabObject->by_object['dnsHost']->fdDNSZoneDn = [$dn];
             foreach ($baseObject->ipHostNumber as $ipHostNumber) {
-              $tabObject->by_object['dnsHost']->addRecord($dn, array($cn, 'aRecord', $ipHostNumber, ''));
+              $tabObject->by_object['dnsHost']->addRecord($dn, [$cn, 'aRecord', $ipHostNumber, '']);
             }
             break;
           }
         }
         if ($tabObject->by_object['dnsHost']->is_account == FALSE) {
-          $messages[$host['id']] = array(sprintf(_('No DNS server found for zone %s'), $zone));
+          $messages[$host['id']] = [sprintf(_('No DNS server found for zone %s'), $zone)];
           continue;
         }
       }
@@ -225,20 +225,20 @@ class systemImport extends simplePlugin
     return $messages;
   }
 
-  function typeChanged()
+  function typeChanged ()
   {
     $templates = objects::getTemplates($this->type);
     $this->attributesAccess['template_dn']->setChoices(array_keys($templates), array_values($templates));
   }
 
-  function execute()
+  function execute ()
   {
     $smarty = get_smarty();
     $smarty->assign('importResult', $this->messages);
     return parent::execute();
   }
 
-  function save()
+  function save ()
   {
   }
 
@@ -252,14 +252,14 @@ class systemImport extends simplePlugin
     $this->messages = $this->massImport($hosts, $this->type, $this->template_dn, $this->base);
   }
 
-  protected function getHosts($server_dn)
+  protected function getHosts ($server_dn)
   {
     die('Not implemented');
   }
 
-  protected function getExtraTabs($server_dn, $host)
+  protected function getExtraTabs ($server_dn, $host)
   {
-    return array();
+    return [];
   }
 }
 ?>
diff --git a/systems/admin/systems/class_systemManagement.inc b/systems/admin/systems/class_systemManagement.inc
index 43936f54d44242132422f862a0247bc453350c20..9b94b286ec1f8d8ebe0f1efcdd5149ebb47cc0e6 100644
--- a/systems/admin/systems/class_systemManagement.inc
+++ b/systems/admin/systems/class_systemManagement.inc
@@ -21,7 +21,7 @@
 
 class systemManagement extends simpleManagement
 {
-  protected $objectTypes  = array('server','workstation','terminal','printer','component','phone','mobilePhone');
+  protected $objectTypes  = ['server','workstation','terminal','printer','component','phone','mobilePhone'];
 
   protected $departmentBrowser      = TRUE;
   protected $departmentRootVisible  = FALSE;
@@ -31,28 +31,28 @@ class systemManagement extends simpleManagement
   protected $autoFilter       = TRUE;
   protected $autoActions      = TRUE;
 
-  protected $autoFilterAttributes = array('dn', 'cn', 'description', 'ipHostNumber', 'macAddress', 'gotoMode', 'FAIstate', 'FAIclass');
+  protected $autoFilterAttributes = ['dn', 'cn', 'description', 'ipHostNumber', 'macAddress', 'gotoMode', 'FAIstate', 'FAIclass'];
 
   public static $skipTemplates = FALSE;
 
   protected $siActive = FALSE;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Systems'),
       'plDescription' => _('Systems Management'),
       'plIcon'        => 'geticon.php?context=devices&icon=computer&size=48',
       'plSelfModify'  => FALSE,
-      'plSection'     => array('systems' => array('name' => _('Systems'), 'priority' => 10)),
+      'plSection'     => ['systems' => ['name' => _('Systems'), 'priority' => 10]],
       'plPriority'    => 0,
-      'plManages'     => array('server','workstation','terminal','printer','component','phone','mobilePhone'),
+      'plManages'     => ['server','workstation','terminal','printer','component','phone','mobilePhone'],
 
-      'plProvidedAcls'  => array()
-    );
+      'plProvidedAcls'  => []
+    ];
   }
 
-  function __construct()
+  function __construct ()
   {
     $this->listXMLPath    = get_template_path('system-list.xml', TRUE, dirname(__FILE__));
 
@@ -74,24 +74,24 @@ class systemManagement extends simpleManagement
 
     // Register Daemon Events
     if ($this->siActive) {
-      $this->headpage->xmlData['actionmenu']['action'][2]['action'] = array();
-      $this->headpage->xmlData['actionmenu']['action'][3]['action'] = array();
+      $this->headpage->xmlData['actionmenu']['action'][2]['action'] = [];
+      $this->headpage->xmlData['actionmenu']['action'][3]['action'] = [];
       $events = argonautEventTypes::get_event_types();
       foreach ($events as $name => $data) {
         $this->registerAction('T_'.$name, 'handleEvent');
-        $this->headpage->xmlData['actionmenu']['action'][2]['action'][] = array(
+        $this->headpage->xmlData['actionmenu']['action'][2]['action'][] = [
         'name' => 'T_'.$name,
         'type' => 'entry',
         'image' => $data['img'],
         'label' => $data['name'],
-        );
+        ];
         $this->registerAction('S_'.$name, 'handleEvent');
-        $this->headpage->xmlData['actionmenu']['action'][3]['action'][] = array(
+        $this->headpage->xmlData['actionmenu']['action'][3]['action'][] = [
         'name' => 'S_'.$name,
         'type' => 'entry',
         'image' => $data['img'],
         'label' => $data['name'],
-        );
+        ];
       }
       $this->registerAction('ping', 'pingSystems');
     } else {
@@ -113,7 +113,7 @@ class systemManagement extends simpleManagement
   /*! \brief    Handle Argonaut events
    *            All schedules and triggered events are handled here.
    */
-  function handleEvent($action, array $target)
+  function handleEvent ($action, array $target)
   {
     if (!$this->siActive) {
       return;
@@ -130,7 +130,7 @@ class systemManagement extends simpleManagement
     $event = preg_replace('/^[TS]_/', '', $action);
 
     // Now send FAI/Argonaut events here.
-    $mac = array();
+    $mac = [];
 
     // Collect target mac addresses
     foreach ($target as $dn) {
@@ -151,12 +151,12 @@ class systemManagement extends simpleManagement
     /* Skip installation or update trigerred events,
      *  if this entry is currently processing.
      */
-    if ($triggered && in_array($event, array('reinstall','update'))) {
+    if ($triggered && in_array($event, ['reinstall','update'])) {
       foreach ($mac as $key => $mac_address) {
         if ($o_queue->is_currently_installing($mac_address)) {
           msg_dialog::display(_('Action canceled'), sprintf(_('System %s is currently installing'), $dn), ERROR_DIALOG);
           unset($mac[$key]);
-          logging::log('security', 'systems/'.get_class($this), '', array(), 'Skip adding "argonautAction::'.$event.'" for mac "'.$mac_address.'", there is already a job in progress.');
+          logging::log('security', 'systems/'.get_class($this), '', [], 'Skip adding "argonautAction::'.$event.'" for mac "'.$mac_address.'", there is already a job in progress.');
         }
       }
     }
@@ -191,14 +191,14 @@ class systemManagement extends simpleManagement
 
   /*! \brief Ping those systems and show the result in the list
    */
-  function pingSystems($action, array $target)
+  function pingSystems ($action, array $target)
   {
     if (!$this->siActive) {
       return;
     }
 
     $headpage = $this->getHeadpage();
-    $macs     = array();
+    $macs     = [];
 
     // Collect target mac addresses
     foreach ($target as $dn) {
@@ -216,7 +216,7 @@ class systemManagement extends simpleManagement
 
     $o_queue  = new supportDaemon();
 
-    $res = $o_queue->append_call('ping', array_values($macs), array('fullresult' => 1));
+    $res = $o_queue->append_call('ping', array_values($macs), ['fullresult' => 1]);
     if ($o_queue->is_error()) {
       msg_dialog::display(_('Infrastructure service'), msgPool::siError($o_queue->get_error()), ERROR_DIALOG);
     } else {
@@ -243,7 +243,7 @@ class systemManagement extends simpleManagement
   /*! \brief  Save event dialogs.
    *          And append the new Argonaut event.
    */
-  function saveEventDialog()
+  function saveEventDialog ()
   {
     $this->dialogObject->save_object();
     $msgs = $this->dialogObject->check();
@@ -264,7 +264,7 @@ class systemManagement extends simpleManagement
   /*! \brief  Detects actions/events send by the ui
    *           and the corresponding targets.
    */
-  function detectPostActions()
+  function detectPostActions ()
   {
     $action = parent::detectPostActions();
     if (isset($_POST['save_event_dialog'])) {
@@ -275,7 +275,7 @@ class systemManagement extends simpleManagement
     return $action;
   }
 
-  function handleSubAction($all)
+  function handleSubAction ($all)
   {
     if (parent::handleSubAction($all)) {
       return TRUE;
@@ -283,7 +283,7 @@ class systemManagement extends simpleManagement
       $service = $m[1];
       if (isset($this->tabObject->by_object['ServerService'])) {
         $this->tabObject->current = 'ServerService';
-        $all = array('action'  => 'edit', 'targets' => array($service));
+        $all = ['action'  => 'edit', 'targets' => [$service]];
         $this->tabObject->by_object['ServerService']->editEntry($all['action'], $all['targets'], $all);
       } else {
         trigger_error("Unknown tab: ServerService");
@@ -293,7 +293,7 @@ class systemManagement extends simpleManagement
     return FALSE;
   }
 
-  static function systemRelease($a, $b, $c, $objectclasses = NULL, $class = NULL)
+  static function systemRelease ($a, $b, $c, $objectclasses = NULL, $class = NULL)
   {
     global $config;
 
@@ -319,7 +319,7 @@ class systemManagement extends simpleManagement
     // Load information if needed
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(&(objectClass=gosaGroupOfNames)(FAIclass=*)(member='.$b.'))', array('FAIclass','cn'));
+    $ldap->search('(&(objectClass=gosaGroupOfNames)(FAIclass=*)(member='.$b.'))', ['FAIclass','cn']);
     while ($attrs = $ldap->fetch()) {
       $rel = htmlentities(preg_replace('/^.*:/', '', $attrs['FAIclass'][0]), ENT_COMPAT, 'UTF-8');
       $sys = htmlentities(sprintf(_('Inherited from %s'), $attrs['cn'][0]), ENT_COMPAT, 'UTF-8');
@@ -332,10 +332,10 @@ class systemManagement extends simpleManagement
     return '&nbsp;';
   }
 
-  static function listServices($row, $dn, $attrs)
+  static function listServices ($row, $dn, $attrs)
   {
     global $config;
-    static $services = array();
+    static $services = [];
     if (empty($services)) {
       foreach ($config->data['TABS']['SERVERSERVICE'] as $plug) {
         if (class_available($plug['CLASS'])) {
@@ -347,7 +347,7 @@ class systemManagement extends simpleManagement
     }
 
     // Load information if needed
-    $services_imgs = array();
+    $services_imgs = [];
     if (!empty($attrs)) {
       foreach ($services as $class => $service) {
         if ($service->is_this_account($attrs)) {
@@ -357,7 +357,7 @@ class systemManagement extends simpleManagement
                                'alt="'.$infos['plShortName'].'" title="'.$infos['plShortName'].'" '.
                                'name="listing_edit_service_'.$class.'_'.$row.'"/>';
           } else {
-            @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $infos['plShortName']." ($class)", "No icon for");
+            @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $infos['plShortName']." ($class)", "No icon for");
           }
         }
       }
diff --git a/systems/admin/systems/class_terminalGeneric.inc b/systems/admin/systems/class_terminalGeneric.inc
index f010b304d3d94ae6a5668c3d2268213459951b8c..5816277218579b287c1e6f1c69df504d509a1638 100644
--- a/systems/admin/systems/class_terminalGeneric.inc
+++ b/systems/admin/systems/class_terminalGeneric.inc
@@ -20,7 +20,7 @@
 
 class terminalGeneric extends workstationGeneric
 {
-  var $objectclasses = array('fdTerminal', 'ieee802Device');
+  var $objectclasses = ['fdTerminal', 'ieee802Device'];
 
   /*!
    *  \brief The main function : information about attributes
@@ -37,24 +37,24 @@ class terminalGeneric extends workstationGeneric
   }
 
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Terminal'),
       'plDescription' => _('Terminal information'),
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array('terminal' =>
-        array(
+      'plObjectType'  => ['terminal' =>
+        [
           'name'        => _('Terminal'),
           'description' => _('Terminal'),
           'filter'      => 'objectClass=fdTerminal',
           'icon'        => 'geticon.php?context=devices&icon=terminal&size=16',
           'ou'          => get_ou('terminalRDN'),
-        )
-      ),
+        ]
+      ],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 }
 
diff --git a/systems/admin/systems/class_terminalStartup.inc b/systems/admin/systems/class_terminalStartup.inc
index 364125aeaf1bc8b783cd85413c5638ec6061ac4e..3d6a9067c535920057e71d4a7f8afa8f24649612 100644
--- a/systems/admin/systems/class_terminalStartup.inc
+++ b/systems/admin/systems/class_terminalStartup.inc
@@ -21,23 +21,23 @@
 
 class terminalStartup extends simplePlugin
 {
-  var $objectclasses = array('fdTerminalStartup');
+  var $objectclasses = ['fdTerminalStartup'];
 
-  var $inheritance = array('gosaGroupOfNames' => 'member');
+  var $inheritance = ['gosaGroupOfNames' => 'member'];
 
   /* Return plugin information */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Startup'),
       'plDescription'   => _('Terminal startup'),
       'plSelfModify'    => FALSE,
       'plPriority'      => 2,
-      'plCategory'      => array('terminal'),
-      'plObjectType'    => array('terminal', 'ogroup-dynamic'),
+      'plCategory'      => ['terminal'],
+      'plObjectType'    => ['terminal', 'ogroup-dynamic'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   /*!
@@ -45,10 +45,10 @@ class terminalStartup extends simplePlugin
    */
   static function getAttributesInfo ()
   {
-    return array(
-      'startup' => array (
+    return [
+      'startup' => [
         'name' => _('Startup parameters'),
-        'attrs' => array (
+        'attrs' => [
           new SelectAttribute(
             _('Root server'), _('The root server the terminal should be using'),
             'gotoTerminalPath', FALSE
@@ -57,27 +57,27 @@ class terminalStartup extends simplePlugin
             _('Swap server'), _('The swap server the terminal should be using'),
             'gotoSwapServer', FALSE
           ),
-        )
-      ),
-      'remote_desktop' => array(
+        ]
+      ],
+      'remote_desktop' => [
         'name'  => _('Remote desktop'),
         'icon'  => 'geticon.php?context=devices&icon=server&size=16',
-        'attrs' => array(
+        'attrs' => [
           new SelectAttribute(
             _('Connect method'), _('Connect method'),
             'gotoXMethod', FALSE,
-            array('XDMCP', 'LDM', 'SHELL', 'TELNET', 'RDP'),
+            ['XDMCP', 'LDM', 'SHELL', 'TELNET', 'RDP'],
             '',
-            array(_('XDMCP'), _('LDM'), _('Shell'), _('Telnet'), _('Windows RDP'))
+            [_('XDMCP'), _('LDM'), _('Shell'), _('Telnet'), _('Windows RDP')]
           ),
           new SelectAttribute(
             _('Terminal server'), _('Terminal server'),
             'gotoXdmcpServer', FALSE,
-            array()
+            []
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -87,9 +87,9 @@ class terminalStartup extends simplePlugin
     $this->attributesAccess['gotoXMethod']->setSubmitForm('updateServerList');
 
     /* Get NFS and NBD server lists */
-    $nfs = array();
-    $nbd = array();
-    $shareServers = objects::ls('server', array('cn' => 1, 'goExportEntry' => '*'), NULL, '(&(objectClass=goShareServer)(goExportEntry=*))');
+    $nfs = [];
+    $nbd = [];
+    $shareServers = objects::ls('server', ['cn' => 1, 'goExportEntry' => '*'], NULL, '(&(objectClass=goShareServer)(goExportEntry=*))');
     foreach ($shareServers as $server) {
       foreach ($server['goExportEntry'] as $entry) {
         $parts = explode('|', $entry);
@@ -125,7 +125,7 @@ class terminalStartup extends simplePlugin
   }
 
   /*! \brief Create a list of useable servers for the currently selected protocol */
-  function updateServerList()
+  function updateServerList ()
   {
     $servers = objects::ls('server', NULL, NULL, '(&(objectClass=goTerminalServer)(gotoSessionType='.strtoupper($this->gotoXMethod).'))');
     $this->attributesAccess['gotoXdmcpServer']->setChoices($servers);
diff --git a/systems/admin/systems/class_workstationGeneric.inc b/systems/admin/systems/class_workstationGeneric.inc
index e292998400e6c56cf64d911bdbdf3e02187330d0..6ff60d604acd5b937e367c11685392e34714cdaf 100644
--- a/systems/admin/systems/class_workstationGeneric.inc
+++ b/systems/admin/systems/class_workstationGeneric.inc
@@ -23,26 +23,26 @@ class workstationGeneric extends ipHostPlugin
 {
   var $mainTab = TRUE;
 
-  var $objectclasses = array('fdWorkstation', 'ieee802Device');
+  var $objectclasses = ['fdWorkstation', 'ieee802Device'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Workstation'),
       'plDescription' => _('Workstation information'),
       'plSelfModify'  => FALSE,
-      'plObjectType'  => array('workstation' =>
-        array(
+      'plObjectType'  => ['workstation' =>
+        [
           'name'        => _('Workstation'),
           'description' => _('Workstation'),
           'filter'      => 'objectClass=fdWorkstation',
           'ou'          => get_ou('workstationRDN'),
           'icon'        => 'geticon.php?context=devices&icon=computer&size=16',
           'mainAttr'    => 'cn',
-        )
-      ),
+        ]
+      ],
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ($word = NULL, $rdn = NULL)
@@ -53,27 +53,27 @@ class workstationGeneric extends ipHostPlugin
     if ($rdn === NULL) {
       $rdn = get_ou('workstationRDN');
     }
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Properties'),
-        'attrs' => array(
+        'attrs' => [
           new BaseSelectorAttribute($rdn),
-          new HostNameAttribute (
+          new HostNameAttribute(
             _('Name'),
             sprintf(_('The name of the %s'), $word),
             'cn', TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Description'),
             sprintf(_('A short description of the %s'), $word),
             'description', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Location'),
             sprintf(_('The location of the %s'), $word),
             'l', FALSE
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             sprintf(_('Lock this %s'), $word),
             sprintf(_('This will prevent the %s from being reinstalled'), $word),
             'fdMode',
@@ -83,12 +83,12 @@ class workstationGeneric extends ipHostPlugin
             'locked',
             'unlocked'
           ),
-        )
-      ),
-      'network' => array(
+        ]
+      ],
+      'network' => [
         'name'      => _('Network settings'),
         'icon'      => 'geticon.php?context=categories&icon=applications-internet&size=16',
-        'attrs'     => array(
+        'attrs'     => [
           new SetAttribute(
             new IPAttribute(
               _('IP address'), _('IP addresses this system uses (v4 or v6)'),
@@ -101,9 +101,9 @@ class workstationGeneric extends ipHostPlugin
               'macAddress', FALSE
             )
           ),
-        ),
-      ),
-    );
+        ],
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -113,7 +113,7 @@ class workstationGeneric extends ipHostPlugin
     $this->attributesAccess['cn']->setUnique(TRUE);
   }
 
-  protected function post_remove()
+  protected function post_remove ()
   {
     /* Clean queue from entries with this mac */
     if (class_available('supportDaemon')) {
diff --git a/systems/admin/systems/services/ldap/class_serviceLDAP.inc b/systems/admin/systems/services/ldap/class_serviceLDAP.inc
index bf29606ef9f6f1aa2793dc2856cf5564b9c1e731..70073e8abd93f19cc271f7596056cef6e0fc9e34 100644
--- a/systems/admin/systems/services/ldap/class_serviceLDAP.inc
+++ b/systems/admin/systems/services/ldap/class_serviceLDAP.inc
@@ -23,82 +23,82 @@
 class serviceLDAP extends simpleService
 {
   /* This plugin only writes its objectClass */
-  var $objectclasses    = array('goLdapServer');
+  var $objectclasses    = ['goLdapServer'];
 
   // The main function : information about attributes
   static function getAttributesInfo ()
   {
     global $config;
-    return array(
+    return [
       // Attributes are grouped by section
-      'main' => array(
+      'main' => [
         'name'  => _('LDAP service'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
-          new StringAttribute (
+        'class' => ['fullwidth'],
+        'attrs' => [
+          new StringAttribute(
             _('LDAP Base'), _('The LDAP base to use for this LDAP server'),
             'goLdapBase', TRUE,
             $config->current['BASE']
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('LDAP URI'), _('The LDAP URI to use in order to contact this LDAP server'),
             'goLdapURI', TRUE,
             'ldap://'._('fill-in-your-servers-dns-name').':389/',
             '',
             '/^ldap[si]?:\/\/([0-9a-z_.-]+|\[[0-9a-f:]+\])(:[0-9]+)?(\/.*)?$/'
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Size limit'), _('Limit the number of record returned'),
             'goLdapSizeLimit', FALSE,
             0, FALSE, ''
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Time limit'), _('Time limit for the result to be returned'),
             'goLdapTimeLimit', FALSE,
             0, FALSE, 15
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Deref'), _('Specifies how alias dereferencing is done when performing a search'),
             'goLdapDeref', TRUE,
-            array('never','searching','finding','always'), 'never'
+            ['never','searching','finding','always'], 'never'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('TLS Cert'), _('Filepath to tls certificate'),
             'goLdapTlsCert', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('TLS Key'), _('Filepath to tls key'),
             'goLdapTlsKey', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('TLS CaCert'), _('Filepath to tls ca certificate'),
             'goLdapTlsCaCert', FALSE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('TLS ReqCert'), _('Specifies what checks to perform on server certificates in a TLS session, if any'),
             'goLdapReqCert', TRUE,
-            array('never','allow','try','demand'), 'never'
+            ['never','allow','try','demand'], 'never'
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('TLS CrlCheck'), _('Specifies if the Certificate Revocation List (CRL) of the CA should be used to verify if the server certificates have  not  been  revoked'),
             'goLdapCrlCheck', TRUE,
-            array('none','peer','all'), 'none'
+            ['none','peer','all'], 'none'
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('LDAP service'),
       'plDescription' => _('LDAP').' ('._('Services').')',
       'plIcon'        => 'geticon.php?context=applications&icon=ldap&size=16',
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 }
 ?>
diff --git a/systems/admin/systems/services/shares/class_serviceShare.inc b/systems/admin/systems/services/shares/class_serviceShare.inc
index c415de979735935c47fad74fcd531e4f477fb2f7..acb5b4c7f875c5c0764700010933a6ccb55daf90 100644
--- a/systems/admin/systems/services/shares/class_serviceShare.inc
+++ b/systems/admin/systems/services/shares/class_serviceShare.inc
@@ -21,32 +21,32 @@
 
 class serviceShare extends simpleService
 {
-  var $objectclasses = array('goShareServer');
+  var $objectclasses = ['goShareServer'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Share service'),
       'plDescription' => _('Share service').' ('._('Services').')',
       'plIcon'        => 'geticon.php?context=places&icon=folder-network&size=16',
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'template'  => get_template_path('service_share.tpl', TRUE, dirname(__FILE__)),
         'name'      => _('Shares'),
-        'class'     => array('fullwidth'),
-        'attrs'     => array(
+        'class'     => ['fullwidth'],
+        'attrs'     => [
           new OrderedArrayAttribute(
             new PipeSeparatedCompositeAttribute(
               _('Shares this server hosts'),
               'goExportEntry',
-              array(
+              [
                 new StringAttribute(
                   _('Name'), _('Name of this share'),
                   'shareName', TRUE
@@ -58,11 +58,11 @@ class serviceShare extends simpleService
                 new SelectAttribute(
                   _('Type'), _('Type of share'),
                   'shareType', TRUE,
-                  array('CIFS','NBD','NCP','NFS','netatalk','samba','local')
+                  ['CIFS','NBD','NCP','NFS','netatalk','samba','local']
                 ),
                 new SelectAttribute(
                   _('Codepage'), _('Codepage for this share'),
-                  'shareCodepage', TRUE, array()
+                  'shareCodepage', TRUE, []
                 ),
                 new StringAttribute(
                   _('Path / Volume'), _('Path or volume concerned by this share'),
@@ -71,17 +71,17 @@ class serviceShare extends simpleService
                 new StringAttribute(
                   _('Option'), _('Special option(s) for this share'), 'shareOption'
                 ),
-              )
+              ]
             ),
             // no order
             FALSE,
-            array(),
+            [],
             // edit button
             TRUE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $parent = NULL)
@@ -95,10 +95,10 @@ class serviceShare extends simpleService
     );
   }
 
-  function getCharsets()
+  function getCharsets ()
   {
     global $config;
-    $charsets = array();
+    $charsets = [];
 
     $configEncodings = $config->get_cfg_value('encodings', NULL);
     if ($configEncodings === NULL) {
diff --git a/systems/admin/systems/services/terminal/class_serviceTerminal.inc b/systems/admin/systems/services/terminal/class_serviceTerminal.inc
index df98e0ea2b95d771efcb9b7265deb9b9d7118669..13a15ab03fcae1c10324e01bae1e054ed9667513 100644
--- a/systems/admin/systems/services/terminal/class_serviceTerminal.inc
+++ b/systems/admin/systems/services/terminal/class_serviceTerminal.inc
@@ -21,26 +21,26 @@
 
 class serviceTerminal extends simpleService
 {
-  var $objectclasses = array('goTerminalServer');
+  var $objectclasses = ['goTerminalServer'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Terminal service'),
       'plDescription' => _('Terminal service').' ('._('Services').')',
       'plIcon'        => 'geticon.php?context=devices&icon=terminal&size=16',
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-      return array (
-      'section1' => array (
+      return  [
+      'section1' => [
         'name'  => _('Terminal service'),
-        'attrs' => array (
-          new BooleanAttribute (
+        'attrs' => [
+          new BooleanAttribute(
             _('Temporary disable login'),
             _('Disables the login on this terminal server'),
             'goXdmcpIsEnabled', FALSE,
@@ -49,19 +49,19 @@ class serviceTerminal extends simpleService
             1,
             0
           ),
-          new SetAttribute (
-            new SelectAttribute (
+          new SetAttribute(
+            new SelectAttribute(
               _('Supported session types'),
               _('The session types supported by this terminal server'),
               'gotoSessionType', FALSE,
-              array('XDMCP', 'LDM', 'SHELL', 'TELNET', 'RDP'),
+              ['XDMCP', 'LDM', 'SHELL', 'TELNET', 'RDP'],
               '',
-              array(_('XDMCP'), _('LDM'), _('Shell'), _('Telnet'), _('Windows RDP'))
+              [_('XDMCP'), _('LDM'), _('Shell'), _('Telnet'), _('Windows RDP')]
             )
           )
-        )
-      )
-    );
+        ]
+      ]
+      ];
   }
 }
 
diff --git a/systems/admin/systems/tabs_server.inc b/systems/admin/systems/tabs_server.inc
index 1e7a4f8148add6bed5a38cea5e923642ca0dd868..47dbfa4220c73a3f3bcd15a838b24a2f644ab594 100644
--- a/systems/admin/systems/tabs_server.inc
+++ b/systems/admin/systems/tabs_server.inc
@@ -21,7 +21,7 @@
 
 class servtabs extends simpleTabs
 {
-  function save()
+  function save ()
   {
     $errors = parent::save();
 
diff --git a/systems/config/systems/class_systemsPluginConfig.inc b/systems/config/systems/class_systemsPluginConfig.inc
index 9680932d65815148dccc1e49f223cf0f477b601a..b2115bda010679508b729d13f16a4616023639c4 100644
--- a/systems/config/systems/class_systemsPluginConfig.inc
+++ b/systems/config/systems/class_systemsPluginConfig.inc
@@ -20,100 +20,100 @@
 
 class systemsPluginConfig extends simplePlugin
 {
-  var $objectclasses = array('fdSystemsPluginConf');
+  var $objectclasses = ['fdSystemsPluginConf'];
 
-  static protected $ipClasses = array();
+  static protected $ipClasses = [];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Systems'),
       'plDescription'   => _('Systems plugin configuration'),
-      'plObjectType'    => array('configuration'),
+      'plObjectType'    => ['configuration'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'rdns' => array(
+    return [
+      'rdns' => [
         'name'  => _('LDAP tree for systems'),
-        'attrs' => array(
-          new StringAttribute (
+        'attrs' => [
+          new StringAttribute(
             _('Systems RDN'), _('Branch in which systems will be stored'),
             'fdSystemRDN', TRUE,
             'ou=systems'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Server RDN'), _('Branch in which servers will be stored'),
             'fdServerRDN', TRUE,
             'ou=servers,ou=systems'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Workstations RDN'), _('Branch in which workstations will be stored'),
             'fdWorkstationRDN', TRUE,
             'ou=workstations,ou=systems'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Terminal RDN'), _('Branch in which terminals will be stored'),
             'fdTerminalRDN', TRUE,
             'ou=terminals,ou=systems'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Printer RDN'), _('Branch in which printers will be stored'),
             'fdPrinterRDN', TRUE,
             'ou=printers,ou=systems'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Component RDN'), _('Branch in which network devices will be stored'),
             'fdComponentRDN', TRUE,
             'ou=netdevices,ou=systems'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Phone RDN'), _('Branch in which phones will be stored'),
             'fdPhoneRDN', TRUE,
             'ou=phones,ou=systems'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Mobile phone RDN'), _('Branch in which mobile phones will be stored'),
             'fdMobilePhoneRDN', TRUE,
             'ou=mobile,ou=systems'
           ),
-        )
-      ),
-      'config' => array(
+        ]
+      ],
+      'config' => [
         'name'  => _('Miscellaneous'),
-        'attrs' => array(
-          new OrderedArrayAttribute (
+        'attrs' => [
+          new OrderedArrayAttribute(
             new CompositeAttribute(
               _('Available encodings for share services'),
               'fdEncodings',
-              array(
-                new StringAttribute (
+              [
+                new StringAttribute(
                   _('Encoding'), _('The encoding code name'),
                   'encoding_code', TRUE, '', '',
                   '/^[^=]+$/'
                 ),
-                new StringAttribute (
+                new StringAttribute(
                   _('Label'), _('The encoding displayed name'),
                   'encoding_label', TRUE, '', '',
                   '/^[^=]+$/'
                 ),
-              ),
+              ],
               '/^([^=]*)=([^=]*)$/',
               '%s=%s',
               '',
               _('Encodings')
             ),
             FALSE, /* no order */
-            array(
+            [
               'UTF-8=UTF-8', 'ISO8859-1=ISO8859-1 (Latin 1)',
               'ISO8859-2=ISO8859-2 (Latin 2)', 'ISO8859-3=ISO8859-3 (Latin 3)',
               'ISO8859-4=ISO8859-4 (Latin 4)', 'ISO8859-5=ISO8859-5 (Latin 5)',
               'cp850=CP850 (Europe)'
-            ),
+            ],
             TRUE /* edit enabled */
           ),
           new SetAttribute(
@@ -121,11 +121,11 @@ class systemsPluginConfig extends simplePlugin
               _('Mandatory IP'), _('Object types tabs for which IP field should be mandatory'),
               'fdMandatoryIpClasses', FALSE
             ),
-            array('componentGeneric','printGeneric','workstationGeneric','terminalGeneric','serverGeneric')
+            ['componentGeneric','printGeneric','workstationGeneric','terminalGeneric','serverGeneric']
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -134,7 +134,7 @@ class systemsPluginConfig extends simplePlugin
 
     if (empty(static::$ipClasses)) {
       $plist = session::global_get('plist');
-      static::$ipClasses = array();
+      static::$ipClasses = [];
       foreach ($plist->info as $cname => $info) {
         if ($cname == 'all') {
           continue;
diff --git a/systems/locale/af_ZA/fusiondirectory.po b/systems/locale/af_ZA/fusiondirectory.po
index 34e25c3d5819c465028d484d32acb3afedd6ebf2..23053f59f544dcc4a2bdf0931d5a89d2d25de313 100644
--- a/systems/locale/af_ZA/fusiondirectory.po
+++ b/systems/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/systems/locale/ar/fusiondirectory.po b/systems/locale/ar/fusiondirectory.po
index 27c8206150e2a5af51fcd295027527e4d1d7f995..27a529d7e06797ce43a58e681278f2eeaf0910ef 100644
--- a/systems/locale/ar/fusiondirectory.po
+++ b/systems/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/systems/locale/ca/fusiondirectory.po b/systems/locale/ca/fusiondirectory.po
index a4b9d5b11334ed89f4def90d4980f7ea05c47ae3..40d887a055a905ac5520a6fc17293a449672ffcc 100644
--- a/systems/locale/ca/fusiondirectory.po
+++ b/systems/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/systems/locale/cs_CZ/fusiondirectory.po b/systems/locale/cs_CZ/fusiondirectory.po
index 650a697018b5800caa41708ed57e0761a967ac96..6f913e26ae7a4143f78234fe23eac2637916e72f 100644
--- a/systems/locale/cs_CZ/fusiondirectory.po
+++ b/systems/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/systems/locale/de/fusiondirectory.po b/systems/locale/de/fusiondirectory.po
index e58ed8995e16b84e8953b9dd81d84d188245f4f5..9af51624987d3545642ab51a8cd92b67ea10f6fb 100644
--- a/systems/locale/de/fusiondirectory.po
+++ b/systems/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/systems/locale/el_GR/fusiondirectory.po b/systems/locale/el_GR/fusiondirectory.po
index 843ab28f1181080220a301295319415adc703fb1..4b3c9d6cbbe5049b9d462a7572d91b5fa6e59e55 100644
--- a/systems/locale/el_GR/fusiondirectory.po
+++ b/systems/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/systems/locale/en/fusiondirectory.po b/systems/locale/en/fusiondirectory.po
index d2512cc6b04050ceaa873b524ada81ea8a267056..e86049d0ab4c6f2995bc4749357d626a4064041d 100644
--- a/systems/locale/en/fusiondirectory.po
+++ b/systems/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -18,662 +18,739 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: addons/dashboard/class_dashBoardNetwork.inc:28
-msgid "Network"
+#: config/systems/class_systemsPluginConfig.inc:30
+#: addons/dashboard/class_dashBoardSystems.inc:30
+#: admin/systems/class_systemManagement.inc:43
+#: admin/systems/class_systemManagement.inc:47
+msgid "Systems"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardNetwork.inc:29
-msgid "Statistics and various information"
+#: config/systems/class_systemsPluginConfig.inc:31
+msgid "Systems plugin configuration"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardNetwork.inc:40
-msgid "DHCP"
+#: config/systems/class_systemsPluginConfig.inc:42
+msgid "LDAP tree for systems"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardNetwork.inc:45
-msgid "DNS"
+#: config/systems/class_systemsPluginConfig.inc:45
+msgid "Systems RDN"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardSystems.inc:30
-#: config/systems/class_systemsPluginConfig.inc:28
-#: admin/systems/class_systemManagement.inc:43
-#: admin/systems/class_systemManagement.inc:47
-msgid "Systems"
+#: config/systems/class_systemsPluginConfig.inc:45
+msgid "Branch in which systems will be stored"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardSystems.inc:31
-msgid "Statistics and information about systems"
+#: config/systems/class_systemsPluginConfig.inc:50
+msgid "Server RDN"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardSystems.inc:42
-msgid "Statistics"
+#: config/systems/class_systemsPluginConfig.inc:50
+msgid "Branch in which servers will be stored"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardSystems.inc:47
-msgid "Computer name to use by unit"
+#: config/systems/class_systemsPluginConfig.inc:55
+msgid "Workstations RDN"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardSystems.inc:72
-msgid "Workstations"
+#: config/systems/class_systemsPluginConfig.inc:55
+msgid "Branch in which workstations will be stored"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardSystems.inc:76
-msgid "Servers"
+#: config/systems/class_systemsPluginConfig.inc:60
+msgid "Terminal RDN"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardSystems.inc:80
-msgid "Windows Workstations"
+#: config/systems/class_systemsPluginConfig.inc:60
+msgid "Branch in which terminals will be stored"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardSystems.inc:84
-msgid "Terminals"
+#: config/systems/class_systemsPluginConfig.inc:65
+msgid "Printer RDN"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardSystems.inc:88
-msgid "Printers"
+#: config/systems/class_systemsPluginConfig.inc:65
+msgid "Branch in which printers will be stored"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardSystems.inc:92
-msgid "Phones"
+#: config/systems/class_systemsPluginConfig.inc:70
+msgid "Component RDN"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardSystems.inc:96
-msgid "Components"
+#: config/systems/class_systemsPluginConfig.inc:70
+msgid "Branch in which network devices will be stored"
 msgstr ""
 
-#: addons/dashboard/class_dashBoardSystems.inc:100
-msgid "Mobile phones"
+#: config/systems/class_systemsPluginConfig.inc:75
+msgid "Phone RDN"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:29
-msgid "Systems plugin configuration"
+#: config/systems/class_systemsPluginConfig.inc:75
+msgid "Branch in which phones will be stored"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:40
-msgid "LDAP tree for systems"
+#: config/systems/class_systemsPluginConfig.inc:80
+msgid "Mobile phone RDN"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:43
-msgid "Systems RDN"
+#: config/systems/class_systemsPluginConfig.inc:80
+msgid "Branch in which mobile phones will be stored"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:43
-msgid "Branch in which systems will be stored"
+#: config/systems/class_systemsPluginConfig.inc:87
+msgid "Miscellaneous"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:48
-msgid "Server RDN"
+#: config/systems/class_systemsPluginConfig.inc:91
+msgid "Available encodings for share services"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:48
-msgid "Branch in which servers will be stored"
+#: config/systems/class_systemsPluginConfig.inc:95
+msgid "Encoding"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:53
-msgid "Workstations RDN"
+#: config/systems/class_systemsPluginConfig.inc:95
+msgid "The encoding code name"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:53
-msgid "Branch in which workstations will be stored"
+#: config/systems/class_systemsPluginConfig.inc:100
+msgid "Label"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:58
-msgid "Terminal RDN"
+#: config/systems/class_systemsPluginConfig.inc:100
+msgid "The encoding displayed name"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:58
-msgid "Branch in which terminals will be stored"
+#: config/systems/class_systemsPluginConfig.inc:108
+msgid "Encodings"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:63
-msgid "Printer RDN"
+#: config/systems/class_systemsPluginConfig.inc:121
+msgid "Mandatory IP"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:63
-msgid "Branch in which printers will be stored"
+#: config/systems/class_systemsPluginConfig.inc:121
+msgid "Object types tabs for which IP field should be mandatory"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:68
-msgid "Component RDN"
+#: addons/dashboard/class_dashBoardNetwork.inc:28
+msgid "Network"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:68
-msgid "Branch in which network devices will be stored"
+#: addons/dashboard/class_dashBoardNetwork.inc:29
+msgid "Statistics and various information"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:73
-msgid "Phone RDN"
+#: addons/dashboard/class_dashBoardNetwork.inc:41
+msgid "DHCP"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:73
-msgid "Branch in which phones will be stored"
+#: addons/dashboard/class_dashBoardNetwork.inc:46
+msgid "DNS"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:78
-msgid "Mobile phone RDN"
+#: addons/dashboard/class_dashBoardNetwork.inc:81
+#: admin/systems/class_serverService.inc:226
+#: admin/systems/class_serverService.inc:294
+#: admin/systems/services/shares/class_serviceShare.inc:105
+msgid "Error"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:78
-msgid "Branch in which mobile phones will be stored"
+#: addons/dashboard/class_dashBoardNetwork.inc:82
+#, php-format
+msgid ""
+"Statistics for DHCP could not be computed because of the following error: %s"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:85
-msgid "Miscellaneous"
+#: addons/dashboard/class_dashBoardSystems.inc:31
+msgid "Statistics and information about systems"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:89
-msgid "Available encodings for share services"
+#: addons/dashboard/class_dashBoardSystems.inc:43
+msgid "Statistics"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:93
-msgid "Encoding"
+#: addons/dashboard/class_dashBoardSystems.inc:48
+msgid "Computer name to use by unit"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:93
-msgid "The encoding code name"
+#: addons/dashboard/class_dashBoardSystems.inc:73
+msgid "Workstations"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:98
-msgid "Label"
+#: addons/dashboard/class_dashBoardSystems.inc:77
+msgid "Servers"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:98
-msgid "The encoding displayed name"
+#: addons/dashboard/class_dashBoardSystems.inc:81
+msgid "Windows Workstations"
 msgstr ""
 
-#: config/systems/class_systemsPluginConfig.inc:106
-msgid "Encodings"
+#: addons/dashboard/class_dashBoardSystems.inc:86
+msgid "Terminals"
 msgstr ""
 
-#: admin/systems/class_serverGeneric.inc:28
-msgid "server"
+#: addons/dashboard/class_dashBoardSystems.inc:90
+msgid "Printers"
+msgstr ""
+
+#: addons/dashboard/class_dashBoardSystems.inc:94
+msgid "Phones"
+msgstr ""
+
+#: addons/dashboard/class_dashBoardSystems.inc:98
+msgid "Components"
 msgstr ""
 
+#: addons/dashboard/class_dashBoardSystems.inc:102
+msgid "Mobile phones"
+msgstr ""
+
+#: addons/dashboard/class_dashBoardSystems.inc:116
+msgid "LDAP error"
+msgstr ""
+
+#: addons/dashboard/class_dashBoardSystems.inc:117
+#, php-format
+msgid ""
+"Statistics for type \"%s\" could not be computed because of the following "
+"error: %s"
+msgstr ""
+
+#: admin/systems/class_systemImport.inc:39
+#: admin/systems/class_systemImport.inc:59
+msgid "Import"
+msgstr ""
+
+#: admin/systems/class_systemImport.inc:43
 #: admin/systems/class_serverGeneric.inc:39
 #: admin/systems/class_serverGeneric.inc:44
 #: admin/systems/class_serverGeneric.inc:45
-#: admin/systems/class_systemImport.inc:173
 msgid "Server"
 msgstr ""
 
-#: admin/systems/class_serverGeneric.inc:40
-msgid "Server information"
+#: admin/systems/class_systemImport.inc:43
+msgid "The server you wish to import hosts from"
 msgstr ""
 
-#: admin/systems/serverService-list.xml:10
-msgid "List of services"
+#: admin/systems/class_systemImport.inc:47
+#: admin/systems/services/shares/class_serviceShare.inc:59
+msgid "Type"
 msgstr ""
 
-#: admin/systems/serverService-list.xml:14
-msgid "Service"
+#: admin/systems/class_systemImport.inc:47
+msgid "Type of objects you wish to import"
 msgstr ""
 
-#: admin/systems/serverService-list.xml:27
-msgid "!"
+#: admin/systems/class_systemImport.inc:52
+msgid "Template"
 msgstr ""
 
-#: admin/systems/serverService-list.xml:35
-#: admin/systems/class_componentGeneric.inc:62
-#: admin/systems/class_mobilePhoneGeneric.inc:64
-#: admin/systems/class_workstationGeneric.inc:68
-#: admin/systems/services/shares/class_serviceShare.inc:55
-#: admin/systems/system-list.xml:55 admin/systems/class_phoneGeneric.inc:59
-#: admin/systems/class_printGeneric.inc:66
-msgid "Description"
+#: admin/systems/class_systemImport.inc:52
+msgid "Select a template to apply to imported entries"
 msgstr ""
 
-#: admin/systems/serverService-list.xml:43 admin/systems/system-list.xml:79
-msgid "Actions"
+#: admin/systems/class_systemImport.inc:105
+#, php-format
+msgid "Could not parse %s"
 msgstr ""
 
-#: admin/systems/serverService-list.xml:54 admin/systems/system-list.xml:90
-msgid "Create"
+#: admin/systems/class_systemImport.inc:178
+#, php-format
+msgid "No DHCP server found for IPs %s"
 msgstr ""
 
-#: admin/systems/serverService-list.xml:69 admin/systems/system-list.xml:119
-msgid "Remove"
+#: admin/systems/class_systemImport.inc:197
+#, php-format
+msgid "No DNS server found for zone %s"
 msgstr ""
 
-#: admin/systems/serverService-list.xml:89
-msgid "Get status"
+#: admin/systems/class_serverService.inc:61 admin/systems/system-list.xml:63
+#: admin/systems/services/ldap/class_serviceLDAP.inc:97
+#: admin/systems/services/shares/class_serviceShare.inc:30
+#: admin/systems/services/terminal/class_serviceTerminal.inc:30
+msgid "Services"
 msgstr ""
 
-#: admin/systems/serverService-list.xml:97
-msgid "Start"
+#: admin/systems/class_serverService.inc:62
+msgid "Server services"
 msgstr ""
 
-#: admin/systems/serverService-list.xml:105
-msgid "Stop"
+#: admin/systems/class_serverService.inc:288
+msgid "Information"
 msgstr ""
 
-#: admin/systems/serverService-list.xml:113
-msgid "Restart"
+#: admin/systems/class_serverService.inc:288
+msgid "Cannot update service status until it has been saved!"
 msgstr ""
 
-#: admin/systems/serverService-list.xml:121
-msgid "Edit service"
+#: admin/systems/class_serverService.inc:294
+#, php-format
+msgid "Unknown action \"%s\""
 msgstr ""
 
-#: admin/systems/serverService-list.xml:129
-msgid "Remove service"
+#: admin/systems/class_serverService.inc:315
+#: admin/systems/class_serverService.inc:322
+#: admin/systems/class_serverService.inc:335
+#: admin/systems/class_serverService.inc:346
+#, php-format
+msgid "Could not get execute action %s on service %s."
 msgstr ""
 
-#: admin/systems/class_componentGeneric.inc:31
+#: admin/systems/class_serverService.inc:323
+msgid "This server has no mac address."
+msgstr ""
+
+#: admin/systems/class_componentGeneric.inc:30
 msgid "Component"
 msgstr ""
 
-#: admin/systems/class_componentGeneric.inc:32
+#: admin/systems/class_componentGeneric.inc:31
 msgid "Component information"
 msgstr ""
 
+#: admin/systems/class_componentGeneric.inc:35
 #: admin/systems/class_componentGeneric.inc:36
-#: admin/systems/class_componentGeneric.inc:37
 msgid "Network device"
 msgstr ""
 
-#: admin/systems/class_componentGeneric.inc:55
-#: admin/systems/class_mobilePhoneGeneric.inc:56
-#: admin/systems/class_workstationGeneric.inc:59
+#: admin/systems/class_componentGeneric.inc:54
 #: admin/systems/class_phoneGeneric.inc:52
 #: admin/systems/class_printGeneric.inc:58
+#: admin/systems/class_mobilePhoneGeneric.inc:56
+#: admin/systems/class_workstationGeneric.inc:58
 msgid "Properties"
 msgstr ""
 
-#: admin/systems/class_componentGeneric.inc:58
+#: admin/systems/class_componentGeneric.inc:57
+#: admin/systems/class_phoneGeneric.inc:56 admin/systems/system-list.xml:31
+#: admin/systems/class_printGeneric.inc:62
 #: admin/systems/class_mobilePhoneGeneric.inc:60
-#: admin/systems/class_workstationGeneric.inc:63
+#: admin/systems/class_workstationGeneric.inc:62
 #: admin/systems/services/shares/class_serviceShare.inc:51
-#: admin/systems/system-list.xml:31 admin/systems/class_phoneGeneric.inc:55
-#: admin/systems/class_printGeneric.inc:62
 msgid "Name"
 msgstr ""
 
-#: admin/systems/class_componentGeneric.inc:58
+#: admin/systems/class_componentGeneric.inc:57
 msgid "The name of the component"
 msgstr ""
 
-#: admin/systems/class_componentGeneric.inc:62
+#: admin/systems/class_componentGeneric.inc:61
+#: admin/systems/serverService-list.xml:35
+#: admin/systems/class_phoneGeneric.inc:60 admin/systems/system-list.xml:55
+#: admin/systems/class_printGeneric.inc:66
+#: admin/systems/class_mobilePhoneGeneric.inc:64
+#: admin/systems/class_workstationGeneric.inc:67
+#: admin/systems/services/shares/class_serviceShare.inc:55
+msgid "Description"
+msgstr ""
+
+#: admin/systems/class_componentGeneric.inc:61
 msgid "A short description of the component"
 msgstr ""
 
-#: admin/systems/class_componentGeneric.inc:69
-#: admin/systems/class_mobilePhoneGeneric.inc:102
-#: admin/systems/class_workstationGeneric.inc:90
+#: admin/systems/class_componentGeneric.inc:68
 #: admin/systems/class_phoneGeneric.inc:79
 #: admin/systems/class_printGeneric.inc:103
+#: admin/systems/class_mobilePhoneGeneric.inc:102
+#: admin/systems/class_workstationGeneric.inc:89
 msgid "Network settings"
 msgstr ""
 
-#: admin/systems/class_componentGeneric.inc:73
-#: admin/systems/class_mobilePhoneGeneric.inc:106
-#: admin/systems/class_workstationGeneric.inc:95
+#: admin/systems/class_componentGeneric.inc:72
 #: admin/systems/class_phoneGeneric.inc:84
 #: admin/systems/class_printGeneric.inc:108
+#: admin/systems/class_mobilePhoneGeneric.inc:106
+#: admin/systems/class_workstationGeneric.inc:94
 msgid "IP address"
 msgstr ""
 
-#: admin/systems/class_componentGeneric.inc:73
-#: admin/systems/class_mobilePhoneGeneric.inc:106
+#: admin/systems/class_componentGeneric.inc:72
 #: admin/systems/class_printGeneric.inc:108
+#: admin/systems/class_mobilePhoneGeneric.inc:106
 msgid "IP address this system uses"
 msgstr ""
 
-#: admin/systems/class_componentGeneric.inc:77
+#: admin/systems/class_componentGeneric.inc:76
+#: admin/systems/class_phoneGeneric.inc:90
+#: admin/systems/class_printGeneric.inc:114
 #: admin/systems/class_mobilePhoneGeneric.inc:110
 #: admin/systems/class_workstationGeneric.inc:100
-#: admin/systems/class_phoneGeneric.inc:89
-#: admin/systems/class_printGeneric.inc:113
 msgid "Mac address"
 msgstr ""
 
-#: admin/systems/class_componentGeneric.inc:77
+#: admin/systems/class_componentGeneric.inc:76
+#: admin/systems/class_phoneGeneric.inc:90
+#: admin/systems/class_printGeneric.inc:114
 #: admin/systems/class_mobilePhoneGeneric.inc:110
 #: admin/systems/class_workstationGeneric.inc:100
-#: admin/systems/class_phoneGeneric.inc:89
-#: admin/systems/class_printGeneric.inc:113
 msgid "Mac address of this system"
 msgstr ""
 
-#: admin/systems/class_mobilePhoneGeneric.inc:32
-#: admin/systems/class_mobilePhoneGeneric.inc:37
-#: admin/systems/class_mobilePhoneGeneric.inc:38
-msgid "Mobile phone"
+#: admin/systems/serverService-list.xml:10
+msgid "List of services"
 msgstr ""
 
-#: admin/systems/class_mobilePhoneGeneric.inc:33
-msgid "Mobile phone information"
+#: admin/systems/serverService-list.xml:14
+msgid "Service"
 msgstr ""
 
-#: admin/systems/class_mobilePhoneGeneric.inc:60
-msgid "The name of the mobile phone"
+#: admin/systems/serverService-list.xml:27
+msgid "!"
 msgstr ""
 
-#: admin/systems/class_mobilePhoneGeneric.inc:64
-msgid "A short description of the mobile phone"
+#: admin/systems/serverService-list.xml:43 admin/systems/system-list.xml:79
+msgid "Actions"
+msgstr ""
+
+#: admin/systems/serverService-list.xml:54 admin/systems/system-list.xml:90
+msgid "Create"
+msgstr ""
+
+#: admin/systems/serverService-list.xml:69 admin/systems/system-list.xml:127
+msgid "Remove"
+msgstr ""
+
+#: admin/systems/serverService-list.xml:89
+msgid "Get status"
+msgstr ""
+
+#: admin/systems/serverService-list.xml:97
+msgid "Start"
+msgstr ""
+
+#: admin/systems/serverService-list.xml:105
+msgid "Stop"
+msgstr ""
+
+#: admin/systems/serverService-list.xml:113
+msgid "Restart"
+msgstr ""
+
+#: admin/systems/serverService-list.xml:121
+msgid "Edit service"
+msgstr ""
+
+#: admin/systems/serverService-list.xml:129
+msgid "Remove service"
 msgstr ""
 
-#: admin/systems/class_mobilePhoneGeneric.inc:70
 #: admin/systems/class_phoneGeneric.inc:32
 #: admin/systems/class_phoneGeneric.inc:36
 #: admin/systems/class_phoneGeneric.inc:66
+#: admin/systems/class_mobilePhoneGeneric.inc:70
 msgid "Phone"
 msgstr ""
 
-#: admin/systems/class_mobilePhoneGeneric.inc:73
-#: admin/systems/class_phoneGeneric.inc:69
-msgid "Serial Number"
-msgstr ""
-
-#: admin/systems/class_mobilePhoneGeneric.inc:73
-msgid "The serial number of the mobile phone"
+#: admin/systems/class_phoneGeneric.inc:33
+msgid "Phone information"
 msgstr ""
 
-#: admin/systems/class_mobilePhoneGeneric.inc:77
-msgid "IMEI Number"
+#: admin/systems/class_phoneGeneric.inc:37
+msgid "Phone hardware"
 msgstr ""
 
-#: admin/systems/class_mobilePhoneGeneric.inc:77
-msgid "The IMEI number of the mobile phone"
+#: admin/systems/class_phoneGeneric.inc:56
+msgid "The name of the phone"
 msgstr ""
 
-#: admin/systems/class_mobilePhoneGeneric.inc:82
-msgid "OS"
+#: admin/systems/class_phoneGeneric.inc:60
+msgid "A short description of the phone"
 msgstr ""
 
-#: admin/systems/class_mobilePhoneGeneric.inc:82
-msgid "The Operating System installed on this phone"
+#: admin/systems/class_phoneGeneric.inc:69
+#: admin/systems/class_mobilePhoneGeneric.inc:73
+msgid "Serial Number"
 msgstr ""
 
-#: admin/systems/class_mobilePhoneGeneric.inc:88
-msgid "SimCard"
+#: admin/systems/class_phoneGeneric.inc:69
+msgid "The serial number of the phone"
 msgstr ""
 
-#: admin/systems/class_mobilePhoneGeneric.inc:91
 #: admin/systems/class_phoneGeneric.inc:73
-msgid "Telephone Number"
-msgstr ""
-
 #: admin/systems/class_mobilePhoneGeneric.inc:91
-msgid "The telephone number of the mobile phone"
+msgid "Telephone Number"
 msgstr ""
 
-#: admin/systems/class_mobilePhoneGeneric.inc:95
-msgid "PUK Number"
+#: admin/systems/class_phoneGeneric.inc:73
+msgid "The telephone number of the phone"
 msgstr ""
 
-#: admin/systems/class_mobilePhoneGeneric.inc:95
-msgid "The PUK number of the simcard in this mobile phone"
+#: admin/systems/class_phoneGeneric.inc:84
+#: admin/systems/class_workstationGeneric.inc:94
+msgid "IP addresses this system uses (v4 or v6)"
 msgstr ""
 
-#: admin/systems/class_terminalStartup.inc:32
-msgid "Startup"
+#: admin/systems/system-list.xml:10
+msgid "List of systems"
 msgstr ""
 
-#: admin/systems/class_terminalStartup.inc:33
-msgid "Terminal startup"
+#: admin/systems/system-list.xml:39
+msgid "IP"
 msgstr ""
 
-#: admin/systems/class_terminalStartup.inc:50
-msgid "Startup parameters"
+#: admin/systems/system-list.xml:47
+msgid "MAC"
 msgstr ""
 
-#: admin/systems/class_terminalStartup.inc:53
-msgid "Root server"
+#: admin/systems/system-list.xml:71
+msgid "Release"
 msgstr ""
 
-#: admin/systems/class_terminalStartup.inc:53
-msgid "The root server the terminal should be using"
+#: admin/systems/system-list.xml:100
+msgid "Trigger action"
 msgstr ""
 
-#: admin/systems/class_terminalStartup.inc:57
-msgid "Swap server"
+#: admin/systems/system-list.xml:107
+msgid "Schedule action"
 msgstr ""
 
-#: admin/systems/class_terminalStartup.inc:57
-msgid "The swap server the terminal should be using"
+#: admin/systems/system-list.xml:115
+msgid "Ping"
 msgstr ""
 
-#: admin/systems/class_terminalStartup.inc:63
-msgid "Remote desktop"
+#: admin/systems/system-list.xml:155
+msgid "New object from template"
 msgstr ""
 
-#: admin/systems/class_terminalStartup.inc:67
-msgid "Connect method"
+#: admin/systems/system-list.xml:167
+msgid "Edit system"
 msgstr ""
 
-#: admin/systems/class_terminalStartup.inc:71
-#: admin/systems/services/terminal/class_serviceTerminal.inc:59
-msgid "XDMCP"
+#: admin/systems/system-list.xml:181
+msgid "Remove system"
 msgstr ""
 
-#: admin/systems/class_terminalStartup.inc:71
-#: admin/systems/services/terminal/class_serviceTerminal.inc:59
-msgid "LDM"
+#: admin/systems/class_printGeneric.inc:30
+#: admin/systems/class_printGeneric.inc:35
+#: admin/systems/class_printGeneric.inc:36
+msgid "Printer"
 msgstr ""
 
-#: admin/systems/class_terminalStartup.inc:71
-#: admin/systems/services/terminal/class_serviceTerminal.inc:59
-msgid "Shell"
+#: admin/systems/class_printGeneric.inc:31
+msgid "Printer information"
 msgstr ""
 
-#: admin/systems/class_terminalStartup.inc:71
-#: admin/systems/services/terminal/class_serviceTerminal.inc:59
-msgid "Telnet"
+#: admin/systems/class_printGeneric.inc:62
+msgid "The name of the printer"
 msgstr ""
 
-#: admin/systems/class_terminalStartup.inc:71
-#: admin/systems/services/terminal/class_serviceTerminal.inc:59
-msgid "Windows RDP"
+#: admin/systems/class_printGeneric.inc:66
+msgid "A short description of the printer"
 msgstr ""
 
-#: admin/systems/class_terminalStartup.inc:75
-msgid "Terminal server"
+#: admin/systems/class_printGeneric.inc:72
+msgid "Details"
 msgstr ""
 
-#: admin/systems/class_terminalStartup.inc:111
-#: admin/systems/class_terminalStartup.inc:122
-msgid "inherited"
+#: admin/systems/class_printGeneric.inc:75
+msgid "Printer location"
 msgstr ""
 
-#: admin/systems/class_terminalStartup.inc:119
-msgid "Local swap"
+#: admin/systems/class_printGeneric.inc:75
+msgid "The location of the printer"
 msgstr ""
 
-#: admin/systems/class_serverService.inc:60
-#: admin/systems/services/terminal/class_serviceTerminal.inc:30
-#: admin/systems/services/shares/class_serviceShare.inc:30
-#: admin/systems/services/ldap/class_serviceLDAP.inc:97
-#: admin/systems/system-list.xml:63
-msgid "Services"
+#: admin/systems/class_printGeneric.inc:79
+msgid "Printer URL"
 msgstr ""
 
-#: admin/systems/class_serverService.inc:61
-msgid "Server services"
+#: admin/systems/class_printGeneric.inc:79
+msgid "The URL of the printer"
 msgstr ""
 
-#: admin/systems/class_serverService.inc:209
-#: admin/systems/class_serverService.inc:277
-#: admin/systems/services/shares/class_serviceShare.inc:105
-msgid "Error"
+#: admin/systems/class_printGeneric.inc:85
+#: admin/systems/class_printGeneric.inc:88
+msgid "Users which are allowed to use this printer"
 msgstr ""
 
-#: admin/systems/class_serverService.inc:271
-msgid "Information"
+#: admin/systems/class_printGeneric.inc:94
+#: admin/systems/class_printGeneric.inc:97
+msgid "Users which are allowed to administrate this printer"
 msgstr ""
 
-#: admin/systems/class_serverService.inc:271
-msgid "Cannot update service status until it has been saved!"
+#: admin/systems/class_printGeneric.inc:121
+msgid "Windows paths"
 msgstr ""
 
-#: admin/systems/class_serverService.inc:277
-#, php-format
-msgid "Unknown action \"%s\""
+#: admin/systems/class_printGeneric.inc:125
+msgid "Inf file"
 msgstr ""
 
-#: admin/systems/class_serverService.inc:298
-#: admin/systems/class_serverService.inc:308
-#: admin/systems/class_serverService.inc:319
-#, php-format
-msgid "Could not get execute action %s on service %s."
+#: admin/systems/class_printGeneric.inc:125
+msgid "Path to windows inf file for this printer"
 msgstr ""
 
-#: admin/systems/class_workstationGeneric.inc:32
-#: admin/systems/class_workstationGeneric.inc:37
-#: admin/systems/class_workstationGeneric.inc:38
-msgid "Workstation"
+#: admin/systems/class_printGeneric.inc:129
+msgid "Driver directory"
 msgstr ""
 
-#: admin/systems/class_workstationGeneric.inc:33
-msgid "Workstation information"
+#: admin/systems/class_printGeneric.inc:129
+msgid "Path to directory that contains windows drivers for this printer"
 msgstr ""
 
-#: admin/systems/class_workstationGeneric.inc:52
-msgid "workstation"
+#: admin/systems/class_printGeneric.inc:133
+msgid "Driver name"
 msgstr ""
 
-#: admin/systems/class_workstationGeneric.inc:64
-#, php-format
-msgid "The name of the %s"
+#: admin/systems/class_printGeneric.inc:133
+msgid "Windows name of the printer driver"
 msgstr ""
 
-#: admin/systems/class_workstationGeneric.inc:69
-#, php-format
-msgid "A short description of the %s"
+#: admin/systems/class_systemManagement.inc:44
+msgid "Systems Management"
 msgstr ""
 
-#: admin/systems/class_workstationGeneric.inc:73
-msgid "Location"
+#: admin/systems/class_systemManagement.inc:141
+#: admin/systems/class_systemManagement.inc:157
+#: admin/systems/class_systemManagement.inc:209
+msgid "Action canceled"
 msgstr ""
 
-#: admin/systems/class_workstationGeneric.inc:74
+#: admin/systems/class_systemManagement.inc:141
+#: admin/systems/class_systemManagement.inc:209
 #, php-format
-msgid "The location of the %s"
+msgid "System %s has no mac address defined, cannot trigger action"
 msgstr ""
 
-#: admin/systems/class_workstationGeneric.inc:78
+#: admin/systems/class_systemManagement.inc:157
 #, php-format
-msgid "Lock this %s"
+msgid "System %s is currently installing"
 msgstr ""
 
-#: admin/systems/class_workstationGeneric.inc:79
-#, php-format
-msgid "This will prevent the %s from being reinstalled"
+#: admin/systems/class_systemManagement.inc:176
+#: admin/systems/class_systemManagement.inc:221
+#: admin/systems/class_systemManagement.inc:258
+msgid "Infrastructure service"
 msgstr ""
 
-#: admin/systems/class_workstationGeneric.inc:95
-#: admin/systems/class_phoneGeneric.inc:84
-msgid "IP addresses this system uses (v4 or v6)"
+#: admin/systems/class_systemManagement.inc:179
+#: admin/systems/class_systemManagement.inc:184
+msgid "Action triggered"
 msgstr ""
 
-#: admin/systems/class_systemImport.inc:72
+#: admin/systems/class_systemManagement.inc:179
 #, php-format
-msgid "Could not parse %s"
+msgid "Action called without error (results were \"%s\")"
 msgstr ""
 
-#: admin/systems/class_systemImport.inc:118
+#: admin/systems/class_systemManagement.inc:184
 #, php-format
-msgid "No DHCP server found for IPs %s"
+msgid "Action called without error (result was \"%s\")"
+msgstr ""
+
+#: admin/systems/class_systemManagement.inc:239
+msgid "Ping results"
 msgstr ""
 
-#: admin/systems/class_systemImport.inc:135
+#: admin/systems/class_systemManagement.inc:325
 #, php-format
-msgid "No DNS server found for zone %s"
+msgid "Inherited from %s"
+msgstr ""
+
+#: admin/systems/class_mobilePhoneGeneric.inc:32
+#: admin/systems/class_mobilePhoneGeneric.inc:37
+#: admin/systems/class_mobilePhoneGeneric.inc:38
+msgid "Mobile phone"
 msgstr ""
 
-#: admin/systems/class_systemImport.inc:169
-msgid "Import"
+#: admin/systems/class_mobilePhoneGeneric.inc:33
+msgid "Mobile phone information"
 msgstr ""
 
-#: admin/systems/class_systemImport.inc:173
-msgid "The server you wish to import hosts from"
+#: admin/systems/class_mobilePhoneGeneric.inc:60
+msgid "The name of the mobile phone"
 msgstr ""
 
-#: admin/systems/services/terminal/class_serviceTerminal.inc:29
-#: admin/systems/services/terminal/class_serviceTerminal.inc:30
-#: admin/systems/services/terminal/class_serviceTerminal.inc:41
-msgid "Terminal service"
+#: admin/systems/class_mobilePhoneGeneric.inc:64
+msgid "A short description of the mobile phone"
 msgstr ""
 
-#: admin/systems/services/terminal/class_serviceTerminal.inc:44
-msgid "Temporary disable login"
+#: admin/systems/class_mobilePhoneGeneric.inc:73
+msgid "The serial number of the mobile phone"
 msgstr ""
 
-#: admin/systems/services/terminal/class_serviceTerminal.inc:45
-msgid "Disables the login on this terminal server"
+#: admin/systems/class_mobilePhoneGeneric.inc:77
+msgid "IMEI Number"
 msgstr ""
 
-#: admin/systems/services/terminal/class_serviceTerminal.inc:54
-msgid "Supported session types"
+#: admin/systems/class_mobilePhoneGeneric.inc:77
+msgid "The IMEI number of the mobile phone"
 msgstr ""
 
-#: admin/systems/services/terminal/class_serviceTerminal.inc:55
-msgid "The session types supported by this terminal server"
+#: admin/systems/class_mobilePhoneGeneric.inc:82
+msgid "OS"
 msgstr ""
 
-#: admin/systems/services/shares/class_serviceShare.inc:29
-#: admin/systems/services/shares/class_serviceShare.inc:30
-msgid "Share service"
+#: admin/systems/class_mobilePhoneGeneric.inc:82
+msgid "The Operating System installed on this phone"
 msgstr ""
 
-#: admin/systems/services/shares/class_serviceShare.inc:42
-msgid "Shares"
+#: admin/systems/class_mobilePhoneGeneric.inc:88
+msgid "SimCard"
 msgstr ""
 
-#: admin/systems/services/shares/class_serviceShare.inc:47
-msgid "Shares this server hosts"
+#: admin/systems/class_mobilePhoneGeneric.inc:91
+msgid "The telephone number of the mobile phone"
 msgstr ""
 
-#: admin/systems/services/shares/class_serviceShare.inc:51
-msgid "Name of this share"
+#: admin/systems/class_mobilePhoneGeneric.inc:95
+msgid "PUK Number"
 msgstr ""
 
-#: admin/systems/services/shares/class_serviceShare.inc:55
-msgid "Description of this share"
+#: admin/systems/class_mobilePhoneGeneric.inc:95
+msgid "The PUK number of the simcard in this mobile phone"
 msgstr ""
 
-#: admin/systems/services/shares/class_serviceShare.inc:59
-msgid "Type"
+#: admin/systems/class_serverGeneric.inc:28
+msgid "server"
 msgstr ""
 
-#: admin/systems/services/shares/class_serviceShare.inc:59
-msgid "Type of share"
+#: admin/systems/class_serverGeneric.inc:40
+msgid "Server information"
 msgstr ""
 
-#: admin/systems/services/shares/class_serviceShare.inc:64
-msgid "Codepage"
+#: admin/systems/class_workstationGeneric.inc:31
+#: admin/systems/class_workstationGeneric.inc:36
+#: admin/systems/class_workstationGeneric.inc:37
+msgid "Workstation"
 msgstr ""
 
-#: admin/systems/services/shares/class_serviceShare.inc:64
-msgid "Codepage for this share"
+#: admin/systems/class_workstationGeneric.inc:32
+msgid "Workstation information"
 msgstr ""
 
-#: admin/systems/services/shares/class_serviceShare.inc:68
-msgid "Path / Volume"
+#: admin/systems/class_workstationGeneric.inc:51
+msgid "workstation"
 msgstr ""
 
-#: admin/systems/services/shares/class_serviceShare.inc:68
-msgid "Path or volume concerned by this share"
+#: admin/systems/class_workstationGeneric.inc:63
+#, php-format
+msgid "The name of the %s"
 msgstr ""
 
-#: admin/systems/services/shares/class_serviceShare.inc:72
-msgid "Option"
+#: admin/systems/class_workstationGeneric.inc:68
+#, php-format
+msgid "A short description of the %s"
 msgstr ""
 
-#: admin/systems/services/shares/class_serviceShare.inc:72
-msgid "Special option(s) for this share"
+#: admin/systems/class_workstationGeneric.inc:72
+msgid "Location"
 msgstr ""
 
-#: admin/systems/services/shares/class_serviceShare.inc:105
-msgid "You need to configure encodings first"
+#: admin/systems/class_workstationGeneric.inc:73
+#, php-format
+msgid "The location of the %s"
 msgstr ""
 
-#: admin/systems/services/shares/class_serviceShare.inc:112
-msgid "Warning"
+#: admin/systems/class_workstationGeneric.inc:77
+#, php-format
+msgid "Lock this %s"
 msgstr ""
 
-#: admin/systems/services/shares/class_serviceShare.inc:112
+#: admin/systems/class_workstationGeneric.inc:78
 #, php-format
-msgid "Invalid value in encodings : %s"
+msgid "This will prevent the %s from being reinstalled"
 msgstr ""
 
 #: admin/systems/services/ldap/class_serviceLDAP.inc:35
@@ -773,178 +850,162 @@ msgstr ""
 msgid "LDAP"
 msgstr ""
 
-#: admin/systems/system-list.xml:10
-msgid "List of systems"
-msgstr ""
-
-#: admin/systems/system-list.xml:39
-msgid "IP"
-msgstr ""
-
-#: admin/systems/system-list.xml:47
-msgid "MAC"
-msgstr ""
-
-#: admin/systems/system-list.xml:71
-msgid "Release"
-msgstr ""
-
-#: admin/systems/system-list.xml:100
-msgid "Trigger action"
+#: admin/systems/services/shares/class_serviceShare.inc:29
+#: admin/systems/services/shares/class_serviceShare.inc:30
+msgid "Share service"
 msgstr ""
 
-#: admin/systems/system-list.xml:107
-msgid "Schedule action"
+#: admin/systems/services/shares/class_serviceShare.inc:42
+msgid "Shares"
 msgstr ""
 
-#: admin/systems/system-list.xml:147
-msgid "New object from template"
+#: admin/systems/services/shares/class_serviceShare.inc:47
+msgid "Shares this server hosts"
 msgstr ""
 
-#: admin/systems/system-list.xml:159
-msgid "Edit system"
+#: admin/systems/services/shares/class_serviceShare.inc:51
+msgid "Name of this share"
 msgstr ""
 
-#: admin/systems/system-list.xml:173
-msgid "Remove system"
+#: admin/systems/services/shares/class_serviceShare.inc:55
+msgid "Description of this share"
 msgstr ""
 
-#: admin/systems/class_phoneGeneric.inc:33
-msgid "Phone information"
+#: admin/systems/services/shares/class_serviceShare.inc:59
+msgid "Type of share"
 msgstr ""
 
-#: admin/systems/class_phoneGeneric.inc:37
-msgid "Phone hardware"
+#: admin/systems/services/shares/class_serviceShare.inc:64
+msgid "Codepage"
 msgstr ""
 
-#: admin/systems/class_phoneGeneric.inc:55
-msgid "The name of the phone"
+#: admin/systems/services/shares/class_serviceShare.inc:64
+msgid "Codepage for this share"
 msgstr ""
 
-#: admin/systems/class_phoneGeneric.inc:59
-msgid "A short description of the phone"
+#: admin/systems/services/shares/class_serviceShare.inc:68
+msgid "Path / Volume"
 msgstr ""
 
-#: admin/systems/class_phoneGeneric.inc:69
-msgid "The serial number of the phone"
+#: admin/systems/services/shares/class_serviceShare.inc:68
+msgid "Path or volume concerned by this share"
 msgstr ""
 
-#: admin/systems/class_phoneGeneric.inc:73
-msgid "The telephone number of the phone"
+#: admin/systems/services/shares/class_serviceShare.inc:72
+msgid "Option"
 msgstr ""
 
-#: admin/systems/class_systemManagement.inc:44
-msgid "Systems Management"
+#: admin/systems/services/shares/class_serviceShare.inc:72
+msgid "Special option(s) for this share"
 msgstr ""
 
-#: admin/systems/class_systemManagement.inc:139
-#: admin/systems/class_systemManagement.inc:155
-msgid "Action canceled"
+#: admin/systems/services/shares/class_serviceShare.inc:105
+msgid "You need to configure encodings first"
 msgstr ""
 
-#: admin/systems/class_systemManagement.inc:139
-#, php-format
-msgid "System %s has no mac address defined, cannot trigger action"
+#: admin/systems/services/shares/class_serviceShare.inc:112
+msgid "Warning"
 msgstr ""
 
-#: admin/systems/class_systemManagement.inc:155
+#: admin/systems/services/shares/class_serviceShare.inc:112
 #, php-format
-msgid "System %s is currently installing"
+msgid "Invalid value in encodings : %s"
 msgstr ""
 
-#: admin/systems/class_systemManagement.inc:175
-#: admin/systems/class_systemManagement.inc:201
-msgid "Infrastructure service"
+#: admin/systems/services/terminal/class_serviceTerminal.inc:29
+#: admin/systems/services/terminal/class_serviceTerminal.inc:30
+#: admin/systems/services/terminal/class_serviceTerminal.inc:41
+msgid "Terminal service"
 msgstr ""
 
-#: admin/systems/class_systemManagement.inc:177
-msgid "Action triggered"
+#: admin/systems/services/terminal/class_serviceTerminal.inc:44
+msgid "Temporary disable login"
 msgstr ""
 
-#: admin/systems/class_systemManagement.inc:177
-#, php-format
-msgid "Action called without error (result was \"%s\")"
+#: admin/systems/services/terminal/class_serviceTerminal.inc:45
+msgid "Disables the login on this terminal server"
 msgstr ""
 
-#: admin/systems/class_systemManagement.inc:268
-#, php-format
-msgid "Inherited from %s"
+#: admin/systems/services/terminal/class_serviceTerminal.inc:54
+msgid "Supported session types"
 msgstr ""
 
-#: admin/systems/class_printGeneric.inc:30
-#: admin/systems/class_printGeneric.inc:35
-#: admin/systems/class_printGeneric.inc:36
-msgid "Printer"
+#: admin/systems/services/terminal/class_serviceTerminal.inc:55
+msgid "The session types supported by this terminal server"
 msgstr ""
 
-#: admin/systems/class_printGeneric.inc:31
-msgid "Printer information"
+#: admin/systems/services/terminal/class_serviceTerminal.inc:59
+#: admin/systems/class_terminalStartup.inc:71
+msgid "XDMCP"
 msgstr ""
 
-#: admin/systems/class_printGeneric.inc:62
-msgid "The name of the printer"
+#: admin/systems/services/terminal/class_serviceTerminal.inc:59
+#: admin/systems/class_terminalStartup.inc:71
+msgid "LDM"
 msgstr ""
 
-#: admin/systems/class_printGeneric.inc:66
-msgid "A short description of the printer"
+#: admin/systems/services/terminal/class_serviceTerminal.inc:59
+#: admin/systems/class_terminalStartup.inc:71
+msgid "Shell"
 msgstr ""
 
-#: admin/systems/class_printGeneric.inc:72
-msgid "Details"
+#: admin/systems/services/terminal/class_serviceTerminal.inc:59
+#: admin/systems/class_terminalStartup.inc:71
+msgid "Telnet"
 msgstr ""
 
-#: admin/systems/class_printGeneric.inc:75
-msgid "Printer location"
+#: admin/systems/services/terminal/class_serviceTerminal.inc:59
+#: admin/systems/class_terminalStartup.inc:71
+msgid "Windows RDP"
 msgstr ""
 
-#: admin/systems/class_printGeneric.inc:75
-msgid "The location of the printer"
+#: admin/systems/class_terminalStartup.inc:32
+msgid "Startup"
 msgstr ""
 
-#: admin/systems/class_printGeneric.inc:79
-msgid "Printer URL"
+#: admin/systems/class_terminalStartup.inc:33
+msgid "Terminal startup"
 msgstr ""
 
-#: admin/systems/class_printGeneric.inc:79
-msgid "The URL of the printer"
+#: admin/systems/class_terminalStartup.inc:50
+msgid "Startup parameters"
 msgstr ""
 
-#: admin/systems/class_printGeneric.inc:85
-#: admin/systems/class_printGeneric.inc:88
-msgid "Users which are allowed to use this printer"
+#: admin/systems/class_terminalStartup.inc:53
+msgid "Root server"
 msgstr ""
 
-#: admin/systems/class_printGeneric.inc:94
-#: admin/systems/class_printGeneric.inc:97
-msgid "Users which are allowed to administrate this printer"
+#: admin/systems/class_terminalStartup.inc:53
+msgid "The root server the terminal should be using"
 msgstr ""
 
-#: admin/systems/class_printGeneric.inc:119
-msgid "Windows paths"
+#: admin/systems/class_terminalStartup.inc:57
+msgid "Swap server"
 msgstr ""
 
-#: admin/systems/class_printGeneric.inc:123
-msgid "Inf file"
+#: admin/systems/class_terminalStartup.inc:57
+msgid "The swap server the terminal should be using"
 msgstr ""
 
-#: admin/systems/class_printGeneric.inc:123
-msgid "Path to windows inf file for this printer"
+#: admin/systems/class_terminalStartup.inc:63
+msgid "Remote desktop"
 msgstr ""
 
-#: admin/systems/class_printGeneric.inc:127
-msgid "Driver directory"
+#: admin/systems/class_terminalStartup.inc:67
+msgid "Connect method"
 msgstr ""
 
-#: admin/systems/class_printGeneric.inc:127
-msgid "Path to directory that contains windows drivers for this printer"
+#: admin/systems/class_terminalStartup.inc:74
+msgid "Terminal server"
 msgstr ""
 
-#: admin/systems/class_printGeneric.inc:131
-msgid "Driver name"
+#: admin/systems/class_terminalStartup.inc:109
+#: admin/systems/class_terminalStartup.inc:120
+msgid "inherited"
 msgstr ""
 
-#: admin/systems/class_printGeneric.inc:131
-msgid "Windows name of the printer driver"
+#: admin/systems/class_terminalStartup.inc:117
+msgid "Local swap"
 msgstr ""
 
 #: admin/systems/class_terminalGeneric.inc:31
diff --git a/systems/locale/es/fusiondirectory.po b/systems/locale/es/fusiondirectory.po
index 9b9f6807b6cebe15bef95aebb31694e2e60c3424..2788582ff61812922070d12ad55c7b45e4a328bc 100644
--- a/systems/locale/es/fusiondirectory.po
+++ b/systems/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/class_phoneGeneric.inc:32
 #: admin/systems/class_phoneGeneric.inc:36
@@ -1051,6 +1051,7 @@ msgid "Only one system is configured to run an argonaut client."
 msgid_plural "%1 systems are configured to run an argonaut client."
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: addons/dashboard/systems_stats.tpl.c:11
 msgid "But no system is configured to run an argonaut client!"
@@ -1065,3 +1066,4 @@ msgid_plural ""
 "argonaut server configured!"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
diff --git a/systems/locale/es_CO/fusiondirectory.po b/systems/locale/es_CO/fusiondirectory.po
index 3a2cf425689aeeb6f8aa40ac1de13c7755d88e51..540db382f506b5e77dbb077ad396e79473c56a2d 100644
--- a/systems/locale/es_CO/fusiondirectory.po
+++ b/systems/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/class_phoneGeneric.inc:32
 #: admin/systems/class_phoneGeneric.inc:36
@@ -1050,6 +1050,7 @@ msgid "Only one system is configured to run an argonaut client."
 msgid_plural "%1 systems are configured to run an argonaut client."
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: addons/dashboard/systems_stats.tpl.c:11
 msgid "But no system is configured to run an argonaut client!"
@@ -1064,3 +1065,4 @@ msgid_plural ""
 "argonaut server configured!"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
diff --git a/systems/locale/es_VE/fusiondirectory.po b/systems/locale/es_VE/fusiondirectory.po
index 0e760b28354be5130e3fa6412deeadb0aba4c233..d9c7222e428c10a571347f8fef4dbd2459c4960c 100644
--- a/systems/locale/es_VE/fusiondirectory.po
+++ b/systems/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/class_phoneGeneric.inc:32
 #: admin/systems/class_phoneGeneric.inc:36
@@ -1051,6 +1051,7 @@ msgid "Only one system is configured to run an argonaut client."
 msgid_plural "%1 systems are configured to run an argonaut client."
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: addons/dashboard/systems_stats.tpl.c:11
 msgid "But no system is configured to run an argonaut client!"
@@ -1065,3 +1066,4 @@ msgid_plural ""
 "argonaut server configured!"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
diff --git a/systems/locale/fa_IR/fusiondirectory.po b/systems/locale/fa_IR/fusiondirectory.po
index 6c566a62a54e78287a770b6d4d4bbc6b1791deea..bfe5d0aece587c538d32e50bf3835462f9caf2bb 100644
--- a/systems/locale/fa_IR/fusiondirectory.po
+++ b/systems/locale/fa_IR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
diff --git a/systems/locale/fi_FI/fusiondirectory.po b/systems/locale/fi_FI/fusiondirectory.po
index abbc43303cb8c4e44420f2643f211ca41c9c0f39..1b9fefe953fc8b055958f52affdcc11da765ff5f 100644
--- a/systems/locale/fi_FI/fusiondirectory.po
+++ b/systems/locale/fi_FI/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: Dina Solveig Jalkanen, 2017\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/systems/locale/fr/fusiondirectory.po b/systems/locale/fr/fusiondirectory.po
index 16ad9386303624e225a3e26d1528dba9247be5de..c4d4841de985496c85ef9186b888d2f37bab4742 100644
--- a/systems/locale/fr/fusiondirectory.po
+++ b/systems/locale/fr/fusiondirectory.po
@@ -6,22 +6,22 @@
 # Translators:
 # MCMic, 2018
 # fusiondirectory <contact@fusiondirectory.org>, 2018
-# Benoit Mortier <benoit.mortier@opensides.be>, 2018
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
-"Last-Translator: Benoit Mortier <benoit.mortier@opensides.be>, 2018\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/class_phoneGeneric.inc:32
 #: admin/systems/class_phoneGeneric.inc:36
@@ -1070,6 +1070,7 @@ msgid "Only one system is configured to run an argonaut client."
 msgid_plural "%1 systems are configured to run an argonaut client."
 msgstr[0] "Seul un système est configure pour exécuter un client Argonaut"
 msgstr[1] "%1 systèmes sont configurés pour exécuter un client Argonaut."
+msgstr[2] "%1 systèmes sont configurés pour exécuter un client Argonaut."
 
 #: addons/dashboard/systems_stats.tpl.c:11
 msgid "But no system is configured to run an argonaut client!"
@@ -1088,3 +1089,6 @@ msgstr[0] ""
 msgstr[1] ""
 "%1 systèmes sont configurés pour exécuter un client Argonaut, mais il n’y a "
 "pas de serveur Argonaut configuré !"
+msgstr[2] ""
+"%1 systèmes sont configurés pour exécuter un client Argonaut, mais il n’y a "
+"pas de serveur Argonaut configuré !"
diff --git a/systems/locale/hu_HU/fusiondirectory.po b/systems/locale/hu_HU/fusiondirectory.po
index f2a1942372e6fd0e374f4a07a3c420085784dfa0..6c282213a3c2a4efb3d397c5f89aee370d1a58af 100644
--- a/systems/locale/hu_HU/fusiondirectory.po
+++ b/systems/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
diff --git a/systems/locale/id/fusiondirectory.po b/systems/locale/id/fusiondirectory.po
index c9674ad85bcaa3e698c574c931613a1913255470..85d5b89e1af2835fbb7d61118cb40a5e7834e538 100644
--- a/systems/locale/id/fusiondirectory.po
+++ b/systems/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/systems/locale/it_IT/fusiondirectory.po b/systems/locale/it_IT/fusiondirectory.po
index 8a6fe4a914b725b61961b72a7be161a3c53df309..72e348ab7bd87f2c0ad7a261fda01c345089a9ce 100644
--- a/systems/locale/it_IT/fusiondirectory.po
+++ b/systems/locale/it_IT/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: Paola Penati <paola.penati@opensides.be>, 2018\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -20,7 +20,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/class_phoneGeneric.inc:32
 #: admin/systems/class_phoneGeneric.inc:36
@@ -1072,6 +1072,7 @@ msgid "Only one system is configured to run an argonaut client."
 msgid_plural "%1 systems are configured to run an argonaut client."
 msgstr[0] "Un solo sistema è configurato per eseguire un client di Argonaut."
 msgstr[1] "%1 sistemi sono configurati per eseguire un client di Argonaut."
+msgstr[2] "%1 sistemi sono configurati per eseguire un client di Argonaut."
 
 #: addons/dashboard/systems_stats.tpl.c:11
 msgid "But no system is configured to run an argonaut client!"
@@ -1090,3 +1091,6 @@ msgstr[0] ""
 msgstr[1] ""
 "%1 sistemi sono configurati per l'esecuzione di un client Argonaut, ma "
 "nessun server Argonaut é stato configurato!"
+msgstr[2] ""
+"%1 sistemi sono configurati per l'esecuzione di un client Argonaut, ma "
+"nessun server Argonaut é stato configurato!"
diff --git a/systems/locale/ja/fusiondirectory.po b/systems/locale/ja/fusiondirectory.po
index 315fde4e1e4df95463578930f48a9ca9d68b625b..92543314f492111a087f6cdd804a452366ad4e8d 100644
--- a/systems/locale/ja/fusiondirectory.po
+++ b/systems/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/systems/locale/ko/fusiondirectory.po b/systems/locale/ko/fusiondirectory.po
index 0533f650c552fb40f86dc6a827769067b1beccfc..ca03c252b72094a1886cdcd8d3434853b44b6dcb 100644
--- a/systems/locale/ko/fusiondirectory.po
+++ b/systems/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/systems/locale/lv/fusiondirectory.po b/systems/locale/lv/fusiondirectory.po
index fd3f1f534d43e4d77f0b652949bfa23a55cf089b..e8daa7b0d7dfe530365ae4c6022d078acdb3615c 100644
--- a/systems/locale/lv/fusiondirectory.po
+++ b/systems/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/systems/locale/nb/fusiondirectory.po b/systems/locale/nb/fusiondirectory.po
index 4ef4ee40253db1c08e7980e08af666dfdbbcb410..59c312dc21c05cb60d3244da7d754f1424716b50 100644
--- a/systems/locale/nb/fusiondirectory.po
+++ b/systems/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/systems/locale/nl/fusiondirectory.po b/systems/locale/nl/fusiondirectory.po
index 3080788a7c032b5e7c12e893682e5c1bb862bac3..87b3c839eefc061afdf7acb47e4709f34d9c9b77 100644
--- a/systems/locale/nl/fusiondirectory.po
+++ b/systems/locale/nl/fusiondirectory.po
@@ -6,16 +6,16 @@
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2017
 # Lucien Antonissen <lucien.antonissen@digipolis.be>, 2018
-# Benoit Mortier <benoit.mortier@opensides.be>, 2018
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
-"Last-Translator: Benoit Mortier <benoit.mortier@opensides.be>, 2018\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff --git a/systems/locale/pl/fusiondirectory.po b/systems/locale/pl/fusiondirectory.po
index e65a3c15ab19b1f6aa758d97b8778844a4f3f987..9984d793883b914eb8b48736634be7cd8a3c1e39 100644
--- a/systems/locale/pl/fusiondirectory.po
+++ b/systems/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/systems/locale/pt/fusiondirectory.po b/systems/locale/pt/fusiondirectory.po
index f2d1cb405fd21532cf39c9af7183020954071d16..9852199ab911986854d0783fd8efa78a5f0df259 100644
--- a/systems/locale/pt/fusiondirectory.po
+++ b/systems/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/class_phoneGeneric.inc:32
 #: admin/systems/class_phoneGeneric.inc:36
@@ -1050,6 +1050,7 @@ msgid "Only one system is configured to run an argonaut client."
 msgid_plural "%1 systems are configured to run an argonaut client."
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: addons/dashboard/systems_stats.tpl.c:11
 msgid "But no system is configured to run an argonaut client!"
@@ -1064,3 +1065,4 @@ msgid_plural ""
 "argonaut server configured!"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
diff --git a/systems/locale/pt_BR/fusiondirectory.po b/systems/locale/pt_BR/fusiondirectory.po
index 2104dc4e158117eff3b85bb68cd1e8b90963aef2..9001cfd946eb43d22d7e91f438cb7ac4692b1ffe 100644
--- a/systems/locale/pt_BR/fusiondirectory.po
+++ b/systems/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/class_phoneGeneric.inc:32
 #: admin/systems/class_phoneGeneric.inc:36
@@ -1050,6 +1050,7 @@ msgid "Only one system is configured to run an argonaut client."
 msgid_plural "%1 systems are configured to run an argonaut client."
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: addons/dashboard/systems_stats.tpl.c:11
 msgid "But no system is configured to run an argonaut client!"
@@ -1064,3 +1065,4 @@ msgid_plural ""
 "argonaut server configured!"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
diff --git a/systems/locale/ru/fusiondirectory.po b/systems/locale/ru/fusiondirectory.po
index ad05b84d74523d59e86ea742cc98cb9181a505f4..3cf5228902bb1c6104871d25bd162b4506feec41 100644
--- a/systems/locale/ru/fusiondirectory.po
+++ b/systems/locale/ru/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/systems/locale/ru@petr1708/fusiondirectory.po b/systems/locale/ru@petr1708/fusiondirectory.po
index 88976db2e77a98616007db6f6c5830612336d68c..2c5bc1469e190feef0fdbfc4af292bebef83b7c6 100644
--- a/systems/locale/ru@petr1708/fusiondirectory.po
+++ b/systems/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/systems/locale/sv/fusiondirectory.po b/systems/locale/sv/fusiondirectory.po
index d869139763568bfbfbdc02c542931a422644d66e..8e3684734af5ed727285003b42cec9ca701e56ce 100644
--- a/systems/locale/sv/fusiondirectory.po
+++ b/systems/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/systems/locale/tr_TR/fusiondirectory.po b/systems/locale/tr_TR/fusiondirectory.po
index 50b6d0f6f2d6979b84a9f5830e66d76336eaaa89..7c470e5a79f1864b1fa17f42777be558351c32be 100644
--- a/systems/locale/tr_TR/fusiondirectory.po
+++ b/systems/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2021
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2021\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -140,11 +144,11 @@ msgstr ""
 
 #: admin/systems/serverService-list.xml:54 admin/systems/system-list.xml:90
 msgid "Create"
-msgstr ""
+msgstr "OluÅŸtur"
 
 #: admin/systems/serverService-list.xml:69 admin/systems/system-list.xml:127
 msgid "Remove"
-msgstr ""
+msgstr "Kaldır"
 
 #: admin/systems/serverService-list.xml:89
 msgid "Get status"
@@ -455,7 +459,7 @@ msgstr ""
 #: admin/systems/services/shares/class_serviceShare.inc:59
 #: admin/systems/class_systemImport.inc:47
 msgid "Type"
-msgstr ""
+msgstr "Tür"
 
 #: admin/systems/services/shares/class_serviceShare.inc:59
 msgid "Type of share"
@@ -490,7 +494,7 @@ msgstr ""
 #: admin/systems/class_serverService.inc:294
 #: addons/dashboard/class_dashBoardNetwork.inc:81
 msgid "Error"
-msgstr ""
+msgstr "Hata"
 
 #: admin/systems/services/shares/class_serviceShare.inc:105
 msgid "You need to configure encodings first"
@@ -498,7 +502,7 @@ msgstr ""
 
 #: admin/systems/services/shares/class_serviceShare.inc:112
 msgid "Warning"
-msgstr ""
+msgstr "İkaz"
 
 #: admin/systems/services/shares/class_serviceShare.inc:112
 #, php-format
@@ -927,7 +931,7 @@ msgstr ""
 
 #: config/systems/class_systemsPluginConfig.inc:100
 msgid "Label"
-msgstr ""
+msgstr "Etiket"
 
 #: config/systems/class_systemsPluginConfig.inc:100
 msgid "The encoding displayed name"
diff --git a/systems/locale/ug/fusiondirectory.po b/systems/locale/ug/fusiondirectory.po
index ca597289a1f920f05c72ba171ef256b14aad0b8e..74e0cfe007c94abd716464b05ba89a1045ced102 100644
--- a/systems/locale/ug/fusiondirectory.po
+++ b/systems/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/systems/class_phoneGeneric.inc:32
 #: admin/systems/class_phoneGeneric.inc:36
@@ -1045,6 +1045,7 @@ msgstr ""
 msgid "Only one system is configured to run an argonaut client."
 msgid_plural "%1 systems are configured to run an argonaut client."
 msgstr[0] ""
+msgstr[1] ""
 
 #: addons/dashboard/systems_stats.tpl.c:11
 msgid "But no system is configured to run an argonaut client!"
@@ -1058,3 +1059,4 @@ msgid_plural ""
 "%1 systems are configured to run an argonaut client, but there is no "
 "argonaut server configured!"
 msgstr[0] ""
+msgstr[1] ""
diff --git a/systems/locale/vi_VN/fusiondirectory.po b/systems/locale/vi_VN/fusiondirectory.po
index f3ec846f8ed473467997c03c6e8dbc63d7752ea9..23b241632be693862585f766b15d86fb5dfdafb3 100644
--- a/systems/locale/vi_VN/fusiondirectory.po
+++ b/systems/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/systems/locale/zh/fusiondirectory.po b/systems/locale/zh/fusiondirectory.po
index 76e4e3a6e41dd5436dc7d8e6a28e1a493956c608..73896d41b7e0d7d6446cdaa2f465f33adfcf7003 100644
--- a/systems/locale/zh/fusiondirectory.po
+++ b/systems/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/systems/locale/zh_TW/fusiondirectory.po b/systems/locale/zh_TW/fusiondirectory.po
index 72a85832ee0db364a2f80d2136121b6f7aeaf12f..bbe1e9b021764429fa7c1bcabaae58aac6a43ca8 100644
--- a/systems/locale/zh_TW/fusiondirectory.po
+++ b/systems/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/user-reminder/config/user-reminder/class_userReminderConfig.inc b/user-reminder/config/user-reminder/class_userReminderConfig.inc
index 752b7d66f76623358d2a5f1010aa495c511098ce..0bdf10be05b6b739f50306d31c033746ebaaaaea 100644
--- a/user-reminder/config/user-reminder/class_userReminderConfig.inc
+++ b/user-reminder/config/user-reminder/class_userReminderConfig.inc
@@ -20,66 +20,66 @@
 
 class userReminderConfig extends simplePlugin
 {
-  var $objectclasses  = array('fdUserReminderPluginConf');
+  var $objectclasses  = ['fdUserReminderPluginConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('User reminder'),
       'plDescription'   => _('Configuration for the reminder of accounts expiration'),
-      'plObjectType'    => array('configuration'),
+      'plObjectType'    => ['configuration'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('User reminder settings'),
-        'attrs' => array(
-          new IntAttribute (
+        'attrs' => [
+          new IntAttribute(
             _('Delay before expiration'), _('Days before expiration to send the first mail'),
             'fdUserReminderAlertDelay', TRUE,
             1, FALSE, 15
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Delay before sending again'), _('Days before sending a second mail (0 to disable)'),
             'fdUserReminderResendDelay', TRUE,
             0, FALSE, 7
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Extension of the validity'), _('Extension of the duration of the account in days'),
             'fdUserReminderPostponeDays', TRUE,
             1, FALSE, 15
           ),
-          new MailAttribute (
+          new MailAttribute(
             _('Sender email address'), _('Email address from which mails will be sent'),
             'fdUserReminderEmail', TRUE,
             'to.be@chang.ed'
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Allow use of alternate addresses'), _('Whether the field gosaMailAlternateAddress should be used as well to send reminders'),
             'fdUserReminderUseAlternate', TRUE,
             TRUE
           ),
-        )
-      ),
-      'emailppolicy' => array(
+        ]
+      ],
+      'emailppolicy' => [
         'name'  => _('Ppolicy email settings'),
-        'attrs' => array(
-          new BooleanAttribute (
+        'attrs' => [
+          new BooleanAttribute(
             _('Forward alerts to the manager'), _('Forward ppolicy alerts to the manager'),
             'fdUserReminderForwardPpolicyAlert', FALSE,
             TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Subject'), _('Subject of the ppolicy alert email'),
             'fdUserReminderPpolicyAlertSubject', FALSE,
             _('[FusionDirectory] Your password is about to expire')
           ),
-          new TextAreaAttribute (
+          new TextAreaAttribute(
             _('Body (%s are cn and login)'),
             _('Body of the ppolicy alert email, sent when the user password is about to expire. Use %s for the cn and uid.'),
             'fdUserReminderPpolicyAlertBody', FALSE,
@@ -90,22 +90,22 @@ class userReminderConfig extends simplePlugin
               (empty($_SERVER['REQUEST_URI']) ? $_SERVER['PATH_INFO'] : $_SERVER['REQUEST_URI']).
               "\n")
           )
-        )
-      ),
-      'email1' => array(
+        ]
+      ],
+      'email1' => [
         'name'  => _('Alert email settings'),
-        'attrs' => array(
-          new BooleanAttribute (
+        'attrs' => [
+          new BooleanAttribute(
             _('Forward alerts to the manager'), _('Forward alerts to the manager'),
             'fdUserReminderForwardAlert', TRUE,
             TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Subject'), _('Subject of the alert email'),
             'fdUserReminderAlertSubject', FALSE,
             _('[FusionDirectory] Your account is about to expire')
           ),
-          new TextAreaAttribute (
+          new TextAreaAttribute(
             _('Body (%s are cn, login, and link token)'),
             _('Body of the alert email, sent when the user is about to expire. Use %s for the cn, uid and token.'),
             'fdUserReminderAlertBody', FALSE,
@@ -116,35 +116,35 @@ class userReminderConfig extends simplePlugin
               (empty($_SERVER['REQUEST_URI']) ? $_SERVER['PATH_INFO'] : $_SERVER['REQUEST_URI']).
               '/expired_postpone.php?uid=%2$s&token=%3$s'."\n")
           )
-        )
-      ),
-      'email2' => array(
+        ]
+      ],
+      'email2' => [
         'name'  => _('Confirmation email settings'),
-        'attrs' => array(
-          new BooleanAttribute (
+        'attrs' => [
+          new BooleanAttribute(
             _('Forward confirmation to the manager'), _('Forward account extension confirmation to the manager'),
             'fdUserReminderForwardConfirmation', TRUE,
             TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Subject'), _('Subject of the confirmation email'),
             'fdUserReminderConfirmationSubject', FALSE,
             _('[FusionDirectory] Your account expiration has been postponed')
           ),
-          new TextAreaAttribute (
+          new TextAreaAttribute(
             _('Body (%s are cn and login)'),
             _('Body of the confirmation email, sent when the user has postponed expiration. Use %s for the cn and uid.'),
             'fdUserReminderConfirmationBody', FALSE,
             _('Dear %1$s,'."\n".' your account %2$s expiration has been successfully postponed.'."\n")
           ),
-          new HiddenAttribute (
+          new HiddenAttribute(
             'fdReminderTokenRDN',
             FALSE,
             'ou=reminder'
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE, $attributesInfo = NULL)
@@ -158,7 +158,7 @@ class userReminderConfig extends simplePlugin
     }
   }
 
-  protected function post_save()
+  protected function post_save ()
   {
     global $config;
     $ldap = $config->get_ldap_link();
diff --git a/user-reminder/html/class_expiredUserPostpone.inc b/user-reminder/html/class_expiredUserPostpone.inc
index bf41094ee13a69a2c9d3545c4269fa5b82388b95..d4b593290e30a9a2cbbd21bf60b49b896c96e57d 100644
--- a/user-reminder/html/class_expiredUserPostpone.inc
+++ b/user-reminder/html/class_expiredUserPostpone.inc
@@ -25,7 +25,7 @@ require_once('variables.inc');
 
 class expiredUserPostpone extends standAlonePage
 {
-  function readLdapConfig()
+  function readLdapConfig ()
   {
     global $config;
     $this->forward_postpone = ($config->get_cfg_value('userReminderForwardConfirmation', 'TRUE') == 'TRUE');
@@ -39,7 +39,7 @@ class expiredUserPostpone extends standAlonePage
     return TRUE;
   }
 
-  function execute()
+  function execute ()
   {
     global $error_collector, $error_collector_mailto;
     if (!$this->activated) {
@@ -50,7 +50,7 @@ class expiredUserPostpone extends standAlonePage
       // Check if the token match
       $this->uid = $_GET['uid'];
       if ($this->checkToken($_GET['token'])) {
-        $this->message = array();
+        $this->message = [];
         $this->postponeExpiration();
         if (!empty($this->message)) {
           msg_dialog::displayChecks($this->message);
@@ -95,7 +95,7 @@ class expiredUserPostpone extends standAlonePage
     $smarty->display(get_template_path('user-reminder.tpl'));
   }
 
-  function checkToken($token)
+  function checkToken ($token)
   {
     global $config;
     $sha_token = '{SHA}'.base64_encode(hash('sha256', 'expired'.$token, TRUE));
@@ -117,7 +117,7 @@ class expiredUserPostpone extends standAlonePage
     }
   }
 
-  function deleteToken()
+  function deleteToken ()
   {
     global $config;
 
@@ -130,7 +130,7 @@ class expiredUserPostpone extends standAlonePage
     }
   }
 
-  function postponeExpiration()
+  function postponeExpiration ()
   {
     global $config;
     $dn = $this->getUserDn();
@@ -167,13 +167,13 @@ class expiredUserPostpone extends standAlonePage
     if ($this->forward_postpone) {
       $ldap = $config->get_ldap_link();
       if (empty($manager_dn)) {
-        $ldap->cat($userTabs->getBaseObject()->base, array('manager'));
+        $ldap->cat($userTabs->getBaseObject()->base, ['manager']);
         if ($attrs = $ldap->fetch() && isset($attrs['manager'][0])) {
           $manager_dn = $attrs['manager'][0];
         }
       }
       if (!empty($manager_dn)) {
-        $ldap->cat($manager_dn, array('cn', 'mail', 'gosaMailAlternateAddress', 'supannAutreMail', 'fdPrivateMail'));
+        $ldap->cat($manager_dn, ['cn', 'mail', 'gosaMailAlternateAddress', 'supannAutreMail', 'fdPrivateMail']);
         if ($attrs = $ldap->fetch()) {
           if (!empty($attrs['mail'][0])) {
             $manager_mail = $attrs['mail'][0];
@@ -190,7 +190,7 @@ class expiredUserPostpone extends standAlonePage
     $this->sendConfirmationMail($cn, $email_address, $manager_mail);
   }
 
-  function sendConfirmationMail($cn, $email_address, $manager_mail)
+  function sendConfirmationMail ($cn, $email_address, $manager_mail)
   {
     if (empty($this->mail_body) || empty($this->mail_subject)) {
       return;
@@ -206,7 +206,7 @@ class expiredUserPostpone extends standAlonePage
     }
   }
 
-  function getUserDn()
+  function getUserDn ()
   {
     $users = objects::ls('user', NULL, NULL, '(uid='.$this->uid.')');
 
diff --git a/user-reminder/locale/af_ZA/fusiondirectory.po b/user-reminder/locale/af_ZA/fusiondirectory.po
index ab092b1ea83b4ebf76e8de1ffec281899b10b285..72b39632cc422f99c76aef20c034d5086814a02a 100644
--- a/user-reminder/locale/af_ZA/fusiondirectory.po
+++ b/user-reminder/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/user-reminder/locale/ar/fusiondirectory.po b/user-reminder/locale/ar/fusiondirectory.po
index ce3049c9765cab2a2684130dfa577acb7e5bbc32..5f2176c6a4f7e0e50f91490749cea7d9c5d3173b 100644
--- a/user-reminder/locale/ar/fusiondirectory.po
+++ b/user-reminder/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/user-reminder/locale/ca/fusiondirectory.po b/user-reminder/locale/ca/fusiondirectory.po
index 6d3b428d18a2db155d01aaf85c6ce358c7045c1e..3f24ff397a0887dd545c87be5c52cbaf36a3f847 100644
--- a/user-reminder/locale/ca/fusiondirectory.po
+++ b/user-reminder/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/user-reminder/locale/cs_CZ/fusiondirectory.po b/user-reminder/locale/cs_CZ/fusiondirectory.po
index ae6b53ead5aee96c2695a76af6174dfbcc913cdf..c6a7f66e55c11d1aeeda4c367885fb48514475dc 100644
--- a/user-reminder/locale/cs_CZ/fusiondirectory.po
+++ b/user-reminder/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/user-reminder/locale/de/fusiondirectory.po b/user-reminder/locale/de/fusiondirectory.po
index 39a573b8143dedde9b57071d484a0794a7ea2bb0..9c50a0be657827fa4eb385caf4ef2fc241decf63 100644
--- a/user-reminder/locale/de/fusiondirectory.po
+++ b/user-reminder/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/user-reminder/locale/el_GR/fusiondirectory.po b/user-reminder/locale/el_GR/fusiondirectory.po
index c46dbfbd68aea94bca47bb60d510df8e56a1b092..f3a311263a08dbf1efd70c2a087b51bd2c7a4392 100644
--- a/user-reminder/locale/el_GR/fusiondirectory.po
+++ b/user-reminder/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/user-reminder/locale/en/fusiondirectory.po b/user-reminder/locale/en/fusiondirectory.po
index fc2e3eefb26d3491360a33e920985b0245600ed9..b3132d320badad931db3b30a64c0f640aac2f458 100644
--- a/user-reminder/locale/en/fusiondirectory.po
+++ b/user-reminder/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -61,40 +61,90 @@ msgstr ""
 msgid "Email address from which mails will be sent"
 msgstr ""
 
-#: config/user-reminder/class_userReminderConfig.inc:65
-msgid "Alert email settings"
+#: config/user-reminder/class_userReminderConfig.inc:63
+msgid "Allow use of alternate addresses"
 msgstr ""
 
-#: config/user-reminder/class_userReminderConfig.inc:68
-msgid "Forward alerts to the manager"
+#: config/user-reminder/class_userReminderConfig.inc:63
+msgid ""
+"Whether the field gosaMailAlternateAddress should be used as well to send "
+"reminders"
+msgstr ""
+
+#: config/user-reminder/class_userReminderConfig.inc:70
+msgid "Ppolicy email settings"
 msgstr ""
 
 #: config/user-reminder/class_userReminderConfig.inc:73
 #: config/user-reminder/class_userReminderConfig.inc:99
-msgid "Subject"
+msgid "Forward alerts to the manager"
 msgstr ""
 
 #: config/user-reminder/class_userReminderConfig.inc:73
+msgid "Forward ppolicy alerts to the manager"
+msgstr ""
+
+#: config/user-reminder/class_userReminderConfig.inc:78
+#: config/user-reminder/class_userReminderConfig.inc:104
+#: config/user-reminder/class_userReminderConfig.inc:130
+msgid "Subject"
+msgstr ""
+
+#: config/user-reminder/class_userReminderConfig.inc:78
+msgid "Subject of the ppolicy alert email"
+msgstr ""
+
+#: config/user-reminder/class_userReminderConfig.inc:80
+msgid "[FusionDirectory] Your password is about to expire"
+msgstr ""
+
+#: config/user-reminder/class_userReminderConfig.inc:83
+#: config/user-reminder/class_userReminderConfig.inc:135
+#, php-format
+msgid "Body (%s are cn and login)"
+msgstr ""
+
+#: config/user-reminder/class_userReminderConfig.inc:84
+#, php-format
+msgid ""
+"Body of the ppolicy alert email, sent when the user password is about to "
+"expire. Use %s for the cn and uid."
+msgstr ""
+
+#: config/user-reminder/class_userReminderConfig.inc:86
+#, php-format
+msgid ""
+"Dear %1$s,\n"
+"your password for account %2$s is about to expire, please change your "
+"password: \n"
+"https://"
+msgstr ""
+
+#: config/user-reminder/class_userReminderConfig.inc:96
+msgid "Alert email settings"
+msgstr ""
+
+#: config/user-reminder/class_userReminderConfig.inc:104
 msgid "Subject of the alert email"
 msgstr ""
 
-#: config/user-reminder/class_userReminderConfig.inc:75
+#: config/user-reminder/class_userReminderConfig.inc:106
 msgid "[FusionDirectory] Your account is about to expire"
 msgstr ""
 
-#: config/user-reminder/class_userReminderConfig.inc:78
+#: config/user-reminder/class_userReminderConfig.inc:109
 #, php-format
 msgid "Body (%s are cn, login, and link token)"
 msgstr ""
 
-#: config/user-reminder/class_userReminderConfig.inc:79
+#: config/user-reminder/class_userReminderConfig.inc:110
 #, php-format
 msgid ""
 "Body of the alert email, sent when the user is about to expire. Use %s for "
 "the cn, uid and token."
 msgstr ""
 
-#: config/user-reminder/class_userReminderConfig.inc:81
+#: config/user-reminder/class_userReminderConfig.inc:112
 #, php-format
 msgid ""
 "Dear %1$s,\n"
@@ -102,59 +152,54 @@ msgid ""
 "https://"
 msgstr ""
 
-#: config/user-reminder/class_userReminderConfig.inc:91
+#: config/user-reminder/class_userReminderConfig.inc:122
 msgid "Confirmation email settings"
 msgstr ""
 
-#: config/user-reminder/class_userReminderConfig.inc:94
+#: config/user-reminder/class_userReminderConfig.inc:125
 msgid "Forward confirmation to the manager"
 msgstr ""
 
-#: config/user-reminder/class_userReminderConfig.inc:94
+#: config/user-reminder/class_userReminderConfig.inc:125
 msgid "Forward account extension confirmation to the manager"
 msgstr ""
 
-#: config/user-reminder/class_userReminderConfig.inc:99
+#: config/user-reminder/class_userReminderConfig.inc:130
 msgid "Subject of the confirmation email"
 msgstr ""
 
-#: config/user-reminder/class_userReminderConfig.inc:101
+#: config/user-reminder/class_userReminderConfig.inc:132
 msgid "[FusionDirectory] Your account expiration has been postponed"
 msgstr ""
 
-#: config/user-reminder/class_userReminderConfig.inc:104
-#, php-format
-msgid "Body (%s are cn and login)"
-msgstr ""
-
-#: config/user-reminder/class_userReminderConfig.inc:105
+#: config/user-reminder/class_userReminderConfig.inc:136
 #, php-format
 msgid ""
 "Body of the confirmation email, sent when the user has postponed expiration. "
 "Use %s for the cn and uid."
 msgstr ""
 
-#: config/user-reminder/class_userReminderConfig.inc:107
+#: config/user-reminder/class_userReminderConfig.inc:138
 #, php-format
 msgid ""
 "Dear %1$s,\n"
 " your account %2$s expiration has been successfully postponed.\n"
 msgstr ""
 
-#: html/class_expiredUserPostpone.inc:58
+#: html/class_expiredUserPostpone.inc:59
 msgid "This token is invalid"
 msgstr ""
 
-#: html/class_expiredUserPostpone.inc:197
+#: html/class_expiredUserPostpone.inc:205
 msgid "Contact your administrator, there was a problem with mail server"
 msgstr ""
 
-#: html/class_expiredUserPostpone.inc:206
+#: html/class_expiredUserPostpone.inc:214
 #, php-format
 msgid "Did not find an account with login \"%s\""
 msgstr ""
 
-#: html/class_expiredUserPostpone.inc:209
+#: html/class_expiredUserPostpone.inc:217
 #, php-format
 msgid "Found multiple accounts with login \"%s\""
 msgstr ""
diff --git a/user-reminder/locale/es/fusiondirectory.po b/user-reminder/locale/es/fusiondirectory.po
index c36200148f95c369060815683eb5572303848d3a..e8fed1264a8576ec0039e78ef3d4b7d051b84a4f 100644
--- a/user-reminder/locale/es/fusiondirectory.po
+++ b/user-reminder/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/user-reminder/class_userReminderConfig.inc:28
 msgid "User reminder"
diff --git a/user-reminder/locale/es_CO/fusiondirectory.po b/user-reminder/locale/es_CO/fusiondirectory.po
index 9e03eef6aa150e1e4fa0e0e63f738484754e4823..1987c9339c7ffd799a9a088ad22d5b8c19c3e610 100644
--- a/user-reminder/locale/es_CO/fusiondirectory.po
+++ b/user-reminder/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/user-reminder/class_userReminderConfig.inc:28
 msgid "User reminder"
diff --git a/user-reminder/locale/es_VE/fusiondirectory.po b/user-reminder/locale/es_VE/fusiondirectory.po
index 7dfdb71f7ca5b2117a6515f0662ce4e60f2c8ecb..180b98539f9cac2cec8024d3784f7c9e5e2ec042 100644
--- a/user-reminder/locale/es_VE/fusiondirectory.po
+++ b/user-reminder/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/user-reminder/class_userReminderConfig.inc:28
 msgid "User reminder"
diff --git a/user-reminder/locale/fa_IR/fusiondirectory.po b/user-reminder/locale/fa_IR/fusiondirectory.po
index fe6d842d20b225c9c3ac83bed8afe308a0962fe5..86c1910bd80bbf29a9f400e36e1c73240d0b51a5 100644
--- a/user-reminder/locale/fa_IR/fusiondirectory.po
+++ b/user-reminder/locale/fa_IR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
diff --git a/user-reminder/locale/fi_FI/fusiondirectory.po b/user-reminder/locale/fi_FI/fusiondirectory.po
index 197341cc2a576da8369f603e3bf405fd523aa903..1cb813956c9c9ab8b91c903edf7550f9ccf9ff9b 100644
--- a/user-reminder/locale/fi_FI/fusiondirectory.po
+++ b/user-reminder/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/user-reminder/locale/fr/fusiondirectory.po b/user-reminder/locale/fr/fusiondirectory.po
index 10ab524373038a197c716ca24a5b695c4a8cd50d..4598b2050eb21033b3e6d51d26a0534af1ac9452 100644
--- a/user-reminder/locale/fr/fusiondirectory.po
+++ b/user-reminder/locale/fr/fusiondirectory.po
@@ -5,22 +5,22 @@
 # 
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2017
-# Benoit Mortier <benoit.mortier@opensides.be>, 2018
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
-"Last-Translator: Benoit Mortier <benoit.mortier@opensides.be>, 2018\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/user-reminder/class_userReminderConfig.inc:28
 msgid "User reminder"
diff --git a/user-reminder/locale/hu_HU/fusiondirectory.po b/user-reminder/locale/hu_HU/fusiondirectory.po
index 9211caf4895beb6fc94071c319e48ffe0ef2d9c9..132916cd579bdf502a881201e6c4cd8b52fb57be 100644
--- a/user-reminder/locale/hu_HU/fusiondirectory.po
+++ b/user-reminder/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/user-reminder/locale/id/fusiondirectory.po b/user-reminder/locale/id/fusiondirectory.po
index 20ebc74eab9ec81734da992f6f68d7222da56a1c..95b2b263ba7c3d8d919304971ff881d6cfae8707 100644
--- a/user-reminder/locale/id/fusiondirectory.po
+++ b/user-reminder/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/user-reminder/locale/it_IT/fusiondirectory.po b/user-reminder/locale/it_IT/fusiondirectory.po
index f7e3694b3f607710ea553290597b59efa521147f..0c51220c88d89a1395c4d92d3120fa413076d34d 100644
--- a/user-reminder/locale/it_IT/fusiondirectory.po
+++ b/user-reminder/locale/it_IT/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: Paola Penati <paola.penati@opensides.be>, 2018\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -20,7 +20,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/user-reminder/class_userReminderConfig.inc:28
 msgid "User reminder"
diff --git a/user-reminder/locale/ja/fusiondirectory.po b/user-reminder/locale/ja/fusiondirectory.po
index 115215820d64e924b9c809d81cadcccf8a64730d..5264146a49a33b305d733bb5cc0c382e6d7aa5a2 100644
--- a/user-reminder/locale/ja/fusiondirectory.po
+++ b/user-reminder/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/user-reminder/locale/ko/fusiondirectory.po b/user-reminder/locale/ko/fusiondirectory.po
index efe9d8a8facadc705a294fbbdbc57077c99cb936..eebcfb655249afba4c2979bc1382d7b446052ae2 100644
--- a/user-reminder/locale/ko/fusiondirectory.po
+++ b/user-reminder/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/user-reminder/locale/lv/fusiondirectory.po b/user-reminder/locale/lv/fusiondirectory.po
index 57ce62af032fc03c6cc930f7d6a2765ea0306d6e..fb66870b07c45af804d3d776ace7d6d383b780f4 100644
--- a/user-reminder/locale/lv/fusiondirectory.po
+++ b/user-reminder/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/user-reminder/locale/nb/fusiondirectory.po b/user-reminder/locale/nb/fusiondirectory.po
index 7a3bad342adb3b79f0ae1644face291d0e12b196..2fd0f51216e16aef6f6ac8728ce86cb898e3cbf1 100644
--- a/user-reminder/locale/nb/fusiondirectory.po
+++ b/user-reminder/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/user-reminder/locale/nl/fusiondirectory.po b/user-reminder/locale/nl/fusiondirectory.po
index 38a4831a35e36a0d9263c60df1e556b154dc26b9..557053ce8a2bb9d156430caa86ec1e7c606d01d7 100644
--- a/user-reminder/locale/nl/fusiondirectory.po
+++ b/user-reminder/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2018\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/user-reminder/locale/pl/fusiondirectory.po b/user-reminder/locale/pl/fusiondirectory.po
index 99b167404752e9165177a99fddc600296587e2f6..274cd842743993c45fd70b5be311332e37cd1202 100644
--- a/user-reminder/locale/pl/fusiondirectory.po
+++ b/user-reminder/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/user-reminder/locale/pt/fusiondirectory.po b/user-reminder/locale/pt/fusiondirectory.po
index b116c3207cf37162f1c7cc4694205db49fc13442..9b02928190c6fc946820add0731cacc75eb1d37d 100644
--- a/user-reminder/locale/pt/fusiondirectory.po
+++ b/user-reminder/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/user-reminder/class_userReminderConfig.inc:28
 msgid "User reminder"
diff --git a/user-reminder/locale/pt_BR/fusiondirectory.po b/user-reminder/locale/pt_BR/fusiondirectory.po
index edf1c6cddef8f2ace37e10e56bf3524344c73891..5e2608f8c85667f743fa8cd1ca0db1035865905e 100644
--- a/user-reminder/locale/pt_BR/fusiondirectory.po
+++ b/user-reminder/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/user-reminder/class_userReminderConfig.inc:28
 msgid "User reminder"
diff --git a/user-reminder/locale/ru/fusiondirectory.po b/user-reminder/locale/ru/fusiondirectory.po
index af82504f90d11915a573cc32cd78f3c3ba68a0fa..0902519f50cfda8f3dba19d1af1d455c9246665e 100644
--- a/user-reminder/locale/ru/fusiondirectory.po
+++ b/user-reminder/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/user-reminder/locale/ru@petr1708/fusiondirectory.po b/user-reminder/locale/ru@petr1708/fusiondirectory.po
index 890b8197c18d2416d95b53d7e3d647b5c5b5dde1..78edb0a634dfb00086135c370710b1267124602f 100644
--- a/user-reminder/locale/ru@petr1708/fusiondirectory.po
+++ b/user-reminder/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/user-reminder/locale/sv/fusiondirectory.po b/user-reminder/locale/sv/fusiondirectory.po
index ea64eaf58d8dcc3a7f3fcfb28628dfb82d328cff..1f44c2b06cbaf920ee5b886a23c8912460912a25 100644
--- a/user-reminder/locale/sv/fusiondirectory.po
+++ b/user-reminder/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/user-reminder/locale/tr_TR/fusiondirectory.po b/user-reminder/locale/tr_TR/fusiondirectory.po
index 76e35aba0621cf861998898cf2c511c9094e55e7..32aa1c8ee9d5a4022624c703d9b3791335d9bff7 100644
--- a/user-reminder/locale/tr_TR/fusiondirectory.po
+++ b/user-reminder/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2020
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2020\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -215,7 +219,7 @@ msgstr ""
 #: ihtml/themes/breezy/user-reminder.tpl.c:11
 #: ihtml/themes/breezy/user-reminder.tpl.c:14
 msgid "Success"
-msgstr ""
+msgstr "Başarı"
 
 #: ihtml/themes/breezy/user-reminder.tpl.c:17
 msgid "Your expiration has been postponed successfully."
@@ -224,7 +228,7 @@ msgstr ""
 #: ihtml/themes/breezy/user-reminder.tpl.c:20
 #: ihtml/themes/breezy/user-reminder.tpl.c:23
 msgid "Error"
-msgstr ""
+msgstr "Hata"
 
 #: ihtml/themes/breezy/user-reminder.tpl.c:26
 msgid "There was a problem"
diff --git a/user-reminder/locale/ug/fusiondirectory.po b/user-reminder/locale/ug/fusiondirectory.po
index ba6d7adbae79746c71101dcaa5a5fca0a72ce7ef..4d4c0c625acbe97f6c06898d5069a407b42739e6 100644
--- a/user-reminder/locale/ug/fusiondirectory.po
+++ b/user-reminder/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: config/user-reminder/class_userReminderConfig.inc:28
 msgid "User reminder"
diff --git a/user-reminder/locale/vi_VN/fusiondirectory.po b/user-reminder/locale/vi_VN/fusiondirectory.po
index 46e723f80ed377771df2a99a45f9a88522a7ab0e..e6b111bd362cd794309cf75bea2b02b3787a02f1 100644
--- a/user-reminder/locale/vi_VN/fusiondirectory.po
+++ b/user-reminder/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/user-reminder/locale/zh/fusiondirectory.po b/user-reminder/locale/zh/fusiondirectory.po
index 817e33f317cc685a7d71003ff668f2b851f4d227..2a679060597139cca58b03ec883ecfc23f4fb6cf 100644
--- a/user-reminder/locale/zh/fusiondirectory.po
+++ b/user-reminder/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/user-reminder/locale/zh_TW/fusiondirectory.po b/user-reminder/locale/zh_TW/fusiondirectory.po
index 0c51233424c22d57100d309c4dd9325a1b0d1302..fc90ebf6f50d8374a60f752c28ffca8491a8ca82 100644
--- a/user-reminder/locale/zh_TW/fusiondirectory.po
+++ b/user-reminder/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/weblink/admin/systems/weblink/class_webLink.inc b/weblink/admin/systems/weblink/class_webLink.inc
index c0db90c86a35721be16d36b39bf1e6214f666f39..d50f042b8e3a8a41b048347b23eeb591579595b8 100644
--- a/weblink/admin/systems/weblink/class_webLink.inc
+++ b/weblink/admin/systems/weblink/class_webLink.inc
@@ -20,54 +20,54 @@
 
 class webLink extends simplePlugin
 {
-  var $objectclasses  = array('webLink');
+  var $objectclasses  = ['webLink'];
   var $displayHeader  = TRUE;
 
-  var $inheritance = array('gosaGroupOfNames' => 'member');
+  var $inheritance = ['gosaGroupOfNames' => 'member'];
 
   static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Web link'),
       'plDescription'   => _('Edit web link'),
       'plIcon'          => 'geticon.php?context=applications&icon=weblink&size=48',
       'plSmallIcon'     => 'geticon.php?context=applications&icon=weblink&size=16',
       'plSelfModify'    => FALSE,
-      'plObjectType'    => array('workstation','server','ipmi','component','printer'),
+      'plObjectType'    => ['workstation','server','ipmi','component','printer'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'links' => array(
+    return [
+      'links' => [
         'name'  => _('Links'),
-        'attrs' => array(
-          new DisplayAttribute (
+        'attrs' => [
+          new DisplayAttribute(
             _('Links'), _('Web links to this computer'),
             'fdWebLink', FALSE
           ),
-        )
-      ),
-      'settings' => array(
+        ]
+      ],
+      'settings' => [
         'name'  => _('Settings'),
-        'attrs' => array(
-          new SelectAttribute (
+        'attrs' => [
+          new SelectAttribute(
             _('Protocol'), _('Protocol to use to access this computer Web page'),
             'fdWebLinkProtocol', TRUE,
-            array('https', 'http')
+            ['https', 'http']
           ),
-          new SetAttribute (
-            new URLAttribute (
+          new SetAttribute(
+            new URLAttribute(
               _('Arbitrary links'), _('Any URL you want to associate to this computer'),
               'fdWebLinkURL', FALSE
             )
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -77,7 +77,7 @@ class webLink extends simplePlugin
     $this->attributesAccess['fdWebLink']->setAllowHTML(TRUE);
   }
 
-  function renderAttributes($readOnly = FALSE)
+  function renderAttributes ($readOnly = FALSE)
   {
     $autoLinks = $this->computeLinks();
     $html = '';
@@ -103,7 +103,7 @@ class webLink extends simplePlugin
     return parent::renderAttributes($readOnly);
   }
 
-  function computeLinks()
+  function computeLinks ()
   {
     global $config;
     if ($this->member_of_group) {
@@ -114,7 +114,7 @@ class webLink extends simplePlugin
     $basetab  = $this->parent->getBaseObject();
     $hosts    = $basetab->ipHostNumber;
     if (!is_array($hosts)) {
-      $hosts = array($hosts);
+      $hosts = [$hosts];
     }
     if (isset($this->parent->by_object['dnsHost']) && ($this->parent->by_object['dnsHost']->is_account)) {
       $zones  = $this->parent->by_object['dnsHost']->fdDNSZoneDn;
diff --git a/weblink/locale/af_ZA/fusiondirectory.po b/weblink/locale/af_ZA/fusiondirectory.po
index daa3213b6e523ce4953cb27976de96f300f22c8d..abae5210fc09ad9cedd519f5944d3d2c7b208e0f 100644
--- a/weblink/locale/af_ZA/fusiondirectory.po
+++ b/weblink/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/weblink/locale/ar/fusiondirectory.po b/weblink/locale/ar/fusiondirectory.po
index b571a4ab086b1c4cecc54b331c5e50a28b932c11..0e7c96863f604bffe6c1b5a69af29488b75948a3 100644
--- a/weblink/locale/ar/fusiondirectory.po
+++ b/weblink/locale/ar/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
 "MIME-Version: 1.0\n"
diff --git a/weblink/locale/ca/fusiondirectory.po b/weblink/locale/ca/fusiondirectory.po
index ad30744160e3969402ef5e461256996fa347897d..5015b6d71e5dd0c07d2207dbe43dbda04a214adf 100644
--- a/weblink/locale/ca/fusiondirectory.po
+++ b/weblink/locale/ca/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
 "MIME-Version: 1.0\n"
diff --git a/weblink/locale/cs_CZ/fusiondirectory.po b/weblink/locale/cs_CZ/fusiondirectory.po
index 8510394c7a3a1a4bd779b8b2ab2984b743649e1e..c5046b36ede1b0d2b8010f832dcd97a80d491323 100644
--- a/weblink/locale/cs_CZ/fusiondirectory.po
+++ b/weblink/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/weblink/locale/de/fusiondirectory.po b/weblink/locale/de/fusiondirectory.po
index 70ca8c25839bf3ba0e4caf2b0829a2f3e376a841..55cae126d321fe0e7c741fa2de5759bf047ff8a9 100644
--- a/weblink/locale/de/fusiondirectory.po
+++ b/weblink/locale/de/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: Ettore Atalan <atalanttore@googlemail.com>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/weblink/locale/el_GR/fusiondirectory.po b/weblink/locale/el_GR/fusiondirectory.po
index c2534a2a8dd110de0ff77c224778ff90679df045..6d9858e107d940bcbb80c74e5219958306f2f73b 100644
--- a/weblink/locale/el_GR/fusiondirectory.po
+++ b/weblink/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/weblink/locale/en/fusiondirectory.po b/weblink/locale/en/fusiondirectory.po
index 6253cb76289f1ce796180e3cfebfd60c753dd1c2..a66a4fe6b185fce3db971a8deb398e1289392e7d 100644
--- a/weblink/locale/en/fusiondirectory.po
+++ b/weblink/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -18,7 +18,6 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 
 #: admin/systems/weblink/class_webLink.inc:31
-#: admin/systems/weblink/class_webLink.inc:44
 msgid "Web link"
 msgstr ""
 
@@ -26,18 +25,31 @@ msgstr ""
 msgid "Edit web link"
 msgstr ""
 
-#: admin/systems/weblink/class_webLink.inc:47
+#: admin/systems/weblink/class_webLink.inc:46
+#: admin/systems/weblink/class_webLink.inc:49
+msgid "Links"
+msgstr ""
+
+#: admin/systems/weblink/class_webLink.inc:49
+msgid "Web links to this computer"
+msgstr ""
+
+#: admin/systems/weblink/class_webLink.inc:55
+msgid "Settings"
+msgstr ""
+
+#: admin/systems/weblink/class_webLink.inc:58
 msgid "Protocol"
 msgstr ""
 
-#: admin/systems/weblink/class_webLink.inc:47
+#: admin/systems/weblink/class_webLink.inc:58
 msgid "Protocol to use to access this computer Web page"
 msgstr ""
 
-#: admin/systems/weblink/class_webLink.inc:52
-msgid "Links"
+#: admin/systems/weblink/class_webLink.inc:64
+msgid "Arbitrary links"
 msgstr ""
 
-#: admin/systems/weblink/class_webLink.inc:52
-msgid "Web links to this computer"
+#: admin/systems/weblink/class_webLink.inc:64
+msgid "Any URL you want to associate to this computer"
 msgstr ""
diff --git a/weblink/locale/es/fusiondirectory.po b/weblink/locale/es/fusiondirectory.po
index eaa3510ca76e9b14fb71eda13c582dc18d1bc6c8..2f3e750c223e1d714e51aa8e2bc2ab250f8dde40 100644
--- a/weblink/locale/es/fusiondirectory.po
+++ b/weblink/locale/es/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/weblink/class_webLink.inc:31
 msgid "Web link"
diff --git a/weblink/locale/es_CO/fusiondirectory.po b/weblink/locale/es_CO/fusiondirectory.po
index 9420d4dbee9825e2d1dc8a72f88f5477613a688b..ef3f8593e78ac57ffe6f39d22ec5bdb06fa8d4de 100644
--- a/weblink/locale/es_CO/fusiondirectory.po
+++ b/weblink/locale/es_CO/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/weblink/class_webLink.inc:31
 msgid "Web link"
diff --git a/weblink/locale/es_VE/fusiondirectory.po b/weblink/locale/es_VE/fusiondirectory.po
index f204a7bacd4c336941d58877329859b6698aae26..d5fc661c215c6542024f10ab7b9f74a972f2549c 100644
--- a/weblink/locale/es_VE/fusiondirectory.po
+++ b/weblink/locale/es_VE/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/weblink/class_webLink.inc:31
 msgid "Web link"
diff --git a/weblink/locale/fa_IR/fusiondirectory.po b/weblink/locale/fa_IR/fusiondirectory.po
index ce8d28cb7b09b93ef3160ca0d6a87cc6e79bd7e9..49810a2da0ad34367ac28442c35b3f691da15b2f 100644
--- a/weblink/locale/fa_IR/fusiondirectory.po
+++ b/weblink/locale/fa_IR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/weblink/locale/fi_FI/fusiondirectory.po b/weblink/locale/fi_FI/fusiondirectory.po
index 43cb5005128394574d332b432927858c0d108646..211e7b87b2d92ccd3e5b4eb57c3121265275866e 100644
--- a/weblink/locale/fi_FI/fusiondirectory.po
+++ b/weblink/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/weblink/locale/fr/fusiondirectory.po b/weblink/locale/fr/fusiondirectory.po
index 9e6c9becbe299f4385b941e436ff520afb24c255..f8c731b9a86c82e19fa7493e48eb87db4b9095ec 100644
--- a/weblink/locale/fr/fusiondirectory.po
+++ b/weblink/locale/fr/fusiondirectory.po
@@ -5,22 +5,22 @@
 # 
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2017
-# Benoit Mortier <benoit.mortier@opensides.be>, 2017
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2017
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
-"Last-Translator: Benoit Mortier <benoit.mortier@opensides.be>, 2017\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2017\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/weblink/class_webLink.inc:31
 msgid "Web link"
diff --git a/weblink/locale/hu_HU/fusiondirectory.po b/weblink/locale/hu_HU/fusiondirectory.po
index 7d1926522a2ab27378b6a806da84d2260cca1509..7e68172b9919d106618e2847e6f56f933ecf64ab 100644
--- a/weblink/locale/hu_HU/fusiondirectory.po
+++ b/weblink/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/weblink/locale/id/fusiondirectory.po b/weblink/locale/id/fusiondirectory.po
index ca0f885725bc60e402a026ff59f675b9be94860a..5e54f12033100fb2bd161568d27372036be1c232 100644
--- a/weblink/locale/id/fusiondirectory.po
+++ b/weblink/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/weblink/locale/it_IT/fusiondirectory.po b/weblink/locale/it_IT/fusiondirectory.po
index c027efbaa8ac9da7370c7efa3f47a3022bffaca7..5d279602d24eb8eefbcffc13eedc5cee7e718980 100644
--- a/weblink/locale/it_IT/fusiondirectory.po
+++ b/weblink/locale/it_IT/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: Paola Penati <paola.penati@opensides.be>, 2018\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -20,7 +20,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/weblink/class_webLink.inc:31
 msgid "Web link"
diff --git a/weblink/locale/ja/fusiondirectory.po b/weblink/locale/ja/fusiondirectory.po
index 44f4baa87de2f1c065b2fa084152b1df70d5158d..3ca2846c4affb7f1eb8f893c61b3b1bb5fff18c7 100644
--- a/weblink/locale/ja/fusiondirectory.po
+++ b/weblink/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/weblink/locale/ko/fusiondirectory.po b/weblink/locale/ko/fusiondirectory.po
index 7c6b5c84a9ddfe3eb9eebebcef5998a4214ebd47..f522978024354eb5d9f615d735b28c2d643011ae 100644
--- a/weblink/locale/ko/fusiondirectory.po
+++ b/weblink/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/weblink/locale/lv/fusiondirectory.po b/weblink/locale/lv/fusiondirectory.po
index adc0d939a523c581b5c0067af1895af042154d01..1ef4fe1b516c4b00673a9ceba82f4618fd44d517 100644
--- a/weblink/locale/lv/fusiondirectory.po
+++ b/weblink/locale/lv/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
 "MIME-Version: 1.0\n"
diff --git a/weblink/locale/nb/fusiondirectory.po b/weblink/locale/nb/fusiondirectory.po
index 9dadfebd3e33318e89a757edcdffa77486b323b6..5cb11abf4ed14a2d2db0d8e40385a38a8e105a3c 100644
--- a/weblink/locale/nb/fusiondirectory.po
+++ b/weblink/locale/nb/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
 "MIME-Version: 1.0\n"
diff --git a/weblink/locale/nl/fusiondirectory.po b/weblink/locale/nl/fusiondirectory.po
index 8a396f2fdf1fef2a8d8854edaa48a5c52137147a..a1ac926cc8d1666e8ba1d11401c77ff032e7b842 100644
--- a/weblink/locale/nl/fusiondirectory.po
+++ b/weblink/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/weblink/locale/pl/fusiondirectory.po b/weblink/locale/pl/fusiondirectory.po
index b044d6ae9d9ca3043fba4acb35362b089dd0a929..1aba61587c65efb7e96cde35d734aaf414c57858 100644
--- a/weblink/locale/pl/fusiondirectory.po
+++ b/weblink/locale/pl/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
 "MIME-Version: 1.0\n"
diff --git a/weblink/locale/pt/fusiondirectory.po b/weblink/locale/pt/fusiondirectory.po
index c23dd1afad4102319dcdcd1744efcaed93ca1848..026078bf25720fba18b779c4cbd18734b1d9d367 100644
--- a/weblink/locale/pt/fusiondirectory.po
+++ b/weblink/locale/pt/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/weblink/class_webLink.inc:31
 msgid "Web link"
diff --git a/weblink/locale/pt_BR/fusiondirectory.po b/weblink/locale/pt_BR/fusiondirectory.po
index 14c8b6d74f5ecbf488474ae5cfccf7932a0ea0af..dd1b86405bf25ac2a9849b43f1935a0bffc485c6 100644
--- a/weblink/locale/pt_BR/fusiondirectory.po
+++ b/weblink/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: admin/systems/weblink/class_webLink.inc:31
 msgid "Web link"
diff --git a/weblink/locale/ru/fusiondirectory.po b/weblink/locale/ru/fusiondirectory.po
index e4acdc7cab19140f8577ab02c8a6ba7a33c7d786..dbaa84cc937c6a9a6159be97ae73401bfef63247 100644
--- a/weblink/locale/ru/fusiondirectory.po
+++ b/weblink/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/weblink/locale/ru@petr1708/fusiondirectory.po b/weblink/locale/ru@petr1708/fusiondirectory.po
index f9ca22fe607f27955973698cab7e689e6dc9b1e1..37e4d2d5f12a3b9345eaeaca12636cced3b0d5f7 100644
--- a/weblink/locale/ru@petr1708/fusiondirectory.po
+++ b/weblink/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/weblink/locale/sv/fusiondirectory.po b/weblink/locale/sv/fusiondirectory.po
index 1ab600f0b38c954942fcbc4c4dda44f3b9893d94..5f5f2552f85e86591ced9b1714363f7b6b401d0a 100644
--- a/weblink/locale/sv/fusiondirectory.po
+++ b/weblink/locale/sv/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
 "MIME-Version: 1.0\n"
diff --git a/weblink/locale/tr_TR/fusiondirectory.po b/weblink/locale/tr_TR/fusiondirectory.po
index 6ffb5673492515507b1e50aa4c64e988f932e4d1..c567b723083e179bc8b389e309e82a1c1e11fad0 100644
--- a/weblink/locale/tr_TR/fusiondirectory.po
+++ b/weblink/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2020
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2020\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -19,37 +23,38 @@ msgstr ""
 
 #: admin/systems/weblink/class_webLink.inc:31
 msgid "Web link"
-msgstr ""
+msgstr "Web bağlantısı"
 
 #: admin/systems/weblink/class_webLink.inc:32
 msgid "Edit web link"
-msgstr ""
+msgstr "Web bağlantısını düzenle"
 
 #: admin/systems/weblink/class_webLink.inc:46
 #: admin/systems/weblink/class_webLink.inc:49
 msgid "Links"
-msgstr ""
+msgstr "Bağlantılar"
 
 #: admin/systems/weblink/class_webLink.inc:49
 msgid "Web links to this computer"
-msgstr ""
+msgstr "Bu bilgisayardaki web bağlantıları"
 
 #: admin/systems/weblink/class_webLink.inc:55
 msgid "Settings"
-msgstr ""
+msgstr "Ayarlar"
 
 #: admin/systems/weblink/class_webLink.inc:58
 msgid "Protocol"
-msgstr ""
+msgstr "İletişim kuralı"
 
 #: admin/systems/weblink/class_webLink.inc:58
 msgid "Protocol to use to access this computer Web page"
 msgstr ""
+"Bu bilgisayarın Web sayfasına erişmek için kullanılacak iletişim kuralı"
 
 #: admin/systems/weblink/class_webLink.inc:64
 msgid "Arbitrary links"
-msgstr ""
+msgstr "Gelişigüzel bağlantılar"
 
 #: admin/systems/weblink/class_webLink.inc:64
 msgid "Any URL you want to associate to this computer"
-msgstr ""
+msgstr "Bu bilgisayara iliÅŸkilendirmek istediÄŸiniz herhangi bir URL"
diff --git a/weblink/locale/ug/fusiondirectory.po b/weblink/locale/ug/fusiondirectory.po
index 0e10330583f912c60918c9c35ab8c109e5d33b3d..ae356d0dd9c193bb76f92f828482a2d70105a6e0 100644
--- a/weblink/locale/ug/fusiondirectory.po
+++ b/weblink/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: admin/systems/weblink/class_webLink.inc:31
 msgid "Web link"
diff --git a/weblink/locale/vi_VN/fusiondirectory.po b/weblink/locale/vi_VN/fusiondirectory.po
index b7bf445839f3e838002050b004e14daedbc46541..41551bbb888af96ab2de26ff787da2361d6cee45 100644
--- a/weblink/locale/vi_VN/fusiondirectory.po
+++ b/weblink/locale/vi_VN/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
 "MIME-Version: 1.0\n"
diff --git a/weblink/locale/zh/fusiondirectory.po b/weblink/locale/zh/fusiondirectory.po
index 9661d165f244a16b0cb3e10be5de9e880a092b03..182778dc7f6c0c82afd23c3cb377f4dbb88034a0 100644
--- a/weblink/locale/zh/fusiondirectory.po
+++ b/weblink/locale/zh/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
 "MIME-Version: 1.0\n"
diff --git a/weblink/locale/zh_TW/fusiondirectory.po b/weblink/locale/zh_TW/fusiondirectory.po
index 23e7a845b46cf71e0a7cdcff18be2449951701ab..8c760beb8b5e48bbce4cd25542f4e87487cdacb2 100644
--- a/weblink/locale/zh_TW/fusiondirectory.po
+++ b/weblink/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:23+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
diff --git a/webservice/config/class_webserviceConfig.inc b/webservice/config/class_webserviceConfig.inc
index fc2e506e6b6455035d569ce843dcda442e094937..90401799edc60d69aa24483b6fb24f1abdb1a819 100644
--- a/webservice/config/class_webserviceConfig.inc
+++ b/webservice/config/class_webserviceConfig.inc
@@ -20,35 +20,35 @@
 
 class webserviceConfig extends simplePlugin
 {
-  var $objectclasses  = array('fdWebservicePluginConf');
+  var $objectclasses  = ['fdWebservicePluginConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Webservice configuration'),
       'plDescription'   => _('FusionDirectory webservice plugin configuration'),
       'plSelfModify'    => FALSE,
-      'plCategory'      => array('configuration'),
-      'plObjectType'    => array('smallConfig'),
+      'plCategory'      => ['configuration'],
+      'plObjectType'    => ['smallConfig'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Webservice'),
-        'attrs' => array(
-          new BooleanAttribute (
+        'attrs' => [
+          new BooleanAttribute(
             _('Force SSL'), _('Allow only HTTPS JSON-RPC requests'),
             'fdWebserviceForceSSL', TRUE,
             TRUE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/webservice/html/jsonrpc.php b/webservice/html/jsonrpc.php
index d57db17952c7c92ddfbc49d91962524e38648648..096810d7af2468746c75f86bce9ca796cbff60b0 100644
--- a/webservice/html/jsonrpc.php
+++ b/webservice/html/jsonrpc.php
@@ -29,7 +29,7 @@
 ini_set('session.use_cookies', 0);
 ini_set('session.use_only_cookies', 1);
 
-function authenticateHeader($message = 'Authentication required')
+function authenticateHeader ($message = 'Authentication required')
 {
   header('WWW-Authenticate: Basic realm="FusionDirectory"');
   header('HTTP/1.0 401 Unauthorized');
@@ -42,7 +42,7 @@ require_once("functions.inc");
 require_once("variables.inc");
 require_once("jsonrpcphp/jsonRPCServer.php");
 
-function initiateRPCSession($id = NULL, $ldap = NULL, $user = NULL, $pwd = NULL)
+function initiateRPCSession ($id = NULL, $ldap = NULL, $user = NULL, $pwd = NULL)
 {
   global $config, $class_mapping, $BASE_DIR, $ui, $ssl;
 
@@ -125,7 +125,7 @@ class fdRPCService
   {
   }
 
-  function __call($method, $params)
+  function __call ($method, $params)
   {
     global $config;
     if (preg_match('/^_(.*)$/', $method, $m)) {
@@ -134,7 +134,7 @@ class fdRPCService
 
     if ($method == 'listLdaps') {
       $config = new config(CONFIG_DIR."/".CONFIG_FILE, $BASE_DIR);
-      $ldaps = array();
+      $ldaps = [];
       foreach ($config->data['LOCATIONS'] as $id => $location) {
         $ldaps[$id] = $location['NAME'];
       }
@@ -153,10 +153,10 @@ class fdRPCService
     }
     $this->ldap->cd($config->current['BASE']);
 
-    return call_user_func_array(array($this, '_'.$method), $params);
+    return call_user_func_array([$this, '_'.$method], $params);
   }
 
-  protected function checkAccess($type, $tabs = NULL, $dn = NULL)
+  protected function checkAccess ($type, $tabs = NULL, $dn = NULL)
   {
     global $ui;
     $infos = objects::infos($type);
@@ -166,12 +166,12 @@ class fdRPCService
     } else {
       $self = '';
     }
-    if (!$plist->check_access(array('ACL' => $infos['aclCategory'].$self))) {
+    if (!$plist->check_access(['ACL' => $infos['aclCategory'].$self])) {
       throw new FusionDirectoryException("Unsufficient rights for accessing type '$type$self'");
     }
     if ($tabs !== NULL) {
       if (!is_array($tabs)) {
-        $tabs = array($tabs);
+        $tabs = [$tabs];
       }
       foreach ($tabs as $tab) {
         $pInfos = pluglist::pluginInfos($tab);
@@ -181,7 +181,7 @@ class fdRPCService
         if (!isset($pInfos['plCategory'])) {
           throw new FusionDirectoryException("Tab '$tab' of type '$type' has no ACL category");
         }
-        if (!$plist->check_access(array('ACL' => join($self.',', $pInfos['plCategory']).$self))) {
+        if (!$plist->check_access(['ACL' => join($self.',', $pInfos['plCategory']).$self])) {
           throw new FusionDirectoryException("Unsufficient rights for accessing tab '$tab' of type '$type$self'");
         }
       }
@@ -226,7 +226,7 @@ class fdRPCService
   /*!
    * \brief Get information about objectType $type
    */
-  protected function _infos($type)
+  protected function _infos ($type)
   {
     $this->checkAccess($type);
 
@@ -241,11 +241,11 @@ class fdRPCService
   /*!
    * \brief List existing object types
    */
-  protected function _listTypes()
+  protected function _listTypes ()
   {
     $types  = objects::types();
 
-    $result = array();
+    $result = [];
     foreach ($types as $type) {
       $infos          = objects::infos($type);
       $result[$type]  = $infos['name'];
@@ -256,7 +256,7 @@ class fdRPCService
   /*!
    * \brief List tabs on an object
    */
-  protected function _listTabs($type, $dn = NULL)
+  protected function _listTabs ($type, $dn = NULL)
   {
     $this->checkAccess($type, NULL, $dn);
 
@@ -266,12 +266,12 @@ class fdRPCService
       $tabobject = objects::open($dn, $type);
     }
 
-    $tabs = array();
+    $tabs = [];
     foreach ($tabobject->by_object as $tab => $obj) {
-      $tabs[$tab] = array(
+      $tabs[$tab] = [
         'name'    => $tabobject->by_name[$tab],
         'active'  => ($obj->is_account || $obj->ignore_account)
-      );
+      ];
     }
     return $tabs;
   }
@@ -279,30 +279,30 @@ class fdRPCService
   /*!
    * \brief Deactivate a tab of an object
    */
-  protected function _removetab($type, $dn, $tab)
+  protected function _removetab ($type, $dn, $tab)
   {
     $this->checkAccess($type, $tab, $dn);
     $tabobject = objects::open($dn, $type);
     $tabobject->current = $tab;
     if (!is_subclass_of($tabobject->by_object[$tab], 'simplePlugin')) {
-      return array('errors' => array('Tab '.$tab.' is not based on simplePlugin, can’t remove it'));
+      return ['errors' => ['Tab '.$tab.' is not based on simplePlugin, can’t remove it']];
     } elseif (!$tabobject->by_object[$tab]->displayHeader) {
-      return array('errors' => array('Tab '.$tab.' cannot be deactivated, can’t remove it'));
+      return ['errors' => ['Tab '.$tab.' cannot be deactivated, can’t remove it']];
     } elseif (!$tabobject->by_object[$tab]->is_account) {
-      return array('errors' => array('Tab '.$tab.' is not activated on "'.$dn.'", can’t remove it'));
+      return ['errors' => ['Tab '.$tab.' is not activated on "'.$dn.'", can’t remove it']];
     } elseif (!$tabobject->by_object[$tab]->acl_is_removeable()) {
-      return array('errors' => array('You don\'t have sufficient rights to disable tab "'.$tab.'"'));
+      return ['errors' => ['You don\'t have sufficient rights to disable tab "'.$tab.'"']];
     } else {
       list($disabled, $buttonText, $text) = $tabobject->by_object[$tab]->getDisplayHeaderInfos();
       if ($disabled) {
-        return array('errors' => array($text));
+        return ['errors' => [$text]];
       }
     }
-    $_POST = array($tab.'_modify_state' => 1);
+    $_POST = [$tab.'_modify_state' => 1];
     $tabobject->save_object();
     $errors = $tabobject->save();
     if (!empty($errors)) {
-      return array('errors' => $errors);
+      return ['errors' => $errors];
     }
     return $tabobject->dn;
   }
@@ -310,7 +310,7 @@ class fdRPCService
   /*!
    * \brief Get all form fields from an object (or object type)
    */
-  protected function _formfields($type, $dn = NULL, $tab = NULL)
+  protected function _formfields ($type, $dn = NULL, $tab = NULL)
   {
     $this->checkAccess($type, $tab, $dn);
 
@@ -327,7 +327,7 @@ class fdRPCService
     if (is_subclass_of($object, 'simplePlugin')) {
       $fields = $object->attributesInfo;
       foreach ($fields as &$section) {
-        $attributes = array();
+        $attributes = [];
         foreach ($section['attrs'] as $attr) {
           if ($object->acl_is_readable($attr->getAcl())) {
             $attr->serializeAttribute($attributes, TRUE);
@@ -339,28 +339,28 @@ class fdRPCService
       unset($section);
     } else {
       /* fallback for old plugins */
-      $fields = array('main' => array('attrs' => array(), 'name' => _('Plugin')));
+      $fields = ['main' => ['attrs' => [], 'name' => _('Plugin')]];
       foreach ($object->attributes as $attr) {
         if ($object->acl_is_readable($attr.'Acl')) {
-          $fields['main']['attrs'][$attr] = array(
+          $fields['main']['attrs'][$attr] = [
             'value'       => $object->$attr,
             'required'    => FALSE,
             'disabled'    => FALSE,
             'label'       => $attr,
             'type'        => 'OldPluginAttribute',
             'description' => '',
-          );
+          ];
         }
       }
       $fields['main']['attrs_order'] = array_keys($fields['main']['attrs']);
     }
-    return array('sections' => $fields, 'sections_order' => array_keys($fields));
+    return ['sections' => $fields, 'sections_order' => array_keys($fields)];
   }
 
   /*!
    * \brief Update values of an object's attributes using POST as if the webpage was sent
    */
-  protected function _formpost($type, $dn, $tab, $values)
+  protected function _formpost ($type, $dn, $tab, $values)
   {
     $this->checkAccess($type, $tab, $dn);
 
@@ -385,7 +385,7 @@ class fdRPCService
     $tabobject->save_object();
     $errors = $tabobject->save();
     if (!empty($errors)) {
-      return array('errors' => $errors);
+      return ['errors' => $errors];
     }
     return $tabobject->dn;
   }
@@ -393,7 +393,7 @@ class fdRPCService
   /*!
    * \brief Get all internal fields from an object (or object type)
    */
-  protected function _getfields($type, $dn = NULL, $tab = NULL)
+  protected function _getfields ($type, $dn = NULL, $tab = NULL)
   {
     $this->checkAccess($type, $tab, $dn);
 
@@ -410,7 +410,7 @@ class fdRPCService
     if (is_subclass_of($object, 'simplePlugin')) {
       $fields = $object->attributesInfo;
       foreach ($fields as &$section) {
-        $attributes = array();
+        $attributes = [];
         foreach ($section['attrs'] as $attr) {
           if ($object->acl_is_readable($attr->getAcl())) {
             $attr->serializeAttribute($attributes, FALSE);
@@ -422,7 +422,7 @@ class fdRPCService
       unset($section);
     } else {
       /* fallback for old plugins */
-      $fields = array('main' => array('attrs' => array(), 'name' => _('Plugin')));
+      $fields = ['main' => ['attrs' => [], 'name' => _('Plugin')]];
       foreach ($object->attributes as $attr) {
         if ($object->acl_is_readable($attr.'Acl')) {
           $fields['main']['attrs'][$attr] = $object->$attr;
@@ -430,13 +430,13 @@ class fdRPCService
       }
       $fields['main']['attrs_order'] = array_keys($fields['main']['attrs']);
     }
-    return array('sections' => $fields, 'sections_order' => array_keys($fields));
+    return ['sections' => $fields, 'sections_order' => array_keys($fields)];
   }
 
   /*!
    * \brief Set internal values of an object's attributes and save it
    */
-  protected function _setfields($type, $dn, $values)
+  protected function _setfields ($type, $dn, $values)
   {
     $this->checkAccess($type, array_keys($values), $dn);
     if ($dn === NULL) {
@@ -446,7 +446,7 @@ class fdRPCService
     }
     foreach ($values as $tab => $tabvalues) {
       if (!isset($tabobject->by_object[$tab])) {
-        return array('errors' => array('This tab does not exists: "'.$tab.'"'));
+        return ['errors' => ['This tab does not exists: "'.$tab.'"']];
       }
       if (is_subclass_of($tabobject->by_object[$tab], 'simplePlugin') &&
           $tabobject->by_object[$tab]->displayHeader &&
@@ -454,24 +454,24 @@ class fdRPCService
         ) {
         list($disabled, $buttonText, $text) = $tabobject->by_object[$tab]->getDisplayHeaderInfos();
         if ($disabled) {
-          return array('errors' => array($text));
+          return ['errors' => [$text]];
         }
         if ($tabobject->by_object[$tab]->acl_is_createable()) {
           $tabobject->by_object[$tab]->is_account = TRUE;
         } else {
-          return array('errors' => array('You don\'t have sufficient rights to enable tab "'.$tab.'"'));
+          return ['errors' => ['You don\'t have sufficient rights to enable tab "'.$tab.'"']];
         }
       }
       $error = $tabobject->by_object[$tab]->deserializeValues($tabvalues);
       if ($error !== TRUE) {
-        return array('errors' => array($error));
+        return ['errors' => [$error]];
       }
       $tabobject->current = $tab;
       $tabobject->save_object(); /* Should not do much as POST is empty, but in some cases is needed */
     }
     $errors = $tabobject->save();
     if (!empty($errors)) {
-      return array('errors' => $errors);
+      return ['errors' => $errors];
     }
     return $tabobject->dn;
   }
@@ -479,7 +479,7 @@ class fdRPCService
   /*!
    * \brief Add values to an object's attributes and save it
    */
-  protected function _addvalues($type, $dn, $values)
+  protected function _addvalues ($type, $dn, $values)
   {
     return $this->adddelvalues($type, $dn, $values, TRUE);
   }
@@ -487,22 +487,22 @@ class fdRPCService
   /*!
    * \brief Delete values from an object's attributes and save it
    */
-  protected function _delvalues($type, $dn, $values)
+  protected function _delvalues ($type, $dn, $values)
   {
     return $this->adddelvalues($type, $dn, $values, FALSE);
   }
 
-  private function adddelvalues($type, $dn, $values, $add)
+  private function adddelvalues ($type, $dn, $values, $add)
   {
     $this->checkAccess($type, array_keys($values), $dn);
     if ($dn === NULL) {
-      return array('errors' => array('No DN provided'));
+      return ['errors' => ['No DN provided']];
     } else {
       $tabobject = objects::open($dn, $type);
     }
     foreach ($values as $tab => $tabvalues) {
       if (!isset($tabobject->by_object[$tab])) {
-        return array('errors' => array('This tab does not exists: "'.$tab.'"'));
+        return ['errors' => ['This tab does not exists: "'.$tab.'"']];
       }
       if (is_subclass_of($tabobject->by_object[$tab], 'simplePlugin') &&
           $tabobject->by_object[$tab]->displayHeader &&
@@ -511,7 +511,7 @@ class fdRPCService
         if ($tabobject->by_object[$tab]->acl_is_createable()) {
           $tabobject->by_object[$tab]->is_account = TRUE;
         } else {
-          return array('errors' => array('You don\'t have sufficient rights to enable tab "'.$tab.'"'));
+          return ['errors' => ['You don\'t have sufficient rights to enable tab "'.$tab.'"']];
         }
       }
       foreach ($tabvalues as $name => $newvalues) {
@@ -519,10 +519,10 @@ class fdRPCService
           if ($tabobject->by_object[$tab]->attrIsWriteable($name)) {
             $attrvalues = $tabobject->by_object[$tab]->attributesAccess[$name]->getValue();
             if (!is_array($attrvalues)) {
-              return array('errors' => array(sprintf(_('Field "%s" is not multi-valuated'), $name)));
+              return ['errors' => [sprintf(_('Field "%s" is not multi-valuated'), $name)]];
             }
             if (!is_array($newvalues)) {
-              $newvalues = array($newvalues);
+              $newvalues = [$newvalues];
             }
             if ($add) {
               $attrvalues = array_merge($attrvalues, $newvalues);
@@ -531,10 +531,10 @@ class fdRPCService
             }
             $tabobject->by_object[$tab]->attributesAccess[$name]->setValue($attrvalues);
           } else {
-            return array('errors' => array(msgPool::permModify($dn, $name)));
+            return ['errors' => [msgPool::permModify($dn, $name)]];
           }
         } else {
-          return array('errors' => array(sprintf(_('Unknown field "%s"'), $name)));
+          return ['errors' => [sprintf(_('Unknown field "%s"'), $name)]];
         }
       }
       $tabobject->current = $tab;
@@ -542,7 +542,7 @@ class fdRPCService
     }
     $errors = $tabobject->save();
     if (!empty($errors)) {
-      return array('errors' => $errors);
+      return ['errors' => $errors];
     }
     return $tabobject->dn;
   }
@@ -550,7 +550,7 @@ class fdRPCService
   /*!
    * \brief Get all internal fields from a template
    */
-  protected function _gettemplate($type, $dn)
+  protected function _gettemplate ($type, $dn)
   {
     $this->checkAccess($type, NULL, $dn);
 
@@ -561,19 +561,19 @@ class fdRPCService
   /*!
    * \brief
    */
-  protected function _usetemplate($type, $dn, $values)
+  protected function _usetemplate ($type, $dn, $values)
   {
     $this->checkAccess($type, NULL, $dn);
 
     $template = new template($type, $dn);
     $error    = $template->deserialize($values);
     if ($error !== TRUE) {
-      return array('errors' => array($error));
+      return ['errors' => [$error]];
     }
     $tabobject = $template->apply();
     $errors = $tabobject->save();
     if (!empty($errors)) {
-      return array('errors' => $errors);
+      return ['errors' => $errors];
     }
     return $tabobject->dn;
   }
@@ -581,7 +581,7 @@ class fdRPCService
   /*!
    * \brief Delete an object
    */
-  protected function _delete($type, $dn)
+  protected function _delete ($type, $dn)
   {
     global $ui;
     $infos = objects::infos($type);
@@ -589,9 +589,9 @@ class fdRPCService
     $acl = $ui->get_permissions($dn, $infos['aclCategory'].'/'.$infos['mainTab']);
     if (preg_match('/d/', $acl)) {
       if ($user = get_lock($dn)) {
-        return array('errors' => array(sprintf(_('Cannot delete %s. It has been locked by %s.'), $dn, $user)));
+        return ['errors' => [sprintf(_('Cannot delete %s. It has been locked by %s.'), $dn, $user)]];
       }
-      add_lock ($dn, $ui->dn);
+      add_lock($dn, $ui->dn);
 
       // Delete the object
       $tabobject = objects::open($dn, $type);
@@ -600,22 +600,22 @@ class fdRPCService
       // Remove the lock for the current object.
       del_lock($dn);
     } else {
-      return array('errors' => array(msgPool::permDelete($dn)));
+      return ['errors' => [msgPool::permDelete($dn)]];
     }
   }
 
   /*!
    * \brief Lock or unlock a user
    */
-  protected function _lockUser($dns, $type = 'toggle')
+  protected function _lockUser ($dns, $type = 'toggle')
   {
     global $config, $ui;
 
     // Filter out entries we are not allowed to modify
-    $disallowed = array();
+    $disallowed = [];
 
     if (!is_array($dns)) {
-      $dns = array($dns);
+      $dns = [$dns];
     }
 
     foreach ($dns as $dn) {
@@ -624,14 +624,14 @@ class fdRPCService
       }
     }
     if (count($disallowed)) {
-      return array('errors' => array(msgPool::permModify($disallowed)));
+      return ['errors' => [msgPool::permModify($disallowed)]];
     }
 
     // Try to lock/unlock the entries.
     $ldap   = $config->get_ldap_link();
-    $errors = array();
+    $errors = [];
     foreach ($dns as $dn) {
-      $ldap->cat($dn, array('userPassword'));
+      $ldap->cat($dn, ['userPassword']);
       if ($ldap->count() == 1) {
         // We can't lock empty passwords.
         $val = $ldap->fetch();
@@ -672,19 +672,19 @@ class fdRPCService
       }
     }
     if (!empty($errors)) {
-      return array('errors' => $errors);
+      return ['errors' => $errors];
     }
   }
 
   /*!
    * \brief Test if a user is locked
    */
-  protected function _isUserLocked($dns)
+  protected function _isUserLocked ($dns)
   {
     global $config, $ui;
 
     if (!is_array($dns)) {
-      $dns = array($dns);
+      $dns = [$dns];
     }
 
     foreach ($dns as $dn) {
@@ -693,15 +693,15 @@ class fdRPCService
       }
     }
     if (count($disallowed)) {
-      return array('errors' => array(msgPool::permView($disallowed)));
+      return ['errors' => [msgPool::permView($disallowed)]];
     }
 
     // Try to lock/unlock the entries.
     $ldap   = $config->get_ldap_link();
-    $result = array();
-    $errors = array();
+    $result = [];
+    $errors = [];
     foreach ($dns as $dn) {
-      $ldap->cat($dn, array('userPassword'));
+      $ldap->cat($dn, ['userPassword']);
       if ($ldap->count() == 1) {
         // We can't lock empty passwords.
         $val = $ldap->fetch();
@@ -722,7 +722,7 @@ class fdRPCService
       }
     }
     if (!empty($errors)) {
-      return array('errors' => $errors);
+      return ['errors' => $errors];
     }
     return $result;
   }
@@ -730,7 +730,7 @@ class fdRPCService
   /*!
    * \brief Generate recovery token for a user
    */
-  protected function _recoveryGenToken($email)
+  protected function _recoveryGenToken ($email)
   {
     global $ui;
 
@@ -739,20 +739,20 @@ class fdRPCService
     $dn = $pwRecovery->step2();
     if ($pwRecovery->step == 2) { /* No errors */
       if (!preg_match('/w/', $ui->get_permissions($dn, 'user/user', 'userPassword'))) {
-        return array('errors' => array(msgPool::permModify($dn)));
+        return ['errors' => [msgPool::permModify($dn)]];
       }
       $token = $pwRecovery->generateAndStoreToken();
       if (empty($pwRecovery->message) && ($token !== FALSE)) {
-        return array('token' => $token, 'uid' => $pwRecovery->uid);
+        return ['token' => $token, 'uid' => $pwRecovery->uid];
       }
     }
-    return array('errors' => $pwRecovery->message);
+    return ['errors' => $pwRecovery->message];
   }
 
   /*!
    * \brief Change a user password using a recovery token
    */
-  protected function _recoveryConfirmPasswordChange($uid, $password1, $password2, $token)
+  protected function _recoveryConfirmPasswordChange ($uid, $password1, $password2, $token)
   {
     $pwRecovery = new passwordRecovery(FALSE);
     $pwRecovery->uid = $uid;
@@ -764,7 +764,7 @@ class fdRPCService
     } else {
       $pwRecovery->message[] = _('This token is invalid');
     }
-    return array('errors' => $pwRecovery->message);
+    return ['errors' => $pwRecovery->message];
   }
 
   /*!
diff --git a/webservice/include/jsonrpcphp/jsonRPCServer.php b/webservice/include/jsonrpcphp/jsonRPCServer.php
index 2c7a370b82c0eaf0a4bb62d9372f7691131e8452..714ffa05d4d3905d456b11b7dc3809f70f8d0568 100644
--- a/webservice/include/jsonrpcphp/jsonRPCServer.php
+++ b/webservice/include/jsonrpcphp/jsonRPCServer.php
@@ -35,7 +35,7 @@ class jsonRPCServer {
    * @param object $object
    * @return boolean
    */
-  public static function handle($object)
+  public static function handle ($object)
   {
     // checks if a JSON-RCP request has been received
     if (
@@ -52,25 +52,25 @@ class jsonRPCServer {
 
     // executes the task on local object
     try {
-      if (($result = @call_user_func_array(array($object,$request['method']), $request['params'])) !== FALSE) {
-        $response = array (
+      if (($result = @call_user_func_array([$object,$request['method']], $request['params'])) !== FALSE) {
+        $response = [
                   'id' => $request['id'],
                   'result' => $result,
                   'error' => NULL
-                  );
+                  ];
       } else {
-        $response = array (
+        $response = [
                   'id' => $request['id'],
                   'result' => NULL,
                   'error' => 'unknown method or incorrect parameters'
-                  );
+                  ];
       }
     } catch (Exception $e) {
-      $response = array (
+      $response = [
                 'id' => $request['id'],
                 'result' => NULL,
                 'error' => $e->getMessage()
-                );
+                ];
     }
 
     // output the response
@@ -79,11 +79,11 @@ class jsonRPCServer {
       header('content-type: text/javascript');
       $res = json_encode($response);
       if ($res === FALSE) {
-        $response = array (
+        $response = [
           'id' => $request['id'],
           'result' => NULL,
           'error' => 'Failed to encode response: '.json_last_error_msg()
-        );
+        ];
         echo json_encode($response);
       } else {
         echo $res;
diff --git a/webservice/locale/af_ZA/fusiondirectory.po b/webservice/locale/af_ZA/fusiondirectory.po
index e891836fc7578d6723a0a584a74edce7e3b2b1fe..619aff372245851cc016675fc629cd1ae51234fe 100644
--- a/webservice/locale/af_ZA/fusiondirectory.po
+++ b/webservice/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/webservice/locale/ar/fusiondirectory.po b/webservice/locale/ar/fusiondirectory.po
index 101917396a0a77f2b95e31fb7632d133d060d133..effca0e3349b1f8854f622c31285a70d22dce0cc 100644
--- a/webservice/locale/ar/fusiondirectory.po
+++ b/webservice/locale/ar/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
 "MIME-Version: 1.0\n"
diff --git a/webservice/locale/ca/fusiondirectory.po b/webservice/locale/ca/fusiondirectory.po
index 65e77ae585b00cc7d060cc5c14ccabacd3a9e8bc..3f838dab8b2df0e3f8b4ee687432a25ea0e9ff2d 100644
--- a/webservice/locale/ca/fusiondirectory.po
+++ b/webservice/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/webservice/locale/cs_CZ/fusiondirectory.po b/webservice/locale/cs_CZ/fusiondirectory.po
index 697efe976a2e6da195179ea7360f3b0edffa5ba4..4f089cfb8c6bf359a6054268fcfb22357ca01c41 100644
--- a/webservice/locale/cs_CZ/fusiondirectory.po
+++ b/webservice/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2018\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/webservice/locale/de/fusiondirectory.po b/webservice/locale/de/fusiondirectory.po
index 926b950e7e05a4e514def1c8c5486209c483c34b..909f93abe2c3daf26f8dec9323ed1b466ba09307 100644
--- a/webservice/locale/de/fusiondirectory.po
+++ b/webservice/locale/de/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/webservice/locale/el_GR/fusiondirectory.po b/webservice/locale/el_GR/fusiondirectory.po
index aff754d68c6627c671507020cbd744fddf6f6f66..e8d6213cc1a17a6e1234656e42ef86fcf51a3ed9 100644
--- a/webservice/locale/el_GR/fusiondirectory.po
+++ b/webservice/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/webservice/locale/en/fusiondirectory.po b/webservice/locale/en/fusiondirectory.po
index 7637233ffb21b7bed122e01427962b5990a1f06a..758edff9e79954b1756a08595eba79ce405f3dcb 100644
--- a/webservice/locale/en/fusiondirectory.po
+++ b/webservice/locale/en/fusiondirectory.po
@@ -1,6 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR FusionDirectory Project
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2017-08-02 11:45+0200\n"
+"POT-Creation-Date: 2020-03-20 17:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FusionDirectory project <contact@fusiondirectory.org>\n"
 "Language-Team: English\n"
@@ -37,52 +37,62 @@ msgstr ""
 msgid "Allow only HTTPS JSON-RPC requests"
 msgstr ""
 
-#: html/jsonrpc.php:52
+#: html/jsonrpc.php:55
 #, php-format
 msgid "FusionDirectory configuration %s/%s is not readable. Aborted."
 msgstr ""
 
-#: html/jsonrpc.php:62
+#: html/jsonrpc.php:65
 #, php-format
 msgid "Cannot locate file '%s' - please run '%s' to fix this"
 msgstr ""
 
-#: html/jsonrpc.php:317 html/jsonrpc.php:400
+#: html/jsonrpc.php:342 html/jsonrpc.php:425
 msgid "Plugin"
 msgstr ""
 
-#: html/jsonrpc.php:492
+#: html/jsonrpc.php:522
+#, php-format
+msgid "Field \"%s\" is not multi-valuated"
+msgstr ""
+
+#: html/jsonrpc.php:537
+#, php-format
+msgid "Unknown field \"%s\""
+msgstr ""
+
+#: html/jsonrpc.php:592
 #, php-format
 msgid "Cannot delete %s. It has been locked by %s."
 msgstr ""
 
-#: html/jsonrpc.php:539 html/jsonrpc.php:568
+#: html/jsonrpc.php:639 html/jsonrpc.php:668
 #, php-format
 msgid ""
 "Failed to get password method for account \"%s\". It has not been locked!"
 msgstr ""
 
-#: html/jsonrpc.php:564
+#: html/jsonrpc.php:664
 #, php-format
 msgid ""
 "Password method \"%s\" failed locking. Account \"%s\" has not been locked!"
 msgstr ""
 
-#: html/jsonrpc.php:571
+#: html/jsonrpc.php:671
 #, php-format
 msgid "Could not find account \"%s\" in LDAP. It has not been locked!"
 msgstr ""
 
-#: html/jsonrpc.php:609 html/jsonrpc.php:618
+#: html/jsonrpc.php:709 html/jsonrpc.php:718
 #, php-format
 msgid "Failed to get password method for account \"%s\""
 msgstr ""
 
-#: html/jsonrpc.php:621
+#: html/jsonrpc.php:721
 #, php-format
 msgid "Could not find account \"%s\" in LDAP"
 msgstr ""
 
-#: html/jsonrpc.php:665
+#: html/jsonrpc.php:765
 msgid "This token is invalid"
 msgstr ""
diff --git a/webservice/locale/es/fusiondirectory.po b/webservice/locale/es/fusiondirectory.po
index c317f72499f0cb2826e9c9372c5b50c5496fbb6f..e99fb959404df714a3376146d8829e0a4efd8243 100644
--- a/webservice/locale/es/fusiondirectory.po
+++ b/webservice/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/class_webserviceConfig.inc:28
 msgid "Webservice configuration"
diff --git a/webservice/locale/es_CO/fusiondirectory.po b/webservice/locale/es_CO/fusiondirectory.po
index 735a95d96575eee0e1396f549f682b531b51088a..1d060b3fcd2dcced969e3eb1e62f6b75222db2b4 100644
--- a/webservice/locale/es_CO/fusiondirectory.po
+++ b/webservice/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/class_webserviceConfig.inc:28
 msgid "Webservice configuration"
diff --git a/webservice/locale/es_VE/fusiondirectory.po b/webservice/locale/es_VE/fusiondirectory.po
index 26c07128f645b1135a6ae30a6996487b2009220b..e1b69595a79f845f39e4b856f2a7673981b89592 100644
--- a/webservice/locale/es_VE/fusiondirectory.po
+++ b/webservice/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/class_webserviceConfig.inc:28
 msgid "Webservice configuration"
diff --git a/webservice/locale/fa_IR/fusiondirectory.po b/webservice/locale/fa_IR/fusiondirectory.po
index c19252aa206430e957ce7d0a58c948660e502dad..1a76dbc5e0d7ef529110ea6df935586714d1ea90 100644
--- a/webservice/locale/fa_IR/fusiondirectory.po
+++ b/webservice/locale/fa_IR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
diff --git a/webservice/locale/fi_FI/fusiondirectory.po b/webservice/locale/fi_FI/fusiondirectory.po
index 42df38cd287153891378e9569471836fe29732f0..07629b8afea5594c8e510f3b1637063ae802df75 100644
--- a/webservice/locale/fi_FI/fusiondirectory.po
+++ b/webservice/locale/fi_FI/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
 "MIME-Version: 1.0\n"
diff --git a/webservice/locale/fr/fusiondirectory.po b/webservice/locale/fr/fusiondirectory.po
index 25710c2f6bdea5c9f8f960d847f8ce2b5fd1d323..a559ffecf77fe42067d82ee9405e69007efdae27 100644
--- a/webservice/locale/fr/fusiondirectory.po
+++ b/webservice/locale/fr/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/class_webserviceConfig.inc:28
 msgid "Webservice configuration"
diff --git a/webservice/locale/hu_HU/fusiondirectory.po b/webservice/locale/hu_HU/fusiondirectory.po
index 940acda28b41d0bfc45a8560736d110ca9c87ecd..42243b52e1a9e62e17a261776e78087fbdc68f3b 100644
--- a/webservice/locale/hu_HU/fusiondirectory.po
+++ b/webservice/locale/hu_HU/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
 "MIME-Version: 1.0\n"
diff --git a/webservice/locale/id/fusiondirectory.po b/webservice/locale/id/fusiondirectory.po
index 78dd89fa22532ea17f44223f22f0dfbe39919704..0842b7a72d850b6d0b7cfeff11e005659b1720fb 100644
--- a/webservice/locale/id/fusiondirectory.po
+++ b/webservice/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/webservice/locale/it_IT/fusiondirectory.po b/webservice/locale/it_IT/fusiondirectory.po
index a50776280a486c44a8a43c29a5fcb3e669db5d0f..67d6918a331d4d3af88f428d7336e48379e7700e 100644
--- a/webservice/locale/it_IT/fusiondirectory.po
+++ b/webservice/locale/it_IT/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Last-Translator: Paola Penati <paola.penati@opensides.be>, 2018\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -20,7 +20,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/class_webserviceConfig.inc:28
 msgid "Webservice configuration"
diff --git a/webservice/locale/ja/fusiondirectory.po b/webservice/locale/ja/fusiondirectory.po
index 75d67ca8e093c0d92c680627dbd8e55a0a2a6c91..196107b81099244b83a57c988c67d89cef414230 100644
--- a/webservice/locale/ja/fusiondirectory.po
+++ b/webservice/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/webservice/locale/ko/fusiondirectory.po b/webservice/locale/ko/fusiondirectory.po
index 08e20cedb34ec5ca19ced9441a652b3b73822a24..64978e1797ce423462e3074c99aa4d76b49b4f1d 100644
--- a/webservice/locale/ko/fusiondirectory.po
+++ b/webservice/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
diff --git a/webservice/locale/lv/fusiondirectory.po b/webservice/locale/lv/fusiondirectory.po
index a62dc884cf15ddb828fd05a90963febb54353a3c..48eeeec1c6d9baeeadbb3e792afbe785ec62863b 100644
--- a/webservice/locale/lv/fusiondirectory.po
+++ b/webservice/locale/lv/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
 "MIME-Version: 1.0\n"
diff --git a/webservice/locale/nb/fusiondirectory.po b/webservice/locale/nb/fusiondirectory.po
index b55fc0cae90d5915b735bb7b4bc22292f4d49daf..92159a653fa4a7898da7002873b3d473a4f1d221 100644
--- a/webservice/locale/nb/fusiondirectory.po
+++ b/webservice/locale/nb/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
 "MIME-Version: 1.0\n"
diff --git a/webservice/locale/nl/fusiondirectory.po b/webservice/locale/nl/fusiondirectory.po
index 290eed48dee4d3a6004bf99cdd4ac335aad74456..e3693c6195c9ed656f377f757640afa61e6a99ce 100644
--- a/webservice/locale/nl/fusiondirectory.po
+++ b/webservice/locale/nl/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2017\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/webservice/locale/pl/fusiondirectory.po b/webservice/locale/pl/fusiondirectory.po
index a5a0ab8c0b06318a5df327d27d3214192a620d36..cb9dee7848e5371bf20bd789412e4006e3ed042f 100644
--- a/webservice/locale/pl/fusiondirectory.po
+++ b/webservice/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/webservice/locale/pt/fusiondirectory.po b/webservice/locale/pt/fusiondirectory.po
index 668447df54756659ad75240611fe4f563366f176..a2ed0f678b57dafc916deceffa7b4fadac2577db 100644
--- a/webservice/locale/pt/fusiondirectory.po
+++ b/webservice/locale/pt/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/class_webserviceConfig.inc:28
 msgid "Webservice configuration"
diff --git a/webservice/locale/pt_BR/fusiondirectory.po b/webservice/locale/pt_BR/fusiondirectory.po
index 17eb56ceeb8fcb14dc686eda19f0db9119e3bfc9..a9ba4ae38bcbd31ac994173655f357af26edc504 100644
--- a/webservice/locale/pt_BR/fusiondirectory.po
+++ b/webservice/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: config/class_webserviceConfig.inc:28
 msgid "Webservice configuration"
diff --git a/webservice/locale/ru/fusiondirectory.po b/webservice/locale/ru/fusiondirectory.po
index ffc409642dd76a885ad100c0ffbd1d4c3df41699..94adce4fb19b8cd2ca6bfb95a0ffe5b3f342d365 100644
--- a/webservice/locale/ru/fusiondirectory.po
+++ b/webservice/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/webservice/locale/ru@petr1708/fusiondirectory.po b/webservice/locale/ru@petr1708/fusiondirectory.po
index 1a78e0fff2f33d1bc31158c4ac55ae9459cc2b59..5916ec8a75faafeb45ed02ae94bc3b4de5fd7080 100644
--- a/webservice/locale/ru@petr1708/fusiondirectory.po
+++ b/webservice/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/webservice/locale/sv/fusiondirectory.po b/webservice/locale/sv/fusiondirectory.po
index e9348c6b9c1f670b245e24efc61fe91dff0590f4..579d2fe89385c5a7decad29403d80ea028b4a1b6 100644
--- a/webservice/locale/sv/fusiondirectory.po
+++ b/webservice/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/webservice/locale/tr_TR/fusiondirectory.po b/webservice/locale/tr_TR/fusiondirectory.po
index b3a0a1fa48c7e3e05e58d405e7d570f702560dd5..8cb79e6b927b3bb99dabdabef216dc333753bfa8 100644
--- a/webservice/locale/tr_TR/fusiondirectory.po
+++ b/webservice/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/webservice/locale/ug/fusiondirectory.po b/webservice/locale/ug/fusiondirectory.po
index fd3eee43c9e9d0070a402b35c7d82c5c6592cc8c..91934271fa3f7227b78819c458f5f01dfc688a45 100644
--- a/webservice/locale/ug/fusiondirectory.po
+++ b/webservice/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: config/class_webserviceConfig.inc:28
 msgid "Webservice configuration"
diff --git a/webservice/locale/vi_VN/fusiondirectory.po b/webservice/locale/vi_VN/fusiondirectory.po
index c104f645854fa79ec0c67998e27bfa4ab79f7b56..05f42952084d3ec42be8aeb901983ba59cba8738 100644
--- a/webservice/locale/vi_VN/fusiondirectory.po
+++ b/webservice/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/webservice/locale/zh/fusiondirectory.po b/webservice/locale/zh/fusiondirectory.po
index e6a2a2854663e29edf132a995fa9167e7131a4f8..a99f165fe348c36c522e0b5623d33674f9b7fdef 100644
--- a/webservice/locale/zh/fusiondirectory.po
+++ b/webservice/locale/zh/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
 "MIME-Version: 1.0\n"
diff --git a/webservice/locale/zh_TW/fusiondirectory.po b/webservice/locale/zh_TW/fusiondirectory.po
index 0bc53fa32bdfa4c47d1fc9f7734a35acd43ff3c0..dc8ede7d58b997459ad70a9dffe1958c9204798a 100644
--- a/webservice/locale/zh_TW/fusiondirectory.po
+++ b/webservice/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 08:29+0000\n"
+"POT-Creation-Date: 2022-07-28 17:06+0000\n"
 "PO-Revision-Date: 2016-08-29 15:24+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"