diff --git a/assets/l10n/app_en.arb b/assets/l10n/app_en.arb index 53570deb3d..b394916e33 100644 --- a/assets/l10n/app_en.arb +++ b/assets/l10n/app_en.arb @@ -1388,6 +1388,38 @@ "@wildcardMentionTopicDescription": { "description": "Description for \"@topic\" wildcard-mention autocomplete options when writing a channel message." }, + "systemGroupNameEveryoneOnInternet": "Everyone on the internet", + "@systemGroupNameEveryoneOnInternet": { + "description": "Display name for the system group that includes everyone on the internet." + }, + "systemGroupNameEveryone": "Everyone including guests", + "@systemGroupNameEveryone": { + "description": "Display name for the system group that includes all users including guests." + }, + "systemGroupNameMembers": "Everyone except guests", + "@systemGroupNameMembers": { + "description": "Display name for the system group that includes all users excluding guests." + }, + "systemGroupNameFullMembers": "Full members", + "@systemGroupNameFullMembers": { + "description": "Display name for the system group that includes all full members of the organization." + }, + "systemGroupNameModerators": "Moderators", + "@systemGroupNameModerators": { + "description": "Display name for the system group that includes all users with at least the moderator role." + }, + "systemGroupNameAdministrators": "Administrators", + "@systemGroupNameAdministrators": { + "description": "Display name for the system group that includes all users with at least the administrator role." + }, + "systemGroupNameOwners": "Owners", + "@systemGroupNameOwners": { + "description": "Display name for the system group that includes all users with the owner role." + }, + "systemGroupNameNobody": "Nobody", + "@systemGroupNameNobody": { + "description": "Display name for the system group that includes nobody." + }, "navBarFeedLabel": "Feed", "@navBarFeedLabel": { "description": "Label for the Feed button on the bottom navigation bar." diff --git a/lib/api/model/permission.dart b/lib/api/model/permission.dart index 315f781ea8..d456fdc0a6 100644 --- a/lib/api/model/permission.dart +++ b/lib/api/model/permission.dart @@ -1,5 +1,7 @@ import 'package:json_annotation/json_annotation.dart'; +import '../../generated/l10n/zulip_localizations.dart'; + part 'permission.g.dart'; /// Metadata about how to interpret the various group-based permission settings. @@ -351,4 +353,27 @@ enum SystemGroupName implements DefaultGroupName { @override String toJson() => _$SystemGroupNameEnumMap[this]!; + + /// Get the display name to use in the UI for this system group. + /// + /// Display names mirror the web app's display name strings. + /// See `system_user_groups_list` in web/src/settings_config.ts. + String displayName(ZulipLocalizations zulipLocalizations) => switch (this) { + SystemGroupName.everyoneOnInternet => + zulipLocalizations.systemGroupNameEveryoneOnInternet, + SystemGroupName.everyone => + zulipLocalizations.systemGroupNameEveryone, + SystemGroupName.members => + zulipLocalizations.systemGroupNameMembers, + SystemGroupName.fullMembers => + zulipLocalizations.systemGroupNameFullMembers, + SystemGroupName.moderators => + zulipLocalizations.systemGroupNameModerators, + SystemGroupName.administrators => + zulipLocalizations.systemGroupNameAdministrators, + SystemGroupName.owners => + zulipLocalizations.systemGroupNameOwners, + SystemGroupName.nobody => + zulipLocalizations.systemGroupNameNobody, + }; } diff --git a/lib/generated/l10n/zulip_localizations.dart b/lib/generated/l10n/zulip_localizations.dart index dbe255c715..afe5b70c1e 100644 --- a/lib/generated/l10n/zulip_localizations.dart +++ b/lib/generated/l10n/zulip_localizations.dart @@ -2012,6 +2012,54 @@ abstract class ZulipLocalizations { /// **'Notify topic'** String get wildcardMentionTopicDescription; + /// Display name for the system group that includes everyone on the internet. + /// + /// In en, this message translates to: + /// **'Everyone on the internet'** + String get systemGroupNameEveryoneOnInternet; + + /// Display name for the system group that includes all users including guests. + /// + /// In en, this message translates to: + /// **'Everyone including guests'** + String get systemGroupNameEveryone; + + /// Display name for the system group that includes all users excluding guests. + /// + /// In en, this message translates to: + /// **'Everyone except guests'** + String get systemGroupNameMembers; + + /// Display name for the system group that includes all full members of the organization. + /// + /// In en, this message translates to: + /// **'Full members'** + String get systemGroupNameFullMembers; + + /// Display name for the system group that includes all users with at least the moderator role. + /// + /// In en, this message translates to: + /// **'Moderators'** + String get systemGroupNameModerators; + + /// Display name for the system group that includes all users with at least the administrator role. + /// + /// In en, this message translates to: + /// **'Administrators'** + String get systemGroupNameAdministrators; + + /// Display name for the system group that includes all users with the owner role. + /// + /// In en, this message translates to: + /// **'Owners'** + String get systemGroupNameOwners; + + /// Display name for the system group that includes nobody. + /// + /// In en, this message translates to: + /// **'Nobody'** + String get systemGroupNameNobody; + /// Label for the Feed button on the bottom navigation bar. /// /// In en, this message translates to: diff --git a/lib/generated/l10n/zulip_localizations_ar.dart b/lib/generated/l10n/zulip_localizations_ar.dart index 23c8174626..8b1476727c 100644 --- a/lib/generated/l10n/zulip_localizations_ar.dart +++ b/lib/generated/l10n/zulip_localizations_ar.dart @@ -1168,6 +1168,30 @@ class ZulipLocalizationsAr extends ZulipLocalizations { @override String get wildcardMentionTopicDescription => 'إخطار الموضوع'; + @override + String get systemGroupNameEveryoneOnInternet => 'Everyone on the internet'; + + @override + String get systemGroupNameEveryone => 'Everyone including guests'; + + @override + String get systemGroupNameMembers => 'Everyone except guests'; + + @override + String get systemGroupNameFullMembers => 'Full members'; + + @override + String get systemGroupNameModerators => 'Moderators'; + + @override + String get systemGroupNameAdministrators => 'Administrators'; + + @override + String get systemGroupNameOwners => 'Owners'; + + @override + String get systemGroupNameNobody => 'Nobody'; + @override String get navBarFeedLabel => 'Feed'; diff --git a/lib/generated/l10n/zulip_localizations_de.dart b/lib/generated/l10n/zulip_localizations_de.dart index 08b283a1af..1465ccf921 100644 --- a/lib/generated/l10n/zulip_localizations_de.dart +++ b/lib/generated/l10n/zulip_localizations_de.dart @@ -1194,6 +1194,30 @@ class ZulipLocalizationsDe extends ZulipLocalizations { @override String get wildcardMentionTopicDescription => 'Thema benachrichtigen'; + @override + String get systemGroupNameEveryoneOnInternet => 'Everyone on the internet'; + + @override + String get systemGroupNameEveryone => 'Everyone including guests'; + + @override + String get systemGroupNameMembers => 'Everyone except guests'; + + @override + String get systemGroupNameFullMembers => 'Full members'; + + @override + String get systemGroupNameModerators => 'Moderators'; + + @override + String get systemGroupNameAdministrators => 'Administrators'; + + @override + String get systemGroupNameOwners => 'Owners'; + + @override + String get systemGroupNameNobody => 'Nobody'; + @override String get navBarFeedLabel => 'Feed'; diff --git a/lib/generated/l10n/zulip_localizations_el.dart b/lib/generated/l10n/zulip_localizations_el.dart index d02c8368e6..c0d7633707 100644 --- a/lib/generated/l10n/zulip_localizations_el.dart +++ b/lib/generated/l10n/zulip_localizations_el.dart @@ -1168,6 +1168,30 @@ class ZulipLocalizationsEl extends ZulipLocalizations { @override String get wildcardMentionTopicDescription => 'Notify topic'; + @override + String get systemGroupNameEveryoneOnInternet => 'Everyone on the internet'; + + @override + String get systemGroupNameEveryone => 'Everyone including guests'; + + @override + String get systemGroupNameMembers => 'Everyone except guests'; + + @override + String get systemGroupNameFullMembers => 'Full members'; + + @override + String get systemGroupNameModerators => 'Moderators'; + + @override + String get systemGroupNameAdministrators => 'Administrators'; + + @override + String get systemGroupNameOwners => 'Owners'; + + @override + String get systemGroupNameNobody => 'Nobody'; + @override String get navBarFeedLabel => 'Feed'; diff --git a/lib/generated/l10n/zulip_localizations_en.dart b/lib/generated/l10n/zulip_localizations_en.dart index cf4e1b37f6..ec2ce2e1c2 100644 --- a/lib/generated/l10n/zulip_localizations_en.dart +++ b/lib/generated/l10n/zulip_localizations_en.dart @@ -1168,6 +1168,30 @@ class ZulipLocalizationsEn extends ZulipLocalizations { @override String get wildcardMentionTopicDescription => 'Notify topic'; + @override + String get systemGroupNameEveryoneOnInternet => 'Everyone on the internet'; + + @override + String get systemGroupNameEveryone => 'Everyone including guests'; + + @override + String get systemGroupNameMembers => 'Everyone except guests'; + + @override + String get systemGroupNameFullMembers => 'Full members'; + + @override + String get systemGroupNameModerators => 'Moderators'; + + @override + String get systemGroupNameAdministrators => 'Administrators'; + + @override + String get systemGroupNameOwners => 'Owners'; + + @override + String get systemGroupNameNobody => 'Nobody'; + @override String get navBarFeedLabel => 'Feed'; diff --git a/lib/generated/l10n/zulip_localizations_es.dart b/lib/generated/l10n/zulip_localizations_es.dart index d2dd9cd4bc..fe29aa121a 100644 --- a/lib/generated/l10n/zulip_localizations_es.dart +++ b/lib/generated/l10n/zulip_localizations_es.dart @@ -1168,6 +1168,30 @@ class ZulipLocalizationsEs extends ZulipLocalizations { @override String get wildcardMentionTopicDescription => 'Notify topic'; + @override + String get systemGroupNameEveryoneOnInternet => 'Everyone on the internet'; + + @override + String get systemGroupNameEveryone => 'Everyone including guests'; + + @override + String get systemGroupNameMembers => 'Everyone except guests'; + + @override + String get systemGroupNameFullMembers => 'Full members'; + + @override + String get systemGroupNameModerators => 'Moderators'; + + @override + String get systemGroupNameAdministrators => 'Administrators'; + + @override + String get systemGroupNameOwners => 'Owners'; + + @override + String get systemGroupNameNobody => 'Nobody'; + @override String get navBarFeedLabel => 'Feed'; diff --git a/lib/generated/l10n/zulip_localizations_et.dart b/lib/generated/l10n/zulip_localizations_et.dart index 27aacacc48..0ab0fe0aa2 100644 --- a/lib/generated/l10n/zulip_localizations_et.dart +++ b/lib/generated/l10n/zulip_localizations_et.dart @@ -1168,6 +1168,30 @@ class ZulipLocalizationsEt extends ZulipLocalizations { @override String get wildcardMentionTopicDescription => 'Notify topic'; + @override + String get systemGroupNameEveryoneOnInternet => 'Everyone on the internet'; + + @override + String get systemGroupNameEveryone => 'Everyone including guests'; + + @override + String get systemGroupNameMembers => 'Everyone except guests'; + + @override + String get systemGroupNameFullMembers => 'Full members'; + + @override + String get systemGroupNameModerators => 'Moderators'; + + @override + String get systemGroupNameAdministrators => 'Administrators'; + + @override + String get systemGroupNameOwners => 'Owners'; + + @override + String get systemGroupNameNobody => 'Nobody'; + @override String get navBarFeedLabel => 'Feed'; diff --git a/lib/generated/l10n/zulip_localizations_fr.dart b/lib/generated/l10n/zulip_localizations_fr.dart index ad0451c92f..bcd2974bee 100644 --- a/lib/generated/l10n/zulip_localizations_fr.dart +++ b/lib/generated/l10n/zulip_localizations_fr.dart @@ -1205,6 +1205,30 @@ class ZulipLocalizationsFr extends ZulipLocalizations { String get wildcardMentionTopicDescription => 'Notifier les participants à cette conversation'; + @override + String get systemGroupNameEveryoneOnInternet => 'Everyone on the internet'; + + @override + String get systemGroupNameEveryone => 'Everyone including guests'; + + @override + String get systemGroupNameMembers => 'Everyone except guests'; + + @override + String get systemGroupNameFullMembers => 'Full members'; + + @override + String get systemGroupNameModerators => 'Moderators'; + + @override + String get systemGroupNameAdministrators => 'Administrators'; + + @override + String get systemGroupNameOwners => 'Owners'; + + @override + String get systemGroupNameNobody => 'Nobody'; + @override String get navBarFeedLabel => 'Feed'; diff --git a/lib/generated/l10n/zulip_localizations_he.dart b/lib/generated/l10n/zulip_localizations_he.dart index 3fa48e6bef..84337c381f 100644 --- a/lib/generated/l10n/zulip_localizations_he.dart +++ b/lib/generated/l10n/zulip_localizations_he.dart @@ -1168,6 +1168,30 @@ class ZulipLocalizationsHe extends ZulipLocalizations { @override String get wildcardMentionTopicDescription => 'Notify topic'; + @override + String get systemGroupNameEveryoneOnInternet => 'Everyone on the internet'; + + @override + String get systemGroupNameEveryone => 'Everyone including guests'; + + @override + String get systemGroupNameMembers => 'Everyone except guests'; + + @override + String get systemGroupNameFullMembers => 'Full members'; + + @override + String get systemGroupNameModerators => 'Moderators'; + + @override + String get systemGroupNameAdministrators => 'Administrators'; + + @override + String get systemGroupNameOwners => 'Owners'; + + @override + String get systemGroupNameNobody => 'Nobody'; + @override String get navBarFeedLabel => 'Feed'; diff --git a/lib/generated/l10n/zulip_localizations_hu.dart b/lib/generated/l10n/zulip_localizations_hu.dart index 430b87160c..0cebf0c2a3 100644 --- a/lib/generated/l10n/zulip_localizations_hu.dart +++ b/lib/generated/l10n/zulip_localizations_hu.dart @@ -1168,6 +1168,30 @@ class ZulipLocalizationsHu extends ZulipLocalizations { @override String get wildcardMentionTopicDescription => 'Notify topic'; + @override + String get systemGroupNameEveryoneOnInternet => 'Everyone on the internet'; + + @override + String get systemGroupNameEveryone => 'Everyone including guests'; + + @override + String get systemGroupNameMembers => 'Everyone except guests'; + + @override + String get systemGroupNameFullMembers => 'Full members'; + + @override + String get systemGroupNameModerators => 'Moderators'; + + @override + String get systemGroupNameAdministrators => 'Administrators'; + + @override + String get systemGroupNameOwners => 'Owners'; + + @override + String get systemGroupNameNobody => 'Nobody'; + @override String get navBarFeedLabel => 'Feed'; diff --git a/lib/generated/l10n/zulip_localizations_it.dart b/lib/generated/l10n/zulip_localizations_it.dart index 52e9df9c40..ce1b234225 100644 --- a/lib/generated/l10n/zulip_localizations_it.dart +++ b/lib/generated/l10n/zulip_localizations_it.dart @@ -1183,6 +1183,30 @@ class ZulipLocalizationsIt extends ZulipLocalizations { @override String get wildcardMentionTopicDescription => 'Notifica argomento'; + @override + String get systemGroupNameEveryoneOnInternet => 'Everyone on the internet'; + + @override + String get systemGroupNameEveryone => 'Everyone including guests'; + + @override + String get systemGroupNameMembers => 'Everyone except guests'; + + @override + String get systemGroupNameFullMembers => 'Full members'; + + @override + String get systemGroupNameModerators => 'Moderators'; + + @override + String get systemGroupNameAdministrators => 'Administrators'; + + @override + String get systemGroupNameOwners => 'Owners'; + + @override + String get systemGroupNameNobody => 'Nobody'; + @override String get navBarFeedLabel => 'Feed'; diff --git a/lib/generated/l10n/zulip_localizations_ja.dart b/lib/generated/l10n/zulip_localizations_ja.dart index 2a9a6a3f6c..84ed32a29f 100644 --- a/lib/generated/l10n/zulip_localizations_ja.dart +++ b/lib/generated/l10n/zulip_localizations_ja.dart @@ -1142,6 +1142,30 @@ class ZulipLocalizationsJa extends ZulipLocalizations { @override String get wildcardMentionTopicDescription => 'トピック参加者に通知'; + @override + String get systemGroupNameEveryoneOnInternet => 'Everyone on the internet'; + + @override + String get systemGroupNameEveryone => 'Everyone including guests'; + + @override + String get systemGroupNameMembers => 'Everyone except guests'; + + @override + String get systemGroupNameFullMembers => 'Full members'; + + @override + String get systemGroupNameModerators => 'Moderators'; + + @override + String get systemGroupNameAdministrators => 'Administrators'; + + @override + String get systemGroupNameOwners => 'Owners'; + + @override + String get systemGroupNameNobody => 'Nobody'; + @override String get navBarFeedLabel => 'Feed'; diff --git a/lib/generated/l10n/zulip_localizations_kk.dart b/lib/generated/l10n/zulip_localizations_kk.dart index 7408c40414..a4b1a71b6a 100644 --- a/lib/generated/l10n/zulip_localizations_kk.dart +++ b/lib/generated/l10n/zulip_localizations_kk.dart @@ -1168,6 +1168,30 @@ class ZulipLocalizationsKk extends ZulipLocalizations { @override String get wildcardMentionTopicDescription => 'Notify topic'; + @override + String get systemGroupNameEveryoneOnInternet => 'Everyone on the internet'; + + @override + String get systemGroupNameEveryone => 'Everyone including guests'; + + @override + String get systemGroupNameMembers => 'Everyone except guests'; + + @override + String get systemGroupNameFullMembers => 'Full members'; + + @override + String get systemGroupNameModerators => 'Moderators'; + + @override + String get systemGroupNameAdministrators => 'Administrators'; + + @override + String get systemGroupNameOwners => 'Owners'; + + @override + String get systemGroupNameNobody => 'Nobody'; + @override String get navBarFeedLabel => 'Feed'; diff --git a/lib/generated/l10n/zulip_localizations_lv.dart b/lib/generated/l10n/zulip_localizations_lv.dart index 90c510216d..679b2dc43d 100644 --- a/lib/generated/l10n/zulip_localizations_lv.dart +++ b/lib/generated/l10n/zulip_localizations_lv.dart @@ -1168,6 +1168,30 @@ class ZulipLocalizationsLv extends ZulipLocalizations { @override String get wildcardMentionTopicDescription => 'Notify topic'; + @override + String get systemGroupNameEveryoneOnInternet => 'Everyone on the internet'; + + @override + String get systemGroupNameEveryone => 'Everyone including guests'; + + @override + String get systemGroupNameMembers => 'Everyone except guests'; + + @override + String get systemGroupNameFullMembers => 'Full members'; + + @override + String get systemGroupNameModerators => 'Moderators'; + + @override + String get systemGroupNameAdministrators => 'Administrators'; + + @override + String get systemGroupNameOwners => 'Owners'; + + @override + String get systemGroupNameNobody => 'Nobody'; + @override String get navBarFeedLabel => 'Feed'; diff --git a/lib/generated/l10n/zulip_localizations_nb.dart b/lib/generated/l10n/zulip_localizations_nb.dart index d6687bc7b2..516402903f 100644 --- a/lib/generated/l10n/zulip_localizations_nb.dart +++ b/lib/generated/l10n/zulip_localizations_nb.dart @@ -1168,6 +1168,30 @@ class ZulipLocalizationsNb extends ZulipLocalizations { @override String get wildcardMentionTopicDescription => 'Notify topic'; + @override + String get systemGroupNameEveryoneOnInternet => 'Everyone on the internet'; + + @override + String get systemGroupNameEveryone => 'Everyone including guests'; + + @override + String get systemGroupNameMembers => 'Everyone except guests'; + + @override + String get systemGroupNameFullMembers => 'Full members'; + + @override + String get systemGroupNameModerators => 'Moderators'; + + @override + String get systemGroupNameAdministrators => 'Administrators'; + + @override + String get systemGroupNameOwners => 'Owners'; + + @override + String get systemGroupNameNobody => 'Nobody'; + @override String get navBarFeedLabel => 'Feed'; diff --git a/lib/generated/l10n/zulip_localizations_pl.dart b/lib/generated/l10n/zulip_localizations_pl.dart index 937281553b..688c4d6b50 100644 --- a/lib/generated/l10n/zulip_localizations_pl.dart +++ b/lib/generated/l10n/zulip_localizations_pl.dart @@ -1185,6 +1185,30 @@ class ZulipLocalizationsPl extends ZulipLocalizations { @override String get wildcardMentionTopicDescription => 'Powiadom w wątku'; + @override + String get systemGroupNameEveryoneOnInternet => 'Everyone on the internet'; + + @override + String get systemGroupNameEveryone => 'Everyone including guests'; + + @override + String get systemGroupNameMembers => 'Everyone except guests'; + + @override + String get systemGroupNameFullMembers => 'Full members'; + + @override + String get systemGroupNameModerators => 'Moderators'; + + @override + String get systemGroupNameAdministrators => 'Administrators'; + + @override + String get systemGroupNameOwners => 'Owners'; + + @override + String get systemGroupNameNobody => 'Nobody'; + @override String get navBarFeedLabel => 'Feed'; diff --git a/lib/generated/l10n/zulip_localizations_pt.dart b/lib/generated/l10n/zulip_localizations_pt.dart index 96658ad9bf..ef30202cb0 100644 --- a/lib/generated/l10n/zulip_localizations_pt.dart +++ b/lib/generated/l10n/zulip_localizations_pt.dart @@ -1168,6 +1168,30 @@ class ZulipLocalizationsPt extends ZulipLocalizations { @override String get wildcardMentionTopicDescription => 'Notify topic'; + @override + String get systemGroupNameEveryoneOnInternet => 'Everyone on the internet'; + + @override + String get systemGroupNameEveryone => 'Everyone including guests'; + + @override + String get systemGroupNameMembers => 'Everyone except guests'; + + @override + String get systemGroupNameFullMembers => 'Full members'; + + @override + String get systemGroupNameModerators => 'Moderators'; + + @override + String get systemGroupNameAdministrators => 'Administrators'; + + @override + String get systemGroupNameOwners => 'Owners'; + + @override + String get systemGroupNameNobody => 'Nobody'; + @override String get navBarFeedLabel => 'Feed'; diff --git a/lib/generated/l10n/zulip_localizations_ru.dart b/lib/generated/l10n/zulip_localizations_ru.dart index 846d599fbd..e7cd2a1438 100644 --- a/lib/generated/l10n/zulip_localizations_ru.dart +++ b/lib/generated/l10n/zulip_localizations_ru.dart @@ -1198,6 +1198,30 @@ class ZulipLocalizationsRu extends ZulipLocalizations { @override String get wildcardMentionTopicDescription => 'Оповестить тему'; + @override + String get systemGroupNameEveryoneOnInternet => 'Everyone on the internet'; + + @override + String get systemGroupNameEveryone => 'Everyone including guests'; + + @override + String get systemGroupNameMembers => 'Everyone except guests'; + + @override + String get systemGroupNameFullMembers => 'Full members'; + + @override + String get systemGroupNameModerators => 'Moderators'; + + @override + String get systemGroupNameAdministrators => 'Administrators'; + + @override + String get systemGroupNameOwners => 'Owners'; + + @override + String get systemGroupNameNobody => 'Nobody'; + @override String get navBarFeedLabel => 'Feed'; diff --git a/lib/generated/l10n/zulip_localizations_sk.dart b/lib/generated/l10n/zulip_localizations_sk.dart index 47737f95e8..8ac7b7a949 100644 --- a/lib/generated/l10n/zulip_localizations_sk.dart +++ b/lib/generated/l10n/zulip_localizations_sk.dart @@ -1170,6 +1170,30 @@ class ZulipLocalizationsSk extends ZulipLocalizations { @override String get wildcardMentionTopicDescription => 'Notify topic'; + @override + String get systemGroupNameEveryoneOnInternet => 'Everyone on the internet'; + + @override + String get systemGroupNameEveryone => 'Everyone including guests'; + + @override + String get systemGroupNameMembers => 'Everyone except guests'; + + @override + String get systemGroupNameFullMembers => 'Full members'; + + @override + String get systemGroupNameModerators => 'Moderators'; + + @override + String get systemGroupNameAdministrators => 'Administrators'; + + @override + String get systemGroupNameOwners => 'Owners'; + + @override + String get systemGroupNameNobody => 'Nobody'; + @override String get navBarFeedLabel => 'Feed'; diff --git a/lib/generated/l10n/zulip_localizations_sl.dart b/lib/generated/l10n/zulip_localizations_sl.dart index 2c87fcfbe0..fbfe28d646 100644 --- a/lib/generated/l10n/zulip_localizations_sl.dart +++ b/lib/generated/l10n/zulip_localizations_sl.dart @@ -1205,6 +1205,30 @@ class ZulipLocalizationsSl extends ZulipLocalizations { @override String get wildcardMentionTopicDescription => 'Obvesti udeležence teme'; + @override + String get systemGroupNameEveryoneOnInternet => 'Everyone on the internet'; + + @override + String get systemGroupNameEveryone => 'Everyone including guests'; + + @override + String get systemGroupNameMembers => 'Everyone except guests'; + + @override + String get systemGroupNameFullMembers => 'Full members'; + + @override + String get systemGroupNameModerators => 'Moderators'; + + @override + String get systemGroupNameAdministrators => 'Administrators'; + + @override + String get systemGroupNameOwners => 'Owners'; + + @override + String get systemGroupNameNobody => 'Nobody'; + @override String get navBarFeedLabel => 'Feed'; diff --git a/lib/generated/l10n/zulip_localizations_uk.dart b/lib/generated/l10n/zulip_localizations_uk.dart index 26d5ae8c97..2887417edc 100644 --- a/lib/generated/l10n/zulip_localizations_uk.dart +++ b/lib/generated/l10n/zulip_localizations_uk.dart @@ -1187,6 +1187,30 @@ class ZulipLocalizationsUk extends ZulipLocalizations { @override String get wildcardMentionTopicDescription => 'Повідомити канал'; + @override + String get systemGroupNameEveryoneOnInternet => 'Everyone on the internet'; + + @override + String get systemGroupNameEveryone => 'Everyone including guests'; + + @override + String get systemGroupNameMembers => 'Everyone except guests'; + + @override + String get systemGroupNameFullMembers => 'Full members'; + + @override + String get systemGroupNameModerators => 'Moderators'; + + @override + String get systemGroupNameAdministrators => 'Administrators'; + + @override + String get systemGroupNameOwners => 'Owners'; + + @override + String get systemGroupNameNobody => 'Nobody'; + @override String get navBarFeedLabel => 'Feed'; diff --git a/lib/generated/l10n/zulip_localizations_vi.dart b/lib/generated/l10n/zulip_localizations_vi.dart index 07aa294d01..a0fd7199d8 100644 --- a/lib/generated/l10n/zulip_localizations_vi.dart +++ b/lib/generated/l10n/zulip_localizations_vi.dart @@ -1168,6 +1168,30 @@ class ZulipLocalizationsVi extends ZulipLocalizations { @override String get wildcardMentionTopicDescription => 'Notify topic'; + @override + String get systemGroupNameEveryoneOnInternet => 'Everyone on the internet'; + + @override + String get systemGroupNameEveryone => 'Everyone including guests'; + + @override + String get systemGroupNameMembers => 'Everyone except guests'; + + @override + String get systemGroupNameFullMembers => 'Full members'; + + @override + String get systemGroupNameModerators => 'Moderators'; + + @override + String get systemGroupNameAdministrators => 'Administrators'; + + @override + String get systemGroupNameOwners => 'Owners'; + + @override + String get systemGroupNameNobody => 'Nobody'; + @override String get navBarFeedLabel => 'Feed'; diff --git a/lib/generated/l10n/zulip_localizations_zh.dart b/lib/generated/l10n/zulip_localizations_zh.dart index bae03baac4..7abfe77816 100644 --- a/lib/generated/l10n/zulip_localizations_zh.dart +++ b/lib/generated/l10n/zulip_localizations_zh.dart @@ -1168,6 +1168,30 @@ class ZulipLocalizationsZh extends ZulipLocalizations { @override String get wildcardMentionTopicDescription => 'Notify topic'; + @override + String get systemGroupNameEveryoneOnInternet => 'Everyone on the internet'; + + @override + String get systemGroupNameEveryone => 'Everyone including guests'; + + @override + String get systemGroupNameMembers => 'Everyone except guests'; + + @override + String get systemGroupNameFullMembers => 'Full members'; + + @override + String get systemGroupNameModerators => 'Moderators'; + + @override + String get systemGroupNameAdministrators => 'Administrators'; + + @override + String get systemGroupNameOwners => 'Owners'; + + @override + String get systemGroupNameNobody => 'Nobody'; + @override String get navBarFeedLabel => 'Feed'; diff --git a/lib/widgets/content.dart b/lib/widgets/content.dart index 126f930403..b7812b14e4 100644 --- a/lib/widgets/content.dart +++ b/lib/widgets/content.dart @@ -8,6 +8,7 @@ import 'package:html/dom.dart' as dom; import 'package:intl/intl.dart' as intl; import '../api/model/model.dart'; +import '../api/model/permission.dart'; import '../generated/l10n/zulip_localizations.dart'; import '../model/content.dart'; import '../model/internal_link.dart'; @@ -1196,14 +1197,22 @@ class Mention extends StatelessWidget { Widget build(BuildContext context) { final store = PerAccountStoreWidget.of(context); final contentTheme = ContentTheme.of(context); + final zulipLocalizations = ZulipLocalizations.of(context); var nodes = node.nodes; switch (node) { case UserGroupMentionNode(:final userGroupId): final userGroup = store.getGroup(userGroupId); - if (userGroup case UserGroup(:final name)) { - // TODO(#1260) Get display name for system groups using localization - nodes = [TextNode(node.isSilent ? name : '@$name')]; + if (userGroup case UserGroup(:final name, :final isSystemGroup)) { + final String displayName; + if (isSystemGroup) { + final groupName = SystemGroupName.fromJson(name); // TODO(log) if null + displayName = groupName?.displayName(zulipLocalizations) ?? name; + } else { + displayName = name; + } + + nodes = [TextNode(node.isSilent ? displayName : '@$displayName')]; } case UserMentionNode(:final userId?): final user = store.getUser(userId); diff --git a/test/widgets/content_test.dart b/test/widgets/content_test.dart index 195c9c8661..173af5ffce 100644 --- a/test/widgets/content_test.dart +++ b/test/widgets/content_test.dart @@ -1149,6 +1149,37 @@ void main() { check(find.text('new-name')).findsOne(); check(find.text('@new-name')).findsNothing(); }); + + for (final (apiName, displayName) in const [ + ('role:internet', 'Everyone on the internet'), + ('role:everyone', 'Everyone including guests'), + ('role:members', 'Everyone except guests'), + ('role:fullmembers', 'Full members'), + ('role:moderators', 'Moderators'), + ('role:administrators', 'Administrators'), + ('role:owners', 'Owners'), + ('role:nobody', 'Nobody'), + ]) { + testWidgets('shows localized display name for system group $apiName', + (tester) async { + await prepare( + tester: tester, + html: '
@$apiName
', + userGroups: [eg.userGroup(id: 5, name: apiName, isSystemGroup: true)]); + check(find.text('@$displayName')).findsOne(); + check(find.text('@$apiName')).findsNothing(); + }); + } + + testWidgets('shows localized display name for silent system group mention', (tester) async { + await prepare( + tester: tester, + html: 'role:administrators
', + userGroups: [eg.userGroup(id: 5, name: 'role:administrators', isSystemGroup: true)]); + check(find.text('Administrators')).findsOne(); + check(find.text('@Administrators')).findsNothing(); + }); }); });