diff --git a/assets/l10n/app_en.arb b/assets/l10n/app_en.arb
index 1f52ac32ba..7165a6a76e 100644
--- a/assets/l10n/app_en.arb
+++ b/assets/l10n/app_en.arb
@@ -80,8 +80,8 @@
"@allChannelsPageTitle": {
"description": "Title for the 'All channels' page."
},
- "allChannelsEmptyPlaceholder": "There are no channels you can view in this organization.",
- "@allChannelsEmptyPlaceholder": {
+ "allChannelsEmptyPlaceholderHeader": "There are no channels you can view in this organization.",
+ "@allChannelsEmptyPlaceholderHeader": {
"description": "Centered text on the 'All channels' page saying that there is no content to show."
},
"profileButtonSendDirectMessage": "Send direct message",
@@ -687,6 +687,75 @@
"@emptyMessageList": {
"description": "Placeholder for some message-list pages when there are no messages."
},
+ "emptyMessageListCombinedFeed": "There are no messages in your combined feed.",
+ "@emptyMessageListCombinedFeed": {
+ "description": "Placeholder for the 'Combined feed' page when there are no messages."
+ },
+ "emptyMessageListChannelWithoutContentAccess": "You don’t have content access to this channel.",
+ "@emptyMessageListChannelWithoutContentAccess": {
+ "description": "Placeholder for a channel or topic page when there are no messages and you don’t have content access."
+ },
+ "emptyMessageListChannelUnavailable": "This channel doesn’t exist, or you are not allowed to view it.",
+ "@emptyMessageListChannelUnavailable": {
+ "description": "Placeholder for a channel page when there are no messages and the channel does not exist or you don't have access to it."
+ },
+ "emptyMessageListSelfDmHeader": "You have not sent any direct messages to yourself yet!",
+ "@emptyMessageListSelfDmHeader": {
+ "description": "Placeholder for the self-DM page when there are no messages."
+ },
+ "emptyMessageListSelfDmMessage": "Use this space for personal notes, or to test out Zulip features.",
+ "@emptyMessageListSelfDmMessage": {
+ "description": "Extra detail in the placeholder for the self-DM page when there are no messages."
+ },
+ "emptyMessageListDm": "You have no direct messages with {person} yet.",
+ "@emptyMessageListDm": {
+ "description": "Placeholder for a 1:1 DM page when there are no messages.",
+ "placeholders": {
+ "person": {"type": "String", "example": "Alice"}
+ }
+ },
+ "emptyMessageListDmDeactivatedUser": "You have no direct messages with {person}.",
+ "@emptyMessageListDmDeactivatedUser": {
+ "description": "Placeholder for a 1:1 DM page when there are no messages and the other user is deactivated.",
+ "placeholders": {
+ "person": {"type": "String", "example": "Alice"}
+ }
+ },
+ "emptyMessageListDmUnknownUser": "You have no direct messages with this user.",
+ "@emptyMessageListDmUnknownUser": {
+ "description": "Placeholder for a 1:1 DM page when there are no messages and the other user's name is unavailable."
+ },
+ "emptyMessageListGroupDm": "You have no direct messages with these users yet.",
+ "@emptyMessageListGroupDm": {
+ "description": "Placeholder for a group DM page when there are no messages."
+ },
+ "emptyMessageListGroupDmDeactivatedUser": "You have no direct messages with these users.",
+ "@emptyMessageListGroupDmDeactivatedUser": {
+ "description": "Placeholder for a group DM page when there are no messages and one or more participants is deactivated."
+ },
+ "emptyMessageListDmStartConversation": "Why not start the conversation?",
+ "@emptyMessageListDmStartConversation": {
+ "description": "Extra detail in the placeholder for some DM pages when there are no messages."
+ },
+ "emptyMessageListMentionsHeader": "This view will show messages where you are mentioned.",
+ "@emptyMessageListMentionsHeader": {
+ "description": "Placeholder for the 'Mentions' page when there are no messages."
+ },
+ "emptyMessageListMentionsMessage": "To call attention to a message, you can mention a user, a group, topic participants, or all subscribers to a channel. Type @ in the compose box, and choose who you’d like to mention from the list of suggestions.",
+ "@emptyMessageListMentionsMessage": {
+ "description": "Extra detail in the placeholder for the 'Mentions' page when there are no messages."
+ },
+ "emptyMessageListStarredHeader": "You have no starred messages.",
+ "@emptyMessageListStarredHeader": {
+ "description": "Placeholder for the 'Starred' page when there are no messages."
+ },
+ "emptyMessageListStarredMessage": "Starring is a good way to keep track of important messages, such as tasks you need to go back to, or useful references. To star a message, long-press it and tap “{button}.”",
+ "@emptyMessageListStarredMessage": {
+ "description": "Extra detail in the placeholder for the 'Starred' page when there are no messages. The {button} placeholder will be the button's translated text.",
+ "placeholders": {
+ "button": {"type": "String", "example": "Star message"}
+ }
+ },
"emptyMessageListSearch": "No search results.",
"@emptyMessageListSearch": {
"description": "Placeholder for the 'Search' page when there are no messages."
@@ -1090,10 +1159,14 @@
"@inboxPageTitle": {
"description": "Title for the page with unreads."
},
- "inboxEmptyPlaceholder": "There are no unread messages in your inbox. Use the buttons below to view the combined feed or list of channels.",
- "@inboxEmptyPlaceholder": {
+ "inboxEmptyPlaceholderHeader": "There are no unread messages in your inbox.",
+ "@inboxEmptyPlaceholderHeader": {
"description": "Centered text on the 'Inbox' page saying that there is no content to show."
},
+ "inboxEmptyPlaceholderMessage": "Use the buttons below to view the combined feed or list of channels.",
+ "@inboxEmptyPlaceholderMessage": {
+ "description": "Additional centered text on the 'Inbox' page saying that there is no content to show."
+ },
"recentDmConversationsPageTitle": "Direct messages",
"@recentDmConversationsPageTitle": {
"description": "Title for the page with a list of DM conversations."
@@ -1102,10 +1175,14 @@
"@recentDmConversationsSectionHeader": {
"description": "Heading for direct messages section on the 'Inbox' message view."
},
- "recentDmConversationsEmptyPlaceholder": "You have no direct messages yet! Why not start the conversation?",
- "@recentDmConversationsEmptyPlaceholder": {
+ "recentDmConversationsEmptyPlaceholderHeader": "You have no direct messages yet!",
+ "@recentDmConversationsEmptyPlaceholderHeader": {
"description": "Centered text on the 'Direct messages' page saying that there is no content to show."
},
+ "recentDmConversationsEmptyPlaceholderMessage": "Why not start a conversation?",
+ "@recentDmConversationsEmptyPlaceholderMessage": {
+ "description": "Additional centered text on the 'Direct messages' page saying that there is no content to show."
+ },
"combinedFeedPageTitle": "Combined feed",
"@combinedFeedPageTitle": {
"description": "Page title for the 'Combined feed' message view."
@@ -1122,12 +1199,12 @@
"@channelsPageTitle": {
"description": "Title for the page with a list of subscribed channels."
},
- "channelsEmptyPlaceholder": "You’re not subscribed to any channels yet.",
- "@channelsEmptyPlaceholder": {
+ "channelsEmptyPlaceholderHeader": "You’re not subscribed to any channels yet.",
+ "@channelsEmptyPlaceholderHeader": {
"description": "Centered text on the 'Channels' page saying that there is no content to show."
},
- "channelsEmptyPlaceholderWithAllChannelsLink": "You’re not subscribed to any channels yet. Try going to {allChannelsPageTitle} and joining some of them.",
- "@channelsEmptyPlaceholderWithAllChannelsLink": {
+ "channelsEmptyPlaceholderMessage": "Try going to {allChannelsPageTitle} and joining some of them.",
+ "@channelsEmptyPlaceholderMessage": {
"description": "Centered text on the 'Channels' page saying that there is no content to show, with a link to 'All channels'.",
"placeholders": {
"allChannelsPageTitle": {"type": "String", "example": "All channels"}
diff --git a/lib/generated/l10n/zulip_localizations.dart b/lib/generated/l10n/zulip_localizations.dart
index 31d472227d..26f83cc1b6 100644
--- a/lib/generated/l10n/zulip_localizations.dart
+++ b/lib/generated/l10n/zulip_localizations.dart
@@ -263,7 +263,7 @@ abstract class ZulipLocalizations {
///
/// In en, this message translates to:
/// **'There are no channels you can view in this organization.'**
- String get allChannelsEmptyPlaceholder;
+ String get allChannelsEmptyPlaceholderHeader;
/// Label for button in profile screen to navigate to DMs with the shown user.
///
@@ -1065,6 +1065,96 @@ abstract class ZulipLocalizations {
/// **'There are no messages here.'**
String get emptyMessageList;
+ /// Placeholder for the 'Combined feed' page when there are no messages.
+ ///
+ /// In en, this message translates to:
+ /// **'There are no messages in your combined feed.'**
+ String get emptyMessageListCombinedFeed;
+
+ /// Placeholder for a channel or topic page when there are no messages and you don’t have content access.
+ ///
+ /// In en, this message translates to:
+ /// **'You don’t have content access to this channel.'**
+ String get emptyMessageListChannelWithoutContentAccess;
+
+ /// Placeholder for a channel page when there are no messages and the channel does not exist or you don't have access to it.
+ ///
+ /// In en, this message translates to:
+ /// **'This channel doesn’t exist, or you are not allowed to view it.'**
+ String get emptyMessageListChannelUnavailable;
+
+ /// Placeholder for the self-DM page when there are no messages.
+ ///
+ /// In en, this message translates to:
+ /// **'You have not sent any direct messages to yourself yet!'**
+ String get emptyMessageListSelfDmHeader;
+
+ /// Extra detail in the placeholder for the self-DM page when there are no messages.
+ ///
+ /// In en, this message translates to:
+ /// **'Use this space for personal notes, or to test out Zulip features.'**
+ String get emptyMessageListSelfDmMessage;
+
+ /// Placeholder for a 1:1 DM page when there are no messages.
+ ///
+ /// In en, this message translates to:
+ /// **'You have no direct messages with {person} yet.'**
+ String emptyMessageListDm(String person);
+
+ /// Placeholder for a 1:1 DM page when there are no messages and the other user is deactivated.
+ ///
+ /// In en, this message translates to:
+ /// **'You have no direct messages with {person}.'**
+ String emptyMessageListDmDeactivatedUser(String person);
+
+ /// Placeholder for a 1:1 DM page when there are no messages and the other user's name is unavailable.
+ ///
+ /// In en, this message translates to:
+ /// **'You have no direct messages with this user.'**
+ String get emptyMessageListDmUnknownUser;
+
+ /// Placeholder for a group DM page when there are no messages.
+ ///
+ /// In en, this message translates to:
+ /// **'You have no direct messages with these users yet.'**
+ String get emptyMessageListGroupDm;
+
+ /// Placeholder for a group DM page when there are no messages and one or more participants is deactivated.
+ ///
+ /// In en, this message translates to:
+ /// **'You have no direct messages with these users.'**
+ String get emptyMessageListGroupDmDeactivatedUser;
+
+ /// Extra detail in the placeholder for some DM pages when there are no messages.
+ ///
+ /// In en, this message translates to:
+ /// **'Why not start the conversation?'**
+ String get emptyMessageListDmStartConversation;
+
+ /// Placeholder for the 'Mentions' page when there are no messages.
+ ///
+ /// In en, this message translates to:
+ /// **'This view will show messages where you are mentioned.'**
+ String get emptyMessageListMentionsHeader;
+
+ /// Extra detail in the placeholder for the 'Mentions' page when there are no messages.
+ ///
+ /// In en, this message translates to:
+ /// **'To call attention to a message, you can mention a user, a group, topic participants, or all subscribers to a channel. Type @ in the compose box, and choose who you’d like to mention from the list of suggestions.'**
+ String get emptyMessageListMentionsMessage;
+
+ /// Placeholder for the 'Starred' page when there are no messages.
+ ///
+ /// In en, this message translates to:
+ /// **'You have no starred messages.'**
+ String get emptyMessageListStarredHeader;
+
+ /// Extra detail in the placeholder for the 'Starred' page when there are no messages. The {button} placeholder will be the button's translated text.
+ ///
+ /// In en, this message translates to:
+ /// **'Starring is a good way to keep track of important messages, such as tasks you need to go back to, or useful references. To star a message, long-press it and tap “{button}.”'**
+ String emptyMessageListStarredMessage(String button);
+
/// Placeholder for the 'Search' page when there are no messages.
///
/// In en, this message translates to:
@@ -1620,8 +1710,14 @@ abstract class ZulipLocalizations {
/// Centered text on the 'Inbox' page saying that there is no content to show.
///
/// In en, this message translates to:
- /// **'There are no unread messages in your inbox. Use the buttons below to view the combined feed or list of channels.'**
- String get inboxEmptyPlaceholder;
+ /// **'There are no unread messages in your inbox.'**
+ String get inboxEmptyPlaceholderHeader;
+
+ /// Additional centered text on the 'Inbox' page saying that there is no content to show.
+ ///
+ /// In en, this message translates to:
+ /// **'Use the buttons below to view the combined feed or list of channels.'**
+ String get inboxEmptyPlaceholderMessage;
/// Title for the page with a list of DM conversations.
///
@@ -1638,8 +1734,14 @@ abstract class ZulipLocalizations {
/// Centered text on the 'Direct messages' page saying that there is no content to show.
///
/// In en, this message translates to:
- /// **'You have no direct messages yet! Why not start the conversation?'**
- String get recentDmConversationsEmptyPlaceholder;
+ /// **'You have no direct messages yet!'**
+ String get recentDmConversationsEmptyPlaceholderHeader;
+
+ /// Additional centered text on the 'Direct messages' page saying that there is no content to show.
+ ///
+ /// In en, this message translates to:
+ /// **'Why not start a conversation?'**
+ String get recentDmConversationsEmptyPlaceholderMessage;
/// Page title for the 'Combined feed' message view.
///
@@ -1669,15 +1771,13 @@ abstract class ZulipLocalizations {
///
/// In en, this message translates to:
/// **'You’re not subscribed to any channels yet.'**
- String get channelsEmptyPlaceholder;
+ String get channelsEmptyPlaceholderHeader;
/// Centered text on the 'Channels' page saying that there is no content to show, with a link to 'All channels'.
///
/// In en, this message translates to:
- /// **'You’re not subscribed to any channels yet. Try going to {allChannelsPageTitle} and joining some of them.'**
- String channelsEmptyPlaceholderWithAllChannelsLink(
- String allChannelsPageTitle,
- );
+ /// **'Try going to {allChannelsPageTitle} and joining some of them.'**
+ String channelsEmptyPlaceholderMessage(String allChannelsPageTitle);
/// Title for the page about sharing content received from other apps.
///
diff --git a/lib/generated/l10n/zulip_localizations_ar.dart b/lib/generated/l10n/zulip_localizations_ar.dart
index 1a292881ec..83e585eee7 100644
--- a/lib/generated/l10n/zulip_localizations_ar.dart
+++ b/lib/generated/l10n/zulip_localizations_ar.dart
@@ -74,7 +74,7 @@ class ZulipLocalizationsAr extends ZulipLocalizations {
String get allChannelsPageTitle => 'All channels';
@override
- String get allChannelsEmptyPlaceholder =>
+ String get allChannelsEmptyPlaceholderHeader =>
'There are no channels you can view in this organization.';
@override
@@ -568,6 +568,68 @@ class ZulipLocalizationsAr extends ZulipLocalizations {
@override
String get emptyMessageList => 'There are no messages here.';
+ @override
+ String get emptyMessageListCombinedFeed =>
+ 'There are no messages in your combined feed.';
+
+ @override
+ String get emptyMessageListChannelWithoutContentAccess =>
+ 'You don’t have content access to this channel.';
+
+ @override
+ String get emptyMessageListChannelUnavailable =>
+ 'This channel doesn’t exist, or you are not allowed to view it.';
+
+ @override
+ String get emptyMessageListSelfDmHeader =>
+ 'You have not sent any direct messages to yourself yet!';
+
+ @override
+ String get emptyMessageListSelfDmMessage =>
+ 'Use this space for personal notes, or to test out Zulip features.';
+
+ @override
+ String emptyMessageListDm(String person) {
+ return 'You have no direct messages with $person yet.';
+ }
+
+ @override
+ String emptyMessageListDmDeactivatedUser(String person) {
+ return 'You have no direct messages with $person.';
+ }
+
+ @override
+ String get emptyMessageListDmUnknownUser =>
+ 'You have no direct messages with this user.';
+
+ @override
+ String get emptyMessageListGroupDm =>
+ 'You have no direct messages with these users yet.';
+
+ @override
+ String get emptyMessageListGroupDmDeactivatedUser =>
+ 'You have no direct messages with these users.';
+
+ @override
+ String get emptyMessageListDmStartConversation =>
+ 'Why not start the conversation?';
+
+ @override
+ String get emptyMessageListMentionsHeader =>
+ 'This view will show messages where you are mentioned.';
+
+ @override
+ String get emptyMessageListMentionsMessage =>
+ 'To call attention to a message, you can mention a user, a group, topic participants, or all subscribers to a channel. Type @ in the compose box, and choose who you’d like to mention from the list of suggestions.';
+
+ @override
+ String get emptyMessageListStarredHeader => 'You have no starred messages.';
+
+ @override
+ String emptyMessageListStarredMessage(String button) {
+ return 'Starring is a good way to keep track of important messages, such as tasks you need to go back to, or useful references. To star a message, long-press it and tap “$button.”';
+ }
+
@override
String get emptyMessageListSearch => 'No search results.';
@@ -911,8 +973,12 @@ class ZulipLocalizationsAr extends ZulipLocalizations {
String get inboxPageTitle => 'Inbox';
@override
- String get inboxEmptyPlaceholder =>
- 'There are no unread messages in your inbox. Use the buttons below to view the combined feed or list of channels.';
+ String get inboxEmptyPlaceholderHeader =>
+ 'There are no unread messages in your inbox.';
+
+ @override
+ String get inboxEmptyPlaceholderMessage =>
+ 'Use the buttons below to view the combined feed or list of channels.';
@override
String get recentDmConversationsPageTitle => 'Direct messages';
@@ -921,8 +987,12 @@ class ZulipLocalizationsAr extends ZulipLocalizations {
String get recentDmConversationsSectionHeader => 'Direct messages';
@override
- String get recentDmConversationsEmptyPlaceholder =>
- 'You have no direct messages yet! Why not start the conversation?';
+ String get recentDmConversationsEmptyPlaceholderHeader =>
+ 'You have no direct messages yet!';
+
+ @override
+ String get recentDmConversationsEmptyPlaceholderMessage =>
+ 'Why not start a conversation?';
@override
String get combinedFeedPageTitle => 'Combined feed';
@@ -937,14 +1007,12 @@ class ZulipLocalizationsAr extends ZulipLocalizations {
String get channelsPageTitle => 'Channels';
@override
- String get channelsEmptyPlaceholder =>
+ String get channelsEmptyPlaceholderHeader =>
'You’re not subscribed to any channels yet.';
@override
- String channelsEmptyPlaceholderWithAllChannelsLink(
- String allChannelsPageTitle,
- ) {
- return 'You’re not subscribed to any channels yet. Try going to $allChannelsPageTitle and joining some of them.';
+ String channelsEmptyPlaceholderMessage(String allChannelsPageTitle) {
+ return 'Try going to $allChannelsPageTitle and joining some of them.';
}
@override
diff --git a/lib/generated/l10n/zulip_localizations_de.dart b/lib/generated/l10n/zulip_localizations_de.dart
index 06e2ea1a29..669931292d 100644
--- a/lib/generated/l10n/zulip_localizations_de.dart
+++ b/lib/generated/l10n/zulip_localizations_de.dart
@@ -74,8 +74,8 @@ class ZulipLocalizationsDe extends ZulipLocalizations {
String get allChannelsPageTitle => 'Alle Kanäle';
@override
- String get allChannelsEmptyPlaceholder =>
- 'Es gibt in dieser Organisation keine Kanäle die du ansehen kannst.';
+ String get allChannelsEmptyPlaceholderHeader =>
+ 'There are no channels you can view in this organization.';
@override
String get profileButtonSendDirectMessage => 'Direktnachricht senden';
@@ -587,6 +587,68 @@ class ZulipLocalizationsDe extends ZulipLocalizations {
@override
String get emptyMessageList => 'Hier gibt es keine Nachrichten.';
+ @override
+ String get emptyMessageListCombinedFeed =>
+ 'There are no messages in your combined feed.';
+
+ @override
+ String get emptyMessageListChannelWithoutContentAccess =>
+ 'You don’t have content access to this channel.';
+
+ @override
+ String get emptyMessageListChannelUnavailable =>
+ 'This channel doesn’t exist, or you are not allowed to view it.';
+
+ @override
+ String get emptyMessageListSelfDmHeader =>
+ 'You have not sent any direct messages to yourself yet!';
+
+ @override
+ String get emptyMessageListSelfDmMessage =>
+ 'Use this space for personal notes, or to test out Zulip features.';
+
+ @override
+ String emptyMessageListDm(String person) {
+ return 'You have no direct messages with $person yet.';
+ }
+
+ @override
+ String emptyMessageListDmDeactivatedUser(String person) {
+ return 'You have no direct messages with $person.';
+ }
+
+ @override
+ String get emptyMessageListDmUnknownUser =>
+ 'You have no direct messages with this user.';
+
+ @override
+ String get emptyMessageListGroupDm =>
+ 'You have no direct messages with these users yet.';
+
+ @override
+ String get emptyMessageListGroupDmDeactivatedUser =>
+ 'You have no direct messages with these users.';
+
+ @override
+ String get emptyMessageListDmStartConversation =>
+ 'Why not start the conversation?';
+
+ @override
+ String get emptyMessageListMentionsHeader =>
+ 'This view will show messages where you are mentioned.';
+
+ @override
+ String get emptyMessageListMentionsMessage =>
+ 'To call attention to a message, you can mention a user, a group, topic participants, or all subscribers to a channel. Type @ in the compose box, and choose who you’d like to mention from the list of suggestions.';
+
+ @override
+ String get emptyMessageListStarredHeader => 'You have no starred messages.';
+
+ @override
+ String emptyMessageListStarredMessage(String button) {
+ return 'Starring is a good way to keep track of important messages, such as tasks you need to go back to, or useful references. To star a message, long-press it and tap “$button.”';
+ }
+
@override
String get emptyMessageListSearch => 'Keine Suchergebnisse.';
@@ -936,8 +998,12 @@ class ZulipLocalizationsDe extends ZulipLocalizations {
String get inboxPageTitle => 'Eingang';
@override
- String get inboxEmptyPlaceholder =>
- 'Es sind keine ungelesenen Nachrichten in deinem Eingang. Verwende die Buttons unten, um den kombinierten Feed oder die Kanalliste anzusehen.';
+ String get inboxEmptyPlaceholderHeader =>
+ 'There are no unread messages in your inbox.';
+
+ @override
+ String get inboxEmptyPlaceholderMessage =>
+ 'Use the buttons below to view the combined feed or list of channels.';
@override
String get recentDmConversationsPageTitle => 'Direktnachrichten';
@@ -946,8 +1012,12 @@ class ZulipLocalizationsDe extends ZulipLocalizations {
String get recentDmConversationsSectionHeader => 'Direktnachrichten';
@override
- String get recentDmConversationsEmptyPlaceholder =>
- 'Du hast noch keine Direktnachrichten! Warum nicht die Unterhaltung beginnen?';
+ String get recentDmConversationsEmptyPlaceholderHeader =>
+ 'You have no direct messages yet!';
+
+ @override
+ String get recentDmConversationsEmptyPlaceholderMessage =>
+ 'Why not start a conversation?';
@override
String get combinedFeedPageTitle => 'Kombinierter Feed';
@@ -962,13 +1032,12 @@ class ZulipLocalizationsDe extends ZulipLocalizations {
String get channelsPageTitle => 'Kanäle';
@override
- String get channelsEmptyPlaceholder => 'Du hast noch keine Kanäle abonniert.';
+ String get channelsEmptyPlaceholderHeader =>
+ 'You’re not subscribed to any channels yet.';
@override
- String channelsEmptyPlaceholderWithAllChannelsLink(
- String allChannelsPageTitle,
- ) {
- return 'Du hast noch keine Kanäle abonniert. Probiere zu $allChannelsPageTitle zu gehen und ein paar von ihnen beizutreten.';
+ String channelsEmptyPlaceholderMessage(String allChannelsPageTitle) {
+ return 'Try going to $allChannelsPageTitle and joining some of them.';
}
@override
diff --git a/lib/generated/l10n/zulip_localizations_el.dart b/lib/generated/l10n/zulip_localizations_el.dart
index ab2e6e686c..030966263c 100644
--- a/lib/generated/l10n/zulip_localizations_el.dart
+++ b/lib/generated/l10n/zulip_localizations_el.dart
@@ -74,7 +74,7 @@ class ZulipLocalizationsEl extends ZulipLocalizations {
String get allChannelsPageTitle => 'All channels';
@override
- String get allChannelsEmptyPlaceholder =>
+ String get allChannelsEmptyPlaceholderHeader =>
'There are no channels you can view in this organization.';
@override
@@ -568,6 +568,68 @@ class ZulipLocalizationsEl extends ZulipLocalizations {
@override
String get emptyMessageList => 'There are no messages here.';
+ @override
+ String get emptyMessageListCombinedFeed =>
+ 'There are no messages in your combined feed.';
+
+ @override
+ String get emptyMessageListChannelWithoutContentAccess =>
+ 'You don’t have content access to this channel.';
+
+ @override
+ String get emptyMessageListChannelUnavailable =>
+ 'This channel doesn’t exist, or you are not allowed to view it.';
+
+ @override
+ String get emptyMessageListSelfDmHeader =>
+ 'You have not sent any direct messages to yourself yet!';
+
+ @override
+ String get emptyMessageListSelfDmMessage =>
+ 'Use this space for personal notes, or to test out Zulip features.';
+
+ @override
+ String emptyMessageListDm(String person) {
+ return 'You have no direct messages with $person yet.';
+ }
+
+ @override
+ String emptyMessageListDmDeactivatedUser(String person) {
+ return 'You have no direct messages with $person.';
+ }
+
+ @override
+ String get emptyMessageListDmUnknownUser =>
+ 'You have no direct messages with this user.';
+
+ @override
+ String get emptyMessageListGroupDm =>
+ 'You have no direct messages with these users yet.';
+
+ @override
+ String get emptyMessageListGroupDmDeactivatedUser =>
+ 'You have no direct messages with these users.';
+
+ @override
+ String get emptyMessageListDmStartConversation =>
+ 'Why not start the conversation?';
+
+ @override
+ String get emptyMessageListMentionsHeader =>
+ 'This view will show messages where you are mentioned.';
+
+ @override
+ String get emptyMessageListMentionsMessage =>
+ 'To call attention to a message, you can mention a user, a group, topic participants, or all subscribers to a channel. Type @ in the compose box, and choose who you’d like to mention from the list of suggestions.';
+
+ @override
+ String get emptyMessageListStarredHeader => 'You have no starred messages.';
+
+ @override
+ String emptyMessageListStarredMessage(String button) {
+ return 'Starring is a good way to keep track of important messages, such as tasks you need to go back to, or useful references. To star a message, long-press it and tap “$button.”';
+ }
+
@override
String get emptyMessageListSearch => 'No search results.';
@@ -911,8 +973,12 @@ class ZulipLocalizationsEl extends ZulipLocalizations {
String get inboxPageTitle => 'Inbox';
@override
- String get inboxEmptyPlaceholder =>
- 'There are no unread messages in your inbox. Use the buttons below to view the combined feed or list of channels.';
+ String get inboxEmptyPlaceholderHeader =>
+ 'There are no unread messages in your inbox.';
+
+ @override
+ String get inboxEmptyPlaceholderMessage =>
+ 'Use the buttons below to view the combined feed or list of channels.';
@override
String get recentDmConversationsPageTitle => 'Direct messages';
@@ -921,8 +987,12 @@ class ZulipLocalizationsEl extends ZulipLocalizations {
String get recentDmConversationsSectionHeader => 'Direct messages';
@override
- String get recentDmConversationsEmptyPlaceholder =>
- 'You have no direct messages yet! Why not start the conversation?';
+ String get recentDmConversationsEmptyPlaceholderHeader =>
+ 'You have no direct messages yet!';
+
+ @override
+ String get recentDmConversationsEmptyPlaceholderMessage =>
+ 'Why not start a conversation?';
@override
String get combinedFeedPageTitle => 'Combined feed';
@@ -937,14 +1007,12 @@ class ZulipLocalizationsEl extends ZulipLocalizations {
String get channelsPageTitle => 'Channels';
@override
- String get channelsEmptyPlaceholder =>
+ String get channelsEmptyPlaceholderHeader =>
'You’re not subscribed to any channels yet.';
@override
- String channelsEmptyPlaceholderWithAllChannelsLink(
- String allChannelsPageTitle,
- ) {
- return 'You’re not subscribed to any channels yet. Try going to $allChannelsPageTitle and joining some of them.';
+ String channelsEmptyPlaceholderMessage(String allChannelsPageTitle) {
+ return 'Try going to $allChannelsPageTitle and joining some of them.';
}
@override
diff --git a/lib/generated/l10n/zulip_localizations_en.dart b/lib/generated/l10n/zulip_localizations_en.dart
index 80c1c2c475..03ae1f5571 100644
--- a/lib/generated/l10n/zulip_localizations_en.dart
+++ b/lib/generated/l10n/zulip_localizations_en.dart
@@ -74,7 +74,7 @@ class ZulipLocalizationsEn extends ZulipLocalizations {
String get allChannelsPageTitle => 'All channels';
@override
- String get allChannelsEmptyPlaceholder =>
+ String get allChannelsEmptyPlaceholderHeader =>
'There are no channels you can view in this organization.';
@override
@@ -568,6 +568,68 @@ class ZulipLocalizationsEn extends ZulipLocalizations {
@override
String get emptyMessageList => 'There are no messages here.';
+ @override
+ String get emptyMessageListCombinedFeed =>
+ 'There are no messages in your combined feed.';
+
+ @override
+ String get emptyMessageListChannelWithoutContentAccess =>
+ 'You don’t have content access to this channel.';
+
+ @override
+ String get emptyMessageListChannelUnavailable =>
+ 'This channel doesn’t exist, or you are not allowed to view it.';
+
+ @override
+ String get emptyMessageListSelfDmHeader =>
+ 'You have not sent any direct messages to yourself yet!';
+
+ @override
+ String get emptyMessageListSelfDmMessage =>
+ 'Use this space for personal notes, or to test out Zulip features.';
+
+ @override
+ String emptyMessageListDm(String person) {
+ return 'You have no direct messages with $person yet.';
+ }
+
+ @override
+ String emptyMessageListDmDeactivatedUser(String person) {
+ return 'You have no direct messages with $person.';
+ }
+
+ @override
+ String get emptyMessageListDmUnknownUser =>
+ 'You have no direct messages with this user.';
+
+ @override
+ String get emptyMessageListGroupDm =>
+ 'You have no direct messages with these users yet.';
+
+ @override
+ String get emptyMessageListGroupDmDeactivatedUser =>
+ 'You have no direct messages with these users.';
+
+ @override
+ String get emptyMessageListDmStartConversation =>
+ 'Why not start the conversation?';
+
+ @override
+ String get emptyMessageListMentionsHeader =>
+ 'This view will show messages where you are mentioned.';
+
+ @override
+ String get emptyMessageListMentionsMessage =>
+ 'To call attention to a message, you can mention a user, a group, topic participants, or all subscribers to a channel. Type @ in the compose box, and choose who you’d like to mention from the list of suggestions.';
+
+ @override
+ String get emptyMessageListStarredHeader => 'You have no starred messages.';
+
+ @override
+ String emptyMessageListStarredMessage(String button) {
+ return 'Starring is a good way to keep track of important messages, such as tasks you need to go back to, or useful references. To star a message, long-press it and tap “$button.”';
+ }
+
@override
String get emptyMessageListSearch => 'No search results.';
@@ -911,8 +973,12 @@ class ZulipLocalizationsEn extends ZulipLocalizations {
String get inboxPageTitle => 'Inbox';
@override
- String get inboxEmptyPlaceholder =>
- 'There are no unread messages in your inbox. Use the buttons below to view the combined feed or list of channels.';
+ String get inboxEmptyPlaceholderHeader =>
+ 'There are no unread messages in your inbox.';
+
+ @override
+ String get inboxEmptyPlaceholderMessage =>
+ 'Use the buttons below to view the combined feed or list of channels.';
@override
String get recentDmConversationsPageTitle => 'Direct messages';
@@ -921,8 +987,12 @@ class ZulipLocalizationsEn extends ZulipLocalizations {
String get recentDmConversationsSectionHeader => 'Direct messages';
@override
- String get recentDmConversationsEmptyPlaceholder =>
- 'You have no direct messages yet! Why not start the conversation?';
+ String get recentDmConversationsEmptyPlaceholderHeader =>
+ 'You have no direct messages yet!';
+
+ @override
+ String get recentDmConversationsEmptyPlaceholderMessage =>
+ 'Why not start a conversation?';
@override
String get combinedFeedPageTitle => 'Combined feed';
@@ -937,14 +1007,12 @@ class ZulipLocalizationsEn extends ZulipLocalizations {
String get channelsPageTitle => 'Channels';
@override
- String get channelsEmptyPlaceholder =>
+ String get channelsEmptyPlaceholderHeader =>
'You’re not subscribed to any channels yet.';
@override
- String channelsEmptyPlaceholderWithAllChannelsLink(
- String allChannelsPageTitle,
- ) {
- return 'You’re not subscribed to any channels yet. Try going to $allChannelsPageTitle and joining some of them.';
+ String channelsEmptyPlaceholderMessage(String allChannelsPageTitle) {
+ return 'Try going to $allChannelsPageTitle and joining some of them.';
}
@override
diff --git a/lib/generated/l10n/zulip_localizations_es.dart b/lib/generated/l10n/zulip_localizations_es.dart
index 7058e699fd..0756069a36 100644
--- a/lib/generated/l10n/zulip_localizations_es.dart
+++ b/lib/generated/l10n/zulip_localizations_es.dart
@@ -74,7 +74,7 @@ class ZulipLocalizationsEs extends ZulipLocalizations {
String get allChannelsPageTitle => 'All channels';
@override
- String get allChannelsEmptyPlaceholder =>
+ String get allChannelsEmptyPlaceholderHeader =>
'There are no channels you can view in this organization.';
@override
@@ -568,6 +568,68 @@ class ZulipLocalizationsEs extends ZulipLocalizations {
@override
String get emptyMessageList => 'There are no messages here.';
+ @override
+ String get emptyMessageListCombinedFeed =>
+ 'There are no messages in your combined feed.';
+
+ @override
+ String get emptyMessageListChannelWithoutContentAccess =>
+ 'You don’t have content access to this channel.';
+
+ @override
+ String get emptyMessageListChannelUnavailable =>
+ 'This channel doesn’t exist, or you are not allowed to view it.';
+
+ @override
+ String get emptyMessageListSelfDmHeader =>
+ 'You have not sent any direct messages to yourself yet!';
+
+ @override
+ String get emptyMessageListSelfDmMessage =>
+ 'Use this space for personal notes, or to test out Zulip features.';
+
+ @override
+ String emptyMessageListDm(String person) {
+ return 'You have no direct messages with $person yet.';
+ }
+
+ @override
+ String emptyMessageListDmDeactivatedUser(String person) {
+ return 'You have no direct messages with $person.';
+ }
+
+ @override
+ String get emptyMessageListDmUnknownUser =>
+ 'You have no direct messages with this user.';
+
+ @override
+ String get emptyMessageListGroupDm =>
+ 'You have no direct messages with these users yet.';
+
+ @override
+ String get emptyMessageListGroupDmDeactivatedUser =>
+ 'You have no direct messages with these users.';
+
+ @override
+ String get emptyMessageListDmStartConversation =>
+ 'Why not start the conversation?';
+
+ @override
+ String get emptyMessageListMentionsHeader =>
+ 'This view will show messages where you are mentioned.';
+
+ @override
+ String get emptyMessageListMentionsMessage =>
+ 'To call attention to a message, you can mention a user, a group, topic participants, or all subscribers to a channel. Type @ in the compose box, and choose who you’d like to mention from the list of suggestions.';
+
+ @override
+ String get emptyMessageListStarredHeader => 'You have no starred messages.';
+
+ @override
+ String emptyMessageListStarredMessage(String button) {
+ return 'Starring is a good way to keep track of important messages, such as tasks you need to go back to, or useful references. To star a message, long-press it and tap “$button.”';
+ }
+
@override
String get emptyMessageListSearch => 'No search results.';
@@ -911,8 +973,12 @@ class ZulipLocalizationsEs extends ZulipLocalizations {
String get inboxPageTitle => 'Inbox';
@override
- String get inboxEmptyPlaceholder =>
- 'There are no unread messages in your inbox. Use the buttons below to view the combined feed or list of channels.';
+ String get inboxEmptyPlaceholderHeader =>
+ 'There are no unread messages in your inbox.';
+
+ @override
+ String get inboxEmptyPlaceholderMessage =>
+ 'Use the buttons below to view the combined feed or list of channels.';
@override
String get recentDmConversationsPageTitle => 'Direct messages';
@@ -921,8 +987,12 @@ class ZulipLocalizationsEs extends ZulipLocalizations {
String get recentDmConversationsSectionHeader => 'Direct messages';
@override
- String get recentDmConversationsEmptyPlaceholder =>
- 'You have no direct messages yet! Why not start the conversation?';
+ String get recentDmConversationsEmptyPlaceholderHeader =>
+ 'You have no direct messages yet!';
+
+ @override
+ String get recentDmConversationsEmptyPlaceholderMessage =>
+ 'Why not start a conversation?';
@override
String get combinedFeedPageTitle => 'Combined feed';
@@ -937,14 +1007,12 @@ class ZulipLocalizationsEs extends ZulipLocalizations {
String get channelsPageTitle => 'Channels';
@override
- String get channelsEmptyPlaceholder =>
+ String get channelsEmptyPlaceholderHeader =>
'You’re not subscribed to any channels yet.';
@override
- String channelsEmptyPlaceholderWithAllChannelsLink(
- String allChannelsPageTitle,
- ) {
- return 'You’re not subscribed to any channels yet. Try going to $allChannelsPageTitle and joining some of them.';
+ String channelsEmptyPlaceholderMessage(String allChannelsPageTitle) {
+ return 'Try going to $allChannelsPageTitle and joining some of them.';
}
@override
diff --git a/lib/generated/l10n/zulip_localizations_fr.dart b/lib/generated/l10n/zulip_localizations_fr.dart
index 2e430ea046..ee92f30af5 100644
--- a/lib/generated/l10n/zulip_localizations_fr.dart
+++ b/lib/generated/l10n/zulip_localizations_fr.dart
@@ -75,7 +75,7 @@ class ZulipLocalizationsFr extends ZulipLocalizations {
String get allChannelsPageTitle => 'All channels';
@override
- String get allChannelsEmptyPlaceholder =>
+ String get allChannelsEmptyPlaceholderHeader =>
'There are no channels you can view in this organization.';
@override
@@ -584,6 +584,68 @@ class ZulipLocalizationsFr extends ZulipLocalizations {
@override
String get emptyMessageList => 'There are no messages here.';
+ @override
+ String get emptyMessageListCombinedFeed =>
+ 'There are no messages in your combined feed.';
+
+ @override
+ String get emptyMessageListChannelWithoutContentAccess =>
+ 'You don’t have content access to this channel.';
+
+ @override
+ String get emptyMessageListChannelUnavailable =>
+ 'This channel doesn’t exist, or you are not allowed to view it.';
+
+ @override
+ String get emptyMessageListSelfDmHeader =>
+ 'You have not sent any direct messages to yourself yet!';
+
+ @override
+ String get emptyMessageListSelfDmMessage =>
+ 'Use this space for personal notes, or to test out Zulip features.';
+
+ @override
+ String emptyMessageListDm(String person) {
+ return 'You have no direct messages with $person yet.';
+ }
+
+ @override
+ String emptyMessageListDmDeactivatedUser(String person) {
+ return 'You have no direct messages with $person.';
+ }
+
+ @override
+ String get emptyMessageListDmUnknownUser =>
+ 'You have no direct messages with this user.';
+
+ @override
+ String get emptyMessageListGroupDm =>
+ 'You have no direct messages with these users yet.';
+
+ @override
+ String get emptyMessageListGroupDmDeactivatedUser =>
+ 'You have no direct messages with these users.';
+
+ @override
+ String get emptyMessageListDmStartConversation =>
+ 'Why not start the conversation?';
+
+ @override
+ String get emptyMessageListMentionsHeader =>
+ 'This view will show messages where you are mentioned.';
+
+ @override
+ String get emptyMessageListMentionsMessage =>
+ 'To call attention to a message, you can mention a user, a group, topic participants, or all subscribers to a channel. Type @ in the compose box, and choose who you’d like to mention from the list of suggestions.';
+
+ @override
+ String get emptyMessageListStarredHeader => 'You have no starred messages.';
+
+ @override
+ String emptyMessageListStarredMessage(String button) {
+ return 'Starring is a good way to keep track of important messages, such as tasks you need to go back to, or useful references. To star a message, long-press it and tap “$button.”';
+ }
+
@override
String get emptyMessageListSearch => 'No search results.';
@@ -927,8 +989,12 @@ class ZulipLocalizationsFr extends ZulipLocalizations {
String get inboxPageTitle => 'Boîte de réception';
@override
- String get inboxEmptyPlaceholder =>
- 'Aucun message non lu dans votre boîte de réception. Utilisez les boutons ci-dessous pour voir le fil groupé ou la liste des chaînes.';
+ String get inboxEmptyPlaceholderHeader =>
+ 'There are no unread messages in your inbox.';
+
+ @override
+ String get inboxEmptyPlaceholderMessage =>
+ 'Use the buttons below to view the combined feed or list of channels.';
@override
String get recentDmConversationsPageTitle => 'Messages directs';
@@ -937,8 +1003,12 @@ class ZulipLocalizationsFr extends ZulipLocalizations {
String get recentDmConversationsSectionHeader => 'Messages directs';
@override
- String get recentDmConversationsEmptyPlaceholder =>
- 'Vous n\'avez aucun message direct pour l\'instant ! Et si vous lanciez une conversation ?';
+ String get recentDmConversationsEmptyPlaceholderHeader =>
+ 'You have no direct messages yet!';
+
+ @override
+ String get recentDmConversationsEmptyPlaceholderMessage =>
+ 'Why not start a conversation?';
@override
String get combinedFeedPageTitle => 'Fil groupé';
@@ -953,14 +1023,12 @@ class ZulipLocalizationsFr extends ZulipLocalizations {
String get channelsPageTitle => 'Chaînes';
@override
- String get channelsEmptyPlaceholder =>
- 'Vous n\'êtes abonné à aucune chaîne pour l\'instant.';
+ String get channelsEmptyPlaceholderHeader =>
+ 'You’re not subscribed to any channels yet.';
@override
- String channelsEmptyPlaceholderWithAllChannelsLink(
- String allChannelsPageTitle,
- ) {
- return 'Vous n\'êtes abonné à aucune chaîne pour l\'instant. Allez sur $allChannelsPageTitle pour vous abonner.';
+ String channelsEmptyPlaceholderMessage(String allChannelsPageTitle) {
+ return 'Try going to $allChannelsPageTitle and joining some of them.';
}
@override
diff --git a/lib/generated/l10n/zulip_localizations_he.dart b/lib/generated/l10n/zulip_localizations_he.dart
index 16324eede7..c5d09ec112 100644
--- a/lib/generated/l10n/zulip_localizations_he.dart
+++ b/lib/generated/l10n/zulip_localizations_he.dart
@@ -74,7 +74,7 @@ class ZulipLocalizationsHe extends ZulipLocalizations {
String get allChannelsPageTitle => 'All channels';
@override
- String get allChannelsEmptyPlaceholder =>
+ String get allChannelsEmptyPlaceholderHeader =>
'There are no channels you can view in this organization.';
@override
@@ -568,6 +568,68 @@ class ZulipLocalizationsHe extends ZulipLocalizations {
@override
String get emptyMessageList => 'There are no messages here.';
+ @override
+ String get emptyMessageListCombinedFeed =>
+ 'There are no messages in your combined feed.';
+
+ @override
+ String get emptyMessageListChannelWithoutContentAccess =>
+ 'You don’t have content access to this channel.';
+
+ @override
+ String get emptyMessageListChannelUnavailable =>
+ 'This channel doesn’t exist, or you are not allowed to view it.';
+
+ @override
+ String get emptyMessageListSelfDmHeader =>
+ 'You have not sent any direct messages to yourself yet!';
+
+ @override
+ String get emptyMessageListSelfDmMessage =>
+ 'Use this space for personal notes, or to test out Zulip features.';
+
+ @override
+ String emptyMessageListDm(String person) {
+ return 'You have no direct messages with $person yet.';
+ }
+
+ @override
+ String emptyMessageListDmDeactivatedUser(String person) {
+ return 'You have no direct messages with $person.';
+ }
+
+ @override
+ String get emptyMessageListDmUnknownUser =>
+ 'You have no direct messages with this user.';
+
+ @override
+ String get emptyMessageListGroupDm =>
+ 'You have no direct messages with these users yet.';
+
+ @override
+ String get emptyMessageListGroupDmDeactivatedUser =>
+ 'You have no direct messages with these users.';
+
+ @override
+ String get emptyMessageListDmStartConversation =>
+ 'Why not start the conversation?';
+
+ @override
+ String get emptyMessageListMentionsHeader =>
+ 'This view will show messages where you are mentioned.';
+
+ @override
+ String get emptyMessageListMentionsMessage =>
+ 'To call attention to a message, you can mention a user, a group, topic participants, or all subscribers to a channel. Type @ in the compose box, and choose who you’d like to mention from the list of suggestions.';
+
+ @override
+ String get emptyMessageListStarredHeader => 'You have no starred messages.';
+
+ @override
+ String emptyMessageListStarredMessage(String button) {
+ return 'Starring is a good way to keep track of important messages, such as tasks you need to go back to, or useful references. To star a message, long-press it and tap “$button.”';
+ }
+
@override
String get emptyMessageListSearch => 'No search results.';
@@ -911,8 +973,12 @@ class ZulipLocalizationsHe extends ZulipLocalizations {
String get inboxPageTitle => 'Inbox';
@override
- String get inboxEmptyPlaceholder =>
- 'There are no unread messages in your inbox. Use the buttons below to view the combined feed or list of channels.';
+ String get inboxEmptyPlaceholderHeader =>
+ 'There are no unread messages in your inbox.';
+
+ @override
+ String get inboxEmptyPlaceholderMessage =>
+ 'Use the buttons below to view the combined feed or list of channels.';
@override
String get recentDmConversationsPageTitle => 'Direct messages';
@@ -921,8 +987,12 @@ class ZulipLocalizationsHe extends ZulipLocalizations {
String get recentDmConversationsSectionHeader => 'Direct messages';
@override
- String get recentDmConversationsEmptyPlaceholder =>
- 'You have no direct messages yet! Why not start the conversation?';
+ String get recentDmConversationsEmptyPlaceholderHeader =>
+ 'You have no direct messages yet!';
+
+ @override
+ String get recentDmConversationsEmptyPlaceholderMessage =>
+ 'Why not start a conversation?';
@override
String get combinedFeedPageTitle => 'Combined feed';
@@ -937,14 +1007,12 @@ class ZulipLocalizationsHe extends ZulipLocalizations {
String get channelsPageTitle => 'Channels';
@override
- String get channelsEmptyPlaceholder =>
+ String get channelsEmptyPlaceholderHeader =>
'You’re not subscribed to any channels yet.';
@override
- String channelsEmptyPlaceholderWithAllChannelsLink(
- String allChannelsPageTitle,
- ) {
- return 'You’re not subscribed to any channels yet. Try going to $allChannelsPageTitle and joining some of them.';
+ String channelsEmptyPlaceholderMessage(String allChannelsPageTitle) {
+ return 'Try going to $allChannelsPageTitle and joining some of them.';
}
@override
diff --git a/lib/generated/l10n/zulip_localizations_hu.dart b/lib/generated/l10n/zulip_localizations_hu.dart
index 4e3da8f3ef..1b8d14b673 100644
--- a/lib/generated/l10n/zulip_localizations_hu.dart
+++ b/lib/generated/l10n/zulip_localizations_hu.dart
@@ -74,7 +74,7 @@ class ZulipLocalizationsHu extends ZulipLocalizations {
String get allChannelsPageTitle => 'All channels';
@override
- String get allChannelsEmptyPlaceholder =>
+ String get allChannelsEmptyPlaceholderHeader =>
'There are no channels you can view in this organization.';
@override
@@ -568,6 +568,68 @@ class ZulipLocalizationsHu extends ZulipLocalizations {
@override
String get emptyMessageList => 'There are no messages here.';
+ @override
+ String get emptyMessageListCombinedFeed =>
+ 'There are no messages in your combined feed.';
+
+ @override
+ String get emptyMessageListChannelWithoutContentAccess =>
+ 'You don’t have content access to this channel.';
+
+ @override
+ String get emptyMessageListChannelUnavailable =>
+ 'This channel doesn’t exist, or you are not allowed to view it.';
+
+ @override
+ String get emptyMessageListSelfDmHeader =>
+ 'You have not sent any direct messages to yourself yet!';
+
+ @override
+ String get emptyMessageListSelfDmMessage =>
+ 'Use this space for personal notes, or to test out Zulip features.';
+
+ @override
+ String emptyMessageListDm(String person) {
+ return 'You have no direct messages with $person yet.';
+ }
+
+ @override
+ String emptyMessageListDmDeactivatedUser(String person) {
+ return 'You have no direct messages with $person.';
+ }
+
+ @override
+ String get emptyMessageListDmUnknownUser =>
+ 'You have no direct messages with this user.';
+
+ @override
+ String get emptyMessageListGroupDm =>
+ 'You have no direct messages with these users yet.';
+
+ @override
+ String get emptyMessageListGroupDmDeactivatedUser =>
+ 'You have no direct messages with these users.';
+
+ @override
+ String get emptyMessageListDmStartConversation =>
+ 'Why not start the conversation?';
+
+ @override
+ String get emptyMessageListMentionsHeader =>
+ 'This view will show messages where you are mentioned.';
+
+ @override
+ String get emptyMessageListMentionsMessage =>
+ 'To call attention to a message, you can mention a user, a group, topic participants, or all subscribers to a channel. Type @ in the compose box, and choose who you’d like to mention from the list of suggestions.';
+
+ @override
+ String get emptyMessageListStarredHeader => 'You have no starred messages.';
+
+ @override
+ String emptyMessageListStarredMessage(String button) {
+ return 'Starring is a good way to keep track of important messages, such as tasks you need to go back to, or useful references. To star a message, long-press it and tap “$button.”';
+ }
+
@override
String get emptyMessageListSearch => 'No search results.';
@@ -911,8 +973,12 @@ class ZulipLocalizationsHu extends ZulipLocalizations {
String get inboxPageTitle => 'Inbox';
@override
- String get inboxEmptyPlaceholder =>
- 'There are no unread messages in your inbox. Use the buttons below to view the combined feed or list of channels.';
+ String get inboxEmptyPlaceholderHeader =>
+ 'There are no unread messages in your inbox.';
+
+ @override
+ String get inboxEmptyPlaceholderMessage =>
+ 'Use the buttons below to view the combined feed or list of channels.';
@override
String get recentDmConversationsPageTitle => 'Direct messages';
@@ -921,8 +987,12 @@ class ZulipLocalizationsHu extends ZulipLocalizations {
String get recentDmConversationsSectionHeader => 'Direct messages';
@override
- String get recentDmConversationsEmptyPlaceholder =>
- 'You have no direct messages yet! Why not start the conversation?';
+ String get recentDmConversationsEmptyPlaceholderHeader =>
+ 'You have no direct messages yet!';
+
+ @override
+ String get recentDmConversationsEmptyPlaceholderMessage =>
+ 'Why not start a conversation?';
@override
String get combinedFeedPageTitle => 'Combined feed';
@@ -937,14 +1007,12 @@ class ZulipLocalizationsHu extends ZulipLocalizations {
String get channelsPageTitle => 'Channels';
@override
- String get channelsEmptyPlaceholder =>
+ String get channelsEmptyPlaceholderHeader =>
'You’re not subscribed to any channels yet.';
@override
- String channelsEmptyPlaceholderWithAllChannelsLink(
- String allChannelsPageTitle,
- ) {
- return 'You’re not subscribed to any channels yet. Try going to $allChannelsPageTitle and joining some of them.';
+ String channelsEmptyPlaceholderMessage(String allChannelsPageTitle) {
+ return 'Try going to $allChannelsPageTitle and joining some of them.';
}
@override
diff --git a/lib/generated/l10n/zulip_localizations_it.dart b/lib/generated/l10n/zulip_localizations_it.dart
index 5d5dd0e278..bb32dfb720 100644
--- a/lib/generated/l10n/zulip_localizations_it.dart
+++ b/lib/generated/l10n/zulip_localizations_it.dart
@@ -75,7 +75,7 @@ class ZulipLocalizationsIt extends ZulipLocalizations {
String get allChannelsPageTitle => 'Titolo per la pagina \"Tutti i canali\".';
@override
- String get allChannelsEmptyPlaceholder =>
+ String get allChannelsEmptyPlaceholderHeader =>
'There are no channels you can view in this organization.';
@override
@@ -581,6 +581,68 @@ class ZulipLocalizationsIt extends ZulipLocalizations {
@override
String get emptyMessageList => 'There are no messages here.';
+ @override
+ String get emptyMessageListCombinedFeed =>
+ 'There are no messages in your combined feed.';
+
+ @override
+ String get emptyMessageListChannelWithoutContentAccess =>
+ 'You don’t have content access to this channel.';
+
+ @override
+ String get emptyMessageListChannelUnavailable =>
+ 'This channel doesn’t exist, or you are not allowed to view it.';
+
+ @override
+ String get emptyMessageListSelfDmHeader =>
+ 'You have not sent any direct messages to yourself yet!';
+
+ @override
+ String get emptyMessageListSelfDmMessage =>
+ 'Use this space for personal notes, or to test out Zulip features.';
+
+ @override
+ String emptyMessageListDm(String person) {
+ return 'You have no direct messages with $person yet.';
+ }
+
+ @override
+ String emptyMessageListDmDeactivatedUser(String person) {
+ return 'You have no direct messages with $person.';
+ }
+
+ @override
+ String get emptyMessageListDmUnknownUser =>
+ 'You have no direct messages with this user.';
+
+ @override
+ String get emptyMessageListGroupDm =>
+ 'You have no direct messages with these users yet.';
+
+ @override
+ String get emptyMessageListGroupDmDeactivatedUser =>
+ 'You have no direct messages with these users.';
+
+ @override
+ String get emptyMessageListDmStartConversation =>
+ 'Why not start the conversation?';
+
+ @override
+ String get emptyMessageListMentionsHeader =>
+ 'This view will show messages where you are mentioned.';
+
+ @override
+ String get emptyMessageListMentionsMessage =>
+ 'To call attention to a message, you can mention a user, a group, topic participants, or all subscribers to a channel. Type @ in the compose box, and choose who you’d like to mention from the list of suggestions.';
+
+ @override
+ String get emptyMessageListStarredHeader => 'You have no starred messages.';
+
+ @override
+ String emptyMessageListStarredMessage(String button) {
+ return 'Starring is a good way to keep track of important messages, such as tasks you need to go back to, or useful references. To star a message, long-press it and tap “$button.”';
+ }
+
@override
String get emptyMessageListSearch => 'No search results.';
@@ -930,8 +992,12 @@ class ZulipLocalizationsIt extends ZulipLocalizations {
String get inboxPageTitle => 'Inbox';
@override
- String get inboxEmptyPlaceholder =>
- 'Non ci sono messaggi non letti nella posta in arrivo. Usare i pulsanti sotto per visualizzare il feed combinato o l\'elenco dei canali.';
+ String get inboxEmptyPlaceholderHeader =>
+ 'There are no unread messages in your inbox.';
+
+ @override
+ String get inboxEmptyPlaceholderMessage =>
+ 'Use the buttons below to view the combined feed or list of channels.';
@override
String get recentDmConversationsPageTitle => 'Messaggi diretti';
@@ -940,8 +1006,12 @@ class ZulipLocalizationsIt extends ZulipLocalizations {
String get recentDmConversationsSectionHeader => 'Messaggi diretti';
@override
- String get recentDmConversationsEmptyPlaceholder =>
- 'Non ci sono ancora messaggi diretti! Perché non iniziare la conversazione?';
+ String get recentDmConversationsEmptyPlaceholderHeader =>
+ 'You have no direct messages yet!';
+
+ @override
+ String get recentDmConversationsEmptyPlaceholderMessage =>
+ 'Why not start a conversation?';
@override
String get combinedFeedPageTitle => 'Feed combinato';
@@ -956,14 +1026,12 @@ class ZulipLocalizationsIt extends ZulipLocalizations {
String get channelsPageTitle => 'Canali';
@override
- String get channelsEmptyPlaceholder =>
- 'Non sei ancora iscritto ad alcun canale.';
+ String get channelsEmptyPlaceholderHeader =>
+ 'You’re not subscribed to any channels yet.';
@override
- String channelsEmptyPlaceholderWithAllChannelsLink(
- String allChannelsPageTitle,
- ) {
- return 'You’re not subscribed to any channels yet. Try going to $allChannelsPageTitle and joining some of them.';
+ String channelsEmptyPlaceholderMessage(String allChannelsPageTitle) {
+ return 'Try going to $allChannelsPageTitle and joining some of them.';
}
@override
diff --git a/lib/generated/l10n/zulip_localizations_ja.dart b/lib/generated/l10n/zulip_localizations_ja.dart
index eae3a0c3eb..c8b31c5e52 100644
--- a/lib/generated/l10n/zulip_localizations_ja.dart
+++ b/lib/generated/l10n/zulip_localizations_ja.dart
@@ -73,7 +73,7 @@ class ZulipLocalizationsJa extends ZulipLocalizations {
String get allChannelsPageTitle => 'All channels';
@override
- String get allChannelsEmptyPlaceholder =>
+ String get allChannelsEmptyPlaceholderHeader =>
'There are no channels you can view in this organization.';
@override
@@ -556,6 +556,68 @@ class ZulipLocalizationsJa extends ZulipLocalizations {
@override
String get emptyMessageList => 'ここにはメッセージがありません。';
+ @override
+ String get emptyMessageListCombinedFeed =>
+ 'There are no messages in your combined feed.';
+
+ @override
+ String get emptyMessageListChannelWithoutContentAccess =>
+ 'You don’t have content access to this channel.';
+
+ @override
+ String get emptyMessageListChannelUnavailable =>
+ 'This channel doesn’t exist, or you are not allowed to view it.';
+
+ @override
+ String get emptyMessageListSelfDmHeader =>
+ 'You have not sent any direct messages to yourself yet!';
+
+ @override
+ String get emptyMessageListSelfDmMessage =>
+ 'Use this space for personal notes, or to test out Zulip features.';
+
+ @override
+ String emptyMessageListDm(String person) {
+ return 'You have no direct messages with $person yet.';
+ }
+
+ @override
+ String emptyMessageListDmDeactivatedUser(String person) {
+ return 'You have no direct messages with $person.';
+ }
+
+ @override
+ String get emptyMessageListDmUnknownUser =>
+ 'You have no direct messages with this user.';
+
+ @override
+ String get emptyMessageListGroupDm =>
+ 'You have no direct messages with these users yet.';
+
+ @override
+ String get emptyMessageListGroupDmDeactivatedUser =>
+ 'You have no direct messages with these users.';
+
+ @override
+ String get emptyMessageListDmStartConversation =>
+ 'Why not start the conversation?';
+
+ @override
+ String get emptyMessageListMentionsHeader =>
+ 'This view will show messages where you are mentioned.';
+
+ @override
+ String get emptyMessageListMentionsMessage =>
+ 'To call attention to a message, you can mention a user, a group, topic participants, or all subscribers to a channel. Type @ in the compose box, and choose who you’d like to mention from the list of suggestions.';
+
+ @override
+ String get emptyMessageListStarredHeader => 'You have no starred messages.';
+
+ @override
+ String emptyMessageListStarredMessage(String button) {
+ return 'Starring is a good way to keep track of important messages, such as tasks you need to go back to, or useful references. To star a message, long-press it and tap “$button.”';
+ }
+
@override
String get emptyMessageListSearch => '検索結果はありません。';
@@ -891,8 +953,12 @@ class ZulipLocalizationsJa extends ZulipLocalizations {
String get inboxPageTitle => '受信箱';
@override
- String get inboxEmptyPlaceholder =>
- '未読メッセージはありません。下のボタンから、統合フィードまたはチャンネル一覧を表示できます。';
+ String get inboxEmptyPlaceholderHeader =>
+ 'There are no unread messages in your inbox.';
+
+ @override
+ String get inboxEmptyPlaceholderMessage =>
+ 'Use the buttons below to view the combined feed or list of channels.';
@override
String get recentDmConversationsPageTitle => 'ダイレクトメッセージ';
@@ -901,8 +967,12 @@ class ZulipLocalizationsJa extends ZulipLocalizations {
String get recentDmConversationsSectionHeader => 'ダイレクトメッセージ';
@override
- String get recentDmConversationsEmptyPlaceholder =>
- 'まだダイレクトメッセージはありません!会話を始めてみませんか?';
+ String get recentDmConversationsEmptyPlaceholderHeader =>
+ 'You have no direct messages yet!';
+
+ @override
+ String get recentDmConversationsEmptyPlaceholderMessage =>
+ 'Why not start a conversation?';
@override
String get combinedFeedPageTitle => '統合フィード';
@@ -917,13 +987,12 @@ class ZulipLocalizationsJa extends ZulipLocalizations {
String get channelsPageTitle => 'チャンネル';
@override
- String get channelsEmptyPlaceholder => 'まだ参加しているチャンネルはありません。';
+ String get channelsEmptyPlaceholderHeader =>
+ 'You’re not subscribed to any channels yet.';
@override
- String channelsEmptyPlaceholderWithAllChannelsLink(
- String allChannelsPageTitle,
- ) {
- return 'You’re not subscribed to any channels yet. Try going to $allChannelsPageTitle and joining some of them.';
+ String channelsEmptyPlaceholderMessage(String allChannelsPageTitle) {
+ return 'Try going to $allChannelsPageTitle and joining some of them.';
}
@override
diff --git a/lib/generated/l10n/zulip_localizations_nb.dart b/lib/generated/l10n/zulip_localizations_nb.dart
index cc2c5e1852..ae3e3c1fef 100644
--- a/lib/generated/l10n/zulip_localizations_nb.dart
+++ b/lib/generated/l10n/zulip_localizations_nb.dart
@@ -74,7 +74,7 @@ class ZulipLocalizationsNb extends ZulipLocalizations {
String get allChannelsPageTitle => 'All channels';
@override
- String get allChannelsEmptyPlaceholder =>
+ String get allChannelsEmptyPlaceholderHeader =>
'There are no channels you can view in this organization.';
@override
@@ -568,6 +568,68 @@ class ZulipLocalizationsNb extends ZulipLocalizations {
@override
String get emptyMessageList => 'There are no messages here.';
+ @override
+ String get emptyMessageListCombinedFeed =>
+ 'There are no messages in your combined feed.';
+
+ @override
+ String get emptyMessageListChannelWithoutContentAccess =>
+ 'You don’t have content access to this channel.';
+
+ @override
+ String get emptyMessageListChannelUnavailable =>
+ 'This channel doesn’t exist, or you are not allowed to view it.';
+
+ @override
+ String get emptyMessageListSelfDmHeader =>
+ 'You have not sent any direct messages to yourself yet!';
+
+ @override
+ String get emptyMessageListSelfDmMessage =>
+ 'Use this space for personal notes, or to test out Zulip features.';
+
+ @override
+ String emptyMessageListDm(String person) {
+ return 'You have no direct messages with $person yet.';
+ }
+
+ @override
+ String emptyMessageListDmDeactivatedUser(String person) {
+ return 'You have no direct messages with $person.';
+ }
+
+ @override
+ String get emptyMessageListDmUnknownUser =>
+ 'You have no direct messages with this user.';
+
+ @override
+ String get emptyMessageListGroupDm =>
+ 'You have no direct messages with these users yet.';
+
+ @override
+ String get emptyMessageListGroupDmDeactivatedUser =>
+ 'You have no direct messages with these users.';
+
+ @override
+ String get emptyMessageListDmStartConversation =>
+ 'Why not start the conversation?';
+
+ @override
+ String get emptyMessageListMentionsHeader =>
+ 'This view will show messages where you are mentioned.';
+
+ @override
+ String get emptyMessageListMentionsMessage =>
+ 'To call attention to a message, you can mention a user, a group, topic participants, or all subscribers to a channel. Type @ in the compose box, and choose who you’d like to mention from the list of suggestions.';
+
+ @override
+ String get emptyMessageListStarredHeader => 'You have no starred messages.';
+
+ @override
+ String emptyMessageListStarredMessage(String button) {
+ return 'Starring is a good way to keep track of important messages, such as tasks you need to go back to, or useful references. To star a message, long-press it and tap “$button.”';
+ }
+
@override
String get emptyMessageListSearch => 'No search results.';
@@ -911,8 +973,12 @@ class ZulipLocalizationsNb extends ZulipLocalizations {
String get inboxPageTitle => 'Inbox';
@override
- String get inboxEmptyPlaceholder =>
- 'There are no unread messages in your inbox. Use the buttons below to view the combined feed or list of channels.';
+ String get inboxEmptyPlaceholderHeader =>
+ 'There are no unread messages in your inbox.';
+
+ @override
+ String get inboxEmptyPlaceholderMessage =>
+ 'Use the buttons below to view the combined feed or list of channels.';
@override
String get recentDmConversationsPageTitle => 'Direct messages';
@@ -921,8 +987,12 @@ class ZulipLocalizationsNb extends ZulipLocalizations {
String get recentDmConversationsSectionHeader => 'Direct messages';
@override
- String get recentDmConversationsEmptyPlaceholder =>
- 'You have no direct messages yet! Why not start the conversation?';
+ String get recentDmConversationsEmptyPlaceholderHeader =>
+ 'You have no direct messages yet!';
+
+ @override
+ String get recentDmConversationsEmptyPlaceholderMessage =>
+ 'Why not start a conversation?';
@override
String get combinedFeedPageTitle => 'Combined feed';
@@ -937,14 +1007,12 @@ class ZulipLocalizationsNb extends ZulipLocalizations {
String get channelsPageTitle => 'Channels';
@override
- String get channelsEmptyPlaceholder =>
+ String get channelsEmptyPlaceholderHeader =>
'You’re not subscribed to any channels yet.';
@override
- String channelsEmptyPlaceholderWithAllChannelsLink(
- String allChannelsPageTitle,
- ) {
- return 'You’re not subscribed to any channels yet. Try going to $allChannelsPageTitle and joining some of them.';
+ String channelsEmptyPlaceholderMessage(String allChannelsPageTitle) {
+ return 'Try going to $allChannelsPageTitle and joining some of them.';
}
@override
diff --git a/lib/generated/l10n/zulip_localizations_pl.dart b/lib/generated/l10n/zulip_localizations_pl.dart
index b038e14fed..fdacfce947 100644
--- a/lib/generated/l10n/zulip_localizations_pl.dart
+++ b/lib/generated/l10n/zulip_localizations_pl.dart
@@ -74,8 +74,8 @@ class ZulipLocalizationsPl extends ZulipLocalizations {
String get allChannelsPageTitle => 'Wszystkie kanały';
@override
- String get allChannelsEmptyPlaceholder =>
- 'Brak kanałów, które możesz przeglądać w tej organizacji.';
+ String get allChannelsEmptyPlaceholderHeader =>
+ 'There are no channels you can view in this organization.';
@override
String get profileButtonSendDirectMessage => 'Wyślij wiadomość bezpośrednią';
@@ -581,6 +581,68 @@ class ZulipLocalizationsPl extends ZulipLocalizations {
@override
String get emptyMessageList => 'Póki co brak wiadomości.';
+ @override
+ String get emptyMessageListCombinedFeed =>
+ 'There are no messages in your combined feed.';
+
+ @override
+ String get emptyMessageListChannelWithoutContentAccess =>
+ 'You don’t have content access to this channel.';
+
+ @override
+ String get emptyMessageListChannelUnavailable =>
+ 'This channel doesn’t exist, or you are not allowed to view it.';
+
+ @override
+ String get emptyMessageListSelfDmHeader =>
+ 'You have not sent any direct messages to yourself yet!';
+
+ @override
+ String get emptyMessageListSelfDmMessage =>
+ 'Use this space for personal notes, or to test out Zulip features.';
+
+ @override
+ String emptyMessageListDm(String person) {
+ return 'You have no direct messages with $person yet.';
+ }
+
+ @override
+ String emptyMessageListDmDeactivatedUser(String person) {
+ return 'You have no direct messages with $person.';
+ }
+
+ @override
+ String get emptyMessageListDmUnknownUser =>
+ 'You have no direct messages with this user.';
+
+ @override
+ String get emptyMessageListGroupDm =>
+ 'You have no direct messages with these users yet.';
+
+ @override
+ String get emptyMessageListGroupDmDeactivatedUser =>
+ 'You have no direct messages with these users.';
+
+ @override
+ String get emptyMessageListDmStartConversation =>
+ 'Why not start the conversation?';
+
+ @override
+ String get emptyMessageListMentionsHeader =>
+ 'This view will show messages where you are mentioned.';
+
+ @override
+ String get emptyMessageListMentionsMessage =>
+ 'To call attention to a message, you can mention a user, a group, topic participants, or all subscribers to a channel. Type @ in the compose box, and choose who you’d like to mention from the list of suggestions.';
+
+ @override
+ String get emptyMessageListStarredHeader => 'You have no starred messages.';
+
+ @override
+ String emptyMessageListStarredMessage(String button) {
+ return 'Starring is a good way to keep track of important messages, such as tasks you need to go back to, or useful references. To star a message, long-press it and tap “$button.”';
+ }
+
@override
String get emptyMessageListSearch => 'Brak wyników wyszukiwania.';
@@ -927,8 +989,12 @@ class ZulipLocalizationsPl extends ZulipLocalizations {
String get inboxPageTitle => 'Odebrane';
@override
- String get inboxEmptyPlaceholder =>
- 'Obecnie brak nowych wiadomości. Skorzystaj z przycisków u dołu ekranu aby przejść do widoku mieszanego lub listy kanałów.';
+ String get inboxEmptyPlaceholderHeader =>
+ 'There are no unread messages in your inbox.';
+
+ @override
+ String get inboxEmptyPlaceholderMessage =>
+ 'Use the buttons below to view the combined feed or list of channels.';
@override
String get recentDmConversationsPageTitle => 'Wiadomości bezpośrednie';
@@ -937,8 +1003,12 @@ class ZulipLocalizationsPl extends ZulipLocalizations {
String get recentDmConversationsSectionHeader => 'Wiadomości bezpośrednie';
@override
- String get recentDmConversationsEmptyPlaceholder =>
- 'Brak wiadomości w archiwum! Może warto rozpocząć dyskusję?';
+ String get recentDmConversationsEmptyPlaceholderHeader =>
+ 'You have no direct messages yet!';
+
+ @override
+ String get recentDmConversationsEmptyPlaceholderMessage =>
+ 'Why not start a conversation?';
@override
String get combinedFeedPageTitle => 'Mieszany widok';
@@ -953,13 +1023,12 @@ class ZulipLocalizationsPl extends ZulipLocalizations {
String get channelsPageTitle => 'Kanały';
@override
- String get channelsEmptyPlaceholder => 'Nie śledzisz żadnego z kanałów.';
+ String get channelsEmptyPlaceholderHeader =>
+ 'You’re not subscribed to any channels yet.';
@override
- String channelsEmptyPlaceholderWithAllChannelsLink(
- String allChannelsPageTitle,
- ) {
- return 'Nie śledzisz żadnego z kanałów. Sprawdź dostępne $allChannelsPageTitle i dołącz do części z nich.';
+ String channelsEmptyPlaceholderMessage(String allChannelsPageTitle) {
+ return 'Try going to $allChannelsPageTitle and joining some of them.';
}
@override
diff --git a/lib/generated/l10n/zulip_localizations_ru.dart b/lib/generated/l10n/zulip_localizations_ru.dart
index e13c7cc1a6..275ba49c42 100644
--- a/lib/generated/l10n/zulip_localizations_ru.dart
+++ b/lib/generated/l10n/zulip_localizations_ru.dart
@@ -74,8 +74,8 @@ class ZulipLocalizationsRu extends ZulipLocalizations {
String get allChannelsPageTitle => 'Все каналы';
@override
- String get allChannelsEmptyPlaceholder =>
- 'В этой организации нет доступных вам для просмотра каналов.';
+ String get allChannelsEmptyPlaceholderHeader =>
+ 'There are no channels you can view in this organization.';
@override
String get profileButtonSendDirectMessage => 'Отправить личное сообщение';
@@ -582,6 +582,68 @@ class ZulipLocalizationsRu extends ZulipLocalizations {
@override
String get emptyMessageList => 'Здесь нет сообщений.';
+ @override
+ String get emptyMessageListCombinedFeed =>
+ 'There are no messages in your combined feed.';
+
+ @override
+ String get emptyMessageListChannelWithoutContentAccess =>
+ 'You don’t have content access to this channel.';
+
+ @override
+ String get emptyMessageListChannelUnavailable =>
+ 'This channel doesn’t exist, or you are not allowed to view it.';
+
+ @override
+ String get emptyMessageListSelfDmHeader =>
+ 'You have not sent any direct messages to yourself yet!';
+
+ @override
+ String get emptyMessageListSelfDmMessage =>
+ 'Use this space for personal notes, or to test out Zulip features.';
+
+ @override
+ String emptyMessageListDm(String person) {
+ return 'You have no direct messages with $person yet.';
+ }
+
+ @override
+ String emptyMessageListDmDeactivatedUser(String person) {
+ return 'You have no direct messages with $person.';
+ }
+
+ @override
+ String get emptyMessageListDmUnknownUser =>
+ 'You have no direct messages with this user.';
+
+ @override
+ String get emptyMessageListGroupDm =>
+ 'You have no direct messages with these users yet.';
+
+ @override
+ String get emptyMessageListGroupDmDeactivatedUser =>
+ 'You have no direct messages with these users.';
+
+ @override
+ String get emptyMessageListDmStartConversation =>
+ 'Why not start the conversation?';
+
+ @override
+ String get emptyMessageListMentionsHeader =>
+ 'This view will show messages where you are mentioned.';
+
+ @override
+ String get emptyMessageListMentionsMessage =>
+ 'To call attention to a message, you can mention a user, a group, topic participants, or all subscribers to a channel. Type @ in the compose box, and choose who you’d like to mention from the list of suggestions.';
+
+ @override
+ String get emptyMessageListStarredHeader => 'You have no starred messages.';
+
+ @override
+ String emptyMessageListStarredMessage(String button) {
+ return 'Starring is a good way to keep track of important messages, such as tasks you need to go back to, or useful references. To star a message, long-press it and tap “$button.”';
+ }
+
@override
String get emptyMessageListSearch => 'Ничего не найдено.';
@@ -936,8 +998,12 @@ class ZulipLocalizationsRu extends ZulipLocalizations {
String get inboxPageTitle => 'Входящие';
@override
- String get inboxEmptyPlaceholder =>
- 'Нет непрочитанных входящих сообщений. Используйте кнопки ниже для просмотра объединенной ленты или списка каналов.';
+ String get inboxEmptyPlaceholderHeader =>
+ 'There are no unread messages in your inbox.';
+
+ @override
+ String get inboxEmptyPlaceholderMessage =>
+ 'Use the buttons below to view the combined feed or list of channels.';
@override
String get recentDmConversationsPageTitle => 'Личные сообщения';
@@ -946,8 +1012,12 @@ class ZulipLocalizationsRu extends ZulipLocalizations {
String get recentDmConversationsSectionHeader => 'Личные сообщения';
@override
- String get recentDmConversationsEmptyPlaceholder =>
- 'У вас пока нет личных сообщений! Почему бы не начать беседу?';
+ String get recentDmConversationsEmptyPlaceholderHeader =>
+ 'You have no direct messages yet!';
+
+ @override
+ String get recentDmConversationsEmptyPlaceholderMessage =>
+ 'Why not start a conversation?';
@override
String get combinedFeedPageTitle => 'Объединенная лента';
@@ -962,14 +1032,12 @@ class ZulipLocalizationsRu extends ZulipLocalizations {
String get channelsPageTitle => 'Каналы';
@override
- String get channelsEmptyPlaceholder =>
- 'Вы ещё не подписаны ни на один канал.';
+ String get channelsEmptyPlaceholderHeader =>
+ 'You’re not subscribed to any channels yet.';
@override
- String channelsEmptyPlaceholderWithAllChannelsLink(
- String allChannelsPageTitle,
- ) {
- return 'Вы ещё не подписаны ни на один канал. Можете посмотреть $allChannelsPageTitle и подписаться на какие-то из них.';
+ String channelsEmptyPlaceholderMessage(String allChannelsPageTitle) {
+ return 'Try going to $allChannelsPageTitle and joining some of them.';
}
@override
diff --git a/lib/generated/l10n/zulip_localizations_sk.dart b/lib/generated/l10n/zulip_localizations_sk.dart
index ca321e40a6..c01152d607 100644
--- a/lib/generated/l10n/zulip_localizations_sk.dart
+++ b/lib/generated/l10n/zulip_localizations_sk.dart
@@ -74,7 +74,7 @@ class ZulipLocalizationsSk extends ZulipLocalizations {
String get allChannelsPageTitle => 'All channels';
@override
- String get allChannelsEmptyPlaceholder =>
+ String get allChannelsEmptyPlaceholderHeader =>
'There are no channels you can view in this organization.';
@override
@@ -568,6 +568,68 @@ class ZulipLocalizationsSk extends ZulipLocalizations {
@override
String get emptyMessageList => 'There are no messages here.';
+ @override
+ String get emptyMessageListCombinedFeed =>
+ 'There are no messages in your combined feed.';
+
+ @override
+ String get emptyMessageListChannelWithoutContentAccess =>
+ 'You don’t have content access to this channel.';
+
+ @override
+ String get emptyMessageListChannelUnavailable =>
+ 'This channel doesn’t exist, or you are not allowed to view it.';
+
+ @override
+ String get emptyMessageListSelfDmHeader =>
+ 'You have not sent any direct messages to yourself yet!';
+
+ @override
+ String get emptyMessageListSelfDmMessage =>
+ 'Use this space for personal notes, or to test out Zulip features.';
+
+ @override
+ String emptyMessageListDm(String person) {
+ return 'You have no direct messages with $person yet.';
+ }
+
+ @override
+ String emptyMessageListDmDeactivatedUser(String person) {
+ return 'You have no direct messages with $person.';
+ }
+
+ @override
+ String get emptyMessageListDmUnknownUser =>
+ 'You have no direct messages with this user.';
+
+ @override
+ String get emptyMessageListGroupDm =>
+ 'You have no direct messages with these users yet.';
+
+ @override
+ String get emptyMessageListGroupDmDeactivatedUser =>
+ 'You have no direct messages with these users.';
+
+ @override
+ String get emptyMessageListDmStartConversation =>
+ 'Why not start the conversation?';
+
+ @override
+ String get emptyMessageListMentionsHeader =>
+ 'This view will show messages where you are mentioned.';
+
+ @override
+ String get emptyMessageListMentionsMessage =>
+ 'To call attention to a message, you can mention a user, a group, topic participants, or all subscribers to a channel. Type @ in the compose box, and choose who you’d like to mention from the list of suggestions.';
+
+ @override
+ String get emptyMessageListStarredHeader => 'You have no starred messages.';
+
+ @override
+ String emptyMessageListStarredMessage(String button) {
+ return 'Starring is a good way to keep track of important messages, such as tasks you need to go back to, or useful references. To star a message, long-press it and tap “$button.”';
+ }
+
@override
String get emptyMessageListSearch => 'No search results.';
@@ -913,8 +975,12 @@ class ZulipLocalizationsSk extends ZulipLocalizations {
String get inboxPageTitle => 'Inbox';
@override
- String get inboxEmptyPlaceholder =>
- 'There are no unread messages in your inbox. Use the buttons below to view the combined feed or list of channels.';
+ String get inboxEmptyPlaceholderHeader =>
+ 'There are no unread messages in your inbox.';
+
+ @override
+ String get inboxEmptyPlaceholderMessage =>
+ 'Use the buttons below to view the combined feed or list of channels.';
@override
String get recentDmConversationsPageTitle => 'Priama správa';
@@ -923,8 +989,12 @@ class ZulipLocalizationsSk extends ZulipLocalizations {
String get recentDmConversationsSectionHeader => 'Direct messages';
@override
- String get recentDmConversationsEmptyPlaceholder =>
- 'You have no direct messages yet! Why not start the conversation?';
+ String get recentDmConversationsEmptyPlaceholderHeader =>
+ 'You have no direct messages yet!';
+
+ @override
+ String get recentDmConversationsEmptyPlaceholderMessage =>
+ 'Why not start a conversation?';
@override
String get combinedFeedPageTitle => 'Zlúčený kanál';
@@ -939,14 +1009,12 @@ class ZulipLocalizationsSk extends ZulipLocalizations {
String get channelsPageTitle => 'Kanály';
@override
- String get channelsEmptyPlaceholder =>
+ String get channelsEmptyPlaceholderHeader =>
'You’re not subscribed to any channels yet.';
@override
- String channelsEmptyPlaceholderWithAllChannelsLink(
- String allChannelsPageTitle,
- ) {
- return 'You’re not subscribed to any channels yet. Try going to $allChannelsPageTitle and joining some of them.';
+ String channelsEmptyPlaceholderMessage(String allChannelsPageTitle) {
+ return 'Try going to $allChannelsPageTitle and joining some of them.';
}
@override
diff --git a/lib/generated/l10n/zulip_localizations_sl.dart b/lib/generated/l10n/zulip_localizations_sl.dart
index 4c34d94983..77ca38bbe6 100644
--- a/lib/generated/l10n/zulip_localizations_sl.dart
+++ b/lib/generated/l10n/zulip_localizations_sl.dart
@@ -73,8 +73,8 @@ class ZulipLocalizationsSl extends ZulipLocalizations {
String get allChannelsPageTitle => 'Vsi kanali';
@override
- String get allChannelsEmptyPlaceholder =>
- 'V tej organizaciji ni kanalov, ki bi si jih lahko ogledali.';
+ String get allChannelsEmptyPlaceholderHeader =>
+ 'There are no channels you can view in this organization.';
@override
String get profileButtonSendDirectMessage => 'Pošlji neposredno sporočilo';
@@ -593,6 +593,68 @@ class ZulipLocalizationsSl extends ZulipLocalizations {
@override
String get emptyMessageList => 'Tukaj ni sporočil.';
+ @override
+ String get emptyMessageListCombinedFeed =>
+ 'There are no messages in your combined feed.';
+
+ @override
+ String get emptyMessageListChannelWithoutContentAccess =>
+ 'You don’t have content access to this channel.';
+
+ @override
+ String get emptyMessageListChannelUnavailable =>
+ 'This channel doesn’t exist, or you are not allowed to view it.';
+
+ @override
+ String get emptyMessageListSelfDmHeader =>
+ 'You have not sent any direct messages to yourself yet!';
+
+ @override
+ String get emptyMessageListSelfDmMessage =>
+ 'Use this space for personal notes, or to test out Zulip features.';
+
+ @override
+ String emptyMessageListDm(String person) {
+ return 'You have no direct messages with $person yet.';
+ }
+
+ @override
+ String emptyMessageListDmDeactivatedUser(String person) {
+ return 'You have no direct messages with $person.';
+ }
+
+ @override
+ String get emptyMessageListDmUnknownUser =>
+ 'You have no direct messages with this user.';
+
+ @override
+ String get emptyMessageListGroupDm =>
+ 'You have no direct messages with these users yet.';
+
+ @override
+ String get emptyMessageListGroupDmDeactivatedUser =>
+ 'You have no direct messages with these users.';
+
+ @override
+ String get emptyMessageListDmStartConversation =>
+ 'Why not start the conversation?';
+
+ @override
+ String get emptyMessageListMentionsHeader =>
+ 'This view will show messages where you are mentioned.';
+
+ @override
+ String get emptyMessageListMentionsMessage =>
+ 'To call attention to a message, you can mention a user, a group, topic participants, or all subscribers to a channel. Type @ in the compose box, and choose who you’d like to mention from the list of suggestions.';
+
+ @override
+ String get emptyMessageListStarredHeader => 'You have no starred messages.';
+
+ @override
+ String emptyMessageListStarredMessage(String button) {
+ return 'Starring is a good way to keep track of important messages, such as tasks you need to go back to, or useful references. To star a message, long-press it and tap “$button.”';
+ }
+
@override
String get emptyMessageListSearch => 'Ni zadetkov iskanja.';
@@ -947,8 +1009,12 @@ class ZulipLocalizationsSl extends ZulipLocalizations {
String get inboxPageTitle => 'Nabiralnik';
@override
- String get inboxEmptyPlaceholder =>
- 'V vašem nabiralniku ni neprebranih sporočil. Uporabite spodnje gumbe za ogled združenega prikaza ali seznama kanalov.';
+ String get inboxEmptyPlaceholderHeader =>
+ 'There are no unread messages in your inbox.';
+
+ @override
+ String get inboxEmptyPlaceholderMessage =>
+ 'Use the buttons below to view the combined feed or list of channels.';
@override
String get recentDmConversationsPageTitle => 'Neposredna sporočila';
@@ -957,8 +1023,12 @@ class ZulipLocalizationsSl extends ZulipLocalizations {
String get recentDmConversationsSectionHeader => 'Neposredna sporočila';
@override
- String get recentDmConversationsEmptyPlaceholder =>
- 'Zaenkrat še nimate neposrednih sporočil! Zakaj ne bi začeli pogovora?';
+ String get recentDmConversationsEmptyPlaceholderHeader =>
+ 'You have no direct messages yet!';
+
+ @override
+ String get recentDmConversationsEmptyPlaceholderMessage =>
+ 'Why not start a conversation?';
@override
String get combinedFeedPageTitle => 'Združen prikaz';
@@ -973,13 +1043,12 @@ class ZulipLocalizationsSl extends ZulipLocalizations {
String get channelsPageTitle => 'Kanali';
@override
- String get channelsEmptyPlaceholder => 'Niste še naročeni na noben kanal.';
+ String get channelsEmptyPlaceholderHeader =>
+ 'You’re not subscribed to any channels yet.';
@override
- String channelsEmptyPlaceholderWithAllChannelsLink(
- String allChannelsPageTitle,
- ) {
- return 'Naročeni še niste na noben kanal. Poskusite odpreti $allChannelsPageTitle in se pridružiti kateremu od njih.';
+ String channelsEmptyPlaceholderMessage(String allChannelsPageTitle) {
+ return 'Try going to $allChannelsPageTitle and joining some of them.';
}
@override
diff --git a/lib/generated/l10n/zulip_localizations_uk.dart b/lib/generated/l10n/zulip_localizations_uk.dart
index d9bc2ae98c..fb0cd0c57a 100644
--- a/lib/generated/l10n/zulip_localizations_uk.dart
+++ b/lib/generated/l10n/zulip_localizations_uk.dart
@@ -74,8 +74,8 @@ class ZulipLocalizationsUk extends ZulipLocalizations {
String get allChannelsPageTitle => 'Усі канали';
@override
- String get allChannelsEmptyPlaceholder =>
- 'У цій організації немає каналів, які ви можете переглянути.';
+ String get allChannelsEmptyPlaceholderHeader =>
+ 'There are no channels you can view in this organization.';
@override
String get profileButtonSendDirectMessage =>
@@ -582,6 +582,68 @@ class ZulipLocalizationsUk extends ZulipLocalizations {
@override
String get emptyMessageList => 'Тут немає повідомлень.';
+ @override
+ String get emptyMessageListCombinedFeed =>
+ 'There are no messages in your combined feed.';
+
+ @override
+ String get emptyMessageListChannelWithoutContentAccess =>
+ 'You don’t have content access to this channel.';
+
+ @override
+ String get emptyMessageListChannelUnavailable =>
+ 'This channel doesn’t exist, or you are not allowed to view it.';
+
+ @override
+ String get emptyMessageListSelfDmHeader =>
+ 'You have not sent any direct messages to yourself yet!';
+
+ @override
+ String get emptyMessageListSelfDmMessage =>
+ 'Use this space for personal notes, or to test out Zulip features.';
+
+ @override
+ String emptyMessageListDm(String person) {
+ return 'You have no direct messages with $person yet.';
+ }
+
+ @override
+ String emptyMessageListDmDeactivatedUser(String person) {
+ return 'You have no direct messages with $person.';
+ }
+
+ @override
+ String get emptyMessageListDmUnknownUser =>
+ 'You have no direct messages with this user.';
+
+ @override
+ String get emptyMessageListGroupDm =>
+ 'You have no direct messages with these users yet.';
+
+ @override
+ String get emptyMessageListGroupDmDeactivatedUser =>
+ 'You have no direct messages with these users.';
+
+ @override
+ String get emptyMessageListDmStartConversation =>
+ 'Why not start the conversation?';
+
+ @override
+ String get emptyMessageListMentionsHeader =>
+ 'This view will show messages where you are mentioned.';
+
+ @override
+ String get emptyMessageListMentionsMessage =>
+ 'To call attention to a message, you can mention a user, a group, topic participants, or all subscribers to a channel. Type @ in the compose box, and choose who you’d like to mention from the list of suggestions.';
+
+ @override
+ String get emptyMessageListStarredHeader => 'You have no starred messages.';
+
+ @override
+ String emptyMessageListStarredMessage(String button) {
+ return 'Starring is a good way to keep track of important messages, such as tasks you need to go back to, or useful references. To star a message, long-press it and tap “$button.”';
+ }
+
@override
String get emptyMessageListSearch => 'Немає результатів пошуку.';
@@ -928,8 +990,12 @@ class ZulipLocalizationsUk extends ZulipLocalizations {
String get inboxPageTitle => 'Вхідні';
@override
- String get inboxEmptyPlaceholder =>
- 'Немає непрочитаних вхідних повідомлень. Використовуйте кнопки знизу для перегляду обʼєднаної стрічки або списку каналів.';
+ String get inboxEmptyPlaceholderHeader =>
+ 'There are no unread messages in your inbox.';
+
+ @override
+ String get inboxEmptyPlaceholderMessage =>
+ 'Use the buttons below to view the combined feed or list of channels.';
@override
String get recentDmConversationsPageTitle => 'Особисті повідомлення';
@@ -938,8 +1004,12 @@ class ZulipLocalizationsUk extends ZulipLocalizations {
String get recentDmConversationsSectionHeader => 'Особисті повідомлення';
@override
- String get recentDmConversationsEmptyPlaceholder =>
- 'У вас поки що немає особистих повідомлень! Чому б не розпочати бесіду?';
+ String get recentDmConversationsEmptyPlaceholderHeader =>
+ 'You have no direct messages yet!';
+
+ @override
+ String get recentDmConversationsEmptyPlaceholderMessage =>
+ 'Why not start a conversation?';
@override
String get combinedFeedPageTitle => 'Об\'єднана стрічка';
@@ -954,13 +1024,12 @@ class ZulipLocalizationsUk extends ZulipLocalizations {
String get channelsPageTitle => 'Канали';
@override
- String get channelsEmptyPlaceholder => 'Ви ще не підписані на жодний канал.';
+ String get channelsEmptyPlaceholderHeader =>
+ 'You’re not subscribed to any channels yet.';
@override
- String channelsEmptyPlaceholderWithAllChannelsLink(
- String allChannelsPageTitle,
- ) {
- return 'Ви ще не підписані на жодний канал. Спробуйте перейти за посиланням $allChannelsPageTitle та приєднатися до деяких із них.';
+ String channelsEmptyPlaceholderMessage(String allChannelsPageTitle) {
+ return 'Try going to $allChannelsPageTitle and joining some of them.';
}
@override
diff --git a/lib/generated/l10n/zulip_localizations_zh.dart b/lib/generated/l10n/zulip_localizations_zh.dart
index 9a5015cf01..0130d421a5 100644
--- a/lib/generated/l10n/zulip_localizations_zh.dart
+++ b/lib/generated/l10n/zulip_localizations_zh.dart
@@ -74,7 +74,7 @@ class ZulipLocalizationsZh extends ZulipLocalizations {
String get allChannelsPageTitle => 'All channels';
@override
- String get allChannelsEmptyPlaceholder =>
+ String get allChannelsEmptyPlaceholderHeader =>
'There are no channels you can view in this organization.';
@override
@@ -568,6 +568,68 @@ class ZulipLocalizationsZh extends ZulipLocalizations {
@override
String get emptyMessageList => 'There are no messages here.';
+ @override
+ String get emptyMessageListCombinedFeed =>
+ 'There are no messages in your combined feed.';
+
+ @override
+ String get emptyMessageListChannelWithoutContentAccess =>
+ 'You don’t have content access to this channel.';
+
+ @override
+ String get emptyMessageListChannelUnavailable =>
+ 'This channel doesn’t exist, or you are not allowed to view it.';
+
+ @override
+ String get emptyMessageListSelfDmHeader =>
+ 'You have not sent any direct messages to yourself yet!';
+
+ @override
+ String get emptyMessageListSelfDmMessage =>
+ 'Use this space for personal notes, or to test out Zulip features.';
+
+ @override
+ String emptyMessageListDm(String person) {
+ return 'You have no direct messages with $person yet.';
+ }
+
+ @override
+ String emptyMessageListDmDeactivatedUser(String person) {
+ return 'You have no direct messages with $person.';
+ }
+
+ @override
+ String get emptyMessageListDmUnknownUser =>
+ 'You have no direct messages with this user.';
+
+ @override
+ String get emptyMessageListGroupDm =>
+ 'You have no direct messages with these users yet.';
+
+ @override
+ String get emptyMessageListGroupDmDeactivatedUser =>
+ 'You have no direct messages with these users.';
+
+ @override
+ String get emptyMessageListDmStartConversation =>
+ 'Why not start the conversation?';
+
+ @override
+ String get emptyMessageListMentionsHeader =>
+ 'This view will show messages where you are mentioned.';
+
+ @override
+ String get emptyMessageListMentionsMessage =>
+ 'To call attention to a message, you can mention a user, a group, topic participants, or all subscribers to a channel. Type @ in the compose box, and choose who you’d like to mention from the list of suggestions.';
+
+ @override
+ String get emptyMessageListStarredHeader => 'You have no starred messages.';
+
+ @override
+ String emptyMessageListStarredMessage(String button) {
+ return 'Starring is a good way to keep track of important messages, such as tasks you need to go back to, or useful references. To star a message, long-press it and tap “$button.”';
+ }
+
@override
String get emptyMessageListSearch => 'No search results.';
@@ -911,8 +973,12 @@ class ZulipLocalizationsZh extends ZulipLocalizations {
String get inboxPageTitle => 'Inbox';
@override
- String get inboxEmptyPlaceholder =>
- 'There are no unread messages in your inbox. Use the buttons below to view the combined feed or list of channels.';
+ String get inboxEmptyPlaceholderHeader =>
+ 'There are no unread messages in your inbox.';
+
+ @override
+ String get inboxEmptyPlaceholderMessage =>
+ 'Use the buttons below to view the combined feed or list of channels.';
@override
String get recentDmConversationsPageTitle => 'Direct messages';
@@ -921,8 +987,12 @@ class ZulipLocalizationsZh extends ZulipLocalizations {
String get recentDmConversationsSectionHeader => 'Direct messages';
@override
- String get recentDmConversationsEmptyPlaceholder =>
- 'You have no direct messages yet! Why not start the conversation?';
+ String get recentDmConversationsEmptyPlaceholderHeader =>
+ 'You have no direct messages yet!';
+
+ @override
+ String get recentDmConversationsEmptyPlaceholderMessage =>
+ 'Why not start a conversation?';
@override
String get combinedFeedPageTitle => 'Combined feed';
@@ -937,14 +1007,12 @@ class ZulipLocalizationsZh extends ZulipLocalizations {
String get channelsPageTitle => 'Channels';
@override
- String get channelsEmptyPlaceholder =>
+ String get channelsEmptyPlaceholderHeader =>
'You’re not subscribed to any channels yet.';
@override
- String channelsEmptyPlaceholderWithAllChannelsLink(
- String allChannelsPageTitle,
- ) {
- return 'You’re not subscribed to any channels yet. Try going to $allChannelsPageTitle and joining some of them.';
+ String channelsEmptyPlaceholderMessage(String allChannelsPageTitle) {
+ return 'Try going to $allChannelsPageTitle and joining some of them.';
}
@override
@@ -1232,9 +1300,6 @@ class ZulipLocalizationsZhHansCn extends ZulipLocalizationsZh {
@override
String get allChannelsPageTitle => '所有频道';
- @override
- String get allChannelsEmptyPlaceholder => '在该组织里你没有可以查看的频道。';
-
@override
String get profileButtonSendDirectMessage => '发送私信';
@@ -2024,18 +2089,12 @@ class ZulipLocalizationsZhHansCn extends ZulipLocalizationsZh {
@override
String get inboxPageTitle => '收件箱';
- @override
- String get inboxEmptyPlaceholder => '您的收件箱中没有未读消息。您可以通过底部导航栏访问综合消息或者频道列表。';
-
@override
String get recentDmConversationsPageTitle => '私信';
@override
String get recentDmConversationsSectionHeader => '私信';
- @override
- String get recentDmConversationsEmptyPlaceholder => '您还没有任何私信消息!何不开启一个新对话?';
-
@override
String get combinedFeedPageTitle => '综合消息';
@@ -2048,16 +2107,6 @@ class ZulipLocalizationsZhHansCn extends ZulipLocalizationsZh {
@override
String get channelsPageTitle => '频道';
- @override
- String get channelsEmptyPlaceholder => '您还没有订阅任何频道。';
-
- @override
- String channelsEmptyPlaceholderWithAllChannelsLink(
- String allChannelsPageTitle,
- ) {
- return '你还没订阅任何频道。可以访问 $allChannelsPageTitle然后加入。';
- }
-
@override
String get sharePageTitle => '分享';
@@ -2338,9 +2387,6 @@ class ZulipLocalizationsZhHantTw extends ZulipLocalizationsZh {
@override
String get allChannelsPageTitle => '所有頻道';
- @override
- String get allChannelsEmptyPlaceholder => '在此組織中沒有您可以查看的頻道。';
-
@override
String get profileButtonSendDirectMessage => '發送私訊';
@@ -3149,18 +3195,12 @@ class ZulipLocalizationsZhHantTw extends ZulipLocalizationsZh {
@override
String get inboxPageTitle => '收件匣';
- @override
- String get inboxEmptyPlaceholder => '您的收件匣中沒有未讀訊息。請使用下方按鈕查看整合訊息流或頻道清單。';
-
@override
String get recentDmConversationsPageTitle => '私人訊息';
@override
String get recentDmConversationsSectionHeader => '私人訊息';
- @override
- String get recentDmConversationsEmptyPlaceholder => '您尚未有任何私人訊息!不如開始一段對話吧?';
-
@override
String get combinedFeedPageTitle => '綜合饋給';
@@ -3173,16 +3213,6 @@ class ZulipLocalizationsZhHantTw extends ZulipLocalizationsZh {
@override
String get channelsPageTitle => '頻道';
- @override
- String get channelsEmptyPlaceholder => '您尚未訂閱任何頻道。';
-
- @override
- String channelsEmptyPlaceholderWithAllChannelsLink(
- String allChannelsPageTitle,
- ) {
- return '您尚未訂閱任何頻道。請前往 $allChannelsPageTitle 並加入一些頻道。';
- }
-
@override
String get sharePageTitle => '分享';
diff --git a/lib/widgets/all_channels.dart b/lib/widgets/all_channels.dart
index 3aaf0d8baf..304cbbaffd 100644
--- a/lib/widgets/all_channels.dart
+++ b/lib/widgets/all_channels.dart
@@ -54,7 +54,7 @@ class AllChannelsPageBody extends StatelessWidget {
if (channels.isEmpty) {
return PageBodyEmptyContentPlaceholder(
- message: zulipLocalizations.allChannelsEmptyPlaceholder);
+ header: zulipLocalizations.allChannelsEmptyPlaceholderHeader);
}
final items = channels.values.toList();
diff --git a/lib/widgets/inbox.dart b/lib/widgets/inbox.dart
index 24832480c0..00887b17ff 100644
--- a/lib/widgets/inbox.dart
+++ b/lib/widgets/inbox.dart
@@ -165,7 +165,8 @@ class _InboxPageState extends State with PerAccountStoreAwareStat
if (sections.isEmpty) {
return PageBodyEmptyContentPlaceholder(
// TODO(#315) add e.g. "You might be interested in recent conversations."
- message: zulipLocalizations.inboxEmptyPlaceholder);
+ header: zulipLocalizations.inboxEmptyPlaceholderHeader,
+ message: zulipLocalizations.inboxEmptyPlaceholderMessage);
}
return SafeArea( // horizontal insets
diff --git a/lib/widgets/message_list.dart b/lib/widgets/message_list.dart
index 4802a3b93f..6b4a6f325c 100644
--- a/lib/widgets/message_list.dart
+++ b/lib/widgets/message_list.dart
@@ -1027,19 +1027,10 @@ class _MessageListState extends State with PerAccountStoreAwareStat
@override
Widget build(BuildContext context) {
- final zulipLocalizations = ZulipLocalizations.of(context);
-
if (!model.fetched) return const Center(child: CircularProgressIndicator());
if (model.items.isEmpty && model.haveNewest && model.haveOldest) {
- final String message;
- if (widget.narrow is KeywordSearchNarrow) {
- message = zulipLocalizations.emptyMessageListSearch;
- } else {
- message = zulipLocalizations.emptyMessageList;
- }
-
- return PageBodyEmptyContentPlaceholder(message: message);
+ return _EmptyContentPlaceholder(narrow: widget.narrow);
}
// Pad the left and right insets, for small devices in landscape.
@@ -1265,6 +1256,92 @@ class _MessageListState extends State with PerAccountStoreAwareStat
}
}
+class _EmptyContentPlaceholder extends StatelessWidget {
+ const _EmptyContentPlaceholder({required this.narrow});
+
+ final Narrow narrow;
+
+ @override
+ Widget build(BuildContext context) {
+ final store = PerAccountStoreWidget.of(context);
+ final zulipLocalizations = ZulipLocalizations.of(context);
+
+ switch (narrow) {
+ case CombinedFeedNarrow():
+ return PageBodyEmptyContentPlaceholder(
+ header: zulipLocalizations.emptyMessageListCombinedFeed);
+ case ChannelNarrow(:final streamId) || TopicNarrow(:final streamId):
+ final channel = store.streams[streamId];
+ if (channel == null) {
+ return PageBodyEmptyContentPlaceholder(
+ header: zulipLocalizations.emptyMessageListChannelUnavailable);
+ } else if (!store.selfHasContentAccess(channel)) {
+ return PageBodyEmptyContentPlaceholder(
+ headerWithLinkMarkup: zulipLocalizations.emptyMessageListChannelWithoutContentAccess,
+ onTapHeaderLink: () => PlatformActions.launchUrl(context,
+ store.tryResolveUrl('/help/channel-permissions')!));
+ } else {
+ return PageBodyEmptyContentPlaceholder(
+ header: zulipLocalizations.emptyMessageList);
+ }
+ case DmNarrow(:final otherRecipientIds) when otherRecipientIds.isEmpty:
+ return PageBodyEmptyContentPlaceholder(
+ header: zulipLocalizations.emptyMessageListSelfDmHeader,
+ message: zulipLocalizations.emptyMessageListSelfDmMessage);
+ case DmNarrow(:final otherRecipientIds) when otherRecipientIds.length == 1:
+ final user = store.getUser(otherRecipientIds.single);
+ switch (user) {
+ case null:
+ return PageBodyEmptyContentPlaceholder(
+ header: zulipLocalizations.emptyMessageListDmUnknownUser);
+ case User(isActive: false):
+ return PageBodyEmptyContentPlaceholder(
+ header: zulipLocalizations.emptyMessageListDmDeactivatedUser(
+ store.userDisplayName(user.userId, replaceIfMuted: false)));
+ case User():
+ final displayName = store.userDisplayName(user.userId, replaceIfMuted: false);
+ return PageBodyEmptyContentPlaceholder(
+ header: zulipLocalizations.emptyMessageListDm(displayName),
+ message: store.isUserMuted(user.userId)
+ ? null
+ : zulipLocalizations.emptyMessageListDmStartConversation,
+ );
+ }
+ case DmNarrow(:final otherRecipientIds)
+ when otherRecipientIds.any((userId) {
+ final user = store.getUser(userId);
+ return user != null && !user.isActive;
+ }):
+ return PageBodyEmptyContentPlaceholder(
+ header: zulipLocalizations.emptyMessageListGroupDmDeactivatedUser);
+ case DmNarrow():
+ return PageBodyEmptyContentPlaceholder(
+ header: zulipLocalizations.emptyMessageListGroupDm,
+ message: zulipLocalizations.emptyMessageListDmStartConversation);
+ case MentionsNarrow():
+ return PageBodyEmptyContentPlaceholder(
+ headerWithLinkMarkup: zulipLocalizations.emptyMessageListMentionsHeader,
+ onTapHeaderLink: () => PlatformActions.launchUrl(context,
+ store.tryResolveUrl('/help/mention-a-user-or-group')!),
+ message: store.zulipFeatureLevel >= 224
+ // This string mentions @topic, which is new in Server 8.
+ ? zulipLocalizations.emptyMessageListMentionsMessage
+ : null, // TODO(server-8)
+ );
+ case StarredMessagesNarrow():
+ return PageBodyEmptyContentPlaceholder(
+ header: zulipLocalizations.emptyMessageListStarredHeader,
+ messageWithLinkMarkup: zulipLocalizations.emptyMessageListStarredMessage(
+ zulipLocalizations.actionSheetOptionStarMessage),
+ onTapMessageLink: () => PlatformActions.launchUrl(context,
+ store.tryResolveUrl('/help/star-a-message')!));
+ case KeywordSearchNarrow():
+ return PageBodyEmptyContentPlaceholder(
+ header: zulipLocalizations.emptyMessageListSearch);
+ }
+ }
+}
+
class _MessageListHistoryStart extends StatelessWidget {
const _MessageListHistoryStart();
diff --git a/lib/widgets/page.dart b/lib/widgets/page.dart
index 63a78951f5..098515a76b 100644
--- a/lib/widgets/page.dart
+++ b/lib/widgets/page.dart
@@ -216,6 +216,8 @@ class LoadingPlaceholderPage extends StatelessWidget {
///
/// Suitable for the inbox, the message-list page, etc.
///
+/// Specify a header and optionally a message.
+///
/// This handles the horizontal device insets
/// and the bottom inset when needed (in a message list with no compose box).
/// The top inset is handled externally by the app bar.
@@ -228,16 +230,47 @@ class LoadingPlaceholderPage extends StatelessWidget {
class PageBodyEmptyContentPlaceholder extends StatelessWidget {
const PageBodyEmptyContentPlaceholder({
super.key,
+ this.header,
+ this.headerWithLinkMarkup,
+ this.onTapHeaderLink,
this.message,
this.messageWithLinkMarkup,
- this.onTapLink,
- }) : assert(
- (message != null)
- ^ (messageWithLinkMarkup != null && onTapLink != null));
+ this.onTapMessageLink,
+ });
+ final String? header;
+ final String? headerWithLinkMarkup;
+ final VoidCallback? onTapHeaderLink;
final String? message;
final String? messageWithLinkMarkup;
- final VoidCallback? onTapLink;
+ final VoidCallback? onTapMessageLink;
+
+ TextStyle _headerStyle(BuildContext context) {
+ final designVariables = DesignVariables.of(context);
+
+ return TextStyle(
+ color: designVariables.labelSearchPrompt,
+ fontSize: 22,
+ height: 1.30,
+ ).merge(weightVariableTextStyle(context, wght: 600));
+ }
+
+ Widget? _buildHeader(BuildContext context) {
+ if (header != null) {
+ return Text(
+ textAlign: TextAlign.center,
+ style: _headerStyle(context),
+ header!);
+ }
+ if (headerWithLinkMarkup != null) {
+ return TextWithLink(
+ onTap: onTapHeaderLink!,
+ textAlign: TextAlign.center,
+ style: _headerStyle(context),
+ markup: headerWithLinkMarkup!);
+ }
+ return null;
+ }
TextStyle _messageStyle(BuildContext context) {
final designVariables = DesignVariables.of(context);
@@ -258,25 +291,34 @@ class PageBodyEmptyContentPlaceholder extends StatelessWidget {
}
if (messageWithLinkMarkup != null) {
return TextWithLink(
- onTap: onTapLink!,
+ onTap: onTapMessageLink!,
textAlign: TextAlign.center,
style: _messageStyle(context),
markup: messageWithLinkMarkup!);
}
- assert(false);
return null;
}
@override
Widget build(BuildContext context) {
+ final header = _buildHeader(context);
+ final message = _buildMessage(context);
+ assert(header != null);
+
return SafeArea(
minimum: EdgeInsets.fromLTRB(24, 0, 24, 16),
child: Padding(
padding: EdgeInsets.only(top: 48),
child: Align(
alignment: Alignment.topCenter,
- // TODO leading and trailing elements, like in Figma (given as SVGs):
- // https://www.figma.com/design/1JTNtYo9memgW7vV6d0ygq/Zulip-Mobile?node-id=5957-167736&m=dev
- child: _buildMessage(context))));
+ child: Column(
+ spacing: 16,
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ // TODO leading and trailing elements, like in Figma (given as SVGs):
+ // https://www.figma.com/design/1JTNtYo9memgW7vV6d0ygq/Zulip-Mobile?node-id=5957-167736&m=dev
+ ?header,
+ ?message,
+ ]))));
}
}
diff --git a/lib/widgets/recent_dm_conversations.dart b/lib/widgets/recent_dm_conversations.dart
index 719568e73d..36f6a40aab 100644
--- a/lib/widgets/recent_dm_conversations.dart
+++ b/lib/widgets/recent_dm_conversations.dart
@@ -107,7 +107,8 @@ class _RecentDmConversationsPageBodyState extends State wit
if (pinned.isEmpty && unpinned.isEmpty) {
if (includeAllChannelsButton) {
return PageBodyEmptyContentPlaceholder(
+ header: zulipLocalizations.channelsEmptyPlaceholderHeader,
messageWithLinkMarkup:
- zulipLocalizations.channelsEmptyPlaceholderWithAllChannelsLink(
+ zulipLocalizations.channelsEmptyPlaceholderMessage(
zulipLocalizations.allChannelsPageTitle),
- onTapLink: () => Navigator.push(context,
+ onTapMessageLink: () => Navigator.push(context,
AllChannelsPage.buildRoute(context: context)));
} else {
return PageBodyEmptyContentPlaceholder(
- message: zulipLocalizations.channelsEmptyPlaceholder);
+ header: zulipLocalizations.channelsEmptyPlaceholderHeader);
}
}
diff --git a/test/widgets/message_list_test.dart b/test/widgets/message_list_test.dart
index acdde3fd2c..e349c0a146 100644
--- a/test/widgets/message_list_test.dart
+++ b/test/widgets/message_list_test.dart
@@ -371,9 +371,219 @@ void main() {
Finder findTextInPlaceholder(String text) =>
find.descendant(of: findPlaceholder, matching: find.textContaining(text));
+ Future checkLink(WidgetTester tester, {
+ required String linkText, required Uri expectedUrl}) async {
+ await tester.tapOnText(find.textRange.ofSubstring(linkText));
+ final (url: url, mode: _) = testBinding.takeLaunchUrlCalls().single;
+ check(url).equals(expectedUrl);
+ }
+
testWidgets('Combined feed', (tester) async {
await setupMessageListPage(tester, narrow: CombinedFeedNarrow(), messages: []);
- check(findTextInPlaceholder('There are no messages here.')).findsOne();
+ check(findPlaceholder).findsOne();
+ check(findTextInPlaceholder('combined feed')).findsOne();
+ });
+
+ testWidgets('Subscribed channel', (tester) async {
+ final channel = eg.stream();
+ await setupMessageListPage(tester,
+ narrow: ChannelNarrow(channel.streamId), messages: [], streams: [channel],
+ skipPumpAndSettle: true);
+
+ // The topic input is autofocused, triggering topic autocomplete.
+ connection.prepare(json: GetStreamTopicsResult(topics: []).toJson());
+ await tester.pumpAndSettle();
+
+ check(findPlaceholder).findsOne();
+ check(findTextInPlaceholder('no messages')).findsOne();
+ });
+
+ testWidgets('Channel without content access', (tester) async {
+ final channel = eg.stream(inviteOnly: true);
+ await setupMessageListPage(tester,
+ narrow: ChannelNarrow(channel.streamId), messages: [], streams: [channel],
+ skipPumpAndSettle: true);
+
+ // The topic input is autofocused, triggering topic autocomplete.
+ connection.prepare(json: GetStreamTopicsResult(topics: []).toJson());
+ await tester.pumpAndSettle();
+
+ check(store.selfHasContentAccess(channel)).isFalse();
+ check(findPlaceholder).findsOne();
+ check(findTextInPlaceholder('content access')).findsOne();
+ await checkLink(tester,
+ linkText: 'content access',
+ expectedUrl: store.tryResolveUrl('/help/channel-permissions')!);
+ });
+
+ testWidgets('Unknown channel', (tester) async {
+ final channel = eg.stream();
+ await setupMessageListPage(tester,
+ narrow: ChannelNarrow(channel.streamId), messages: [], streams: []);
+ check(findPlaceholder).findsOne();
+ check(findTextInPlaceholder('This channel doesn’t exist, or you are not allowed to view it.')).findsOne();
+ });
+
+ testWidgets('Topic in unknown channel', (tester) async {
+ final channel = eg.stream();
+ await setupMessageListPage(tester,
+ narrow: TopicNarrow(channel.streamId, eg.t('topic')), messages: [], streams: []);
+ check(findPlaceholder).findsOne();
+ check(findTextInPlaceholder('This channel doesn’t exist, or you are not allowed to view it.')).findsOne();
+ });
+
+ testWidgets('Topic in subscribed channel', (tester) async {
+ final channel = eg.stream();
+ await setupMessageListPage(tester,
+ narrow: TopicNarrow(channel.streamId, eg.t('topic')), messages: [], streams: [channel]);
+ check(findPlaceholder).findsOne();
+ check(findTextInPlaceholder('no messages')).findsOne();
+ });
+
+ testWidgets('Topic in channel without content access', (tester) async {
+ final channel = eg.stream(inviteOnly: true);
+ await setupMessageListPage(tester,
+ narrow: TopicNarrow(channel.streamId, eg.t('topic')), messages: [], streams: [channel],
+ skipPumpAndSettle: true);
+
+ // The topic input is autofocused, triggering topic autocomplete.
+ connection.prepare(json: GetStreamTopicsResult(topics: []).toJson());
+ await tester.pumpAndSettle();
+
+ check(store.selfHasContentAccess(channel)).isFalse();
+ check(findPlaceholder).findsOne();
+ check(findTextInPlaceholder('content access')).findsOne();
+ await checkLink(tester,
+ linkText: 'content access',
+ expectedUrl: store.tryResolveUrl('/help/channel-permissions')!);
+ });
+
+ testWidgets('Self-DM', (tester) async {
+ final selfUserId = eg.selfUser.userId;
+ await setupMessageListPage(tester,
+ narrow: DmNarrow.withUser(selfUserId, selfUserId: selfUserId), messages: [], users: [eg.selfUser]);
+ check(findPlaceholder).findsOne();
+ check(findTextInPlaceholder('yourself')).findsOne();
+ check(findTextInPlaceholder('Use this space')).findsOne();
+ });
+
+ testWidgets('1:1 DM', (tester) async {
+ final selfUserId = eg.selfUser.userId;
+ final user = eg.user();
+ await setupMessageListPage(tester,
+ narrow: DmNarrow.withUser(user.userId, selfUserId: selfUserId), messages: [], users: [eg.selfUser, user]);
+ check(findPlaceholder).findsOne();
+ check(findTextInPlaceholder(user.fullName)).findsOne();
+ check(findTextInPlaceholder('yet.')).findsOne();
+ check(findTextInPlaceholder('Why not start the conversation?')).findsOne();
+ });
+
+ testWidgets('1:1 DM, muted user', (tester) async {
+ final selfUserId = eg.selfUser.userId;
+ final user = eg.user();
+ await setupMessageListPage(tester,
+ narrow: DmNarrow.withUser(user.userId, selfUserId: selfUserId), messages: [], users: [eg.selfUser, user]);
+ await store.handleEvent(MutedUsersEvent(id: 1, mutedUsers: [MutedUserItem(id: user.userId)]));
+ await tester.pump();
+ check(store.isUserMuted(user.userId)).isTrue();
+ check(findPlaceholder).findsOne();
+
+ // Probably want to show their name, not "Muted user";
+ // this UI context is very much focused on the one user.
+ check(findTextInPlaceholder(user.fullName)).findsOne();
+ check(findTextInPlaceholder('Muted user')).findsNothing();
+
+ // No need to encourage starting a conversation though.
+ check(findTextInPlaceholder('Why not start the conversation?')).findsNothing();
+ });
+
+ testWidgets('1:1 DM, unknown user', (tester) async {
+ final selfUserId = eg.selfUser.userId;
+ await setupMessageListPage(tester,
+ narrow: DmNarrow.withUser(eg.user().userId, selfUserId: selfUserId), messages: [], users: [eg.selfUser]);
+ check(findPlaceholder).findsOne();
+ check(findTextInPlaceholder('this user')).findsOne();
+ check(findTextInPlaceholder('(unknown user)')).findsNothing();
+
+ // No need to encourage starting a conversation...right?
+ check(findTextInPlaceholder('yet.')).findsNothing();
+ check(findTextInPlaceholder('Why not start the conversation?')).findsNothing();
+ });
+
+ testWidgets('1:1 DM, deactivated user', (tester) async {
+ final selfUserId = eg.selfUser.userId;
+ final user = eg.user(isActive: false);
+ await setupMessageListPage(tester,
+ narrow: DmNarrow.withUser(user.userId, selfUserId: selfUserId), messages: [], users: [eg.selfUser, user]);
+ check(findPlaceholder).findsOne();
+ check(findTextInPlaceholder(user.fullName)).findsOne();
+
+ // Sending messages isn't allowed; don't suggest that
+ check(findTextInPlaceholder('yet.')).findsNothing();
+ check(findTextInPlaceholder('Why not start the conversation?')).findsNothing();
+ });
+
+ testWidgets('1:1 DM, muted and deactivated user', (tester) async {
+ final selfUserId = eg.selfUser.userId;
+ final user = eg.user(isActive: false);
+ await setupMessageListPage(tester,
+ narrow: DmNarrow.withUser(user.userId, selfUserId: selfUserId), messages: [], users: [eg.selfUser, user]);
+ await store.handleEvent(MutedUsersEvent(id: 1, mutedUsers: [MutedUserItem(id: user.userId)]));
+ await tester.pump();
+ check(store.isUserMuted(user.userId)).isTrue();
+ check(findPlaceholder).findsOne();
+
+ // Probably want to show their name, not "Muted user";
+ // this UI context is very much focused on the one user.
+ check(findTextInPlaceholder(user.fullName)).findsOne();
+ check(findTextInPlaceholder('Muted user')).findsNothing();
+
+ // Sending messages isn't allowed; don't suggest that
+ check(findTextInPlaceholder('yet.')).findsNothing();
+ check(findTextInPlaceholder('Why not start the conversation?')).findsNothing();
+ });
+
+ testWidgets('Group DM', (tester) async {
+ final selfUserId = eg.selfUser.userId;
+ final user1 = eg.user();
+ final user2 = eg.user();
+ await setupMessageListPage(tester,
+ narrow: DmNarrow.withUsers([user1.userId, user2.userId], selfUserId: selfUserId),
+ messages: [], users: [eg.selfUser, user1, user2]);
+ check(findPlaceholder).findsOne();
+ check(findTextInPlaceholder('these users')).findsOne();
+ check(findTextInPlaceholder('yet.')).findsOne();
+ check(findTextInPlaceholder('Why not start the conversation?')).findsOne();
+ });
+
+ testWidgets('Group DM with a deactivated user', (tester) async {
+ final selfUserId = eg.selfUser.userId;
+ final user1 = eg.user(isActive: false);
+ final user2 = eg.user();
+ await setupMessageListPage(tester,
+ narrow: DmNarrow.withUsers([user1.userId, user2.userId], selfUserId: selfUserId),
+ messages: [], users: [eg.selfUser, user1, user2]);
+ check(findPlaceholder).findsOne();
+ check(findTextInPlaceholder('these users')).findsOne();
+
+ // Sending messages isn't allowed; don't suggest that
+ check(findTextInPlaceholder('yet.')).findsNothing();
+ check(findTextInPlaceholder('Why not start the conversation?')).findsNothing();
+ });
+
+ testWidgets('Mentions', (tester) async {
+ await setupMessageListPage(tester, narrow: MentionsNarrow(), messages: []);
+ check(findPlaceholder).findsOne();
+ check(findTextInPlaceholder('mentioned')).findsOne();
+ });
+
+ testWidgets('Starred', (tester) async {
+ await setupMessageListPage(tester, narrow: StarredMessagesNarrow(), messages: []);
+ check(findPlaceholder).findsOne();
+ check(findTextInPlaceholder('starred')).findsOne();
+ check(findTextInPlaceholder('tap “Star message.”')).findsOne();
+ await checkLink(tester, linkText: 'Starring',
+ expectedUrl: store.tryResolveUrl('/help/star-a-message')!);
});
testWidgets('Search, empty keyword', (tester) async {
diff --git a/test/widgets/recent_dm_conversations_test.dart b/test/widgets/recent_dm_conversations_test.dart
index 32c1d3f28d..85ff96d6ea 100644
--- a/test/widgets/recent_dm_conversations_test.dart
+++ b/test/widgets/recent_dm_conversations_test.dart
@@ -73,8 +73,8 @@ void main() {
group('RecentDmConversationsPage', () {
testWidgets('appearance when empty', (tester) async {
await setupPage(tester, users: [], dmMessages: []);
- check(find.text('You have no direct messages yet! Why not start the conversation?'))
- .findsOne();
+ check(find.text('You have no direct messages yet!')).findsOne();
+ check(find.text('Why not start a conversation?')).findsOne();
});
testWidgets('page builds; conversations appear in order', (tester) async {
diff --git a/test/widgets/subscription_list_test.dart b/test/widgets/subscription_list_test.dart
index 49034f2166..70ede6f70a 100644
--- a/test/widgets/subscription_list_test.dart
+++ b/test/widgets/subscription_list_test.dart
@@ -63,9 +63,8 @@ void main() {
check(getItemCount()).equals(0);
check(isPinnedHeaderInTree()).isFalse();
check(isUnpinnedHeaderInTree()).isFalse();
- check(find.text(
- 'You’re not subscribed to any channels yet. Try going to All channels and joining some of them.'
- )).findsOne();
+ check(find.text('You’re not subscribed to any channels yet.')).findsOne();
+ check(find.text('Try going to All channels and joining some of them.')).findsOne();
});
testWidgets('basic subscriptions', (tester) async {