Currently, UserrightsPresentationModel uses lego messages:
"notification-header-user-rights": "Your user rights were {{GENDER:$2|changed}} by $1. $3.", "notification-user-rights-add": "You are now a member of {{PLURAL:$2|this group|these groups}}: $1", "notification-user-rights-remove": "You are no longer a member of {{PLURAL:$2|this group|these groups}}: $1",
where the $3 parameter is either the notification-user-rights-add message, or the notification-user-rights-remove message, or a semicolon-separated "list" of both. The $1 parameter to each of the submessages is a comma-separated list of groups. This makes the result look fairly ugly:
- "Your user rights were changed by Roan Kattouw. You are now a member of this group: Administrators."
- "Your user rights were changed by Roan Kattouw. You are no longer a member: Administrators, Bureaucrats, Oversighters."
- "Your user rights were changed by Roan Kattouw. You are now a member of this group: Arbcom; You are no longer a member of these groups: Oversighters, Checkusers."
I suggest we split this into three messages along different lines: one message for when groups were added but not removed, one for when groups were removed but not added, and one for when both happened. That way we won't have to inject the contents of one message into another ("lego").
While we're at it, I suggest we fix the following annoyances:
- In the "both" case, we currently have a semicolon followed by a capital letter. We could lowercase the letter after the semicolon, or use different punctuation (e.g. a period)
- In the multiple groups case, we should use a comma-separated list that ends with and (Language::listToText()) rather than a simple comma-separated list (Language::commaList())
- In single group case, we could use "You are now a member of the $1 group" instead of "You are now a member of this group: $1". We could even use this style in all cases if we wanted to ("You are now a member of the Administrators, Checkusers and Oversighters groups")
See also