Skip to content

Commit d37e4d2

Browse files
committed
msglist: Friendlier placeholder text when narrow has no messages
Fixes zulip#1555. A "no-messages-here" placeholder will be important for search, zulip#252.
1 parent 7c208ab commit d37e4d2

16 files changed

+1223
-0
lines changed

assets/l10n/app_en.arb

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@
3131
"@upgradeWelcomeDialogDismiss": {
3232
"description": "Label for button dismissing dialog shown on first upgrade from the legacy Zulip app."
3333
},
34+
"learnMoreButtonLabel": "Learn more",
35+
"@learnMoreButtonLabel": {
36+
"description": "Label for a 'Learn more' button."
37+
},
3438
"chooseAccountPageTitle": "Choose account",
3539
"@chooseAccountPageTitle": {
3640
"description": "Title for the page to choose between Zulip accounts."
@@ -530,6 +534,75 @@
530534
"others": {"type": "String", "example": "Alice, Bob"}
531535
}
532536
},
537+
"emptyMessageList": "There are no messages here.",
538+
"@emptyMessageList": {
539+
"description": "Placeholder for some message-list pages when there are no messages."
540+
},
541+
"emptyMessageListCombinedFeed": "There are no messages in your combined feed.",
542+
"@emptyMessageListCombinedFeed": {
543+
"description": "Placeholder for the 'Combined feed' page when there are no messages."
544+
},
545+
"emptyMessageListChannelUnavailable": "This channel doesn’t exist, or you are not allowed to view it.",
546+
"@emptyMessageListChannelUnavailable": {
547+
"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."
548+
},
549+
"emptyMessageListSelfDm": "You have not sent any direct messages to yourself yet!",
550+
"@emptyMessageListSelfDm": {
551+
"description": "Placeholder for the self-DM page when there are no messages."
552+
},
553+
"emptyMessageListSelfDmExplanation": "Use this space for personal notes, or to test out Zulip features.",
554+
"@emptyMessageListSelfDmExplanation": {
555+
"description": "Extra detail in the placeholder for the self-DM page when there are no messages."
556+
},
557+
"emptyMessageListDm": "You have no direct messages with {person} yet.",
558+
"@emptyMessageListDm": {
559+
"description": "Placeholder for a 1:1 DM page when there are no messages.",
560+
"placeholders": {
561+
"person": {"type": "String", "example": "Alice"}
562+
}
563+
},
564+
"emptyMessageListDmDeactivatedUser": "You have no direct messages with {person}.",
565+
"@emptyMessageListDmDeactivatedUser": {
566+
"description": "Placeholder for a 1:1 DM page when there are no messages and the other user is deactivated.",
567+
"placeholders": {
568+
"person": {"type": "String", "example": "Alice"}
569+
}
570+
},
571+
"emptyMessageListDmUnknownUser": "You have no direct messages with this person.",
572+
"@emptyMessageListDmUnknownUser": {
573+
"description": "Placeholder for a 1:1 DM page when there are no messages and the other user's name is unavailable."
574+
},
575+
"emptyMessageListGroupDm": "You have no direct messages with these users yet.",
576+
"@emptyMessageListGroupDm": {
577+
"description": "Placeholder for a group DM page when there are no messages."
578+
},
579+
"emptyMessageListGroupDmDeactivatedUser": "You have no direct messages with these users.",
580+
"@emptyMessageListGroupDmDeactivatedUser": {
581+
"description": "Placeholder for a group DM page when there are no messages and one or more participants is deactivated."
582+
},
583+
"emptyMessageListDmStartConversation": "Why not start the conversation?",
584+
"@emptyMessageListDmStartConversation": {
585+
"description": "Extra detail in the placeholder for some DM pages when there are no messages."
586+
},
587+
"emptyMessageListMentions": "This view will show messages where you are mentioned.",
588+
"@emptyMessageListMentions": {
589+
"description": "Placeholder for the 'Mentions' page when there are no messages."
590+
},
591+
"emptyMessageListMentionsExplanation": "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.",
592+
"@emptyMessageListMentionsExplanation": {
593+
"description": "Extra detail in the placeholder for the 'Mentions' page when there are no messages."
594+
},
595+
"emptyMessageListStarred": "You have no starred messages.",
596+
"@emptyMessageListStarred": {
597+
"description": "Placeholder for the 'Starred' page when there are no messages."
598+
},
599+
"emptyMessageListStarredExplanation": "Starring messages 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}.”",
600+
"@emptyMessageListStarredExplanation": {
601+
"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.",
602+
"placeholders": {
603+
"button": {"type": "String", "example": "Star message"}
604+
}
605+
},
533606
"messageListGroupYouWithYourself": "Messages with yourself",
534607
"@messageListGroupYouWithYourself": {
535608
"description": "Message list recipient header for a DM group that only includes yourself."

lib/generated/l10n/zulip_localizations.dart

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,12 @@ abstract class ZulipLocalizations {
177177
/// **'Let\'s go'**
178178
String get upgradeWelcomeDialogDismiss;
179179

180+
/// Label for a 'Learn more' button.
181+
///
182+
/// In en, this message translates to:
183+
/// **'Learn more'**
184+
String get learnMoreButtonLabel;
185+
180186
/// Title for the page to choose between Zulip accounts.
181187
///
182188
/// In en, this message translates to:
@@ -845,6 +851,96 @@ abstract class ZulipLocalizations {
845851
/// **'DMs with {others}'**
846852
String dmsWithOthersPageTitle(String others);
847853

854+
/// Placeholder for some message-list pages when there are no messages.
855+
///
856+
/// In en, this message translates to:
857+
/// **'There are no messages here.'**
858+
String get emptyMessageList;
859+
860+
/// Placeholder for the 'Combined feed' page when there are no messages.
861+
///
862+
/// In en, this message translates to:
863+
/// **'There are no messages in your combined feed.'**
864+
String get emptyMessageListCombinedFeed;
865+
866+
/// Placeholder for a channel page when there are no messages and the channel does not exist or you don't have access to it.
867+
///
868+
/// In en, this message translates to:
869+
/// **'This channel doesn’t exist, or you are not allowed to view it.'**
870+
String get emptyMessageListChannelUnavailable;
871+
872+
/// Placeholder for the self-DM page when there are no messages.
873+
///
874+
/// In en, this message translates to:
875+
/// **'You have not sent any direct messages to yourself yet!'**
876+
String get emptyMessageListSelfDm;
877+
878+
/// Extra detail in the placeholder for the self-DM page when there are no messages.
879+
///
880+
/// In en, this message translates to:
881+
/// **'Use this space for personal notes, or to test out Zulip features.'**
882+
String get emptyMessageListSelfDmExplanation;
883+
884+
/// Placeholder for a 1:1 DM page when there are no messages.
885+
///
886+
/// In en, this message translates to:
887+
/// **'You have no direct messages with {person} yet.'**
888+
String emptyMessageListDm(String person);
889+
890+
/// Placeholder for a 1:1 DM page when there are no messages and the other user is deactivated.
891+
///
892+
/// In en, this message translates to:
893+
/// **'You have no direct messages with {person}.'**
894+
String emptyMessageListDmDeactivatedUser(String person);
895+
896+
/// Placeholder for a 1:1 DM page when there are no messages and the other user's name is unavailable.
897+
///
898+
/// In en, this message translates to:
899+
/// **'You have no direct messages with this person.'**
900+
String get emptyMessageListDmUnknownUser;
901+
902+
/// Placeholder for a group DM page when there are no messages.
903+
///
904+
/// In en, this message translates to:
905+
/// **'You have no direct messages with these users yet.'**
906+
String get emptyMessageListGroupDm;
907+
908+
/// Placeholder for a group DM page when there are no messages and one or more participants is deactivated.
909+
///
910+
/// In en, this message translates to:
911+
/// **'You have no direct messages with these users.'**
912+
String get emptyMessageListGroupDmDeactivatedUser;
913+
914+
/// Extra detail in the placeholder for some DM pages when there are no messages.
915+
///
916+
/// In en, this message translates to:
917+
/// **'Why not start the conversation?'**
918+
String get emptyMessageListDmStartConversation;
919+
920+
/// Placeholder for the 'Mentions' page when there are no messages.
921+
///
922+
/// In en, this message translates to:
923+
/// **'This view will show messages where you are mentioned.'**
924+
String get emptyMessageListMentions;
925+
926+
/// Extra detail in the placeholder for the 'Mentions' page when there are no messages.
927+
///
928+
/// In en, this message translates to:
929+
/// **'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.'**
930+
String get emptyMessageListMentionsExplanation;
931+
932+
/// Placeholder for the 'Starred' page when there are no messages.
933+
///
934+
/// In en, this message translates to:
935+
/// **'You have no starred messages.'**
936+
String get emptyMessageListStarred;
937+
938+
/// Extra detail in the placeholder for the 'Starred' page when there are no messages. The {button} placeholder will be the button's translated text.
939+
///
940+
/// In en, this message translates to:
941+
/// **'Starring messages 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}.”'**
942+
String emptyMessageListStarredExplanation(String button);
943+
848944
/// Message list recipient header for a DM group that only includes yourself.
849945
///
850946
/// In en, this message translates to:

lib/generated/l10n/zulip_localizations_ar.dart

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ class ZulipLocalizationsAr extends ZulipLocalizations {
3434
@override
3535
String get upgradeWelcomeDialogDismiss => 'Let\'s go';
3636

37+
@override
38+
String get learnMoreButtonLabel => 'Learn more';
39+
3740
@override
3841
String get chooseAccountPageTitle => 'Choose account';
3942

@@ -434,6 +437,67 @@ class ZulipLocalizationsAr extends ZulipLocalizations {
434437
return 'DMs with $others';
435438
}
436439

440+
@override
441+
String get emptyMessageList => 'There are no messages here.';
442+
443+
@override
444+
String get emptyMessageListCombinedFeed =>
445+
'There are no messages in your combined feed.';
446+
447+
@override
448+
String get emptyMessageListChannelUnavailable =>
449+
'This channel doesn’t exist, or you are not allowed to view it.';
450+
451+
@override
452+
String get emptyMessageListSelfDm =>
453+
'You have not sent any direct messages to yourself yet!';
454+
455+
@override
456+
String get emptyMessageListSelfDmExplanation =>
457+
'Use this space for personal notes, or to test out Zulip features.';
458+
459+
@override
460+
String emptyMessageListDm(String person) {
461+
return 'You have no direct messages with $person yet.';
462+
}
463+
464+
@override
465+
String emptyMessageListDmDeactivatedUser(String person) {
466+
return 'You have no direct messages with $person.';
467+
}
468+
469+
@override
470+
String get emptyMessageListDmUnknownUser =>
471+
'You have no direct messages with this person.';
472+
473+
@override
474+
String get emptyMessageListGroupDm =>
475+
'You have no direct messages with these users yet.';
476+
477+
@override
478+
String get emptyMessageListGroupDmDeactivatedUser =>
479+
'You have no direct messages with these users.';
480+
481+
@override
482+
String get emptyMessageListDmStartConversation =>
483+
'Why not start the conversation?';
484+
485+
@override
486+
String get emptyMessageListMentions =>
487+
'This view will show messages where you are mentioned.';
488+
489+
@override
490+
String get emptyMessageListMentionsExplanation =>
491+
'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.';
492+
493+
@override
494+
String get emptyMessageListStarred => 'You have no starred messages.';
495+
496+
@override
497+
String emptyMessageListStarredExplanation(String button) {
498+
return 'Starring messages 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.”';
499+
}
500+
437501
@override
438502
String get messageListGroupYouWithYourself => 'Messages with yourself';
439503

lib/generated/l10n/zulip_localizations_de.dart

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ class ZulipLocalizationsDe extends ZulipLocalizations {
3434
@override
3535
String get upgradeWelcomeDialogDismiss => 'Los gehts';
3636

37+
@override
38+
String get learnMoreButtonLabel => 'Learn more';
39+
3740
@override
3841
String get chooseAccountPageTitle => 'Konto auswählen';
3942

@@ -449,6 +452,67 @@ class ZulipLocalizationsDe extends ZulipLocalizations {
449452
return 'DNs mit $others';
450453
}
451454

455+
@override
456+
String get emptyMessageList => 'There are no messages here.';
457+
458+
@override
459+
String get emptyMessageListCombinedFeed =>
460+
'There are no messages in your combined feed.';
461+
462+
@override
463+
String get emptyMessageListChannelUnavailable =>
464+
'This channel doesn’t exist, or you are not allowed to view it.';
465+
466+
@override
467+
String get emptyMessageListSelfDm =>
468+
'You have not sent any direct messages to yourself yet!';
469+
470+
@override
471+
String get emptyMessageListSelfDmExplanation =>
472+
'Use this space for personal notes, or to test out Zulip features.';
473+
474+
@override
475+
String emptyMessageListDm(String person) {
476+
return 'You have no direct messages with $person yet.';
477+
}
478+
479+
@override
480+
String emptyMessageListDmDeactivatedUser(String person) {
481+
return 'You have no direct messages with $person.';
482+
}
483+
484+
@override
485+
String get emptyMessageListDmUnknownUser =>
486+
'You have no direct messages with this person.';
487+
488+
@override
489+
String get emptyMessageListGroupDm =>
490+
'You have no direct messages with these users yet.';
491+
492+
@override
493+
String get emptyMessageListGroupDmDeactivatedUser =>
494+
'You have no direct messages with these users.';
495+
496+
@override
497+
String get emptyMessageListDmStartConversation =>
498+
'Why not start the conversation?';
499+
500+
@override
501+
String get emptyMessageListMentions =>
502+
'This view will show messages where you are mentioned.';
503+
504+
@override
505+
String get emptyMessageListMentionsExplanation =>
506+
'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.';
507+
508+
@override
509+
String get emptyMessageListStarred => 'You have no starred messages.';
510+
511+
@override
512+
String emptyMessageListStarredExplanation(String button) {
513+
return 'Starring messages 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.”';
514+
}
515+
452516
@override
453517
String get messageListGroupYouWithYourself => 'Nachrichten mit dir selbst';
454518

0 commit comments

Comments
 (0)