Add Groups to Administration
A group is a shared address and mailbox and the people who share it. To Stalwart it is an x:Account of type Group, behind the same sysAccount* permissions as a person, so it sits under Directory beside Accounts: search, a page of fifty with each group's member count, and a panel to create, edit and delete one. Membership lives on the member, not the group. Members are the users whose memberGroupIds name it, and adding or removing one is a single memberGroupIds/<group> pointer on that user's account -- true or null -- which leaves their other groups alone. Changes apply straight away rather than riding on Save, so the list is always what the server has. Nobody can add or remove themselves, the same line the account panel draws at one's own role. A group's role is Default or Custom, not a person's User or Admin, and it is what the group may do: in 0.16 a user's permissions come from their own roles only, and a group gives its members what is shared with it. Only roles the viewer could grant are offered. Delete takes the members out first and then deletes the group, the order a domain's keys go before the domain, because the registry keeps anything another object names. A role that cannot change the members' accounts is not offered a delete it could only half finish. The mock's groups had a person's roles, accepted a memberGroupIds filter without applying it, and answered a linked delete with the wrong shape; all three follow the source now, and it refuses nested groups and memberships of things that are not groups. Nothing about groups has been run against a live server yet: production has none, and every operation is a write. KNOWN-ISSUES says what was read from source. Thirty-five new strings, two of them plurals, in all nine catalogues.
This commit is contained in:
@@ -143,6 +143,39 @@ export const catalog: Catalog = {
|
||||
"Could not be loaded": "Не удалось загрузить",
|
||||
"Detailed metrics, the delivery queue, logs and server settings are in Stalwart's own administration.": "Подробные метрики, очередь доставки, журналы и настройки сервера находятся в собственной панели администрирования Stalwart.",
|
||||
"Open Stalwart admin": "Открыть администрирование Stalwart",
|
||||
"Default group role": "Роль группы по умолчанию",
|
||||
"A group needs an address.": "Группе нужен адрес.",
|
||||
"New group": "Новая группа",
|
||||
"Your role lets you view groups but not change them.": "Ваша роль позволяет просматривать группы, но не изменять их.",
|
||||
"No domains are available to create a group on.": "Нет доменов, на которых можно создать группу.",
|
||||
"Mail to these addresses is delivered to this group. Changes apply when you save.": "Почта на эти адреса доставляется в эту группу. Изменения применяются при сохранении.",
|
||||
"What the group itself may do. Members keep their own roles: a group gives them what is shared with it, not its permissions. Only roles whose permissions you hold yourself are offered.": "Что может делать сама группа. Участники сохраняют свои роли: группа даёт им то, чем с ней поделились, а не свои разрешения. Предлагаются только роли, разрешения которых есть у вас самих.",
|
||||
"Loading the group's members…": "Загрузка участников группы…",
|
||||
"This group has more members than can be taken out at once.": "В этой группе больше участников, чем можно убрать за один раз.",
|
||||
"Deleting a group takes its members out of it first, and your role can't change their accounts.": "При удалении группы сначала из неё убираются участники, а ваша роль не позволяет изменять их учётные записи.",
|
||||
"Create group": "Создать группу",
|
||||
"Added {address} to the group": "{address} добавлен в группу",
|
||||
"Removed {address} from the group": "{address} убран из группы",
|
||||
"Remove {address} from the group": "Убрать {address} из группы",
|
||||
"You can't change your own group memberships.": "Нельзя менять собственное участие в группах.",
|
||||
"Remove from group": "Убрать из группы",
|
||||
"No members yet": "Участников пока нет",
|
||||
"Showing {shown} of {total} members.": "Показано участников: {shown} из {total}.",
|
||||
"Members get what is shared with the group, such as its mailbox. Changes apply straight away.": "Участники получают то, чем поделились с группой, например её почтовый ящик. Изменения применяются сразу.",
|
||||
"Add a member by name or address": "Добавить участника по имени или адресу",
|
||||
"Add a member": "Добавить участника",
|
||||
"No one else matches": "Больше никто не подходит",
|
||||
"Deletes the group and its mailbox. Its members' own accounts stay.": "Удаляет группу и её почтовый ящик. Собственные учётные записи участников остаются.",
|
||||
"Delete group…": "Удалить группу…",
|
||||
"Delete group": "Удалить группу",
|
||||
"The group's own mail is removed in the background, and it can't be undone.": "Почта группы удаляется в фоновом режиме, и это нельзя отменить.",
|
||||
"Shared addresses and mailboxes, and the people who share them.": "Общие адреса и почтовые ящики, и люди, которые ими пользуются.",
|
||||
"Search groups": "Поиск групп",
|
||||
"No groups match": "Нет подходящих групп",
|
||||
"No groups yet": "Групп пока нет",
|
||||
"Your organisation has reached the number of groups it is allowed.": "Ваша организация достигла допустимого числа групп.",
|
||||
"This group no longer exists. Someone may have deleted it.": "Этой группы больше нет. Возможно, её кто-то удалил.",
|
||||
"The server did not say whether the group was created.": "Сервер не сообщил, создана ли группа.",
|
||||
"User": "Пользователь",
|
||||
"Administrator": "Администратор",
|
||||
"Custom role": "Особая роль",
|
||||
@@ -1535,6 +1568,8 @@ export const catalog: Catalog = {
|
||||
"{n} accounts use this domain. Move or delete them first.": { one: "Этот домен использует {n} учётная запись. Сначала перенесите или удалите её.", few: "Этот домен используют {n} учётные записи. Сначала перенесите или удалите их.", many: "Этот домен используют {n} учётных записей. Сначала перенесите или удалите их.", other: "Этот домен используют {n} учётной записи. Сначала перенесите или удалите их." },
|
||||
"The server stops accepting mail for this domain, and its {n} DKIM keys are deleted. This can't be undone.": { one: "Сервер перестанет принимать почту для этого домена, и его {n} ключ DKIM будет удалён. Отменить это нельзя.", few: "Сервер перестанет принимать почту для этого домена, и его {n} ключа DKIM будут удалены. Отменить это нельзя.", many: "Сервер перестанет принимать почту для этого домена, и его {n} ключей DKIM будут удалены. Отменить это нельзя.", other: "Сервер перестанет принимать почту для этого домена, и его {n} ключа DKIM будут удалены. Отменить это нельзя." },
|
||||
"{n} domains": { one: "{n} домен", few: "{n} домена", many: "{n} доменов", other: "{n} домена" },
|
||||
"{n} groups": { one: "{n} группа", few: "{n} группы", many: "{n} групп", other: "{n} группы" },
|
||||
"Its {n} members are taken out of the group first, and lose what was shared with it. The group's own mail is removed in the background, and it can't be undone.": { one: "Сначала {n} участник убирается из группы и теряет то, чем с ней поделились. Почта группы удаляется в фоновом режиме, и это нельзя отменить.", few: "Сначала {n} участника убираются из группы и теряют то, чем с ней поделились. Почта группы удаляется в фоновом режиме, и это нельзя отменить.", many: "Сначала {n} участников убираются из группы и теряют то, чем с ней поделились. Почта группы удаляется в фоновом режиме, и это нельзя отменить.", other: "Сначала {n} участника убираются из группы и теряют то, чем с ней поделились. Почта группы удаляется в фоновом режиме, и это нельзя отменить." },
|
||||
"{n} mailing lists": { one: "{n} список рассылки", few: "{n} списка рассылки", many: "{n} списков рассылки", other: "{n} списка рассылки" },
|
||||
"{n} DKIM keys": { one: "{n} ключ DKIM", few: "{n} ключа DKIM", many: "{n} ключей DKIM", other: "{n} ключа DKIM" },
|
||||
"{n} other items": { one: "{n} другой объект", few: "{n} других объекта", many: "{n} других объектов", other: "{n} другого объекта" },
|
||||
|
||||
Reference in New Issue
Block a user