Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sweep through UI strings to internationalize #1148

Merged
merged 14 commits into from
Feb 5, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
80 changes: 78 additions & 2 deletions assets/l10n/app_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@
"@profileButtonSendDirectMessage": {
"description": "Label for button in profile screen to navigate to DMs with the shown user."
},
"errorCouldNotShowUserProfile": "Could not show user profile.",
"@errorCouldNotShowUserProfile": {
"description": "Message that appears on the user profile page when the profile cannot be shown."
},
"permissionsNeededTitle": "Permissions needed",
"@permissionsNeededTitle": {
"description": "Title for dialog asking the user to grant additional permissions."
Expand Down Expand Up @@ -230,6 +234,17 @@
"event": {"type": "String", "example": "UpdateMessageEvent(id: 123, messageIds: [2345, 3456], newTopic: 'dinner')"}
}
},
"errorCouldNotOpenLinkTitle": "Unable to open link",
"@errorCouldNotOpenLinkTitle": {
"description": "Error title when opening a link failed."
},
"errorCouldNotOpenLink": "Link could not be opened: {url}",
"@errorCouldNotOpenLink": {
"description": "Error message when opening a link failed.",
"placeholders": {
"url": {"type": "String", "example": "https://chat.example.com"}
}
},
"errorMuteTopicFailed": "Failed to mute topic",
"@errorMuteTopicFailed": {
"description": "Error message when muting a topic failed."
Expand Down Expand Up @@ -321,8 +336,8 @@
"@composeBoxSendTooltip": {
"description": "Tooltip for send button in compose box."
},
"composeBoxUnknownChannelName": "(unknown channel)",
"@composeBoxUnknownChannelName": {
"unknownChannelName": "(unknown channel)",
"@unknownChannelName": {
"description": "Replacement name for channel when it cannot be found in the store."
},
"composeBoxTopicHintText": "Topic",
Expand All @@ -336,17 +351,35 @@
"filename": {"type": "String", "example": "file.txt"}
}
},
"composeBoxLoadingMessage": "(loading message {messageId})",
"@composeBoxLoadingMessage": {
"description": "Placeholder in compose box showing the quoted message is currently loading.",
"placeholders": {
"messageId": {"type": "int", "example": "1234"}
}
},
"unknownUserName": "(unknown user)",
"@unknownUserName": {
"description": "Name placeholder to use for a user when we don't know their name."
},
"dmsWithYourselfPageTitle": "DMs with yourself",
"@dmsWithYourselfPageTitle": {
"description": "Message list page title for a DM group that only includes yourself."
},
"messageListGroupYouAndOthers": "You and {others}",
"@messageListGroupYouAndOthers": {
"description": "Message list recipient header for a DM group with others.",
"placeholders": {
"others": {"type": "String", "example": "Alice, Bob"}
}
},
"dmsWithOthersPageTitle": "DMs with {others}",
"@dmsWithOthersPageTitle": {
"description": "Message list page title for a DM group with others.",
"placeholders": {
"others": {"type": "String", "example": "Alice, Bob"}
}
},
"messageListGroupYouWithYourself": "You with yourself",
"@messageListGroupYouWithYourself": {
"description": "Message list recipient header for a DM group that only includes yourself."
Expand Down Expand Up @@ -395,6 +428,14 @@
"@lightboxCopyLinkTooltip": {
"description": "Tooltip in lightbox for the copy link action."
},
"lightboxVideoCurrentPosition": "Current position",
"@lightboxVideoCurrentPosition": {
"description": "The current playback position of the video playing in the lightbox."
},
"lightboxVideoDuration": "Video duration",
"@lightboxVideoDuration": {
"description": "The total duration of the video playing in the lightbox."
},
"loginPageTitle": "Log in",
"@loginPageTitle": {
"description": "Title for login page."
Expand Down Expand Up @@ -586,6 +627,10 @@
"@recentDmConversationsPageTitle": {
"description": "Title for the page with a list of DM conversations."
},
"recentDmConversationsSectionHeader": "Direct messages",
"@recentDmConversationsSectionHeader": {
"description": "Heading for direct messages section on the 'Inbox' message view."
},
"combinedFeedPageTitle": "Combined feed",
"@combinedFeedPageTitle": {
"description": "Page title for the 'Combined feed' message view."
Expand Down Expand Up @@ -618,10 +663,26 @@
"numOthers": {"type": "int", "example": "4"}
}
},
"pinnedSubscriptionsLabel": "Pinned",
"@pinnedSubscriptionsLabel": {
"description": "Label for the list of pinned subscribed channels."
},
"unpinnedSubscriptionsLabel": "Unpinned",
"@unpinnedSubscriptionsLabel": {
"description": "Label for the list of unpinned subscribed channels."
},
"subscriptionListNoChannels": "No channels found",
"@subscriptionListNoChannels": {
"description": "Text to display on subscribed-channels page when there are no subscribed channels."
},
"notifSelfUser": "You",
"@notifSelfUser": {
"description": "Display name for the user themself, to show after replying in an Android notification"
},
"reactedEmojiSelfUser": "You",
"@reactedEmojiSelfUser": {
"description": "Display name for the user themself, to show on an emoji reaction added by the user."
},
"onePersonTyping": "{typist} is typing…",
"@onePersonTyping": {
"description": "Text to display when there is one user typing.",
Expand Down Expand Up @@ -685,6 +746,13 @@
"@messageIsMovedLabel": {
"description": "Label for a moved message. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)"
},
"pollVoterNames": "({voterNames})",
"@pollVoterNames": {
"description": "The list of people who voted for a poll option, wrapped in parentheses.",
"placeholders": {
"voterNames": {"type": "String", "example": "Alice, Bob, Chad"}
}
},
"pollWidgetQuestionMissing": "No question.",
"@pollWidgetQuestionMissing": {
"description": "Text to display for a poll when the question is missing"
Expand Down Expand Up @@ -716,5 +784,13 @@
"emojiPickerSearchEmoji": "Search emoji",
"@emojiPickerSearchEmoji": {
"description": "Hint text for the emoji picker search text field."
},
"noEarlierMessages": "No earlier messages",
"@noEarlierMessages": {
"description": "Text to show at the start of a message list if there are no earlier messages."
},
"scrollToBottomTooltip": "Scroll to bottom",
"@scrollToBottomTooltip": {
"description": "Tooltip for button to scroll to bottom."
}
}
98 changes: 97 additions & 1 deletion lib/generated/l10n/zulip_localizations.dart
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,12 @@ abstract class ZulipLocalizations {
/// **'Send direct message'**
String get profileButtonSendDirectMessage;

/// Message that appears on the user profile page when the profile cannot be shown.
///
/// In en, this message translates to:
/// **'Could not show user profile.'**
String get errorCouldNotShowUserProfile;

/// Title for dialog asking the user to grant additional permissions.
///
/// In en, this message translates to:
Expand Down Expand Up @@ -405,6 +411,18 @@ abstract class ZulipLocalizations {
/// **'Error handling a Zulip event from {serverUrl}; will retry.\n\nError: {error}\n\nEvent: {event}'**
String errorHandlingEventDetails(String serverUrl, String error, String event);

/// Error title when opening a link failed.
///
/// In en, this message translates to:
/// **'Unable to open link'**
String get errorCouldNotOpenLinkTitle;

/// Error message when opening a link failed.
///
/// In en, this message translates to:
/// **'Link could not be opened: {url}'**
String errorCouldNotOpenLink(String url);

/// Error message when muting a topic failed.
///
/// In en, this message translates to:
Expand Down Expand Up @@ -535,7 +553,7 @@ abstract class ZulipLocalizations {
///
/// In en, this message translates to:
/// **'(unknown channel)'**
String get composeBoxUnknownChannelName;
String get unknownChannelName;

/// Hint text for topic input widget in compose box.
///
Expand All @@ -549,18 +567,36 @@ abstract class ZulipLocalizations {
/// **'Uploading {filename}…'**
String composeBoxUploadingFilename(String filename);

/// Placeholder in compose box showing the quoted message is currently loading.
///
/// In en, this message translates to:
/// **'(loading message {messageId})'**
String composeBoxLoadingMessage(int messageId);

/// Name placeholder to use for a user when we don't know their name.
///
/// In en, this message translates to:
/// **'(unknown user)'**
String get unknownUserName;

/// Message list page title for a DM group that only includes yourself.
///
/// In en, this message translates to:
/// **'DMs with yourself'**
String get dmsWithYourselfPageTitle;

/// Message list recipient header for a DM group with others.
///
/// In en, this message translates to:
/// **'You and {others}'**
String messageListGroupYouAndOthers(String others);

/// Message list page title for a DM group with others.
///
/// In en, this message translates to:
/// **'DMs with {others}'**
String dmsWithOthersPageTitle(String others);

/// Message list recipient header for a DM group that only includes yourself.
///
/// In en, this message translates to:
Expand Down Expand Up @@ -633,6 +669,18 @@ abstract class ZulipLocalizations {
/// **'Copy link'**
String get lightboxCopyLinkTooltip;

/// The current playback position of the video playing in the lightbox.
///
/// In en, this message translates to:
/// **'Current position'**
String get lightboxVideoCurrentPosition;

/// The total duration of the video playing in the lightbox.
///
/// In en, this message translates to:
/// **'Video duration'**
String get lightboxVideoDuration;

/// Title for login page.
///
/// In en, this message translates to:
Expand Down Expand Up @@ -891,6 +939,12 @@ abstract class ZulipLocalizations {
/// **'Direct messages'**
String get recentDmConversationsPageTitle;

/// Heading for direct messages section on the 'Inbox' message view.
///
/// In en, this message translates to:
/// **'Direct messages'**
String get recentDmConversationsSectionHeader;

/// Page title for the 'Combined feed' message view.
///
/// In en, this message translates to:
Expand Down Expand Up @@ -933,12 +987,36 @@ abstract class ZulipLocalizations {
/// **'{senderFullName} to you and {numOthers, plural, =1{1 other} other{{numOthers} others}}'**
String notifGroupDmConversationLabel(String senderFullName, int numOthers);

/// Label for the list of pinned subscribed channels.
///
/// In en, this message translates to:
/// **'Pinned'**
String get pinnedSubscriptionsLabel;

/// Label for the list of unpinned subscribed channels.
///
/// In en, this message translates to:
/// **'Unpinned'**
String get unpinnedSubscriptionsLabel;

/// Text to display on subscribed-channels page when there are no subscribed channels.
///
/// In en, this message translates to:
/// **'No channels found'**
String get subscriptionListNoChannels;

/// Display name for the user themself, to show after replying in an Android notification
///
/// In en, this message translates to:
/// **'You'**
String get notifSelfUser;

/// Display name for the user themself, to show on an emoji reaction added by the user.
///
/// In en, this message translates to:
/// **'You'**
String get reactedEmojiSelfUser;

/// Text to display when there is one user typing.
///
/// In en, this message translates to:
Expand Down Expand Up @@ -1023,6 +1101,12 @@ abstract class ZulipLocalizations {
/// **'MOVED'**
String get messageIsMovedLabel;

/// The list of people who voted for a poll option, wrapped in parentheses.
///
/// In en, this message translates to:
/// **'({voterNames})'**
String pollVoterNames(String voterNames);

/// Text to display for a poll when the question is missing
///
/// In en, this message translates to:
Expand Down Expand Up @@ -1070,6 +1154,18 @@ abstract class ZulipLocalizations {
/// In en, this message translates to:
/// **'Search emoji'**
String get emojiPickerSearchEmoji;

/// Text to show at the start of a message list if there are no earlier messages.
///
/// In en, this message translates to:
/// **'No earlier messages'**
String get noEarlierMessages;

/// Tooltip for button to scroll to bottom.
///
/// In en, this message translates to:
/// **'Scroll to bottom'**
String get scrollToBottomTooltip;
}

class _ZulipLocalizationsDelegate extends LocalizationsDelegate<ZulipLocalizations> {
Expand Down
Loading
Loading