diff --git a/assets/l10n/app_fr.arb b/assets/l10n/app_fr.arb index 0967ef424b..9a37dc2a1b 100644 --- a/assets/l10n/app_fr.arb +++ b/assets/l10n/app_fr.arb @@ -1 +1,458 @@ -{} +{ + "aboutPageTitle": "À propos de Zulip", + "@aboutPageTitle": { + "description": "Title for About Zulip page." + }, + "aboutPageAppVersion": "Version de l'application", + "@aboutPageAppVersion": { + "description": "Label for Zulip app version in About Zulip page" + }, + "aboutPageOpenSourceLicenses": "Licences de logiciel libre", + "@aboutPageOpenSourceLicenses": { + "description": "Item title in About Zulip page to navigate to Licenses page" + }, + "aboutPageTapToView": "Toucher pour voir", + "@aboutPageTapToView": { + "description": "Item subtitle in About Zulip page to navigate to Licenses page" + }, + "upgradeWelcomeDialogTitle": "Bienvenue dans la nouvelle application Zulip !", + "@upgradeWelcomeDialogTitle": { + "description": "Title for dialog shown on first upgrade from the legacy Zulip app." + }, + "upgradeWelcomeDialogDismiss": "Allons-y", + "@upgradeWelcomeDialogDismiss": { + "description": "Label for button dismissing dialog shown on first upgrade from the legacy Zulip app." + }, + "chooseAccountPageTitle": "Choisir un compte", + "@chooseAccountPageTitle": { + "description": "Title for the page to choose between Zulip accounts." + }, + "settingsPageTitle": "Paramètres", + "@settingsPageTitle": { + "description": "Title for the settings page." + }, + "tryAnotherAccountMessage": "Votre compte à {url} prend du temps à se charger.", + "@tryAnotherAccountMessage": { + "description": "Message that appears on the loading screen after waiting for some time.", + "url": { + "type": "String", + "example": "http://chat.example.com/" + } + }, + "tryAnotherAccountButton": "Essayer un autre compte", + "@tryAnotherAccountButton": { + "description": "Label for loading screen button prompting user to try another account." + }, + "chooseAccountPageLogOutButton": "Déconnexion", + "@chooseAccountPageLogOutButton": { + "description": "Label for the 'Log out' button for an account on the choose-account page" + }, + "logOutConfirmationDialogTitle": "Se déconnecter?", + "@logOutConfirmationDialogTitle": { + "description": "Title for a confirmation dialog for logging out." + }, + "logOutConfirmationDialogMessage": "Pour utiliser ce compte à l'avenir, vous devrez ré-entrer l'adresse pour votre organisation et les informations de votre compte.", + "@logOutConfirmationDialogMessage": { + "description": "Message for a confirmation dialog for logging out." + }, + "logOutConfirmationDialogConfirmButton": "Déconnexion", + "@logOutConfirmationDialogConfirmButton": { + "description": "Label for the 'Log out' button on a confirmation dialog for logging out." + }, + "chooseAccountButtonAddAnAccount": "Ajouter un compte", + "@chooseAccountButtonAddAnAccount": { + "description": "Label for ChooseAccountPage button to add an account" + }, + "profileButtonSendDirectMessage": "Envoyer un message direct", + "@profileButtonSendDirectMessage": { + "description": "Label for button in profile screen to navigate to DMs with the shown user." + }, + "errorCouldNotShowUserProfile": "Impossible de montrer le profil de l'utilisateur.", + "@errorCouldNotShowUserProfile": { + "description": "Message that appears on the user profile page when the profile cannot be shown." + }, + "upgradeWelcomeDialogMessage": "Vous retrouverez une expérience familière dans un logiciel plus rapide et plus élégant.", + "@upgradeWelcomeDialogMessage": { + "description": "Message text for dialog shown on first upgrade from the legacy Zulip app." + }, + "upgradeWelcomeDialogLinkText": "Allez voir les articles sur le blog des annonces !", + "@upgradeWelcomeDialogLinkText": { + "description": "Text of link in dialog shown on first upgrade from the legacy Zulip app." + }, + "switchAccountButton": "Changer de compte", + "@switchAccountButton": { + "description": "Label for main-menu button leading to the choose-account page." + }, + "permissionsNeededTitle": "Permissions requises", + "@permissionsNeededTitle": { + "description": "Title for dialog asking the user to grant additional permissions." + }, + "permissionsNeededOpenSettings": "Ouvrir les préférences", + "@permissionsNeededOpenSettings": { + "description": "Button label for permissions dialog button that opens the system settings screen." + }, + "permissionsDeniedCameraAccess": "Pour charger une image, merci d'accorder des autorisations supplémentaires à Zulip, dans les préférences.", + "@permissionsDeniedCameraAccess": { + "description": "Message for dialog asking the user to grant permissions for camera access." + }, + "permissionsDeniedReadExternalStorage": "Pour charger des fichiers, merci d'accorder des autorisations supplémentaires à Zulip, dans les préférences.", + "@permissionsDeniedReadExternalStorage": { + "description": "Message for dialog asking the user to grant permissions for external storage read access." + }, + "actionSheetOptionMarkChannelAsRead": "Marquer le canal comme lu", + "@actionSheetOptionMarkChannelAsRead": { + "description": "Label for marking a channel as read." + }, + "actionSheetOptionListOfTopics": "Liste des sujets", + "@actionSheetOptionListOfTopics": { + "description": "Label for navigating to a channel's topic-list page." + }, + "actionSheetOptionMuteTopic": "Rendre le sujet silencieux", + "@actionSheetOptionMuteTopic": { + "description": "Label for muting a topic on action sheet." + }, + "actionSheetOptionUnmuteTopic": "Rendre le sujet non silencieux", + "@actionSheetOptionUnmuteTopic": { + "description": "Label for unmuting a topic on action sheet." + }, + "actionSheetOptionFollowTopic": "Suivre le sujet", + "@actionSheetOptionFollowTopic": { + "description": "Label for following a topic on action sheet." + }, + "actionSheetOptionUnfollowTopic": "Ne plus suivre le sujet", + "@actionSheetOptionUnfollowTopic": { + "description": "Label for unfollowing a topic on action sheet." + }, + "actionSheetOptionResolveTopic": "Marquer comme résolu", + "@actionSheetOptionResolveTopic": { + "description": "Label for the 'Mark as resolved' button on the topic action sheet." + }, + "actionSheetOptionUnresolveTopic": "Marquer comme non résolu", + "@actionSheetOptionUnresolveTopic": { + "description": "Label for the 'Mark as unresolved' button on the topic action sheet." + }, + "errorResolveTopicFailedTitle": "Impossible de marquer le sujet comme résolu", + "@errorResolveTopicFailedTitle": { + "description": "Error title when marking a topic as resolved failed." + }, + "errorUnresolveTopicFailedTitle": "Impossible de marquer le sujet comme non résolu", + "@errorUnresolveTopicFailedTitle": { + "description": "Error title when marking a topic as unresolved failed." + }, + "actionSheetOptionCopyMessageText": "Copier le contenu du message", + "@actionSheetOptionCopyMessageText": { + "description": "Label for copy message text button on action sheet." + }, + "actionSheetOptionCopyMessageLink": "Copier le lien au message", + "@actionSheetOptionCopyMessageLink": { + "description": "Label for copy message link button on action sheet." + }, + "actionSheetOptionMarkAsUnread": "Marquer non lu à partir d'ici", + "@actionSheetOptionMarkAsUnread": { + "description": "Label for mark as unread button on action sheet." + }, + "actionSheetOptionHideMutedMessage": "Cacher à nouveau le message silencieux", + "@actionSheetOptionHideMutedMessage": { + "description": "Label for hide muted message again button on action sheet." + }, + "actionSheetOptionShare": "Partager", + "@actionSheetOptionShare": { + "description": "Label for share button on action sheet." + }, + "actionSheetOptionQuoteMessage": "Citer le message", + "@actionSheetOptionQuoteMessage": { + "description": "Label for the 'Quote message' button in the message action sheet." + }, + "actionSheetOptionStarMessage": "Mettre le message en favori", + "@actionSheetOptionStarMessage": { + "description": "Label for star button on action sheet." + }, + "actionSheetOptionUnstarMessage": "Retirer ce message de la liste des favoris", + "@actionSheetOptionUnstarMessage": { + "description": "Label for unstar button on action sheet." + }, + "actionSheetOptionEditMessage": "Modifier le message", + "@actionSheetOptionEditMessage": { + "description": "Label for the 'Edit message' button in the message action sheet." + }, + "actionSheetOptionMarkTopicAsRead": "Marquer le sujet comme lu", + "@actionSheetOptionMarkTopicAsRead": { + "description": "Option to mark a specific topic as read in the action sheet." + }, + "errorWebAuthOperationalErrorTitle": "Une erreur s'est produite", + "@errorWebAuthOperationalErrorTitle": { + "description": "Error title when third-party authentication has an operational error (not necessarily caused by invalid credentials)." + }, + "errorWebAuthOperationalError": "Oups, une erreur s'est produite.", + "@errorWebAuthOperationalError": { + "description": "Error message when third-party authentication has an operational error (not necessarily caused by invalid credentials)." + }, + "errorAccountLoggedInTitle": "Vous êtes déjà connecté à ce compte.", + "@errorAccountLoggedInTitle": { + "description": "Error title on attempting to log into an account that's already logged in." + }, + "errorAccountLoggedIn": "Le compte {email} at {server} figure déjà dans votre liste de comptes.", + "@errorAccountLoggedIn": { + "description": "Error message on attempting to log into an account that's already logged in.", + "placeholders": { + "email": { + "type": "String", + "example": "user@example.com" + }, + "server": { + "type": "String", + "example": "https://example.com" + } + } + }, + "errorCouldNotFetchMessageSource": "Impossible d'atteindre le message source.", + "@errorCouldNotFetchMessageSource": { + "description": "Error message when the source of a message could not be fetched." + }, + "errorCopyingFailed": "Échec de la copie", + "@errorCopyingFailed": { + "description": "Error message when copying the text of a message to the user's system clipboard failed." + }, + "errorFailedToUploadFileTitle": "Impossible de charger le fichier {filename}", + "@errorFailedToUploadFileTitle": { + "description": "Error title when the specified file failed to upload.", + "placeholders": { + "filename": { + "type": "String", + "example": "file.txt" + } + } + }, + "filenameAndSizeInMiB": "{filename} : {size} MiB", + "@filenameAndSizeInMiB": { + "description": "The name of a file, and its size in mebibytes.", + "placeholders": { + "filename": { + "type": "String", + "example": "foo.txt" + }, + "size": { + "type": "String", + "example": "20.2" + } + } + }, + "errorFilesTooLarge": "{num, plural, =1{Fichier est} other{{num} fichiers sont}} plus gros que la limite de capacité du serveur ({maxFileUploadSizeMib} MO) et ne peu(ven)t pas être chargé(s) :\n\n{listMessage}", + "@errorFilesTooLarge": { + "description": "Error message when attached files are too large in size.", + "placeholders": { + "num": { + "type": "int", + "example": "2" + }, + "maxFileUploadSizeMib": { + "type": "int", + "example": "15" + }, + "listMessage": { + "type": "String", + "example": "foo.txt: 10.1 MiB\nbar.txt 20.2 MiB" + } + } + }, + "errorFilesTooLargeTitle": "{num, plural, =1{Le fichier est trop lourd} other{Les fichier sont trop lourds}}", + "@errorFilesTooLargeTitle": { + "description": "Error title when attached files are too large in size.", + "placeholders": { + "num": { + "type": "int", + "example": "4" + } + } + }, + "errorLoginInvalidInputTitle": "Identifiant incorrect", + "@errorLoginInvalidInputTitle": { + "description": "Error title for login when input is invalid." + }, + "errorLoginFailedTitle": "La connexion a échoué.", + "@errorLoginFailedTitle": { + "description": "Error title for login when signing into a Zulip server fails." + }, + "errorMessageNotSent": "Le message n'a pas pu être envoyé.", + "@errorMessageNotSent": { + "description": "Error message for compose box when a message could not be sent." + }, + "errorMessageEditNotSaved": "Le message n'a pas pu être sauvegardé.", + "@errorMessageEditNotSaved": { + "description": "Error message for compose box when a message edit could not be saved." + }, + "errorLoginCouldNotConnect": "La connexion au serveur a échoué :\n{url}", + "@errorLoginCouldNotConnect": { + "description": "Error message when the app could not connect to the server.", + "placeholders": { + "url": { + "type": "String", + "example": "http://example.com/" + } + } + }, + "errorCouldNotConnectTitle": "Impossible de se connecter au serveur", + "@errorCouldNotConnectTitle": { + "description": "Error title when the app could not connect to the server." + }, + "errorMessageDoesNotSeemToExist": "Ce message est introuvable.", + "@errorMessageDoesNotSeemToExist": { + "description": "Error message when loading a message that does not exist." + }, + "errorQuotationFailed": "Échec de la citation", + "@errorQuotationFailed": { + "description": "Error message when quoting a message failed." + }, + "errorServerMessage": "Message d'erreur du serveur :\n\n{message}", + "@errorServerMessage": { + "description": "Error message that quotes an error from the server.", + "placeholders": { + "message": { + "type": "String", + "example": "Invalid format" + } + } + }, + "errorConnectingToServerShort": "Une erreur s'est produite lors de la connexion au serveur. Nouvelle tentative en cours…", + "@errorConnectingToServerShort": { + "description": "Short error message for a generic unknown error connecting to the server." + }, + "errorConnectingToServerDetails": "Une erreur s'est produite lors de la connexion à Zulip sur {serverUrl}. Nouvelle tentative imminente :\n\n{error}", + "@errorConnectingToServerDetails": { + "description": "Dialog error message for a generic unknown error connecting to the server with details.", + "placeholders": { + "serverUrl": { + "type": "String", + "example": "http://example.com/" + }, + "error": { + "type": "String", + "example": "Invalid format" + } + } + }, + "errorHandlingEventTitle": "Une erreur s'est produite sur le serveur. Reconnexion en cours…", + "@errorHandlingEventTitle": { + "description": "Error title on failing to handle a Zulip server event." + }, + "errorHandlingEventDetails": "Une erreur s'est produite sur le serveur {serverUrl} ; tentative de reconnexion imminente.\n\nErreur : {error}\n\nÉvénement : {event}", + "@errorHandlingEventDetails": { + "description": "Error details on failing to handle a Zulip server event.", + "placeholders": { + "serverUrl": { + "type": "String", + "example": "https://chat.example.com" + }, + "error": { + "type": "String", + "example": "Unexpected null value" + }, + "event": { + "type": "String", + "example": "UpdateMessageEvent(id: 123, messageIds: [2345, 3456], newTopic: 'dinner')" + } + } + }, + "errorCouldNotOpenLinkTitle": "Impossible d'ouvrir le lien", + "@errorCouldNotOpenLinkTitle": { + "description": "Error title when opening a link failed." + }, + "errorCouldNotOpenLink": "Le lien suivant n'a pas pu être ouvert : {url}", + "@errorCouldNotOpenLink": { + "description": "Error message when opening a link failed.", + "placeholders": { + "url": { + "type": "String", + "example": "https://chat.example.com" + } + } + }, + "errorMuteTopicFailed": "Le sujet n'a pas pu être rendu silencieux", + "@errorMuteTopicFailed": { + "description": "Error message when muting a topic failed." + }, + "actionSheetOptionCopyChannelLink": "Copier le lien du canal", + "@actionSheetOptionCopyChannelLink": { + "description": "Label for copy channel link button on action sheet." + }, + "actionSheetOptionCopyTopicLink": "Copier le lien sur le sujet", + "@actionSheetOptionCopyTopicLink": { + "description": "Label for copy topic link button in action sheet." + }, + "errorStarMessageFailedTitle": "Échec de marquage du message en favori", + "@errorStarMessageFailedTitle": { + "description": "Error title when starring a message failed." + }, + "errorUnstarMessageFailedTitle": "Échec de la tentative d'enlever le message des favoris", + "@errorUnstarMessageFailedTitle": { + "description": "Error title when unstarring a message failed." + }, + "errorCouldNotEditMessageTitle": "Le message n'a pas pu être modifié", + "@errorCouldNotEditMessageTitle": { + "description": "Error title when an exception prevented us from opening the compose box for editing a message." + }, + "successLinkCopied": "Lien copié", + "@successLinkCopied": { + "description": "Success message after copy link action completed." + }, + "successMessageTextCopied": "Texte du message copié", + "@successMessageTextCopied": { + "description": "Message when content of a message was copied to the user's system clipboard." + }, + "successMessageLinkCopied": "Lien sur le message copié", + "@successMessageLinkCopied": { + "description": "Message when link of a message was copied to the user's system clipboard." + }, + "successTopicLinkCopied": "Lien sur le sujet copié", + "@successTopicLinkCopied": { + "description": "Message when link of a topic was copied to the user's system clipboard." + }, + "successChannelLinkCopied": "Lien sur le canal copié", + "@successChannelLinkCopied": { + "description": "Message when link of a channel was copied to the user's system clipboard." + }, + "errorBannerDeactivatedDmLabel": "Vous ne pouvez pas envoyer de messages aux utilisateurs désactivés.", + "@errorBannerDeactivatedDmLabel": { + "description": "Label text for error banner when sending a message to one or multiple deactivated users." + }, + "errorBannerCannotPostInChannelLabel": "Vous n'avez pas l'autorisation de poster sur ce canal.", + "@errorBannerCannotPostInChannelLabel": { + "description": "Error-banner text replacing the compose box when you do not have permission to send a message to the channel." + }, + "composeBoxBannerLabelEditMessage": "Editer le message", + "@composeBoxBannerLabelEditMessage": { + "description": "Label text for the compose-box banner when you are editing a message." + }, + "composeBoxBannerButtonCancel": "Annuler", + "@composeBoxBannerButtonCancel": { + "description": "Label text for the 'Cancel' button in the compose-box banner when you are editing a message." + }, + "composeBoxBannerButtonSave": "Sauvegarder", + "@composeBoxBannerButtonSave": { + "description": "Label text for the 'Save' button in the compose-box banner when you are editing a message." + }, + "errorUnmuteTopicFailed": "Impossible de ne plus mettre le sujet en sourdine", + "@errorUnmuteTopicFailed": { + "description": "Error message when unmuting a topic failed." + }, + "errorFollowTopicFailed": "Échec du suivi du sujet", + "@errorFollowTopicFailed": { + "description": "Error message when following a topic failed." + }, + "errorUnfollowTopicFailed": "Échec de la tentative de ne plus suivre le sujet", + "@errorUnfollowTopicFailed": { + "description": "Error message when unfollowing a topic failed." + }, + "errorSharingFailed": "Échec du partage", + "@errorSharingFailed": { + "description": "Error message when sharing a message failed." + }, + "editAlreadyInProgressTitle": "Impossible de modifier le message", + "@editAlreadyInProgressTitle": { + "description": "Error title when a message edit cannot be saved because there is another edit already in progress." + }, + "editAlreadyInProgressMessage": "Une modification est déjà en cours. Merci d'attendre qu'elle soit terminée.", + "@editAlreadyInProgressMessage": { + "description": "Error message when a message edit cannot be saved because there is another edit already in progress." + } +} diff --git a/assets/l10n/app_pl.arb b/assets/l10n/app_pl.arb index 1350cf82a4..73ade45245 100644 --- a/assets/l10n/app_pl.arb +++ b/assets/l10n/app_pl.arb @@ -1,1228 +1,1378 @@ { - "errorConnectingToServerDetails": "Błąd połączenia z Zulip {serverUrl}. Spróbujmy ponownie:\n\n{error}", - "@errorConnectingToServerDetails": { - "description": "Dialog error message for a generic unknown error connecting to the server with details.", - "placeholders": { - "serverUrl": { - "type": "String", - "example": "http://example.com/" - }, - "error": { - "type": "String", - "example": "Invalid format" - } - } - }, - "aboutPageAppVersion": "Wydanie apki", "@aboutPageAppVersion": { "description": "Label for Zulip app version in About Zulip page" }, - "aboutPageTapToView": "Dotknij, aby pokazać", + "@aboutPageOpenSourceLicenses": { + "description": "Item title in About Zulip page to navigate to Licenses page" + }, "@aboutPageTapToView": { "description": "Item subtitle in About Zulip page to navigate to Licenses page" }, - "logOutConfirmationDialogConfirmButton": "Wyloguj", - "@logOutConfirmationDialogConfirmButton": { - "description": "Label for the 'Log out' button on a confirmation dialog for logging out." - }, - "chooseAccountButtonAddAnAccount": "Dodaj konto", - "@chooseAccountButtonAddAnAccount": { - "description": "Label for ChooseAccountPage button to add an account" - }, - "profileButtonSendDirectMessage": "Wyślij wiadomość bezpośrednią", - "@profileButtonSendDirectMessage": { - "description": "Label for button in profile screen to navigate to DMs with the shown user." + "@aboutPageTitle": { + "description": "Title for About Zulip page." }, - "permissionsNeededTitle": "Wymagane uprawnienia", - "@permissionsNeededTitle": { - "description": "Title for dialog asking the user to grant additional permissions." + "@actionSheetOptionCopyChannelLink": { + "description": "Label for copy channel link button on action sheet." }, - "permissionsNeededOpenSettings": "Otwórz ustawienia", - "@permissionsNeededOpenSettings": { - "description": "Button label for permissions dialog button that opens the system settings screen." + "@actionSheetOptionCopyMessageLink": { + "description": "Label for copy message link button on action sheet." }, - "actionSheetOptionCopyMessageText": "Skopiuj tekst wiadomości", "@actionSheetOptionCopyMessageText": { "description": "Label for copy message text button on action sheet." }, - "actionSheetOptionCopyMessageLink": "Skopiuj odnośnik do wiadomości", - "@actionSheetOptionCopyMessageLink": { - "description": "Label for copy message link button on action sheet." + "@actionSheetOptionCopyTopicLink": { + "description": "Label for copy topic link button in action sheet." + }, + "@actionSheetOptionEditMessage": { + "description": "Label for the 'Edit message' button in the message action sheet." + }, + "@actionSheetOptionFollowTopic": { + "description": "Label for following a topic on action sheet." + }, + "@actionSheetOptionHideMutedMessage": { + "description": "Label for hide muted message again button on action sheet." + }, + "@actionSheetOptionListOfTopics": { + "description": "Label for navigating to a channel's topic-list page." + }, + "@actionSheetOptionMarkAsUnread": { + "description": "Label for mark as unread button on action sheet." + }, + "@actionSheetOptionMarkChannelAsRead": { + "description": "Label for marking a channel as read." + }, + "@actionSheetOptionMarkTopicAsRead": { + "description": "Option to mark a specific topic as read in the action sheet." + }, + "@actionSheetOptionMuteTopic": { + "description": "Label for muting a topic on action sheet." + }, + "@actionSheetOptionQuoteMessage": { + "description": "Label for the 'Quote message' button in the message action sheet." + }, + "@actionSheetOptionResolveTopic": { + "description": "Label for the 'Mark as resolved' button on the topic action sheet." + }, + "@actionSheetOptionSeeWhoReacted": { + "description": "Label for the 'See who reacted' button in the message action sheet." }, - "actionSheetOptionShare": "Udostępnij", "@actionSheetOptionShare": { "description": "Label for share button on action sheet." }, - "actionSheetOptionStarMessage": "Oznacz gwiazdką", "@actionSheetOptionStarMessage": { "description": "Label for star button on action sheet." }, - "actionSheetOptionUnstarMessage": "Odbierz gwiazdkę", + "@actionSheetOptionUnfollowTopic": { + "description": "Label for unfollowing a topic on action sheet." + }, + "@actionSheetOptionUnmuteTopic": { + "description": "Label for unmuting a topic on action sheet." + }, + "@actionSheetOptionUnresolveTopic": { + "description": "Label for the 'Mark as unresolved' button on the topic action sheet." + }, "@actionSheetOptionUnstarMessage": { "description": "Label for unstar button on action sheet." }, - "errorWebAuthOperationalErrorTitle": "Coś poszło nie tak", - "@errorWebAuthOperationalErrorTitle": { - "description": "Error title when third-party authentication has an operational error (not necessarily caused by invalid credentials)." + "@appVersionUnknownPlaceholder": { + "description": "Placeholder to show in place of the app version when it is unknown." }, - "actionSheetOptionMarkAsUnread": "Odtąd oznacz jako nieprzeczytane", - "@actionSheetOptionMarkAsUnread": { - "description": "Label for mark as unread button on action sheet." + "@channelFeedButtonTooltip": { + "description": "Tooltip for button to navigate to a given channel's feed" }, - "logOutConfirmationDialogMessage": "Aby użyć tego konta należy wskazać URL organizacji oraz dane konta.", - "@logOutConfirmationDialogMessage": { - "description": "Message for a confirmation dialog for logging out." + "@channelsEmptyPlaceholder": { + "description": "Centered text on the 'Channels' page saying that there is no content to show." }, - "permissionsDeniedCameraAccess": "Aby odebrać obraz Zulip musi uzyskać dodatkowe uprawnienia w Ustawieniach.", - "@permissionsDeniedCameraAccess": { - "description": "Message for dialog asking the user to grant permissions for camera access." + "@channelsPageTitle": { + "description": "Title for the page with a list of subscribed channels." }, - "permissionsDeniedReadExternalStorage": "Aby odebrać pliki Zulip musi uzyskać dodatkowe uprawnienia w Ustawieniach.", - "@permissionsDeniedReadExternalStorage": { - "description": "Message for dialog asking the user to grant permissions for external storage read access." + "@chooseAccountButtonAddAnAccount": { + "description": "Label for ChooseAccountPage button to add an account" }, - "errorWebAuthOperationalError": "Wystąpił niespodziewany błąd.", - "@errorWebAuthOperationalError": { - "description": "Error message when third-party authentication has an operational error (not necessarily caused by invalid credentials)." + "@chooseAccountPageLogOutButton": { + "description": "Label for the 'Log out' button for an account on the choose-account page" }, - "errorAccountLoggedInTitle": "Konto już wylogowane", - "@errorAccountLoggedInTitle": { - "description": "Error title on attempting to log into an account that's already logged in." + "@chooseAccountPageTitle": { + "description": "Title for the page to choose between Zulip accounts." }, - "errorAccountLoggedIn": "Konto {email} na {server} znajduje się już na liście dodanych kont.", - "@errorAccountLoggedIn": { - "description": "Error message on attempting to log into an account that's already logged in.", - "placeholders": { - "email": { - "type": "String", - "example": "user@example.com" - }, - "server": { - "type": "String", - "example": "https://example.com" - } - } + "@combinedFeedPageTitle": { + "description": "Page title for the 'Combined feed' message view." }, - "errorCouldNotFetchMessageSource": "Nie można uzyskać źródłowej wiadomości.", - "@errorCouldNotFetchMessageSource": { - "description": "Error message when the source of a message could not be fetched." + "@composeBoxAttachFilesTooltip": { + "description": "Tooltip for compose box icon to attach a file to the message." }, - "errorCopyingFailed": "Nie udało się skopiować", - "@errorCopyingFailed": { - "description": "Error message when copying the text of a message to the user's system clipboard failed." + "@composeBoxAttachFromCameraTooltip": { + "description": "Tooltip for compose box icon to attach an image from the camera to the message." }, - "errorFilesTooLargeTitle": "{num, plural, =1{Plik} other{Pliki}} ponad limit", - "@errorFilesTooLargeTitle": { - "description": "Error title when attached files are too large in size.", - "placeholders": { - "num": { - "type": "int", - "example": "4" - } - } + "@composeBoxAttachMediaTooltip": { + "description": "Tooltip for compose box icon to attach media to the message." }, - "errorLoginInvalidInputTitle": "Błędny wsad", - "@errorLoginInvalidInputTitle": { - "description": "Error title for login when input is invalid." + "@composeBoxBannerButtonCancel": { + "description": "Label text for the 'Cancel' button in the compose-box banner when you are editing a message." }, - "errorLoginFailedTitle": "Logowanie bez powodzenia", - "@errorLoginFailedTitle": { - "description": "Error title for login when signing into a Zulip server fails." + "@composeBoxBannerButtonSave": { + "description": "Label text for the 'Save' button in the compose-box banner when you are editing a message." }, - "errorMessageNotSent": "Nie wysłano wiadomości", - "@errorMessageNotSent": { - "description": "Error message for compose box when a message could not be sent." + "@composeBoxBannerLabelEditMessage": { + "description": "Label text for the compose-box banner when you are editing a message." }, - "errorLoginCouldNotConnect": "Nie udało się połączyć z serwerem:\n{url}", - "@errorLoginCouldNotConnect": { - "description": "Error message when the app could not connect to the server.", + "@composeBoxChannelContentHint": { + "description": "Hint text for content input when sending a message to a channel.", "placeholders": { - "url": { - "type": "String", - "example": "http://example.com/" + "destination": { + "example": "#channel name > topic name", + "type": "String" } } }, - "errorFilesTooLarge": "{num, plural, =1{Plik jest} other{{num} Pliki są}} ponad limit serwera {maxFileUploadSizeMib} MiB i nie zostaną przyjęte:\n\n{listMessage}", - "@errorFilesTooLarge": { - "description": "Error message when attached files are too large in size.", + "@composeBoxDmContentHint": { + "description": "Hint text for content input when sending a message to one other person.", "placeholders": { - "num": { - "type": "int", - "example": "2" - }, - "maxFileUploadSizeMib": { - "type": "int", - "example": "15" - }, - "listMessage": { - "type": "String", - "example": "foo.txt\nbar.txt" + "user": { + "example": "channel name", + "type": "String" } } }, - "errorServerMessage": "Odpowiedź serwera:\n\n{message}", - "@errorServerMessage": { - "description": "Error message that quotes an error from the server.", + "@composeBoxEnterTopicOrSkipHintText": { + "description": "Hint text for topic input widget in compose box when topics are optional.", "placeholders": { - "message": { - "type": "String", - "example": "Invalid format" + "defaultTopicName": { + "example": "general chat", + "type": "String" } } }, - "errorConnectingToServerShort": "Błąd połączenia z Zulip. Ponawiam…", - "@errorConnectingToServerShort": { - "description": "Short error message for a generic unknown error connecting to the server." + "@composeBoxGenericContentHint": { + "description": "Hint text for content input when sending a message." }, - "errorHandlingEventTitle": "Błąd obsługi zdarzenia Zulip. Ponnawiam połączenie…", - "@errorHandlingEventTitle": { - "description": "Error title on failing to handle a Zulip server event." + "@composeBoxGroupDmContentHint": { + "description": "Hint text for content input when sending a message to a group." }, - "errorHandlingEventDetails": "Błąd zdarzenia Zulip z {serverUrl}; ponawiam.\n\nBłąd: {error}\n\nZdarzenie: {event}", - "@errorHandlingEventDetails": { - "description": "Error details on failing to handle a Zulip server event.", + "@composeBoxLoadingMessage": { + "description": "Placeholder in compose box showing the quoted message is currently loading.", "placeholders": { - "serverUrl": { - "type": "String", - "example": "https://chat.example.com" - }, - "error": { - "type": "String", - "example": "Unexpected null value" - }, - "event": { - "type": "String", - "example": "UpdateMessageEvent(id: 123, messageIds: [2345, 3456], newTopic: 'dinner')" + "messageId": { + "example": "1234", + "type": "int" } } }, - "errorSharingFailed": "Udostępnianie bez powodzenia", - "@errorSharingFailed": { - "description": "Error message when sharing a message failed." + "@composeBoxSelfDmContentHint": { + "description": "Hint text for content input when sending a message to yourself." }, - "errorStarMessageFailedTitle": "Dodanie gwiazdki bez powodzenia", - "@errorStarMessageFailedTitle": { - "description": "Error title when starring a message failed." + "@composeBoxSendTooltip": { + "description": "Tooltip for send button in compose box." }, - "errorUnstarMessageFailedTitle": "Odebranie gwiazdki bez powodzenia", - "@errorUnstarMessageFailedTitle": { - "description": "Error title when unstarring a message failed." + "@composeBoxTopicHintText": { + "description": "Hint text for topic input widget in compose box." }, - "successLinkCopied": "Skopiowano odnośnik", - "@successLinkCopied": { - "description": "Success message after copy link action completed." + "@composeBoxUploadingFilename": { + "description": "Placeholder in compose box showing the specified file is currently uploading.", + "placeholders": { + "filename": { + "example": "file.txt", + "type": "String" + } + } }, - "successMessageTextCopied": "Skopiowano tekst wiadomości", - "@successMessageTextCopied": { - "description": "Message when content of a message was copied to the user's system clipboard." + "@contentValidationErrorEmpty": { + "description": "Content validation error message when the message is empty." }, - "successMessageLinkCopied": "Skopiowano odnośnik wiadomości", - "@successMessageLinkCopied": { - "description": "Message when link of a message was copied to the user's system clipboard." + "@contentValidationErrorQuoteAndReplyInProgress": { + "description": "Content validation error message when a quotation has not completed yet." }, - "errorBannerCannotPostInChannelLabel": "Nie masz uprawnień do dodawania wpisów w tym kanale.", - "@errorBannerCannotPostInChannelLabel": { - "description": "Error-banner text replacing the compose box when you do not have permission to send a message to the channel." + "@contentValidationErrorTooLong": { + "description": "Content validation error message when the message is too long." }, - "composeBoxAttachFilesTooltip": "Dołącz pliki", - "@composeBoxAttachFilesTooltip": { - "description": "Tooltip for compose box icon to attach a file to the message." + "@contentValidationErrorUploadInProgress": { + "description": "Content validation error message when attachments have not finished uploading." }, - "composeBoxAttachMediaTooltip": "Dołącz obrazy lub wideo", - "@composeBoxAttachMediaTooltip": { - "description": "Tooltip for compose box icon to attach media to the message." - }, - "composeBoxAttachFromCameraTooltip": "Zrób zdjęcie", - "@composeBoxAttachFromCameraTooltip": { - "description": "Tooltip for compose box icon to attach an image from the camera to the message." - }, - "composeBoxGenericContentHint": "Wpisz wiadomość", - "@composeBoxGenericContentHint": { - "description": "Hint text for content input when sending a message." + "@dialogCancel": { + "description": "Button label in dialogs to cancel." }, - "composeBoxDmContentHint": "Napisz do @{user}", - "@composeBoxDmContentHint": { - "description": "Hint text for content input when sending a message to one other person.", - "placeholders": { - "user": { - "type": "String", - "example": "channel name" - } - } + "@dialogClose": { + "description": "Button label in dialogs to close." }, - "composeBoxGroupDmContentHint": "Napisz do grupy", - "@composeBoxGroupDmContentHint": { - "description": "Hint text for content input when sending a message to a group." + "@dialogContinue": { + "description": "Button label in dialogs to proceed." }, - "composeBoxSelfDmContentHint": "Zanotuj coś na przyszłość", - "@composeBoxSelfDmContentHint": { - "description": "Hint text for content input when sending a message to yourself." + "@discardDraftConfirmationDialogConfirmButton": { + "description": "Label for the 'Discard' button on a confirmation dialog for discarding message text that was typed into the compose box." }, - "composeBoxTopicHintText": "Wątek", - "@composeBoxTopicHintText": { - "description": "Hint text for topic input widget in compose box." + "@discardDraftConfirmationDialogTitle": { + "description": "Title for a confirmation dialog for discarding message text that was typed into the compose box." }, - "composeBoxUploadingFilename": "Przekazywanie {filename}…", - "@composeBoxUploadingFilename": { - "description": "Placeholder in compose box showing the specified file is currently uploading.", - "placeholders": { - "filename": { - "type": "String", - "example": "file.txt" - } - } + "@discardDraftForEditConfirmationDialogMessage": { + "description": "Message for a confirmation dialog for discarding message text that was typed into the compose box, when editing a message." }, - "unknownUserName": "(nieznany użytkownik)", - "@unknownUserName": { - "description": "Name placeholder to use for a user when we don't know their name." + "@discardDraftForOutboxConfirmationDialogMessage": { + "description": "Message for a confirmation dialog when restoring an outbox message, for discarding message text that was typed into the compose box." }, - "messageListGroupYouAndOthers": "Ty i {others}", - "@messageListGroupYouAndOthers": { - "description": "Message list recipient header for a DM group with others.", + "@dmsWithOthersPageTitle": { + "description": "Message list page title for a DM group with others.", "placeholders": { "others": { - "type": "String", - "example": "Alice, Bob" + "example": "Alice, Bob", + "type": "String" } } }, - "contentValidationErrorTooLong": "Wiadomość nie może być dłuższa niż 10000 znaków.", - "@contentValidationErrorTooLong": { - "description": "Content validation error message when the message is too long." - }, - "dialogCancel": "Anuluj", - "@dialogCancel": { - "description": "Button label in dialogs to cancel." - }, - "dialogContinue": "Kontynuuj", - "@dialogContinue": { - "description": "Button label in dialogs to proceed." + "@dmsWithYourselfPageTitle": { + "description": "Message list page title for a DM group that only includes yourself." }, - "errorDialogTitle": "Błąd", - "@errorDialogTitle": { - "description": "Generic title for error dialog." + "@editAlreadyInProgressMessage": { + "description": "Error message when a message edit cannot be saved because there is another edit already in progress." }, - "snackBarDetails": "Szczegóły", - "@snackBarDetails": { - "description": "Button label for snack bar button that opens a dialog with more details." + "@editAlreadyInProgressTitle": { + "description": "Error title when a message edit cannot be saved because there is another edit already in progress." }, - "lightboxCopyLinkTooltip": "Skopiuj odnośnik", - "@lightboxCopyLinkTooltip": { - "description": "Tooltip in lightbox for the copy link action." + "@emojiPickerSearchEmoji": { + "description": "Hint text for the emoji picker search text field." }, - "loginPageTitle": "Zaloguj", - "@loginPageTitle": { - "description": "Title for login page." + "@emojiReactionsMore": { + "description": "Label for a button opening the emoji picker." }, - "loginFormSubmitLabel": "Zaloguj", - "@loginFormSubmitLabel": { - "description": "Button text to submit login credentials." + "@emptyMessageList": { + "description": "Placeholder for some message-list pages when there are no messages." }, - "loginMethodDivider": "LUB", - "@loginMethodDivider": { - "description": "Text on the divider between the username/password form and the third-party login options. Uppercase (for languages with letter case)." + "@emptyMessageListSearch": { + "description": "Placeholder for the 'Search' page when there are no messages." }, - "signInWithFoo": "Logowanie z {method}", - "@signInWithFoo": { - "description": "Button to use {method} to sign in to the app.", + "@errorAccountLoggedIn": { + "description": "Error message on attempting to log into an account that's already logged in.", "placeholders": { - "method": { - "type": "String", - "example": "Google" + "email": { + "example": "user@example.com", + "type": "String" + }, + "server": { + "example": "https://example.com", + "type": "String" } } }, - "loginAddAnAccountPageTitle": "Dodaj konto", - "@loginAddAnAccountPageTitle": { - "description": "Title for page to add a Zulip account." - }, - "loginServerUrlLabel": "URL serwera Zulip", - "@loginServerUrlLabel": { - "description": "Label in login page for Zulip server URL entry." + "@errorAccountLoggedInTitle": { + "description": "Error title on attempting to log into an account that's already logged in." }, - "loginHidePassword": "Ukryj hasło", - "@loginHidePassword": { - "description": "Icon label for button to hide password in input form." + "@errorBannerCannotPostInChannelLabel": { + "description": "Error-banner text replacing the compose box when you do not have permission to send a message to the channel." }, - "loginEmailLabel": "Adres email", - "@loginEmailLabel": { - "description": "Label for input when an email is required to log in." + "@errorBannerDeactivatedDmLabel": { + "description": "Label text for error banner when sending a message to one or multiple deactivated users." }, - "loginErrorMissingEmail": "Proszę podaj swój email.", - "@loginErrorMissingEmail": { - "description": "Error message when an empty email was provided." + "@errorConnectingToServerDetails": { + "description": "Dialog error message for a generic unknown error connecting to the server with details.", + "placeholders": { + "error": { + "example": "Invalid format", + "type": "String" + }, + "serverUrl": { + "example": "http://example.com/", + "type": "String" + } + } }, - "loginPasswordLabel": "Hasło", - "@loginPasswordLabel": { - "description": "Label for password input field." + "@errorConnectingToServerShort": { + "description": "Short error message for a generic unknown error connecting to the server." }, - "loginErrorMissingPassword": "Proszę wprowadź hasło.", - "@loginErrorMissingPassword": { - "description": "Error message when an empty password was provided." + "@errorCopyingFailed": { + "description": "Error message when copying the text of a message to the user's system clipboard failed." }, - "loginUsernameLabel": "Użytkownik", - "@loginUsernameLabel": { - "description": "Label for input when a username is required to log in." + "@errorCouldNotConnectTitle": { + "description": "Error title when the app could not connect to the server." }, - "loginErrorMissingUsername": "Proszę podaj nazwę użytkownika.", - "@loginErrorMissingUsername": { - "description": "Error message when an empty username was provided." + "@errorCouldNotEditMessageTitle": { + "description": "Error title when an exception prevented us from opening the compose box for editing a message." }, - "topicValidationErrorMandatoryButEmpty": "Wątki są wymagane przez tę organizację.", - "@topicValidationErrorMandatoryButEmpty": { - "description": "Topic validation error when topic is required but was empty." + "@errorCouldNotFetchMessageSource": { + "description": "Error message when the source of a message could not be fetched." }, - "errorInvalidResponse": "Nieprawidłowa odpowiedź serwera.", - "@errorInvalidResponse": { - "description": "Error message when an API call returned an invalid response." + "@errorCouldNotOpenLink": { + "description": "Error message when opening a link failed.", + "placeholders": { + "url": { + "example": "https://chat.example.com", + "type": "String" + } + } }, - "errorVideoPlayerFailed": "Nie da rady odtworzyć wideo.", - "@errorVideoPlayerFailed": { - "description": "Error message when a video fails to play." + "@errorCouldNotOpenLinkTitle": { + "description": "Error title when opening a link failed." }, - "serverUrlValidationErrorEmpty": "Proszę podaj URL.", - "@serverUrlValidationErrorEmpty": { - "description": "Error message when URL is empty" + "@errorCouldNotShowUserProfile": { + "description": "Message that appears on the user profile page when the profile cannot be shown." }, - "serverUrlValidationErrorInvalidUrl": "Proszę podaj poprawny URL.", - "@serverUrlValidationErrorInvalidUrl": { - "description": "Error message when URL is not in a valid format." + "@errorDialogContinue": { + "description": "Button label in error dialogs to acknowledge the error and close the dialog." }, - "serverUrlValidationErrorNoUseEmail": "Proszę podaj adres URL serwera a nie swój email.", - "@serverUrlValidationErrorNoUseEmail": { - "description": "Error message when URL looks like an email" + "@errorDialogLearnMore": { + "description": "Button label in error dialogs to open a web page with more information." }, - "spoilerDefaultHeaderText": "Spoiler", - "@spoilerDefaultHeaderText": { - "description": "The default header text in a spoiler block ( https://zulip.com/help/spoilers )." + "@errorDialogTitle": { + "description": "Generic title for error dialog." }, - "markAllAsReadLabel": "Oznacz wszystkie jako przeczytane", - "@markAllAsReadLabel": { - "description": "Button text to mark messages as read." + "@errorFailedToUploadFileTitle": { + "description": "Error title when the specified file failed to upload.", + "placeholders": { + "filename": { + "example": "file.txt", + "type": "String" + } + } }, - "markAsReadComplete": "Oznaczono {num, plural, =1{1 wiadomość} other{{num} wiadomości}} jako przeczytane.", - "@markAsReadComplete": { - "description": "Message when marking messages as read has completed.", + "@errorFilesTooLarge": { + "description": "Error message when attached files are too large in size.", "placeholders": { + "listMessage": { + "example": "foo.txt\nbar.txt", + "type": "String" + }, + "maxFileUploadSizeMib": { + "example": "15", + "type": "int" + }, "num": { - "type": "int", - "example": "4" + "example": "2", + "type": "int" } } }, - "topicValidationErrorTooLong": "Tytuł nie może być dłuższy niż 60 znaków.", - "@topicValidationErrorTooLong": { - "description": "Topic validation error when topic is too long." - }, - "errorMalformedResponse": "Zdeforomowana odpowiedź serwera; status HTTP {httpStatus}", - "@errorMalformedResponse": { - "description": "Error message when an API call fails because we could not parse the response.", + "@errorFilesTooLargeTitle": { + "description": "Error title when attached files are too large in size.", "placeholders": { - "httpStatus": { - "type": "int", - "example": "200" + "num": { + "example": "4", + "type": "int" } } }, - "errorRequestFailed": "Błąd uzyskania sieci: status HTTP {httpStatus}", - "@errorRequestFailed": { - "description": "Error message when an API call fails.", + "@errorFollowTopicFailed": { + "description": "Error message when following a topic failed." + }, + "@errorHandlingEventDetails": { + "description": "Error details on failing to handle a Zulip server event.", "placeholders": { - "httpStatus": { - "type": "int", - "example": "500" + "error": { + "example": "Unexpected null value", + "type": "String" + }, + "event": { + "example": "UpdateMessageEvent(id: 123, messageIds: [2345, 3456], newTopic: 'dinner')", + "type": "String" + }, + "serverUrl": { + "example": "https://chat.example.com", + "type": "String" } } }, - "errorMarkAsReadFailedTitle": "Oznaczanie jako przeczytane bez powodzenia", - "@errorMarkAsReadFailedTitle": { - "description": "Error title when mark as read action failed." + "@errorHandlingEventTitle": { + "description": "Error title on failing to handle a Zulip server event." }, - "markAsUnreadInProgress": "Oznaczanie jako nieprzeczytane…", - "@markAsUnreadInProgress": { - "description": "Progress message when marking messages as unread." + "@errorInvalidApiKeyMessage": { + "description": "Error message in the dialog for invalid API key.", + "placeholders": { + "url": { + "example": "http://chat.example.com/", + "type": "String" + } + } }, - "errorMarkAsUnreadFailedTitle": "Oznaczanie jako nieprzeczytane bez powodzenia", - "@errorMarkAsUnreadFailedTitle": { - "description": "Error title when mark as unread action failed." + "@errorInvalidResponse": { + "description": "Error message when an API call returned an invalid response." }, - "today": "Dzisiaj", - "@today": { - "description": "Term to use to reference the current day." - }, - "yesterday": "Wczoraj", - "@yesterday": { - "description": "Term to use to reference the previous day." - }, - "userRoleOwner": "Właściciel", - "@userRoleOwner": { - "description": "Label for UserRole.owner" - }, - "userRoleAdministrator": "Administrator", - "@userRoleAdministrator": { - "description": "Label for UserRole.administrator" - }, - "userRoleMember": "Członek", - "@userRoleMember": { - "description": "Label for UserRole.member" - }, - "userRoleGuest": "Gość", - "@userRoleGuest": { - "description": "Label for UserRole.guest" - }, - "userRoleUnknown": "Nieznany", - "@userRoleUnknown": { - "description": "Label for UserRole.unknown" - }, - "recentDmConversationsPageTitle": "Wiadomości bezpośrednie", - "@recentDmConversationsPageTitle": { - "description": "Title for the page with a list of DM conversations." - }, - "combinedFeedPageTitle": "Mieszany widok", - "@combinedFeedPageTitle": { - "description": "Page title for the 'Combined feed' message view." - }, - "starredMessagesPageTitle": "Wiadomości z gwiazdką", - "@starredMessagesPageTitle": { - "description": "Page title for the 'Starred messages' message view." - }, - "channelFeedButtonTooltip": "Strumień kanału", - "@channelFeedButtonTooltip": { - "description": "Tooltip for button to navigate to a given channel's feed" - }, - "notifGroupDmConversationLabel": "{senderFullName} do ciebie i {numOthers, plural, =1{1 innego} other{{numOthers} innych}}", - "@notifGroupDmConversationLabel": { - "description": "Label for a group DM conversation notification.", + "@errorLoginCouldNotConnect": { + "description": "Error message when the app could not connect to the server.", "placeholders": { - "senderFullName": { - "type": "String", - "example": "Alice" - }, - "numOthers": { - "type": "int", - "example": "4" + "url": { + "example": "http://example.com/", + "type": "String" } } }, - "notifSelfUser": "Ty", - "@notifSelfUser": { - "description": "Display name for the user themself, to show after replying in an Android notification" + "@errorLoginFailedTitle": { + "description": "Error title for login when signing into a Zulip server fails." }, - "onePersonTyping": "{typist} coś pisze…", - "@onePersonTyping": { - "description": "Text to display when there is one user typing.", + "@errorLoginInvalidInputTitle": { + "description": "Error title for login when input is invalid." + }, + "@errorMalformedResponse": { + "description": "Error message when an API call fails because we could not parse the response.", "placeholders": { - "typist": { - "type": "String", - "example": "Alice" + "httpStatus": { + "example": "200", + "type": "int" } } }, - "twoPeopleTyping": "{typist} i {otherTypist} coś piszą…", - "@twoPeopleTyping": { - "description": "Text to display when there are two users typing.", + "@errorMalformedResponseWithCause": { + "description": "Error message when an API call fails because we could not parse the response, with details of the failure.", "placeholders": { - "typist": { - "type": "String", - "example": "Alice" + "details": { + "example": "type 'Null' is not a subtype of type 'String' in type cast", + "type": "String" }, - "otherTypist": { - "type": "String", - "example": "Bob" + "httpStatus": { + "example": "200", + "type": "int" } } }, - "manyPeopleTyping": "Wielu ludzi coś pisze…", - "@manyPeopleTyping": { - "description": "Text to display when there are multiple users typing." - }, - "messageIsEditedLabel": "ZMIENIONO", - "@messageIsEditedLabel": { - "description": "Label for an edited message. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" - }, - "pollWidgetQuestionMissing": "Brak pytania.", - "@pollWidgetQuestionMissing": { - "description": "Text to display for a poll when the question is missing" - }, - "pollWidgetOptionsMissing": "Ta sonda nie ma opcji do wyboru.", - "@pollWidgetOptionsMissing": { - "description": "Text to display for a poll when it has no options" - }, - "errorNotificationOpenTitle": "Otwieranie powiadomienia bez powodzenia", - "@errorNotificationOpenTitle": { - "description": "Error title when notification opening fails" - }, - "aboutPageOpenSourceLicenses": "Licencje otwartego źródła", - "@aboutPageOpenSourceLicenses": { - "description": "Item title in About Zulip page to navigate to Licenses page" + "@errorMarkAsReadFailedTitle": { + "description": "Error title when mark as read action failed." }, - "serverUrlValidationErrorUnsupportedScheme": "Adres URL serwera musi zaczynać się od http:// or https://.", - "@serverUrlValidationErrorUnsupportedScheme": { - "description": "Error message when URL has an unsupported scheme." + "@errorMarkAsUnreadFailedTitle": { + "description": "Error title when mark as unread action failed." }, - "errorMessageDoesNotSeemToExist": "Taka wiadomość raczej nie istnieje.", "@errorMessageDoesNotSeemToExist": { "description": "Error message when loading a message that does not exist." }, - "chooseAccountPageTitle": "Wybierz konto", - "@chooseAccountPageTitle": { - "description": "Title for the page to choose between Zulip accounts." + "@errorMessageEditNotSaved": { + "description": "Error message for compose box when a message edit could not be saved." }, - "chooseAccountPageLogOutButton": "Wyloguj", - "@chooseAccountPageLogOutButton": { - "description": "Label for the 'Log out' button for an account on the choose-account page" + "@errorMessageNotSent": { + "description": "Error message for compose box when a message could not be sent." }, - "composeBoxSendTooltip": "Wyślij", - "@composeBoxSendTooltip": { - "description": "Tooltip for send button in compose box." + "@errorMuteTopicFailed": { + "description": "Error message when muting a topic failed." }, - "messageListGroupYouWithYourself": "Zapiski na własne konto", - "@messageListGroupYouWithYourself": { - "description": "Message list recipient header for a DM group that only includes yourself." + "@errorNetworkRequestFailed": { + "description": "Error message when a network request fails." }, - "logOutConfirmationDialogTitle": "Wylogować?", - "@logOutConfirmationDialogTitle": { - "description": "Title for a confirmation dialog for logging out." + "@errorNotificationOpenAccountNotFound": { + "description": "Error message when the account associated with the notification could not be found" }, - "aboutPageTitle": "O Zulip", - "@aboutPageTitle": { - "description": "Title for About Zulip page." + "@errorNotificationOpenTitle": { + "description": "Error title when notification opening fails" }, - "contentValidationErrorEmpty": "Nie masz nic do wysłania!", - "@contentValidationErrorEmpty": { - "description": "Content validation error message when the message is empty." + "@errorQuotationFailed": { + "description": "Error message when quoting a message failed." }, - "errorDialogContinue": "OK", - "@errorDialogContinue": { - "description": "Button label in error dialogs to acknowledge the error and close the dialog." + "@errorReactionAddingFailedTitle": { + "description": "Error title when adding a message reaction fails" }, - "errorFailedToUploadFileTitle": "Nie udało się załadować pliku: {filename}", - "@errorFailedToUploadFileTitle": { - "description": "Error title when the specified file failed to upload.", - "placeholders": { - "filename": { - "type": "String", - "example": "file.txt" - } - } + "@errorReactionRemovingFailedTitle": { + "description": "Error title when removing a message reaction fails" }, - "errorMalformedResponseWithCause": "Zdeformowana odpowiedź serwera; status HTTP {httpStatus}; {details}", - "@errorMalformedResponseWithCause": { - "description": "Error message when an API call fails because we could not parse the response, with details of the failure.", + "@errorRequestFailed": { + "description": "Error message when an API call fails.", "placeholders": { "httpStatus": { - "type": "int", - "example": "200" - }, - "details": { - "type": "String", - "example": "type 'Null' is not a subtype of type 'String' in type cast" + "example": "500", + "type": "int" } } }, - "errorQuotationFailed": "Cytowanie bez powodzenia", - "@errorQuotationFailed": { - "description": "Error message when quoting a message failed." - }, - "errorBannerDeactivatedDmLabel": "Nie można wysyłać wiadomości do dezaktywowanych użytkowników.", - "@errorBannerDeactivatedDmLabel": { - "description": "Label text for error banner when sending a message to one or multiple deactivated users." - }, - "contentValidationErrorUploadInProgress": "Zaczekaj na zakończenie przekazywania.", - "@contentValidationErrorUploadInProgress": { - "description": "Content validation error message when attachments have not finished uploading." + "@errorResolveTopicFailedTitle": { + "description": "Error title when marking a topic as resolved failed." }, - "messageIsMovedLabel": "PRZENIESIONO", - "@messageIsMovedLabel": { - "description": "Label for a moved message. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + "@errorServerMessage": { + "description": "Error message that quotes an error from the server.", + "placeholders": { + "message": { + "example": "Invalid format", + "type": "String" + } + } }, - "markAsUnreadComplete": "Oznaczono {num, plural, =1{1 wiadomość} other{{num} wiadomości}} jako nieprzeczytane.", - "@markAsUnreadComplete": { - "description": "Message when marking messages as unread has completed.", + "@errorServerVersionUnsupportedMessage": { + "description": "Error message in the dialog for when the Zulip Server version is unsupported.", "placeholders": { - "num": { - "type": "int", - "example": "4" + "minSupportedZulipVersion": { + "example": "4.0", + "type": "String" + }, + "url": { + "example": "http://chat.example.com/", + "type": "String" + }, + "zulipVersion": { + "example": "3.2", + "type": "String" } } }, - "contentValidationErrorQuoteAndReplyInProgress": "Zaczekaj na zakończenie pobierania cytatu.", - "@contentValidationErrorQuoteAndReplyInProgress": { - "description": "Content validation error message when a quotation has not completed yet." + "@errorSharingFailed": { + "description": "Error message when sharing a message failed." }, - "errorNetworkRequestFailed": "Dostęp do sieci bez powodzenia", - "@errorNetworkRequestFailed": { - "description": "Error message when a network request fails." + "@errorStarMessageFailedTitle": { + "description": "Error title when starring a message failed." }, - "markAsReadInProgress": "Oznaczanie wiadomości jako przeczytane…", - "@markAsReadInProgress": { - "description": "Progress message when marking messages as read." + "@errorUnfollowTopicFailed": { + "description": "Error message when unfollowing a topic failed." }, - "mentionsPageTitle": "Wzmianki", - "@mentionsPageTitle": { - "description": "Page title for the 'Mentions' message view." + "@errorUnmuteTopicFailed": { + "description": "Error message when unmuting a topic failed." }, - "userRoleModerator": "Moderator", - "@userRoleModerator": { - "description": "Label for UserRole.moderator" + "@errorUnresolveTopicFailedTitle": { + "description": "Error title when marking a topic as unresolved failed." }, - "actionSheetOptionMuteTopic": "Wycisz wątek", - "@actionSheetOptionMuteTopic": { - "description": "Label for muting a topic on action sheet." + "@errorUnstarMessageFailedTitle": { + "description": "Error title when unstarring a message failed." }, - "actionSheetOptionUnmuteTopic": "Wznów wątek", - "@actionSheetOptionUnmuteTopic": { - "description": "Label for unmuting a topic on action sheet." + "@errorVideoPlayerFailed": { + "description": "Error message when a video fails to play." }, - "actionSheetOptionFollowTopic": "Śledź wątek", - "@actionSheetOptionFollowTopic": { - "description": "Label for following a topic on action sheet." + "@errorWebAuthOperationalError": { + "description": "Error message when third-party authentication has an operational error (not necessarily caused by invalid credentials)." }, - "actionSheetOptionUnfollowTopic": "Nie śledź wątku", - "@actionSheetOptionUnfollowTopic": { - "description": "Label for unfollowing a topic on action sheet." + "@errorWebAuthOperationalErrorTitle": { + "description": "Error title when third-party authentication has an operational error (not necessarily caused by invalid credentials)." }, - "switchAccountButton": "Przełącz konto", - "@switchAccountButton": { - "description": "Label for main-menu button leading to the choose-account page." + "@experimentalFeatureSettingsPageTitle": { + "description": "Title of settings page for experimental, in-development features" }, - "tryAnotherAccountMessage": "Twoje konto na {url} wymaga jeszcze chwili na załadowanie.", - "@tryAnotherAccountMessage": { - "description": "Message that appears on the loading screen after waiting for some time.", - "url": { - "type": "String", - "example": "http://chat.example.com/" - } + "@experimentalFeatureSettingsWarning": { + "description": "Warning text on settings page for experimental, in-development features" }, - "tryAnotherAccountButton": "Użyj innego konta", - "@tryAnotherAccountButton": { - "description": "Label for loading screen button prompting user to try another account." + "@filenameAndSizeInMiB": { + "description": "The name of a file, and its size in mebibytes.", + "placeholders": { + "filename": { + "example": "foo.txt", + "type": "String" + }, + "size": { + "example": "20.2", + "type": "String" + } + } }, - "errorFollowTopicFailed": "Śledzenie bez powodzenia", - "@errorFollowTopicFailed": { - "description": "Error message when following a topic failed." + "@inboxEmptyPlaceholder": { + "description": "Centered text on the 'Inbox' page saying that there is no content to show." }, - "inboxPageTitle": "Odebrane", "@inboxPageTitle": { "description": "Title for the page with unreads." }, - "channelsPageTitle": "Kanały", - "@channelsPageTitle": { - "description": "Title for the page with a list of subscribed channels." - }, - "emojiReactionsMore": "więcej", - "@emojiReactionsMore": { - "description": "Label for a button opening the emoji picker." + "@initialAnchorSettingDescription": { + "description": "Description of setting controlling initial anchor of message list." }, - "emojiPickerSearchEmoji": "Szukaj emoji", - "@emojiPickerSearchEmoji": { - "description": "Hint text for the emoji picker search text field." + "@initialAnchorSettingFirstUnreadAlways": { + "description": "Label for a value of setting controlling initial anchor of message list." }, - "dialogClose": "Zamknij", - "@dialogClose": { - "description": "Button label in dialogs to close." + "@initialAnchorSettingFirstUnreadConversations": { + "description": "Label for a value of setting controlling initial anchor of message list." }, - "errorReactionRemovingFailedTitle": "Usuwanie reakcji bez powodzenia", - "@errorReactionRemovingFailedTitle": { - "description": "Error title when removing a message reaction fails" + "@initialAnchorSettingNewestAlways": { + "description": "Label for a value of setting controlling initial anchor of message list." }, - "errorReactionAddingFailedTitle": "Dodanie reakcji bez powodzenia", - "@errorReactionAddingFailedTitle": { - "description": "Error title when adding a message reaction fails" + "@initialAnchorSettingTitle": { + "description": "Title of setting controlling initial anchor of message list." }, - "errorMuteTopicFailed": "Wyciszenie bez powodzenia", - "@errorMuteTopicFailed": { - "description": "Error message when muting a topic failed." + "@invisibleMode": { + "description": "Label for the 'Invisible mode' switch on the profile page." }, - "mainMenuMyProfile": "Mój profil", - "@mainMenuMyProfile": { - "description": "Label for main-menu button leading to the user's own profile." + "@lightboxCopyLinkTooltip": { + "description": "Tooltip in lightbox for the copy link action." }, - "errorUnfollowTopicFailed": "Nie śledź bez powodzenia", - "@errorUnfollowTopicFailed": { - "description": "Error message when unfollowing a topic failed." + "@lightboxVideoCurrentPosition": { + "description": "The current playback position of the video playing in the lightbox." }, - "errorUnmuteTopicFailed": "Wznowienie bez powodzenia", - "@errorUnmuteTopicFailed": { - "description": "Error message when unmuting a topic failed." + "@lightboxVideoDuration": { + "description": "The total duration of the video playing in the lightbox." }, - "wildcardMentionAll": "wszyscy", - "@wildcardMentionAll": { - "description": "Text for \"@all\" wildcard-mention autocomplete option when writing a channel or DM message." + "@logOutConfirmationDialogConfirmButton": { + "description": "Label for the 'Log out' button on a confirmation dialog for logging out." }, - "wildcardMentionStream": "strumień", - "@wildcardMentionStream": { - "description": "Text for \"@stream\" wildcard-mention autocomplete option when writing a channel message in older servers." + "@logOutConfirmationDialogMessage": { + "description": "Message for a confirmation dialog for logging out." }, - "wildcardMentionEveryone": "każdy", - "@wildcardMentionEveryone": { - "description": "Text for \"@everyone\" wildcard-mention autocomplete option when writing a channel or DM message." + "@logOutConfirmationDialogTitle": { + "description": "Title for a confirmation dialog for logging out." }, - "wildcardMentionChannel": "kanał", - "@wildcardMentionChannel": { - "description": "Text for \"@channel\" wildcard-mention autocomplete option when writing a channel message." + "@loginAddAnAccountPageTitle": { + "description": "Title for page to add a Zulip account." }, - "wildcardMentionTopic": "wątek", - "@wildcardMentionTopic": { - "description": "Text for \"@topic\" wildcard-mention autocomplete option when writing a channel message." + "@loginEmailLabel": { + "description": "Label for input when an email is required to log in." }, - "wildcardMentionTopicDescription": "Powiadom w wątku", - "@wildcardMentionTopicDescription": { - "description": "Description for \"@topic\" wildcard-mention autocomplete options when writing a channel message." + "@loginErrorMissingEmail": { + "description": "Error message when an empty email was provided." }, - "wildcardMentionAllDmDescription": "Powiadom zainteresowanych", - "@wildcardMentionAllDmDescription": { - "description": "Description for \"@all\" and \"@everyone\" wildcard-mention autocomplete options when writing a DM message." + "@loginErrorMissingPassword": { + "description": "Error message when an empty password was provided." }, - "wildcardMentionStreamDescription": "Powiadom w strumieniu", - "@wildcardMentionStreamDescription": { - "description": "Description for \"@all\", \"@everyone\", and \"@stream\" wildcard-mention autocomplete options when writing a channel message in older servers." + "@loginErrorMissingUsername": { + "description": "Error message when an empty username was provided." }, - "wildcardMentionChannelDescription": "Powiadom w kanale", - "@wildcardMentionChannelDescription": { - "description": "Description for \"@all\", \"@everyone\", \"@channel\", and \"@stream\" wildcard-mention autocomplete options when writing a channel message." + "@loginFormSubmitLabel": { + "description": "Button text to submit login credentials." }, - "errorCouldNotShowUserProfile": "Nie udało się wyświetlić profilu.", - "@errorCouldNotShowUserProfile": { - "description": "Message that appears on the user profile page when the profile cannot be shown." + "@loginHidePassword": { + "description": "Icon label for button to hide password in input form." }, - "errorCouldNotOpenLinkTitle": "Nie udało się otworzyć odnośnika", - "@errorCouldNotOpenLinkTitle": { - "description": "Error title when opening a link failed." + "@loginMethodDivider": { + "description": "Text on the divider between the username/password form and the third-party login options. Uppercase (for languages with letter case)." }, - "errorCouldNotOpenLink": "Nie można otworzyć: {url}", - "@errorCouldNotOpenLink": { - "description": "Error message when opening a link failed.", - "placeholders": { - "url": { - "type": "String", - "example": "https://chat.example.com" - } - } + "@loginPageTitle": { + "description": "Title for login page." }, - "dmsWithYourselfPageTitle": "DM do siebie", - "@dmsWithYourselfPageTitle": { - "description": "Message list page title for a DM group that only includes yourself." + "@loginPasswordLabel": { + "description": "Label for password input field." }, - "dmsWithOthersPageTitle": "DM z {others}", - "@dmsWithOthersPageTitle": { - "description": "Message list page title for a DM group with others.", - "placeholders": { - "others": { - "type": "String", - "example": "Alice, Bob" - } - } + "@loginServerUrlLabel": { + "description": "Label in login page for Zulip server URL entry." }, - "lightboxVideoCurrentPosition": "Obecna pozycja", - "@lightboxVideoCurrentPosition": { - "description": "The current playback position of the video playing in the lightbox." + "@loginUsernameLabel": { + "description": "Label for input when a username is required to log in." }, - "lightboxVideoDuration": "Długość wideo", - "@lightboxVideoDuration": { - "description": "The total duration of the video playing in the lightbox." + "@mainMenuMyProfile": { + "description": "Label for main-menu button leading to the user's own profile." }, - "recentDmConversationsSectionHeader": "Wiadomości bezpośrednie", - "@recentDmConversationsSectionHeader": { - "description": "Heading for direct messages section on the 'Inbox' message view." + "@manyPeopleTyping": { + "description": "Text to display when there are multiple users typing." }, - "reactedEmojiSelfUser": "Ty", - "@reactedEmojiSelfUser": { - "description": "Display name for the user themself, to show on an emoji reaction added by the user." + "@markAllAsReadLabel": { + "description": "Button text to mark messages as read." }, - "pollVoterNames": "({voterNames})", - "@pollVoterNames": { - "description": "The list of people who voted for a poll option, wrapped in parentheses.", + "@markAsReadComplete": { + "description": "Message when marking messages as read has completed.", "placeholders": { - "voterNames": { - "type": "String", - "example": "Alice, Bob, Chad" + "num": { + "example": "4", + "type": "int" } } }, - "noEarlierMessages": "Brak historii", - "@noEarlierMessages": { - "description": "Text to show at the start of a message list if there are no earlier messages." - }, - "scrollToBottomTooltip": "Przewiń do dołu", - "@scrollToBottomTooltip": { - "description": "Tooltip for button to scroll to bottom." + "@markAsReadInProgress": { + "description": "Progress message when marking messages as read." }, - "composeBoxLoadingMessage": "(ładowanie wiadomości {messageId})", - "@composeBoxLoadingMessage": { - "description": "Placeholder in compose box showing the quoted message is currently loading.", + "@markAsUnreadComplete": { + "description": "Message when marking messages as unread has completed.", "placeholders": { - "messageId": { - "type": "int", - "example": "1234" + "num": { + "example": "4", + "type": "int" } } }, - "pinnedSubscriptionsLabel": "Przypięte", - "@pinnedSubscriptionsLabel": { - "description": "Label for the list of pinned subscribed channels." + "@markAsUnreadInProgress": { + "description": "Progress message when marking messages as unread." }, - "unknownChannelName": "(nieznany kanał)", - "@unknownChannelName": { - "description": "Replacement name for channel when it cannot be found in the store." + "@markReadOnScrollSettingAlways": { + "description": "Label for a value of setting controlling which message-list views should mark read on scroll." }, - "unpinnedSubscriptionsLabel": "Odpięte", - "@unpinnedSubscriptionsLabel": { - "description": "Label for the list of unpinned subscribed channels." + "@markReadOnScrollSettingConversations": { + "description": "Label for a value of setting controlling which message-list views should mark read on scroll." }, - "actionSheetOptionResolveTopic": "Oznacz jako rozwiązany", - "@actionSheetOptionResolveTopic": { - "description": "Label for the 'Mark as resolved' button on the topic action sheet." + "@markReadOnScrollSettingConversationsDescription": { + "description": "Description for a value of setting controlling which message-list views should mark read on scroll." }, - "actionSheetOptionUnresolveTopic": "Oznacz brak rozwiązania", - "@actionSheetOptionUnresolveTopic": { - "description": "Label for the 'Mark as unresolved' button on the topic action sheet." + "@markReadOnScrollSettingDescription": { + "description": "Description of setting controlling which message-list views should mark read on scroll." }, - "errorResolveTopicFailedTitle": "Nie udało się oznaczyć jako rozwiązany", - "@errorResolveTopicFailedTitle": { - "description": "Error title when marking a topic as resolved failed." + "@markReadOnScrollSettingNever": { + "description": "Label for a value of setting controlling which message-list views should mark read on scroll." }, - "errorUnresolveTopicFailedTitle": "Nie udało się oznaczyć brak rozwiązania", - "@errorUnresolveTopicFailedTitle": { - "description": "Error title when marking a topic as unresolved failed." + "@markReadOnScrollSettingTitle": { + "description": "Title of setting controlling which message-list views should mark read on scroll." }, - "appVersionUnknownPlaceholder": "(…)", - "@appVersionUnknownPlaceholder": { - "description": "Placeholder to show in place of the app version when it is unknown." + "@mentionsPageTitle": { + "description": "Page title for the 'Mentions' message view." }, - "zulipAppTitle": "Zulip", - "@zulipAppTitle": { - "description": "The name of Zulip. This should be either 'Zulip' or a transliteration." + "@messageIsEditedLabel": { + "description": "Label for an edited message. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" }, - "filenameAndSizeInMiB": "{filename}: {size} MiB", - "@filenameAndSizeInMiB": { - "description": "The name of a file, and its size in mebibytes.", - "placeholders": { - "filename": { - "type": "String", - "example": "foo.txt" - }, - "size": { - "type": "String", - "example": "20.2" - } - } + "@messageIsMovedLabel": { + "description": "Label for a moved message. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" }, - "errorInvalidApiKeyMessage": "Konto w ramach {url} nie zostało przyjęte. Spróbuj ponownie lub skorzystaj z innego konta.", - "@errorInvalidApiKeyMessage": { - "description": "Error message in the dialog for invalid API key.", + "@messageListGroupYouAndOthers": { + "description": "Message list recipient header for a DM group with others.", "placeholders": { - "url": { - "type": "String", - "example": "http://chat.example.com/" + "others": { + "example": "Alice, Bob", + "type": "String" } } }, - "errorCouldNotConnectTitle": "Brak połączenia", - "@errorCouldNotConnectTitle": { - "description": "Error title when the app could not connect to the server." + "@messageListGroupYouWithYourself": { + "description": "Message list recipient header for a DM group that only includes yourself." }, - "composeBoxChannelContentHint": "Wiadomość do {destination}", - "@composeBoxChannelContentHint": { - "description": "Hint text for content input when sending a message to a channel.", - "placeholders": { - "destination": { - "type": "String", - "example": "#channel name > topic name" - } - } - }, - "actionSheetOptionMarkChannelAsRead": "Oznacz kanał jako przeczytany", - "@actionSheetOptionMarkChannelAsRead": { - "description": "Label for marking a channel as read." - }, - "actionSheetOptionMarkTopicAsRead": "Oznacz wątek jako przeczytany", - "@actionSheetOptionMarkTopicAsRead": { - "description": "Option to mark a specific topic as read in the action sheet." + "@messageNotSentLabel": { + "description": "Text on a message in the message list saying that a send message request failed. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" }, - "themeSettingLight": "Jasny", - "@themeSettingLight": { - "description": "Label for light theme setting." + "@mutedUser": { + "description": "Name for a muted user to display all over the app." }, - "themeSettingSystem": "Systemowy", - "@themeSettingSystem": { - "description": "Label for system theme setting." + "@newDmFabButtonLabel": { + "description": "Label for the floating action button (FAB) that opens the new DM sheet." }, - "themeSettingDark": "Ciemny", - "@themeSettingDark": { - "description": "Label for dark theme setting." + "@newDmSheetComposeButtonLabel": { + "description": "Label for the compose button in the new DM sheet that starts composing a message to the selected users." }, - "themeSettingTitle": "WYSTRÓJ", - "@themeSettingTitle": { - "description": "Title for theme setting. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + "@newDmSheetNoUsersFound": { + "description": "Message shown in the new DM sheet when no users match the search." }, - "settingsPageTitle": "Ustawienia", - "@settingsPageTitle": { - "description": "Title for the settings page." + "@newDmSheetScreenTitle": { + "description": "Title displayed at the top of the new DM screen." }, - "openLinksWithInAppBrowser": "Otwieraj odnośniki w aplikacji", - "@openLinksWithInAppBrowser": { - "description": "Label for toggling setting to open links with in-app browser" + "@newDmSheetSearchHintEmpty": { + "description": "Hint text for the search bar when no users are selected" }, - "experimentalFeatureSettingsPageTitle": "Funkcje eksperymentalne", - "@experimentalFeatureSettingsPageTitle": { - "description": "Title of settings page for experimental, in-development features" + "@newDmSheetSearchHintSomeSelected": { + "description": "Hint text for the search bar when at least one user is selected" }, - "experimentalFeatureSettingsWarning": "W ten sposób aktywujesz funkcje, które są w fazie testów. Mogą one nie działać lub powodować problemy z tym co bez nich działa poprawnie.\n\nTo ustawienie przewidziane jest dla tych, którzy pracują nad ulepszeniem aplikacji Zulip.", - "@experimentalFeatureSettingsWarning": { - "description": "Warning text on settings page for experimental, in-development features" + "@noEarlierMessages": { + "description": "Text to show at the start of a message list if there are no earlier messages." }, - "errorDialogLearnMore": "Dowiedz się więcej", - "@errorDialogLearnMore": { - "description": "Button label in error dialogs to open a web page with more information." + "@noStatusText": { + "description": "The text part of the status button sub-label in self-user profile page when status text is not set." }, - "errorServerVersionUnsupportedMessage": "{url} uruchamia Zulip Server {zulipVersion}, który nie jest obsługiwany. Minimalna obsługiwana wersja to Zulip Server {minSupportedZulipVersion}.", - "@errorServerVersionUnsupportedMessage": { - "description": "Error message in the dialog for when the Zulip Server version is unsupported.", + "@notifGroupDmConversationLabel": { + "description": "Label for a group DM conversation notification.", "placeholders": { - "url": { - "type": "String", - "example": "http://chat.example.com/" - }, - "zulipVersion": { - "type": "String", - "example": "3.2" + "numOthers": { + "example": "4", + "type": "int" }, - "minSupportedZulipVersion": { - "type": "String", - "example": "4.0" + "senderFullName": { + "example": "Alice", + "type": "String" } } }, - "composeBoxEnterTopicOrSkipHintText": "Wpisz tytuł wątku (pomiń aby uzyskać “{defaultTopicName}”)", - "@composeBoxEnterTopicOrSkipHintText": { - "description": "Hint text for topic input widget in compose box when topics are optional.", + "@notifSelfUser": { + "description": "Display name for the user themself, to show after replying in an Android notification" + }, + "@onePersonTyping": { + "description": "Text to display when there is one user typing.", "placeholders": { - "defaultTopicName": { - "type": "String", - "example": "general chat" + "typist": { + "example": "Alice", + "type": "String" } } }, - "actionSheetOptionEditMessage": "Zmień wiadomość", - "@actionSheetOptionEditMessage": { - "description": "Label for the 'Edit message' button in the message action sheet." - }, - "errorMessageEditNotSaved": "Nie zapisano wiadomości", - "@errorMessageEditNotSaved": { - "description": "Error message for compose box when a message edit could not be saved." - }, - "errorCouldNotEditMessageTitle": "Nie można zmienić wiadomości", - "@errorCouldNotEditMessageTitle": { - "description": "Error title when an exception prevented us from opening the compose box for editing a message." + "@openLinksWithInAppBrowser": { + "description": "Label for toggling setting to open links with in-app browser" }, - "composeBoxBannerLabelEditMessage": "Zmień wiadomość", - "@composeBoxBannerLabelEditMessage": { - "description": "Label text for the compose-box banner when you are editing a message." + "@permissionsDeniedCameraAccess": { + "description": "Message for dialog asking the user to grant permissions for camera access." }, - "editAlreadyInProgressMessage": "Operacja zmiany w toku. Zaczekaj na jej zakończenie.", - "@editAlreadyInProgressMessage": { - "description": "Error message when a message edit cannot be saved because there is another edit already in progress." + "@permissionsDeniedReadExternalStorage": { + "description": "Message for dialog asking the user to grant permissions for external storage read access." }, - "savingMessageEditLabel": "ZAPIS ZMIANY…", - "@savingMessageEditLabel": { - "description": "Text on a message in the message list saying that a message edit request is processing. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + "@permissionsNeededOpenSettings": { + "description": "Button label for permissions dialog button that opens the system settings screen." }, - "savingMessageEditFailedLabel": "NIE ZAPISANO ZMIANY", - "@savingMessageEditFailedLabel": { - "description": "Text on a message in the message list saying that a message edit request failed. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + "@permissionsNeededTitle": { + "description": "Title for dialog asking the user to grant additional permissions." }, - "discardDraftConfirmationDialogTitle": "Czy chcesz przerwać szykowanie wpisu?", - "@discardDraftConfirmationDialogTitle": { - "description": "Title for a confirmation dialog for discarding message text that was typed into the compose box." + "@pinnedSubscriptionsLabel": { + "description": "Label for the list of pinned subscribed channels." }, - "discardDraftForEditConfirmationDialogMessage": "Miej na uwadze, że przechodząc do zmiany wiadomości wyczyścisz okno nowej wiadomości.", - "@discardDraftForEditConfirmationDialogMessage": { - "description": "Message for a confirmation dialog for discarding message text that was typed into the compose box, when editing a message." + "@pollVoterNames": { + "description": "The list of people who voted for a poll option, wrapped in parentheses.", + "placeholders": { + "voterNames": { + "example": "Alice, Bob, Chad", + "type": "String" + } + } }, - "discardDraftConfirmationDialogConfirmButton": "Odrzuć", - "@discardDraftConfirmationDialogConfirmButton": { - "description": "Label for the 'Discard' button on a confirmation dialog for discarding message text that was typed into the compose box." + "@pollWidgetOptionsMissing": { + "description": "Text to display for a poll when it has no options" }, - "composeBoxBannerButtonCancel": "Anuluj", - "@composeBoxBannerButtonCancel": { - "description": "Label text for the 'Cancel' button in the compose-box banner when you are editing a message." + "@pollWidgetQuestionMissing": { + "description": "Text to display for a poll when the question is missing" }, - "preparingEditMessageContentInput": "Przygotowywanie…", "@preparingEditMessageContentInput": { "description": "Hint text for content input when the compose box is preparing to edit a message." }, - "editAlreadyInProgressTitle": "Nie udało się zapisać zmiany", - "@editAlreadyInProgressTitle": { - "description": "Error title when a message edit cannot be saved because there is another edit already in progress." - }, - "composeBoxBannerButtonSave": "Zapisz", - "@composeBoxBannerButtonSave": { - "description": "Label text for the 'Save' button in the compose-box banner when you are editing a message." + "@profileButtonSendDirectMessage": { + "description": "Label for button in profile screen to navigate to DMs with the shown user." }, - "topicsButtonTooltip": "Wątki", - "@topicsButtonTooltip": { - "description": "Tooltip for button to navigate to topic-list page." + "@reactedEmojiSelfUser": { + "description": "Display name for the user themself, to show on an emoji reaction added by the user." }, - "actionSheetOptionListOfTopics": "Lista wątków", - "@actionSheetOptionListOfTopics": { - "description": "Label for navigating to a channel's topic-list page." + "@reactionChipLabel": { + "description": "Text describing a reaction chip, with the emoji name and a list or number of votes. (An accessibility label for assistive technology.)", + "placeholders": { + "emojiName": { + "example": "working_on_it", + "type": "String" + }, + "votes": { + "example": "You, Chris, Greg", + "type": "String" + } + } }, - "newDmSheetScreenTitle": "Nowa DM", - "@newDmSheetScreenTitle": { - "description": "Title displayed at the top of the new DM screen." + "@reactionChipVotesYouAndOthers": { + "description": "The number of votes on a reaction chip, where the self-user and at least one other user has voted. (An accessibility label for assistive technology.)", + "placeholders": { + "otherUsersCount": { + "example": "4", + "type": "int" + } + } }, - "newDmFabButtonLabel": "Nowa DM", - "@newDmFabButtonLabel": { - "description": "Label for the floating action button (FAB) that opens the new DM sheet." + "@reactionChipsLabel": { + "description": "Text identifying the container of reaction chips on a message. (An accessibility label for assistive technology.)" }, - "newDmSheetSearchHintSomeSelected": "Dodaj kolejnego użytkownika…", - "@newDmSheetSearchHintSomeSelected": { - "description": "Hint text for the search bar when at least one user is selected" + "@recentDmConversationsEmptyPlaceholder": { + "description": "Centered text on the 'Direct messages' page saying that there is no content to show." }, - "mutedUser": "Wyciszony użytkownik", - "@mutedUser": { - "description": "Name for a muted user to display all over the app." + "@recentDmConversationsPageTitle": { + "description": "Title for the page with a list of DM conversations." }, - "newDmSheetNoUsersFound": "Nie odnaleziono użytkowników", - "@newDmSheetNoUsersFound": { - "description": "Message shown in the new DM sheet when no users match the search." + "@recentDmConversationsSectionHeader": { + "description": "Heading for direct messages section on the 'Inbox' message view." }, - "actionSheetOptionHideMutedMessage": "Ukryj ponownie wyciszone wiadomości", - "@actionSheetOptionHideMutedMessage": { - "description": "Label for hide muted message again button on action sheet." + "@revealButtonLabel": { + "description": "Label for the button revealing hidden message from a muted sender in message list." }, - "newDmSheetSearchHintEmpty": "Dodaj jednego lub więcej użytkowników", - "@newDmSheetSearchHintEmpty": { - "description": "Hint text for the search bar when no users are selected" + "@savingMessageEditFailedLabel": { + "description": "Text on a message in the message list saying that a message edit request failed. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" }, - "messageNotSentLabel": "NIE WYSŁANO WIADOMOŚCI", - "@messageNotSentLabel": { - "description": "Text on a message in the message list saying that a send message request failed. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + "@savingMessageEditLabel": { + "description": "Text on a message in the message list saying that a message edit request is processing. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" }, - "errorNotificationOpenAccountNotFound": "Nie odnaleziono konta powiązanego z tym powiadomieniem.", - "@errorNotificationOpenAccountNotFound": { - "description": "Error message when the account associated with the notification could not be found" + "@scrollToBottomTooltip": { + "description": "Tooltip for button to scroll to bottom." }, - "newDmSheetComposeButtonLabel": "Utwórz", - "@newDmSheetComposeButtonLabel": { - "description": "Label for the compose button in the new DM sheet that starts composing a message to the selected users." + "@searchMessagesClearButtonTooltip": { + "description": "Tooltip for the 'x' button in the search text field." }, - "inboxEmptyPlaceholder": "Obecnie brak nowych wiadomości. Skorzystaj z przycisków u dołu ekranu aby przejść do widoku mieszanego lub listy kanałów.", - "@inboxEmptyPlaceholder": { - "description": "Centered text on the 'Inbox' page saying that there is no content to show." + "@searchMessagesHintText": { + "description": "Hint text for the message search text field." }, - "recentDmConversationsEmptyPlaceholder": "Brak wiadomości w archiwum! Może warto rozpocząć dyskusję?", - "@recentDmConversationsEmptyPlaceholder": { - "description": "Centered text on the 'Direct messages' page saying that there is no content to show." + "@searchMessagesPageTitle": { + "description": "Page title for the 'Search' message view." }, - "channelsEmptyPlaceholder": "Nie śledzisz żadnego z kanałów.", - "@channelsEmptyPlaceholder": { - "description": "Centered text on the 'Channels' page saying that there is no content to show." + "@seeWhoReactedSheetEmojiNameWithVoteCount": { + "description": "In the 'See who reacted' sheet, an emoji reaction's name and how many votes it has. (An accessibility label for assistive technology.)", + "placeholders": { + "emojiName": { + "example": "working_on_it", + "type": "String" + }, + "num": { + "example": "2", + "type": "int" + } + } }, - "initialAnchorSettingDescription": "Możesz wybrać czy bardziej odpowiada Ci odczyt nieprzeczytanych lub najnowszych wiadomości.", - "@initialAnchorSettingDescription": { - "description": "Description of setting controlling initial anchor of message list." + "@seeWhoReactedSheetHeaderLabel": { + "description": "In the 'See who reacted' sheet, a label for the list of emoji reactions at the top, with the total number of reactions. (An accessibility label for assistive technology.)", + "placeholders": { + "num": { + "example": "2", + "type": "int" + } + } }, - "initialAnchorSettingFirstUnreadAlways": "Pierwsza nieprzeczytana wiadomość", - "@initialAnchorSettingFirstUnreadAlways": { - "description": "Label for a value of setting controlling initial anchor of message list." + "@seeWhoReactedSheetNoReactions": { + "description": "Explanation on the 'See who reacted' sheet when the message has no reactions (because they were removed after the sheet was opened)." }, - "initialAnchorSettingTitle": "Pokaż wiadomości w porządku", - "@initialAnchorSettingTitle": { - "description": "Title of setting controlling initial anchor of message list." + "@seeWhoReactedSheetUserListLabel": { + "description": "In the 'See who reacted' sheet, a label for the list of users who chose an emoji reaction, with the emoji's name and how many votes it has. (An accessibility label for assistive technology.)", + "placeholders": { + "emojiName": { + "example": "working_on_it", + "type": "String" + }, + "num": { + "example": "2", + "type": "int" + } + } }, - "discardDraftForOutboxConfirmationDialogMessage": "Przywracając wiadomość, która nie została wysłana, wyczyścisz zawartość kreatora nowej.", - "@discardDraftForOutboxConfirmationDialogMessage": { - "description": "Message for a confirmation dialog when restoring an outbox message, for discarding message text that was typed into the compose box." + "@serverUrlValidationErrorEmpty": { + "description": "Error message when URL is empty" }, - "initialAnchorSettingFirstUnreadConversations": "Pierwsza nieprzeczytana wiadomość w widoku dyskusji, wszędzie indziej najnowsza wiadomość", - "@initialAnchorSettingFirstUnreadConversations": { - "description": "Label for a value of setting controlling initial anchor of message list." + "@serverUrlValidationErrorInvalidUrl": { + "description": "Error message when URL is not in a valid format." }, - "initialAnchorSettingNewestAlways": "Najnowsza wiadomość", - "@initialAnchorSettingNewestAlways": { - "description": "Label for a value of setting controlling initial anchor of message list." + "@serverUrlValidationErrorNoUseEmail": { + "description": "Error message when URL looks like an email" }, - "actionSheetOptionQuoteMessage": "Cytuj wiadomość", - "@actionSheetOptionQuoteMessage": { - "description": "Label for the 'Quote message' button in the message action sheet." + "@serverUrlValidationErrorUnsupportedScheme": { + "description": "Error message when URL has an unsupported scheme." }, - "markReadOnScrollSettingTitle": "Oznacz wiadomości jako przeczytane przy przwijaniu", - "@markReadOnScrollSettingTitle": { - "description": "Title of setting controlling which message-list views should mark read on scroll." + "@setStatusPageTitle": { + "description": "Title for the 'Set status' page." }, - "markReadOnScrollSettingAlways": "Zawsze", - "@markReadOnScrollSettingAlways": { - "description": "Label for a value of setting controlling which message-list views should mark read on scroll." + "@settingsPageTitle": { + "description": "Title for the settings page." }, - "markReadOnScrollSettingConversations": "Tylko w widoku dyskusji", - "@markReadOnScrollSettingConversations": { - "description": "Label for a value of setting controlling which message-list views should mark read on scroll." + "@signInWithFoo": { + "description": "Button to use {method} to sign in to the app.", + "placeholders": { + "method": { + "example": "Google", + "type": "String" + } + } }, - "markReadOnScrollSettingNever": "Nigdy", - "@markReadOnScrollSettingNever": { - "description": "Label for a value of setting controlling which message-list views should mark read on scroll." + "@snackBarDetails": { + "description": "Button label for snack bar button that opens a dialog with more details." }, - "markReadOnScrollSettingDescription": "Czy chcesz z automatu oznaczać wiadomości jako przeczytane przy przewijaniu?", - "@markReadOnScrollSettingDescription": { - "description": "Description of setting controlling which message-list views should mark read on scroll." + "@spoilerDefaultHeaderText": { + "description": "The default header text in a spoiler block ( https://zulip.com/help/spoilers )." }, - "markReadOnScrollSettingConversationsDescription": "Wiadomości zostaną z automatu oznaczone jako przeczytane tylko w pojedyczym wątku lub w wymianie wiadomości bezpośrednich.", - "@markReadOnScrollSettingConversationsDescription": { - "description": "Description for a value of setting controlling which message-list views should mark read on scroll." + "@starredMessagesPageTitle": { + "description": "Page title for the 'Starred messages' message view." }, - "upgradeWelcomeDialogTitle": "Witaj w nowej apce Zulip!", - "@upgradeWelcomeDialogTitle": { - "description": "Title for dialog shown on first upgrade from the legacy Zulip app." + "@statusButtonLabelStatusSet": { + "description": "The status button label in self-user profile page when status is set." }, - "upgradeWelcomeDialogMessage": "Napotkasz na znane rozwiązania, które upakowaliśmy w szybszy i elegancki pakiet.", - "@upgradeWelcomeDialogMessage": { - "description": "Message text for dialog shown on first upgrade from the legacy Zulip app." + "@statusButtonLabelStatusUnset": { + "description": "The status button label in self-user profile page when status is not set." }, - "upgradeWelcomeDialogLinkText": "Sprawdź blog pod kątem obwieszczenia!", - "@upgradeWelcomeDialogLinkText": { - "description": "Text of link in dialog shown on first upgrade from the legacy Zulip app." + "@statusClearButtonLabel": { + "description": "Label for the button that clears the user status, in 'Set status' page." }, - "upgradeWelcomeDialogDismiss": "Zaczynajmy", - "@upgradeWelcomeDialogDismiss": { - "description": "Label for button dismissing dialog shown on first upgrade from the legacy Zulip app." + "@statusSaveButtonLabel": { + "description": "Label for the button that saves the user status, in 'Set status' page." }, - "emptyMessageList": "Póki co brak wiadomości.", - "@emptyMessageList": { - "description": "Placeholder for some message-list pages when there are no messages." + "@statusTextHint": { + "description": "Hint text for the status text input field in 'Set status' page." }, - "revealButtonLabel": "Odsłoń wiadomość", - "@revealButtonLabel": { - "description": "Label for the button revealing hidden message from a muted sender in message list." + "@successChannelLinkCopied": { + "description": "Message when link of a channel was copied to the user's system clipboard." }, - "emptyMessageListSearch": "Brak wyników wyszukiwania.", - "@emptyMessageListSearch": { - "description": "Placeholder for the 'Search' page when there are no messages." + "@successLinkCopied": { + "description": "Success message after copy link action completed." }, - "searchMessagesPageTitle": "Szukaj", - "@searchMessagesPageTitle": { - "description": "Page title for the 'Search' message view." + "@successMessageLinkCopied": { + "description": "Message when link of a message was copied to the user's system clipboard." }, - "searchMessagesHintText": "Szukaj", - "@searchMessagesHintText": { - "description": "Hint text for the message search text field." + "@successMessageTextCopied": { + "description": "Message when content of a message was copied to the user's system clipboard." }, - "searchMessagesClearButtonTooltip": "Wyczyść", - "@searchMessagesClearButtonTooltip": { - "description": "Tooltip for the 'x' button in the search text field." + "@successTopicLinkCopied": { + "description": "Message when link of a topic was copied to the user's system clipboard." }, - "invisibleMode": "Tryb ukrycia", - "@invisibleMode": { - "description": "Label for the 'Invisible mode' switch on the profile page." + "@switchAccountButton": { + "description": "Label for main-menu button leading to the choose-account page." + }, + "@themeSettingDark": { + "description": "Label for dark theme setting." + }, + "@themeSettingLight": { + "description": "Label for light theme setting." + }, + "@themeSettingSystem": { + "description": "Label for system theme setting." + }, + "@themeSettingTitle": { + "description": "Title for theme setting. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + }, + "@today": { + "description": "Term to use to reference the current day." + }, + "@topicValidationErrorMandatoryButEmpty": { + "description": "Topic validation error when topic is required but was empty." + }, + "@topicValidationErrorTooLong": { + "description": "Topic validation error when topic is too long." + }, + "@topicsButtonTooltip": { + "description": "Tooltip for button to navigate to topic-list page." + }, + "@tryAnotherAccountButton": { + "description": "Label for loading screen button prompting user to try another account." + }, + "@tryAnotherAccountMessage": { + "description": "Message that appears on the loading screen after waiting for some time.", + "url": { + "example": "http://chat.example.com/", + "type": "String" + } + }, + "@turnOffInvisibleModeErrorTitle": { + "description": "Error title when turning off invisible mode failed." }, - "turnOnInvisibleModeErrorTitle": "Problem z włączeniem trybu ukrycia. Spróbuj ponownie.", "@turnOnInvisibleModeErrorTitle": { "description": "Error title when turning on invisible mode failed." }, + "@twoPeopleTyping": { + "description": "Text to display when there are two users typing.", + "placeholders": { + "otherTypist": { + "example": "Bob", + "type": "String" + }, + "typist": { + "example": "Alice", + "type": "String" + } + } + }, + "@unknownChannelName": { + "description": "Replacement name for channel when it cannot be found in the store." + }, + "@unknownUserName": { + "description": "Name placeholder to use for a user when we don't know their name." + }, + "@unpinnedSubscriptionsLabel": { + "description": "Label for the list of unpinned subscribed channels." + }, + "@updateStatusErrorTitle": { + "description": "Error title when updating user status failed." + }, + "@upgradeWelcomeDialogDismiss": { + "description": "Label for button dismissing dialog shown on first upgrade from the legacy Zulip app." + }, + "@upgradeWelcomeDialogLinkText": { + "description": "Text of link in dialog shown on first upgrade from the legacy Zulip app." + }, + "@upgradeWelcomeDialogMessage": { + "description": "Message text for dialog shown on first upgrade from the legacy Zulip app." + }, + "@upgradeWelcomeDialogTitle": { + "description": "Title for dialog shown on first upgrade from the legacy Zulip app." + }, + "@userRoleAdministrator": { + "description": "Label for UserRole.administrator" + }, + "@userRoleGuest": { + "description": "Label for UserRole.guest" + }, + "@userRoleMember": { + "description": "Label for UserRole.member" + }, + "@userRoleModerator": { + "description": "Label for UserRole.moderator" + }, + "@userRoleOwner": { + "description": "Label for UserRole.owner" + }, + "@userRoleUnknown": { + "description": "Label for UserRole.unknown" + }, + "@userStatusAtTheOffice": { + "description": "A suggested user status text, 'At the office'." + }, + "@userStatusBusy": { + "description": "A suggested user status text, 'Busy'." + }, + "@userStatusCommuting": { + "description": "A suggested user status text, 'Commuting'." + }, + "@userStatusInAMeeting": { + "description": "A suggested user status text, 'In a meeting'." + }, + "@userStatusOutSick": { + "description": "A suggested user status text, 'Out sick'." + }, + "@userStatusVacationing": { + "description": "A suggested user status text, 'Vacationing'." + }, + "@userStatusWorkingRemotely": { + "description": "A suggested user status text, 'Working remotely'." + }, + "@wildcardMentionAll": { + "description": "Text for \"@all\" wildcard-mention autocomplete option when writing a channel or DM message." + }, + "@wildcardMentionAllDmDescription": { + "description": "Description for \"@all\" and \"@everyone\" wildcard-mention autocomplete options when writing a DM message." + }, + "@wildcardMentionChannel": { + "description": "Text for \"@channel\" wildcard-mention autocomplete option when writing a channel message." + }, + "@wildcardMentionChannelDescription": { + "description": "Description for \"@all\", \"@everyone\", \"@channel\", and \"@stream\" wildcard-mention autocomplete options when writing a channel message." + }, + "@wildcardMentionEveryone": { + "description": "Text for \"@everyone\" wildcard-mention autocomplete option when writing a channel or DM message." + }, + "@wildcardMentionStream": { + "description": "Text for \"@stream\" wildcard-mention autocomplete option when writing a channel message in older servers." + }, + "@wildcardMentionStreamDescription": { + "description": "Description for \"@all\", \"@everyone\", and \"@stream\" wildcard-mention autocomplete options when writing a channel message in older servers." + }, + "@wildcardMentionTopic": { + "description": "Text for \"@topic\" wildcard-mention autocomplete option when writing a channel message." + }, + "@wildcardMentionTopicDescription": { + "description": "Description for \"@topic\" wildcard-mention autocomplete options when writing a channel message." + }, + "@yesterday": { + "description": "Term to use to reference the previous day." + }, + "@zulipAppTitle": { + "description": "The name of Zulip. This should be either 'Zulip' or a transliteration." + }, + "aboutPageAppVersion": "Wydanie apki", + "aboutPageOpenSourceLicenses": "Licencje otwartego źródła", + "aboutPageTapToView": "Dotknij, aby pokazać", + "aboutPageTitle": "O Zulip", + "actionSheetOptionCopyChannelLink": "Skopiuj odnośnik do kanału", + "actionSheetOptionCopyMessageLink": "Skopiuj odnośnik do wiadomości", + "actionSheetOptionCopyMessageText": "Skopiuj tekst wiadomości", + "actionSheetOptionCopyTopicLink": "Skopiuj odnośnik do wątku", + "actionSheetOptionEditMessage": "Zmień wiadomość", + "actionSheetOptionFollowTopic": "Śledź wątek", + "actionSheetOptionHideMutedMessage": "Ukryj ponownie wyciszone wiadomości", + "actionSheetOptionListOfTopics": "Lista wątków", + "actionSheetOptionMarkAsUnread": "Odtąd oznacz jako nieprzeczytane", + "actionSheetOptionMarkChannelAsRead": "Oznacz kanał jako przeczytany", + "actionSheetOptionMarkTopicAsRead": "Oznacz wątek jako przeczytany", + "actionSheetOptionMuteTopic": "Wycisz wątek", + "actionSheetOptionQuoteMessage": "Cytuj wiadomość", + "actionSheetOptionResolveTopic": "Oznacz jako rozwiązany", + "actionSheetOptionSeeWhoReacted": "Pokaż kto zareagował", + "actionSheetOptionShare": "Udostępnij", + "actionSheetOptionStarMessage": "Oznacz gwiazdką", + "actionSheetOptionUnfollowTopic": "Nie śledź wątku", + "actionSheetOptionUnmuteTopic": "Wznów wątek", + "actionSheetOptionUnresolveTopic": "Oznacz brak rozwiązania", + "actionSheetOptionUnstarMessage": "Odbierz gwiazdkę", + "appVersionUnknownPlaceholder": "(…)", + "channelFeedButtonTooltip": "Strumień kanału", + "channelsEmptyPlaceholder": "Nie śledzisz żadnego z kanałów.", + "channelsPageTitle": "Kanały", + "chooseAccountButtonAddAnAccount": "Dodaj konto", + "chooseAccountPageLogOutButton": "Wyloguj", + "chooseAccountPageTitle": "Wybierz konto", + "combinedFeedPageTitle": "Mieszany widok", + "composeBoxAttachFilesTooltip": "Dołącz pliki", + "composeBoxAttachFromCameraTooltip": "Zrób zdjęcie", + "composeBoxAttachMediaTooltip": "Dołącz obrazy lub wideo", + "composeBoxBannerButtonCancel": "Anuluj", + "composeBoxBannerButtonSave": "Zapisz", + "composeBoxBannerLabelEditMessage": "Zmień wiadomość", + "composeBoxChannelContentHint": "Wiadomość do {destination}", + "composeBoxDmContentHint": "Napisz do @{user}", + "composeBoxEnterTopicOrSkipHintText": "Wpisz tytuł wątku (pomiń aby uzyskać “{defaultTopicName}”)", + "composeBoxGenericContentHint": "Wpisz wiadomość", + "composeBoxGroupDmContentHint": "Napisz do grupy", + "composeBoxLoadingMessage": "(ładowanie wiadomości {messageId})", + "composeBoxSelfDmContentHint": "Zanotuj coś na przyszłość", + "composeBoxSendTooltip": "Wyślij", + "composeBoxTopicHintText": "Wątek", + "composeBoxUploadingFilename": "Przekazywanie {filename}…", + "contentValidationErrorEmpty": "Nie masz nic do wysłania!", + "contentValidationErrorQuoteAndReplyInProgress": "Zaczekaj na zakończenie pobierania cytatu.", + "contentValidationErrorTooLong": "Wiadomość nie może być dłuższa niż 10000 znaków.", + "contentValidationErrorUploadInProgress": "Zaczekaj na zakończenie przekazywania.", + "dialogCancel": "Anuluj", + "dialogClose": "Zamknij", + "dialogContinue": "Kontynuuj", + "discardDraftConfirmationDialogConfirmButton": "Odrzuć", + "discardDraftConfirmationDialogTitle": "Czy chcesz przerwać szykowanie wpisu?", + "discardDraftForEditConfirmationDialogMessage": "Miej na uwadze, że przechodząc do zmiany wiadomości wyczyścisz okno nowej wiadomości.", + "discardDraftForOutboxConfirmationDialogMessage": "Przywracając wiadomość, która nie została wysłana, wyczyścisz zawartość kreatora nowej.", + "dmsWithOthersPageTitle": "DM z {others}", + "dmsWithYourselfPageTitle": "DM do siebie", + "editAlreadyInProgressMessage": "Operacja zmiany w toku. Zaczekaj na jej zakończenie.", + "editAlreadyInProgressTitle": "Nie udało się zapisać zmiany", + "emojiPickerSearchEmoji": "Szukaj emoji", + "emojiReactionsMore": "więcej", + "emptyMessageList": "Póki co brak wiadomości.", + "emptyMessageListSearch": "Brak wyników wyszukiwania.", + "errorAccountLoggedIn": "Konto {email} na {server} znajduje się już na liście dodanych kont.", + "errorAccountLoggedInTitle": "Konto już wylogowane", + "errorBannerCannotPostInChannelLabel": "Nie masz uprawnień do dodawania wpisów w tym kanale.", + "errorBannerDeactivatedDmLabel": "Nie można wysyłać wiadomości do dezaktywowanych użytkowników.", + "errorConnectingToServerDetails": "Błąd połączenia z Zulip {serverUrl}. Spróbujmy ponownie:\n\n{error}", + "errorConnectingToServerShort": "Błąd połączenia z Zulip. Ponawiam…", + "errorCopyingFailed": "Nie udało się skopiować", + "errorCouldNotConnectTitle": "Brak połączenia", + "errorCouldNotEditMessageTitle": "Nie można zmienić wiadomości", + "errorCouldNotFetchMessageSource": "Nie można uzyskać źródłowej wiadomości.", + "errorCouldNotOpenLink": "Nie można otworzyć: {url}", + "errorCouldNotOpenLinkTitle": "Nie udało się otworzyć odnośnika", + "errorCouldNotShowUserProfile": "Nie udało się wyświetlić profilu.", + "errorDialogContinue": "OK", + "errorDialogLearnMore": "Dowiedz się więcej", + "errorDialogTitle": "Błąd", + "errorFailedToUploadFileTitle": "Nie udało się załadować pliku: {filename}", + "errorFilesTooLarge": "{num, plural, =1{Plik jest} other{{num} Pliki są}} ponad limit serwera {maxFileUploadSizeMib} MiB i nie zostaną przyjęte:\n\n{listMessage}", + "errorFilesTooLargeTitle": "{num, plural, =1{Plik} other{Pliki}} ponad limit", + "errorFollowTopicFailed": "Śledzenie bez powodzenia", + "errorHandlingEventDetails": "Błąd zdarzenia Zulip z {serverUrl}; ponawiam.\n\nBłąd: {error}\n\nZdarzenie: {event}", + "errorHandlingEventTitle": "Błąd obsługi zdarzenia Zulip. Ponnawiam połączenie…", + "errorInvalidApiKeyMessage": "Konto w ramach {url} nie zostało przyjęte. Spróbuj ponownie lub skorzystaj z innego konta.", + "errorInvalidResponse": "Nieprawidłowa odpowiedź serwera.", + "errorLoginCouldNotConnect": "Nie udało się połączyć z serwerem:\n{url}", + "errorLoginFailedTitle": "Logowanie bez powodzenia", + "errorLoginInvalidInputTitle": "Błędny wsad", + "errorMalformedResponse": "Zdeforomowana odpowiedź serwera; status HTTP {httpStatus}", + "errorMalformedResponseWithCause": "Zdeformowana odpowiedź serwera; status HTTP {httpStatus}; {details}", + "errorMarkAsReadFailedTitle": "Oznaczanie jako przeczytane bez powodzenia", + "errorMarkAsUnreadFailedTitle": "Oznaczanie jako nieprzeczytane bez powodzenia", + "errorMessageDoesNotSeemToExist": "Taka wiadomość raczej nie istnieje.", + "errorMessageEditNotSaved": "Nie zapisano wiadomości", + "errorMessageNotSent": "Nie wysłano wiadomości", + "errorMuteTopicFailed": "Wyciszenie bez powodzenia", + "errorNetworkRequestFailed": "Dostęp do sieci bez powodzenia", + "errorNotificationOpenAccountNotFound": "Nie odnaleziono konta powiązanego z tym powiadomieniem.", + "errorNotificationOpenTitle": "Otwieranie powiadomienia bez powodzenia", + "errorQuotationFailed": "Cytowanie bez powodzenia", + "errorReactionAddingFailedTitle": "Dodanie reakcji bez powodzenia", + "errorReactionRemovingFailedTitle": "Usuwanie reakcji bez powodzenia", + "errorRequestFailed": "Błąd uzyskania sieci: status HTTP {httpStatus}", + "errorResolveTopicFailedTitle": "Nie udało się oznaczyć jako rozwiązany", + "errorServerMessage": "Odpowiedź serwera:\n\n{message}", + "errorServerVersionUnsupportedMessage": "{url} uruchamia Zulip Server {zulipVersion}, który nie jest obsługiwany. Minimalna obsługiwana wersja to Zulip Server {minSupportedZulipVersion}.", + "errorSharingFailed": "Udostępnianie bez powodzenia", + "errorStarMessageFailedTitle": "Dodanie gwiazdki bez powodzenia", + "errorUnfollowTopicFailed": "Nie śledź bez powodzenia", + "errorUnmuteTopicFailed": "Wznowienie bez powodzenia", + "errorUnresolveTopicFailedTitle": "Nie udało się oznaczyć brak rozwiązania", + "errorUnstarMessageFailedTitle": "Odebranie gwiazdki bez powodzenia", + "errorVideoPlayerFailed": "Nie da rady odtworzyć wideo.", + "errorWebAuthOperationalError": "Wystąpił niespodziewany błąd.", + "errorWebAuthOperationalErrorTitle": "Coś poszło nie tak", + "experimentalFeatureSettingsPageTitle": "Funkcje eksperymentalne", + "experimentalFeatureSettingsWarning": "W ten sposób aktywujesz funkcje, które są w fazie testów. Mogą one nie działać lub powodować problemy z tym co bez nich działa poprawnie.\n\nTo ustawienie przewidziane jest dla tych, którzy pracują nad ulepszeniem aplikacji Zulip.", + "filenameAndSizeInMiB": "{filename}: {size} MiB", + "inboxEmptyPlaceholder": "Obecnie brak nowych wiadomości. Skorzystaj z przycisków u dołu ekranu aby przejść do widoku mieszanego lub listy kanałów.", + "inboxPageTitle": "Odebrane", + "initialAnchorSettingDescription": "Możesz wybrać czy bardziej odpowiada Ci odczyt nieprzeczytanych lub najnowszych wiadomości.", + "initialAnchorSettingFirstUnreadAlways": "Pierwsza nieprzeczytana wiadomość", + "initialAnchorSettingFirstUnreadConversations": "Pierwsza nieprzeczytana wiadomość w widoku dyskusji, wszędzie indziej najnowsza wiadomość", + "initialAnchorSettingNewestAlways": "Najnowsza wiadomość", + "initialAnchorSettingTitle": "Pokaż wiadomości w porządku", + "invisibleMode": "Tryb ukrycia", + "lightboxCopyLinkTooltip": "Skopiuj odnośnik", + "lightboxVideoCurrentPosition": "Obecna pozycja", + "lightboxVideoDuration": "Długość wideo", + "logOutConfirmationDialogConfirmButton": "Wyloguj", + "logOutConfirmationDialogMessage": "Aby użyć tego konta należy wskazać URL organizacji oraz dane konta.", + "logOutConfirmationDialogTitle": "Wylogować?", + "loginAddAnAccountPageTitle": "Dodaj konto", + "loginEmailLabel": "Adres email", + "loginErrorMissingEmail": "Proszę podaj swój email.", + "loginErrorMissingPassword": "Proszę wprowadź hasło.", + "loginErrorMissingUsername": "Proszę podaj nazwę użytkownika.", + "loginFormSubmitLabel": "Zaloguj", + "loginHidePassword": "Ukryj hasło", + "loginMethodDivider": "LUB", + "loginPageTitle": "Zaloguj", + "loginPasswordLabel": "Hasło", + "loginServerUrlLabel": "URL serwera Zulip", + "loginUsernameLabel": "Użytkownik", + "mainMenuMyProfile": "Mój profil", + "manyPeopleTyping": "Wielu ludzi coś pisze…", + "markAllAsReadLabel": "Oznacz wszystkie jako przeczytane", + "markAsReadComplete": "Oznaczono {num, plural, =1{1 wiadomość} other{{num} wiadomości}} jako przeczytane.", + "markAsReadInProgress": "Oznaczanie wiadomości jako przeczytane…", + "markAsUnreadComplete": "Oznaczono {num, plural, =1{1 wiadomość} other{{num} wiadomości}} jako nieprzeczytane.", + "markAsUnreadInProgress": "Oznaczanie jako nieprzeczytane…", + "markReadOnScrollSettingAlways": "Zawsze", + "markReadOnScrollSettingConversations": "Tylko w widoku dyskusji", + "markReadOnScrollSettingConversationsDescription": "Wiadomości zostaną z automatu oznaczone jako przeczytane tylko w pojedyczym wątku lub w wymianie wiadomości bezpośrednich.", + "markReadOnScrollSettingDescription": "Czy chcesz z automatu oznaczać wiadomości jako przeczytane przy przewijaniu?", + "markReadOnScrollSettingNever": "Nigdy", + "markReadOnScrollSettingTitle": "Oznacz wiadomości jako przeczytane przy przwijaniu", + "mentionsPageTitle": "Wzmianki", + "messageIsEditedLabel": "ZMIENIONO", + "messageIsMovedLabel": "PRZENIESIONO", + "messageListGroupYouAndOthers": "Ty i {others}", + "messageListGroupYouWithYourself": "Zapiski na własne konto", + "messageNotSentLabel": "NIE WYSŁANO WIADOMOŚCI", + "mutedUser": "Wyciszony użytkownik", + "newDmFabButtonLabel": "Nowa DM", + "newDmSheetComposeButtonLabel": "Utwórz", + "newDmSheetNoUsersFound": "Nie odnaleziono użytkowników", + "newDmSheetScreenTitle": "Nowa DM", + "newDmSheetSearchHintEmpty": "Dodaj jednego lub więcej użytkowników", + "newDmSheetSearchHintSomeSelected": "Dodaj kolejnego użytkownika…", + "noEarlierMessages": "Brak historii", + "noStatusText": "Brak tekstu stanu", + "notifGroupDmConversationLabel": "{senderFullName} do ciebie i {numOthers, plural, =1{1 innego} other{{numOthers} innych}}", + "notifSelfUser": "Ty", + "onePersonTyping": "{typist} coś pisze…", + "openLinksWithInAppBrowser": "Otwieraj odnośniki w aplikacji", + "permissionsDeniedCameraAccess": "Aby odebrać obraz Zulip musi uzyskać dodatkowe uprawnienia w Ustawieniach.", + "permissionsDeniedReadExternalStorage": "Aby odebrać pliki Zulip musi uzyskać dodatkowe uprawnienia w Ustawieniach.", + "permissionsNeededOpenSettings": "Otwórz ustawienia", + "permissionsNeededTitle": "Wymagane uprawnienia", + "pinnedSubscriptionsLabel": "Przypięte", + "pollVoterNames": "({voterNames})", + "pollWidgetOptionsMissing": "Ta sonda nie ma opcji do wyboru.", + "pollWidgetQuestionMissing": "Brak pytania.", + "preparingEditMessageContentInput": "Przygotowywanie…", + "profileButtonSendDirectMessage": "Wyślij wiadomość bezpośrednią", + "reactedEmojiSelfUser": "Ty", + "reactionChipLabel": "{emojiName}: {votes}", + "reactionChipVotesYouAndOthers": "{otherUsersCount, plural, =1{Ty i 1 inny} other{Ty i {otherUsersCount} innych}}", + "reactionChipsLabel": "Reakcje", + "recentDmConversationsEmptyPlaceholder": "Brak wiadomości w archiwum! Może warto rozpocząć dyskusję?", + "recentDmConversationsPageTitle": "Wiadomości bezpośrednie", + "recentDmConversationsSectionHeader": "Wiadomości bezpośrednie", + "revealButtonLabel": "Odsłoń wiadomość", + "savingMessageEditFailedLabel": "NIE ZAPISANO ZMIANY", + "savingMessageEditLabel": "ZAPIS ZMIANY…", + "scrollToBottomTooltip": "Przewiń do dołu", + "searchMessagesClearButtonTooltip": "Wyczyść", + "searchMessagesHintText": "Szukaj", + "searchMessagesPageTitle": "Szukaj", + "seeWhoReactedSheetEmojiNameWithVoteCount": "{emojiName}: {num, plural, =1{1 głos} other{{num} głosów}}", + "seeWhoReactedSheetHeaderLabel": "Reakcje emoji (łącznie {num})", + "seeWhoReactedSheetNoReactions": "Brak reakcji na tę wiadomość.", + "seeWhoReactedSheetUserListLabel": "Głosów {emojiName} ({num})", + "serverUrlValidationErrorEmpty": "Proszę podaj URL.", + "serverUrlValidationErrorInvalidUrl": "Proszę podaj poprawny URL.", + "serverUrlValidationErrorNoUseEmail": "Proszę podaj adres URL serwera a nie swój email.", + "serverUrlValidationErrorUnsupportedScheme": "Adres URL serwera musi zaczynać się od http:// or https://.", + "setStatusPageTitle": "Ustaw stan", + "settingsPageTitle": "Ustawienia", + "signInWithFoo": "Logowanie z {method}", + "snackBarDetails": "Szczegóły", + "spoilerDefaultHeaderText": "Spoiler", + "starredMessagesPageTitle": "Wiadomości z gwiazdką", + "statusButtonLabelStatusSet": "Stan", + "statusButtonLabelStatusUnset": "Ustaw stan", + "statusClearButtonLabel": "Wyczyść", + "statusSaveButtonLabel": "Zapisz", + "statusTextHint": "Twój stan", + "successChannelLinkCopied": "Skopiowano odnośnik do kanału", + "successLinkCopied": "Skopiowano odnośnik", + "successMessageLinkCopied": "Skopiowano odnośnik wiadomości", + "successMessageTextCopied": "Skopiowano tekst wiadomości", + "successTopicLinkCopied": "Skopiowano odnośnik do wątku", + "switchAccountButton": "Przełącz konto", + "themeSettingDark": "Ciemny", + "themeSettingLight": "Jasny", + "themeSettingSystem": "Systemowy", + "themeSettingTitle": "WYSTRÓJ", + "today": "Dzisiaj", + "topicValidationErrorMandatoryButEmpty": "Wątki są wymagane przez tę organizację.", + "topicValidationErrorTooLong": "Tytuł nie może być dłuższy niż 60 znaków.", + "topicsButtonTooltip": "Wątki", + "tryAnotherAccountButton": "Użyj innego konta", + "tryAnotherAccountMessage": "Twoje konto na {url} wymaga jeszcze chwili na załadowanie.", "turnOffInvisibleModeErrorTitle": "Problem z wyłączeniem trybu ukrycia. Spróbuj ponownie.", - "@turnOffInvisibleModeErrorTitle": { - "description": "Error title when turning off invisible mode failed." - } + "turnOnInvisibleModeErrorTitle": "Problem z włączeniem trybu ukrycia. Spróbuj ponownie.", + "twoPeopleTyping": "{typist} i {otherTypist} coś piszą…", + "unknownChannelName": "(nieznany kanał)", + "unknownUserName": "(nieznany użytkownik)", + "unpinnedSubscriptionsLabel": "Odpięte", + "updateStatusErrorTitle": "Błąd aktualizacji stanu. Spróbuj ponownie.", + "upgradeWelcomeDialogDismiss": "Zaczynajmy", + "upgradeWelcomeDialogLinkText": "Sprawdź blog pod kątem obwieszczenia!", + "upgradeWelcomeDialogMessage": "Napotkasz na znane rozwiązania, które upakowaliśmy w szybszy i elegancki pakiet.", + "upgradeWelcomeDialogTitle": "Witaj w nowej apce Zulip!", + "userRoleAdministrator": "Administrator", + "userRoleGuest": "Gość", + "userRoleMember": "Członek", + "userRoleModerator": "Moderator", + "userRoleOwner": "Właściciel", + "userRoleUnknown": "Nieznany", + "userStatusAtTheOffice": "W biurze", + "userStatusBusy": "Zajęty", + "userStatusCommuting": "W drodze", + "userStatusInAMeeting": "Na spotkaniu", + "userStatusOutSick": "Chorobowe", + "userStatusVacationing": "Na urlopie", + "userStatusWorkingRemotely": "Praca zdalna", + "wildcardMentionAll": "wszyscy", + "wildcardMentionAllDmDescription": "Powiadom zainteresowanych", + "wildcardMentionChannel": "kanał", + "wildcardMentionChannelDescription": "Powiadom w kanale", + "wildcardMentionEveryone": "każdy", + "wildcardMentionStream": "strumień", + "wildcardMentionStreamDescription": "Powiadom w strumieniu", + "wildcardMentionTopic": "wątek", + "wildcardMentionTopicDescription": "Powiadom w wątku", + "yesterday": "Wczoraj", + "zulipAppTitle": "Zulip" } diff --git a/assets/l10n/app_ru.arb b/assets/l10n/app_ru.arb index d1cd596e2b..b66f324aad 100644 --- a/assets/l10n/app_ru.arb +++ b/assets/l10n/app_ru.arb @@ -1,1228 +1,1378 @@ { - "aboutPageTitle": "О Zulip", - "@aboutPageTitle": { - "description": "Title for About Zulip page." - }, - "aboutPageAppVersion": "Версия приложения", "@aboutPageAppVersion": { "description": "Label for Zulip app version in About Zulip page" }, - "aboutPageOpenSourceLicenses": "Лицензии открытого исходного кода", "@aboutPageOpenSourceLicenses": { "description": "Item title in About Zulip page to navigate to Licenses page" }, - "aboutPageTapToView": "Нажмите для просмотра", "@aboutPageTapToView": { "description": "Item subtitle in About Zulip page to navigate to Licenses page" }, - "chooseAccountPageTitle": "Выберите учетную запись", - "@chooseAccountPageTitle": { - "description": "Title for the page to choose between Zulip accounts." + "@aboutPageTitle": { + "description": "Title for About Zulip page." }, - "chooseAccountPageLogOutButton": "Выход из системы", - "@chooseAccountPageLogOutButton": { - "description": "Label for the 'Log out' button for an account on the choose-account page" + "@actionSheetOptionCopyChannelLink": { + "description": "Label for copy channel link button on action sheet." }, - "logOutConfirmationDialogTitle": "Выйти из системы?", - "@logOutConfirmationDialogTitle": { - "description": "Title for a confirmation dialog for logging out." + "@actionSheetOptionCopyMessageLink": { + "description": "Label for copy message link button on action sheet." }, - "logOutConfirmationDialogMessage": "Чтобы использовать эту учетную запись в будущем, вам придется заново ввести URL-адрес вашей организации и информацию о вашей учетной записи.", - "@logOutConfirmationDialogMessage": { - "description": "Message for a confirmation dialog for logging out." + "@actionSheetOptionCopyMessageText": { + "description": "Label for copy message text button on action sheet." }, - "logOutConfirmationDialogConfirmButton": "Выйти", - "@logOutConfirmationDialogConfirmButton": { - "description": "Label for the 'Log out' button on a confirmation dialog for logging out." + "@actionSheetOptionCopyTopicLink": { + "description": "Label for copy topic link button in action sheet." }, - "chooseAccountButtonAddAnAccount": "Добавить учетную запись", - "@chooseAccountButtonAddAnAccount": { - "description": "Label for ChooseAccountPage button to add an account" + "@actionSheetOptionEditMessage": { + "description": "Label for the 'Edit message' button in the message action sheet." }, - "profileButtonSendDirectMessage": "Отправить личное сообщение", - "@profileButtonSendDirectMessage": { - "description": "Label for button in profile screen to navigate to DMs with the shown user." + "@actionSheetOptionFollowTopic": { + "description": "Label for following a topic on action sheet." }, - "permissionsNeededTitle": "Требуются разрешения", - "@permissionsNeededTitle": { - "description": "Title for dialog asking the user to grant additional permissions." + "@actionSheetOptionHideMutedMessage": { + "description": "Label for hide muted message again button on action sheet." }, - "permissionsNeededOpenSettings": "Открыть настройки", - "@permissionsNeededOpenSettings": { - "description": "Button label for permissions dialog button that opens the system settings screen." + "@actionSheetOptionListOfTopics": { + "description": "Label for navigating to a channel's topic-list page." }, - "permissionsDeniedCameraAccess": "Для загрузки изображения, пожалуйста, предоставьте Zulip дополнительные разрешения в настройках.", - "@permissionsDeniedCameraAccess": { - "description": "Message for dialog asking the user to grant permissions for camera access." + "@actionSheetOptionMarkAsUnread": { + "description": "Label for mark as unread button on action sheet." }, - "permissionsDeniedReadExternalStorage": "Для загрузки файлов, пожалуйста, предоставьте Zulip дополнительные разрешения в настройках.", - "@permissionsDeniedReadExternalStorage": { - "description": "Message for dialog asking the user to grant permissions for external storage read access." + "@actionSheetOptionMarkChannelAsRead": { + "description": "Label for marking a channel as read." }, - "actionSheetOptionCopyMessageText": "Скопировать текст сообщения", - "@actionSheetOptionCopyMessageText": { - "description": "Label for copy message text button on action sheet." + "@actionSheetOptionMarkTopicAsRead": { + "description": "Option to mark a specific topic as read in the action sheet." }, - "actionSheetOptionCopyMessageLink": "Скопировать ссылку на сообщение", - "@actionSheetOptionCopyMessageLink": { - "description": "Label for copy message link button on action sheet." + "@actionSheetOptionMuteTopic": { + "description": "Label for muting a topic on action sheet." }, - "actionSheetOptionMarkAsUnread": "Отметить как непрочитанные начиная отсюда", - "@actionSheetOptionMarkAsUnread": { - "description": "Label for mark as unread button on action sheet." + "@actionSheetOptionQuoteMessage": { + "description": "Label for the 'Quote message' button in the message action sheet." + }, + "@actionSheetOptionResolveTopic": { + "description": "Label for the 'Mark as resolved' button on the topic action sheet." + }, + "@actionSheetOptionSeeWhoReacted": { + "description": "Label for the 'See who reacted' button in the message action sheet." }, - "actionSheetOptionShare": "Поделиться", "@actionSheetOptionShare": { "description": "Label for share button on action sheet." }, - "actionSheetOptionStarMessage": "Отметить сообщение", "@actionSheetOptionStarMessage": { "description": "Label for star button on action sheet." }, - "actionSheetOptionUnstarMessage": "Снять отметку с сообщения", + "@actionSheetOptionUnfollowTopic": { + "description": "Label for unfollowing a topic on action sheet." + }, + "@actionSheetOptionUnmuteTopic": { + "description": "Label for unmuting a topic on action sheet." + }, + "@actionSheetOptionUnresolveTopic": { + "description": "Label for the 'Mark as unresolved' button on the topic action sheet." + }, "@actionSheetOptionUnstarMessage": { "description": "Label for unstar button on action sheet." }, - "errorWebAuthOperationalErrorTitle": "Что-то пошло не так", - "@errorWebAuthOperationalErrorTitle": { - "description": "Error title when third-party authentication has an operational error (not necessarily caused by invalid credentials)." + "@appVersionUnknownPlaceholder": { + "description": "Placeholder to show in place of the app version when it is unknown." }, - "errorWebAuthOperationalError": "Произошла непредвиденная ошибка.", - "@errorWebAuthOperationalError": { - "description": "Error message when third-party authentication has an operational error (not necessarily caused by invalid credentials)." + "@channelFeedButtonTooltip": { + "description": "Tooltip for button to navigate to a given channel's feed" }, - "errorAccountLoggedInTitle": "Вход в учетную запись уже выполнен", - "@errorAccountLoggedInTitle": { - "description": "Error title on attempting to log into an account that's already logged in." + "@channelsEmptyPlaceholder": { + "description": "Centered text on the 'Channels' page saying that there is no content to show." }, - "errorAccountLoggedIn": "Учетная запись {email} на {server} уже присутствует.", - "@errorAccountLoggedIn": { - "description": "Error message on attempting to log into an account that's already logged in.", - "placeholders": { - "email": { - "type": "String", - "example": "user@example.com" - }, - "server": { - "type": "String", - "example": "https://example.com" - } - } + "@channelsPageTitle": { + "description": "Title for the page with a list of subscribed channels." }, - "errorCouldNotFetchMessageSource": "Не удалось извлечь источник сообщения.", - "@errorCouldNotFetchMessageSource": { - "description": "Error message when the source of a message could not be fetched." + "@chooseAccountButtonAddAnAccount": { + "description": "Label for ChooseAccountPage button to add an account" }, - "errorCopyingFailed": "Сбой копирования", - "@errorCopyingFailed": { - "description": "Error message when copying the text of a message to the user's system clipboard failed." + "@chooseAccountPageLogOutButton": { + "description": "Label for the 'Log out' button for an account on the choose-account page" }, - "errorFailedToUploadFileTitle": "Не удалось загрузить файл: {filename}", - "@errorFailedToUploadFileTitle": { - "description": "Error title when the specified file failed to upload.", - "placeholders": { - "filename": { - "type": "String", - "example": "file.txt" - } - } + "@chooseAccountPageTitle": { + "description": "Title for the page to choose between Zulip accounts." }, - "errorStarMessageFailedTitle": "Не удалось отметить сообщение", - "@errorStarMessageFailedTitle": { - "description": "Error title when starring a message failed." + "@combinedFeedPageTitle": { + "description": "Page title for the 'Combined feed' message view." }, - "errorUnstarMessageFailedTitle": "Не удалось снять отметку с сообщения", - "@errorUnstarMessageFailedTitle": { - "description": "Error title when unstarring a message failed." + "@composeBoxAttachFilesTooltip": { + "description": "Tooltip for compose box icon to attach a file to the message." }, - "serverUrlValidationErrorUnsupportedScheme": "URL-адрес сервера должен начинаться с http:// или https://.", - "@serverUrlValidationErrorUnsupportedScheme": { - "description": "Error message when URL has an unsupported scheme." + "@composeBoxAttachFromCameraTooltip": { + "description": "Tooltip for compose box icon to attach an image from the camera to the message." }, - "starredMessagesPageTitle": "Отмеченные сообщения", - "@starredMessagesPageTitle": { - "description": "Page title for the 'Starred messages' message view." + "@composeBoxAttachMediaTooltip": { + "description": "Tooltip for compose box icon to attach media to the message." }, - "errorLoginInvalidInputTitle": "Неверный ввод", - "@errorLoginInvalidInputTitle": { - "description": "Error title for login when input is invalid." + "@composeBoxBannerButtonCancel": { + "description": "Label text for the 'Cancel' button in the compose-box banner when you are editing a message." }, - "tryAnotherAccountButton": "Попробовать другую учетную запись", - "@tryAnotherAccountButton": { - "description": "Label for loading screen button prompting user to try another account." + "@composeBoxBannerButtonSave": { + "description": "Label text for the 'Save' button in the compose-box banner when you are editing a message." }, - "errorQuotationFailed": "Цитирование не удалось", - "@errorQuotationFailed": { - "description": "Error message when quoting a message failed." + "@composeBoxBannerLabelEditMessage": { + "description": "Label text for the compose-box banner when you are editing a message." }, - "errorFilesTooLargeTitle": "Слишком большой размер {num, plural, =1{файла} other{файлов}}", - "@errorFilesTooLargeTitle": { - "description": "Error title when attached files are too large in size.", + "@composeBoxChannelContentHint": { + "description": "Hint text for content input when sending a message to a channel.", "placeholders": { - "num": { - "type": "int", - "example": "4" + "destination": { + "example": "#channel name > topic name", + "type": "String" } } }, - "composeBoxSelfDmContentHint": "Сделать заметку", - "@composeBoxSelfDmContentHint": { - "description": "Hint text for content input when sending a message to yourself." + "@composeBoxDmContentHint": { + "description": "Hint text for content input when sending a message to one other person.", + "placeholders": { + "user": { + "example": "channel name", + "type": "String" + } + } + }, + "@composeBoxEnterTopicOrSkipHintText": { + "description": "Hint text for topic input widget in compose box when topics are optional.", + "placeholders": { + "defaultTopicName": { + "example": "general chat", + "type": "String" + } + } + }, + "@composeBoxGenericContentHint": { + "description": "Hint text for content input when sending a message." }, - "composeBoxGroupDmContentHint": "Сообщение для группы", "@composeBoxGroupDmContentHint": { "description": "Hint text for content input when sending a message to a group." }, - "contentValidationErrorEmpty": "Нечего отправлять!", - "@contentValidationErrorEmpty": { - "description": "Content validation error message when the message is empty." + "@composeBoxLoadingMessage": { + "description": "Placeholder in compose box showing the quoted message is currently loading.", + "placeholders": { + "messageId": { + "example": "1234", + "type": "int" + } + } }, - "loginPageTitle": "Вход в систему", - "@loginPageTitle": { - "description": "Title for login page." + "@composeBoxSelfDmContentHint": { + "description": "Hint text for content input when sending a message to yourself." }, - "loginFormSubmitLabel": "Войти", - "@loginFormSubmitLabel": { - "description": "Button text to submit login credentials." + "@composeBoxSendTooltip": { + "description": "Tooltip for send button in compose box." }, - "loginMethodDivider": "ИЛИ", - "@loginMethodDivider": { - "description": "Text on the divider between the username/password form and the third-party login options. Uppercase (for languages with letter case)." + "@composeBoxTopicHintText": { + "description": "Hint text for topic input widget in compose box." }, - "signInWithFoo": "Войти с помощью {method}", - "@signInWithFoo": { - "description": "Button to use {method} to sign in to the app.", + "@composeBoxUploadingFilename": { + "description": "Placeholder in compose box showing the specified file is currently uploading.", "placeholders": { - "method": { - "type": "String", - "example": "Google" + "filename": { + "example": "file.txt", + "type": "String" } } }, - "loginAddAnAccountPageTitle": "Добавление учетной записи", - "@loginAddAnAccountPageTitle": { - "description": "Title for page to add a Zulip account." - }, - "loginServerUrlLabel": "URL вашего сервера Zulip", - "@loginServerUrlLabel": { - "description": "Label in login page for Zulip server URL entry." + "@contentValidationErrorEmpty": { + "description": "Content validation error message when the message is empty." }, - "loginHidePassword": "Скрыть пароль", - "@loginHidePassword": { - "description": "Icon label for button to hide password in input form." + "@contentValidationErrorQuoteAndReplyInProgress": { + "description": "Content validation error message when a quotation has not completed yet." }, - "loginEmailLabel": "Адрес почты", - "@loginEmailLabel": { - "description": "Label for input when an email is required to log in." + "@contentValidationErrorTooLong": { + "description": "Content validation error message when the message is too long." }, - "loginErrorMissingEmail": "Пожалуйста, введите ваш адрес электронной почты.", - "@loginErrorMissingEmail": { - "description": "Error message when an empty email was provided." + "@contentValidationErrorUploadInProgress": { + "description": "Content validation error message when attachments have not finished uploading." }, - "topicValidationErrorMandatoryButEmpty": "Темы обязательны в этой организации.", - "@topicValidationErrorMandatoryButEmpty": { - "description": "Topic validation error when topic is required but was empty." + "@dialogCancel": { + "description": "Button label in dialogs to cancel." }, - "errorNetworkRequestFailed": "Сбой сетевого запроса", - "@errorNetworkRequestFailed": { - "description": "Error message when a network request fails." + "@dialogClose": { + "description": "Button label in dialogs to close." }, - "errorMalformedResponseWithCause": "Сервер вернул некорректный ответ; HTTP-статус {httpStatus}; {details}", - "@errorMalformedResponseWithCause": { - "description": "Error message when an API call fails because we could not parse the response, with details of the failure.", - "placeholders": { - "httpStatus": { - "type": "int", - "example": "200" - }, - "details": { - "type": "String", - "example": "type 'Null' is not a subtype of type 'String' in type cast" - } - } + "@dialogContinue": { + "description": "Button label in dialogs to proceed." }, - "spoilerDefaultHeaderText": "Спойлер", - "@spoilerDefaultHeaderText": { - "description": "The default header text in a spoiler block ( https://zulip.com/help/spoilers )." + "@discardDraftConfirmationDialogConfirmButton": { + "description": "Label for the 'Discard' button on a confirmation dialog for discarding message text that was typed into the compose box." }, - "markAllAsReadLabel": "Отметить все сообщения как прочитанные", - "@markAllAsReadLabel": { - "description": "Button text to mark messages as read." + "@discardDraftConfirmationDialogTitle": { + "description": "Title for a confirmation dialog for discarding message text that was typed into the compose box." }, - "markAsReadComplete": "Отметка прочтения установлена для {num, plural, =1{1 сообщения} other{{num} шт. сообщений}}.", - "@markAsReadComplete": { - "description": "Message when marking messages as read has completed.", + "@discardDraftForEditConfirmationDialogMessage": { + "description": "Message for a confirmation dialog for discarding message text that was typed into the compose box." + }, + "@discardDraftForOutboxConfirmationDialogMessage": { + "description": "Message for a confirmation dialog when restoring an outbox message, for discarding message text that was typed into the compose box." + }, + "@dmsWithOthersPageTitle": { + "description": "Message list page title for a DM group with others.", "placeholders": { - "num": { - "type": "int", - "example": "4" + "others": { + "example": "Alice, Bob", + "type": "String" } } }, - "markAsReadInProgress": "Помечаем сообщения как прочитанные…", - "@markAsReadInProgress": { - "description": "Progress message when marking messages as read." - }, - "errorMarkAsReadFailedTitle": "Не удалось установить отметку прочтения", - "@errorMarkAsReadFailedTitle": { - "description": "Error title when mark as read action failed." - }, - "userRoleOwner": "Владелец", - "@userRoleOwner": { - "description": "Label for UserRole.owner" - }, - "userRoleAdministrator": "Администратор", - "@userRoleAdministrator": { - "description": "Label for UserRole.administrator" - }, - "userRoleModerator": "Модератор", - "@userRoleModerator": { - "description": "Label for UserRole.moderator" + "@dmsWithYourselfPageTitle": { + "description": "Message list page title for a DM group that only includes yourself." }, - "errorNotificationOpenTitle": "Не удалось открыть оповещения", - "@errorNotificationOpenTitle": { - "description": "Error title when notification opening fails" + "@editAlreadyInProgressMessage": { + "description": "Error message when a message edit cannot be saved because there is another edit already in progress." }, - "switchAccountButton": "Сменить учетную запись", - "@switchAccountButton": { - "description": "Label for main-menu button leading to the choose-account page." + "@editAlreadyInProgressTitle": { + "description": "Error title when a message edit cannot be saved because there is another edit already in progress." }, - "tryAnotherAccountMessage": "Ваша учетная запись на {url} загружается медленно.", - "@tryAnotherAccountMessage": { - "description": "Message that appears on the loading screen after waiting for some time.", - "url": { - "type": "String", - "example": "http://chat.example.com/" - } + "@emojiPickerSearchEmoji": { + "description": "Hint text for the emoji picker search text field." }, - "actionSheetOptionMuteTopic": "Отключить тему", - "@actionSheetOptionMuteTopic": { - "description": "Label for muting a topic on action sheet." + "@emojiReactionsMore": { + "description": "Label for a button opening the emoji picker." }, - "actionSheetOptionUnmuteTopic": "Включить тему", - "@actionSheetOptionUnmuteTopic": { - "description": "Label for unmuting a topic on action sheet." + "@emptyMessageList": { + "description": "Placeholder for some message-list pages when there are no messages." }, - "errorLoginFailedTitle": "Не удалось войти в систему", - "@errorLoginFailedTitle": { - "description": "Error title for login when signing into a Zulip server fails." + "@emptyMessageListSearch": { + "description": "Placeholder for the 'Search' page when there are no messages." }, - "errorLoginCouldNotConnect": "Не удалось подключиться к серверу:\n{url}", - "@errorLoginCouldNotConnect": { - "description": "Error message when the app could not connect to the server.", + "@errorAccountLoggedIn": { + "description": "Error message on attempting to log into an account that's already logged in.", "placeholders": { - "url": { - "type": "String", - "example": "http://example.com/" + "email": { + "example": "user@example.com", + "type": "String" + }, + "server": { + "example": "https://example.com", + "type": "String" } } }, - "errorMessageDoesNotSeemToExist": "Это сообщение, похоже, отсутствует.", - "@errorMessageDoesNotSeemToExist": { - "description": "Error message when loading a message that does not exist." + "@errorAccountLoggedInTitle": { + "description": "Error title on attempting to log into an account that's already logged in." }, - "errorServerMessage": "Ответ сервера:\n\n{message}", - "@errorServerMessage": { - "description": "Error message that quotes an error from the server.", - "placeholders": { - "message": { - "type": "String", - "example": "Invalid format" - } - } + "@errorBannerCannotPostInChannelLabel": { + "description": "Error-banner text replacing the compose box when you do not have permission to send a message to the channel." }, - "errorConnectingToServerShort": "Ошибка подключения к Zulip. Повторяем попытку…", - "@errorConnectingToServerShort": { - "description": "Short error message for a generic unknown error connecting to the server." + "@errorBannerDeactivatedDmLabel": { + "description": "Label text for error banner when sending a message to one or multiple deactivated users." }, - "errorConnectingToServerDetails": "Ошибка подключения к Zulip на {serverUrl}. Повторим попытку:\n\n{error}", "@errorConnectingToServerDetails": { "description": "Dialog error message for a generic unknown error connecting to the server with details.", "placeholders": { - "serverUrl": { - "type": "String", - "example": "http://example.com/" - }, "error": { - "type": "String", - "example": "Invalid format" + "example": "Invalid format", + "type": "String" + }, + "serverUrl": { + "example": "http://example.com/", + "type": "String" } } }, - "errorMuteTopicFailed": "Не удалось отключить тему", - "@errorMuteTopicFailed": { - "description": "Error message when muting a topic failed." - }, - "errorUnfollowTopicFailed": "Не удалось прекратить отслеживать тему", - "@errorUnfollowTopicFailed": { - "description": "Error message when unfollowing a topic failed." - }, - "composeBoxGenericContentHint": "Ввести сообщение", - "@composeBoxGenericContentHint": { - "description": "Hint text for content input when sending a message." + "@errorConnectingToServerShort": { + "description": "Short error message for a generic unknown error connecting to the server." }, - "composeBoxSendTooltip": "Отправить", - "@composeBoxSendTooltip": { - "description": "Tooltip for send button in compose box." + "@errorCopyingFailed": { + "description": "Error message when copying the text of a message to the user's system clipboard failed." }, - "composeBoxTopicHintText": "Тема", - "@composeBoxTopicHintText": { - "description": "Hint text for topic input widget in compose box." + "@errorCouldNotConnectTitle": { + "description": "Error title when the app could not connect to the server." }, - "messageListGroupYouWithYourself": "Сообщения с собой", - "@messageListGroupYouWithYourself": { - "description": "Message list recipient header for a DM group that only includes yourself." + "@errorCouldNotEditMessageTitle": { + "description": "Error title when an exception prevented us from opening the compose box for editing a message." }, - "contentValidationErrorTooLong": "Длина сообщения не должна превышать 10000 символов.", - "@contentValidationErrorTooLong": { - "description": "Content validation error message when the message is too long." + "@errorCouldNotFetchMessageSource": { + "description": "Error message when the source of a message could not be fetched." }, - "errorDialogTitle": "Ошибка", - "@errorDialogTitle": { - "description": "Generic title for error dialog." + "@errorCouldNotOpenLink": { + "description": "Error message when opening a link failed.", + "placeholders": { + "url": { + "example": "https://chat.example.com", + "type": "String" + } + } }, - "serverUrlValidationErrorNoUseEmail": "Пожалуйста, введите URL-адрес сервера, а не свой email.", - "@serverUrlValidationErrorNoUseEmail": { - "description": "Error message when URL looks like an email" + "@errorCouldNotOpenLinkTitle": { + "description": "Error title when opening a link failed." }, - "errorVideoPlayerFailed": "Не удается воспроизвести видео.", - "@errorVideoPlayerFailed": { - "description": "Error message when a video fails to play." + "@errorCouldNotShowUserProfile": { + "description": "Message that appears on the user profile page when the profile cannot be shown." }, - "inboxPageTitle": "Входящие", - "@inboxPageTitle": { - "description": "Title for the page with unreads." + "@errorDialogContinue": { + "description": "Button label in error dialogs to acknowledge the error and close the dialog." }, - "dialogClose": "Закрыть", - "@dialogClose": { - "description": "Button label in dialogs to close." + "@errorDialogLearnMore": { + "description": "Button label in error dialogs to open a web page with more information." }, - "snackBarDetails": "Подробности", - "@snackBarDetails": { - "description": "Button label for snack bar button that opens a dialog with more details." + "@errorDialogTitle": { + "description": "Generic title for error dialog." }, - "errorMalformedResponse": "Сервер вернул некорректный ответ; HTTP-статус {httpStatus}", - "@errorMalformedResponse": { - "description": "Error message when an API call fails because we could not parse the response.", + "@errorFailedToUploadFileTitle": { + "description": "Error title when the specified file failed to upload.", "placeholders": { - "httpStatus": { - "type": "int", - "example": "200" + "filename": { + "example": "file.txt", + "type": "String" } } }, - "today": "Сегодня", - "@today": { - "description": "Term to use to reference the current day." + "@errorFilesTooLarge": { + "description": "Error message when attached files are too large in size.", + "placeholders": { + "listMessage": { + "example": "foo.txt\nbar.txt", + "type": "String" + }, + "maxFileUploadSizeMib": { + "example": "15", + "type": "int" + }, + "num": { + "example": "2", + "type": "int" + } + } }, - "userRoleUnknown": "Неизвестно", - "@userRoleUnknown": { - "description": "Label for UserRole.unknown" + "@errorFilesTooLargeTitle": { + "description": "Error title when attached files are too large in size.", + "placeholders": { + "num": { + "example": "4", + "type": "int" + } + } }, - "combinedFeedPageTitle": "Объединенная лента", - "@combinedFeedPageTitle": { - "description": "Page title for the 'Combined feed' message view." + "@errorFollowTopicFailed": { + "description": "Error message when following a topic failed." }, - "twoPeopleTyping": "{typist} и {otherTypist} набирают сообщения…", - "@twoPeopleTyping": { - "description": "Text to display when there are two users typing.", + "@errorHandlingEventDetails": { + "description": "Error details on failing to handle a Zulip server event.", "placeholders": { - "typist": { - "type": "String", - "example": "Alice" + "error": { + "example": "Unexpected null value", + "type": "String" }, - "otherTypist": { - "type": "String", - "example": "Bob" + "event": { + "example": "UpdateMessageEvent(id: 123, messageIds: [2345, 3456], newTopic: 'dinner')", + "type": "String" + }, + "serverUrl": { + "example": "https://chat.example.com", + "type": "String" } } }, - "manyPeopleTyping": "Несколько человек набирают сообщения…", - "@manyPeopleTyping": { - "description": "Text to display when there are multiple users typing." + "@errorHandlingEventTitle": { + "description": "Error title on failing to handle a Zulip server event." }, - "messageIsEditedLabel": "ИЗМЕНЕНО", - "@messageIsEditedLabel": { - "description": "Label for an edited message. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + "@errorInvalidApiKeyMessage": { + "description": "Error message in the dialog for invalid API key.", + "placeholders": { + "url": { + "example": "http://chat.example.com/", + "type": "String" + } + } }, - "errorReactionAddingFailedTitle": "Не удалось добавить реакцию", - "@errorReactionAddingFailedTitle": { - "description": "Error title when adding a message reaction fails" + "@errorInvalidResponse": { + "description": "Error message when an API call returned an invalid response." }, - "errorReactionRemovingFailedTitle": "Не удалось удалить реакцию", - "@errorReactionRemovingFailedTitle": { - "description": "Error title when removing a message reaction fails" - }, - "emojiReactionsMore": "еще", - "@emojiReactionsMore": { - "description": "Label for a button opening the emoji picker." - }, - "emojiPickerSearchEmoji": "Поиск эмодзи", - "@emojiPickerSearchEmoji": { - "description": "Hint text for the emoji picker search text field." - }, - "errorMarkAsUnreadFailedTitle": "Не удалось снять отметку прочтения", - "@errorMarkAsUnreadFailedTitle": { - "description": "Error title when mark as unread action failed." + "@errorLoginCouldNotConnect": { + "description": "Error message when the app could not connect to the server.", + "placeholders": { + "url": { + "example": "http://example.com/", + "type": "String" + } + } }, - "actionSheetOptionFollowTopic": "Отслеживать тему", - "@actionSheetOptionFollowTopic": { - "description": "Label for following a topic on action sheet." + "@errorLoginFailedTitle": { + "description": "Error title for login when signing into a Zulip server fails." }, - "actionSheetOptionUnfollowTopic": "Не отслеживать тему", - "@actionSheetOptionUnfollowTopic": { - "description": "Label for unfollowing a topic on action sheet." + "@errorLoginInvalidInputTitle": { + "description": "Error title for login when input is invalid." }, - "errorFilesTooLarge": "Размер {num, plural, =1{файла} other{{num} файлов}} превышает предел для сервера {maxFileUploadSizeMib} МиБ, загрузка невозможна:\n\n{listMessage}", - "@errorFilesTooLarge": { - "description": "Error message when attached files are too large in size.", + "@errorMalformedResponse": { + "description": "Error message when an API call fails because we could not parse the response.", "placeholders": { - "num": { - "type": "int", - "example": "2" - }, - "maxFileUploadSizeMib": { - "type": "int", - "example": "15" - }, - "listMessage": { - "type": "String", - "example": "foo.txt\nbar.txt" + "httpStatus": { + "example": "200", + "type": "int" } } }, - "errorHandlingEventDetails": "Ошибка обработки события Zulip от {serverUrl}; повторим попытку.\n\nОшибка: {error}\n\nСобытие: {event}", - "@errorHandlingEventDetails": { - "description": "Error details on failing to handle a Zulip server event.", + "@errorMalformedResponseWithCause": { + "description": "Error message when an API call fails because we could not parse the response, with details of the failure.", "placeholders": { - "serverUrl": { - "type": "String", - "example": "https://chat.example.com" - }, - "error": { - "type": "String", - "example": "Unexpected null value" + "details": { + "example": "type 'Null' is not a subtype of type 'String' in type cast", + "type": "String" }, - "event": { - "type": "String", - "example": "UpdateMessageEvent(id: 123, messageIds: [2345, 3456], newTopic: 'dinner')" + "httpStatus": { + "example": "200", + "type": "int" } } }, - "errorHandlingEventTitle": "Ошибка обработки события Zulip. Повторная попытка соединения…", - "@errorHandlingEventTitle": { - "description": "Error title on failing to handle a Zulip server event." + "@errorMarkAsReadFailedTitle": { + "description": "Error title when mark as read action failed." }, - "successMessageTextCopied": "Текст сообщения скопирован", - "@successMessageTextCopied": { - "description": "Message when content of a message was copied to the user's system clipboard." + "@errorMarkAsUnreadFailedTitle": { + "description": "Error title when mark as unread action failed." }, - "errorInvalidResponse": "Сервер отправил недопустимый ответ.", - "@errorInvalidResponse": { - "description": "Error message when an API call returned an invalid response." + "@errorMessageDoesNotSeemToExist": { + "description": "Error message when loading a message that does not exist." }, - "successMessageLinkCopied": "Ссылка на сообщение скопирована", - "@successMessageLinkCopied": { - "description": "Message when link of a message was copied to the user's system clipboard." + "@errorMessageEditNotSaved": { + "description": "Error message for compose box when a message edit could not be saved." }, - "contentValidationErrorQuoteAndReplyInProgress": "Пожалуйста, дождитесь завершения цитирования.", - "@contentValidationErrorQuoteAndReplyInProgress": { - "description": "Content validation error message when a quotation has not completed yet." + "@errorMessageNotSent": { + "description": "Error message for compose box when a message could not be sent." }, - "unknownUserName": "(неизвестный пользователь)", - "@unknownUserName": { - "description": "Name placeholder to use for a user when we don't know their name." + "@errorMuteTopicFailed": { + "description": "Error message when muting a topic failed." }, - "errorDialogContinue": "OK", - "@errorDialogContinue": { - "description": "Button label in error dialogs to acknowledge the error and close the dialog." + "@errorNetworkRequestFailed": { + "description": "Error message when a network request fails." }, - "errorUnmuteTopicFailed": "Не удалось включить тему", - "@errorUnmuteTopicFailed": { - "description": "Error message when unmuting a topic failed." + "@errorNotificationOpenAccountNotFound": { + "description": "Error message when the account associated with the notification could not be found" }, - "errorFollowTopicFailed": "Не удалось начать отслеживать тему", - "@errorFollowTopicFailed": { - "description": "Error message when following a topic failed." + "@errorNotificationOpenTitle": { + "description": "Error title when notification opening fails" }, - "dialogContinue": "Продолжить", - "@dialogContinue": { - "description": "Button label in dialogs to proceed." + "@errorQuotationFailed": { + "description": "Error message when quoting a message failed." }, - "composeBoxUploadingFilename": "Загрузка {filename}…", - "@composeBoxUploadingFilename": { - "description": "Placeholder in compose box showing the specified file is currently uploading.", + "@errorReactionAddingFailedTitle": { + "description": "Error title when adding a message reaction fails" + }, + "@errorReactionRemovingFailedTitle": { + "description": "Error title when removing a message reaction fails" + }, + "@errorRequestFailed": { + "description": "Error message when an API call fails.", "placeholders": { - "filename": { - "type": "String", - "example": "file.txt" + "httpStatus": { + "example": "500", + "type": "int" } } }, - "messageListGroupYouAndOthers": "Вы и {others}", - "@messageListGroupYouAndOthers": { - "description": "Message list recipient header for a DM group with others.", + "@errorResolveTopicFailedTitle": { + "description": "Error title when marking a topic as resolved failed." + }, + "@errorServerMessage": { + "description": "Error message that quotes an error from the server.", "placeholders": { - "others": { - "type": "String", - "example": "Alice, Bob" + "message": { + "example": "Invalid format", + "type": "String" } } }, - "markAsUnreadComplete": "Отметка прочтения снята для {num, plural, =1{1 сообщения} other{{num} шт. сообщений}}.", - "@markAsUnreadComplete": { - "description": "Message when marking messages as unread has completed.", + "@errorServerVersionUnsupportedMessage": { + "description": "Error message in the dialog for when the Zulip Server version is unsupported.", "placeholders": { - "num": { - "type": "int", - "example": "4" + "minSupportedZulipVersion": { + "example": "4.0", + "type": "String" + }, + "url": { + "example": "http://chat.example.com/", + "type": "String" + }, + "zulipVersion": { + "example": "3.2", + "type": "String" } } }, - "markAsUnreadInProgress": "Помечаем сообщения как непрочитанные…", - "@markAsUnreadInProgress": { - "description": "Progress message when marking messages as unread." - }, - "channelsPageTitle": "Каналы", - "@channelsPageTitle": { - "description": "Title for the page with a list of subscribed channels." + "@errorSharingFailed": { + "description": "Error message when sharing a message failed." }, - "pollWidgetQuestionMissing": "Нет вопроса.", - "@pollWidgetQuestionMissing": { - "description": "Text to display for a poll when the question is missing" + "@errorStarMessageFailedTitle": { + "description": "Error title when starring a message failed." }, - "userRoleGuest": "Гость", - "@userRoleGuest": { - "description": "Label for UserRole.guest" + "@errorUnfollowTopicFailed": { + "description": "Error message when unfollowing a topic failed." }, - "channelFeedButtonTooltip": "Лента канала", - "@channelFeedButtonTooltip": { - "description": "Tooltip for button to navigate to a given channel's feed" + "@errorUnmuteTopicFailed": { + "description": "Error message when unmuting a topic failed." }, - "messageIsMovedLabel": "ПЕРЕМЕЩЕНО", - "@messageIsMovedLabel": { - "description": "Label for a moved message. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + "@errorUnresolveTopicFailedTitle": { + "description": "Error title when marking a topic as unresolved failed." }, - "onePersonTyping": "{typist} набирает сообщение…", - "@onePersonTyping": { - "description": "Text to display when there is one user typing.", - "placeholders": { - "typist": { - "type": "String", - "example": "Alice" - } - } + "@errorUnstarMessageFailedTitle": { + "description": "Error title when unstarring a message failed." }, - "contentValidationErrorUploadInProgress": "Пожалуйста, дождитесь завершения загрузки.", - "@contentValidationErrorUploadInProgress": { - "description": "Content validation error message when attachments have not finished uploading." + "@errorVideoPlayerFailed": { + "description": "Error message when a video fails to play." }, - "dialogCancel": "Отмена", - "@dialogCancel": { - "description": "Button label in dialogs to cancel." + "@errorWebAuthOperationalError": { + "description": "Error message when third-party authentication has an operational error (not necessarily caused by invalid credentials)." }, - "lightboxCopyLinkTooltip": "Скопировать ссылку", - "@lightboxCopyLinkTooltip": { - "description": "Tooltip in lightbox for the copy link action." + "@errorWebAuthOperationalErrorTitle": { + "description": "Error title when third-party authentication has an operational error (not necessarily caused by invalid credentials)." }, - "recentDmConversationsPageTitle": "Личные сообщения", - "@recentDmConversationsPageTitle": { - "description": "Title for the page with a list of DM conversations." + "@experimentalFeatureSettingsPageTitle": { + "description": "Title of settings page for experimental, in-development features" }, - "mainMenuMyProfile": "Мой профиль", - "@mainMenuMyProfile": { - "description": "Label for main-menu button leading to the user's own profile." + "@experimentalFeatureSettingsWarning": { + "description": "Warning text on settings page for experimental, in-development features" }, - "errorRequestFailed": "Сбой сетевого запроса: HTTP-статус {httpStatus}", - "@errorRequestFailed": { - "description": "Error message when an API call fails.", + "@filenameAndSizeInMiB": { + "description": "The name of a file, and its size in mebibytes.", "placeholders": { - "httpStatus": { - "type": "int", - "example": "500" + "filename": { + "example": "foo.txt", + "type": "String" + }, + "size": { + "example": "20.2", + "type": "String" } } }, - "userRoleMember": "Участник", - "@userRoleMember": { - "description": "Label for UserRole.member" + "@inboxEmptyPlaceholder": { + "description": "Centered text on the 'Inbox' page saying that there is no content to show." }, - "yesterday": "Вчера", - "@yesterday": { - "description": "Term to use to reference the previous day." + "@inboxPageTitle": { + "description": "Title for the page with unreads." }, - "errorSharingFailed": "Не удалось поделиться", - "@errorSharingFailed": { - "description": "Error message when sharing a message failed." + "@initialAnchorSettingDescription": { + "description": "Description of setting controlling initial anchor of message list." }, - "successLinkCopied": "Ссылка скопирована", - "@successLinkCopied": { - "description": "Success message after copy link action completed." + "@initialAnchorSettingFirstUnreadAlways": { + "description": "Label for a value of setting controlling initial anchor of message list." }, - "composeBoxAttachFilesTooltip": "Прикрепить файлы", - "@composeBoxAttachFilesTooltip": { - "description": "Tooltip for compose box icon to attach a file to the message." + "@initialAnchorSettingFirstUnreadConversations": { + "description": "Label for a value of setting controlling initial anchor of message list." }, - "errorBannerDeactivatedDmLabel": "Нельзя отправить сообщение отключенным пользователям.", - "@errorBannerDeactivatedDmLabel": { - "description": "Label text for error banner when sending a message to one or multiple deactivated users." + "@initialAnchorSettingNewestAlways": { + "description": "Label for a value of setting controlling initial anchor of message list." }, - "errorBannerCannotPostInChannelLabel": "У вас нет права писать в этом канале.", - "@errorBannerCannotPostInChannelLabel": { - "description": "Error-banner text replacing the compose box when you do not have permission to send a message to the channel." + "@initialAnchorSettingTitle": { + "description": "Title of setting controlling initial anchor of message list." }, - "composeBoxAttachFromCameraTooltip": "Сделать снимок", - "@composeBoxAttachFromCameraTooltip": { - "description": "Tooltip for compose box icon to attach an image from the camera to the message." + "@invisibleMode": { + "description": "Label for the 'Invisible mode' switch on the profile page." }, - "composeBoxAttachMediaTooltip": "Прикрепить изображения или видео", - "@composeBoxAttachMediaTooltip": { - "description": "Tooltip for compose box icon to attach media to the message." + "@lightboxCopyLinkTooltip": { + "description": "Tooltip in lightbox for the copy link action." }, - "composeBoxDmContentHint": "Сообщение для @{user}", - "@composeBoxDmContentHint": { - "description": "Hint text for content input when sending a message to one other person.", - "placeholders": { - "user": { - "type": "String", - "example": "channel name" - } - } + "@lightboxVideoCurrentPosition": { + "description": "The current playback position of the video playing in the lightbox." + }, + "@lightboxVideoDuration": { + "description": "The total duration of the video playing in the lightbox." + }, + "@logOutConfirmationDialogConfirmButton": { + "description": "Label for the 'Log out' button on a confirmation dialog for logging out." + }, + "@logOutConfirmationDialogMessage": { + "description": "Message for a confirmation dialog for logging out." + }, + "@logOutConfirmationDialogTitle": { + "description": "Title for a confirmation dialog for logging out." + }, + "@loginAddAnAccountPageTitle": { + "description": "Title for page to add a Zulip account." + }, + "@loginEmailLabel": { + "description": "Label for input when an email is required to log in." + }, + "@loginErrorMissingEmail": { + "description": "Error message when an empty email was provided." + }, + "@loginErrorMissingPassword": { + "description": "Error message when an empty password was provided." }, - "loginErrorMissingUsername": "Пожалуйста, введите ваше имя пользователя.", "@loginErrorMissingUsername": { "description": "Error message when an empty username was provided." }, - "loginPasswordLabel": "Пароль", + "@loginFormSubmitLabel": { + "description": "Button text to submit login credentials." + }, + "@loginHidePassword": { + "description": "Icon label for button to hide password in input form." + }, + "@loginMethodDivider": { + "description": "Text on the divider between the username/password form and the third-party login options. Uppercase (for languages with letter case)." + }, + "@loginPageTitle": { + "description": "Title for login page." + }, "@loginPasswordLabel": { "description": "Label for password input field." }, - "loginErrorMissingPassword": "Пожалуйста, введите пароль.", - "@loginErrorMissingPassword": { - "description": "Error message when an empty password was provided." + "@loginServerUrlLabel": { + "description": "Label in login page for Zulip server URL entry." }, - "loginUsernameLabel": "Имя пользователя", "@loginUsernameLabel": { "description": "Label for input when a username is required to log in." }, - "topicValidationErrorTooLong": "Длина темы не должна превышать 60 символов.", - "@topicValidationErrorTooLong": { - "description": "Topic validation error when topic is too long." + "@mainMenuMyProfile": { + "description": "Label for main-menu button leading to the user's own profile." }, - "serverUrlValidationErrorEmpty": "Пожалуйста, введите URL-адрес.", - "@serverUrlValidationErrorEmpty": { - "description": "Error message when URL is empty" + "@manyPeopleTyping": { + "description": "Text to display when there are multiple users typing." }, - "serverUrlValidationErrorInvalidUrl": "Пожалуйста, введите корректный URL-адрес.", - "@serverUrlValidationErrorInvalidUrl": { - "description": "Error message when URL is not in a valid format." + "@markAllAsReadLabel": { + "description": "Button text to mark messages as read." }, - "mentionsPageTitle": "Упоминания", - "@mentionsPageTitle": { - "description": "Page title for the 'Mentions' message view." + "@markAsReadComplete": { + "description": "Message when marking messages as read has completed.", + "placeholders": { + "num": { + "example": "4", + "type": "int" + } + } }, - "notifGroupDmConversationLabel": "{senderFullName} вам и еще {numOthers, plural, =1{1 чел.} other{{numOthers} чел.}}", - "@notifGroupDmConversationLabel": { - "description": "Label for a group DM conversation notification.", + "@markAsReadInProgress": { + "description": "Progress message when marking messages as read." + }, + "@markAsUnreadComplete": { + "description": "Message when marking messages as unread has completed.", "placeholders": { - "senderFullName": { - "type": "String", - "example": "Alice" - }, - "numOthers": { - "type": "int", - "example": "4" + "num": { + "example": "4", + "type": "int" } } }, - "notifSelfUser": "Вы", - "@notifSelfUser": { - "description": "Display name for the user themself, to show after replying in an Android notification" + "@markAsUnreadInProgress": { + "description": "Progress message when marking messages as unread." }, - "pollWidgetOptionsMissing": "В опросе пока нет вариантов ответа.", - "@pollWidgetOptionsMissing": { - "description": "Text to display for a poll when it has no options" + "@markReadOnScrollSettingAlways": { + "description": "Label for a value of setting controlling which message-list views should mark read on scroll." }, - "errorMessageNotSent": "Сообщение не отправлено", - "@errorMessageNotSent": { - "description": "Error message for compose box when a message could not be sent." + "@markReadOnScrollSettingConversations": { + "description": "Label for a value of setting controlling which message-list views should mark read on scroll." }, - "openLinksWithInAppBrowser": "Открывать ссылки внутри приложения", - "@openLinksWithInAppBrowser": { - "description": "Label for toggling setting to open links with in-app browser" + "@markReadOnScrollSettingConversationsDescription": { + "description": "Description for a value of setting controlling which message-list views should mark read on scroll." }, - "errorCouldNotShowUserProfile": "Не удалось показать профиль пользователя.", - "@errorCouldNotShowUserProfile": { - "description": "Message that appears on the user profile page when the profile cannot be shown." + "@markReadOnScrollSettingDescription": { + "description": "Description of setting controlling which message-list views should mark read on scroll." }, - "errorCouldNotOpenLinkTitle": "Не удалось открыть ссылку", - "@errorCouldNotOpenLinkTitle": { - "description": "Error title when opening a link failed." + "@markReadOnScrollSettingNever": { + "description": "Label for a value of setting controlling which message-list views should mark read on scroll." }, - "composeBoxLoadingMessage": "(загрузка сообщения {messageId})", - "@composeBoxLoadingMessage": { - "description": "Placeholder in compose box showing the quoted message is currently loading.", - "placeholders": { - "messageId": { - "type": "int", - "example": "1234" - } - } + "@markReadOnScrollSettingTitle": { + "description": "Title of setting controlling which message-list views should mark read on scroll." }, - "dmsWithYourselfPageTitle": "ЛС с собой", - "@dmsWithYourselfPageTitle": { - "description": "Message list page title for a DM group that only includes yourself." + "@mentionsPageTitle": { + "description": "Page title for the 'Mentions' message view." }, - "dmsWithOthersPageTitle": "ЛС с {others}", - "@dmsWithOthersPageTitle": { - "description": "Message list page title for a DM group with others.", + "@messageIsEditedLabel": { + "description": "Label for an edited message. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + }, + "@messageIsMovedLabel": { + "description": "Label for a moved message. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + }, + "@messageListGroupYouAndOthers": { + "description": "Message list recipient header for a DM group with others.", "placeholders": { "others": { - "type": "String", - "example": "Alice, Bob" + "example": "Alice, Bob", + "type": "String" } } }, - "lightboxVideoDuration": "Длительность видео", - "@lightboxVideoDuration": { - "description": "The total duration of the video playing in the lightbox." + "@messageListGroupYouWithYourself": { + "description": "Message list recipient header for a DM group that only includes yourself." }, - "pinnedSubscriptionsLabel": "Закреплены", - "@pinnedSubscriptionsLabel": { - "description": "Label for the list of pinned subscribed channels." + "@messageNotSentLabel": { + "description": "Text on a message in the message list saying that a send message request failed. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" }, - "unpinnedSubscriptionsLabel": "Откреплены", - "@unpinnedSubscriptionsLabel": { - "description": "Label for the list of unpinned subscribed channels." + "@mutedUser": { + "description": "Name for a muted user to display all over the app." }, - "wildcardMentionAll": "все", - "@wildcardMentionAll": { - "description": "Text for \"@all\" wildcard-mention autocomplete option when writing a channel or DM message." + "@newDmFabButtonLabel": { + "description": "Label for the floating action button (FAB) that opens the new DM sheet." }, - "noEarlierMessages": "Предшествующих сообщений нет", - "@noEarlierMessages": { - "description": "Text to show at the start of a message list if there are no earlier messages." + "@newDmSheetComposeButtonLabel": { + "description": "Label for the compose button in the new DM sheet that starts composing a message to the selected users." }, - "actionSheetOptionMarkChannelAsRead": "Отметить канал как прочитанный", - "@actionSheetOptionMarkChannelAsRead": { - "description": "Label for marking a channel as read." + "@newDmSheetNoUsersFound": { + "description": "Message shown in the new DM sheet when no users match the search." }, - "actionSheetOptionMarkTopicAsRead": "Отметить тему как прочитанную", - "@actionSheetOptionMarkTopicAsRead": { - "description": "Option to mark a specific topic as read in the action sheet." + "@newDmSheetScreenTitle": { + "description": "Title displayed at the top of the new DM screen." }, - "reactedEmojiSelfUser": "Вы", - "@reactedEmojiSelfUser": { - "description": "Display name for the user themself, to show on an emoji reaction added by the user." + "@newDmSheetSearchHintEmpty": { + "description": "Hint text for the search bar when no users are selected" }, - "wildcardMentionEveryone": "каждый", - "@wildcardMentionEveryone": { - "description": "Text for \"@everyone\" wildcard-mention autocomplete option when writing a channel or DM message." + "@newDmSheetSearchHintSomeSelected": { + "description": "Hint text for the search bar when at least one user is selected" }, - "zulipAppTitle": "Zulip", - "@zulipAppTitle": { - "description": "The name of Zulip. This should be either 'Zulip' or a transliteration." + "@noEarlierMessages": { + "description": "Text to show at the start of a message list if there are no earlier messages." }, - "actionSheetOptionResolveTopic": "Поставить отметку \"решено\"", - "@actionSheetOptionResolveTopic": { - "description": "Label for the 'Mark as resolved' button on the topic action sheet." + "@noStatusText": { + "description": "The text part of the status button sub-label in self-user profile page when status text is not set." }, - "filenameAndSizeInMiB": "{filename}: {size} МиБ", - "@filenameAndSizeInMiB": { - "description": "The name of a file, and its size in mebibytes.", + "@notifGroupDmConversationLabel": { + "description": "Label for a group DM conversation notification.", "placeholders": { - "filename": { - "type": "String", - "example": "foo.txt" + "numOthers": { + "example": "4", + "type": "int" }, - "size": { - "type": "String", - "example": "20.2" + "senderFullName": { + "example": "Alice", + "type": "String" } } }, - "errorCouldNotOpenLink": "Не удалось открыть ссылку: {url}", - "@errorCouldNotOpenLink": { - "description": "Error message when opening a link failed.", - "placeholders": { - "url": { - "type": "String", - "example": "https://chat.example.com" - } - } + "@notifSelfUser": { + "description": "Display name for the user themself, to show after replying in an Android notification" }, - "composeBoxChannelContentHint": "Сообщение для {destination}", - "@composeBoxChannelContentHint": { - "description": "Hint text for content input when sending a message to a channel.", + "@onePersonTyping": { + "description": "Text to display when there is one user typing.", "placeholders": { - "destination": { - "type": "String", - "example": "#channel name > topic name" + "typist": { + "example": "Alice", + "type": "String" } } }, - "unknownChannelName": "(неизвестный канал)", - "@unknownChannelName": { - "description": "Replacement name for channel when it cannot be found in the store." + "@openLinksWithInAppBrowser": { + "description": "Label for toggling setting to open links with in-app browser" }, - "recentDmConversationsSectionHeader": "Личные сообщения", - "@recentDmConversationsSectionHeader": { - "description": "Heading for direct messages section on the 'Inbox' message view." + "@permissionsDeniedCameraAccess": { + "description": "Message for dialog asking the user to grant permissions for camera access." + }, + "@permissionsDeniedReadExternalStorage": { + "description": "Message for dialog asking the user to grant permissions for external storage read access." + }, + "@permissionsNeededOpenSettings": { + "description": "Button label for permissions dialog button that opens the system settings screen." + }, + "@permissionsNeededTitle": { + "description": "Title for dialog asking the user to grant additional permissions." + }, + "@pinnedSubscriptionsLabel": { + "description": "Label for the list of pinned subscribed channels." }, - "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" + "example": "Alice, Bob, Chad", + "type": "String" } } }, - "settingsPageTitle": "Настройки", - "@settingsPageTitle": { - "description": "Title for the settings page." + "@pollWidgetOptionsMissing": { + "description": "Text to display for a poll when it has no options" }, - "actionSheetOptionUnresolveTopic": "Снять отметку \"решено\"", - "@actionSheetOptionUnresolveTopic": { - "description": "Label for the 'Mark as unresolved' button on the topic action sheet." + "@pollWidgetQuestionMissing": { + "description": "Text to display for a poll when the question is missing" }, - "errorResolveTopicFailedTitle": "Не удалось отметить тему как решенную", - "@errorResolveTopicFailedTitle": { - "description": "Error title when marking a topic as resolved failed." + "@preparingEditMessageContentInput": { + "description": "Hint text for content input when the compose box is preparing to edit a message." }, - "errorUnresolveTopicFailedTitle": "Не удалось отметить тему как нерешенную", - "@errorUnresolveTopicFailedTitle": { - "description": "Error title when marking a topic as unresolved failed." + "@profileButtonSendDirectMessage": { + "description": "Label for button in profile screen to navigate to DMs with the shown user." }, - "lightboxVideoCurrentPosition": "Место воспроизведения", - "@lightboxVideoCurrentPosition": { - "description": "The current playback position of the video playing in the lightbox." + "@reactedEmojiSelfUser": { + "description": "Display name for the user themself, to show on an emoji reaction added by the user." }, - "wildcardMentionChannel": "канал", - "@wildcardMentionChannel": { - "description": "Text for \"@channel\" wildcard-mention autocomplete option when writing a channel message." + "@reactionChipLabel": { + "description": "Text describing a reaction chip, with the emoji name and a list or number of votes. (An accessibility label for assistive technology.)", + "placeholders": { + "emojiName": { + "example": "working_on_it", + "type": "String" + }, + "votes": { + "example": "You, Chris, Greg", + "type": "String" + } + } }, - "wildcardMentionStreamDescription": "Оповестить канал", - "@wildcardMentionStreamDescription": { - "description": "Description for \"@all\", \"@everyone\", and \"@stream\" wildcard-mention autocomplete options when writing a channel message in older servers." + "@reactionChipVotesYouAndOthers": { + "description": "The number of votes on a reaction chip, where the self-user and at least one other user has voted. (An accessibility label for assistive technology.)", + "placeholders": { + "otherUsersCount": { + "example": "4", + "type": "int" + } + } }, - "themeSettingTitle": "РЕЖИМ", - "@themeSettingTitle": { - "description": "Title for theme setting. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + "@reactionChipsLabel": { + "description": "Text identifying the container of reaction chips on a message. (An accessibility label for assistive technology.)" }, - "themeSettingDark": "Темный", - "@themeSettingDark": { - "description": "Label for dark theme setting." + "@recentDmConversationsEmptyPlaceholder": { + "description": "Centered text on the 'Direct messages' page saying that there is no content to show." }, - "themeSettingLight": "Светлый", - "@themeSettingLight": { - "description": "Label for light theme setting." + "@recentDmConversationsPageTitle": { + "description": "Title for the page with a list of DM conversations." }, - "themeSettingSystem": "Системный", - "@themeSettingSystem": { - "description": "Label for system theme setting." + "@recentDmConversationsSectionHeader": { + "description": "Heading for direct messages section on the 'Inbox' message view." + }, + "@revealButtonLabel": { + "description": "Label for the button revealing hidden message from a muted sender in message list." + }, + "@savingMessageEditFailedLabel": { + "description": "Text on a message in the message list saying that a message edit request failed. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + }, + "@savingMessageEditLabel": { + "description": "Text on a message in the message list saying that a message edit request is processing. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" }, - "scrollToBottomTooltip": "Пролистать вниз", "@scrollToBottomTooltip": { "description": "Tooltip for button to scroll to bottom." }, - "errorCouldNotConnectTitle": "Нет связи с сервером", - "@errorCouldNotConnectTitle": { - "description": "Error title when the app could not connect to the server." + "@searchMessagesClearButtonTooltip": { + "description": "Tooltip for the 'x' button in the search text field." }, - "errorInvalidApiKeyMessage": "Не удалось войти в вашу учетную запись {url}. Попробуйте еще раз или используйте другую учетную запись.", - "@errorInvalidApiKeyMessage": { - "description": "Error message in the dialog for invalid API key.", + "@searchMessagesHintText": { + "description": "Hint text for the message search text field." + }, + "@searchMessagesPageTitle": { + "description": "Page title for the 'Search' message view." + }, + "@seeWhoReactedSheetEmojiNameWithVoteCount": { + "description": "In the 'See who reacted' sheet, an emoji reaction's name and how many votes it has. (An accessibility label for assistive technology.)", "placeholders": { - "url": { - "type": "String", - "example": "http://chat.example.com/" + "emojiName": { + "example": "working_on_it", + "type": "String" + }, + "num": { + "example": "2", + "type": "int" } } }, - "appVersionUnknownPlaceholder": "(…)", - "@appVersionUnknownPlaceholder": { - "description": "Placeholder to show in place of the app version when it is unknown." + "@seeWhoReactedSheetHeaderLabel": { + "description": "In the 'See who reacted' sheet, a label for the list of emoji reactions at the top, with the total number of reactions. (An accessibility label for assistive technology.)", + "placeholders": { + "num": { + "example": "2", + "type": "int" + } + } }, - "wildcardMentionChannelDescription": "Оповестить канал", - "@wildcardMentionChannelDescription": { - "description": "Description for \"@all\", \"@everyone\", \"@channel\", and \"@stream\" wildcard-mention autocomplete options when writing a channel message." + "@seeWhoReactedSheetNoReactions": { + "description": "Explanation on the 'See who reacted' sheet when the message has no reactions (because they were removed after the sheet was opened)." }, - "wildcardMentionTopicDescription": "Оповестить тему", - "@wildcardMentionTopicDescription": { - "description": "Description for \"@topic\" wildcard-mention autocomplete options when writing a channel message." + "@seeWhoReactedSheetUserListLabel": { + "description": "In the 'See who reacted' sheet, a label for the list of users who chose an emoji reaction, with the emoji's name and how many votes it has. (An accessibility label for assistive technology.)", + "placeholders": { + "emojiName": { + "example": "working_on_it", + "type": "String" + }, + "num": { + "example": "2", + "type": "int" + } + } }, - "wildcardMentionStream": "канал", - "@wildcardMentionStream": { - "description": "Text for \"@stream\" wildcard-mention autocomplete option when writing a channel message in older servers." + "@serverUrlValidationErrorEmpty": { + "description": "Error message when URL is empty" }, - "wildcardMentionTopic": "тема", - "@wildcardMentionTopic": { - "description": "Text for \"@topic\" wildcard-mention autocomplete option when writing a channel message." + "@serverUrlValidationErrorInvalidUrl": { + "description": "Error message when URL is not in a valid format." }, - "wildcardMentionAllDmDescription": "Оповестить получателей", - "@wildcardMentionAllDmDescription": { - "description": "Description for \"@all\" and \"@everyone\" wildcard-mention autocomplete options when writing a DM message." + "@serverUrlValidationErrorNoUseEmail": { + "description": "Error message when URL looks like an email" }, - "errorServerVersionUnsupportedMessage": "{url} использует Zulip Server {zulipVersion}, который не поддерживается. Минимальная поддерживаемая версия — Zulip Server {minSupportedZulipVersion}.", - "@errorServerVersionUnsupportedMessage": { - "description": "Error message in the dialog for when the Zulip Server version is unsupported.", + "@serverUrlValidationErrorUnsupportedScheme": { + "description": "Error message when URL has an unsupported scheme." + }, + "@setStatusPageTitle": { + "description": "Title for the 'Set status' page." + }, + "@settingsPageTitle": { + "description": "Title for the settings page." + }, + "@signInWithFoo": { + "description": "Button to use {method} to sign in to the app.", "placeholders": { - "url": { - "type": "String", - "example": "http://chat.example.com/" - }, - "zulipVersion": { - "type": "String", - "example": "3.2" - }, - "minSupportedZulipVersion": { - "type": "String", - "example": "4.0" + "method": { + "example": "Google", + "type": "String" } } }, - "errorDialogLearnMore": "Узнать больше", - "@errorDialogLearnMore": { - "description": "Button label in error dialogs to open a web page with more information." + "@snackBarDetails": { + "description": "Button label for snack bar button that opens a dialog with more details." }, - "experimentalFeatureSettingsPageTitle": "Экспериментальные функции", - "@experimentalFeatureSettingsPageTitle": { - "description": "Title of settings page for experimental, in-development features" + "@spoilerDefaultHeaderText": { + "description": "The default header text in a spoiler block ( https://zulip.com/help/spoilers )." }, - "experimentalFeatureSettingsWarning": "Эти параметры включают функции, которые все еще находятся в стадии разработки и не готовы. Они могут не работать и вызывать проблемы в других местах приложения.\n\nЦель этих настроек — экспериментирование людьми, работающими над разработкой Zulip.", - "@experimentalFeatureSettingsWarning": { - "description": "Warning text on settings page for experimental, in-development features" + "@starredMessagesPageTitle": { + "description": "Page title for the 'Starred messages' message view." }, - "errorCouldNotEditMessageTitle": "Сбой редактирования", - "@errorCouldNotEditMessageTitle": { - "description": "Error title when an exception prevented us from opening the compose box for editing a message." + "@statusButtonLabelStatusSet": { + "description": "The status button label in self-user profile page when status is set." }, - "composeBoxBannerButtonSave": "Сохранить", - "@composeBoxBannerButtonSave": { - "description": "Label text for the 'Save' button in the compose-box banner when you are editing a message." + "@statusButtonLabelStatusUnset": { + "description": "The status button label in self-user profile page when status is not set." }, - "editAlreadyInProgressTitle": "Редактирование недоступно", - "@editAlreadyInProgressTitle": { - "description": "Error title when a message edit cannot be saved because there is another edit already in progress." + "@statusClearButtonLabel": { + "description": "Label for the button that clears the user status, in 'Set status' page." }, - "savingMessageEditLabel": "ЗАПИСЬ ПРАВОК…", - "@savingMessageEditLabel": { - "description": "Text on a message in the message list saying that a message edit request is processing. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + "@statusSaveButtonLabel": { + "description": "Label for the button that saves the user status, in 'Set status' page." }, - "savingMessageEditFailedLabel": "ПРАВКИ НЕ СОХРАНЕНЫ", - "@savingMessageEditFailedLabel": { - "description": "Text on a message in the message list saying that a message edit request failed. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + "@statusTextHint": { + "description": "Hint text for the status text input field in 'Set status' page." }, - "discardDraftConfirmationDialogTitle": "Отказаться от написанного сообщения?", - "@discardDraftConfirmationDialogTitle": { - "description": "Title for a confirmation dialog for discarding message text that was typed into the compose box." + "@successChannelLinkCopied": { + "description": "Message when link of a channel was copied to the user's system clipboard." }, - "discardDraftConfirmationDialogConfirmButton": "Сбросить", - "@discardDraftConfirmationDialogConfirmButton": { - "description": "Label for the 'Discard' button on a confirmation dialog for discarding message text that was typed into the compose box." + "@successLinkCopied": { + "description": "Success message after copy link action completed." }, - "composeBoxBannerButtonCancel": "Отмена", - "@composeBoxBannerButtonCancel": { - "description": "Label text for the 'Cancel' button in the compose-box banner when you are editing a message." + "@successMessageLinkCopied": { + "description": "Message when link of a message was copied to the user's system clipboard." }, - "actionSheetOptionEditMessage": "Редактировать сообщение", - "@actionSheetOptionEditMessage": { - "description": "Label for the 'Edit message' button in the message action sheet." + "@successMessageTextCopied": { + "description": "Message when content of a message was copied to the user's system clipboard." }, - "errorMessageEditNotSaved": "Сообщение не сохранено", - "@errorMessageEditNotSaved": { - "description": "Error message for compose box when a message edit could not be saved." + "@successTopicLinkCopied": { + "description": "Message when link of a topic was copied to the user's system clipboard." }, - "preparingEditMessageContentInput": "Подготовка…", - "@preparingEditMessageContentInput": { - "description": "Hint text for content input when the compose box is preparing to edit a message." + "@switchAccountButton": { + "description": "Label for main-menu button leading to the choose-account page." }, - "composeBoxEnterTopicOrSkipHintText": "Укажите тему (или оставьте “{defaultTopicName}”)", - "@composeBoxEnterTopicOrSkipHintText": { - "description": "Hint text for topic input widget in compose box when topics are optional.", - "placeholders": { - "defaultTopicName": { - "type": "String", - "example": "general chat" - } - } + "@themeSettingDark": { + "description": "Label for dark theme setting." }, - "composeBoxBannerLabelEditMessage": "Редактирование сообщения", - "@composeBoxBannerLabelEditMessage": { - "description": "Label text for the compose-box banner when you are editing a message." + "@themeSettingLight": { + "description": "Label for light theme setting." }, - "editAlreadyInProgressMessage": "Редактирование уже выполняется. Дождитесь завершения.", - "@editAlreadyInProgressMessage": { - "description": "Error message when a message edit cannot be saved because there is another edit already in progress." + "@themeSettingSystem": { + "description": "Label for system theme setting." }, - "discardDraftForEditConfirmationDialogMessage": "При изменении сообщения текст из поля для редактирования удаляется.", - "@discardDraftForEditConfirmationDialogMessage": { - "description": "Message for a confirmation dialog for discarding message text that was typed into the compose box." + "@themeSettingTitle": { + "description": "Title for theme setting. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" }, - "actionSheetOptionListOfTopics": "Список тем", - "@actionSheetOptionListOfTopics": { - "description": "Label for navigating to a channel's topic-list page." + "@today": { + "description": "Term to use to reference the current day." + }, + "@topicValidationErrorMandatoryButEmpty": { + "description": "Topic validation error when topic is required but was empty." + }, + "@topicValidationErrorTooLong": { + "description": "Topic validation error when topic is too long." }, - "topicsButtonTooltip": "Темы", "@topicsButtonTooltip": { "description": "Tooltip for button to navigate to topic-list page." }, - "newDmSheetSearchHintEmpty": "Добавить пользователей", - "@newDmSheetSearchHintEmpty": { - "description": "Hint text for the search bar when no users are selected" + "@tryAnotherAccountButton": { + "description": "Label for loading screen button prompting user to try another account." }, - "mutedUser": "Отключенный пользователь", - "@mutedUser": { - "description": "Name for a muted user to display all over the app." + "@tryAnotherAccountMessage": { + "description": "Message that appears on the loading screen after waiting for some time.", + "url": { + "example": "http://chat.example.com/", + "type": "String" + } }, - "newDmSheetNoUsersFound": "Никто не найден", - "@newDmSheetNoUsersFound": { - "description": "Message shown in the new DM sheet when no users match the search." + "@turnOffInvisibleModeErrorTitle": { + "description": "Error title when turning off invisible mode failed." }, - "messageNotSentLabel": "СООБЩЕНИЕ НЕ ОТПРАВЛЕНО", - "@messageNotSentLabel": { - "description": "Text on a message in the message list saying that a send message request failed. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + "@turnOnInvisibleModeErrorTitle": { + "description": "Error title when turning on invisible mode failed." }, - "actionSheetOptionHideMutedMessage": "Скрыть отключенное сообщение", - "@actionSheetOptionHideMutedMessage": { - "description": "Label for hide muted message again button on action sheet." + "@twoPeopleTyping": { + "description": "Text to display when there are two users typing.", + "placeholders": { + "otherTypist": { + "example": "Bob", + "type": "String" + }, + "typist": { + "example": "Alice", + "type": "String" + } + } }, - "newDmFabButtonLabel": "Новое ЛС", - "@newDmFabButtonLabel": { - "description": "Label for the floating action button (FAB) that opens the new DM sheet." + "@unknownChannelName": { + "description": "Replacement name for channel when it cannot be found in the store." }, - "newDmSheetScreenTitle": "Новое ЛС", - "@newDmSheetScreenTitle": { - "description": "Title displayed at the top of the new DM screen." + "@unknownUserName": { + "description": "Name placeholder to use for a user when we don't know their name." }, - "newDmSheetSearchHintSomeSelected": "Добавить еще…", - "@newDmSheetSearchHintSomeSelected": { - "description": "Hint text for the search bar when at least one user is selected" + "@unpinnedSubscriptionsLabel": { + "description": "Label for the list of unpinned subscribed channels." }, - "errorNotificationOpenAccountNotFound": "Учетная запись, связанная с этим уведомлением, не найдена.", - "@errorNotificationOpenAccountNotFound": { - "description": "Error message when the account associated with the notification could not be found" + "@updateStatusErrorTitle": { + "description": "Error title when updating user status failed." }, - "channelsEmptyPlaceholder": "Вы еще не подписаны ни на один канал.", - "@channelsEmptyPlaceholder": { - "description": "Centered text on the 'Channels' page saying that there is no content to show." - }, - "recentDmConversationsEmptyPlaceholder": "У вас пока нет личных сообщений! Почему бы не начать беседу?", - "@recentDmConversationsEmptyPlaceholder": { - "description": "Centered text on the 'Direct messages' page saying that there is no content to show." + "@upgradeWelcomeDialogDismiss": { + "description": "Label for button dismissing dialog shown on first upgrade from the legacy Zulip app." }, - "newDmSheetComposeButtonLabel": "Написать", - "@newDmSheetComposeButtonLabel": { - "description": "Label for the compose button in the new DM sheet that starts composing a message to the selected users." + "@upgradeWelcomeDialogLinkText": { + "description": "Text of link in dialog shown on first upgrade from the legacy Zulip app." }, - "inboxEmptyPlaceholder": "Нет непрочитанных входящих сообщений. Используйте кнопки ниже для просмотра объединенной ленты или списка каналов.", - "@inboxEmptyPlaceholder": { - "description": "Centered text on the 'Inbox' page saying that there is no content to show." + "@upgradeWelcomeDialogMessage": { + "description": "Message text for dialog shown on first upgrade from the legacy Zulip app." }, - "initialAnchorSettingNewestAlways": "Самое новое сообщение", - "@initialAnchorSettingNewestAlways": { - "description": "Label for a value of setting controlling initial anchor of message list." + "@upgradeWelcomeDialogTitle": { + "description": "Title for dialog shown on first upgrade from the legacy Zulip app." }, - "initialAnchorSettingTitle": "Где открывать ленту сообщений", - "@initialAnchorSettingTitle": { - "description": "Title of setting controlling initial anchor of message list." + "@userRoleAdministrator": { + "description": "Label for UserRole.administrator" }, - "discardDraftForOutboxConfirmationDialogMessage": "При восстановлении неотправленного сообщения содержимое поля редактирования очищается.", - "@discardDraftForOutboxConfirmationDialogMessage": { - "description": "Message for a confirmation dialog when restoring an outbox message, for discarding message text that was typed into the compose box." + "@userRoleGuest": { + "description": "Label for UserRole.guest" }, - "initialAnchorSettingFirstUnreadAlways": "Первое непрочитанное сообщение", - "@initialAnchorSettingFirstUnreadAlways": { - "description": "Label for a value of setting controlling initial anchor of message list." + "@userRoleMember": { + "description": "Label for UserRole.member" }, - "initialAnchorSettingDescription": "Можно открывать ленту сообщений на первом непрочитанном сообщении или на самом новом.", - "@initialAnchorSettingDescription": { - "description": "Description of setting controlling initial anchor of message list." + "@userRoleModerator": { + "description": "Label for UserRole.moderator" }, - "initialAnchorSettingFirstUnreadConversations": "Первое непрочитанное сообщение при просмотре бесед, самое новое в остальных местах", - "@initialAnchorSettingFirstUnreadConversations": { - "description": "Label for a value of setting controlling initial anchor of message list." + "@userRoleOwner": { + "description": "Label for UserRole.owner" }, - "actionSheetOptionQuoteMessage": "Цитировать сообщение", - "@actionSheetOptionQuoteMessage": { - "description": "Label for the 'Quote message' button in the message action sheet." + "@userRoleUnknown": { + "description": "Label for UserRole.unknown" }, - "markReadOnScrollSettingTitle": "Отмечать сообщения как прочитанные при прокрутке", - "@markReadOnScrollSettingTitle": { - "description": "Title of setting controlling which message-list views should mark read on scroll." + "@userStatusAtTheOffice": { + "description": "A suggested user status text, 'At the office'." }, - "markReadOnScrollSettingDescription": "При прокрутке сообщений автоматически отмечать их как прочитанные?", - "@markReadOnScrollSettingDescription": { - "description": "Description of setting controlling which message-list views should mark read on scroll." + "@userStatusBusy": { + "description": "A suggested user status text, 'Busy'." }, - "markReadOnScrollSettingConversations": "Только при просмотре бесед", - "@markReadOnScrollSettingConversations": { - "description": "Label for a value of setting controlling which message-list views should mark read on scroll." + "@userStatusCommuting": { + "description": "A suggested user status text, 'Commuting'." }, - "markReadOnScrollSettingNever": "Никогда", - "@markReadOnScrollSettingNever": { - "description": "Label for a value of setting controlling which message-list views should mark read on scroll." + "@userStatusInAMeeting": { + "description": "A suggested user status text, 'In a meeting'." }, - "markReadOnScrollSettingAlways": "Всегда", - "@markReadOnScrollSettingAlways": { - "description": "Label for a value of setting controlling which message-list views should mark read on scroll." + "@userStatusOutSick": { + "description": "A suggested user status text, 'Out sick'." }, - "markReadOnScrollSettingConversationsDescription": "Сообщения будут автоматически помечаться как прочитанные только при просмотре отдельной темы или личной беседы.", - "@markReadOnScrollSettingConversationsDescription": { - "description": "Description for a value of setting controlling which message-list views should mark read on scroll." + "@userStatusVacationing": { + "description": "A suggested user status text, 'Vacationing'." }, - "upgradeWelcomeDialogDismiss": "Приступим!", - "@upgradeWelcomeDialogDismiss": { - "description": "Label for button dismissing dialog shown on first upgrade from the legacy Zulip app." + "@userStatusWorkingRemotely": { + "description": "A suggested user status text, 'Working remotely'." }, - "upgradeWelcomeDialogMessage": "Вы найдете привычные возможности в более быстром и легком приложении.", - "@upgradeWelcomeDialogMessage": { - "description": "Message text for dialog shown on first upgrade from the legacy Zulip app." + "@wildcardMentionAll": { + "description": "Text for \"@all\" wildcard-mention autocomplete option when writing a channel or DM message." }, - "upgradeWelcomeDialogTitle": "Добро пожаловать в новое приложение Zulip!", - "@upgradeWelcomeDialogTitle": { - "description": "Title for dialog shown on first upgrade from the legacy Zulip app." + "@wildcardMentionAllDmDescription": { + "description": "Description for \"@all\" and \"@everyone\" wildcard-mention autocomplete options when writing a DM message." }, - "upgradeWelcomeDialogLinkText": "Ознакомьтесь с анонсом в блоге!", - "@upgradeWelcomeDialogLinkText": { - "description": "Text of link in dialog shown on first upgrade from the legacy Zulip app." + "@wildcardMentionChannel": { + "description": "Text for \"@channel\" wildcard-mention autocomplete option when writing a channel message." }, - "emptyMessageList": "Здесь нет сообщений.", - "@emptyMessageList": { - "description": "Placeholder for some message-list pages when there are no messages." + "@wildcardMentionChannelDescription": { + "description": "Description for \"@all\", \"@everyone\", \"@channel\", and \"@stream\" wildcard-mention autocomplete options when writing a channel message." }, - "emptyMessageListSearch": "Ничего не найдено.", - "@emptyMessageListSearch": { - "description": "Placeholder for the 'Search' page when there are no messages." + "@wildcardMentionEveryone": { + "description": "Text for \"@everyone\" wildcard-mention autocomplete option when writing a channel or DM message." }, - "searchMessagesPageTitle": "Поиск", - "@searchMessagesPageTitle": { - "description": "Page title for the 'Search' message view." + "@wildcardMentionStream": { + "description": "Text for \"@stream\" wildcard-mention autocomplete option when writing a channel message in older servers." }, - "searchMessagesHintText": "Поиск", - "@searchMessagesHintText": { - "description": "Hint text for the message search text field." + "@wildcardMentionStreamDescription": { + "description": "Description for \"@all\", \"@everyone\", and \"@stream\" wildcard-mention autocomplete options when writing a channel message in older servers." }, - "searchMessagesClearButtonTooltip": "Очистить", - "@searchMessagesClearButtonTooltip": { - "description": "Tooltip for the 'x' button in the search text field." + "@wildcardMentionTopic": { + "description": "Text for \"@topic\" wildcard-mention autocomplete option when writing a channel message." }, - "revealButtonLabel": "Показать сообщение", - "@revealButtonLabel": { - "description": "Label for the button revealing hidden message from a muted sender in message list." + "@wildcardMentionTopicDescription": { + "description": "Description for \"@topic\" wildcard-mention autocomplete options when writing a channel message." }, - "invisibleMode": "Режим невидимости", - "@invisibleMode": { - "description": "Label for the 'Invisible mode' switch on the profile page." + "@yesterday": { + "description": "Term to use to reference the previous day." }, - "turnOnInvisibleModeErrorTitle": "Не удалось включить режим невидимости. Повторите попытку позже.", - "@turnOnInvisibleModeErrorTitle": { - "description": "Error title when turning on invisible mode failed." + "@zulipAppTitle": { + "description": "The name of Zulip. This should be either 'Zulip' or a transliteration." }, + "aboutPageAppVersion": "Версия приложения", + "aboutPageOpenSourceLicenses": "Лицензии открытого исходного кода", + "aboutPageTapToView": "Нажмите для просмотра", + "aboutPageTitle": "О Zulip", + "actionSheetOptionCopyChannelLink": "Скопировать ссылку на канал", + "actionSheetOptionCopyMessageLink": "Скопировать ссылку на сообщение", + "actionSheetOptionCopyMessageText": "Скопировать текст сообщения", + "actionSheetOptionCopyTopicLink": "Скопировать ссылку на тему", + "actionSheetOptionEditMessage": "Редактировать сообщение", + "actionSheetOptionFollowTopic": "Отслеживать тему", + "actionSheetOptionHideMutedMessage": "Скрыть отключенное сообщение", + "actionSheetOptionListOfTopics": "Список тем", + "actionSheetOptionMarkAsUnread": "Отметить как непрочитанные начиная отсюда", + "actionSheetOptionMarkChannelAsRead": "Отметить канал как прочитанный", + "actionSheetOptionMarkTopicAsRead": "Отметить тему как прочитанную", + "actionSheetOptionMuteTopic": "Отключить тему", + "actionSheetOptionQuoteMessage": "Цитировать сообщение", + "actionSheetOptionResolveTopic": "Поставить отметку \"решено\"", + "actionSheetOptionSeeWhoReacted": "Посмотреть отреагировавших", + "actionSheetOptionShare": "Поделиться", + "actionSheetOptionStarMessage": "Отметить сообщение", + "actionSheetOptionUnfollowTopic": "Не отслеживать тему", + "actionSheetOptionUnmuteTopic": "Включить тему", + "actionSheetOptionUnresolveTopic": "Снять отметку \"решено\"", + "actionSheetOptionUnstarMessage": "Снять отметку с сообщения", + "appVersionUnknownPlaceholder": "(…)", + "channelFeedButtonTooltip": "Лента канала", + "channelsEmptyPlaceholder": "Вы ещё не подписаны ни на один канал.", + "channelsPageTitle": "Каналы", + "chooseAccountButtonAddAnAccount": "Добавить учетную запись", + "chooseAccountPageLogOutButton": "Выход из системы", + "chooseAccountPageTitle": "Выберите учетную запись", + "combinedFeedPageTitle": "Объединенная лента", + "composeBoxAttachFilesTooltip": "Прикрепить файлы", + "composeBoxAttachFromCameraTooltip": "Сделать снимок", + "composeBoxAttachMediaTooltip": "Прикрепить изображения или видео", + "composeBoxBannerButtonCancel": "Отмена", + "composeBoxBannerButtonSave": "Сохранить", + "composeBoxBannerLabelEditMessage": "Редактирование сообщения", + "composeBoxChannelContentHint": "Сообщение для {destination}", + "composeBoxDmContentHint": "Сообщение для @{user}", + "composeBoxEnterTopicOrSkipHintText": "Укажите тему (или оставьте “{defaultTopicName}”)", + "composeBoxGenericContentHint": "Ввести сообщение", + "composeBoxGroupDmContentHint": "Сообщение для группы", + "composeBoxLoadingMessage": "(загрузка сообщения {messageId})", + "composeBoxSelfDmContentHint": "Сделать заметку", + "composeBoxSendTooltip": "Отправить", + "composeBoxTopicHintText": "Тема", + "composeBoxUploadingFilename": "Загрузка {filename}…", + "contentValidationErrorEmpty": "Нечего отправлять!", + "contentValidationErrorQuoteAndReplyInProgress": "Пожалуйста, дождитесь завершения цитирования.", + "contentValidationErrorTooLong": "Длина сообщения не должна превышать 10000 символов.", + "contentValidationErrorUploadInProgress": "Пожалуйста, дождитесь завершения загрузки.", + "dialogCancel": "Отмена", + "dialogClose": "Закрыть", + "dialogContinue": "Продолжить", + "discardDraftConfirmationDialogConfirmButton": "Сбросить", + "discardDraftConfirmationDialogTitle": "Отказаться от написанного сообщения?", + "discardDraftForEditConfirmationDialogMessage": "При изменении сообщения текст из поля для редактирования удаляется.", + "discardDraftForOutboxConfirmationDialogMessage": "При восстановлении неотправленного сообщения содержимое поля редактирования очищается.", + "dmsWithOthersPageTitle": "ЛС с {others}", + "dmsWithYourselfPageTitle": "ЛС с собой", + "editAlreadyInProgressMessage": "Редактирование уже выполняется. Дождитесь завершения.", + "editAlreadyInProgressTitle": "Редактирование недоступно", + "emojiPickerSearchEmoji": "Поиск эмодзи", + "emojiReactionsMore": "ещё", + "emptyMessageList": "Здесь нет сообщений.", + "emptyMessageListSearch": "Ничего не найдено.", + "errorAccountLoggedIn": "Учетная запись {email} на {server} уже присутствует.", + "errorAccountLoggedInTitle": "Вход в учетную запись уже выполнен", + "errorBannerCannotPostInChannelLabel": "У вас нет права писать в этом канале.", + "errorBannerDeactivatedDmLabel": "Нельзя отправить сообщение отключенным пользователям.", + "errorConnectingToServerDetails": "Ошибка подключения к Zulip на {serverUrl}. Повторим попытку:\n\n{error}", + "errorConnectingToServerShort": "Ошибка подключения к Zulip. Повторяем попытку…", + "errorCopyingFailed": "Сбой копирования", + "errorCouldNotConnectTitle": "Нет связи с сервером", + "errorCouldNotEditMessageTitle": "Сбой редактирования", + "errorCouldNotFetchMessageSource": "Не удалось извлечь источник сообщения.", + "errorCouldNotOpenLink": "Не удалось открыть ссылку: {url}", + "errorCouldNotOpenLinkTitle": "Не удалось открыть ссылку", + "errorCouldNotShowUserProfile": "Не удалось показать профиль пользователя.", + "errorDialogContinue": "OK", + "errorDialogLearnMore": "Узнать больше", + "errorDialogTitle": "Ошибка", + "errorFailedToUploadFileTitle": "Не удалось загрузить файл: {filename}", + "errorFilesTooLarge": "Размер {num, plural, =1{файла} other{{num} файлов}} превышает предел для сервера {maxFileUploadSizeMib} МиБ, загрузка невозможна:\n\n{listMessage}", + "errorFilesTooLargeTitle": "Слишком большой размер {num, plural, =1{файла} other{файлов}}", + "errorFollowTopicFailed": "Не удалось начать отслеживать тему", + "errorHandlingEventDetails": "Ошибка обработки события Zulip от {serverUrl}; повторим попытку.\n\nОшибка: {error}\n\nСобытие: {event}", + "errorHandlingEventTitle": "Ошибка обработки события Zulip. Повторная попытка соединения…", + "errorInvalidApiKeyMessage": "Не удалось войти в вашу учётную запись {url}. Попробуйте ещё раз или используйте другую учётную запись.", + "errorInvalidResponse": "Сервер отправил недопустимый ответ.", + "errorLoginCouldNotConnect": "Не удалось подключиться к серверу:\n{url}", + "errorLoginFailedTitle": "Не удалось войти в систему", + "errorLoginInvalidInputTitle": "Неверный ввод", + "errorMalformedResponse": "Сервер вернул некорректный ответ; HTTP-статус {httpStatus}", + "errorMalformedResponseWithCause": "Сервер вернул некорректный ответ; HTTP-статус {httpStatus}; {details}", + "errorMarkAsReadFailedTitle": "Не удалось установить отметку прочтения", + "errorMarkAsUnreadFailedTitle": "Не удалось снять отметку прочтения", + "errorMessageDoesNotSeemToExist": "Это сообщение, похоже, отсутствует.", + "errorMessageEditNotSaved": "Сообщение не сохранено", + "errorMessageNotSent": "Сообщение не отправлено", + "errorMuteTopicFailed": "Не удалось отключить тему", + "errorNetworkRequestFailed": "Сбой сетевого запроса", + "errorNotificationOpenAccountNotFound": "Учетная запись, связанная с этим уведомлением, не найдена.", + "errorNotificationOpenTitle": "Не удалось открыть оповещения", + "errorQuotationFailed": "Цитирование не удалось", + "errorReactionAddingFailedTitle": "Не удалось добавить реакцию", + "errorReactionRemovingFailedTitle": "Не удалось удалить реакцию", + "errorRequestFailed": "Сбой сетевого запроса: HTTP-статус {httpStatus}", + "errorResolveTopicFailedTitle": "Не удалось отметить тему как решенную", + "errorServerMessage": "Ответ сервера:\n\n{message}", + "errorServerVersionUnsupportedMessage": "{url} использует Zulip Server {zulipVersion}, который не поддерживается. Минимальная поддерживаемая версия — Zulip Server {minSupportedZulipVersion}.", + "errorSharingFailed": "Не удалось поделиться", + "errorStarMessageFailedTitle": "Не удалось отметить сообщение", + "errorUnfollowTopicFailed": "Не удалось прекратить отслеживать тему", + "errorUnmuteTopicFailed": "Не удалось включить тему", + "errorUnresolveTopicFailedTitle": "Не удалось отметить тему как нерешенную", + "errorUnstarMessageFailedTitle": "Не удалось снять отметку с сообщения", + "errorVideoPlayerFailed": "Не удается воспроизвести видео.", + "errorWebAuthOperationalError": "Произошла непредвиденная ошибка.", + "errorWebAuthOperationalErrorTitle": "Что-то пошло не так", + "experimentalFeatureSettingsPageTitle": "Экспериментальные функции", + "experimentalFeatureSettingsWarning": "Эти параметры включают возможности, которые все ещё находятся в разработке и не готовы. Они могут не работать и вызывать проблемы в других местах приложения.\n\nЦель этих настроек — экспериментирование людьми, работающими над разработкой Zulip.", + "filenameAndSizeInMiB": "{filename}: {size} МиБ", + "inboxEmptyPlaceholder": "Нет непрочитанных входящих сообщений. Используйте кнопки ниже для просмотра объединенной ленты или списка каналов.", + "inboxPageTitle": "Входящие", + "initialAnchorSettingDescription": "Можно открывать ленту сообщений на первом непрочитанном сообщении или на самом новом.", + "initialAnchorSettingFirstUnreadAlways": "Первое непрочитанное сообщение", + "initialAnchorSettingFirstUnreadConversations": "Первое непрочитанное сообщение при просмотре бесед, самое новое в остальных местах", + "initialAnchorSettingNewestAlways": "Самое новое сообщение", + "initialAnchorSettingTitle": "Где открывать ленту сообщений", + "invisibleMode": "Режим невидимости", + "lightboxCopyLinkTooltip": "Скопировать ссылку", + "lightboxVideoCurrentPosition": "Место воспроизведения", + "lightboxVideoDuration": "Длительность видео", + "logOutConfirmationDialogConfirmButton": "Выйти", + "logOutConfirmationDialogMessage": "Чтобы использовать эту учетную запись в будущем, вам придется заново ввести URL-адрес вашей организации и информацию о вашей учетной записи.", + "logOutConfirmationDialogTitle": "Выйти из системы?", + "loginAddAnAccountPageTitle": "Добавление учетной записи", + "loginEmailLabel": "Адрес почты", + "loginErrorMissingEmail": "Пожалуйста, введите ваш адрес электронной почты.", + "loginErrorMissingPassword": "Пожалуйста, введите пароль.", + "loginErrorMissingUsername": "Пожалуйста, введите ваше имя пользователя.", + "loginFormSubmitLabel": "Войти", + "loginHidePassword": "Скрыть пароль", + "loginMethodDivider": "ИЛИ", + "loginPageTitle": "Вход в систему", + "loginPasswordLabel": "Пароль", + "loginServerUrlLabel": "URL вашего сервера Zulip", + "loginUsernameLabel": "Имя пользователя", + "mainMenuMyProfile": "Мой профиль", + "manyPeopleTyping": "Несколько человек набирают сообщения…", + "markAllAsReadLabel": "Отметить все сообщения как прочитанные", + "markAsReadComplete": "Отметка прочтения установлена для {num, plural, one{{num} сообщения} other{{num} сообщений}}.", + "markAsReadInProgress": "Помечаем сообщения как прочитанные…", + "markAsUnreadComplete": "Отметка прочтения снята для {num, plural, one{{num} сообщения} other{{num} сообщений}}.", + "markAsUnreadInProgress": "Помечаем сообщения как непрочитанные…", + "markReadOnScrollSettingAlways": "Всегда", + "markReadOnScrollSettingConversations": "Только при просмотре бесед", + "markReadOnScrollSettingConversationsDescription": "Сообщения будут автоматически помечаться как прочитанные только при просмотре отдельной темы или личной беседы.", + "markReadOnScrollSettingDescription": "При прокрутке сообщений автоматически отмечать их как прочитанные?", + "markReadOnScrollSettingNever": "Никогда", + "markReadOnScrollSettingTitle": "Отмечать сообщения как прочитанные при прокрутке", + "mentionsPageTitle": "Упоминания", + "messageIsEditedLabel": "ИЗМЕНЕНО", + "messageIsMovedLabel": "ПЕРЕМЕЩЕНО", + "messageListGroupYouAndOthers": "Вы и {others}", + "messageListGroupYouWithYourself": "Сообщения с собой", + "messageNotSentLabel": "СООБЩЕНИЕ НЕ ОТПРАВЛЕНО", + "mutedUser": "Отключенный пользователь", + "newDmFabButtonLabel": "Новое ЛС", + "newDmSheetComposeButtonLabel": "Написать", + "newDmSheetNoUsersFound": "Никто не найден", + "newDmSheetScreenTitle": "Новое ЛС", + "newDmSheetSearchHintEmpty": "Добавить пользователей", + "newDmSheetSearchHintSomeSelected": "Добавить ещё…", + "noEarlierMessages": "Предшествующих сообщений нет", + "noStatusText": "Нет текста статуса", + "notifGroupDmConversationLabel": "{senderFullName} вам и ещё {numOthers, plural, one{{numOthers} другому} other{{numOthers} другим}}", + "notifSelfUser": "Вы", + "onePersonTyping": "{typist} набирает сообщение…", + "openLinksWithInAppBrowser": "Открывать ссылки внутри приложения", + "permissionsDeniedCameraAccess": "Для загрузки изображения, пожалуйста, предоставьте Zulip дополнительные разрешения в настройках.", + "permissionsDeniedReadExternalStorage": "Для загрузки файлов, пожалуйста, предоставьте Zulip дополнительные разрешения в настройках.", + "permissionsNeededOpenSettings": "Открыть настройки", + "permissionsNeededTitle": "Требуются разрешения", + "pinnedSubscriptionsLabel": "Закреплены", + "pollVoterNames": "({voterNames})", + "pollWidgetOptionsMissing": "В опросе пока нет вариантов ответа.", + "pollWidgetQuestionMissing": "Нет вопроса.", + "preparingEditMessageContentInput": "Подготовка…", + "profileButtonSendDirectMessage": "Отправить личное сообщение", + "reactedEmojiSelfUser": "Вы", + "reactionChipLabel": "{emojiName}: {votes}", + "reactionChipVotesYouAndOthers": "{otherUsersCount, plural, one{Вы и еще {otherUsersCount} человек} few{Вы и еще {otherUsersCount} человека} many{Вы и еще {otherUsersCount} человек} other{Вы и еще {otherUsersCount} человек}}", + "reactionChipsLabel": "Реакции", + "recentDmConversationsEmptyPlaceholder": "У вас пока нет личных сообщений! Почему бы не начать беседу?", + "recentDmConversationsPageTitle": "Личные сообщения", + "recentDmConversationsSectionHeader": "Личные сообщения", + "revealButtonLabel": "Показать сообщение", + "savingMessageEditFailedLabel": "ПРАВКИ НЕ СОХРАНЕНЫ", + "savingMessageEditLabel": "ЗАПИСЬ ПРАВОК…", + "scrollToBottomTooltip": "Пролистать вниз", + "searchMessagesClearButtonTooltip": "Очистить", + "searchMessagesHintText": "Поиск", + "searchMessagesPageTitle": "Поиск", + "seeWhoReactedSheetEmojiNameWithVoteCount": "{emojiName}: {num, plural, one{1 голос} few{{num} голоса} many{{num} голосов} other{{num} голосов}}", + "seeWhoReactedSheetHeaderLabel": "Эмодзи-реакции (всего: {num})", + "seeWhoReactedSheetNoReactions": "На это сообщение нет реакций.", + "seeWhoReactedSheetUserListLabel": "Голоса за {emojiName} ({num})", + "serverUrlValidationErrorEmpty": "Пожалуйста, введите URL-адрес.", + "serverUrlValidationErrorInvalidUrl": "Пожалуйста, введите корректный URL-адрес.", + "serverUrlValidationErrorNoUseEmail": "Пожалуйста, введите URL-адрес сервера, а не свой email.", + "serverUrlValidationErrorUnsupportedScheme": "URL-адрес сервера должен начинаться с http:// или https://.", + "setStatusPageTitle": "Установить статус", + "settingsPageTitle": "Настройки", + "signInWithFoo": "Войти с помощью {method}", + "snackBarDetails": "Подробности", + "spoilerDefaultHeaderText": "Спойлер", + "starredMessagesPageTitle": "Отмеченные сообщения", + "statusButtonLabelStatusSet": "Статус", + "statusButtonLabelStatusUnset": "Установить статус", + "statusClearButtonLabel": "Очистить", + "statusSaveButtonLabel": "Сохранить", + "statusTextHint": "Ваш статус", + "successChannelLinkCopied": "Ссылка на канал скопирована", + "successLinkCopied": "Ссылка скопирована", + "successMessageLinkCopied": "Ссылка на сообщение скопирована", + "successMessageTextCopied": "Текст сообщения скопирован", + "successTopicLinkCopied": "Ссылка на тему скопирована", + "switchAccountButton": "Сменить учетную запись", + "themeSettingDark": "Темный", + "themeSettingLight": "Светлый", + "themeSettingSystem": "Системный", + "themeSettingTitle": "РЕЖИМ", + "today": "Сегодня", + "topicValidationErrorMandatoryButEmpty": "Темы обязательны в этой организации.", + "topicValidationErrorTooLong": "Длина темы не должна превышать 60 символов.", + "topicsButtonTooltip": "Темы", + "tryAnotherAccountButton": "Попробовать другую учетную запись", + "tryAnotherAccountMessage": "Ваша учетная запись на {url} загружается медленно.", "turnOffInvisibleModeErrorTitle": "Не удалось отключить режим невидимости. Повторите попытку позже.", - "@turnOffInvisibleModeErrorTitle": { - "description": "Error title when turning off invisible mode failed." - } + "turnOnInvisibleModeErrorTitle": "Не удалось включить режим невидимости. Повторите попытку позже.", + "twoPeopleTyping": "{typist} и {otherTypist} набирают сообщения…", + "unknownChannelName": "(неизвестный канал)", + "unknownUserName": "(неизвестный пользователь)", + "unpinnedSubscriptionsLabel": "Откреплены", + "updateStatusErrorTitle": "Ошибка обновления статуса пользователя. Попробуйте ещё раз.", + "upgradeWelcomeDialogDismiss": "Приступим!", + "upgradeWelcomeDialogLinkText": "Ознакомьтесь с анонсом в блоге!", + "upgradeWelcomeDialogMessage": "Вы найдете привычные возможности в более быстром и легком приложении.", + "upgradeWelcomeDialogTitle": "Добро пожаловать в новое приложение Zulip!", + "userRoleAdministrator": "Администратор", + "userRoleGuest": "Гость", + "userRoleMember": "Участник", + "userRoleModerator": "Модератор", + "userRoleOwner": "Владелец", + "userRoleUnknown": "Неизвестно", + "userStatusAtTheOffice": "В офисе", + "userStatusBusy": "Занят/а", + "userStatusCommuting": "В дороге", + "userStatusInAMeeting": "На встрече", + "userStatusOutSick": "Болею", + "userStatusVacationing": "В отпуске", + "userStatusWorkingRemotely": "Работаю дистанционно", + "wildcardMentionAll": "все", + "wildcardMentionAllDmDescription": "Оповестить получателей", + "wildcardMentionChannel": "канал", + "wildcardMentionChannelDescription": "Оповестить канал", + "wildcardMentionEveryone": "каждый", + "wildcardMentionStream": "канал", + "wildcardMentionStreamDescription": "Оповестить канал", + "wildcardMentionTopic": "тема", + "wildcardMentionTopicDescription": "Оповестить тему", + "yesterday": "Вчера", + "zulipAppTitle": "Zulip" } diff --git a/assets/l10n/app_uk.arb b/assets/l10n/app_uk.arb index a83421c686..16f8a80a9d 100644 --- a/assets/l10n/app_uk.arb +++ b/assets/l10n/app_uk.arb @@ -1,1196 +1,1378 @@ { - "tryAnotherAccountButton": "Спробуйте інший обліковий запис", - "@tryAnotherAccountButton": { - "description": "Label for loading screen button prompting user to try another account." - }, - "actionSheetOptionFollowTopic": "Підписатися на тему", - "@actionSheetOptionFollowTopic": { - "description": "Label for following a topic on action sheet." - }, - "actionSheetOptionUnstarMessage": "Зняти позначку зірки з повідомлення", - "@actionSheetOptionUnstarMessage": { - "description": "Label for unstar button on action sheet." - }, - "errorAccountLoggedInTitle": "В обліковий запис уже ввійшли", - "@errorAccountLoggedInTitle": { - "description": "Error title on attempting to log into an account that's already logged in." - }, - "errorAccountLoggedIn": "Обліковий запис {email} на {server} уже є у вашому списку облікових записів.", - "@errorAccountLoggedIn": { - "description": "Error message on attempting to log into an account that's already logged in.", - "placeholders": { - "email": { - "type": "String", - "example": "user@example.com" - }, - "server": { - "type": "String", - "example": "https://example.com" - } - } + "@aboutPageAppVersion": { + "description": "Label for Zulip app version in About Zulip page" }, - "composeBoxChannelContentHint": "Надіслати повідомлення {destination}", - "@composeBoxChannelContentHint": { - "description": "Hint text for content input when sending a message to a channel.", - "placeholders": { - "destination": { - "type": "String", - "example": "#channel name > topic name" - } - } + "@aboutPageOpenSourceLicenses": { + "description": "Item title in About Zulip page to navigate to Licenses page" }, - "errorConnectingToServerShort": "Помилка підключення до Zulip. Повторна спроба…", - "@errorConnectingToServerShort": { - "description": "Short error message for a generic unknown error connecting to the server." + "@aboutPageTapToView": { + "description": "Item subtitle in About Zulip page to navigate to Licenses page" }, - "dialogContinue": "Продовжити", - "@dialogContinue": { - "description": "Button label in dialogs to proceed." + "@aboutPageTitle": { + "description": "Title for About Zulip page." }, - "errorSharingFailed": "Поширення не вдалося", - "@errorSharingFailed": { - "description": "Error message when sharing a message failed." + "@actionSheetOptionCopyChannelLink": { + "description": "Label for copy channel link button on action sheet." }, - "errorStarMessageFailedTitle": "Не вдалося позначити повідомлення зіркою", - "@errorStarMessageFailedTitle": { - "description": "Error title when starring a message failed." + "@actionSheetOptionCopyMessageLink": { + "description": "Label for copy message link button on action sheet." }, - "errorUnstarMessageFailedTitle": "Не вдалося зняти позначку зірки з повідомлення", - "@errorUnstarMessageFailedTitle": { - "description": "Error title when unstarring a message failed." + "@actionSheetOptionCopyMessageText": { + "description": "Label for copy message text button on action sheet." }, - "contentValidationErrorQuoteAndReplyInProgress": "Будь ласка, дочекайтеся завершення цитування.", - "@contentValidationErrorQuoteAndReplyInProgress": { - "description": "Content validation error message when a quotation has not completed yet." + "@actionSheetOptionCopyTopicLink": { + "description": "Label for copy topic link button in action sheet." }, - "successMessageLinkCopied": "Посилання на повідомлення скопійовано", - "@successMessageLinkCopied": { - "description": "Message when link of a message was copied to the user's system clipboard." + "@actionSheetOptionEditMessage": { + "description": "Label for the 'Edit message' button in the message action sheet." }, - "composeBoxSendTooltip": "Надіслати", - "@composeBoxSendTooltip": { - "description": "Tooltip for send button in compose box." + "@actionSheetOptionFollowTopic": { + "description": "Label for following a topic on action sheet." }, - "composeBoxLoadingMessage": "(завантаження повідомлення {messageId})", - "@composeBoxLoadingMessage": { - "description": "Placeholder in compose box showing the quoted message is currently loading.", - "placeholders": { - "messageId": { - "type": "int", - "example": "1234" - } - } + "@actionSheetOptionHideMutedMessage": { + "description": "Label for hide muted message again button on action sheet." }, - "lightboxVideoDuration": "Довжина відео", - "@lightboxVideoDuration": { - "description": "The total duration of the video playing in the lightbox." + "@actionSheetOptionListOfTopics": { + "description": "Label for navigating to a channel's topic-list page." }, - "aboutPageTapToView": "Натисніть, щоб переглянути", - "@aboutPageTapToView": { - "description": "Item subtitle in About Zulip page to navigate to Licenses page" + "@actionSheetOptionMarkAsUnread": { + "description": "Label for mark as unread button on action sheet." }, - "logOutConfirmationDialogConfirmButton": "Вийти", - "@logOutConfirmationDialogConfirmButton": { - "description": "Label for the 'Log out' button on a confirmation dialog for logging out." + "@actionSheetOptionMarkChannelAsRead": { + "description": "Label for marking a channel as read." }, - "actionSheetOptionMarkTopicAsRead": "Позначити тему як прочитану", "@actionSheetOptionMarkTopicAsRead": { "description": "Option to mark a specific topic as read in the action sheet." }, - "errorCouldNotOpenLinkTitle": "Неможливо відкрити посилання", - "@errorCouldNotOpenLinkTitle": { - "description": "Error title when opening a link failed." + "@actionSheetOptionMuteTopic": { + "description": "Label for muting a topic on action sheet." }, - "aboutPageTitle": "Про Zulip", - "@aboutPageTitle": { - "description": "Title for About Zulip page." + "@actionSheetOptionQuoteMessage": { + "description": "Label for the 'Quote message' button in the message action sheet." }, - "permissionsNeededOpenSettings": "Відкрити налаштування", - "@permissionsNeededOpenSettings": { - "description": "Button label for permissions dialog button that opens the system settings screen." + "@actionSheetOptionResolveTopic": { + "description": "Label for the 'Mark as resolved' button on the topic action sheet." }, - "actionSheetOptionMarkChannelAsRead": "Позначити канал як прочитаний", - "@actionSheetOptionMarkChannelAsRead": { - "description": "Label for marking a channel as read." + "@actionSheetOptionSeeWhoReacted": { + "description": "Label for the 'See who reacted' button in the message action sheet." }, - "successMessageTextCopied": "Текст повідомлення скопійовано", - "@successMessageTextCopied": { - "description": "Message when content of a message was copied to the user's system clipboard." + "@actionSheetOptionShare": { + "description": "Label for share button on action sheet." }, - "logOutConfirmationDialogTitle": "Вийти?", - "@logOutConfirmationDialogTitle": { - "description": "Title for a confirmation dialog for logging out." + "@actionSheetOptionStarMessage": { + "description": "Label for star button on action sheet." }, - "actionSheetOptionMuteTopic": "Заглушити тему", - "@actionSheetOptionMuteTopic": { - "description": "Label for muting a topic on action sheet." + "@actionSheetOptionUnfollowTopic": { + "description": "Label for unfollowing a topic on action sheet." }, - "tryAnotherAccountMessage": "Ваш обліковий запис на {url} завантажується деякий час.", - "@tryAnotherAccountMessage": { - "description": "Message that appears on the loading screen after waiting for some time.", - "url": { - "type": "String", - "example": "http://chat.example.com/" - } + "@actionSheetOptionUnmuteTopic": { + "description": "Label for unmuting a topic on action sheet." }, - "errorCopyingFailed": "Помилка копіювання", - "@errorCopyingFailed": { - "description": "Error message when copying the text of a message to the user's system clipboard failed." + "@actionSheetOptionUnresolveTopic": { + "description": "Label for the 'Mark as unresolved' button on the topic action sheet." }, - "logOutConfirmationDialogMessage": "Щоб використовувати цей обліковий запис у майбутньому, вам доведеться повторно ввести його дані та URL-адресу вашої організації.", - "@logOutConfirmationDialogMessage": { - "description": "Message for a confirmation dialog for logging out." + "@actionSheetOptionUnstarMessage": { + "description": "Label for unstar button on action sheet." }, - "errorWebAuthOperationalErrorTitle": "Щось пішло не так", - "@errorWebAuthOperationalErrorTitle": { - "description": "Error title when third-party authentication has an operational error (not necessarily caused by invalid credentials)." + "@appVersionUnknownPlaceholder": { + "description": "Placeholder to show in place of the app version when it is unknown." }, - "permissionsNeededTitle": "Потрібні дозволи", - "@permissionsNeededTitle": { - "description": "Title for dialog asking the user to grant additional permissions." + "@channelFeedButtonTooltip": { + "description": "Tooltip for button to navigate to a given channel's feed" }, - "permissionsDeniedCameraAccess": "Щоб завантажити зображення, надайте Zulip додаткові дозволи в налаштуваннях.", - "@permissionsDeniedCameraAccess": { - "description": "Message for dialog asking the user to grant permissions for camera access." + "@channelsEmptyPlaceholder": { + "description": "Centered text on the 'Channels' page saying that there is no content to show." }, - "permissionsDeniedReadExternalStorage": "Щоб завантажувати файли, надайте Zulip додаткові дозволи в налаштуваннях.", - "@permissionsDeniedReadExternalStorage": { - "description": "Message for dialog asking the user to grant permissions for external storage read access." + "@channelsPageTitle": { + "description": "Title for the page with a list of subscribed channels." }, - "actionSheetOptionStarMessage": "Вибрати повідомлення", - "@actionSheetOptionStarMessage": { - "description": "Label for star button on action sheet." + "@chooseAccountButtonAddAnAccount": { + "description": "Label for ChooseAccountPage button to add an account" }, - "actionSheetOptionUnresolveTopic": "Позначити як невирішене", - "@actionSheetOptionUnresolveTopic": { - "description": "Label for the 'Mark as unresolved' button on the topic action sheet." + "@chooseAccountPageLogOutButton": { + "description": "Label for the 'Log out' button for an account on the choose-account page" + }, + "@chooseAccountPageTitle": { + "description": "Title for the page to choose between Zulip accounts." + }, + "@combinedFeedPageTitle": { + "description": "Page title for the 'Combined feed' message view." }, - "composeBoxAttachFilesTooltip": "Прикріпити файли", "@composeBoxAttachFilesTooltip": { "description": "Tooltip for compose box icon to attach a file to the message." }, - "errorResolveTopicFailedTitle": "Не вдалося позначити тему як вирішену", - "@errorResolveTopicFailedTitle": { - "description": "Error title when marking a topic as resolved failed." + "@composeBoxAttachFromCameraTooltip": { + "description": "Tooltip for compose box icon to attach an image from the camera to the message." }, - "signInWithFoo": "Увійти з {method}", - "@signInWithFoo": { - "description": "Button to use {method} to sign in to the app.", - "placeholders": { - "method": { - "type": "String", - "example": "Google" - } - } + "@composeBoxAttachMediaTooltip": { + "description": "Tooltip for compose box icon to attach media to the message." }, - "aboutPageOpenSourceLicenses": "Ліцензії з відкритим кодом", - "@aboutPageOpenSourceLicenses": { - "description": "Item title in About Zulip page to navigate to Licenses page" + "@composeBoxBannerButtonCancel": { + "description": "Label text for the 'Cancel' button in the compose-box banner when you are editing a message." }, - "chooseAccountPageTitle": "Обрати обліковий запис", - "@chooseAccountPageTitle": { - "description": "Title for the page to choose between Zulip accounts." + "@composeBoxBannerButtonSave": { + "description": "Label text for the 'Save' button in the compose-box banner when you are editing a message." }, - "chooseAccountPageLogOutButton": "Вийти", - "@chooseAccountPageLogOutButton": { - "description": "Label for the 'Log out' button for an account on the choose-account page" + "@composeBoxBannerLabelEditMessage": { + "description": "Label text for the compose-box banner when you are editing a message." }, - "errorFailedToUploadFileTitle": "Не вдалося завантажити файл: {filename}", - "@errorFailedToUploadFileTitle": { - "description": "Error title when the specified file failed to upload.", + "@composeBoxChannelContentHint": { + "description": "Hint text for content input when sending a message to a channel.", "placeholders": { - "filename": { - "type": "String", - "example": "file.txt" + "destination": { + "example": "#channel name > topic name", + "type": "String" } } }, - "filenameAndSizeInMiB": "{filename}: {size} MiB", - "@filenameAndSizeInMiB": { - "description": "The name of a file, and its size in mebibytes.", + "@composeBoxDmContentHint": { + "description": "Hint text for content input when sending a message to one other person.", "placeholders": { - "filename": { - "type": "String", - "example": "foo.txt" - }, - "size": { - "type": "String", - "example": "20.2" + "user": { + "example": "channel name", + "type": "String" } } }, - "errorFilesTooLarge": "{num, plural, =1{Файл} other{{num} файли}} перевищують ліміт сервера в {maxFileUploadSizeMib} MiB і не будуть завантажені:\n\n{listMessage}", - "@errorFilesTooLarge": { - "description": "Error message when attached files are too large in size.", + "@composeBoxEnterTopicOrSkipHintText": { + "description": "Hint text for topic input widget in compose box when topics are optional.", "placeholders": { - "num": { - "type": "int", - "example": "2" - }, - "maxFileUploadSizeMib": { - "type": "int", - "example": "15" - }, - "listMessage": { - "type": "String", - "example": "foo.txt: 10.1 MiB\nbar.txt 20.2 MiB" + "defaultTopicName": { + "example": "general chat", + "type": "String" } } }, - "errorFilesTooLargeTitle": "{num, plural, =1{Файл} other{Файли}} занадто великий", - "@errorFilesTooLargeTitle": { - "description": "Error title when attached files are too large in size.", + "@composeBoxGenericContentHint": { + "description": "Hint text for content input when sending a message." + }, + "@composeBoxGroupDmContentHint": { + "description": "Hint text for content input when sending a message to a group." + }, + "@composeBoxLoadingMessage": { + "description": "Placeholder in compose box showing the quoted message is currently loading.", "placeholders": { - "num": { - "type": "int", - "example": "4" + "messageId": { + "example": "1234", + "type": "int" } } }, - "errorLoginFailedTitle": "Помилка входу", - "@errorLoginFailedTitle": { - "description": "Error title for login when signing into a Zulip server fails." + "@composeBoxSelfDmContentHint": { + "description": "Hint text for content input when sending a message to yourself." }, - "errorMessageNotSent": "Повідомлення не надіслано", - "@errorMessageNotSent": { - "description": "Error message for compose box when a message could not be sent." + "@composeBoxSendTooltip": { + "description": "Tooltip for send button in compose box." }, - "errorLoginCouldNotConnect": "Не вдалося підключитися до сервера:\n{url}", - "@errorLoginCouldNotConnect": { - "description": "Error message when the app could not connect to the server.", + "@composeBoxTopicHintText": { + "description": "Hint text for topic input widget in compose box." + }, + "@composeBoxUploadingFilename": { + "description": "Placeholder in compose box showing the specified file is currently uploading.", "placeholders": { - "url": { - "type": "String", - "example": "http://example.com/" + "filename": { + "example": "file.txt", + "type": "String" } } }, - "errorCouldNotConnectTitle": "Не вдалося підключитися", - "@errorCouldNotConnectTitle": { - "description": "Error title when the app could not connect to the server." - }, - "errorHandlingEventTitle": "Помилка обробки події Zulip. Повторна спроба підключення…", - "@errorHandlingEventTitle": { - "description": "Error title on failing to handle a Zulip server event." + "@contentValidationErrorEmpty": { + "description": "Content validation error message when the message is empty." }, - "errorMuteTopicFailed": "Не вдалося заглушити тему", - "@errorMuteTopicFailed": { - "description": "Error message when muting a topic failed." + "@contentValidationErrorQuoteAndReplyInProgress": { + "description": "Content validation error message when a quotation has not completed yet." }, - "errorUnmuteTopicFailed": "Не вдалося увімкнути тему", - "@errorUnmuteTopicFailed": { - "description": "Error message when unmuting a topic failed." + "@contentValidationErrorTooLong": { + "description": "Content validation error message when the message is too long." }, - "errorFollowTopicFailed": "Не вдалося підписатися на тему", - "@errorFollowTopicFailed": { - "description": "Error message when following a topic failed." + "@contentValidationErrorUploadInProgress": { + "description": "Content validation error message when attachments have not finished uploading." }, - "errorBannerCannotPostInChannelLabel": "Ви не маєте дозволу на публікацію в цьому каналі.", - "@errorBannerCannotPostInChannelLabel": { - "description": "Error-banner text replacing the compose box when you do not have permission to send a message to the channel." + "@dialogCancel": { + "description": "Button label in dialogs to cancel." }, - "composeBoxAttachMediaTooltip": "Додати зображення або відео", - "@composeBoxAttachMediaTooltip": { - "description": "Tooltip for compose box icon to attach media to the message." + "@dialogClose": { + "description": "Button label in dialogs to close." }, - "composeBoxAttachFromCameraTooltip": "Зробити фото", - "@composeBoxAttachFromCameraTooltip": { - "description": "Tooltip for compose box icon to attach an image from the camera to the message." + "@dialogContinue": { + "description": "Button label in dialogs to proceed." }, - "composeBoxGenericContentHint": "Ввести повідомлення", - "@composeBoxGenericContentHint": { - "description": "Hint text for content input when sending a message." + "@discardDraftConfirmationDialogConfirmButton": { + "description": "Label for the 'Discard' button on a confirmation dialog for discarding message text that was typed into the compose box." }, - "composeBoxDmContentHint": "Повідомлення @{user}", - "@composeBoxDmContentHint": { - "description": "Hint text for content input when sending a message to one other person.", - "placeholders": { - "user": { - "type": "String", - "example": "channel name" - } - } + "@discardDraftConfirmationDialogTitle": { + "description": "Title for a confirmation dialog for discarding message text that was typed into the compose box." }, - "composeBoxGroupDmContentHint": "Написати групі", - "@composeBoxGroupDmContentHint": { - "description": "Hint text for content input when sending a message to a group." + "@discardDraftForEditConfirmationDialogMessage": { + "description": "Message for a confirmation dialog for discarding message text that was typed into the compose box, when editing a message." }, - "unknownChannelName": "(невідомий канал)", - "@unknownChannelName": { - "description": "Replacement name for channel when it cannot be found in the store." + "@discardDraftForOutboxConfirmationDialogMessage": { + "description": "Message for a confirmation dialog when restoring an outbox message, for discarding message text that was typed into the compose box." }, - "composeBoxUploadingFilename": "Завантаження {filename}…", - "@composeBoxUploadingFilename": { - "description": "Placeholder in compose box showing the specified file is currently uploading.", + "@dmsWithOthersPageTitle": { + "description": "Message list page title for a DM group with others.", "placeholders": { - "filename": { - "type": "String", - "example": "file.txt" + "others": { + "example": "Alice, Bob", + "type": "String" } } }, - "unknownUserName": "(невідомий користувач)", - "@unknownUserName": { - "description": "Name placeholder to use for a user when we don't know their name." - }, - "dmsWithYourselfPageTitle": "Особисті повідомлення із собою", "@dmsWithYourselfPageTitle": { "description": "Message list page title for a DM group that only includes yourself." }, - "messageListGroupYouAndOthers": "Ви та {others}", - "@messageListGroupYouAndOthers": { - "description": "Message list recipient header for a DM group with others.", + "@editAlreadyInProgressMessage": { + "description": "Error message when a message edit cannot be saved because there is another edit already in progress." + }, + "@editAlreadyInProgressTitle": { + "description": "Error title when a message edit cannot be saved because there is another edit already in progress." + }, + "@emojiPickerSearchEmoji": { + "description": "Hint text for the emoji picker search text field." + }, + "@emojiReactionsMore": { + "description": "Label for a button opening the emoji picker." + }, + "@emptyMessageList": { + "description": "Placeholder for some message-list pages when there are no messages." + }, + "@emptyMessageListSearch": { + "description": "Placeholder for the 'Search' page when there are no messages." + }, + "@errorAccountLoggedIn": { + "description": "Error message on attempting to log into an account that's already logged in.", "placeholders": { - "others": { - "type": "String", - "example": "Alice, Bob" + "email": { + "example": "user@example.com", + "type": "String" + }, + "server": { + "example": "https://example.com", + "type": "String" } } }, - "dmsWithOthersPageTitle": "Особисті повідомлення з {others}", - "@dmsWithOthersPageTitle": { - "description": "Message list page title for a DM group with others.", + "@errorAccountLoggedInTitle": { + "description": "Error title on attempting to log into an account that's already logged in." + }, + "@errorBannerCannotPostInChannelLabel": { + "description": "Error-banner text replacing the compose box when you do not have permission to send a message to the channel." + }, + "@errorBannerDeactivatedDmLabel": { + "description": "Label text for error banner when sending a message to one or multiple deactivated users." + }, + "@errorConnectingToServerDetails": { + "description": "Dialog error message for a generic unknown error connecting to the server with details.", "placeholders": { - "others": { - "type": "String", - "example": "Alice, Bob" + "error": { + "example": "Invalid format", + "type": "String" + }, + "serverUrl": { + "example": "http://example.com/", + "type": "String" } } }, - "messageListGroupYouWithYourself": "Повідомлення з собою", - "@messageListGroupYouWithYourself": { - "description": "Message list recipient header for a DM group that only includes yourself." + "@errorConnectingToServerShort": { + "description": "Short error message for a generic unknown error connecting to the server." }, - "contentValidationErrorTooLong": "Довжина повідомлення не повинна перевищувати 10000 символів.", - "@contentValidationErrorTooLong": { - "description": "Content validation error message when the message is too long." + "@errorCopyingFailed": { + "description": "Error message when copying the text of a message to the user's system clipboard failed." }, - "contentValidationErrorEmpty": "Вам нема чого надсилати!", - "@contentValidationErrorEmpty": { - "description": "Content validation error message when the message is empty." + "@errorCouldNotConnectTitle": { + "description": "Error title when the app could not connect to the server." }, - "dialogCancel": "Відміна", - "@dialogCancel": { - "description": "Button label in dialogs to cancel." + "@errorCouldNotEditMessageTitle": { + "description": "Error title when an exception prevented us from opening the compose box for editing a message." }, - "dialogClose": "Закрити", - "@dialogClose": { - "description": "Button label in dialogs to close." + "@errorCouldNotFetchMessageSource": { + "description": "Error message when the source of a message could not be fetched." + }, + "@errorCouldNotOpenLink": { + "description": "Error message when opening a link failed.", + "placeholders": { + "url": { + "example": "https://chat.example.com", + "type": "String" + } + } + }, + "@errorCouldNotOpenLinkTitle": { + "description": "Error title when opening a link failed." + }, + "@errorCouldNotShowUserProfile": { + "description": "Message that appears on the user profile page when the profile cannot be shown." }, - "errorDialogContinue": "ОК", "@errorDialogContinue": { "description": "Button label in error dialogs to acknowledge the error and close the dialog." }, - "errorDialogTitle": "Помилка", + "@errorDialogLearnMore": { + "description": "Button label in error dialogs to open a web page with more information." + }, "@errorDialogTitle": { "description": "Generic title for error dialog." }, - "settingsPageTitle": "Налаштування", - "@settingsPageTitle": { - "description": "Title for the settings page." + "@errorFailedToUploadFileTitle": { + "description": "Error title when the specified file failed to upload.", + "placeholders": { + "filename": { + "example": "file.txt", + "type": "String" + } + } }, - "actionSheetOptionCopyMessageText": "Копіювати текст повідомлення", - "@actionSheetOptionCopyMessageText": { - "description": "Label for copy message text button on action sheet." + "@errorFilesTooLarge": { + "description": "Error message when attached files are too large in size.", + "placeholders": { + "listMessage": { + "example": "foo.txt: 10.1 MiB\nbar.txt 20.2 MiB", + "type": "String" + }, + "maxFileUploadSizeMib": { + "example": "15", + "type": "int" + }, + "num": { + "example": "2", + "type": "int" + } + } }, - "aboutPageAppVersion": "Версія додатку", - "@aboutPageAppVersion": { - "description": "Label for Zulip app version in About Zulip page" + "@errorFilesTooLargeTitle": { + "description": "Error title when attached files are too large in size.", + "placeholders": { + "num": { + "example": "4", + "type": "int" + } + } }, - "profileButtonSendDirectMessage": "Надіслати особисте повідомлення", - "@profileButtonSendDirectMessage": { - "description": "Label for button in profile screen to navigate to DMs with the shown user." + "@errorFollowTopicFailed": { + "description": "Error message when following a topic failed." }, - "errorLoginInvalidInputTitle": "Невірний вхід", - "@errorLoginInvalidInputTitle": { - "description": "Error title for login when input is invalid." + "@errorHandlingEventDetails": { + "description": "Error details on failing to handle a Zulip server event.", + "placeholders": { + "error": { + "example": "Unexpected null value", + "type": "String" + }, + "event": { + "example": "UpdateMessageEvent(id: 123, messageIds: [2345, 3456], newTopic: 'dinner')", + "type": "String" + }, + "serverUrl": { + "example": "https://chat.example.com", + "type": "String" + } + } }, - "contentValidationErrorUploadInProgress": "Дочекайтеся завершення завантаження.", - "@contentValidationErrorUploadInProgress": { - "description": "Content validation error message when attachments have not finished uploading." + "@errorHandlingEventTitle": { + "description": "Error title on failing to handle a Zulip server event." }, - "switchAccountButton": "Змінити обліковий запис", - "@switchAccountButton": { - "description": "Label for main-menu button leading to the choose-account page." + "@errorInvalidApiKeyMessage": { + "description": "Error message in the dialog for invalid API key.", + "placeholders": { + "url": { + "example": "http://chat.example.com/", + "type": "String" + } + } }, - "actionSheetOptionUnfollowTopic": "Відписатися від теми", - "@actionSheetOptionUnfollowTopic": { - "description": "Label for unfollowing a topic on action sheet." + "@errorInvalidResponse": { + "description": "Error message when an API call returned an invalid response." }, - "errorMessageDoesNotSeemToExist": "Здається, цього повідомлення не існує.", - "@errorMessageDoesNotSeemToExist": { - "description": "Error message when loading a message that does not exist." + "@errorLoginCouldNotConnect": { + "description": "Error message when the app could not connect to the server.", + "placeholders": { + "url": { + "example": "http://example.com/", + "type": "String" + } + } }, - "snackBarDetails": "Деталі", - "@snackBarDetails": { - "description": "Button label for snack bar button that opens a dialog with more details." - }, - "chooseAccountButtonAddAnAccount": "Додати обліковий запис", - "@chooseAccountButtonAddAnAccount": { - "description": "Label for ChooseAccountPage button to add an account" - }, - "actionSheetOptionMarkAsUnread": "Позначити як непрочитане звідси", - "@actionSheetOptionMarkAsUnread": { - "description": "Label for mark as unread button on action sheet." + "@errorLoginFailedTitle": { + "description": "Error title for login when signing into a Zulip server fails." }, - "errorBannerDeactivatedDmLabel": "Ви не можете надсилати повідомлення деактивованим користувачам.", - "@errorBannerDeactivatedDmLabel": { - "description": "Label text for error banner when sending a message to one or multiple deactivated users." + "@errorLoginInvalidInputTitle": { + "description": "Error title for login when input is invalid." }, - "errorCouldNotShowUserProfile": "Не вдалося показати профіль користувача.", - "@errorCouldNotShowUserProfile": { - "description": "Message that appears on the user profile page when the profile cannot be shown." + "@errorMalformedResponse": { + "description": "Error message when an API call fails because we could not parse the response.", + "placeholders": { + "httpStatus": { + "example": "200", + "type": "int" + } + } }, - "actionSheetOptionUnmuteTopic": "Увімкнути тему", - "@actionSheetOptionUnmuteTopic": { - "description": "Label for unmuting a topic on action sheet." + "@errorMalformedResponseWithCause": { + "description": "Error message when an API call fails because we could not parse the response, with details of the failure.", + "placeholders": { + "details": { + "example": "type 'Null' is not a subtype of type 'String' in type cast", + "type": "String" + }, + "httpStatus": { + "example": "200", + "type": "int" + } + } }, - "actionSheetOptionResolveTopic": "Позначити як вирішене", - "@actionSheetOptionResolveTopic": { - "description": "Label for the 'Mark as resolved' button on the topic action sheet." + "@errorMarkAsReadFailedTitle": { + "description": "Error title when mark as read action failed." }, - "errorUnresolveTopicFailedTitle": "Не вдалося позначити тему як невирішену", - "@errorUnresolveTopicFailedTitle": { - "description": "Error title when marking a topic as unresolved failed." + "@errorMarkAsUnreadFailedTitle": { + "description": "Error title when mark as unread action failed." }, - "actionSheetOptionCopyMessageLink": "Копіювати посилання на повідомлення", - "@actionSheetOptionCopyMessageLink": { - "description": "Label for copy message link button on action sheet." + "@errorMessageDoesNotSeemToExist": { + "description": "Error message when loading a message that does not exist." }, - "loginFormSubmitLabel": "Увійти", - "@loginFormSubmitLabel": { - "description": "Button text to submit login credentials." + "@errorMessageEditNotSaved": { + "description": "Error message for compose box when a message edit could not be saved." }, - "actionSheetOptionShare": "Поширити", - "@actionSheetOptionShare": { - "description": "Label for share button on action sheet." + "@errorMessageNotSent": { + "description": "Error message for compose box when a message could not be sent." }, - "errorWebAuthOperationalError": "Сталася неочікувана помилка.", - "@errorWebAuthOperationalError": { - "description": "Error message when third-party authentication has an operational error (not necessarily caused by invalid credentials)." + "@errorMuteTopicFailed": { + "description": "Error message when muting a topic failed." }, - "errorCouldNotFetchMessageSource": "Не вдалося отримати джерело повідомлення.", - "@errorCouldNotFetchMessageSource": { - "description": "Error message when the source of a message could not be fetched." + "@errorNetworkRequestFailed": { + "description": "Error message when a network request fails." }, - "loginPageTitle": "Увійти", - "@loginPageTitle": { - "description": "Title for login page." + "@errorNotificationOpenAccountNotFound": { + "description": "Error message when the account associated with the notification could not be found" }, - "composeBoxTopicHintText": "Тема", - "@composeBoxTopicHintText": { - "description": "Hint text for topic input widget in compose box." + "@errorNotificationOpenTitle": { + "description": "Error title when notification opening fails" }, - "errorQuotationFailed": "Помилка цитування", "@errorQuotationFailed": { "description": "Error message when quoting a message failed." }, - "errorServerMessage": "Сервер сказав:\n\n{message}", - "@errorServerMessage": { - "description": "Error message that quotes an error from the server.", - "placeholders": { - "message": { - "type": "String", - "example": "Invalid format" - } - } - }, - "composeBoxSelfDmContentHint": "Занотувати щось", - "@composeBoxSelfDmContentHint": { - "description": "Hint text for content input when sending a message to yourself." + "@errorReactionAddingFailedTitle": { + "description": "Error title when adding a message reaction fails" }, - "lightboxCopyLinkTooltip": "Копіювати посилання", - "@lightboxCopyLinkTooltip": { - "description": "Tooltip in lightbox for the copy link action." + "@errorReactionRemovingFailedTitle": { + "description": "Error title when removing a message reaction fails" }, - "errorConnectingToServerDetails": "Помилка підключення до Zulip на {serverUrl}. Буде повторена спроба:\n\n{error}", - "@errorConnectingToServerDetails": { - "description": "Dialog error message for a generic unknown error connecting to the server with details.", + "@errorRequestFailed": { + "description": "Error message when an API call fails.", "placeholders": { - "serverUrl": { - "type": "String", - "example": "http://example.com/" - }, - "error": { - "type": "String", - "example": "Invalid format" + "httpStatus": { + "example": "500", + "type": "int" } } }, - "successLinkCopied": "Посилання скопійовано", - "@successLinkCopied": { - "description": "Success message after copy link action completed." + "@errorResolveTopicFailedTitle": { + "description": "Error title when marking a topic as resolved failed." }, - "errorHandlingEventDetails": "Помилка обробки події Zulip із {serverUrl}; буде повторювати спробу.\n\nПомилка: {error}\n\nПодія: {event}", - "@errorHandlingEventDetails": { - "description": "Error details on failing to handle a Zulip server event.", + "@errorServerMessage": { + "description": "Error message that quotes an error from the server.", "placeholders": { - "serverUrl": { - "type": "String", - "example": "https://chat.example.com" - }, - "error": { - "type": "String", - "example": "Unexpected null value" - }, - "event": { - "type": "String", - "example": "UpdateMessageEvent(id: 123, messageIds: [2345, 3456], newTopic: 'dinner')" + "message": { + "example": "Invalid format", + "type": "String" } } }, - "errorUnfollowTopicFailed": "Не вдалося відписатися від теми", - "@errorUnfollowTopicFailed": { - "description": "Error message when unfollowing a topic failed." - }, - "errorCouldNotOpenLink": "Не вдалося відкрити посилання: {url}", - "@errorCouldNotOpenLink": { - "description": "Error message when opening a link failed.", + "@errorServerVersionUnsupportedMessage": { + "description": "Error message in the dialog for when the Zulip Server version is unsupported.", "placeholders": { + "minSupportedZulipVersion": { + "example": "4.0", + "type": "String" + }, "url": { - "type": "String", - "example": "https://chat.example.com" + "example": "http://chat.example.com/", + "type": "String" + }, + "zulipVersion": { + "example": "3.2", + "type": "String" } } }, - "lightboxVideoCurrentPosition": "Поточна позиція", - "@lightboxVideoCurrentPosition": { - "description": "The current playback position of the video playing in the lightbox." + "@errorSharingFailed": { + "description": "Error message when sharing a message failed." }, - "loginAddAnAccountPageTitle": "Додати обліковий запис", - "@loginAddAnAccountPageTitle": { - "description": "Title for page to add a Zulip account." + "@errorStarMessageFailedTitle": { + "description": "Error title when starring a message failed." }, - "loginMethodDivider": "АБО", - "@loginMethodDivider": { - "description": "Text on the divider between the username/password form and the third-party login options. Uppercase (for languages with letter case)." + "@errorUnfollowTopicFailed": { + "description": "Error message when unfollowing a topic failed." }, - "loginServerUrlLabel": "URL-адреса вашого сервера Zulip", - "@loginServerUrlLabel": { - "description": "Label in login page for Zulip server URL entry." + "@errorUnmuteTopicFailed": { + "description": "Error message when unmuting a topic failed." }, - "manyPeopleTyping": "Кілька людей друкують…", - "@manyPeopleTyping": { - "description": "Text to display when there are multiple users typing." + "@errorUnresolveTopicFailedTitle": { + "description": "Error title when marking a topic as unresolved failed." }, - "noEarlierMessages": "Немає попередніх повідомлень", - "@noEarlierMessages": { - "description": "Text to show at the start of a message list if there are no earlier messages." + "@errorUnstarMessageFailedTitle": { + "description": "Error title when unstarring a message failed." }, - "loginErrorMissingEmail": "Будь ласка, введіть свою електронну адресу.", - "@loginErrorMissingEmail": { - "description": "Error message when an empty email was provided." + "@errorVideoPlayerFailed": { + "description": "Error message when a video fails to play." }, - "loginPasswordLabel": "Пароль", - "@loginPasswordLabel": { - "description": "Label for password input field." + "@errorWebAuthOperationalError": { + "description": "Error message when third-party authentication has an operational error (not necessarily caused by invalid credentials)." }, - "errorDialogLearnMore": "Дізнайтися більше", - "@errorDialogLearnMore": { - "description": "Button label in error dialogs to open a web page with more information." + "@errorWebAuthOperationalErrorTitle": { + "description": "Error title when third-party authentication has an operational error (not necessarily caused by invalid credentials)." }, - "loginUsernameLabel": "Ім'я користувача", - "@loginUsernameLabel": { - "description": "Label for input when a username is required to log in." + "@experimentalFeatureSettingsPageTitle": { + "description": "Title of settings page for experimental, in-development features" }, - "topicValidationErrorMandatoryButEmpty": "Теми обовʼязкові в цій організації.", - "@topicValidationErrorMandatoryButEmpty": { - "description": "Topic validation error when topic is required but was empty." + "@experimentalFeatureSettingsWarning": { + "description": "Warning text on settings page for experimental, in-development features" }, - "errorServerVersionUnsupportedMessage": "{url} використовує Zulip Server {zulipVersion}, який не підтримується. Мінімальною підтримуваною версією є Zulip Server {minSupportedZulipVersion}.", - "@errorServerVersionUnsupportedMessage": { - "description": "Error message in the dialog for when the Zulip Server version is unsupported.", + "@filenameAndSizeInMiB": { + "description": "The name of a file, and its size in mebibytes.", "placeholders": { - "url": { - "type": "String", - "example": "http://chat.example.com/" - }, - "zulipVersion": { - "type": "String", - "example": "3.2" + "filename": { + "example": "foo.txt", + "type": "String" }, - "minSupportedZulipVersion": { - "type": "String", - "example": "4.0" + "size": { + "example": "20.2", + "type": "String" } } }, - "errorInvalidResponse": "Сервер надіслав недійсну відповідь.", - "@errorInvalidResponse": { - "description": "Error message when an API call returned an invalid response." + "@inboxEmptyPlaceholder": { + "description": "Centered text on the 'Inbox' page saying that there is no content to show." }, - "errorNetworkRequestFailed": "Помилка запиту мережі", - "@errorNetworkRequestFailed": { - "description": "Error message when a network request fails." + "@inboxPageTitle": { + "description": "Title for the page with unreads." }, - "errorMalformedResponse": "Сервер дав неправильну відповідь; Статус HTTP {httpStatus}", - "@errorMalformedResponse": { - "description": "Error message when an API call fails because we could not parse the response.", - "placeholders": { - "httpStatus": { - "type": "int", - "example": "200" - } - } + "@initialAnchorSettingDescription": { + "description": "Description of setting controlling initial anchor of message list." }, - "errorVideoPlayerFailed": "Неможливо відтворити відео.", - "@errorVideoPlayerFailed": { - "description": "Error message when a video fails to play." + "@initialAnchorSettingFirstUnreadAlways": { + "description": "Label for a value of setting controlling initial anchor of message list." }, - "serverUrlValidationErrorEmpty": "Будь ласка, введіть URL.", - "@serverUrlValidationErrorEmpty": { - "description": "Error message when URL is empty" + "@initialAnchorSettingFirstUnreadConversations": { + "description": "Label for a value of setting controlling initial anchor of message list." }, - "serverUrlValidationErrorInvalidUrl": "Введіть дійсну URL-адресу.", - "@serverUrlValidationErrorInvalidUrl": { - "description": "Error message when URL is not in a valid format." + "@initialAnchorSettingNewestAlways": { + "description": "Label for a value of setting controlling initial anchor of message list." }, - "spoilerDefaultHeaderText": "Спойлер", - "@spoilerDefaultHeaderText": { - "description": "The default header text in a spoiler block ( https://zulip.com/help/spoilers )." + "@initialAnchorSettingTitle": { + "description": "Title of setting controlling initial anchor of message list." }, - "markAllAsReadLabel": "Позначити всі повідомлення як прочитані", - "@markAllAsReadLabel": { - "description": "Button text to mark messages as read." + "@invisibleMode": { + "description": "Label for the 'Invisible mode' switch on the profile page." }, - "errorMarkAsReadFailedTitle": "Не вдалося позначити як прочитане", - "@errorMarkAsReadFailedTitle": { - "description": "Error title when mark as read action failed." + "@lightboxCopyLinkTooltip": { + "description": "Tooltip in lightbox for the copy link action." }, - "markAsUnreadComplete": "Позначено як непрочитані {num, plural, =1{1 повідомлення} other{{num} повідомлення}}.", - "@markAsUnreadComplete": { - "description": "Message when marking messages as unread has completed.", - "placeholders": { - "num": { - "type": "int", - "example": "4" - } - } + "@lightboxVideoCurrentPosition": { + "description": "The current playback position of the video playing in the lightbox." }, - "errorMarkAsUnreadFailedTitle": "Не вдалося позначити як непрочитане", - "@errorMarkAsUnreadFailedTitle": { - "description": "Error title when mark as unread action failed." + "@lightboxVideoDuration": { + "description": "The total duration of the video playing in the lightbox." }, - "today": "Сьогодні", - "@today": { - "description": "Term to use to reference the current day." + "@logOutConfirmationDialogConfirmButton": { + "description": "Label for the 'Log out' button on a confirmation dialog for logging out." }, - "yesterday": "Учора", - "@yesterday": { - "description": "Term to use to reference the previous day." + "@logOutConfirmationDialogMessage": { + "description": "Message for a confirmation dialog for logging out." }, - "inboxPageTitle": "Вхідні", - "@inboxPageTitle": { - "description": "Title for the page with unreads." + "@logOutConfirmationDialogTitle": { + "description": "Title for a confirmation dialog for logging out." }, - "mentionsPageTitle": "Згадки", - "@mentionsPageTitle": { - "description": "Page title for the 'Mentions' message view." + "@loginAddAnAccountPageTitle": { + "description": "Title for page to add a Zulip account." }, - "starredMessagesPageTitle": "Вибрані повідомлення", - "@starredMessagesPageTitle": { - "description": "Page title for the 'Starred messages' message view." + "@loginEmailLabel": { + "description": "Label for input when an email is required to log in." }, - "mainMenuMyProfile": "Мій профіль", - "@mainMenuMyProfile": { - "description": "Label for main-menu button leading to the user's own profile." + "@loginErrorMissingEmail": { + "description": "Error message when an empty email was provided." }, - "channelFeedButtonTooltip": "Стрічка каналу", - "@channelFeedButtonTooltip": { - "description": "Tooltip for button to navigate to a given channel's feed" + "@loginErrorMissingPassword": { + "description": "Error message when an empty password was provided." }, - "notifGroupDmConversationLabel": "{senderFullName} вам і {numOthers, plural, =1{1 іншому} other{{numOthers} іншим}}", - "@notifGroupDmConversationLabel": { - "description": "Label for a group DM conversation notification.", - "placeholders": { - "senderFullName": { - "type": "String", - "example": "Alice" - }, - "numOthers": { - "type": "int", - "example": "4" - } - } + "@loginErrorMissingUsername": { + "description": "Error message when an empty username was provided." }, - "pinnedSubscriptionsLabel": "Закріплені", - "@pinnedSubscriptionsLabel": { - "description": "Label for the list of pinned subscribed channels." + "@loginFormSubmitLabel": { + "description": "Button text to submit login credentials." }, - "unpinnedSubscriptionsLabel": "Відкріплені", - "@unpinnedSubscriptionsLabel": { - "description": "Label for the list of unpinned subscribed channels." + "@loginHidePassword": { + "description": "Icon label for button to hide password in input form." }, - "notifSelfUser": "Ви", - "@notifSelfUser": { - "description": "Display name for the user themself, to show after replying in an Android notification" + "@loginMethodDivider": { + "description": "Text on the divider between the username/password form and the third-party login options. Uppercase (for languages with letter case)." }, - "onePersonTyping": "{typist} друкує…", - "@onePersonTyping": { - "description": "Text to display when there is one user typing.", + "@loginPageTitle": { + "description": "Title for login page." + }, + "@loginPasswordLabel": { + "description": "Label for password input field." + }, + "@loginServerUrlLabel": { + "description": "Label in login page for Zulip server URL entry." + }, + "@loginUsernameLabel": { + "description": "Label for input when a username is required to log in." + }, + "@mainMenuMyProfile": { + "description": "Label for main-menu button leading to the user's own profile." + }, + "@manyPeopleTyping": { + "description": "Text to display when there are multiple users typing." + }, + "@markAllAsReadLabel": { + "description": "Button text to mark messages as read." + }, + "@markAsReadComplete": { + "description": "Message when marking messages as read has completed.", "placeholders": { - "typist": { - "type": "String", - "example": "Alice" + "num": { + "example": "4", + "type": "int" } } }, - "twoPeopleTyping": "{typist} і {otherTypist} друкують…", - "@twoPeopleTyping": { - "description": "Text to display when there are two users typing.", + "@markAsReadInProgress": { + "description": "Progress message when marking messages as read." + }, + "@markAsUnreadComplete": { + "description": "Message when marking messages as unread has completed.", "placeholders": { - "typist": { - "type": "String", - "example": "Alice" - }, - "otherTypist": { - "type": "String", - "example": "Bob" + "num": { + "example": "4", + "type": "int" } } }, - "wildcardMentionAll": "усі", - "@wildcardMentionAll": { - "description": "Text for \"@all\" wildcard-mention autocomplete option when writing a channel or DM message." + "@markAsUnreadInProgress": { + "description": "Progress message when marking messages as unread." }, - "wildcardMentionEveryone": "усі", - "@wildcardMentionEveryone": { - "description": "Text for \"@everyone\" wildcard-mention autocomplete option when writing a channel or DM message." + "@markReadOnScrollSettingAlways": { + "description": "Label for a value of setting controlling which message-list views should mark read on scroll." }, - "wildcardMentionChannel": "канал", - "@wildcardMentionChannel": { - "description": "Text for \"@channel\" wildcard-mention autocomplete option when writing a channel message." + "@markReadOnScrollSettingConversations": { + "description": "Label for a value of setting controlling which message-list views should mark read on scroll." }, - "wildcardMentionAllDmDescription": "Повідомити одержувачів", - "@wildcardMentionAllDmDescription": { - "description": "Description for \"@all\" and \"@everyone\" wildcard-mention autocomplete options when writing a DM message." + "@markReadOnScrollSettingConversationsDescription": { + "description": "Description for a value of setting controlling which message-list views should mark read on scroll." }, - "wildcardMentionTopicDescription": "Повідомити канал", - "@wildcardMentionTopicDescription": { - "description": "Description for \"@topic\" wildcard-mention autocomplete options when writing a channel message." + "@markReadOnScrollSettingDescription": { + "description": "Description of setting controlling which message-list views should mark read on scroll." + }, + "@markReadOnScrollSettingNever": { + "description": "Label for a value of setting controlling which message-list views should mark read on scroll." + }, + "@markReadOnScrollSettingTitle": { + "description": "Title of setting controlling which message-list views should mark read on scroll." + }, + "@mentionsPageTitle": { + "description": "Page title for the 'Mentions' message view." }, - "messageIsEditedLabel": "РЕДАГОВАНО", "@messageIsEditedLabel": { "description": "Label for an edited message. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" }, - "messageIsMovedLabel": "ПЕРЕМІЩЕНО", "@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.", + "@messageListGroupYouAndOthers": { + "description": "Message list recipient header for a DM group with others.", "placeholders": { - "voterNames": { - "type": "String", - "example": "Alice, Bob, Chad" + "others": { + "example": "Alice, Bob", + "type": "String" } } }, - "themeSettingTitle": "ТЕМА", - "@themeSettingTitle": { - "description": "Title for theme setting. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + "@messageListGroupYouWithYourself": { + "description": "Message list recipient header for a DM group that only includes yourself." }, - "themeSettingDark": "Темна", - "@themeSettingDark": { - "description": "Label for dark theme setting." + "@messageNotSentLabel": { + "description": "Text on a message in the message list saying that a send message request failed. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" }, - "themeSettingLight": "Світла", - "@themeSettingLight": { - "description": "Label for light theme setting." + "@mutedUser": { + "description": "Name for a muted user to display all over the app." }, - "pollWidgetQuestionMissing": "Немає питання.", - "@pollWidgetQuestionMissing": { - "description": "Text to display for a poll when the question is missing" + "@newDmFabButtonLabel": { + "description": "Label for the floating action button (FAB) that opens the new DM sheet." }, - "pollWidgetOptionsMissing": "У цьому опитуванні ще немає варіантів.", - "@pollWidgetOptionsMissing": { - "description": "Text to display for a poll when it has no options" + "@newDmSheetComposeButtonLabel": { + "description": "Label for the compose button in the new DM sheet that starts composing a message to the selected users." }, - "experimentalFeatureSettingsPageTitle": "Експериментальні функції", - "@experimentalFeatureSettingsPageTitle": { - "description": "Title of settings page for experimental, in-development features" + "@newDmSheetNoUsersFound": { + "description": "Message shown in the new DM sheet when no users match the search." }, - "emojiPickerSearchEmoji": "Пошук емодзі", - "@emojiPickerSearchEmoji": { - "description": "Hint text for the emoji picker search text field." + "@newDmSheetScreenTitle": { + "description": "Title displayed at the top of the new DM screen." }, - "scrollToBottomTooltip": "Прокрутити вниз", - "@scrollToBottomTooltip": { - "description": "Tooltip for button to scroll to bottom." + "@newDmSheetSearchHintEmpty": { + "description": "Hint text for the search bar when no users are selected" }, - "appVersionUnknownPlaceholder": "(…)", - "@appVersionUnknownPlaceholder": { - "description": "Placeholder to show in place of the app version when it is unknown." + "@newDmSheetSearchHintSomeSelected": { + "description": "Hint text for the search bar when at least one user is selected." }, - "zulipAppTitle": "Zulip", - "@zulipAppTitle": { - "description": "The name of Zulip. This should be either 'Zulip' or a transliteration." + "@noEarlierMessages": { + "description": "Text to show at the start of a message list if there are no earlier messages." }, - "loginEmailLabel": "Адреса електронної пошти", - "@loginEmailLabel": { - "description": "Label for input when an email is required to log in." + "@noStatusText": { + "description": "The text part of the status button sub-label in self-user profile page when status text is not set." }, - "channelsPageTitle": "Канали", - "@channelsPageTitle": { - "description": "Title for the page with a list of subscribed channels." + "@notifGroupDmConversationLabel": { + "description": "Label for a group DM conversation notification.", + "placeholders": { + "numOthers": { + "example": "4", + "type": "int" + }, + "senderFullName": { + "example": "Alice", + "type": "String" + } + } }, - "themeSettingSystem": "Системна", - "@themeSettingSystem": { - "description": "Label for system theme setting." + "@notifSelfUser": { + "description": "Display name for the user themself, to show after replying in an Android notification" }, - "loginErrorMissingUsername": "Введіть своє ім'я користувача.", - "@loginErrorMissingUsername": { - "description": "Error message when an empty username was provided." + "@onePersonTyping": { + "description": "Text to display when there is one user typing.", + "placeholders": { + "typist": { + "example": "Alice", + "type": "String" + } + } }, - "markAsReadInProgress": "Позначення повідомлень як прочитаних…", - "@markAsReadInProgress": { - "description": "Progress message when marking messages as read." + "@openLinksWithInAppBrowser": { + "description": "Label for toggling setting to open links with in-app browser" }, - "recentDmConversationsSectionHeader": "Особисті повідомлення", - "@recentDmConversationsSectionHeader": { - "description": "Heading for direct messages section on the 'Inbox' message view." + "@permissionsDeniedCameraAccess": { + "description": "Message for dialog asking the user to grant permissions for camera access." }, - "errorNotificationOpenTitle": "Не вдалося відкрити сповіщення", - "@errorNotificationOpenTitle": { - "description": "Error title when notification opening fails" + "@permissionsDeniedReadExternalStorage": { + "description": "Message for dialog asking the user to grant permissions for external storage read access." }, - "loginErrorMissingPassword": "Будь ласка, введіть свій пароль.", - "@loginErrorMissingPassword": { - "description": "Error message when an empty password was provided." + "@permissionsNeededOpenSettings": { + "description": "Button label for permissions dialog button that opens the system settings screen." }, - "loginHidePassword": "Приховати пароль", - "@loginHidePassword": { - "description": "Icon label for button to hide password in input form." + "@permissionsNeededTitle": { + "description": "Title for dialog asking the user to grant additional permissions." }, - "errorRequestFailed": "Помилка мережевого запиту: статус HTTP {httpStatus}", - "@errorRequestFailed": { - "description": "Error message when an API call fails.", + "@pinnedSubscriptionsLabel": { + "description": "Label for the list of pinned subscribed channels." + }, + "@pollVoterNames": { + "description": "The list of people who voted for a poll option, wrapped in parentheses.", "placeholders": { - "httpStatus": { - "type": "int", - "example": "500" + "voterNames": { + "example": "Alice, Bob, Chad", + "type": "String" } } }, - "userRoleGuest": "Гість", - "@userRoleGuest": { - "description": "Label for UserRole.guest" + "@pollWidgetOptionsMissing": { + "description": "Text to display for a poll when it has no options" }, - "userRoleAdministrator": "Адміністратор", - "@userRoleAdministrator": { - "description": "Label for UserRole.administrator" + "@pollWidgetQuestionMissing": { + "description": "Text to display for a poll when the question is missing" }, - "userRoleUnknown": "Невідомо", - "@userRoleUnknown": { - "description": "Label for UserRole.unknown" + "@preparingEditMessageContentInput": { + "description": "Hint text for content input when the compose box is preparing to edit a message." }, - "topicValidationErrorTooLong": "Довжина теми не повинна перевищувати 60 символів.", - "@topicValidationErrorTooLong": { - "description": "Topic validation error when topic is too long." + "@profileButtonSendDirectMessage": { + "description": "Label for button in profile screen to navigate to DMs with the shown user." }, - "serverUrlValidationErrorUnsupportedScheme": "URL-адреса сервера має починатися з http:// або https://.", - "@serverUrlValidationErrorUnsupportedScheme": { - "description": "Error message when URL has an unsupported scheme." + "@reactedEmojiSelfUser": { + "description": "Display name for the user themself, to show on an emoji reaction added by the user." }, - "markAsReadComplete": "Позначено як прочитані {num, plural, =1{1 повідомлення} other{{num} повідомлення}}.", - "@markAsReadComplete": { - "description": "Message when marking messages as read has completed.", + "@reactionChipLabel": { + "description": "Text describing a reaction chip, with the emoji name and a list or number of votes. (An accessibility label for assistive technology.)", "placeholders": { - "num": { - "type": "int", - "example": "4" + "emojiName": { + "example": "working_on_it", + "type": "String" + }, + "votes": { + "example": "You, Chris, Greg", + "type": "String" } } }, - "userRoleOwner": "Власник", - "@userRoleOwner": { - "description": "Label for UserRole.owner" + "@reactionChipVotesYouAndOthers": { + "description": "The number of votes on a reaction chip, where the self-user and at least one other user has voted. (An accessibility label for assistive technology.)", + "placeholders": { + "otherUsersCount": { + "example": "4", + "type": "int" + } + } }, - "errorInvalidApiKeyMessage": "Ваш обліковий запис на {url} не вдалося автентифікувати. Спробуйте увійти ще раз або скористайтеся іншим обліковим записом.", - "@errorInvalidApiKeyMessage": { - "description": "Error message in the dialog for invalid API key.", + "@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." + }, + "@recentDmConversationsSectionHeader": { + "description": "Heading for direct messages section on the 'Inbox' message view." + }, + "@revealButtonLabel": { + "description": "Label for the button revealing hidden message from a muted sender in message list." + }, + "@savingMessageEditFailedLabel": { + "description": "Text on a message in the message list saying that a message edit request failed. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + }, + "@savingMessageEditLabel": { + "description": "Text on a message in the message list saying that a message edit request is processing. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + }, + "@scrollToBottomTooltip": { + "description": "Tooltip for button to scroll to bottom." + }, + "@searchMessagesClearButtonTooltip": { + "description": "Tooltip for the 'x' button in the search text field." + }, + "@searchMessagesHintText": { + "description": "Hint text for the message search text field." + }, + "@searchMessagesPageTitle": { + "description": "Page title for the 'Search' message view." + }, + "@seeWhoReactedSheetEmojiNameWithVoteCount": { + "description": "In the 'See who reacted' sheet, an emoji reaction's name and how many votes it has. (An accessibility label for assistive technology.)", "placeholders": { - "url": { - "type": "String", - "example": "http://chat.example.com/" + "emojiName": { + "example": "working_on_it", + "type": "String" + }, + "num": { + "example": "2", + "type": "int" } } }, - "errorMalformedResponseWithCause": "Сервер дав неправильну відповідь; Статус HTTP {httpStatus}; {details}", - "@errorMalformedResponseWithCause": { - "description": "Error message when an API call fails because we could not parse the response, with details of the failure.", + "@seeWhoReactedSheetHeaderLabel": { + "description": "In the 'See who reacted' sheet, a label for the list of emoji reactions at the top, with the total number of reactions. (An accessibility label for assistive technology.)", "placeholders": { - "httpStatus": { - "type": "int", - "example": "200" + "num": { + "example": "2", + "type": "int" + } + } + }, + "@seeWhoReactedSheetNoReactions": { + "description": "Explanation on the 'See who reacted' sheet when the message has no reactions (because they were removed after the sheet was opened)." + }, + "@seeWhoReactedSheetUserListLabel": { + "description": "In the 'See who reacted' sheet, a label for the list of users who chose an emoji reaction, with the emoji's name and how many votes it has. (An accessibility label for assistive technology.)", + "placeholders": { + "emojiName": { + "example": "working_on_it", + "type": "String" }, - "details": { - "type": "String", - "example": "type 'Null' is not a subtype of type 'String' in type cast" + "num": { + "example": "2", + "type": "int" } } }, - "serverUrlValidationErrorNoUseEmail": "Введіть URL-адресу сервера, а не свою електронну адресу.", + "@serverUrlValidationErrorEmpty": { + "description": "Error message when URL is empty" + }, + "@serverUrlValidationErrorInvalidUrl": { + "description": "Error message when URL is not in a valid format." + }, "@serverUrlValidationErrorNoUseEmail": { "description": "Error message when URL looks like an email" }, - "markAsUnreadInProgress": "Позначення повідомлень як непрочитаних…", - "@markAsUnreadInProgress": { - "description": "Progress message when marking messages as unread." + "@serverUrlValidationErrorUnsupportedScheme": { + "description": "Error message when URL has an unsupported scheme." }, - "userRoleModerator": "Модератор", - "@userRoleModerator": { - "description": "Label for UserRole.moderator" + "@setStatusPageTitle": { + "description": "Title for the 'Set status' page." }, - "userRoleMember": "Учасник", - "@userRoleMember": { - "description": "Label for UserRole.member" + "@settingsPageTitle": { + "description": "Title for the settings page." }, - "recentDmConversationsPageTitle": "Особисті повідомлення", - "@recentDmConversationsPageTitle": { - "description": "Title for the page with a list of DM conversations." + "@signInWithFoo": { + "description": "Button to use {method} to sign in to the app.", + "placeholders": { + "method": { + "example": "Google", + "type": "String" + } + } }, - "combinedFeedPageTitle": "Об'єднана стрічка", - "@combinedFeedPageTitle": { - "description": "Page title for the 'Combined feed' message view." + "@snackBarDetails": { + "description": "Button label for snack bar button that opens a dialog with more details." }, - "reactedEmojiSelfUser": "Ви", - "@reactedEmojiSelfUser": { - "description": "Display name for the user themself, to show on an emoji reaction added by the user." + "@spoilerDefaultHeaderText": { + "description": "The default header text in a spoiler block ( https://zulip.com/help/spoilers )." }, - "wildcardMentionStream": "канал", - "@wildcardMentionStream": { - "description": "Text for \"@stream\" wildcard-mention autocomplete option when writing a channel message in older servers." + "@starredMessagesPageTitle": { + "description": "Page title for the 'Starred messages' message view." }, - "wildcardMentionTopic": "тема", - "@wildcardMentionTopic": { - "description": "Text for \"@topic\" wildcard-mention autocomplete option when writing a channel message." + "@statusButtonLabelStatusSet": { + "description": "The status button label in self-user profile page when status is set." }, - "wildcardMentionChannelDescription": "Повідомити канал", - "@wildcardMentionChannelDescription": { - "description": "Description for \"@all\", \"@everyone\", \"@channel\", and \"@stream\" wildcard-mention autocomplete options when writing a channel message." + "@statusButtonLabelStatusUnset": { + "description": "The status button label in self-user profile page when status is not set." }, - "wildcardMentionStreamDescription": "Повідомити канал", - "@wildcardMentionStreamDescription": { - "description": "Description for \"@all\", \"@everyone\", and \"@stream\" wildcard-mention autocomplete options when writing a channel message in older servers." + "@statusClearButtonLabel": { + "description": "Label for the button that clears the user status, in 'Set status' page." }, - "openLinksWithInAppBrowser": "Відкривати посилання за допомогою браузера додатку", - "@openLinksWithInAppBrowser": { - "description": "Label for toggling setting to open links with in-app browser" + "@statusSaveButtonLabel": { + "description": "Label for the button that saves the user status, in 'Set status' page." }, - "experimentalFeatureSettingsWarning": "Ці опції вмикають функції, які ще розробляються та не готові. Вони можуть не працювати та викликати проблеми в інших місцях додатку.\n\nМетою цих налаштувань є експериментування людьми, що працюють над розробкою Zulip.", - "@experimentalFeatureSettingsWarning": { - "description": "Warning text on settings page for experimental, in-development features" + "@statusTextHint": { + "description": "Hint text for the status text input field in 'Set status' page." }, - "errorReactionAddingFailedTitle": "Не вдалося додати реакцію", - "@errorReactionAddingFailedTitle": { - "description": "Error title when adding a message reaction fails" + "@successChannelLinkCopied": { + "description": "Message when link of a channel was copied to the user's system clipboard." }, - "errorReactionRemovingFailedTitle": "Не вдалося видалити реакцію", - "@errorReactionRemovingFailedTitle": { - "description": "Error title when removing a message reaction fails" + "@successLinkCopied": { + "description": "Success message after copy link action completed." }, - "emojiReactionsMore": "більше", - "@emojiReactionsMore": { - "description": "Label for a button opening the emoji picker." + "@successMessageLinkCopied": { + "description": "Message when link of a message was copied to the user's system clipboard." }, - "newDmSheetSearchHintEmpty": "Додати користувачів", - "@newDmSheetSearchHintEmpty": { - "description": "Hint text for the search bar when no users are selected" + "@successMessageTextCopied": { + "description": "Message when content of a message was copied to the user's system clipboard." }, - "newDmSheetSearchHintSomeSelected": "Додати ще…", - "@newDmSheetSearchHintSomeSelected": { - "description": "Hint text for the search bar when at least one user is selected." + "@successTopicLinkCopied": { + "description": "Message when link of a topic was copied to the user's system clipboard." }, - "newDmSheetComposeButtonLabel": "Написати", - "@newDmSheetComposeButtonLabel": { - "description": "Label for the compose button in the new DM sheet that starts composing a message to the selected users." + "@switchAccountButton": { + "description": "Label for main-menu button leading to the choose-account page." }, - "channelsEmptyPlaceholder": "Ви ще не підписані на жодний канал.", - "@channelsEmptyPlaceholder": { - "description": "Centered text on the 'Channels' page saying that there is no content to show." + "@themeSettingDark": { + "description": "Label for dark theme setting." }, - "recentDmConversationsEmptyPlaceholder": "У вас поки що немає особистих повідомлень! Чому б не розпочати бесіду?", - "@recentDmConversationsEmptyPlaceholder": { - "description": "Centered text on the 'Direct messages' page saying that there is no content to show." + "@themeSettingLight": { + "description": "Label for light theme setting." }, - "inboxEmptyPlaceholder": "Немає непрочитаних вхідних повідомлень. Використовуйте кнопки знизу для перегляду обʼєднаної стрічки або списку каналів.", - "@inboxEmptyPlaceholder": { - "description": "Centered text on the 'Inbox' page saying that there is no content to show." + "@themeSettingSystem": { + "description": "Label for system theme setting." }, - "actionSheetOptionListOfTopics": "Список тем", - "@actionSheetOptionListOfTopics": { - "description": "Label for navigating to a channel's topic-list page." + "@themeSettingTitle": { + "description": "Title for theme setting. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" }, - "composeBoxBannerButtonCancel": "Відміна", - "@composeBoxBannerButtonCancel": { - "description": "Label text for the 'Cancel' button in the compose-box banner when you are editing a message." + "@today": { + "description": "Term to use to reference the current day." }, - "editAlreadyInProgressTitle": "Неможливо редагувати повідомлення", - "@editAlreadyInProgressTitle": { - "description": "Error title when a message edit cannot be saved because there is another edit already in progress." + "@topicValidationErrorMandatoryButEmpty": { + "description": "Topic validation error when topic is required but was empty." + }, + "@topicValidationErrorTooLong": { + "description": "Topic validation error when topic is too long." }, - "topicsButtonTooltip": "Теми", "@topicsButtonTooltip": { "description": "Tooltip for button to navigate to topic-list page." }, - "actionSheetOptionHideMutedMessage": "Сховати заглушене повідомлення", - "@actionSheetOptionHideMutedMessage": { - "description": "Label for hide muted message again button on action sheet." - }, - "composeBoxBannerLabelEditMessage": "Редагування повідомлення", - "@composeBoxBannerLabelEditMessage": { - "description": "Label text for the compose-box banner when you are editing a message." + "@tryAnotherAccountButton": { + "description": "Label for loading screen button prompting user to try another account." }, - "discardDraftForEditConfirmationDialogMessage": "При редагуванні повідомлення, текст з поля для редагування видаляється.", - "@discardDraftForEditConfirmationDialogMessage": { - "description": "Message for a confirmation dialog for discarding message text that was typed into the compose box, when editing a message." + "@tryAnotherAccountMessage": { + "description": "Message that appears on the loading screen after waiting for some time.", + "url": { + "example": "http://chat.example.com/", + "type": "String" + } }, - "newDmSheetScreenTitle": "Нове особисте повідомлення", - "@newDmSheetScreenTitle": { - "description": "Title displayed at the top of the new DM screen." + "@turnOffInvisibleModeErrorTitle": { + "description": "Error title when turning off invisible mode failed." }, - "newDmFabButtonLabel": "Нове особисте повідомлення", - "@newDmFabButtonLabel": { - "description": "Label for the floating action button (FAB) that opens the new DM sheet." + "@turnOnInvisibleModeErrorTitle": { + "description": "Error title when turning on invisible mode failed." }, - "newDmSheetNoUsersFound": "Користувачі не знайдені", - "@newDmSheetNoUsersFound": { - "description": "Message shown in the new DM sheet when no users match the search." + "@twoPeopleTyping": { + "description": "Text to display when there are two users typing.", + "placeholders": { + "otherTypist": { + "example": "Bob", + "type": "String" + }, + "typist": { + "example": "Alice", + "type": "String" + } + } }, - "revealButtonLabel": "Показати повідомлення заглушеного відправника", - "@revealButtonLabel": { - "description": "Label for the button revealing hidden message from a muted sender in message list." + "@unknownChannelName": { + "description": "Replacement name for channel when it cannot be found in the store." }, - "messageNotSentLabel": "ПОВІДОМЛЕННЯ НЕ ВІДПРАВЛЕНО", - "@messageNotSentLabel": { - "description": "Text on a message in the message list saying that a send message request failed. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + "@unknownUserName": { + "description": "Name placeholder to use for a user when we don't know their name." }, - "errorNotificationOpenAccountNotFound": "Обліковий запис, звʼязаний з цим сповіщенням, не знайдений.", - "@errorNotificationOpenAccountNotFound": { - "description": "Error message when the account associated with the notification could not be found" + "@unpinnedSubscriptionsLabel": { + "description": "Label for the list of unpinned subscribed channels." }, - "actionSheetOptionEditMessage": "Редагувати повідомлення", - "@actionSheetOptionEditMessage": { - "description": "Label for the 'Edit message' button in the message action sheet." + "@updateStatusErrorTitle": { + "description": "Error title when updating user status failed." }, - "errorMessageEditNotSaved": "Повідомлення не збережено", - "@errorMessageEditNotSaved": { - "description": "Error message for compose box when a message edit could not be saved." + "@upgradeWelcomeDialogDismiss": { + "description": "Label for button dismissing dialog shown on first upgrade from the legacy Zulip app." }, - "errorCouldNotEditMessageTitle": "Не вдалося редагувати повідомлення", - "@errorCouldNotEditMessageTitle": { - "description": "Error title when an exception prevented us from opening the compose box for editing a message." + "@upgradeWelcomeDialogLinkText": { + "description": "Text of link in dialog shown on first upgrade from the legacy Zulip app." }, - "composeBoxBannerButtonSave": "Зберегти", - "@composeBoxBannerButtonSave": { - "description": "Label text for the 'Save' button in the compose-box banner when you are editing a message." + "@upgradeWelcomeDialogMessage": { + "description": "Message text for dialog shown on first upgrade from the legacy Zulip app." }, - "editAlreadyInProgressMessage": "Редагування уже виконується. Дочекайтеся його завершення.", - "@editAlreadyInProgressMessage": { - "description": "Error message when a message edit cannot be saved because there is another edit already in progress." + "@upgradeWelcomeDialogTitle": { + "description": "Title for dialog shown on first upgrade from the legacy Zulip app." }, - "savingMessageEditLabel": "ЗБЕРЕЖЕННЯ ПРАВОК…", - "@savingMessageEditLabel": { - "description": "Text on a message in the message list saying that a message edit request is processing. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + "@userRoleAdministrator": { + "description": "Label for UserRole.administrator" }, - "savingMessageEditFailedLabel": "ПРАВКИ НЕ ЗБЕРЕЖЕНІ", - "@savingMessageEditFailedLabel": { - "description": "Text on a message in the message list saying that a message edit request failed. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + "@userRoleGuest": { + "description": "Label for UserRole.guest" }, - "discardDraftConfirmationDialogTitle": "Відмовитися від написаного повідомлення?", - "@discardDraftConfirmationDialogTitle": { - "description": "Title for a confirmation dialog for discarding message text that was typed into the compose box." + "@userRoleMember": { + "description": "Label for UserRole.member" }, - "discardDraftConfirmationDialogConfirmButton": "Скинути", - "@discardDraftConfirmationDialogConfirmButton": { - "description": "Label for the 'Discard' button on a confirmation dialog for discarding message text that was typed into the compose box." + "@userRoleModerator": { + "description": "Label for UserRole.moderator" }, - "preparingEditMessageContentInput": "Підготовка…", - "@preparingEditMessageContentInput": { - "description": "Hint text for content input when the compose box is preparing to edit a message." + "@userRoleOwner": { + "description": "Label for UserRole.owner" }, - "composeBoxEnterTopicOrSkipHintText": "Вкажіть тему (або залиште “{defaultTopicName}”)", - "@composeBoxEnterTopicOrSkipHintText": { - "description": "Hint text for topic input widget in compose box when topics are optional.", - "placeholders": { - "defaultTopicName": { - "type": "String", - "example": "general chat" - } - } + "@userRoleUnknown": { + "description": "Label for UserRole.unknown" }, - "mutedUser": "Заглушений користувач", - "@mutedUser": { - "description": "Name for a muted user to display all over the app." + "@userStatusAtTheOffice": { + "description": "A suggested user status text, 'At the office'." }, - "initialAnchorSettingFirstUnreadAlways": "Перше непрочитане повідомлення", - "@initialAnchorSettingFirstUnreadAlways": { - "description": "Label for a value of setting controlling initial anchor of message list." + "@userStatusBusy": { + "description": "A suggested user status text, 'Busy'." }, - "upgradeWelcomeDialogTitle": "Ласкаво просимо у новий додаток Zulip!", - "@upgradeWelcomeDialogTitle": { - "description": "Title for dialog shown on first upgrade from the legacy Zulip app." + "@userStatusCommuting": { + "description": "A suggested user status text, 'Commuting'." }, - "upgradeWelcomeDialogLinkText": "Ознайомтесь з анонсом у блозі!", - "@upgradeWelcomeDialogLinkText": { - "description": "Text of link in dialog shown on first upgrade from the legacy Zulip app." + "@userStatusInAMeeting": { + "description": "A suggested user status text, 'In a meeting'." }, - "upgradeWelcomeDialogDismiss": "Ходімо!", - "@upgradeWelcomeDialogDismiss": { - "description": "Label for button dismissing dialog shown on first upgrade from the legacy Zulip app." + "@userStatusOutSick": { + "description": "A suggested user status text, 'Out sick'." }, - "initialAnchorSettingTitle": "Де відкривати стрічку повідомлень", - "@initialAnchorSettingTitle": { - "description": "Title of setting controlling initial anchor of message list." + "@userStatusVacationing": { + "description": "A suggested user status text, 'Vacationing'." }, - "initialAnchorSettingNewestAlways": "Найновіше повідомлення", - "@initialAnchorSettingNewestAlways": { - "description": "Label for a value of setting controlling initial anchor of message list." + "@userStatusWorkingRemotely": { + "description": "A suggested user status text, 'Working remotely'." }, - "initialAnchorSettingFirstUnreadConversations": "Перше непрочитане повідомлення при перегляді бесід, найновіше у інших місцях", - "@initialAnchorSettingFirstUnreadConversations": { - "description": "Label for a value of setting controlling initial anchor of message list." + "@wildcardMentionAll": { + "description": "Text for \"@all\" wildcard-mention autocomplete option when writing a channel or DM message." }, - "upgradeWelcomeDialogMessage": "Ви знайдете звичні можливості у більш швидкому і легкому додатку.", - "@upgradeWelcomeDialogMessage": { - "description": "Message text for dialog shown on first upgrade from the legacy Zulip app." + "@wildcardMentionAllDmDescription": { + "description": "Description for \"@all\" and \"@everyone\" wildcard-mention autocomplete options when writing a DM message." }, - "initialAnchorSettingDescription": "Можна відкривати стрічку повідомлень на першому непрочитаному повідомленні або на найновішому.", - "@initialAnchorSettingDescription": { - "description": "Description of setting controlling initial anchor of message list." + "@wildcardMentionChannel": { + "description": "Text for \"@channel\" wildcard-mention autocomplete option when writing a channel message." }, - "markReadOnScrollSettingDescription": "При прокручуванні повідомлень автоматично відмічати їх як прочитані?", - "@markReadOnScrollSettingDescription": { - "description": "Description of setting controlling which message-list views should mark read on scroll." + "@wildcardMentionChannelDescription": { + "description": "Description for \"@all\", \"@everyone\", \"@channel\", and \"@stream\" wildcard-mention autocomplete options when writing a channel message." }, - "markReadOnScrollSettingNever": "Ніколи", - "@markReadOnScrollSettingNever": { - "description": "Label for a value of setting controlling which message-list views should mark read on scroll." + "@wildcardMentionEveryone": { + "description": "Text for \"@everyone\" wildcard-mention autocomplete option when writing a channel or DM message." }, - "markReadOnScrollSettingConversations": "Тільки при перегляді бесід", - "@markReadOnScrollSettingConversations": { - "description": "Label for a value of setting controlling which message-list views should mark read on scroll." + "@wildcardMentionStream": { + "description": "Text for \"@stream\" wildcard-mention autocomplete option when writing a channel message in older servers." }, - "markReadOnScrollSettingAlways": "Завжди", - "@markReadOnScrollSettingAlways": { - "description": "Label for a value of setting controlling which message-list views should mark read on scroll." + "@wildcardMentionStreamDescription": { + "description": "Description for \"@all\", \"@everyone\", and \"@stream\" wildcard-mention autocomplete options when writing a channel message in older servers." }, - "markReadOnScrollSettingTitle": "Відмічати повідомлення як прочитані при прокручуванні", - "@markReadOnScrollSettingTitle": { - "description": "Title of setting controlling which message-list views should mark read on scroll." + "@wildcardMentionTopic": { + "description": "Text for \"@topic\" wildcard-mention autocomplete option when writing a channel message." }, - "actionSheetOptionQuoteMessage": "Цитувати повідомлення", - "@actionSheetOptionQuoteMessage": { - "description": "Label for the 'Quote message' button in the message action sheet." + "@wildcardMentionTopicDescription": { + "description": "Description for \"@topic\" wildcard-mention autocomplete options when writing a channel message." }, - "discardDraftForOutboxConfirmationDialogMessage": "При відновленні невідправленого повідомлення, вміст поля редагування очищається.", - "@discardDraftForOutboxConfirmationDialogMessage": { - "description": "Message for a confirmation dialog when restoring an outbox message, for discarding message text that was typed into the compose box." + "@yesterday": { + "description": "Term to use to reference the previous day." + }, + "@zulipAppTitle": { + "description": "The name of Zulip. This should be either 'Zulip' or a transliteration." }, + "aboutPageAppVersion": "Версія додатку", + "aboutPageOpenSourceLicenses": "Ліцензії з відкритим кодом", + "aboutPageTapToView": "Натисніть, щоб переглянути", + "aboutPageTitle": "Про Zulip", + "actionSheetOptionCopyChannelLink": "Копіювати посилання на канал", + "actionSheetOptionCopyMessageLink": "Копіювати посилання на повідомлення", + "actionSheetOptionCopyMessageText": "Копіювати текст повідомлення", + "actionSheetOptionCopyTopicLink": "Копіювати посилання на тему", + "actionSheetOptionEditMessage": "Редагувати повідомлення", + "actionSheetOptionFollowTopic": "Підписатися на тему", + "actionSheetOptionHideMutedMessage": "Сховати заглушене повідомлення", + "actionSheetOptionListOfTopics": "Список тем", + "actionSheetOptionMarkAsUnread": "Позначити як непрочитане звідси", + "actionSheetOptionMarkChannelAsRead": "Позначити канал як прочитаний", + "actionSheetOptionMarkTopicAsRead": "Позначити тему як прочитану", + "actionSheetOptionMuteTopic": "Заглушити тему", + "actionSheetOptionQuoteMessage": "Цитувати повідомлення", + "actionSheetOptionResolveTopic": "Позначити як вирішене", + "actionSheetOptionSeeWhoReacted": "Дивіться, хто відреагував", + "actionSheetOptionShare": "Поширити", + "actionSheetOptionStarMessage": "Вибрати повідомлення", + "actionSheetOptionUnfollowTopic": "Відписатися від теми", + "actionSheetOptionUnmuteTopic": "Увімкнути тему", + "actionSheetOptionUnresolveTopic": "Позначити як невирішене", + "actionSheetOptionUnstarMessage": "Зняти позначку зірки з повідомлення", + "appVersionUnknownPlaceholder": "(…)", + "channelFeedButtonTooltip": "Стрічка каналу", + "channelsEmptyPlaceholder": "Ви ще не підписані на жодний канал.", + "channelsPageTitle": "Канали", + "chooseAccountButtonAddAnAccount": "Додати обліковий запис", + "chooseAccountPageLogOutButton": "Вийти", + "chooseAccountPageTitle": "Обрати обліковий запис", + "combinedFeedPageTitle": "Об'єднана стрічка", + "composeBoxAttachFilesTooltip": "Прикріпити файли", + "composeBoxAttachFromCameraTooltip": "Зробити фото", + "composeBoxAttachMediaTooltip": "Додати зображення або відео", + "composeBoxBannerButtonCancel": "Відміна", + "composeBoxBannerButtonSave": "Зберегти", + "composeBoxBannerLabelEditMessage": "Редагування повідомлення", + "composeBoxChannelContentHint": "Надіслати повідомлення {destination}", + "composeBoxDmContentHint": "Повідомлення @{user}", + "composeBoxEnterTopicOrSkipHintText": "Вкажіть тему (або залиште “{defaultTopicName}”)", + "composeBoxGenericContentHint": "Ввести повідомлення", + "composeBoxGroupDmContentHint": "Написати групі", + "composeBoxLoadingMessage": "(завантаження повідомлення {messageId})", + "composeBoxSelfDmContentHint": "Занотувати щось", + "composeBoxSendTooltip": "Надіслати", + "composeBoxTopicHintText": "Тема", + "composeBoxUploadingFilename": "Завантаження {filename}…", + "contentValidationErrorEmpty": "Вам нема чого надсилати!", + "contentValidationErrorQuoteAndReplyInProgress": "Будь ласка, дочекайтеся завершення цитування.", + "contentValidationErrorTooLong": "Довжина повідомлення не повинна перевищувати 10000 символів.", + "contentValidationErrorUploadInProgress": "Дочекайтеся завершення завантаження.", + "dialogCancel": "Відміна", + "dialogClose": "Закрити", + "dialogContinue": "Продовжити", + "discardDraftConfirmationDialogConfirmButton": "Скинути", + "discardDraftConfirmationDialogTitle": "Відмовитися від написаного повідомлення?", + "discardDraftForEditConfirmationDialogMessage": "При редагуванні повідомлення, текст з поля для редагування видаляється.", + "discardDraftForOutboxConfirmationDialogMessage": "При відновленні невідправленого повідомлення, вміст поля редагування очищається.", + "dmsWithOthersPageTitle": "Особисті повідомлення з {others}", + "dmsWithYourselfPageTitle": "Особисті повідомлення із собою", + "editAlreadyInProgressMessage": "Редагування уже виконується. Дочекайтеся його завершення.", + "editAlreadyInProgressTitle": "Неможливо редагувати повідомлення", + "emojiPickerSearchEmoji": "Пошук емодзі", + "emojiReactionsMore": "більше", + "emptyMessageList": "Тут немає повідомлень.", + "emptyMessageListSearch": "Немає результатів пошуку.", + "errorAccountLoggedIn": "Обліковий запис {email} на {server} уже є у вашому списку облікових записів.", + "errorAccountLoggedInTitle": "В обліковий запис уже ввійшли", + "errorBannerCannotPostInChannelLabel": "Ви не маєте дозволу на публікацію в цьому каналі.", + "errorBannerDeactivatedDmLabel": "Ви не можете надсилати повідомлення деактивованим користувачам.", + "errorConnectingToServerDetails": "Помилка підключення до Zulip на {serverUrl}. Буде повторена спроба:\n\n{error}", + "errorConnectingToServerShort": "Помилка підключення до Zulip. Повторна спроба…", + "errorCopyingFailed": "Помилка копіювання", + "errorCouldNotConnectTitle": "Не вдалося підключитися", + "errorCouldNotEditMessageTitle": "Не вдалося редагувати повідомлення", + "errorCouldNotFetchMessageSource": "Не вдалося отримати джерело повідомлення.", + "errorCouldNotOpenLink": "Не вдалося відкрити посилання: {url}", + "errorCouldNotOpenLinkTitle": "Неможливо відкрити посилання", + "errorCouldNotShowUserProfile": "Не вдалося показати профіль користувача.", + "errorDialogContinue": "ОК", + "errorDialogLearnMore": "Дізнайтися більше", + "errorDialogTitle": "Помилка", + "errorFailedToUploadFileTitle": "Не вдалося завантажити файл: {filename}", + "errorFilesTooLarge": "{num, plural, =1{Файл} other{{num} файли}} перевищують ліміт сервера в {maxFileUploadSizeMib} MiB і не будуть завантажені:\n\n{listMessage}", + "errorFilesTooLargeTitle": "{num, plural, =1{Файл} other{Файли}} занадто великий", + "errorFollowTopicFailed": "Не вдалося підписатися на тему", + "errorHandlingEventDetails": "Помилка обробки події Zulip із {serverUrl}; буде повторювати спробу.\n\nПомилка: {error}\n\nПодія: {event}", + "errorHandlingEventTitle": "Помилка обробки події Zulip. Повторна спроба підключення…", + "errorInvalidApiKeyMessage": "Ваш обліковий запис на {url} не вдалося автентифікувати. Спробуйте увійти ще раз або скористайтеся іншим обліковим записом.", + "errorInvalidResponse": "Сервер надіслав недійсну відповідь.", + "errorLoginCouldNotConnect": "Не вдалося підключитися до сервера:\n{url}", + "errorLoginFailedTitle": "Помилка входу", + "errorLoginInvalidInputTitle": "Невірний вхід", + "errorMalformedResponse": "Сервер дав неправильну відповідь; Статус HTTP {httpStatus}", + "errorMalformedResponseWithCause": "Сервер дав неправильну відповідь; Статус HTTP {httpStatus}; {details}", + "errorMarkAsReadFailedTitle": "Не вдалося позначити як прочитане", + "errorMarkAsUnreadFailedTitle": "Не вдалося позначити як непрочитане", + "errorMessageDoesNotSeemToExist": "Здається, цього повідомлення не існує.", + "errorMessageEditNotSaved": "Повідомлення не збережено", + "errorMessageNotSent": "Повідомлення не надіслано", + "errorMuteTopicFailed": "Не вдалося заглушити тему", + "errorNetworkRequestFailed": "Помилка запиту мережі", + "errorNotificationOpenAccountNotFound": "Обліковий запис, звʼязаний з цим сповіщенням, не знайдений.", + "errorNotificationOpenTitle": "Не вдалося відкрити сповіщення", + "errorQuotationFailed": "Помилка цитування", + "errorReactionAddingFailedTitle": "Не вдалося додати реакцію", + "errorReactionRemovingFailedTitle": "Не вдалося видалити реакцію", + "errorRequestFailed": "Помилка мережевого запиту: статус HTTP {httpStatus}", + "errorResolveTopicFailedTitle": "Не вдалося позначити тему як вирішену", + "errorServerMessage": "Сервер сказав:\n\n{message}", + "errorServerVersionUnsupportedMessage": "{url} використовує Zulip Server {zulipVersion}, який не підтримується. Мінімальною підтримуваною версією є Zulip Server {minSupportedZulipVersion}.", + "errorSharingFailed": "Поширення не вдалося", + "errorStarMessageFailedTitle": "Не вдалося позначити повідомлення зіркою", + "errorUnfollowTopicFailed": "Не вдалося відписатися від теми", + "errorUnmuteTopicFailed": "Не вдалося увімкнути тему", + "errorUnresolveTopicFailedTitle": "Не вдалося позначити тему як невирішену", + "errorUnstarMessageFailedTitle": "Не вдалося зняти позначку зірки з повідомлення", + "errorVideoPlayerFailed": "Неможливо відтворити відео.", + "errorWebAuthOperationalError": "Сталася неочікувана помилка.", + "errorWebAuthOperationalErrorTitle": "Щось пішло не так", + "experimentalFeatureSettingsPageTitle": "Експериментальні функції", + "experimentalFeatureSettingsWarning": "Ці опції вмикають функції, які ще розробляються та не готові. Вони можуть не працювати та викликати проблеми в інших місцях додатку.\n\nМетою цих налаштувань є експериментування людьми, що працюють над розробкою Zulip.", + "filenameAndSizeInMiB": "{filename}: {size} MiB", + "inboxEmptyPlaceholder": "Немає непрочитаних вхідних повідомлень. Використовуйте кнопки знизу для перегляду обʼєднаної стрічки або списку каналів.", + "inboxPageTitle": "Вхідні", + "initialAnchorSettingDescription": "Можна відкривати стрічку повідомлень на першому непрочитаному повідомленні або на найновішому.", + "initialAnchorSettingFirstUnreadAlways": "Перше непрочитане повідомлення", + "initialAnchorSettingFirstUnreadConversations": "Перше непрочитане повідомлення при перегляді бесід, найновіше у інших місцях", + "initialAnchorSettingNewestAlways": "Найновіше повідомлення", + "initialAnchorSettingTitle": "Де відкривати стрічку повідомлень", + "invisibleMode": "Невидимий режим", + "lightboxCopyLinkTooltip": "Копіювати посилання", + "lightboxVideoCurrentPosition": "Поточна позиція", + "lightboxVideoDuration": "Довжина відео", + "logOutConfirmationDialogConfirmButton": "Вийти", + "logOutConfirmationDialogMessage": "Щоб використовувати цей обліковий запис у майбутньому, вам доведеться повторно ввести його дані та URL-адресу вашої організації.", + "logOutConfirmationDialogTitle": "Вийти?", + "loginAddAnAccountPageTitle": "Додати обліковий запис", + "loginEmailLabel": "Адреса електронної пошти", + "loginErrorMissingEmail": "Будь ласка, введіть свою електронну адресу.", + "loginErrorMissingPassword": "Будь ласка, введіть свій пароль.", + "loginErrorMissingUsername": "Введіть своє ім'я користувача.", + "loginFormSubmitLabel": "Увійти", + "loginHidePassword": "Приховати пароль", + "loginMethodDivider": "АБО", + "loginPageTitle": "Увійти", + "loginPasswordLabel": "Пароль", + "loginServerUrlLabel": "URL-адреса вашого сервера Zulip", + "loginUsernameLabel": "Ім'я користувача", + "mainMenuMyProfile": "Мій профіль", + "manyPeopleTyping": "Кілька людей друкують…", + "markAllAsReadLabel": "Позначити всі повідомлення як прочитані", + "markAsReadComplete": "Позначено як прочитані {num, plural, =1{1 повідомлення} other{{num} повідомлення}}.", + "markAsReadInProgress": "Позначення повідомлень як прочитаних…", + "markAsUnreadComplete": "Позначено як непрочитані {num, plural, =1{1 повідомлення} other{{num} повідомлення}}.", + "markAsUnreadInProgress": "Позначення повідомлень як непрочитаних…", + "markReadOnScrollSettingAlways": "Завжди", + "markReadOnScrollSettingConversations": "Тільки при перегляді бесід", "markReadOnScrollSettingConversationsDescription": "Повідомлення будуть автоматично помічатися як прочитані тільки при перегляді окремої теми або особистої бесіди.", - "@markReadOnScrollSettingConversationsDescription": { - "description": "Description for a value of setting controlling which message-list views should mark read on scroll." - } + "markReadOnScrollSettingDescription": "При прокручуванні повідомлень автоматично відмічати їх як прочитані?", + "markReadOnScrollSettingNever": "Ніколи", + "markReadOnScrollSettingTitle": "Відмічати повідомлення як прочитані при прокручуванні", + "mentionsPageTitle": "Згадки", + "messageIsEditedLabel": "РЕДАГОВАНО", + "messageIsMovedLabel": "ПЕРЕМІЩЕНО", + "messageListGroupYouAndOthers": "Ви та {others}", + "messageListGroupYouWithYourself": "Повідомлення з собою", + "messageNotSentLabel": "ПОВІДОМЛЕННЯ НЕ ВІДПРАВЛЕНО", + "mutedUser": "Заглушений користувач", + "newDmFabButtonLabel": "Нове особисте повідомлення", + "newDmSheetComposeButtonLabel": "Написати", + "newDmSheetNoUsersFound": "Користувачі не знайдені", + "newDmSheetScreenTitle": "Нове особисте повідомлення", + "newDmSheetSearchHintEmpty": "Додати користувачів", + "newDmSheetSearchHintSomeSelected": "Додати ще…", + "noEarlierMessages": "Немає попередніх повідомлень", + "noStatusText": "Немає тексту статусу", + "notifGroupDmConversationLabel": "{senderFullName} вам і {numOthers, plural, =1{1 іншому} other{{numOthers} іншим}}", + "notifSelfUser": "Ви", + "onePersonTyping": "{typist} друкує…", + "openLinksWithInAppBrowser": "Відкривати посилання за допомогою браузера додатку", + "permissionsDeniedCameraAccess": "Щоб завантажити зображення, надайте Zulip додаткові дозволи в налаштуваннях.", + "permissionsDeniedReadExternalStorage": "Щоб завантажувати файли, надайте Zulip додаткові дозволи в налаштуваннях.", + "permissionsNeededOpenSettings": "Відкрити налаштування", + "permissionsNeededTitle": "Потрібні дозволи", + "pinnedSubscriptionsLabel": "Закріплені", + "pollVoterNames": "({voterNames})", + "pollWidgetOptionsMissing": "У цьому опитуванні ще немає варіантів.", + "pollWidgetQuestionMissing": "Немає питання.", + "preparingEditMessageContentInput": "Підготовка…", + "profileButtonSendDirectMessage": "Надіслати особисте повідомлення", + "reactedEmojiSelfUser": "Ви", + "reactionChipLabel": "{emojiName}: {votes}", + "reactionChipVotesYouAndOthers": "{otherUsersCount, plural, =1{Ви та ще 1 особа} other{Ви і {otherUsersCount} інші}}", + "reactionChipsLabel": "Реакції", + "recentDmConversationsEmptyPlaceholder": "У вас поки що немає особистих повідомлень! Чому б не розпочати бесіду?", + "recentDmConversationsPageTitle": "Особисті повідомлення", + "recentDmConversationsSectionHeader": "Особисті повідомлення", + "revealButtonLabel": "Показати повідомлення", + "savingMessageEditFailedLabel": "ПРАВКИ НЕ ЗБЕРЕЖЕНІ", + "savingMessageEditLabel": "ЗБЕРЕЖЕННЯ ПРАВОК…", + "scrollToBottomTooltip": "Прокрутити вниз", + "searchMessagesClearButtonTooltip": "Очистити", + "searchMessagesHintText": "Пошук", + "searchMessagesPageTitle": "Пошук", + "seeWhoReactedSheetEmojiNameWithVoteCount": "{emojiName}: {num, plural, =1{1 голосу} other{{num} голоси}}", + "seeWhoReactedSheetHeaderLabel": "Реакції емодзі (загалом {num})", + "seeWhoReactedSheetNoReactions": "На це повідомлення немає реакцій.", + "seeWhoReactedSheetUserListLabel": "Голоси за {emojiName} ({num})", + "serverUrlValidationErrorEmpty": "Будь ласка, введіть URL.", + "serverUrlValidationErrorInvalidUrl": "Введіть дійсну URL-адресу.", + "serverUrlValidationErrorNoUseEmail": "Введіть URL-адресу сервера, а не свою електронну адресу.", + "serverUrlValidationErrorUnsupportedScheme": "URL-адреса сервера має починатися з http:// або https://.", + "setStatusPageTitle": "Встановити статус", + "settingsPageTitle": "Налаштування", + "signInWithFoo": "Увійти з {method}", + "snackBarDetails": "Деталі", + "spoilerDefaultHeaderText": "Спойлер", + "starredMessagesPageTitle": "Вибрані повідомлення", + "statusButtonLabelStatusSet": "Статус", + "statusButtonLabelStatusUnset": "Встановити статус", + "statusClearButtonLabel": "Очистити", + "statusSaveButtonLabel": "Зберегти", + "statusTextHint": "Ваш статус", + "successChannelLinkCopied": "Посилання на канал скопійовано", + "successLinkCopied": "Посилання скопійовано", + "successMessageLinkCopied": "Посилання на повідомлення скопійовано", + "successMessageTextCopied": "Текст повідомлення скопійовано", + "successTopicLinkCopied": "Посилання на тему скопійовано", + "switchAccountButton": "Змінити обліковий запис", + "themeSettingDark": "Темна", + "themeSettingLight": "Світла", + "themeSettingSystem": "Системна", + "themeSettingTitle": "ТЕМА", + "today": "Сьогодні", + "topicValidationErrorMandatoryButEmpty": "Теми обовʼязкові в цій організації.", + "topicValidationErrorTooLong": "Довжина теми не повинна перевищувати 60 символів.", + "topicsButtonTooltip": "Теми", + "tryAnotherAccountButton": "Спробуйте інший обліковий запис", + "tryAnotherAccountMessage": "Ваш обліковий запис на {url} завантажується деякий час.", + "turnOffInvisibleModeErrorTitle": "Помилка вимкнення режиму невидимості. Спробуйте ще раз.", + "turnOnInvisibleModeErrorTitle": "Помилка ввімкнення режиму невидимості. Спробуйте ще раз.", + "twoPeopleTyping": "{typist} і {otherTypist} друкують…", + "unknownChannelName": "(невідомий канал)", + "unknownUserName": "(невідомий користувач)", + "unpinnedSubscriptionsLabel": "Відкріплені", + "updateStatusErrorTitle": "Помилка оновлення статусу користувача. Спробуйте ще раз.", + "upgradeWelcomeDialogDismiss": "Ходімо!", + "upgradeWelcomeDialogLinkText": "Ознайомтесь з анонсом у блозі!", + "upgradeWelcomeDialogMessage": "Ви знайдете звичні можливості у більш швидкому і легкому додатку.", + "upgradeWelcomeDialogTitle": "Ласкаво просимо у новий додаток Zulip!", + "userRoleAdministrator": "Адміністратор", + "userRoleGuest": "Гість", + "userRoleMember": "Учасник", + "userRoleModerator": "Модератор", + "userRoleOwner": "Власник", + "userRoleUnknown": "Невідомо", + "userStatusAtTheOffice": "В офісі", + "userStatusBusy": "Зайнятий", + "userStatusCommuting": "Поїздки на роботу", + "userStatusInAMeeting": "На зустрічі", + "userStatusOutSick": "Хворий", + "userStatusVacationing": "Відпустка", + "userStatusWorkingRemotely": "Працюємо віддалено", + "wildcardMentionAll": "усі", + "wildcardMentionAllDmDescription": "Повідомити одержувачів", + "wildcardMentionChannel": "канал", + "wildcardMentionChannelDescription": "Повідомити канал", + "wildcardMentionEveryone": "усі", + "wildcardMentionStream": "канал", + "wildcardMentionStreamDescription": "Повідомити канал", + "wildcardMentionTopic": "тема", + "wildcardMentionTopicDescription": "Повідомити канал", + "yesterday": "Учора", + "zulipAppTitle": "Zulip" } diff --git a/assets/l10n/app_zh_Hant_TW.arb b/assets/l10n/app_zh_Hant_TW.arb index 076a7b452a..ab12631c3a 100644 --- a/assets/l10n/app_zh_Hant_TW.arb +++ b/assets/l10n/app_zh_Hant_TW.arb @@ -1,1178 +1,1376 @@ { - "settingsPageTitle": "設定", - "@settingsPageTitle": {}, - "aboutPageTitle": "關於 Zulip", - "@aboutPageTitle": { - "description": "Title for About Zulip page." - }, - "chooseAccountPageLogOutButton": "登出", - "@chooseAccountPageLogOutButton": { - "description": "Label for the 'Log out' button for an account on the choose-account page" - }, - "tryAnotherAccountMessage": "你在 {url} 的帳號載入的比較久", - "@tryAnotherAccountMessage": { - "description": "Message that appears on the loading screen after waiting for some time.", - "url": { - "type": "String", - "example": "http://chat.example.com/" - } - }, - "chooseAccountPageTitle": "選取帳號", - "@chooseAccountPageTitle": { - "description": "Title for the page to choose between Zulip accounts." - }, - "aboutPageAppVersion": "App 版本", "@aboutPageAppVersion": { "description": "Label for Zulip app version in About Zulip page" }, - "switchAccountButton": "切換帳號", - "@switchAccountButton": { - "description": "Label for main-menu button leading to the choose-account page." - }, - "actionSheetOptionListOfTopics": "議題列表", - "@actionSheetOptionListOfTopics": { - "description": "Label for navigating to a channel's topic-list page." - }, - "actionSheetOptionMuteTopic": "靜音話題", - "@actionSheetOptionMuteTopic": { - "description": "Label for muting a topic on action sheet." - }, - "actionSheetOptionResolveTopic": "標註為已解決", - "@actionSheetOptionResolveTopic": { - "description": "Label for the 'Mark as resolved' button on the topic action sheet." - }, - "tryAnotherAccountButton": "請嘗試別的帳號", - "@tryAnotherAccountButton": { - "description": "Label for loading screen button prompting user to try another account." + "@aboutPageOpenSourceLicenses": { + "description": "Item title in About Zulip page to navigate to Licenses page" }, - "aboutPageTapToView": "點選查看", "@aboutPageTapToView": { "description": "Item subtitle in About Zulip page to navigate to Licenses page" }, - "aboutPageOpenSourceLicenses": "開源授權條款", - "@aboutPageOpenSourceLicenses": { - "description": "Item title in About Zulip page to navigate to Licenses page" + "@aboutPageTitle": { + "description": "Title for About Zulip page." }, - "logOutConfirmationDialogTitle": "登出?", - "@logOutConfirmationDialogTitle": { - "description": "Title for a confirmation dialog for logging out." + "@actionSheetOptionCopyChannelLink": { + "description": "Label for copy channel link button on action sheet." }, - "logOutConfirmationDialogConfirmButton": "登出", - "@logOutConfirmationDialogConfirmButton": { - "description": "Label for the 'Log out' button on a confirmation dialog for logging out." + "@actionSheetOptionCopyMessageLink": { + "description": "Label for copy message link button on action sheet." }, - "profileButtonSendDirectMessage": "發送私訊", - "@profileButtonSendDirectMessage": { - "description": "Label for button in profile screen to navigate to DMs with the shown user." + "@actionSheetOptionCopyMessageText": { + "description": "Label for copy message text button on action sheet." }, - "chooseAccountButtonAddAnAccount": "增添帳號", - "@chooseAccountButtonAddAnAccount": { - "description": "Label for ChooseAccountPage button to add an account" + "@actionSheetOptionCopyTopicLink": { + "description": "Label for copy topic link button in action sheet." }, - "permissionsNeededTitle": "需要的權限", - "@permissionsNeededTitle": { - "description": "Title for dialog asking the user to grant additional permissions." + "@actionSheetOptionEditMessage": { + "description": "Label for the 'Edit message' button in the message action sheet." }, - "permissionsNeededOpenSettings": "開啟設定", - "@permissionsNeededOpenSettings": { - "description": "Button label for permissions dialog button that opens the system settings screen." + "@actionSheetOptionFollowTopic": { + "description": "Label for following a topic on action sheet." }, - "actionSheetOptionMarkChannelAsRead": "標註頻道為已讀", - "@actionSheetOptionMarkChannelAsRead": { - "description": "Label for marking a channel as read." + "@actionSheetOptionHideMutedMessage": { + "description": "Label for hide muted message again button on action sheet." }, - "actionSheetOptionUnmuteTopic": "取消靜音話題", - "@actionSheetOptionUnmuteTopic": { - "description": "Label for unmuting a topic on action sheet." + "@actionSheetOptionListOfTopics": { + "description": "Label for navigating to a channel's topic-list page." }, - "actionSheetOptionUnresolveTopic": "標註為未解決", - "@actionSheetOptionUnresolveTopic": { - "description": "Label for the 'Mark as unresolved' button on the topic action sheet." + "@actionSheetOptionMarkAsUnread": { + "description": "Label for mark as unread button on action sheet." }, - "errorResolveTopicFailedTitle": "無法標註話題為已解決", - "@errorResolveTopicFailedTitle": { - "description": "Error title when marking a topic as resolved failed." + "@actionSheetOptionMarkChannelAsRead": { + "description": "Label for marking a channel as read." }, - "errorUnresolveTopicFailedTitle": "無法標註話題為未解決", - "@errorUnresolveTopicFailedTitle": { - "description": "Error title when marking a topic as unresolved failed." + "@actionSheetOptionMarkTopicAsRead": { + "description": "Option to mark a specific topic as read in the action sheet." }, - "actionSheetOptionCopyMessageText": "複製訊息文字", - "@actionSheetOptionCopyMessageText": { - "description": "Label for copy message text button on action sheet." + "@actionSheetOptionMuteTopic": { + "description": "Label for muting a topic on action sheet." }, - "actionSheetOptionCopyMessageLink": "複製訊息連結", - "@actionSheetOptionCopyMessageLink": { - "description": "Label for copy message link button on action sheet." + "@actionSheetOptionQuoteMessage": { + "description": "Label for the 'Quote message' button in the message action sheet." }, - "actionSheetOptionMarkAsUnread": "從這裡開始標註為未讀", - "@actionSheetOptionMarkAsUnread": { - "description": "Label for mark as unread button on action sheet." + "@actionSheetOptionResolveTopic": { + "description": "Label for the 'Mark as resolved' button on the topic action sheet." }, - "actionSheetOptionMarkTopicAsRead": "標註話題為已讀", - "@actionSheetOptionMarkTopicAsRead": { - "description": "Option to mark a specific topic as read in the action sheet." + "@actionSheetOptionSeeWhoReacted": { + "description": "Label for the 'See who reacted' button in the message action sheet." }, - "actionSheetOptionShare": "分享", "@actionSheetOptionShare": { "description": "Label for share button on action sheet." }, - "actionSheetOptionStarMessage": "收藏訊息", "@actionSheetOptionStarMessage": { "description": "Label for star button on action sheet." }, - "actionSheetOptionUnstarMessage": "取消收藏訊息", - "@actionSheetOptionUnstarMessage": { - "description": "Label for unstar button on action sheet." - }, - "actionSheetOptionEditMessage": "編輯訊息", - "@actionSheetOptionEditMessage": { - "description": "Label for the 'Edit message' button in the message action sheet." - }, - "errorWebAuthOperationalErrorTitle": "出錯了", - "@errorWebAuthOperationalErrorTitle": { - "description": "Error title when third-party authentication has an operational error (not necessarily caused by invalid credentials)." - }, - "errorWebAuthOperationalError": "出現了意外的錯誤。", - "@errorWebAuthOperationalError": { - "description": "Error message when third-party authentication has an operational error (not necessarily caused by invalid credentials)." - }, - "errorAccountLoggedInTitle": "帳號已經登入了", - "@errorAccountLoggedInTitle": { - "description": "Error title on attempting to log into an account that's already logged in." - }, - "errorAccountLoggedIn": "在 {server} 的帳號 {email} 已經存在帳號清單中。", - "@errorAccountLoggedIn": { - "description": "Error message on attempting to log into an account that's already logged in.", - "placeholders": { - "email": { - "type": "String", - "example": "user@example.com" - }, - "server": { - "type": "String", - "example": "https://example.com" - } - } - }, - "initialAnchorSettingFirstUnreadAlways": "第一則未讀訊息", - "@initialAnchorSettingFirstUnreadAlways": { - "description": "Label for a value of setting controlling initial anchor of message list." - }, - "actionSheetOptionUnfollowTopic": "取消跟隨話題", "@actionSheetOptionUnfollowTopic": { "description": "Label for unfollowing a topic on action sheet." }, - "errorUnmuteTopicFailed": "無法取消靜音話題", - "@errorUnmuteTopicFailed": { - "description": "Error message when unmuting a topic failed." - }, - "errorMuteTopicFailed": "無法靜音話題", - "@errorMuteTopicFailed": { - "description": "Error message when muting a topic failed." - }, - "errorUnstarMessageFailedTitle": "無法取消收藏訊息", - "@errorUnstarMessageFailedTitle": { - "description": "Error title when unstarring a message failed." + "@actionSheetOptionUnmuteTopic": { + "description": "Label for unmuting a topic on action sheet." }, - "successLinkCopied": "已複製連結", - "@successLinkCopied": { - "description": "Success message after copy link action completed." + "@actionSheetOptionUnresolveTopic": { + "description": "Label for the 'Mark as unresolved' button on the topic action sheet." }, - "successMessageLinkCopied": "已複製訊息連結", - "@successMessageLinkCopied": { - "description": "Message when link of a message was copied to the user's system clipboard." + "@actionSheetOptionUnstarMessage": { + "description": "Label for unstar button on action sheet." }, - "composeBoxBannerButtonCancel": "取消", - "@composeBoxBannerButtonCancel": { - "description": "Label text for the 'Cancel' button in the compose-box banner when you are editing a message." + "@appVersionUnknownPlaceholder": { + "description": "Placeholder to show in place of the app version when it is unknown." }, - "composeBoxAttachMediaTooltip": "附加圖片或影片", - "@composeBoxAttachMediaTooltip": { - "description": "Tooltip for compose box icon to attach media to the message." + "@channelFeedButtonTooltip": { + "description": "Tooltip for button to navigate to a given channel's feed" }, - "loginPageTitle": "登入", - "@loginPageTitle": { - "description": "Title for login page." + "@channelsEmptyPlaceholder": { + "description": "Centered text on the 'Channels' page saying that there is no content to show." }, - "loginHidePassword": "隱藏密碼", - "@loginHidePassword": { - "description": "Icon label for button to hide password in input form." + "@channelsPageTitle": { + "description": "Title for the page with a list of subscribed channels." }, - "loginErrorMissingUsername": "請輸入您的使用者名稱。", - "@loginErrorMissingUsername": { - "description": "Error message when an empty username was provided." + "@chooseAccountButtonAddAnAccount": { + "description": "Label for ChooseAccountPage button to add an account" }, - "userRoleMember": "成員", - "@userRoleMember": { - "description": "Label for UserRole.member" + "@chooseAccountPageLogOutButton": { + "description": "Label for the 'Log out' button for an account on the choose-account page" }, - "wildcardMentionTopic": "topic", - "@wildcardMentionTopic": { - "description": "Text for \"@topic\" wildcard-mention autocomplete option when writing a channel message." + "@chooseAccountPageTitle": { + "description": "Title for the page to choose between Zulip accounts." }, - "emojiPickerSearchEmoji": "搜尋表情符號", - "@emojiPickerSearchEmoji": { - "description": "Hint text for the emoji picker search text field." + "@combinedFeedPageTitle": { + "description": "Page title for the 'Combined feed' message view." }, - "actionSheetOptionFollowTopic": "跟隨話題", - "@actionSheetOptionFollowTopic": { - "description": "Label for following a topic on action sheet." + "@composeBoxAttachFilesTooltip": { + "description": "Tooltip for compose box icon to attach a file to the message." }, - "errorUnfollowTopicFailed": "無法取消跟隨話題", - "@errorUnfollowTopicFailed": { - "description": "Error message when unfollowing a topic failed." + "@composeBoxAttachFromCameraTooltip": { + "description": "Tooltip for compose box icon to attach an image from the camera to the message." }, - "errorStarMessageFailedTitle": "無法收藏訊息", - "@errorStarMessageFailedTitle": { - "description": "Error title when starring a message failed." + "@composeBoxAttachMediaTooltip": { + "description": "Tooltip for compose box icon to attach media to the message." }, - "editAlreadyInProgressTitle": "無法編輯訊息", - "@editAlreadyInProgressTitle": { - "description": "Error title when a message edit cannot be saved because there is another edit already in progress." + "@composeBoxBannerButtonCancel": { + "description": "Label text for the 'Cancel' button in the compose-box banner when you are editing a message." }, - "errorCouldNotEditMessageTitle": "無法編輯訊息", - "@errorCouldNotEditMessageTitle": { - "description": "Error title when an exception prevented us from opening the compose box for editing a message." + "@composeBoxBannerButtonSave": { + "description": "Label text for the 'Save' button in the compose-box banner when you are editing a message." }, - "composeBoxGroupDmContentHint": "訊息群組", - "@composeBoxGroupDmContentHint": { - "description": "Hint text for content input when sending a message to a group." + "@composeBoxBannerLabelEditMessage": { + "description": "Label text for the compose-box banner when you are editing a message." }, - "composeBoxChannelContentHint": "訊息 {destination}", "@composeBoxChannelContentHint": { "description": "Hint text for content input when sending a message to a channel.", "placeholders": { "destination": { - "type": "String", - "example": "#channel name > topic name" + "example": "#channel name > topic name", + "type": "String" } } }, - "errorDialogLearnMore": "了解更多", - "@errorDialogLearnMore": { - "description": "Button label in error dialogs to open a web page with more information." + "@composeBoxDmContentHint": { + "description": "Hint text for content input when sending a message to one other person.", + "placeholders": { + "user": { + "example": "channel name", + "type": "String" + } + } }, - "loginEmailLabel": "電子郵件地址", - "@loginEmailLabel": { - "description": "Label for input when an email is required to log in." + "@composeBoxEnterTopicOrSkipHintText": { + "description": "Hint text for topic input widget in compose box when topics are optional.", + "placeholders": { + "defaultTopicName": { + "example": "general chat", + "type": "String" + } + } }, - "markAllAsReadLabel": "標註所有訊息為已讀", - "@markAllAsReadLabel": { - "description": "Button text to mark messages as read." + "@composeBoxGenericContentHint": { + "description": "Hint text for content input when sending a message." }, - "wildcardMentionChannel": "channel", - "@wildcardMentionChannel": { - "description": "Text for \"@channel\" wildcard-mention autocomplete option when writing a channel message." + "@composeBoxGroupDmContentHint": { + "description": "Hint text for content input when sending a message to a group." }, - "themeSettingDark": "深色主題", - "@themeSettingDark": { - "description": "Label for dark theme setting." + "@composeBoxLoadingMessage": { + "description": "Placeholder in compose box showing the quoted message is currently loading.", + "placeholders": { + "messageId": { + "example": "1234", + "type": "int" + } + } }, - "themeSettingSystem": "系統主題", - "@themeSettingSystem": { - "description": "Label for system theme setting." + "@composeBoxSelfDmContentHint": { + "description": "Hint text for content input when sending a message to yourself." }, - "actionSheetOptionHideMutedMessage": "再次隱藏已靜音的話題", - "@actionSheetOptionHideMutedMessage": { - "description": "Label for hide muted message again button on action sheet." + "@composeBoxSendTooltip": { + "description": "Tooltip for send button in compose box." }, - "errorQuotationFailed": "引述失敗", - "@errorQuotationFailed": { - "description": "Error message when quoting a message failed." + "@composeBoxTopicHintText": { + "description": "Hint text for topic input widget in compose box." }, - "successMessageTextCopied": "已複製訊息文字", - "@successMessageTextCopied": { - "description": "Message when content of a message was copied to the user's system clipboard." + "@composeBoxUploadingFilename": { + "description": "Placeholder in compose box showing the specified file is currently uploading.", + "placeholders": { + "filename": { + "example": "file.txt", + "type": "String" + } + } }, - "composeBoxBannerLabelEditMessage": "編輯訊息", - "@composeBoxBannerLabelEditMessage": { - "description": "Label text for the compose-box banner when you are editing a message." + "@contentValidationErrorEmpty": { + "description": "Content validation error message when the message is empty." }, - "composeBoxAttachFilesTooltip": "附加檔案", - "@composeBoxAttachFilesTooltip": { - "description": "Tooltip for compose box icon to attach a file to the message." + "@contentValidationErrorQuoteAndReplyInProgress": { + "description": "Content validation error message when a quotation has not completed yet." }, - "newDmSheetScreenTitle": "新增私訊", - "@newDmSheetScreenTitle": { - "description": "Title displayed at the top of the new DM screen." + "@contentValidationErrorTooLong": { + "description": "Content validation error message when the message is too long." }, - "newDmFabButtonLabel": "新增私訊", - "@newDmFabButtonLabel": { - "description": "Label for the floating action button (FAB) that opens the new DM sheet." + "@contentValidationErrorUploadInProgress": { + "description": "Content validation error message when attachments have not finished uploading." }, - "dialogCancel": "取消", "@dialogCancel": { "description": "Button label in dialogs to cancel." }, - "dialogContinue": "繼續", + "@dialogClose": { + "description": "Button label in dialogs to close." + }, "@dialogContinue": { "description": "Button label in dialogs to proceed." }, - "loginFormSubmitLabel": "登入", - "@loginFormSubmitLabel": { - "description": "Button text to submit login credentials." + "@discardDraftConfirmationDialogConfirmButton": { + "description": "Label for the 'Discard' button on a confirmation dialog for discarding message text that was typed into the compose box." }, - "signInWithFoo": "使用 {method} 登入", - "@signInWithFoo": { - "description": "Button to use {method} to sign in to the app.", + "@discardDraftConfirmationDialogTitle": { + "description": "Title for a confirmation dialog for discarding message text that was typed into the compose box." + }, + "@discardDraftForEditConfirmationDialogMessage": { + "description": "Message for a confirmation dialog for discarding message text that was typed into the compose box, when editing a message." + }, + "@discardDraftForOutboxConfirmationDialogMessage": { + "description": "Message for a confirmation dialog when restoring an outbox message, for discarding message text that was typed into the compose box." + }, + "@dmsWithOthersPageTitle": { + "description": "Message list page title for a DM group with others.", "placeholders": { - "method": { - "type": "String", - "example": "Google" + "others": { + "example": "Alice, Bob", + "type": "String" } } }, - "loginPasswordLabel": "密碼", - "@loginPasswordLabel": { - "description": "Label for password input field." + "@dmsWithYourselfPageTitle": { + "description": "Message list page title for a DM group that only includes yourself." }, - "loginServerUrlLabel": "您的 Zulip 伺服器網址", - "@loginServerUrlLabel": { - "description": "Label in login page for Zulip server URL entry." + "@editAlreadyInProgressMessage": { + "description": "Error message when a message edit cannot be saved because there is another edit already in progress." }, - "loginUsernameLabel": "使用者名稱", - "@loginUsernameLabel": { - "description": "Label for input when a username is required to log in." + "@editAlreadyInProgressTitle": { + "description": "Error title when a message edit cannot be saved because there is another edit already in progress." }, - "yesterday": "昨天", - "@yesterday": { - "description": "Term to use to reference the previous day." + "@emojiPickerSearchEmoji": { + "description": "Hint text for the emoji picker search text field." }, - "userRoleOwner": "擁有者", - "@userRoleOwner": { - "description": "Label for UserRole.owner" + "@emojiReactionsMore": { + "description": "Label for a button opening the emoji picker." }, - "userRoleAdministrator": "管理員", - "@userRoleAdministrator": { - "description": "Label for UserRole.administrator" + "@emptyMessageList": { + "description": "Placeholder for some message-list pages when there are no messages." }, - "userRoleModerator": "版主", - "@userRoleModerator": { - "description": "Label for UserRole.moderator" + "@emptyMessageListSearch": { + "description": "Placeholder for the 'Search' page when there are no messages." }, - "errorFollowTopicFailed": "無法跟隨話題", - "@errorFollowTopicFailed": { - "description": "Error message when following a topic failed." + "@errorAccountLoggedIn": { + "description": "Error message on attempting to log into an account that's already logged in.", + "placeholders": { + "email": { + "example": "user@example.com", + "type": "String" + }, + "server": { + "example": "https://example.com", + "type": "String" + } + } }, - "actionSheetOptionQuoteMessage": "引述訊息", - "@actionSheetOptionQuoteMessage": { - "description": "Label for the 'Quote message' button in the message action sheet." + "@errorAccountLoggedInTitle": { + "description": "Error title on attempting to log into an account that's already logged in." }, - "recentDmConversationsPageTitle": "私人訊息", - "@recentDmConversationsPageTitle": { - "description": "Title for the page with a list of DM conversations." + "@errorBannerCannotPostInChannelLabel": { + "description": "Error-banner text replacing the compose box when you do not have permission to send a message to the channel." }, - "composeBoxTopicHintText": "議題", - "@composeBoxTopicHintText": { - "description": "Hint text for topic input widget in compose box." + "@errorBannerDeactivatedDmLabel": { + "description": "Label text for error banner when sending a message to one or multiple deactivated users." }, - "today": "今天", - "@today": { - "description": "Term to use to reference the current day." + "@errorConnectingToServerDetails": { + "description": "Dialog error message for a generic unknown error connecting to the server with details.", + "placeholders": { + "error": { + "example": "Invalid format", + "type": "String" + }, + "serverUrl": { + "example": "http://example.com/", + "type": "String" + } + } }, - "channelsPageTitle": "頻道", - "@channelsPageTitle": { - "description": "Title for the page with a list of subscribed channels." + "@errorConnectingToServerShort": { + "description": "Short error message for a generic unknown error connecting to the server." }, - "loginErrorMissingPassword": "請輸入您的密碼。", - "@loginErrorMissingPassword": { - "description": "Error message when an empty password was provided." + "@errorCopyingFailed": { + "description": "Error message when copying the text of a message to the user's system clipboard failed." }, - "userRoleGuest": "訪客", - "@userRoleGuest": { - "description": "Label for UserRole.guest" + "@errorCouldNotConnectTitle": { + "description": "Error title when the app could not connect to the server." }, - "mentionsPageTitle": "提及", - "@mentionsPageTitle": { - "description": "Page title for the 'Mentions' message view." + "@errorCouldNotEditMessageTitle": { + "description": "Error title when an exception prevented us from opening the compose box for editing a message." }, - "recentDmConversationsSectionHeader": "私人訊息", - "@recentDmConversationsSectionHeader": { - "description": "Heading for direct messages section on the 'Inbox' message view." + "@errorCouldNotFetchMessageSource": { + "description": "Error message when the source of a message could not be fetched." }, - "composeBoxDmContentHint": "訊息 @{user}", - "@composeBoxDmContentHint": { - "description": "Hint text for content input when sending a message to one other person.", + "@errorCouldNotOpenLink": { + "description": "Error message when opening a link failed.", "placeholders": { - "user": { - "type": "String", - "example": "channel name" + "url": { + "example": "https://chat.example.com", + "type": "String" } } }, - "dialogClose": "關閉", - "@dialogClose": { - "description": "Button label in dialogs to close." + "@errorCouldNotOpenLinkTitle": { + "description": "Error title when opening a link failed." }, - "loginErrorMissingEmail": "請輸入您的電子郵件地址。", - "@loginErrorMissingEmail": { - "description": "Error message when an empty email was provided." + "@errorCouldNotShowUserProfile": { + "description": "Message that appears on the user profile page when the profile cannot be shown." }, - "lightboxCopyLinkTooltip": "複製連結", - "@lightboxCopyLinkTooltip": { - "description": "Tooltip in lightbox for the copy link action." + "@errorDialogContinue": { + "description": "Button label in error dialogs to acknowledge the error and close the dialog." }, - "composeBoxUploadingFilename": "正在上傳 {filename}…", - "@composeBoxUploadingFilename": { - "description": "Placeholder in compose box showing the specified file is currently uploading.", + "@errorDialogLearnMore": { + "description": "Button label in error dialogs to open a web page with more information." + }, + "@errorDialogTitle": { + "description": "Generic title for error dialog." + }, + "@errorFailedToUploadFileTitle": { + "description": "Error title when the specified file failed to upload.", "placeholders": { "filename": { - "type": "String", - "example": "file.txt" + "example": "file.txt", + "type": "String" } } }, - "topicsButtonTooltip": "話題", - "@topicsButtonTooltip": { - "description": "Tooltip for button to navigate to topic-list page." - }, - "themeSettingLight": "淺色主題", - "@themeSettingLight": { - "description": "Label for light theme setting." + "@errorFilesTooLarge": { + "description": "Error message when attached files are too large in size.", + "placeholders": { + "listMessage": { + "example": "foo.txt: 10.1 MiB\nbar.txt 20.2 MiB", + "type": "String" + }, + "maxFileUploadSizeMib": { + "example": "15", + "type": "int" + }, + "num": { + "example": "2", + "type": "int" + } + } }, - "themeSettingTitle": "主題", - "@themeSettingTitle": { - "description": "Title for theme setting. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + "@errorFilesTooLargeTitle": { + "description": "Error title when attached files are too large in size.", + "placeholders": { + "num": { + "example": "4", + "type": "int" + } + } }, - "errorVideoPlayerFailed": "無法播放影片。", - "@errorVideoPlayerFailed": { - "description": "Error message when a video fails to play." + "@errorFollowTopicFailed": { + "description": "Error message when following a topic failed." }, - "errorDialogTitle": "錯誤", - "@errorDialogTitle": { - "description": "Generic title for error dialog." + "@errorHandlingEventDetails": { + "description": "Error details on failing to handle a Zulip server event.", + "placeholders": { + "error": { + "example": "Unexpected null value", + "type": "String" + }, + "event": { + "example": "UpdateMessageEvent(id: 123, messageIds: [2345, 3456], newTopic: 'dinner')", + "type": "String" + }, + "serverUrl": { + "example": "https://chat.example.com", + "type": "String" + } + } }, - "wildcardMentionChannelDescription": "通知頻道", - "@wildcardMentionChannelDescription": { - "description": "Description for \"@all\", \"@everyone\", \"@channel\", and \"@stream\" wildcard-mention autocomplete options when writing a channel message." + "@errorHandlingEventTitle": { + "description": "Error title on failing to handle a Zulip server event." }, - "upgradeWelcomeDialogTitle": "歡迎使用新 Zulip 應用程式!", - "@upgradeWelcomeDialogTitle": { - "description": "Title for dialog shown on first upgrade from the legacy Zulip app." + "@errorInvalidApiKeyMessage": { + "description": "Error message in the dialog for invalid API key.", + "placeholders": { + "url": { + "example": "http://chat.example.com/", + "type": "String" + } + } }, - "errorCouldNotOpenLinkTitle": "無法開啟連結", - "@errorCouldNotOpenLinkTitle": { - "description": "Error title when opening a link failed." + "@errorInvalidResponse": { + "description": "Error message when an API call returned an invalid response." }, - "emojiReactionsMore": "更多", - "@emojiReactionsMore": { - "description": "Label for a button opening the emoji picker." + "@errorLoginCouldNotConnect": { + "description": "Error message when the app could not connect to the server.", + "placeholders": { + "url": { + "example": "http://example.com/", + "type": "String" + } + } }, - "errorSharingFailed": "分享失敗。", - "@errorSharingFailed": { - "description": "Error message when sharing a message failed." + "@errorLoginFailedTitle": { + "description": "Error title for login when signing into a Zulip server fails." }, - "contentValidationErrorUploadInProgress": "請等待上傳完成。", - "@contentValidationErrorUploadInProgress": { - "description": "Content validation error message when attachments have not finished uploading." + "@errorLoginInvalidInputTitle": { + "description": "Error title for login when input is invalid." }, - "newDmSheetSearchHintEmpty": "增添一個或多個使用者", - "@newDmSheetSearchHintEmpty": { - "description": "Hint text for the search bar when no users are selected" + "@errorMalformedResponse": { + "description": "Error message when an API call fails because we could not parse the response.", + "placeholders": { + "httpStatus": { + "example": "200", + "type": "int" + } + } }, - "contentValidationErrorQuoteAndReplyInProgress": "請等待引述完成。", - "@contentValidationErrorQuoteAndReplyInProgress": { - "description": "Content validation error message when a quotation has not completed yet." + "@errorMalformedResponseWithCause": { + "description": "Error message when an API call fails because we could not parse the response, with details of the failure.", + "placeholders": { + "details": { + "example": "type 'Null' is not a subtype of type 'String' in type cast", + "type": "String" + }, + "httpStatus": { + "example": "200", + "type": "int" + } + } }, - "errorLoginFailedTitle": "登入失敗", - "@errorLoginFailedTitle": { - "description": "Error title for login when signing into a Zulip server fails." + "@errorMarkAsReadFailedTitle": { + "description": "Error title when mark as read action failed." + }, + "@errorMarkAsUnreadFailedTitle": { + "description": "Error title when mark as unread action failed." + }, + "@errorMessageDoesNotSeemToExist": { + "description": "Error message when loading a message that does not exist." + }, + "@errorMessageEditNotSaved": { + "description": "Error message for compose box when a message edit could not be saved." + }, + "@errorMessageNotSent": { + "description": "Error message for compose box when a message could not be sent." + }, + "@errorMuteTopicFailed": { + "description": "Error message when muting a topic failed." }, - "errorNetworkRequestFailed": "網路請求失敗", "@errorNetworkRequestFailed": { "description": "Error message when a network request fails." }, - "serverUrlValidationErrorInvalidUrl": "請輸入有效的網址。", - "@serverUrlValidationErrorInvalidUrl": { - "description": "Error message when URL is not in a valid format." + "@errorNotificationOpenAccountNotFound": { + "description": "Error message when the account associated with the notification could not be found" }, - "errorCopyingFailed": "複製失敗", - "@errorCopyingFailed": { - "description": "Error message when copying the text of a message to the user's system clipboard failed." + "@errorNotificationOpenTitle": { + "description": "Error title when notification opening fails" }, - "serverUrlValidationErrorNoUseEmail": "請輸入伺服器網址,而非您的電子郵件。", - "@serverUrlValidationErrorNoUseEmail": { - "description": "Error message when URL looks like an email" + "@errorQuotationFailed": { + "description": "Error message when quoting a message failed." }, - "serverUrlValidationErrorEmpty": "請輸入網址。", - "@serverUrlValidationErrorEmpty": { - "description": "Error message when URL is empty" + "@errorReactionAddingFailedTitle": { + "description": "Error title when adding a message reaction fails" }, - "errorMessageDoesNotSeemToExist": "該訊息似乎不存在。", - "@errorMessageDoesNotSeemToExist": { - "description": "Error message when loading a message that does not exist." + "@errorReactionRemovingFailedTitle": { + "description": "Error title when removing a message reaction fails" }, - "errorCouldNotOpenLink": "無法開啟連結: {url}", - "@errorCouldNotOpenLink": { - "description": "Error message when opening a link failed.", + "@errorRequestFailed": { + "description": "Error message when an API call fails.", "placeholders": { - "url": { - "type": "String", - "example": "https://chat.example.com" + "httpStatus": { + "example": "500", + "type": "int" } } }, - "spoilerDefaultHeaderText": "劇透", - "@spoilerDefaultHeaderText": { - "description": "The default header text in a spoiler block ( https://zulip.com/help/spoilers )." + "@errorResolveTopicFailedTitle": { + "description": "Error title when marking a topic as resolved failed." }, - "markAsUnreadInProgress": "正在標註訊息為未讀…", - "@markAsUnreadInProgress": { - "description": "Progress message when marking messages as unread." + "@errorServerMessage": { + "description": "Error message that quotes an error from the server.", + "placeholders": { + "message": { + "example": "Invalid format", + "type": "String" + } + } }, - "errorLoginCouldNotConnect": "無法連線到伺服器:\n{url}", - "@errorLoginCouldNotConnect": { - "description": "Error message when the app could not connect to the server.", + "@errorServerVersionUnsupportedMessage": { + "description": "Error message in the dialog for when the Zulip Server version is unsupported.", "placeholders": { + "minSupportedZulipVersion": { + "example": "4.0", + "type": "String" + }, "url": { - "type": "String", - "example": "http://example.com/" + "example": "http://chat.example.com/", + "type": "String" + }, + "zulipVersion": { + "example": "3.2", + "type": "String" } } }, - "errorCouldNotConnectTitle": "無法連線", - "@errorCouldNotConnectTitle": { - "description": "Error title when the app could not connect to the server." + "@errorSharingFailed": { + "description": "Error message when sharing a message failed." }, - "errorInvalidResponse": "伺服器傳送了無效的請求。", - "@errorInvalidResponse": { - "description": "Error message when an API call returned an invalid response." + "@errorStarMessageFailedTitle": { + "description": "Error title when starring a message failed." }, - "newDmSheetSearchHintSomeSelected": "增添其他使用者…", - "@newDmSheetSearchHintSomeSelected": { - "description": "Hint text for the search bar when at least one user is selected." + "@errorUnfollowTopicFailed": { + "description": "Error message when unfollowing a topic failed." }, - "inboxPageTitle": "收件匣", - "@inboxPageTitle": { - "description": "Title for the page with unreads." + "@errorUnmuteTopicFailed": { + "description": "Error message when unmuting a topic failed." }, - "initialAnchorSettingNewestAlways": "最新訊息", - "@initialAnchorSettingNewestAlways": { - "description": "Label for a value of setting controlling initial anchor of message list." + "@errorUnresolveTopicFailedTitle": { + "description": "Error title when marking a topic as unresolved failed." + }, + "@errorUnstarMessageFailedTitle": { + "description": "Error title when unstarring a message failed." + }, + "@errorVideoPlayerFailed": { + "description": "Error message when a video fails to play." + }, + "@errorWebAuthOperationalError": { + "description": "Error message when third-party authentication has an operational error (not necessarily caused by invalid credentials)." + }, + "@errorWebAuthOperationalErrorTitle": { + "description": "Error title when third-party authentication has an operational error (not necessarily caused by invalid credentials)." }, - "experimentalFeatureSettingsPageTitle": "實驗性功能", "@experimentalFeatureSettingsPageTitle": { "description": "Title of settings page for experimental, in-development features" }, - "errorNotificationOpenTitle": "無法開啟通知", - "@errorNotificationOpenTitle": { - "description": "Error title when notification opening fails" + "@experimentalFeatureSettingsWarning": { + "description": "Warning text on settings page for experimental, in-development features" }, - "loginAddAnAccountPageTitle": "增添帳號", - "@loginAddAnAccountPageTitle": { - "description": "Title for page to add a Zulip account." + "@filenameAndSizeInMiB": { + "description": "The name of a file, and its size in mebibytes.", + "placeholders": { + "filename": { + "example": "foo.txt", + "type": "String" + }, + "size": { + "example": "20.2", + "type": "String" + } + } }, - "channelFeedButtonTooltip": "頻道饋給", - "@channelFeedButtonTooltip": { - "description": "Tooltip for button to navigate to a given channel's feed" + "@inboxEmptyPlaceholder": { + "description": "Centered text on the 'Inbox' page saying that there is no content to show." }, - "unpinnedSubscriptionsLabel": "未釘選", - "@unpinnedSubscriptionsLabel": { - "description": "Label for the list of unpinned subscribed channels." + "@inboxPageTitle": { + "description": "Title for the page with unreads." }, - "wildcardMentionTopicDescription": "通知話題", - "@wildcardMentionTopicDescription": { - "description": "Description for \"@topic\" wildcard-mention autocomplete options when writing a channel message." + "@initialAnchorSettingDescription": { + "description": "Description of setting controlling initial anchor of message list." }, - "pinnedSubscriptionsLabel": "已釘選", - "@pinnedSubscriptionsLabel": { - "description": "Label for the list of pinned subscribed channels." + "@initialAnchorSettingFirstUnreadAlways": { + "description": "Label for a value of setting controlling initial anchor of message list." }, - "mutedUser": "已靜音的使用者", - "@mutedUser": { - "description": "Name for a muted user to display all over the app." + "@initialAnchorSettingFirstUnreadConversations": { + "description": "Label for a value of setting controlling initial anchor of message list." }, - "combinedFeedPageTitle": "綜合饋給", - "@combinedFeedPageTitle": { - "description": "Page title for the 'Combined feed' message view." + "@initialAnchorSettingNewestAlways": { + "description": "Label for a value of setting controlling initial anchor of message list." }, - "searchMessagesPageTitle": "搜尋", - "@searchMessagesPageTitle": { - "description": "Page title for the 'Search' message view." + "@initialAnchorSettingTitle": { + "description": "Title of setting controlling initial anchor of message list." }, - "searchMessagesHintText": "搜尋", - "@searchMessagesHintText": { - "description": "Hint text for the message search text field." + "@invisibleMode": { + "description": "Label for the 'Invisible mode' switch on the profile page." }, - "searchMessagesClearButtonTooltip": "清除", - "@searchMessagesClearButtonTooltip": { - "description": "Tooltip for the 'x' button in the search text field." + "@lightboxCopyLinkTooltip": { + "description": "Tooltip in lightbox for the copy link action." }, - "upgradeWelcomeDialogMessage": "您將在更快、更流暢的版本中享受熟悉的體驗。", - "@upgradeWelcomeDialogMessage": { - "description": "Message text for dialog shown on first upgrade from the legacy Zulip app." + "@lightboxVideoCurrentPosition": { + "description": "The current playback position of the video playing in the lightbox." }, - "upgradeWelcomeDialogLinkText": "查看公告部落格文章!", - "@upgradeWelcomeDialogLinkText": { - "description": "Text of link in dialog shown on first upgrade from the legacy Zulip app." + "@lightboxVideoDuration": { + "description": "The total duration of the video playing in the lightbox." }, - "upgradeWelcomeDialogDismiss": "開始吧", - "@upgradeWelcomeDialogDismiss": { - "description": "Label for button dismissing dialog shown on first upgrade from the legacy Zulip app." + "@logOutConfirmationDialogConfirmButton": { + "description": "Label for the 'Log out' button on a confirmation dialog for logging out." }, - "logOutConfirmationDialogMessage": "要在未來使用此帳號,您將需要重新輸入您組織的網址和您的帳號資訊。", "@logOutConfirmationDialogMessage": { "description": "Message for a confirmation dialog for logging out." }, - "errorCouldNotShowUserProfile": "無法顯示使用者設定檔。", - "@errorCouldNotShowUserProfile": { - "description": "Message that appears on the user profile page when the profile cannot be shown." - }, - "permissionsDeniedCameraAccess": "要上傳圖片,請在設定中授予 Zulip 額外權限。", - "@permissionsDeniedCameraAccess": { - "description": "Message for dialog asking the user to grant permissions for camera access." + "@logOutConfirmationDialogTitle": { + "description": "Title for a confirmation dialog for logging out." }, - "permissionsDeniedReadExternalStorage": "要上傳檔案,請在設定中授予 Zulip 額外權限。", - "@permissionsDeniedReadExternalStorage": { - "description": "Message for dialog asking the user to grant permissions for external storage read access." + "@loginAddAnAccountPageTitle": { + "description": "Title for page to add a Zulip account." }, - "errorCouldNotFetchMessageSource": "無法取得訊息來源。", - "@errorCouldNotFetchMessageSource": { - "description": "Error message when the source of a message could not be fetched." + "@loginEmailLabel": { + "description": "Label for input when an email is required to log in." }, - "errorFailedToUploadFileTitle": "上傳檔案失敗:{filename}", - "@errorFailedToUploadFileTitle": { - "description": "Error title when the specified file failed to upload.", - "placeholders": { - "filename": { - "type": "String", - "example": "file.txt" - } - } + "@loginErrorMissingEmail": { + "description": "Error message when an empty email was provided." }, - "filenameAndSizeInMiB": "{filename}: {size} MiB", - "@filenameAndSizeInMiB": { - "description": "The name of a file, and its size in mebibytes.", - "placeholders": { - "filename": { - "type": "String", - "example": "foo.txt" - }, - "size": { - "type": "String", - "example": "20.2" - } - } + "@loginErrorMissingPassword": { + "description": "Error message when an empty password was provided." }, - "errorFilesTooLarge": "{num, plural, =1{檔案} other{{num} 個檔案}}超過伺服器 {maxFileUploadSizeMib} MiB 的限制,將不會上傳:\n\n{listMessage}", - "@errorFilesTooLarge": { - "description": "Error message when attached files are too large in size.", + "@loginErrorMissingUsername": { + "description": "Error message when an empty username was provided." + }, + "@loginFormSubmitLabel": { + "description": "Button text to submit login credentials." + }, + "@loginHidePassword": { + "description": "Icon label for button to hide password in input form." + }, + "@loginMethodDivider": { + "description": "Text on the divider between the username/password form and the third-party login options. Uppercase (for languages with letter case)." + }, + "@loginPageTitle": { + "description": "Title for login page." + }, + "@loginPasswordLabel": { + "description": "Label for password input field." + }, + "@loginServerUrlLabel": { + "description": "Label in login page for Zulip server URL entry." + }, + "@loginUsernameLabel": { + "description": "Label for input when a username is required to log in." + }, + "@mainMenuMyProfile": { + "description": "Label for main-menu button leading to the user's own profile." + }, + "@manyPeopleTyping": { + "description": "Text to display when there are multiple users typing." + }, + "@markAllAsReadLabel": { + "description": "Button text to mark messages as read." + }, + "@markAsReadComplete": { + "description": "Message when marking messages as read has completed.", "placeholders": { "num": { - "type": "int", - "example": "2" - }, - "maxFileUploadSizeMib": { - "type": "int", - "example": "15" - }, - "listMessage": { - "type": "String", - "example": "foo.txt: 10.1 MiB\nbar.txt 20.2 MiB" + "example": "4", + "type": "int" } } }, - "errorFilesTooLargeTitle": "{num, plural, =1{檔案} other{檔案}}太大", - "@errorFilesTooLargeTitle": { - "description": "Error title when attached files are too large in size.", + "@markAsReadInProgress": { + "description": "Progress message when marking messages as read." + }, + "@markAsUnreadComplete": { + "description": "Message when marking messages as unread has completed.", "placeholders": { "num": { - "type": "int", - "example": "4" + "example": "4", + "type": "int" } } }, - "errorLoginInvalidInputTitle": "無效的輸入", - "@errorLoginInvalidInputTitle": { - "description": "Error title for login when input is invalid." - }, - "errorMessageNotSent": "訊息沒有送出", - "@errorMessageNotSent": { - "description": "Error message for compose box when a message could not be sent." + "@markAsUnreadInProgress": { + "description": "Progress message when marking messages as unread." }, - "errorMessageEditNotSaved": "訊息沒有儲存", - "@errorMessageEditNotSaved": { - "description": "Error message for compose box when a message edit could not be saved." + "@markReadOnScrollSettingAlways": { + "description": "Label for a value of setting controlling which message-list views should mark read on scroll." }, - "errorServerMessage": "伺服器回應:\n\n{message}", - "@errorServerMessage": { - "description": "Error message that quotes an error from the server.", - "placeholders": { - "message": { - "type": "String", - "example": "Invalid format" - } - } + "@markReadOnScrollSettingConversations": { + "description": "Label for a value of setting controlling which message-list views should mark read on scroll." }, - "errorConnectingToServerShort": "連接 Zulip 時發生錯誤。重試中…", - "@errorConnectingToServerShort": { - "description": "Short error message for a generic unknown error connecting to the server." + "@markReadOnScrollSettingConversationsDescription": { + "description": "Description for a value of setting controlling which message-list views should mark read on scroll." }, - "errorConnectingToServerDetails": "連接 Zulip {serverUrl} 時發生錯誤。將重試:\n\n{error}", - "@errorConnectingToServerDetails": { - "description": "Dialog error message for a generic unknown error connecting to the server with details.", - "placeholders": { - "serverUrl": { - "type": "String", - "example": "http://example.com/" - }, - "error": { - "type": "String", - "example": "Invalid format" - } - } + "@markReadOnScrollSettingDescription": { + "description": "Description of setting controlling which message-list views should mark read on scroll." }, - "errorHandlingEventTitle": "處理 Zulip 事件時發生錯誤。重新連線中…", - "@errorHandlingEventTitle": { - "description": "Error title on failing to handle a Zulip server event." + "@markReadOnScrollSettingNever": { + "description": "Label for a value of setting controlling which message-list views should mark read on scroll." }, - "errorHandlingEventDetails": "處理來自 {serverUrl} 的 Zulip 事件時發生錯誤;將重試。\n\n錯誤:{error}\n\n事件:{event}", - "@errorHandlingEventDetails": { - "description": "Error details on failing to handle a Zulip server event.", - "placeholders": { - "serverUrl": { - "type": "String", - "example": "https://chat.example.com" - }, - "error": { - "type": "String", - "example": "Unexpected null value" - }, - "event": { - "type": "String", - "example": "UpdateMessageEvent(id: 123, messageIds: [2345, 3456], newTopic: 'dinner')" - } - } + "@markReadOnScrollSettingTitle": { + "description": "Title of setting controlling which message-list views should mark read on scroll." }, - "errorBannerDeactivatedDmLabel": "您無法向已停用的使用者發送訊息。", - "@errorBannerDeactivatedDmLabel": { - "description": "Label text for error banner when sending a message to one or multiple deactivated users." + "@mentionsPageTitle": { + "description": "Page title for the 'Mentions' message view." }, - "errorBannerCannotPostInChannelLabel": "您沒有權限在此頻道發佈訊息。", - "@errorBannerCannotPostInChannelLabel": { - "description": "Error-banner text replacing the compose box when you do not have permission to send a message to the channel." + "@messageIsEditedLabel": { + "description": "Label for an edited message. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" }, - "composeBoxBannerButtonSave": "儲存", - "@composeBoxBannerButtonSave": { - "description": "Label text for the 'Save' button in the compose-box banner when you are editing a message." + "@messageIsMovedLabel": { + "description": "Label for a moved message. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" }, - "editAlreadyInProgressMessage": "編輯已在進行中。請等待其完成。", - "@editAlreadyInProgressMessage": { - "description": "Error message when a message edit cannot be saved because there is another edit already in progress." + "@messageListGroupYouAndOthers": { + "description": "Message list recipient header for a DM group with others.", + "placeholders": { + "others": { + "example": "Alice, Bob", + "type": "String" + } + } }, - "savingMessageEditLabel": "儲存編輯中…", - "@savingMessageEditLabel": { - "description": "Text on a message in the message list saying that a message edit request is processing. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + "@messageListGroupYouWithYourself": { + "description": "Message list recipient header for a DM group that only includes yourself." }, - "savingMessageEditFailedLabel": "編輯未儲存", - "@savingMessageEditFailedLabel": { - "description": "Text on a message in the message list saying that a message edit request failed. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + "@messageNotSentLabel": { + "description": "Text on a message in the message list saying that a send message request failed. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" }, - "composeBoxAttachFromCameraTooltip": "拍照", - "@composeBoxAttachFromCameraTooltip": { - "description": "Tooltip for compose box icon to attach an image from the camera to the message." + "@mutedUser": { + "description": "Name for a muted user to display all over the app." }, - "composeBoxGenericContentHint": "輸入訊息", - "@composeBoxGenericContentHint": { - "description": "Hint text for content input when sending a message." + "@newDmFabButtonLabel": { + "description": "Label for the floating action button (FAB) that opens the new DM sheet." }, - "newDmSheetComposeButtonLabel": "編寫", "@newDmSheetComposeButtonLabel": { "description": "Label for the compose button in the new DM sheet that starts composing a message to the selected users." }, - "newDmSheetNoUsersFound": "找不到使用者", "@newDmSheetNoUsersFound": { "description": "Message shown in the new DM sheet when no users match the search." }, - "composeBoxSelfDmContentHint": "記下些什麼", - "@composeBoxSelfDmContentHint": { - "description": "Hint text for content input when sending a message to yourself." + "@newDmSheetScreenTitle": { + "description": "Title displayed at the top of the new DM screen." }, - "preparingEditMessageContentInput": "準備中…", - "@preparingEditMessageContentInput": { - "description": "Hint text for content input when the compose box is preparing to edit a message." + "@newDmSheetSearchHintEmpty": { + "description": "Hint text for the search bar when no users are selected" }, - "composeBoxSendTooltip": "發送", - "@composeBoxSendTooltip": { - "description": "Tooltip for send button in compose box." + "@newDmSheetSearchHintSomeSelected": { + "description": "Hint text for the search bar when at least one user is selected." }, - "unknownChannelName": "(未知頻道)", - "@unknownChannelName": { - "description": "Replacement name for channel when it cannot be found in the store." + "@noEarlierMessages": { + "description": "Text to show at the start of a message list if there are no earlier messages." }, - "composeBoxEnterTopicOrSkipHintText": "輸入議題(留空則使用「{defaultTopicName}」)", - "@composeBoxEnterTopicOrSkipHintText": { - "description": "Hint text for topic input widget in compose box when topics are optional.", + "@noStatusText": { + "description": "The text part of the status button sub-label in self-user profile page when status text is not set." + }, + "@notifGroupDmConversationLabel": { + "description": "Label for a group DM conversation notification.", "placeholders": { - "defaultTopicName": { - "type": "String", - "example": "general chat" + "numOthers": { + "example": "4", + "type": "int" + }, + "senderFullName": { + "example": "Alice", + "type": "String" } } }, - "composeBoxLoadingMessage": "(載入訊息 {messageId} 中)", - "@composeBoxLoadingMessage": { - "description": "Placeholder in compose box showing the quoted message is currently loading.", + "@notifSelfUser": { + "description": "Display name for the user themself, to show after replying in an Android notification" + }, + "@onePersonTyping": { + "description": "Text to display when there is one user typing.", "placeholders": { - "messageId": { - "type": "int", - "example": "1234" + "typist": { + "example": "Alice", + "type": "String" } } }, - "unknownUserName": "(未知使用者)", - "@unknownUserName": { - "description": "Name placeholder to use for a user when we don't know their name." + "@openLinksWithInAppBrowser": { + "description": "Label for toggling setting to open links with in-app browser" }, - "dmsWithYourselfPageTitle": "私訊給自己", - "@dmsWithYourselfPageTitle": { - "description": "Message list page title for a DM group that only includes yourself." + "@permissionsDeniedCameraAccess": { + "description": "Message for dialog asking the user to grant permissions for camera access." }, - "messageListGroupYouAndOthers": "您與 {others}", - "@messageListGroupYouAndOthers": { - "description": "Message list recipient header for a DM group with others.", + "@permissionsDeniedReadExternalStorage": { + "description": "Message for dialog asking the user to grant permissions for external storage read access." + }, + "@permissionsNeededOpenSettings": { + "description": "Button label for permissions dialog button that opens the system settings screen." + }, + "@permissionsNeededTitle": { + "description": "Title for dialog asking the user to grant additional permissions." + }, + "@pinnedSubscriptionsLabel": { + "description": "Label for the list of pinned subscribed channels." + }, + "@pollVoterNames": { + "description": "The list of people who voted for a poll option, wrapped in parentheses.", "placeholders": { - "others": { - "type": "String", - "example": "Alice, Bob" + "voterNames": { + "example": "Alice, Bob, Chad", + "type": "String" } } }, - "dmsWithOthersPageTitle": "與 {others} 的私訊", - "@dmsWithOthersPageTitle": { - "description": "Message list page title for a DM group with others.", - "placeholders": { - "others": { - "type": "String", - "example": "Alice, Bob" - } - } + "@pollWidgetOptionsMissing": { + "description": "Text to display for a poll when it has no options" }, - "emptyMessageList": "這裡沒有訊息。", - "@emptyMessageList": { - "description": "Placeholder for some message-list pages when there are no messages." + "@pollWidgetQuestionMissing": { + "description": "Text to display for a poll when the question is missing" }, - "emptyMessageListSearch": "沒有搜尋結果。", - "@emptyMessageListSearch": { - "description": "Placeholder for the 'Search' page when there are no messages." + "@preparingEditMessageContentInput": { + "description": "Hint text for content input when the compose box is preparing to edit a message." }, - "messageListGroupYouWithYourself": "與自己的訊息", - "@messageListGroupYouWithYourself": { - "description": "Message list recipient header for a DM group that only includes yourself." + "@profileButtonSendDirectMessage": { + "description": "Label for button in profile screen to navigate to DMs with the shown user." }, - "contentValidationErrorTooLong": "訊息長度不應超過 10000 個字元。", - "@contentValidationErrorTooLong": { - "description": "Content validation error message when the message is too long." + "@reactedEmojiSelfUser": { + "description": "Display name for the user themself, to show on an emoji reaction added by the user." }, - "contentValidationErrorEmpty": "您沒有要發送的內容!", - "@contentValidationErrorEmpty": { - "description": "Content validation error message when the message is empty." + "@reactionChipLabel": { + "description": "Text describing a reaction chip, with the emoji name and a list or number of votes. (An accessibility label for assistive technology.)", + "placeholders": { + "emojiName": { + "example": "working_on_it", + "type": "String" + }, + "votes": { + "example": "You, Chris, Greg", + "type": "String" + } + } }, - "discardDraftConfirmationDialogTitle": "要捨棄您正在編寫的訊息嗎?", - "@discardDraftConfirmationDialogTitle": { - "description": "Title for a confirmation dialog for discarding message text that was typed into the compose box." + "@reactionChipVotesYouAndOthers": { + "description": "The number of votes on a reaction chip, where the self-user and at least one other user has voted. (An accessibility label for assistive technology.)", + "placeholders": { + "otherUsersCount": { + "example": "4", + "type": "int" + } + } }, - "discardDraftForEditConfirmationDialogMessage": "當您編輯訊息時,編輯框中原有的內容將被捨棄。", - "@discardDraftForEditConfirmationDialogMessage": { - "description": "Message for a confirmation dialog for discarding message text that was typed into the compose box, when editing a message." + "@reactionChipsLabel": { + "description": "Text identifying the container of reaction chips on a message. (An accessibility label for assistive technology.)" }, - "discardDraftForOutboxConfirmationDialogMessage": "當您還原未發送的訊息時,編輯框中原有的內容將被捨棄。", - "@discardDraftForOutboxConfirmationDialogMessage": { - "description": "Message for a confirmation dialog when restoring an outbox message, for discarding message text that was typed into the compose box." + "@recentDmConversationsEmptyPlaceholder": { + "description": "Centered text on the 'Direct messages' page saying that there is no content to show." }, - "discardDraftConfirmationDialogConfirmButton": "捨棄", - "@discardDraftConfirmationDialogConfirmButton": { - "description": "Label for the 'Discard' button on a confirmation dialog for discarding message text that was typed into the compose box." + "@recentDmConversationsPageTitle": { + "description": "Title for the page with a list of DM conversations." }, - "errorDialogContinue": "OK", - "@errorDialogContinue": { - "description": "Button label in error dialogs to acknowledge the error and close the dialog." + "@recentDmConversationsSectionHeader": { + "description": "Heading for direct messages section on the 'Inbox' message view." }, - "snackBarDetails": "詳細資訊", - "@snackBarDetails": { - "description": "Button label for snack bar button that opens a dialog with more details." + "@revealButtonLabel": { + "description": "Label for the button revealing hidden message from a muted sender in message list." }, - "lightboxVideoCurrentPosition": "目前位置", - "@lightboxVideoCurrentPosition": { - "description": "The current playback position of the video playing in the lightbox." + "@savingMessageEditFailedLabel": { + "description": "Text on a message in the message list saying that a message edit request failed. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" }, - "lightboxVideoDuration": "影片長度", - "@lightboxVideoDuration": { - "description": "The total duration of the video playing in the lightbox." + "@savingMessageEditLabel": { + "description": "Text on a message in the message list saying that a message edit request is processing. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" }, - "loginMethodDivider": "或", - "@loginMethodDivider": { - "description": "Text on the divider between the username/password form and the third-party login options. Uppercase (for languages with letter case)." + "@scrollToBottomTooltip": { + "description": "Tooltip for button to scroll to bottom." }, - "topicValidationErrorTooLong": "議題長度不得超過 60 個字元。", - "@topicValidationErrorTooLong": { - "description": "Topic validation error when topic is too long." + "@searchMessagesClearButtonTooltip": { + "description": "Tooltip for the 'x' button in the search text field." }, - "topicValidationErrorMandatoryButEmpty": "此組織要求必須填寫議題。", - "@topicValidationErrorMandatoryButEmpty": { - "description": "Topic validation error when topic is required but was empty." + "@searchMessagesHintText": { + "description": "Hint text for the message search text field." }, - "errorServerVersionUnsupportedMessage": "{url} 執行的 Zulip Server 為 {zulipVersion},此版本已不受支援。最低支援版本為 Zulip Server {minSupportedZulipVersion}。", - "@errorServerVersionUnsupportedMessage": { - "description": "Error message in the dialog for when the Zulip Server version is unsupported.", + "@searchMessagesPageTitle": { + "description": "Page title for the 'Search' message view." + }, + "@seeWhoReactedSheetEmojiNameWithVoteCount": { + "description": "In the 'See who reacted' sheet, an emoji reaction's name and how many votes it has. (An accessibility label for assistive technology.)", "placeholders": { - "url": { - "type": "String", - "example": "http://chat.example.com/" + "emojiName": { + "example": "working_on_it", + "type": "String" }, - "zulipVersion": { - "type": "String", - "example": "3.2" - }, - "minSupportedZulipVersion": { - "type": "String", - "example": "4.0" + "num": { + "example": "2", + "type": "int" } } }, - "errorInvalidApiKeyMessage": "您在 {url} 的帳號無法通過驗證。請重新登入或使用其他帳號。", - "@errorInvalidApiKeyMessage": { - "description": "Error message in the dialog for invalid API key.", + "@seeWhoReactedSheetHeaderLabel": { + "description": "In the 'See who reacted' sheet, a label for the list of emoji reactions at the top, with the total number of reactions. (An accessibility label for assistive technology.)", "placeholders": { - "url": { - "type": "String", - "example": "http://chat.example.com/" + "num": { + "example": "2", + "type": "int" } } }, - "errorMalformedResponse": "伺服器回傳了格式錯誤的回應;HTTP 狀態碼為 {httpStatus}", - "@errorMalformedResponse": { - "description": "Error message when an API call fails because we could not parse the response.", - "placeholders": { - "httpStatus": { - "type": "int", - "example": "200" - } - } + "@seeWhoReactedSheetNoReactions": { + "description": "Explanation on the 'See who reacted' sheet when the message has no reactions (because they were removed after the sheet was opened)." }, - "errorMalformedResponseWithCause": "伺服器回傳了格式錯誤的回應;HTTP 狀態碼為 {httpStatus};{details}", - "@errorMalformedResponseWithCause": { - "description": "Error message when an API call fails because we could not parse the response, with details of the failure.", + "@seeWhoReactedSheetUserListLabel": { + "description": "In the 'See who reacted' sheet, a label for the list of users who chose an emoji reaction, with the emoji's name and how many votes it has. (An accessibility label for assistive technology.)", "placeholders": { - "httpStatus": { - "type": "int", - "example": "200" + "emojiName": { + "example": "working_on_it", + "type": "String" }, - "details": { - "type": "String", - "example": "type 'Null' is not a subtype of type 'String' in type cast" + "num": { + "example": "2", + "type": "int" } } }, - "errorRequestFailed": "網路請求失敗:HTTP 狀態碼為 {httpStatus}", - "@errorRequestFailed": { - "description": "Error message when an API call fails.", - "placeholders": { - "httpStatus": { - "type": "int", - "example": "500" - } - } + "@serverUrlValidationErrorEmpty": { + "description": "Error message when URL is empty" + }, + "@serverUrlValidationErrorInvalidUrl": { + "description": "Error message when URL is not in a valid format." + }, + "@serverUrlValidationErrorNoUseEmail": { + "description": "Error message when URL looks like an email" }, - "serverUrlValidationErrorUnsupportedScheme": "伺服器 URL 必須以 http:// 或 https:// 開頭。", "@serverUrlValidationErrorUnsupportedScheme": { "description": "Error message when URL has an unsupported scheme." }, - "markAsReadComplete": "已標為已讀:{num, plural, =1{1 則訊息} other{{num} 則訊息}}。", - "@markAsReadComplete": { - "description": "Message when marking messages as read has completed.", + "@setStatusPageTitle": { + "description": "Title for the 'Set status' page." + }, + "@settingsPageTitle": {}, + "@signInWithFoo": { + "description": "Button to use {method} to sign in to the app.", "placeholders": { - "num": { - "type": "int", - "example": "4" + "method": { + "example": "Google", + "type": "String" } } }, - "markAsReadInProgress": "正在標記訊息為已讀…", - "@markAsReadInProgress": { - "description": "Progress message when marking messages as read." + "@snackBarDetails": { + "description": "Button label for snack bar button that opens a dialog with more details." }, - "errorMarkAsReadFailedTitle": "標記為已讀失敗", - "@errorMarkAsReadFailedTitle": { - "description": "Error title when mark as read action failed." + "@spoilerDefaultHeaderText": { + "description": "The default header text in a spoiler block ( https://zulip.com/help/spoilers )." }, - "markAsUnreadComplete": "已標為未讀:{num, plural, =1{1 則訊息} other{{num} 則訊息}}。", - "@markAsUnreadComplete": { - "description": "Message when marking messages as unread has completed.", - "placeholders": { - "num": { - "type": "int", - "example": "4" - } - } + "@starredMessagesPageTitle": { + "description": "Page title for the 'Starred messages' message view." }, - "errorMarkAsUnreadFailedTitle": "標記為未讀失敗", - "@errorMarkAsUnreadFailedTitle": { - "description": "Error title when mark as unread action failed." + "@statusButtonLabelStatusSet": { + "description": "The status button label in self-user profile page when status is set." }, - "invisibleMode": "隱身模式", - "@invisibleMode": { - "description": "Label for the 'Invisible mode' switch on the profile page." + "@statusButtonLabelStatusUnset": { + "description": "The status button label in self-user profile page when status is not set." }, - "turnOnInvisibleModeErrorTitle": "啟用隱身模式時發生錯誤。請再試一次。", - "@turnOnInvisibleModeErrorTitle": { - "description": "Error title when turning on invisible mode failed." + "@statusClearButtonLabel": { + "description": "Label for the button that clears the user status, in 'Set status' page." }, - "turnOffInvisibleModeErrorTitle": "關閉隱身模式時發生錯誤。請再試一次。", - "@turnOffInvisibleModeErrorTitle": { - "description": "Error title when turning off invisible mode failed." + "@statusSaveButtonLabel": { + "description": "Label for the button that saves the user status, in 'Set status' page." }, - "userRoleUnknown": "未知", - "@userRoleUnknown": { - "description": "Label for UserRole.unknown" + "@statusTextHint": { + "description": "Hint text for the status text input field in 'Set status' page." }, - "inboxEmptyPlaceholder": "您的收件匣中沒有未讀訊息。請使用下方按鈕檢視整合訊息流或頻道清單。", - "@inboxEmptyPlaceholder": { - "description": "Centered text on the 'Inbox' page saying that there is no content to show." + "@successChannelLinkCopied": { + "description": "Message when link of a channel was copied to the user's system clipboard." }, - "recentDmConversationsEmptyPlaceholder": "您尚未有任何私人訊息!不如開始一段對話吧?", - "@recentDmConversationsEmptyPlaceholder": { - "description": "Centered text on the 'Direct messages' page saying that there is no content to show." + "@successLinkCopied": { + "description": "Success message after copy link action completed." }, - "starredMessagesPageTitle": "已加星號的訊息", - "@starredMessagesPageTitle": { - "description": "Page title for the 'Starred messages' message view." + "@successMessageLinkCopied": { + "description": "Message when link of a message was copied to the user's system clipboard." }, - "channelsEmptyPlaceholder": "您尚未訂閱任何頻道。", - "@channelsEmptyPlaceholder": { - "description": "Centered text on the 'Channels' page saying that there is no content to show." + "@successMessageTextCopied": { + "description": "Message when content of a message was copied to the user's system clipboard." }, - "mainMenuMyProfile": "我的設定檔", - "@mainMenuMyProfile": { - "description": "Label for main-menu button leading to the user's own profile." + "@successTopicLinkCopied": { + "description": "Message when link of a topic was copied to the user's system clipboard." }, - "notifGroupDmConversationLabel": "{senderFullName} 傳送給您和 {numOthers, plural, =1{1 位其他對象、} other{{numOthers} 位其他對象}}", - "@notifGroupDmConversationLabel": { - "description": "Label for a group DM conversation notification.", - "placeholders": { - "senderFullName": { - "type": "String", - "example": "Alice" - }, - "numOthers": { - "type": "int", - "example": "4" - } - } + "@switchAccountButton": { + "description": "Label for main-menu button leading to the choose-account page." }, - "notifSelfUser": "您", - "@notifSelfUser": { - "description": "Display name for the user themself, to show after replying in an Android notification" + "@themeSettingDark": { + "description": "Label for dark theme setting." }, - "reactedEmojiSelfUser": "您", - "@reactedEmojiSelfUser": { - "description": "Display name for the user themself, to show on an emoji reaction added by the user." + "@themeSettingLight": { + "description": "Label for light theme setting." }, - "onePersonTyping": "{typist} 正在輸入…", - "@onePersonTyping": { - "description": "Text to display when there is one user typing.", - "placeholders": { - "typist": { - "type": "String", - "example": "Alice" - } + "@themeSettingSystem": { + "description": "Label for system theme setting." + }, + "@themeSettingTitle": { + "description": "Title for theme setting. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + }, + "@today": { + "description": "Term to use to reference the current day." + }, + "@topicValidationErrorMandatoryButEmpty": { + "description": "Topic validation error when topic is required but was empty." + }, + "@topicValidationErrorTooLong": { + "description": "Topic validation error when topic is too long." + }, + "@topicsButtonTooltip": { + "description": "Tooltip for button to navigate to topic-list page." + }, + "@tryAnotherAccountButton": { + "description": "Label for loading screen button prompting user to try another account." + }, + "@tryAnotherAccountMessage": { + "description": "Message that appears on the loading screen after waiting for some time.", + "url": { + "example": "http://chat.example.com/", + "type": "String" } }, - "twoPeopleTyping": "{typist} 和 {otherTypist} 正在輸入…", + "@turnOffInvisibleModeErrorTitle": { + "description": "Error title when turning off invisible mode failed." + }, + "@turnOnInvisibleModeErrorTitle": { + "description": "Error title when turning on invisible mode failed." + }, "@twoPeopleTyping": { "description": "Text to display when there are two users typing.", "placeholders": { - "typist": { - "type": "String", - "example": "Alice" - }, "otherTypist": { - "type": "String", - "example": "Bob" + "example": "Bob", + "type": "String" + }, + "typist": { + "example": "Alice", + "type": "String" } } }, - "manyPeopleTyping": "有些人正在輸入…", - "@manyPeopleTyping": { - "description": "Text to display when there are multiple users typing." + "@unknownChannelName": { + "description": "Replacement name for channel when it cannot be found in the store." + }, + "@unknownUserName": { + "description": "Name placeholder to use for a user when we don't know their name." + }, + "@unpinnedSubscriptionsLabel": { + "description": "Label for the list of unpinned subscribed channels." + }, + "@updateStatusErrorTitle": { + "description": "Error title when updating user status failed." + }, + "@upgradeWelcomeDialogDismiss": { + "description": "Label for button dismissing dialog shown on first upgrade from the legacy Zulip app." + }, + "@upgradeWelcomeDialogLinkText": { + "description": "Text of link in dialog shown on first upgrade from the legacy Zulip app." + }, + "@upgradeWelcomeDialogMessage": { + "description": "Message text for dialog shown on first upgrade from the legacy Zulip app." + }, + "@upgradeWelcomeDialogTitle": { + "description": "Title for dialog shown on first upgrade from the legacy Zulip app." + }, + "@userRoleAdministrator": { + "description": "Label for UserRole.administrator" + }, + "@userRoleGuest": { + "description": "Label for UserRole.guest" + }, + "@userRoleMember": { + "description": "Label for UserRole.member" + }, + "@userRoleModerator": { + "description": "Label for UserRole.moderator" + }, + "@userRoleOwner": { + "description": "Label for UserRole.owner" + }, + "@userRoleUnknown": { + "description": "Label for UserRole.unknown" + }, + "@userStatusAtTheOffice": { + "description": "A suggested user status text, 'At the office'." + }, + "@userStatusBusy": { + "description": "A suggested user status text, 'Busy'." + }, + "@userStatusCommuting": { + "description": "A suggested user status text, 'Commuting'." + }, + "@userStatusInAMeeting": { + "description": "A suggested user status text, 'In a meeting'." + }, + "@userStatusOutSick": { + "description": "A suggested user status text, 'Out sick'." + }, + "@userStatusVacationing": { + "description": "A suggested user status text, 'Vacationing'." + }, + "@userStatusWorkingRemotely": { + "description": "A suggested user status text, 'Working remotely'." }, - "wildcardMentionAll": "全部", "@wildcardMentionAll": { "description": "Text for \"@all\" wildcard-mention autocomplete option when writing a channel or DM message." }, - "wildcardMentionEveryone": "所有人", + "@wildcardMentionAllDmDescription": { + "description": "Description for \"@all\" and \"@everyone\" wildcard-mention autocomplete options when writing a DM message." + }, + "@wildcardMentionChannel": { + "description": "Text for \"@channel\" wildcard-mention autocomplete option when writing a channel message." + }, + "@wildcardMentionChannelDescription": { + "description": "Description for \"@all\", \"@everyone\", \"@channel\", and \"@stream\" wildcard-mention autocomplete options when writing a channel message." + }, "@wildcardMentionEveryone": { "description": "Text for \"@everyone\" wildcard-mention autocomplete option when writing a channel or DM message." }, - "wildcardMentionStream": "串流", "@wildcardMentionStream": { "description": "Text for \"@stream\" wildcard-mention autocomplete option when writing a channel message in older servers." }, - "wildcardMentionStreamDescription": "通知串流", "@wildcardMentionStreamDescription": { "description": "Description for \"@all\", \"@everyone\", and \"@stream\" wildcard-mention autocomplete options when writing a channel message in older servers." }, - "wildcardMentionAllDmDescription": "通知收件人", - "@wildcardMentionAllDmDescription": { - "description": "Description for \"@all\" and \"@everyone\" wildcard-mention autocomplete options when writing a DM message." - }, - "messageIsEditedLabel": "已編輯", - "@messageIsEditedLabel": { - "description": "Label for an edited message. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" - }, - "messageIsMovedLabel": "已移動", - "@messageIsMovedLabel": { - "description": "Label for a moved message. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" - }, - "messageNotSentLabel": "訊息未送出", - "@messageNotSentLabel": { - "description": "Text on a message in the message list saying that a send message request failed. (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" - } - } - }, - "openLinksWithInAppBrowser": "使用應用程式內建瀏覽器開啟連結", - "@openLinksWithInAppBrowser": { - "description": "Label for toggling setting to open links with in-app browser" + "@wildcardMentionTopic": { + "description": "Text for \"@topic\" wildcard-mention autocomplete option when writing a channel message." }, - "pollWidgetQuestionMissing": "沒有問題。", - "@pollWidgetQuestionMissing": { - "description": "Text to display for a poll when the question is missing" + "@wildcardMentionTopicDescription": { + "description": "Description for \"@topic\" wildcard-mention autocomplete options when writing a channel message." }, - "pollWidgetOptionsMissing": "此投票尚未有任何選項。", - "@pollWidgetOptionsMissing": { - "description": "Text to display for a poll when it has no options" + "@yesterday": { + "description": "Term to use to reference the previous day." }, - "initialAnchorSettingTitle": "開啟訊息串於", - "@initialAnchorSettingTitle": { - "description": "Title of setting controlling initial anchor of message list." + "@zulipAppTitle": { + "description": "The name of Zulip. This should be either 'Zulip' or a transliteration." }, + "aboutPageAppVersion": "App 版本", + "aboutPageOpenSourceLicenses": "開源授權條款", + "aboutPageTapToView": "點選查看", + "aboutPageTitle": "關於 Zulip", + "actionSheetOptionCopyChannelLink": "複製頻道連結", + "actionSheetOptionCopyMessageLink": "複製訊息連結", + "actionSheetOptionCopyMessageText": "複製訊息文字", + "actionSheetOptionCopyTopicLink": "複製議題的連結", + "actionSheetOptionEditMessage": "編輯訊息", + "actionSheetOptionFollowTopic": "跟隨話題", + "actionSheetOptionHideMutedMessage": "再次隱藏已靜音的話題", + "actionSheetOptionListOfTopics": "議題列表", + "actionSheetOptionMarkAsUnread": "從這裡開始標註為未讀", + "actionSheetOptionMarkChannelAsRead": "標註頻道為已讀", + "actionSheetOptionMarkTopicAsRead": "標註話題為已讀", + "actionSheetOptionMuteTopic": "靜音話題", + "actionSheetOptionQuoteMessage": "引述訊息", + "actionSheetOptionResolveTopic": "標註為已解決", + "actionSheetOptionSeeWhoReacted": "查看誰有回應", + "actionSheetOptionShare": "分享", + "actionSheetOptionStarMessage": "收藏訊息", + "actionSheetOptionUnfollowTopic": "取消跟隨話題", + "actionSheetOptionUnmuteTopic": "取消靜音話題", + "actionSheetOptionUnresolveTopic": "標註為未解決", + "actionSheetOptionUnstarMessage": "取消收藏訊息", + "appVersionUnknownPlaceholder": "(…)", + "channelFeedButtonTooltip": "頻道饋給", + "channelsEmptyPlaceholder": "您尚未訂閱任何頻道。", + "channelsPageTitle": "頻道", + "chooseAccountButtonAddAnAccount": "增添帳號", + "chooseAccountPageLogOutButton": "登出", + "chooseAccountPageTitle": "選取帳號", + "combinedFeedPageTitle": "綜合饋給", + "composeBoxAttachFilesTooltip": "附加檔案", + "composeBoxAttachFromCameraTooltip": "拍照", + "composeBoxAttachMediaTooltip": "附加圖片或影片", + "composeBoxBannerButtonCancel": "取消", + "composeBoxBannerButtonSave": "儲存", + "composeBoxBannerLabelEditMessage": "編輯訊息", + "composeBoxChannelContentHint": "訊息 {destination}", + "composeBoxDmContentHint": "訊息 @{user}", + "composeBoxEnterTopicOrSkipHintText": "輸入議題(留空則使用「{defaultTopicName}」)", + "composeBoxGenericContentHint": "輸入訊息", + "composeBoxGroupDmContentHint": "訊息群組", + "composeBoxLoadingMessage": "(載入訊息 {messageId} 中)", + "composeBoxSelfDmContentHint": "記下些什麼", + "composeBoxSendTooltip": "發送", + "composeBoxTopicHintText": "議題", + "composeBoxUploadingFilename": "正在上傳 {filename}…", + "contentValidationErrorEmpty": "您沒有要發送的內容!", + "contentValidationErrorQuoteAndReplyInProgress": "請等待引述完成。", + "contentValidationErrorTooLong": "訊息長度不應超過 10000 個字元。", + "contentValidationErrorUploadInProgress": "請等待上傳完成。", + "dialogCancel": "取消", + "dialogClose": "關閉", + "dialogContinue": "繼續", + "discardDraftConfirmationDialogConfirmButton": "捨棄", + "discardDraftConfirmationDialogTitle": "要捨棄您正在編寫的訊息嗎?", + "discardDraftForEditConfirmationDialogMessage": "當您編輯訊息時,編輯框中原有的內容將被捨棄。", + "discardDraftForOutboxConfirmationDialogMessage": "當您還原未發送的訊息時,編輯框中原有的內容將被捨棄。", + "dmsWithOthersPageTitle": "與 {others} 的私訊", + "dmsWithYourselfPageTitle": "私訊給自己", + "editAlreadyInProgressMessage": "編輯已在進行中。請等待其完成。", + "editAlreadyInProgressTitle": "無法編輯訊息", + "emojiPickerSearchEmoji": "搜尋表情符號", + "emojiReactionsMore": "更多", + "emptyMessageList": "這裡沒有訊息。", + "emptyMessageListSearch": "沒有搜尋結果。", + "errorAccountLoggedIn": "在 {server} 的帳號 {email} 已經存在帳號清單中。", + "errorAccountLoggedInTitle": "帳號已經登入了", + "errorBannerCannotPostInChannelLabel": "您沒有權限在此頻道發佈訊息。", + "errorBannerDeactivatedDmLabel": "您無法向已停用的使用者發送訊息。", + "errorConnectingToServerDetails": "連接 Zulip {serverUrl} 時發生錯誤。將重試:\n\n{error}", + "errorConnectingToServerShort": "連接 Zulip 時發生錯誤。重試中…", + "errorCopyingFailed": "複製失敗", + "errorCouldNotConnectTitle": "無法連線", + "errorCouldNotEditMessageTitle": "無法編輯訊息", + "errorCouldNotFetchMessageSource": "無法取得訊息來源。", + "errorCouldNotOpenLink": "無法開啟連結: {url}", + "errorCouldNotOpenLinkTitle": "無法開啟連結", + "errorCouldNotShowUserProfile": "無法顯示使用者設定檔。", + "errorDialogContinue": "OK", + "errorDialogLearnMore": "了解更多", + "errorDialogTitle": "錯誤", + "errorFailedToUploadFileTitle": "上傳檔案失敗:{filename}", + "errorFilesTooLarge": "{num, plural, =1{檔案} other{{num} 個檔案}}超過伺服器 {maxFileUploadSizeMib} MiB 的限制,將不會上傳:\n\n{listMessage}", + "errorFilesTooLargeTitle": "{num, plural, =1{檔案} other{檔案}}太大", + "errorFollowTopicFailed": "無法跟隨話題", + "errorHandlingEventDetails": "處理來自 {serverUrl} 的 Zulip 事件時發生錯誤;將重試。\n\n錯誤:{error}\n\n事件:{event}", + "errorHandlingEventTitle": "處理 Zulip 事件時發生錯誤。重新連線中…", + "errorInvalidApiKeyMessage": "您在 {url} 的帳號無法通過驗證。請重新登入或使用其他帳號。", + "errorInvalidResponse": "伺服器傳送了無效的請求。", + "errorLoginCouldNotConnect": "無法連線到伺服器:\n{url}", + "errorLoginFailedTitle": "登入失敗", + "errorLoginInvalidInputTitle": "無效的輸入", + "errorMalformedResponse": "伺服器回傳了格式錯誤的回應;HTTP 狀態碼為 {httpStatus}", + "errorMalformedResponseWithCause": "伺服器回傳了格式錯誤的回應;HTTP 狀態碼為 {httpStatus};{details}", + "errorMarkAsReadFailedTitle": "標記為已讀失敗", + "errorMarkAsUnreadFailedTitle": "標記為未讀失敗", + "errorMessageDoesNotSeemToExist": "該訊息似乎不存在。", + "errorMessageEditNotSaved": "訊息沒有儲存", + "errorMessageNotSent": "訊息沒有送出", + "errorMuteTopicFailed": "無法靜音話題", + "errorNetworkRequestFailed": "網路請求失敗", + "errorNotificationOpenAccountNotFound": "找不到與此通知相關聯的帳號。", + "errorNotificationOpenTitle": "無法開啟通知", + "errorQuotationFailed": "引述失敗", + "errorReactionAddingFailedTitle": "新增表情反應失敗", + "errorReactionRemovingFailedTitle": "移除表情反應失敗", + "errorRequestFailed": "網路請求失敗:HTTP 狀態碼為 {httpStatus}", + "errorResolveTopicFailedTitle": "無法標註話題為已解決", + "errorServerMessage": "伺服器回應:\n\n{message}", + "errorServerVersionUnsupportedMessage": "{url} 執行的 Zulip Server 為 {zulipVersion},此版本已不受支援。最低支援版本為 Zulip Server {minSupportedZulipVersion}。", + "errorSharingFailed": "分享失敗", + "errorStarMessageFailedTitle": "無法收藏訊息", + "errorUnfollowTopicFailed": "無法取消跟隨話題", + "errorUnmuteTopicFailed": "無法取消靜音話題", + "errorUnresolveTopicFailedTitle": "無法標註話題為未解決", + "errorUnstarMessageFailedTitle": "無法取消收藏訊息", + "errorVideoPlayerFailed": "無法播放影片。", + "errorWebAuthOperationalError": "出現了意外的錯誤。", + "errorWebAuthOperationalErrorTitle": "出錯了", + "experimentalFeatureSettingsPageTitle": "實驗性功能", + "experimentalFeatureSettingsWarning": "這些選項啟用的功能仍在開發中,尚未完善。它們可能無法正常運作,且可能導致應用程式其他部分出現問題。\n\n這些設定的目的是供參與 Zulip 開發的人員進行試驗使用。", + "filenameAndSizeInMiB": "{filename}: {size} MiB", + "inboxEmptyPlaceholder": "您的收件匣中沒有未讀訊息。請使用下方按鈕查看整合訊息流或頻道清單。", + "inboxPageTitle": "收件匣", "initialAnchorSettingDescription": "您可以選擇將訊息串開啟在第一則未讀訊息,或是最新的訊息。", - "@initialAnchorSettingDescription": { - "description": "Description of setting controlling initial anchor of message list." - }, + "initialAnchorSettingFirstUnreadAlways": "第一則未讀訊息", "initialAnchorSettingFirstUnreadConversations": "在對話檢視中開啟第一則未讀訊息,其餘情況則開啟最新訊息", - "@initialAnchorSettingFirstUnreadConversations": { - "description": "Label for a value of setting controlling initial anchor of message list." - }, - "markReadOnScrollSettingTitle": "捲動時將訊息標記為已讀", - "@markReadOnScrollSettingTitle": { - "description": "Title of setting controlling which message-list views should mark read on scroll." - }, - "markReadOnScrollSettingDescription": "在捲動瀏覽訊息時,是否要自動將其標記為已讀?", - "@markReadOnScrollSettingDescription": { - "description": "Description of setting controlling which message-list views should mark read on scroll." - }, + "initialAnchorSettingNewestAlways": "最新訊息", + "initialAnchorSettingTitle": "開啟訊息串於", + "invisibleMode": "隱身模式", + "lightboxCopyLinkTooltip": "複製連結", + "lightboxVideoCurrentPosition": "目前位置", + "lightboxVideoDuration": "影片長度", + "logOutConfirmationDialogConfirmButton": "登出", + "logOutConfirmationDialogMessage": "要在未來使用此帳號,您將需要重新輸入您組織的網址和您的帳號資訊。", + "logOutConfirmationDialogTitle": "登出?", + "loginAddAnAccountPageTitle": "增添帳號", + "loginEmailLabel": "電子郵件地址", + "loginErrorMissingEmail": "請輸入您的電子郵件地址。", + "loginErrorMissingPassword": "請輸入您的密碼。", + "loginErrorMissingUsername": "請輸入您的使用者名稱。", + "loginFormSubmitLabel": "登入", + "loginHidePassword": "隱藏密碼", + "loginMethodDivider": "或", + "loginPageTitle": "登入", + "loginPasswordLabel": "密碼", + "loginServerUrlLabel": "您的 Zulip 伺服器網址", + "loginUsernameLabel": "使用者名稱", + "mainMenuMyProfile": "我的設定檔", + "manyPeopleTyping": "有些人正在輸入…", + "markAllAsReadLabel": "標註所有訊息為已讀", + "markAsReadComplete": "已標為已讀:{num, plural, =1{1 則訊息} other{{num} 則訊息}}。", + "markAsReadInProgress": "正在標記訊息為已讀…", + "markAsUnreadComplete": "已標為未讀:{num, plural, =1{1 則訊息} other{{num} 則訊息}}。", + "markAsUnreadInProgress": "正在標註訊息為未讀…", "markReadOnScrollSettingAlways": "總是", - "@markReadOnScrollSettingAlways": { - "description": "Label for a value of setting controlling which message-list views should mark read on scroll." - } + "markReadOnScrollSettingConversations": "僅在對話檢視中", + "markReadOnScrollSettingConversationsDescription": "只有在查看單一議題或私人訊息對話時,訊息才會自動標記為已讀。", + "markReadOnScrollSettingDescription": "在捲動瀏覽訊息時,是否要自動將其標記為已讀?", + "markReadOnScrollSettingNever": "從不", + "markReadOnScrollSettingTitle": "捲動時將訊息標記為已讀", + "mentionsPageTitle": "提及", + "messageIsEditedLabel": "已編輯", + "messageIsMovedLabel": "已移動", + "messageListGroupYouAndOthers": "您與 {others}", + "messageListGroupYouWithYourself": "與自己的訊息", + "messageNotSentLabel": "訊息未送出", + "mutedUser": "已靜音的使用者", + "newDmFabButtonLabel": "新增私訊", + "newDmSheetComposeButtonLabel": "編寫", + "newDmSheetNoUsersFound": "找不到使用者", + "newDmSheetScreenTitle": "新增私訊", + "newDmSheetSearchHintEmpty": "增添一個或多個使用者", + "newDmSheetSearchHintSomeSelected": "增添其他使用者…", + "noEarlierMessages": "沒有更早的訊息", + "noStatusText": "無狀態文字", + "notifGroupDmConversationLabel": "{senderFullName} 傳送給您和 {numOthers, plural, =1{1 位其他對象、} other{{numOthers} 位其他對象}}", + "notifSelfUser": "您", + "onePersonTyping": "{typist} 正在輸入…", + "openLinksWithInAppBrowser": "使用應用程式內建瀏覽器開啟連結", + "permissionsDeniedCameraAccess": "要上傳圖片,請在設定中授予 Zulip 額外權限。", + "permissionsDeniedReadExternalStorage": "要上傳檔案,請在設定中授予 Zulip 額外權限。", + "permissionsNeededOpenSettings": "開啟設定", + "permissionsNeededTitle": "需要的權限", + "pinnedSubscriptionsLabel": "已釘選", + "pollVoterNames": "({voterNames})", + "pollWidgetOptionsMissing": "此投票尚未有任何選項。", + "pollWidgetQuestionMissing": "沒有問題。", + "preparingEditMessageContentInput": "準備中…", + "profileButtonSendDirectMessage": "發送私訊", + "reactedEmojiSelfUser": "您", + "reactionChipLabel": "{emojiName}: {votes}", + "reactionChipVotesYouAndOthers": "{otherUsersCount, plural, =1 {你與其他 1 人} other {你與其他 {otherUsersCount} 人}}", + "reactionChipsLabel": "反應", + "recentDmConversationsEmptyPlaceholder": "您尚未有任何私人訊息!不如開始一段對話吧?", + "recentDmConversationsPageTitle": "私人訊息", + "recentDmConversationsSectionHeader": "私人訊息", + "revealButtonLabel": "顯示訊息", + "savingMessageEditFailedLabel": "編輯未儲存", + "savingMessageEditLabel": "儲存編輯中…", + "scrollToBottomTooltip": "捲動至底部", + "searchMessagesClearButtonTooltip": "清除", + "searchMessagesHintText": "搜尋", + "searchMessagesPageTitle": "搜尋", + "seeWhoReactedSheetEmojiNameWithVoteCount": "{emojiName}:{num, plural, =1 {1 票} other {{num} 票}}", + "seeWhoReactedSheetHeaderLabel": "表情符號回應 (共 {num} 個)", + "seeWhoReactedSheetNoReactions": "此訊息尚無任何回應。", + "seeWhoReactedSheetUserListLabel": "{emojiName} 的投票數({num})", + "serverUrlValidationErrorEmpty": "請輸入網址。", + "serverUrlValidationErrorInvalidUrl": "請輸入有效的網址。", + "serverUrlValidationErrorNoUseEmail": "請輸入伺服器網址,而非您的電子郵件。", + "serverUrlValidationErrorUnsupportedScheme": "伺服器 URL 必須以 http:// 或 https:// 開頭。", + "setStatusPageTitle": "設定狀態", + "settingsPageTitle": "設定", + "signInWithFoo": "使用 {method} 登入", + "snackBarDetails": "詳細資訊", + "spoilerDefaultHeaderText": "劇透", + "starredMessagesPageTitle": "已加星號的訊息", + "statusButtonLabelStatusSet": "狀態", + "statusButtonLabelStatusUnset": "設定狀態", + "statusClearButtonLabel": "清除", + "statusSaveButtonLabel": "儲存", + "statusTextHint": "您的狀態", + "successChannelLinkCopied": "頻道連結已複製", + "successLinkCopied": "已複製連結", + "successMessageLinkCopied": "已複製訊息連結", + "successMessageTextCopied": "已複製訊息文字", + "successTopicLinkCopied": "議題連結已複製", + "switchAccountButton": "切換帳號", + "themeSettingDark": "深色主題", + "themeSettingLight": "淺色主題", + "themeSettingSystem": "系統主題", + "themeSettingTitle": "主題", + "today": "今天", + "topicValidationErrorMandatoryButEmpty": "此組織要求必須填寫議題。", + "topicValidationErrorTooLong": "議題長度不得超過 60 個字元。", + "topicsButtonTooltip": "話題", + "tryAnotherAccountButton": "請嘗試別的帳號", + "tryAnotherAccountMessage": "您在 {url} 的帳號載入的比較久。", + "turnOffInvisibleModeErrorTitle": "關閉隱身模式時發生錯誤。請再試一次。", + "turnOnInvisibleModeErrorTitle": "啟用隱身模式時發生錯誤。請再試一次。", + "twoPeopleTyping": "{typist} 和 {otherTypist} 正在輸入…", + "unknownChannelName": "(未知頻道)", + "unknownUserName": "(未知使用者)", + "unpinnedSubscriptionsLabel": "未釘選", + "updateStatusErrorTitle": "更新使用者狀態時發生錯誤。請再試一次。", + "upgradeWelcomeDialogDismiss": "開始吧", + "upgradeWelcomeDialogLinkText": "查看公告部落格文章!", + "upgradeWelcomeDialogMessage": "您將在更快、更流暢的版本中享受熟悉的體驗。", + "upgradeWelcomeDialogTitle": "歡迎使用新 Zulip 應用程式!", + "userRoleAdministrator": "管理員", + "userRoleGuest": "訪客", + "userRoleMember": "成員", + "userRoleModerator": "版主", + "userRoleOwner": "擁有者", + "userRoleUnknown": "未知", + "userStatusAtTheOffice": "在辦公室", + "userStatusBusy": "忙碌", + "userStatusCommuting": "通勤中", + "userStatusInAMeeting": "會議中", + "userStatusOutSick": "請病假", + "userStatusVacationing": "休假中", + "userStatusWorkingRemotely": "遠端工作中", + "wildcardMentionAll": "全部", + "wildcardMentionAllDmDescription": "通知收件人", + "wildcardMentionChannel": "頻道", + "wildcardMentionChannelDescription": "通知頻道", + "wildcardMentionEveryone": "所有人", + "wildcardMentionStream": "串流", + "wildcardMentionStreamDescription": "通知串流", + "wildcardMentionTopic": "議題", + "wildcardMentionTopicDescription": "通知話題", + "yesterday": "昨天", + "zulipAppTitle": "Zulip" } diff --git a/lib/generated/l10n/zulip_localizations_fr.dart b/lib/generated/l10n/zulip_localizations_fr.dart index 5a922da313..f5278ad0ca 100644 --- a/lib/generated/l10n/zulip_localizations_fr.dart +++ b/lib/generated/l10n/zulip_localizations_fr.dart @@ -9,117 +9,120 @@ class ZulipLocalizationsFr extends ZulipLocalizations { ZulipLocalizationsFr([String locale = 'fr']) : super(locale); @override - String get aboutPageTitle => 'About Zulip'; + String get aboutPageTitle => 'À propos de Zulip'; @override - String get aboutPageAppVersion => 'App version'; + String get aboutPageAppVersion => 'Version de l\'application'; @override - String get aboutPageOpenSourceLicenses => 'Open-source licenses'; + String get aboutPageOpenSourceLicenses => 'Licences de logiciel libre'; @override - String get aboutPageTapToView => 'Tap to view'; + String get aboutPageTapToView => 'Toucher pour voir'; @override - String get upgradeWelcomeDialogTitle => 'Welcome to the new Zulip app!'; + String get upgradeWelcomeDialogTitle => + 'Bienvenue dans la nouvelle application Zulip !'; @override String get upgradeWelcomeDialogMessage => - 'You’ll find a familiar experience in a faster, sleeker package.'; + 'Vous retrouverez une expérience familière dans un logiciel plus rapide et plus élégant.'; @override String get upgradeWelcomeDialogLinkText => - 'Check out the announcement blog post!'; + 'Allez voir les articles sur le blog des annonces !'; @override - String get upgradeWelcomeDialogDismiss => 'Let\'s go'; + String get upgradeWelcomeDialogDismiss => 'Allons-y'; @override - String get chooseAccountPageTitle => 'Choose account'; + String get chooseAccountPageTitle => 'Choisir un compte'; @override - String get settingsPageTitle => 'Settings'; + String get settingsPageTitle => 'Paramètres'; @override - String get switchAccountButton => 'Switch account'; + String get switchAccountButton => 'Changer de compte'; @override String tryAnotherAccountMessage(Object url) { - return 'Your account at $url is taking a while to load.'; + return 'Votre compte à $url prend du temps à se charger.'; } @override - String get tryAnotherAccountButton => 'Try another account'; + String get tryAnotherAccountButton => 'Essayer un autre compte'; @override - String get chooseAccountPageLogOutButton => 'Log out'; + String get chooseAccountPageLogOutButton => 'Déconnexion'; @override - String get logOutConfirmationDialogTitle => 'Log out?'; + String get logOutConfirmationDialogTitle => 'Se déconnecter?'; @override String get logOutConfirmationDialogMessage => - 'To use this account in the future, you will have to re-enter the URL for your organization and your account information.'; + 'Pour utiliser ce compte à l\'avenir, vous devrez ré-entrer l\'adresse pour votre organisation et les informations de votre compte.'; @override - String get logOutConfirmationDialogConfirmButton => 'Log out'; + String get logOutConfirmationDialogConfirmButton => 'Déconnexion'; @override - String get chooseAccountButtonAddAnAccount => 'Add an account'; + String get chooseAccountButtonAddAnAccount => 'Ajouter un compte'; @override - String get profileButtonSendDirectMessage => 'Send direct message'; + String get profileButtonSendDirectMessage => 'Envoyer un message direct'; @override - String get errorCouldNotShowUserProfile => 'Could not show user profile.'; + String get errorCouldNotShowUserProfile => + 'Impossible de montrer le profil de l\'utilisateur.'; @override - String get permissionsNeededTitle => 'Permissions needed'; + String get permissionsNeededTitle => 'Permissions requises'; @override - String get permissionsNeededOpenSettings => 'Open settings'; + String get permissionsNeededOpenSettings => 'Ouvrir les préférences'; @override String get permissionsDeniedCameraAccess => - 'To upload an image, please grant Zulip additional permissions in Settings.'; + 'Pour charger une image, merci d\'accorder des autorisations supplémentaires à Zulip, dans les préférences.'; @override String get permissionsDeniedReadExternalStorage => - 'To upload files, please grant Zulip additional permissions in Settings.'; + 'Pour charger des fichiers, merci d\'accorder des autorisations supplémentaires à Zulip, dans les préférences.'; @override - String get actionSheetOptionMarkChannelAsRead => 'Mark channel as read'; + String get actionSheetOptionMarkChannelAsRead => 'Marquer le canal comme lu'; @override - String get actionSheetOptionCopyChannelLink => 'Copy link to channel'; + String get actionSheetOptionCopyChannelLink => 'Copier le lien du canal'; @override - String get actionSheetOptionListOfTopics => 'List of topics'; + String get actionSheetOptionListOfTopics => 'Liste des sujets'; @override - String get actionSheetOptionMuteTopic => 'Mute topic'; + String get actionSheetOptionMuteTopic => 'Rendre le sujet silencieux'; @override - String get actionSheetOptionUnmuteTopic => 'Unmute topic'; + String get actionSheetOptionUnmuteTopic => 'Rendre le sujet non silencieux'; @override - String get actionSheetOptionFollowTopic => 'Follow topic'; + String get actionSheetOptionFollowTopic => 'Suivre le sujet'; @override - String get actionSheetOptionUnfollowTopic => 'Unfollow topic'; + String get actionSheetOptionUnfollowTopic => 'Ne plus suivre le sujet'; @override - String get actionSheetOptionResolveTopic => 'Mark as resolved'; + String get actionSheetOptionResolveTopic => 'Marquer comme résolu'; @override - String get actionSheetOptionUnresolveTopic => 'Mark as unresolved'; + String get actionSheetOptionUnresolveTopic => 'Marquer comme non résolu'; @override - String get errorResolveTopicFailedTitle => 'Failed to mark topic as resolved'; + String get errorResolveTopicFailedTitle => + 'Impossible de marquer le sujet comme résolu'; @override String get errorUnresolveTopicFailedTitle => - 'Failed to mark topic as unresolved'; + 'Impossible de marquer le sujet comme non résolu'; @override String get actionSheetOptionSeeWhoReacted => 'See who reacted'; @@ -149,67 +152,71 @@ class ZulipLocalizationsFr extends ZulipLocalizations { } @override - String get actionSheetOptionCopyMessageText => 'Copy message text'; + String get actionSheetOptionCopyMessageText => 'Copier le contenu du message'; @override - String get actionSheetOptionCopyMessageLink => 'Copy link to message'; + String get actionSheetOptionCopyMessageLink => 'Copier le lien au message'; @override - String get actionSheetOptionMarkAsUnread => 'Mark as unread from here'; + String get actionSheetOptionMarkAsUnread => 'Marquer non lu à partir d\'ici'; @override - String get actionSheetOptionHideMutedMessage => 'Hide muted message again'; + String get actionSheetOptionHideMutedMessage => + 'Cacher à nouveau le message silencieux'; @override - String get actionSheetOptionShare => 'Share'; + String get actionSheetOptionShare => 'Partager'; @override - String get actionSheetOptionQuoteMessage => 'Quote message'; + String get actionSheetOptionQuoteMessage => 'Citer le message'; @override - String get actionSheetOptionStarMessage => 'Star message'; + String get actionSheetOptionStarMessage => 'Mettre le message en favori'; @override - String get actionSheetOptionUnstarMessage => 'Unstar message'; + String get actionSheetOptionUnstarMessage => + 'Retirer ce message de la liste des favoris'; @override - String get actionSheetOptionEditMessage => 'Edit message'; + String get actionSheetOptionEditMessage => 'Modifier le message'; @override - String get actionSheetOptionMarkTopicAsRead => 'Mark topic as read'; + String get actionSheetOptionMarkTopicAsRead => 'Marquer le sujet comme lu'; @override - String get actionSheetOptionCopyTopicLink => 'Copy link to topic'; + String get actionSheetOptionCopyTopicLink => 'Copier le lien sur le sujet'; @override - String get errorWebAuthOperationalErrorTitle => 'Something went wrong'; + String get errorWebAuthOperationalErrorTitle => 'Une erreur s\'est produite'; @override - String get errorWebAuthOperationalError => 'An unexpected error occurred.'; + String get errorWebAuthOperationalError => + 'Oups, une erreur s\'est produite.'; @override - String get errorAccountLoggedInTitle => 'Account already logged in'; + String get errorAccountLoggedInTitle => + 'Vous êtes déjà connecté à ce compte.'; @override String errorAccountLoggedIn(String email, String server) { - return 'The account $email at $server is already in your list of accounts.'; + return 'Le compte $email at $server figure déjà dans votre liste de comptes.'; } @override String get errorCouldNotFetchMessageSource => - 'Could not fetch message source.'; + 'Impossible d\'atteindre le message source.'; @override - String get errorCopyingFailed => 'Copying failed'; + String get errorCopyingFailed => 'Échec de la copie'; @override String errorFailedToUploadFileTitle(String filename) { - return 'Failed to upload file: $filename'; + return 'Impossible de charger le fichier $filename'; } @override String filenameAndSizeInMiB(String filename, String size) { - return '$filename: $size MiB'; + return '$filename : $size MiB'; } @override @@ -221,10 +228,10 @@ class ZulipLocalizationsFr extends ZulipLocalizations { String _temp0 = intl.Intl.pluralLogic( num, locale: localeName, - other: '$num files are', - one: 'File is', + other: '$num fichiers sont', + one: 'Fichier est', ); - return '$_temp0 larger than the server\'s limit of $maxFileUploadSizeMib MiB and will not be uploaded:\n\n$listMessage'; + return '$_temp0 plus gros que la limite de capacité du serveur ($maxFileUploadSizeMib MO) et ne peu(ven)t pas être chargé(s) :\n\n$listMessage'; } @override @@ -232,56 +239,57 @@ class ZulipLocalizationsFr extends ZulipLocalizations { String _temp0 = intl.Intl.pluralLogic( num, locale: localeName, - other: 'Files', - one: 'File', + other: 'Les fichier sont trop lourds', + one: 'Le fichier est trop lourd', ); - return '$_temp0 too large'; + return '$_temp0'; } @override - String get errorLoginInvalidInputTitle => 'Invalid input'; + String get errorLoginInvalidInputTitle => 'Identifiant incorrect'; @override - String get errorLoginFailedTitle => 'Login failed'; + String get errorLoginFailedTitle => 'La connexion a échoué.'; @override - String get errorMessageNotSent => 'Message not sent'; + String get errorMessageNotSent => 'Le message n\'a pas pu être envoyé.'; @override - String get errorMessageEditNotSaved => 'Message not saved'; + String get errorMessageEditNotSaved => + 'Le message n\'a pas pu être sauvegardé.'; @override String errorLoginCouldNotConnect(String url) { - return 'Failed to connect to server:\n$url'; + return 'La connexion au serveur a échoué :\n$url'; } @override - String get errorCouldNotConnectTitle => 'Could not connect'; + String get errorCouldNotConnectTitle => + 'Impossible de se connecter au serveur'; @override - String get errorMessageDoesNotSeemToExist => - 'That message does not seem to exist.'; + String get errorMessageDoesNotSeemToExist => 'Ce message est introuvable.'; @override - String get errorQuotationFailed => 'Quotation failed'; + String get errorQuotationFailed => 'Échec de la citation'; @override String errorServerMessage(String message) { - return 'The server said:\n\n$message'; + return 'Message d\'erreur du serveur :\n\n$message'; } @override String get errorConnectingToServerShort => - 'Error connecting to Zulip. Retrying…'; + 'Une erreur s\'est produite lors de la connexion au serveur. Nouvelle tentative en cours…'; @override String errorConnectingToServerDetails(String serverUrl, String error) { - return 'Error connecting to Zulip at $serverUrl. Will retry:\n\n$error'; + return 'Une erreur s\'est produite lors de la connexion à Zulip sur $serverUrl. Nouvelle tentative imminente :\n\n$error'; } @override String get errorHandlingEventTitle => - 'Error handling a Zulip event. Retrying connection…'; + 'Une erreur s\'est produite sur le serveur. Reconnexion en cours…'; @override String errorHandlingEventDetails( @@ -289,79 +297,85 @@ class ZulipLocalizationsFr extends ZulipLocalizations { String error, String event, ) { - return 'Error handling a Zulip event from $serverUrl; will retry.\n\nError: $error\n\nEvent: $event'; + return 'Une erreur s\'est produite sur le serveur $serverUrl ; tentative de reconnexion imminente.\n\nErreur : $error\n\nÉvénement : $event'; } @override - String get errorCouldNotOpenLinkTitle => 'Unable to open link'; + String get errorCouldNotOpenLinkTitle => 'Impossible d\'ouvrir le lien'; @override String errorCouldNotOpenLink(String url) { - return 'Link could not be opened: $url'; + return 'Le lien suivant n\'a pas pu être ouvert : $url'; } @override - String get errorMuteTopicFailed => 'Failed to mute topic'; + String get errorMuteTopicFailed => + 'Le sujet n\'a pas pu être rendu silencieux'; @override - String get errorUnmuteTopicFailed => 'Failed to unmute topic'; + String get errorUnmuteTopicFailed => + 'Impossible de ne plus mettre le sujet en sourdine'; @override - String get errorFollowTopicFailed => 'Failed to follow topic'; + String get errorFollowTopicFailed => 'Échec du suivi du sujet'; @override - String get errorUnfollowTopicFailed => 'Failed to unfollow topic'; + String get errorUnfollowTopicFailed => + 'Échec de la tentative de ne plus suivre le sujet'; @override - String get errorSharingFailed => 'Sharing failed'; + String get errorSharingFailed => 'Échec du partage'; @override - String get errorStarMessageFailedTitle => 'Failed to star message'; + String get errorStarMessageFailedTitle => + 'Échec de marquage du message en favori'; @override - String get errorUnstarMessageFailedTitle => 'Failed to unstar message'; + String get errorUnstarMessageFailedTitle => + 'Échec de la tentative d\'enlever le message des favoris'; @override - String get errorCouldNotEditMessageTitle => 'Could not edit message'; + String get errorCouldNotEditMessageTitle => + 'Le message n\'a pas pu être modifié'; @override - String get successLinkCopied => 'Link copied'; + String get successLinkCopied => 'Lien copié'; @override - String get successMessageTextCopied => 'Message text copied'; + String get successMessageTextCopied => 'Texte du message copié'; @override - String get successMessageLinkCopied => 'Message link copied'; + String get successMessageLinkCopied => 'Lien sur le message copié'; @override - String get successTopicLinkCopied => 'Topic link copied'; + String get successTopicLinkCopied => 'Lien sur le sujet copié'; @override - String get successChannelLinkCopied => 'Channel link copied'; + String get successChannelLinkCopied => 'Lien sur le canal copié'; @override String get errorBannerDeactivatedDmLabel => - 'You cannot send messages to deactivated users.'; + 'Vous ne pouvez pas envoyer de messages aux utilisateurs désactivés.'; @override String get errorBannerCannotPostInChannelLabel => - 'You do not have permission to post in this channel.'; + 'Vous n\'avez pas l\'autorisation de poster sur ce canal.'; @override - String get composeBoxBannerLabelEditMessage => 'Edit message'; + String get composeBoxBannerLabelEditMessage => 'Editer le message'; @override - String get composeBoxBannerButtonCancel => 'Cancel'; + String get composeBoxBannerButtonCancel => 'Annuler'; @override - String get composeBoxBannerButtonSave => 'Save'; + String get composeBoxBannerButtonSave => 'Sauvegarder'; @override - String get editAlreadyInProgressTitle => 'Cannot edit message'; + String get editAlreadyInProgressTitle => 'Impossible de modifier le message'; @override String get editAlreadyInProgressMessage => - 'An edit is already in progress. Please wait for it to complete.'; + 'Une modification est déjà en cours. Merci d\'attendre qu\'elle soit terminée.'; @override String get savingMessageEditLabel => 'SAVING EDIT…'; diff --git a/lib/generated/l10n/zulip_localizations_pl.dart b/lib/generated/l10n/zulip_localizations_pl.dart index c675e00354..4427bff4d1 100644 --- a/lib/generated/l10n/zulip_localizations_pl.dart +++ b/lib/generated/l10n/zulip_localizations_pl.dart @@ -93,7 +93,7 @@ class ZulipLocalizationsPl extends ZulipLocalizations { 'Oznacz kanał jako przeczytany'; @override - String get actionSheetOptionCopyChannelLink => 'Copy link to channel'; + String get actionSheetOptionCopyChannelLink => 'Skopiuj odnośnik do kanału'; @override String get actionSheetOptionListOfTopics => 'Lista wątków'; @@ -125,14 +125,14 @@ class ZulipLocalizationsPl extends ZulipLocalizations { 'Nie udało się oznaczyć brak rozwiązania'; @override - String get actionSheetOptionSeeWhoReacted => 'See who reacted'; + String get actionSheetOptionSeeWhoReacted => 'Pokaż kto zareagował'; @override - String get seeWhoReactedSheetNoReactions => 'This message has no reactions.'; + String get seeWhoReactedSheetNoReactions => 'Brak reakcji na tę wiadomość.'; @override String seeWhoReactedSheetHeaderLabel(int num) { - return 'Emoji reactions ($num total)'; + return 'Reakcje emoji (łącznie $num)'; } @override @@ -140,15 +140,15 @@ class ZulipLocalizationsPl extends ZulipLocalizations { String _temp0 = intl.Intl.pluralLogic( num, locale: localeName, - other: '$num votes', - one: '1 vote', + other: '$num głosów', + one: '1 głos', ); return '$emojiName: $_temp0'; } @override String seeWhoReactedSheetUserListLabel(String emojiName, int num) { - return 'Votes for $emojiName ($num)'; + return 'Głosów $emojiName ($num)'; } @override @@ -186,7 +186,7 @@ class ZulipLocalizationsPl extends ZulipLocalizations { 'Oznacz wątek jako przeczytany'; @override - String get actionSheetOptionCopyTopicLink => 'Copy link to topic'; + String get actionSheetOptionCopyTopicLink => 'Skopiuj odnośnik do wątku'; @override String get errorWebAuthOperationalErrorTitle => 'Coś poszło nie tak'; @@ -342,10 +342,10 @@ class ZulipLocalizationsPl extends ZulipLocalizations { String get successMessageLinkCopied => 'Skopiowano odnośnik wiadomości'; @override - String get successTopicLinkCopied => 'Topic link copied'; + String get successTopicLinkCopied => 'Skopiowano odnośnik do wątku'; @override - String get successChannelLinkCopied => 'Channel link copied'; + String get successChannelLinkCopied => 'Skopiowano odnośnik do kanału'; @override String get errorBannerDeactivatedDmLabel => @@ -715,50 +715,50 @@ class ZulipLocalizationsPl extends ZulipLocalizations { String get userRoleUnknown => 'Nieznany'; @override - String get statusButtonLabelStatusSet => 'Status'; + String get statusButtonLabelStatusSet => 'Stan'; @override - String get statusButtonLabelStatusUnset => 'Set status'; + String get statusButtonLabelStatusUnset => 'Ustaw stan'; @override - String get noStatusText => 'No status text'; + String get noStatusText => 'Brak tekstu stanu'; @override - String get setStatusPageTitle => 'Set status'; + String get setStatusPageTitle => 'Ustaw stan'; @override - String get statusClearButtonLabel => 'Clear'; + String get statusClearButtonLabel => 'Wyczyść'; @override - String get statusSaveButtonLabel => 'Save'; + String get statusSaveButtonLabel => 'Zapisz'; @override - String get statusTextHint => 'Your status'; + String get statusTextHint => 'Twój stan'; @override - String get userStatusBusy => 'Busy'; + String get userStatusBusy => 'Zajęty'; @override - String get userStatusInAMeeting => 'In a meeting'; + String get userStatusInAMeeting => 'Na spotkaniu'; @override - String get userStatusCommuting => 'Commuting'; + String get userStatusCommuting => 'W drodze'; @override - String get userStatusOutSick => 'Out sick'; + String get userStatusOutSick => 'Chorobowe'; @override - String get userStatusVacationing => 'Vacationing'; + String get userStatusVacationing => 'Na urlopie'; @override - String get userStatusWorkingRemotely => 'Working remotely'; + String get userStatusWorkingRemotely => 'Praca zdalna'; @override - String get userStatusAtTheOffice => 'At the office'; + String get userStatusAtTheOffice => 'W biurze'; @override String get updateStatusErrorTitle => - 'Error updating user status. Please try again.'; + 'Błąd aktualizacji stanu. Spróbuj ponownie.'; @override String get searchMessagesPageTitle => 'Szukaj'; @@ -834,7 +834,7 @@ class ZulipLocalizationsPl extends ZulipLocalizations { String get reactedEmojiSelfUser => 'Ty'; @override - String get reactionChipsLabel => 'Reactions'; + String get reactionChipsLabel => 'Reakcje'; @override String reactionChipLabel(String emojiName, String votes) { @@ -846,8 +846,8 @@ class ZulipLocalizationsPl extends ZulipLocalizations { String _temp0 = intl.Intl.pluralLogic( otherUsersCount, locale: localeName, - other: 'You and $otherUsersCount others', - one: 'You and 1 other', + other: 'Ty i $otherUsersCount innych', + one: 'Ty i 1 inny', ); return '$_temp0'; } diff --git a/lib/generated/l10n/zulip_localizations_ru.dart b/lib/generated/l10n/zulip_localizations_ru.dart index 655a2a07db..b60e43097c 100644 --- a/lib/generated/l10n/zulip_localizations_ru.dart +++ b/lib/generated/l10n/zulip_localizations_ru.dart @@ -93,7 +93,7 @@ class ZulipLocalizationsRu extends ZulipLocalizations { 'Отметить канал как прочитанный'; @override - String get actionSheetOptionCopyChannelLink => 'Copy link to channel'; + String get actionSheetOptionCopyChannelLink => 'Скопировать ссылку на канал'; @override String get actionSheetOptionListOfTopics => 'Список тем'; @@ -125,14 +125,14 @@ class ZulipLocalizationsRu extends ZulipLocalizations { 'Не удалось отметить тему как нерешенную'; @override - String get actionSheetOptionSeeWhoReacted => 'See who reacted'; + String get actionSheetOptionSeeWhoReacted => 'Посмотреть отреагировавших'; @override - String get seeWhoReactedSheetNoReactions => 'This message has no reactions.'; + String get seeWhoReactedSheetNoReactions => 'На это сообщение нет реакций.'; @override String seeWhoReactedSheetHeaderLabel(int num) { - return 'Emoji reactions ($num total)'; + return 'Эмодзи-реакции (всего: $num)'; } @override @@ -140,15 +140,17 @@ class ZulipLocalizationsRu extends ZulipLocalizations { String _temp0 = intl.Intl.pluralLogic( num, locale: localeName, - other: '$num votes', - one: '1 vote', + other: '$num голосов', + many: '$num голосов', + few: '$num голоса', + one: '1 голос', ); return '$emojiName: $_temp0'; } @override String seeWhoReactedSheetUserListLabel(String emojiName, int num) { - return 'Votes for $emojiName ($num)'; + return 'Голоса за $emojiName ($num)'; } @override @@ -186,7 +188,7 @@ class ZulipLocalizationsRu extends ZulipLocalizations { 'Отметить тему как прочитанную'; @override - String get actionSheetOptionCopyTopicLink => 'Copy link to topic'; + String get actionSheetOptionCopyTopicLink => 'Скопировать ссылку на тему'; @override String get errorWebAuthOperationalErrorTitle => 'Что-то пошло не так'; @@ -343,10 +345,10 @@ class ZulipLocalizationsRu extends ZulipLocalizations { String get successMessageLinkCopied => 'Ссылка на сообщение скопирована'; @override - String get successTopicLinkCopied => 'Topic link copied'; + String get successTopicLinkCopied => 'Ссылка на тему скопирована'; @override - String get successChannelLinkCopied => 'Channel link copied'; + String get successChannelLinkCopied => 'Ссылка на канал скопирована'; @override String get errorBannerDeactivatedDmLabel => @@ -418,7 +420,7 @@ class ZulipLocalizationsRu extends ZulipLocalizations { String get newDmSheetSearchHintEmpty => 'Добавить пользователей'; @override - String get newDmSheetSearchHintSomeSelected => 'Добавить еще…'; + String get newDmSheetSearchHintSomeSelected => 'Добавить ещё…'; @override String get newDmSheetNoUsersFound => 'Никто не найден'; @@ -598,7 +600,7 @@ class ZulipLocalizationsRu extends ZulipLocalizations { @override String errorInvalidApiKeyMessage(String url) { - return 'Не удалось войти в вашу учетную запись $url. Попробуйте еще раз или используйте другую учетную запись.'; + return 'Не удалось войти в вашу учётную запись $url. Попробуйте ещё раз или используйте другую учётную запись.'; } @override @@ -651,8 +653,8 @@ class ZulipLocalizationsRu extends ZulipLocalizations { String _temp0 = intl.Intl.pluralLogic( num, locale: localeName, - other: '$num шт. сообщений', - one: '1 сообщения', + other: '$num сообщений', + one: '$num сообщения', ); return 'Отметка прочтения установлена для $_temp0.'; } @@ -669,8 +671,8 @@ class ZulipLocalizationsRu extends ZulipLocalizations { String _temp0 = intl.Intl.pluralLogic( num, locale: localeName, - other: '$num шт. сообщений', - one: '1 сообщения', + other: '$num сообщений', + one: '$num сообщения', ); return 'Отметка прочтения снята для $_temp0.'; } @@ -718,50 +720,50 @@ class ZulipLocalizationsRu extends ZulipLocalizations { String get userRoleUnknown => 'Неизвестно'; @override - String get statusButtonLabelStatusSet => 'Status'; + String get statusButtonLabelStatusSet => 'Статус'; @override - String get statusButtonLabelStatusUnset => 'Set status'; + String get statusButtonLabelStatusUnset => 'Установить статус'; @override - String get noStatusText => 'No status text'; + String get noStatusText => 'Нет текста статуса'; @override - String get setStatusPageTitle => 'Set status'; + String get setStatusPageTitle => 'Установить статус'; @override - String get statusClearButtonLabel => 'Clear'; + String get statusClearButtonLabel => 'Очистить'; @override - String get statusSaveButtonLabel => 'Save'; + String get statusSaveButtonLabel => 'Сохранить'; @override - String get statusTextHint => 'Your status'; + String get statusTextHint => 'Ваш статус'; @override - String get userStatusBusy => 'Busy'; + String get userStatusBusy => 'Занят/а'; @override - String get userStatusInAMeeting => 'In a meeting'; + String get userStatusInAMeeting => 'На встрече'; @override - String get userStatusCommuting => 'Commuting'; + String get userStatusCommuting => 'В дороге'; @override - String get userStatusOutSick => 'Out sick'; + String get userStatusOutSick => 'Болею'; @override - String get userStatusVacationing => 'Vacationing'; + String get userStatusVacationing => 'В отпуске'; @override - String get userStatusWorkingRemotely => 'Working remotely'; + String get userStatusWorkingRemotely => 'Работаю дистанционно'; @override - String get userStatusAtTheOffice => 'At the office'; + String get userStatusAtTheOffice => 'В офисе'; @override String get updateStatusErrorTitle => - 'Error updating user status. Please try again.'; + 'Ошибка обновления статуса пользователя. Попробуйте ещё раз.'; @override String get searchMessagesPageTitle => 'Поиск'; @@ -803,7 +805,7 @@ class ZulipLocalizationsRu extends ZulipLocalizations { @override String get channelsEmptyPlaceholder => - 'Вы еще не подписаны ни на один канал.'; + 'Вы ещё не подписаны ни на один канал.'; @override String get mainMenuMyProfile => 'Мой профиль'; @@ -819,10 +821,10 @@ class ZulipLocalizationsRu extends ZulipLocalizations { String _temp0 = intl.Intl.pluralLogic( numOthers, locale: localeName, - other: '$numOthers чел.', - one: '1 чел.', + other: '$numOthers другим', + one: '$numOthers другому', ); - return '$senderFullName вам и еще $_temp0'; + return '$senderFullName вам и ещё $_temp0'; } @override @@ -838,7 +840,7 @@ class ZulipLocalizationsRu extends ZulipLocalizations { String get reactedEmojiSelfUser => 'Вы'; @override - String get reactionChipsLabel => 'Reactions'; + String get reactionChipsLabel => 'Реакции'; @override String reactionChipLabel(String emojiName, String votes) { @@ -850,8 +852,10 @@ class ZulipLocalizationsRu extends ZulipLocalizations { String _temp0 = intl.Intl.pluralLogic( otherUsersCount, locale: localeName, - other: 'You and $otherUsersCount others', - one: 'You and 1 other', + other: 'Вы и еще $otherUsersCount человек', + many: 'Вы и еще $otherUsersCount человек', + few: 'Вы и еще $otherUsersCount человека', + one: 'Вы и еще $otherUsersCount человек', ); return '$_temp0'; } @@ -977,7 +981,7 @@ class ZulipLocalizationsRu extends ZulipLocalizations { @override String get experimentalFeatureSettingsWarning => - 'Эти параметры включают функции, которые все еще находятся в стадии разработки и не готовы. Они могут не работать и вызывать проблемы в других местах приложения.\n\nЦель этих настроек — экспериментирование людьми, работающими над разработкой Zulip.'; + 'Эти параметры включают возможности, которые все ещё находятся в разработке и не готовы. Они могут не работать и вызывать проблемы в других местах приложения.\n\nЦель этих настроек — экспериментирование людьми, работающими над разработкой Zulip.'; @override String get errorNotificationOpenTitle => 'Не удалось открыть оповещения'; @@ -993,7 +997,7 @@ class ZulipLocalizationsRu extends ZulipLocalizations { String get errorReactionRemovingFailedTitle => 'Не удалось удалить реакцию'; @override - String get emojiReactionsMore => 'еще'; + String get emojiReactionsMore => 'ещё'; @override String get emojiPickerSearchEmoji => 'Поиск эмодзи'; diff --git a/lib/generated/l10n/zulip_localizations_uk.dart b/lib/generated/l10n/zulip_localizations_uk.dart index 9e25589959..71da83f464 100644 --- a/lib/generated/l10n/zulip_localizations_uk.dart +++ b/lib/generated/l10n/zulip_localizations_uk.dart @@ -94,7 +94,7 @@ class ZulipLocalizationsUk extends ZulipLocalizations { 'Позначити канал як прочитаний'; @override - String get actionSheetOptionCopyChannelLink => 'Copy link to channel'; + String get actionSheetOptionCopyChannelLink => 'Копіювати посилання на канал'; @override String get actionSheetOptionListOfTopics => 'Список тем'; @@ -126,14 +126,15 @@ class ZulipLocalizationsUk extends ZulipLocalizations { 'Не вдалося позначити тему як невирішену'; @override - String get actionSheetOptionSeeWhoReacted => 'See who reacted'; + String get actionSheetOptionSeeWhoReacted => 'Дивіться, хто відреагував'; @override - String get seeWhoReactedSheetNoReactions => 'This message has no reactions.'; + String get seeWhoReactedSheetNoReactions => + 'На це повідомлення немає реакцій.'; @override String seeWhoReactedSheetHeaderLabel(int num) { - return 'Emoji reactions ($num total)'; + return 'Реакції емодзі (загалом $num)'; } @override @@ -141,15 +142,15 @@ class ZulipLocalizationsUk extends ZulipLocalizations { String _temp0 = intl.Intl.pluralLogic( num, locale: localeName, - other: '$num votes', - one: '1 vote', + other: '$num голоси', + one: '1 голосу', ); return '$emojiName: $_temp0'; } @override String seeWhoReactedSheetUserListLabel(String emojiName, int num) { - return 'Votes for $emojiName ($num)'; + return 'Голоси за $emojiName ($num)'; } @override @@ -186,7 +187,7 @@ class ZulipLocalizationsUk extends ZulipLocalizations { String get actionSheetOptionMarkTopicAsRead => 'Позначити тему як прочитану'; @override - String get actionSheetOptionCopyTopicLink => 'Copy link to topic'; + String get actionSheetOptionCopyTopicLink => 'Копіювати посилання на тему'; @override String get errorWebAuthOperationalErrorTitle => 'Щось пішло не так'; @@ -345,10 +346,10 @@ class ZulipLocalizationsUk extends ZulipLocalizations { 'Посилання на повідомлення скопійовано'; @override - String get successTopicLinkCopied => 'Topic link copied'; + String get successTopicLinkCopied => 'Посилання на тему скопійовано'; @override - String get successChannelLinkCopied => 'Channel link copied'; + String get successChannelLinkCopied => 'Посилання на канал скопійовано'; @override String get errorBannerDeactivatedDmLabel => @@ -485,10 +486,10 @@ class ZulipLocalizationsUk extends ZulipLocalizations { } @override - String get emptyMessageList => 'There are no messages here.'; + String get emptyMessageList => 'Тут немає повідомлень.'; @override - String get emptyMessageListSearch => 'No search results.'; + String get emptyMessageListSearch => 'Немає результатів пошуку.'; @override String get messageListGroupYouWithYourself => 'Повідомлення з собою'; @@ -689,15 +690,15 @@ class ZulipLocalizationsUk extends ZulipLocalizations { String get yesterday => 'Учора'; @override - String get invisibleMode => 'Invisible mode'; + String get invisibleMode => 'Невидимий режим'; @override String get turnOnInvisibleModeErrorTitle => - 'Error turning on invisible mode. Please try again.'; + 'Помилка ввімкнення режиму невидимості. Спробуйте ще раз.'; @override String get turnOffInvisibleModeErrorTitle => - 'Error turning off invisible mode. Please try again.'; + 'Помилка вимкнення режиму невидимості. Спробуйте ще раз.'; @override String get userRoleOwner => 'Власник'; @@ -718,59 +719,59 @@ class ZulipLocalizationsUk extends ZulipLocalizations { String get userRoleUnknown => 'Невідомо'; @override - String get statusButtonLabelStatusSet => 'Status'; + String get statusButtonLabelStatusSet => 'Статус'; @override - String get statusButtonLabelStatusUnset => 'Set status'; + String get statusButtonLabelStatusUnset => 'Встановити статус'; @override - String get noStatusText => 'No status text'; + String get noStatusText => 'Немає тексту статусу'; @override - String get setStatusPageTitle => 'Set status'; + String get setStatusPageTitle => 'Встановити статус'; @override - String get statusClearButtonLabel => 'Clear'; + String get statusClearButtonLabel => 'Очистити'; @override - String get statusSaveButtonLabel => 'Save'; + String get statusSaveButtonLabel => 'Зберегти'; @override - String get statusTextHint => 'Your status'; + String get statusTextHint => 'Ваш статус'; @override - String get userStatusBusy => 'Busy'; + String get userStatusBusy => 'Зайнятий'; @override - String get userStatusInAMeeting => 'In a meeting'; + String get userStatusInAMeeting => 'На зустрічі'; @override - String get userStatusCommuting => 'Commuting'; + String get userStatusCommuting => 'Поїздки на роботу'; @override - String get userStatusOutSick => 'Out sick'; + String get userStatusOutSick => 'Хворий'; @override - String get userStatusVacationing => 'Vacationing'; + String get userStatusVacationing => 'Відпустка'; @override - String get userStatusWorkingRemotely => 'Working remotely'; + String get userStatusWorkingRemotely => 'Працюємо віддалено'; @override - String get userStatusAtTheOffice => 'At the office'; + String get userStatusAtTheOffice => 'В офісі'; @override String get updateStatusErrorTitle => - 'Error updating user status. Please try again.'; + 'Помилка оновлення статусу користувача. Спробуйте ще раз.'; @override - String get searchMessagesPageTitle => 'Search'; + String get searchMessagesPageTitle => 'Пошук'; @override - String get searchMessagesHintText => 'Search'; + String get searchMessagesHintText => 'Пошук'; @override - String get searchMessagesClearButtonTooltip => 'Clear'; + String get searchMessagesClearButtonTooltip => 'Очистити'; @override String get inboxPageTitle => 'Вхідні'; @@ -837,7 +838,7 @@ class ZulipLocalizationsUk extends ZulipLocalizations { String get reactedEmojiSelfUser => 'Ви'; @override - String get reactionChipsLabel => 'Reactions'; + String get reactionChipsLabel => 'Реакції'; @override String reactionChipLabel(String emojiName, String votes) { @@ -849,8 +850,8 @@ class ZulipLocalizationsUk extends ZulipLocalizations { String _temp0 = intl.Intl.pluralLogic( otherUsersCount, locale: localeName, - other: 'You and $otherUsersCount others', - one: 'You and 1 other', + other: 'Ви і $otherUsersCount інші', + one: 'Ви та ще 1 особа', ); return '$_temp0'; } @@ -1002,8 +1003,7 @@ class ZulipLocalizationsUk extends ZulipLocalizations { String get noEarlierMessages => 'Немає попередніх повідомлень'; @override - String get revealButtonLabel => - 'Показати повідомлення заглушеного відправника'; + String get revealButtonLabel => 'Показати повідомлення'; @override String get mutedUser => 'Заглушений користувач'; diff --git a/lib/generated/l10n/zulip_localizations_zh.dart b/lib/generated/l10n/zulip_localizations_zh.dart index db563a0434..fc6ee7b46d 100644 --- a/lib/generated/l10n/zulip_localizations_zh.dart +++ b/lib/generated/l10n/zulip_localizations_zh.dart @@ -1869,7 +1869,7 @@ class ZulipLocalizationsZhHantTw extends ZulipLocalizationsZh { @override String tryAnotherAccountMessage(Object url) { - return '你在 $url 的帳號載入的比較久'; + return '您在 $url 的帳號載入的比較久。'; } @override @@ -1913,6 +1913,9 @@ class ZulipLocalizationsZhHantTw extends ZulipLocalizationsZh { @override String get actionSheetOptionMarkChannelAsRead => '標註頻道為已讀'; + @override + String get actionSheetOptionCopyChannelLink => '複製頻道連結'; + @override String get actionSheetOptionListOfTopics => '議題列表'; @@ -1940,6 +1943,33 @@ class ZulipLocalizationsZhHantTw extends ZulipLocalizationsZh { @override String get errorUnresolveTopicFailedTitle => '無法標註話題為未解決'; + @override + String get actionSheetOptionSeeWhoReacted => '查看誰有回應'; + + @override + String get seeWhoReactedSheetNoReactions => '此訊息尚無任何回應。'; + + @override + String seeWhoReactedSheetHeaderLabel(int num) { + return '表情符號回應 (共 $num 個)'; + } + + @override + String seeWhoReactedSheetEmojiNameWithVoteCount(String emojiName, int num) { + String _temp0 = intl.Intl.pluralLogic( + num, + locale: localeName, + other: '$num 票', + one: '1 票', + ); + return '$emojiName:$_temp0'; + } + + @override + String seeWhoReactedSheetUserListLabel(String emojiName, int num) { + return '$emojiName 的投票數($num)'; + } + @override String get actionSheetOptionCopyMessageText => '複製訊息文字'; @@ -1970,6 +2000,9 @@ class ZulipLocalizationsZhHantTw extends ZulipLocalizationsZh { @override String get actionSheetOptionMarkTopicAsRead => '標註話題為已讀'; + @override + String get actionSheetOptionCopyTopicLink => '複製議題的連結'; + @override String get errorWebAuthOperationalErrorTitle => '出錯了'; @@ -2098,7 +2131,7 @@ class ZulipLocalizationsZhHantTw extends ZulipLocalizationsZh { String get errorUnfollowTopicFailed => '無法取消跟隨話題'; @override - String get errorSharingFailed => '分享失敗。'; + String get errorSharingFailed => '分享失敗'; @override String get errorStarMessageFailedTitle => '無法收藏訊息'; @@ -2118,6 +2151,12 @@ class ZulipLocalizationsZhHantTw extends ZulipLocalizationsZh { @override String get successMessageLinkCopied => '已複製訊息連結'; + @override + String get successTopicLinkCopied => '議題連結已複製'; + + @override + String get successChannelLinkCopied => '頻道連結已複製'; + @override String get errorBannerDeactivatedDmLabel => '您無法向已停用的使用者發送訊息。'; @@ -2470,6 +2509,51 @@ class ZulipLocalizationsZhHantTw extends ZulipLocalizationsZh { @override String get userRoleUnknown => '未知'; + @override + String get statusButtonLabelStatusSet => '狀態'; + + @override + String get statusButtonLabelStatusUnset => '設定狀態'; + + @override + String get noStatusText => '無狀態文字'; + + @override + String get setStatusPageTitle => '設定狀態'; + + @override + String get statusClearButtonLabel => '清除'; + + @override + String get statusSaveButtonLabel => '儲存'; + + @override + String get statusTextHint => '您的狀態'; + + @override + String get userStatusBusy => '忙碌'; + + @override + String get userStatusInAMeeting => '會議中'; + + @override + String get userStatusCommuting => '通勤中'; + + @override + String get userStatusOutSick => '請病假'; + + @override + String get userStatusVacationing => '休假中'; + + @override + String get userStatusWorkingRemotely => '遠端工作中'; + + @override + String get userStatusAtTheOffice => '在辦公室'; + + @override + String get updateStatusErrorTitle => '更新使用者狀態時發生錯誤。請再試一次。'; + @override String get searchMessagesPageTitle => '搜尋'; @@ -2483,7 +2567,7 @@ class ZulipLocalizationsZhHantTw extends ZulipLocalizationsZh { String get inboxPageTitle => '收件匣'; @override - String get inboxEmptyPlaceholder => '您的收件匣中沒有未讀訊息。請使用下方按鈕檢視整合訊息流或頻道清單。'; + String get inboxEmptyPlaceholder => '您的收件匣中沒有未讀訊息。請使用下方按鈕查看整合訊息流或頻道清單。'; @override String get recentDmConversationsPageTitle => '私人訊息'; @@ -2541,6 +2625,25 @@ class ZulipLocalizationsZhHantTw extends ZulipLocalizationsZh { @override String get reactedEmojiSelfUser => '您'; + @override + String get reactionChipsLabel => '反應'; + + @override + String reactionChipLabel(String emojiName, String votes) { + return '$emojiName: $votes'; + } + + @override + String reactionChipVotesYouAndOthers(int otherUsersCount) { + String _temp0 = intl.Intl.pluralLogic( + otherUsersCount, + locale: localeName, + other: '你與其他 $otherUsersCount 人', + one: '你與其他 1 人', + ); + return '$_temp0'; + } + @override String onePersonTyping(String typist) { return '$typist 正在輸入…'; @@ -2561,13 +2664,13 @@ class ZulipLocalizationsZhHantTw extends ZulipLocalizationsZh { String get wildcardMentionEveryone => '所有人'; @override - String get wildcardMentionChannel => 'channel'; + String get wildcardMentionChannel => '頻道'; @override String get wildcardMentionStream => '串流'; @override - String get wildcardMentionTopic => 'topic'; + String get wildcardMentionTopic => '議題'; @override String get wildcardMentionChannelDescription => '通知頻道'; @@ -2641,18 +2744,56 @@ class ZulipLocalizationsZhHantTw extends ZulipLocalizationsZh { @override String get markReadOnScrollSettingAlways => '總是'; + @override + String get markReadOnScrollSettingNever => '從不'; + + @override + String get markReadOnScrollSettingConversations => '僅在對話檢視中'; + + @override + String get markReadOnScrollSettingConversationsDescription => + '只有在查看單一議題或私人訊息對話時,訊息才會自動標記為已讀。'; + @override String get experimentalFeatureSettingsPageTitle => '實驗性功能'; + @override + String get experimentalFeatureSettingsWarning => + '這些選項啟用的功能仍在開發中,尚未完善。它們可能無法正常運作,且可能導致應用程式其他部分出現問題。\n\n這些設定的目的是供參與 Zulip 開發的人員進行試驗使用。'; + @override String get errorNotificationOpenTitle => '無法開啟通知'; + @override + String get errorNotificationOpenAccountNotFound => '找不到與此通知相關聯的帳號。'; + + @override + String get errorReactionAddingFailedTitle => '新增表情反應失敗'; + + @override + String get errorReactionRemovingFailedTitle => '移除表情反應失敗'; + @override String get emojiReactionsMore => '更多'; @override String get emojiPickerSearchEmoji => '搜尋表情符號'; + @override + String get noEarlierMessages => '沒有更早的訊息'; + + @override + String get revealButtonLabel => '顯示訊息'; + @override String get mutedUser => '已靜音的使用者'; + + @override + String get scrollToBottomTooltip => '捲動至底部'; + + @override + String get appVersionUnknownPlaceholder => '(…)'; + + @override + String get zulipAppTitle => 'Zulip'; }