Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
c86a5d8
content [nfc]: Add comments linking to CZO, pending API-doc update
chrisbobbe Oct 16, 2025
51dbd2c
content [nfc]: s/image/image preview/, making room for new "inline im…
chrisbobbe Oct 16, 2025
343102d
changelog: Update with latest changes
gnprice Oct 21, 2025
4107900
deps: Update CocoaPods pods (tools/upgrade pod)
rajveermalviya Oct 21, 2025
5985e4c
deps: Upgrade Flutter to 3.38.0-1.0.pre-166
rajveermalviya Oct 21, 2025
014827e
deps: Upgrade firebase_core, firebase_messaging to latest
rajveermalviya Oct 21, 2025
4594fa4
deps: Upgrade pigeon to 26.0.2, from 26.0.1
rajveermalviya Oct 21, 2025
acfed6c
deps: Upgrade drift, drift_dev to latest
rajveermalviya Oct 21, 2025
0627479
deps: Upgrade packages within constraints (tools/upgrade pub)
rajveermalviya Oct 21, 2025
9611297
zulip_plugin: Use flutter.compileSdkVersion for compileSdk
rajveermalviya Oct 21, 2025
2f1dcc9
zulip_plugin: Switch to compilerOptions from kotlinOptions
rajveermalviya Oct 21, 2025
6ff4df3
content test: Add explicit test case for Zulip Cloud external image p…
chrisbobbe Oct 21, 2025
0c7edc0
content: Relax image-preview parsing, notably to accept arbitrary CAM…
chrisbobbe Oct 20, 2025
16c788b
l10n: Update translations from Weblate.
weblate Oct 22, 2025
696bd58
changelog: Update with latest changes
gnprice Oct 24, 2025
80f5a85
version: Bump version to 30.0.266
gnprice Oct 24, 2025
78b7fad
test [nfc]: Unmark testFoo functions as async
chrisbobbe Oct 22, 2025
9c3e999
message: Give access to ChannelStore in outbox-handling logic
chrisbobbe Oct 10, 2025
34cf767
dialog: Start-align dialog content on iOS, instead of center-align
chrisbobbe Oct 24, 2025
9506b28
log: On malformed event, include stack trace in log and alert dialog
chrisbobbe Oct 24, 2025
cb9c4dc
store: Show feedback when retrying /register
chrisbobbe Oct 24, 2025
3781b30
android: Lower minSdkVersion to 26, aka Android 8 Oreo
gnprice Oct 8, 2025
9043c5f
all_channels: Make row item at least 44px tall with ConstrainedBox
chungwwei Oct 26, 2025
4b42f7a
all_channels: Remove three dot menu and add gesture controls
chungwwei Oct 11, 2025
8942c91
all_channels: Restrict channel name to one line
chungwwei Oct 26, 2025
db64354
page: Split empty-page placeholder messages into `header` and `message`
chrisbobbe Jul 1, 2025
29a1f38
emoji [nfc]: Dartdoc EmojiStore.emojiDisplayFor
chrisbobbe Oct 18, 2025
07aeb5a
emoji [nfc]: Pull out textEmojiForEmojiName helper
chrisbobbe Oct 17, 2025
5a94337
emoji_reaction [nfc]: Inline _UnicodeEmoji
chrisbobbe Oct 18, 2025
19080d7
emoji_reaction [nfc]: Inline _ImageEmoji
chrisbobbe Oct 18, 2025
cc69cce
emoji_reaction [nfc]: Give _TextEmoji the emoji name more straightfor…
chrisbobbe Oct 18, 2025
e137566
emoji [nfc]: Add reusable EmojiWidget; use it in ReactionChip
chrisbobbe Oct 18, 2025
6d55b2c
emoji [nfc]: Use EmojiWidget in emoji picker and autocomplete
chrisbobbe Oct 18, 2025
d3e7363
emoji_reaction [nfc]: Use EmojiWidget in view-reactions header
chrisbobbe Oct 18, 2025
e7afb83
user status: When we can't load image emoji, lay out a padded empty s…
chrisbobbe Oct 18, 2025
14c5483
user status [nfc]: Pull Padding outside the emojiDisplay switch
chrisbobbe Oct 18, 2025
6613892
user status [nfc]: Use EmojiWidget
chrisbobbe Oct 18, 2025
14ed009
message [nfc]: Dartdoc MessageStore.sendMessage
chrisbobbe Aug 5, 2025
fee6de6
message [nfc]: Fix a reference in a comment
chrisbobbe Oct 16, 2025
d6f2441
compose_box test: Switch to using subscribed channels, where boring
chrisbobbe Oct 10, 2025
f89ce2e
msglist test: Switch to using subscribed channels, where boring
chrisbobbe Oct 10, 2025
0bacdbc
message test [nfc]: Add conditionIdentical helper, for reconcileMessages
chrisbobbe Oct 10, 2025
ab5458a
message [nfc]: Pull out _stripMatchFields helper for reconcileMessages
chrisbobbe Oct 17, 2025
5469cbe
message [nfc]: Pull out some helpers for reconcileMessages; add TODO(…
chrisbobbe Oct 17, 2025
2ab661c
message: Consider unsubscribed/unknown channels in reconcileMessages
chrisbobbe Oct 10, 2025
dc59d62
api [nfc]: Comment on RealmEmojiItem.stillUrl being absent when expected
chrisbobbe Nov 1, 2025
9ee8ccc
image [nfc]: Move RealmContentNetworkImage to new widgets/image.dart …
chrisbobbe Nov 1, 2025
1699aa5
settings [nfc]: Centralize logic for checking device animation settings
chrisbobbe Oct 21, 2025
c8e2d2f
api: Add InitialSnapshot.maxTopicLength
sm-sayedi Oct 30, 2025
030e441
realm: Add RealmStore.maxTopicLength
sm-sayedi Oct 30, 2025
50bbf93
compose: Use `max_topic_length` instead of hardcoded limit of 60
sm-sayedi Oct 30, 2025
6e49e5c
settings: Make page scrollable
MritunjayTiwari14 Oct 24, 2025
f5602fe
deps: Upgrade Flutter to 3.38.0-1.0.pre-429
chrisbobbe Nov 5, 2025
50a1a08
compose: Fix bug where topic input not filled on quote-and-reply
chrisbobbe Oct 30, 2025
05768ec
unread_count_badge: Remove `bold` variant; pin down to current Figma
chrisbobbe Oct 3, 2025
ba8d296
topic_list: Make rows at least 40px tall, for big-enough touch target
chrisbobbe Oct 3, 2025
89b85dc
topic_list: Use UnreadCountBadge, replacing ad hoc private widget
chrisbobbe Oct 3, 2025
48fa89f
l10n: Update translations from Weblate.
weblate Nov 6, 2025
8feb33b
changelog: Describe changes since 30.0.266
gnprice Nov 7, 2025
82928ef
version: Bump version to 30.0.267
gnprice Nov 7, 2025
85d47fb
ci: Try to trigger a rebase before fetching weblate.
alexmv Nov 7, 2025
8e9bb5a
ci: Deepen the initial fetch so it can overlap with weblate.
alexmv Nov 7, 2025
550f99c
ci: Fix workflow parameter.
alexmv Nov 7, 2025
d2396b5
l10n: Update translations from Weblate.
weblate Nov 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .github/workflows/update-translations.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,17 @@ jobs:
update-translations:
runs-on: ubuntu-latest
steps:
- name: Trigger a rebase in Weblate
run: |
pip install wlc
wlc --url https://hosted.weblate.org/api/ --key $WEBLATE_API_KEY pull zulip/zulip-flutter
env:
WEBLATE_API_KEY: ${{ secrets.WEBLATE_API_KEY }}

- uses: actions/checkout@v4
with:
# Enough such that even a still-out-of-date weblate will have shared history
fetch-depth: 50

- name: Fetch and merge from Weblate
# The commit message is generated in Weblate; see https://hosted.weblate.org/addon/17163/
Expand Down
2 changes: 1 addition & 1 deletion android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ android {

defaultConfig {
applicationId "com.zulipmobile"
minSdkVersion 28
minSdkVersion 26
targetSdkVersion flutter.targetSdkVersion
// These are synced to local.properties from pubspec.yaml by the flutter tool.
versionCode localProperties.getProperty('flutter.versionCode').toInteger()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Autogenerated from Pigeon (v26.0.1), do not edit directly.
// Autogenerated from Pigeon (v26.0.2), do not edit directly.
// See also: https://pub.dev/packages/pigeon
@file:Suppress("UNCHECKED_CAST", "ArrayInDataClass")

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Autogenerated from Pigeon (v26.0.1), do not edit directly.
// Autogenerated from Pigeon (v26.0.2), do not edit directly.
// See also: https://pub.dev/packages/pigeon
@file:Suppress("UNCHECKED_CAST", "ArrayInDataClass")

Expand Down
60 changes: 44 additions & 16 deletions assets/l10n/app_de.arb
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@
"@actionSheetOptionCopyTopicLink": {
"description": "Label for copy topic link button in action sheet."
},
"@actionSheetOptionDeleteMessage": {
"description": "Label for the 'Delete message' button in the message action sheet."
},
"@actionSheetOptionEditMessage": {
"description": "Label for the 'Edit message' button in the message action sheet."
},
Expand Down Expand Up @@ -104,15 +107,15 @@
"@actionSheetReadReceiptsZeroReadCount": {
"description": "Label in the \"Read receipts\" bottom sheet when no one has read the message."
},
"@allChannelsPageTitle": {
"description": "Title for the 'All channels' page."
},
"@appVersionUnknownPlaceholder": {
"description": "Placeholder to show in place of the app version when it is unknown."
},
"@channelFeedButtonTooltip": {
"description": "Tooltip for button to navigate to a given channel's feed"
},
"@channelsEmptyPlaceholder": {
"description": "Centered text on the 'Channels' page saying that there is no content to show."
},
"@channelsPageTitle": {
"description": "Title for the page with a list of subscribed channels."
},
Expand Down Expand Up @@ -140,12 +143,21 @@
"@composeBoxBannerButtonCancel": {
"description": "Label text for the 'Cancel' button in the compose-box banner when you are editing a message."
},
"@composeBoxBannerButtonRefresh": {
"description": "Label text for the 'Refresh' button in the compose-box banner when you are viewing an unsubscribed channel."
},
"@composeBoxBannerButtonSave": {
"description": "Label text for the 'Save' button in the compose-box banner when you are editing a message."
},
"@composeBoxBannerButtonSubscribe": {
"description": "Label text for the 'Subscribe' button in the compose-box banner when you are viewing an unsubscribed channel."
},
"@composeBoxBannerLabelEditMessage": {
"description": "Label text for the compose-box banner when you are editing a message."
},
"@composeBoxBannerLabelUnsubscribedWhenCannotSend": {
"description": "Label text for a compose-box banner when you are viewing an unsubscribed channel in which you do not have permission to send messages."
},
"@composeBoxChannelContentHint": {
"description": "Hint text for content input when sending a message to a channel.",
"placeholders": {
Expand Down Expand Up @@ -218,6 +230,15 @@
"@contentValidationErrorUploadInProgress": {
"description": "Content validation error message when attachments have not finished uploading."
},
"@deleteMessageConfirmationDialogConfirmButton": {
"description": "Label for the 'Delete' button on a confirmation dialog for deleting a message."
},
"@deleteMessageConfirmationDialogMessage": {
"description": "Message for a confirmation dialog for deleting a message."
},
"@deleteMessageConfirmationDialogTitle": {
"description": "Title for a confirmation dialog for deleting a message."
},
"@dialogCancel": {
"description": "Button label in dialogs to cancel."
},
Expand Down Expand Up @@ -340,6 +361,9 @@
"@errorCouldNotShowUserProfile": {
"description": "Message that appears on the user profile page when the profile cannot be shown."
},
"@errorDeleteMessageFailedTitle": {
"description": "Error title when deleting a message failed."
},
"@errorDialogContinue": {
"description": "Button label in error dialogs to acknowledge the error and close the dialog."
},
Expand Down Expand Up @@ -582,9 +606,6 @@
}
}
},
"@inboxEmptyPlaceholder": {
"description": "Centered text on the 'Inbox' page saying that there is no content to show."
},
"@inboxPageTitle": {
"description": "Title for the page with unreads."
},
Expand Down Expand Up @@ -738,6 +759,9 @@
"@mutedUser": {
"description": "Name for a muted user to display all over the app."
},
"@navButtonAllChannels": {
"description": "Title for a nav button that opens the 'All channels' page."
},
"@newDmFabButtonLabel": {
"description": "Label for the floating action button (FAB) that opens the new DM sheet."
},
Expand Down Expand Up @@ -854,9 +878,6 @@
"@reactionChipsLabel": {
"description": "Text identifying the container of reaction chips on a message. (An accessibility label for assistive technology.)"
},
"@recentDmConversationsEmptyPlaceholder": {
"description": "Centered text on the 'Direct messages' page saying that there is no content to show."
},
"@recentDmConversationsPageTitle": {
"description": "Title for the page with a list of DM conversations."
},
Expand Down Expand Up @@ -1062,8 +1083,8 @@
"@unsubscribeConfirmationDialogConfirmButton": {
"description": "Label for the 'Unsubscribe' button on a confirmation dialog for unsubscribing from a channel."
},
"@unsubscribeConfirmationDialogMessageMaybeCannotResubscribe": {
"description": "Message for a confirmation dialog for unsubscribing from a channel when you might not have permission to resubscribe."
"@unsubscribeConfirmationDialogMessageCannotResubscribe": {
"description": "Message for a confirmation dialog for unsubscribing from a channel when you will not have permission to resubscribe."
},
"@unsubscribeConfirmationDialogTitle": {
"description": "Title for a confirmation dialog for unsubscribing from a channel.",
Expand Down Expand Up @@ -1221,6 +1242,7 @@
"actionSheetOptionCopyMessageLink": "Link zur Nachricht kopieren",
"actionSheetOptionCopyMessageText": "Nachrichtentext kopieren",
"actionSheetOptionCopyTopicLink": "Link zum Thema kopieren",
"actionSheetOptionDeleteMessage": "Nachricht löschen",
"actionSheetOptionEditMessage": "Nachricht bearbeiten",
"actionSheetOptionFollowTopic": "Thema folgen",
"actionSheetOptionHideMutedMessage": "Stummgeschaltete Nachricht wieder ausblenden",
Expand All @@ -1245,9 +1267,9 @@
"actionSheetReadReceiptsErrorReadCount": "Laden von Empfangsbestätigungen fehlgeschlagen.",
"actionSheetReadReceiptsReadCount": "{count, plural, =1{Diese Nachricht wurde von einer Person <z-link>gelesen</z-link>:} other{Diese Nachricht wurde von {count} Personen <z-link>gelesen</z-link>:}}",
"actionSheetReadReceiptsZeroReadCount": "Niemand hat diese Nachricht bisher gelesen.",
"allChannelsPageTitle": "Alle Kanäle",
"appVersionUnknownPlaceholder": "(…)",
"channelFeedButtonTooltip": "Kanal-Feed",
"channelsEmptyPlaceholder": "Du hast noch keine Kanäle abonniert.",
"channelsPageTitle": "Kanäle",
"chooseAccountButtonAddAnAccount": "Account hinzufügen",
"chooseAccountPageLogOutButton": "Abmelden",
Expand All @@ -1257,22 +1279,28 @@
"composeBoxAttachFromCameraTooltip": "Ein Foto aufnehmen",
"composeBoxAttachMediaTooltip": "Bilder oder Videos anhängen",
"composeBoxBannerButtonCancel": "Abbrechen",
"composeBoxBannerButtonRefresh": "Auffrischen",
"composeBoxBannerButtonSave": "Speichern",
"composeBoxBannerButtonSubscribe": "Abonnieren",
"composeBoxBannerLabelEditMessage": "Nachricht bearbeiten",
"composeBoxBannerLabelUnsubscribedWhenCannotSend": "Neue Nachrichten werden nicht automatisch angezeigt.",
"composeBoxChannelContentHint": "Nachricht an {destination}",
"composeBoxDmContentHint": "Nachricht an @{user}",
"composeBoxEnterTopicOrSkipHintText": "Gib ein Thema ein (leer lassen für “{defaultTopicName}”)",
"composeBoxGenericContentHint": "Eine Nachricht eingeben",
"composeBoxGroupDmContentHint": "Nachricht an Gruppe",
"composeBoxLoadingMessage": "(lade Nachricht {messageId})",
"composeBoxSelfDmContentHint": "Schreibe etwas",
"composeBoxSelfDmContentHint": "Schreibe dir selbst eine Notiz",
"composeBoxSendTooltip": "Senden",
"composeBoxTopicHintText": "Thema",
"composeBoxUploadingFilename": "Lade {filename} hoch…",
"contentValidationErrorEmpty": "Du hast nichts zum Senden!",
"contentValidationErrorQuoteAndReplyInProgress": "Bitte warte bis das Zitat abgeschlossen ist.",
"contentValidationErrorTooLong": "Nachrichtenlänge sollte nicht größer als 10000 Zeichen sein.",
"contentValidationErrorUploadInProgress": "Bitte warte bis das Hochladen abgeschlossen ist.",
"deleteMessageConfirmationDialogConfirmButton": "Löschen",
"deleteMessageConfirmationDialogMessage": "Das Löschen einer Nachricht entfernt diese permanent für alle Nutzer:innen.",
"deleteMessageConfirmationDialogTitle": "Nachricht löschen?",
"dialogCancel": "Abbrechen",
"dialogClose": "Schließen",
"dialogContinue": "Fortsetzen",
Expand Down Expand Up @@ -1303,6 +1331,7 @@
"errorCouldNotOpenLink": "Link konnte nicht geöffnet werden: {url}",
"errorCouldNotOpenLinkTitle": "Link kann nicht geöffnet werden",
"errorCouldNotShowUserProfile": "Nutzerprofil kann nicht angezeigt werden.",
"errorDeleteMessageFailedTitle": "Löschen der Nachricht fehlgeschlagen",
"errorDialogContinue": "OK",
"errorDialogLearnMore": "Mehr erfahren",
"errorDialogTitle": "Fehler",
Expand Down Expand Up @@ -1349,7 +1378,6 @@
"experimentalFeatureSettingsPageTitle": "Experimentelle Funktionen",
"experimentalFeatureSettingsWarning": "Diese Optionen aktivieren Funktionen, die noch in Entwicklung und nicht bereit sind. Sie funktionieren möglicherweise nicht und können Problem in anderen Bereichen der App verursachen.\n\nDer Zweck dieser Einstellungen ist das Experimentieren der Leute, die an der Entwicklung von Zulip arbeiten.",
"filenameAndSizeInMiB": "{filename}: {size} MiB",
"inboxEmptyPlaceholder": "Es sind keine ungelesenen Nachrichten in deinem Eingang. Verwende die Buttons unten, um den kombinierten Feed oder die Kanalliste anzusehen.",
"inboxPageTitle": "Eingang",
"initialAnchorSettingDescription": "Du kannst auswählen ob Nachrichten-Feeds bei deiner ersten ungelesenen oder bei den neuesten Nachrichten geöffnet werden.",
"initialAnchorSettingFirstUnreadAlways": "Erste ungelesene Nachricht",
Expand Down Expand Up @@ -1395,6 +1423,7 @@
"messageListGroupYouWithYourself": "Nachrichten mit dir selbst",
"messageNotSentLabel": "NACHRICHT NICHT GESENDET",
"mutedUser": "Stummgeschaltete:r Nutzer:in",
"navButtonAllChannels": "Alle Kanäle",
"newDmFabButtonLabel": "Neue DN",
"newDmSheetComposeButtonLabel": "Verfassen",
"newDmSheetNoUsersFound": "Keine Nutzer:innen gefunden",
Expand All @@ -1421,7 +1450,6 @@
"reactionChipLabel": "{emojiName}: {votes}",
"reactionChipVotesYouAndOthers": "{otherUsersCount, plural, =1{Du und ein weiterer} other{Du und {otherUsersCount} weitere}}",
"reactionChipsLabel": "Reaktionen",
"recentDmConversationsEmptyPlaceholder": "Du hast noch keine Direktnachrichten! Warum nicht die Unterhaltung beginnen?",
"recentDmConversationsPageTitle": "Direktnachrichten",
"recentDmConversationsSectionHeader": "Direktnachrichten",
"revealButtonLabel": "Nachricht anzeigen",
Expand Down Expand Up @@ -1475,7 +1503,7 @@
"unknownUserName": "(Nutzer:in unbekannt)",
"unpinnedSubscriptionsLabel": "Nicht angeheftet",
"unsubscribeConfirmationDialogConfirmButton": "Deabonnieren",
"unsubscribeConfirmationDialogMessageMaybeCannotResubscribe": "Wenn du diesen Kanal verlässt, kannst du sich vielleicht nicht wieder beitreten.",
"unsubscribeConfirmationDialogMessageCannotResubscribe": "Sobald du diesen Kanal verlässt, kannst du ihm nicht mehr beitreten.",
"unsubscribeConfirmationDialogTitle": "{channelName} deabonnieren?",
"unsubscribeFailedTitle": "Konnte nicht deabonnieren",
"updateStatusErrorTitle": "Fehler beim Update des Benutzerstatus. Bitte versuche es nochmal.",
Expand Down
1 change: 1 addition & 0 deletions assets/l10n/app_el.arb
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
38 changes: 26 additions & 12 deletions assets/l10n/app_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -806,9 +806,15 @@
"@loginErrorMissingUsername": {
"description": "Error message when an empty username was provided."
},
"topicValidationErrorTooLong": "Topic length shouldn't be greater than 60 characters.",
"topicValidationErrorTooLong": "Topic length shouldn't be greater than {maxLength, plural, =1{1 character} other{{maxLength} characters}}.",
"@topicValidationErrorTooLong": {
"description": "Topic validation error when topic is too long."
"description": "Topic validation error when topic is too long.",
"placeholders": {
"maxLength": {
"type": "int",
"example": "60"
}
}
},
"topicValidationErrorMandatoryButEmpty": "Topics are required in this organization.",
"@topicValidationErrorMandatoryButEmpty": {
Expand Down Expand Up @@ -1090,10 +1096,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."
Expand All @@ -1102,10 +1112,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."
Expand All @@ -1122,12 +1136,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 <z-link>{allChannelsPageTitle}</z-link> and joining some of them.",
"@channelsEmptyPlaceholderWithAllChannelsLink": {
"channelsEmptyPlaceholderMessage": "Try going to <z-link>{allChannelsPageTitle}</z-link> 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"}
Expand Down
1 change: 1 addition & 0 deletions assets/l10n/app_es.arb
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
Loading