diff --git a/assets/l10n/app_de.arb b/assets/l10n/app_de.arb index 967b767594..aef7982c4d 100644 --- a/assets/l10n/app_de.arb +++ b/assets/l10n/app_de.arb @@ -80,6 +80,27 @@ "@actionSheetOptionUnsubscribe": { "description": "Label in the channel action sheet for unsubscribing from the channel." }, + "@actionSheetOptionViewReadReceipts": { + "description": "Label for the 'View read receipts' button in the message action sheet." + }, + "@actionSheetReadReceipts": { + "description": "Title for the \"Read receipts\" bottom sheet." + }, + "@actionSheetReadReceiptsErrorReadCount": { + "description": "Label in the \"Read receipts\" bottom sheet when loading read receipts failed." + }, + "@actionSheetReadReceiptsReadCount": { + "description": "Label in the \"Read receipts\" bottom sheet when one or more people have read the message.", + "placeholders": { + "count": { + "example": "1", + "type": "int" + } + } + }, + "@actionSheetReadReceiptsZeroReadCount": { + "description": "Label in the \"Read receipts\" bottom sheet when no one has read the message." + }, "@appVersionUnknownPlaceholder": { "description": "Placeholder to show in place of the app version when it is unknown." }, @@ -239,6 +260,12 @@ "@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": { @@ -277,6 +304,12 @@ "@errorConnectingToServerShort": { "description": "Short error message for a generic unknown error connecting to the server." }, + "@errorContentNotInsertedTitle": { + "description": "Title for error dialog when an attempt to insert rich content failed." + }, + "@errorContentToInsertIsEmpty": { + "description": "Error message when the rich content to be inserted is empty or cannot be accessed." + }, "@errorCopyingFailed": { "description": "Error message when copying the text of a message to the user's system clipboard failed." }, @@ -494,9 +527,15 @@ } } }, + "@errorSharingAccountNotLoggedIn": { + "description": "Error title when sharing content received from other apps fails, when there is no account logged in" + }, "@errorSharingFailed": { "description": "Error message when sharing a message failed." }, + "@errorSharingTitle": { + "description": "Error title when sharing content received from other apps fails" + }, "@errorStarMessageFailedTitle": { "description": "Error title when starring a message failed." }, @@ -561,6 +600,9 @@ "@initialAnchorSettingTitle": { "description": "Title of setting controlling initial anchor of message list." }, + "@invisibleMode": { + "description": "Label for the 'Invisible mode' switch on the profile page." + }, "@lightboxCopyLinkTooltip": { "description": "Tooltip in lightbox for the copy link action." }, @@ -714,6 +756,9 @@ "@noEarlierMessages": { "description": "Text to show at the start of a message list if there are no earlier messages." }, + "@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": { @@ -781,6 +826,31 @@ "@reactedEmojiSelfUser": { "description": "Display name for the user themself, to show on an emoji reaction added by the user." }, + "@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" + } + } + }, + "@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" + } + } + }, + "@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." }, @@ -867,6 +937,9 @@ "@settingsPageTitle": { "description": "Title for the settings page." }, + "@sharePageTitle": { + "description": "Title for the page about sharing content received from other apps." + }, "@signInWithFoo": { "description": "Button to use {method} to sign in to the app.", "placeholders": { @@ -885,6 +958,12 @@ "@starredMessagesPageTitle": { "description": "Page title for the 'Starred messages' message view." }, + "@statusButtonLabelStatusSet": { + "description": "The status button label in self-user profile page when status is set." + }, + "@statusButtonLabelStatusUnset": { + "description": "The status button label in self-user profile page when status is not set." + }, "@statusClearButtonLabel": { "description": "Label for the button that clears the user status, in 'Set status' page." }, @@ -897,6 +976,9 @@ "@subscribeFailedTitle": { "description": "Error title when subscribing to a channel failed." }, + "@successChannelLinkCopied": { + "description": "Message when link of a channel was copied to the user's system clipboard." + }, "@successLinkCopied": { "description": "Success message after copy link action completed." }, @@ -946,6 +1028,12 @@ "type": "String" } }, + "@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": { @@ -1001,6 +1089,54 @@ "@upgradeWelcomeDialogTitle": { "description": "Title for dialog shown on first upgrade from the legacy Zulip app." }, + "@userActiveDate": { + "description": "Indicates the date when a user was last active on Zulip (who is currently offline).\n\nThe date might be day and month if recent, or day, month, and year if less recent.", + "placeholders": { + "date": { + "example": "Aug 1, 2024", + "type": "String" + } + } + }, + "@userActiveDaysAgo": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)", + "placeholders": { + "days": { + "example": "5", + "type": "int" + } + } + }, + "@userActiveHoursAgo": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)", + "placeholders": { + "hours": { + "example": "5", + "type": "int" + } + } + }, + "@userActiveMinutesAgo": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)", + "placeholders": { + "minutes": { + "example": "5", + "type": "int" + } + } + }, + "@userActiveNow": { + "description": "Indicates a user is currently active on Zulip (not idle or offline)" + }, + "@userActiveYesterday": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)" + }, + "@userIdle": { + "description": "Indicates a user is currently idle on Zulip (not active, but not offline)" + }, + "@userNotActiveInYear": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)" + }, "@userRoleAdministrator": { "description": "Label for UserRole.administrator" }, @@ -1100,6 +1236,11 @@ "actionSheetOptionUnresolveTopic": "Als ungelöst markieren", "actionSheetOptionUnstarMessage": "Markierung aufheben", "actionSheetOptionUnsubscribe": "Deabonnieren", + "actionSheetOptionViewReadReceipts": "Empfangsbestätigungen ansehen", + "actionSheetReadReceipts": "Empfangsbestätigungen", + "actionSheetReadReceiptsErrorReadCount": "Laden von Empfangsbestätigungen fehlgeschlagen.", + "actionSheetReadReceiptsReadCount": "{count, plural, =1{Diese Nachricht wurde von einer Person gelesen:} other{Diese Nachricht wurde von {count} Personen gelesen:}}", + "actionSheetReadReceiptsZeroReadCount": "Niemand hat diese Nachricht bisher gelesen.", "appVersionUnknownPlaceholder": "(…)", "channelFeedButtonTooltip": "Kanal-Feed", "channelsEmptyPlaceholder": "Du hast noch keine Kanäle abonniert.", @@ -1141,12 +1282,16 @@ "editAlreadyInProgressTitle": "Kann Nachricht nicht bearbeiten", "emojiPickerSearchEmoji": "Emoji suchen", "emojiReactionsMore": "mehr", + "emptyMessageList": "Hier gibt es keine Nachrichten.", + "emptyMessageListSearch": "Keine Suchergebnisse.", "errorAccountLoggedIn": "Der Account {email} auf {server} ist bereits in deiner Account-Liste.", "errorAccountLoggedInTitle": "Account bereits angemeldet", "errorBannerCannotPostInChannelLabel": "Du hast keine Berechtigung in diesen Kanal zu schreiben.", "errorBannerDeactivatedDmLabel": "Du kannst keine Nachrichten an deaktivierte Nutzer:innen senden.", "errorConnectingToServerDetails": "Fehler beim Verbinden mit Zulip auf {serverUrl}. Wird wiederholt:\n\n{error}", "errorConnectingToServerShort": "Fehler beim Verbinden mit Zulip. Wiederhole…", + "errorContentNotInsertedTitle": "Inhalt nicht eingefügt", + "errorContentToInsertIsEmpty": "Die einzufügende Datei ist leer oder kann nicht geöffnet werden.", "errorCopyingFailed": "Kopieren fehlgeschlagen", "errorCouldNotConnectTitle": "Konnte nicht verbinden", "errorCouldNotEditMessageTitle": "Konnte Nachricht nicht bearbeiten", @@ -1186,7 +1331,9 @@ "errorResolveTopicFailedTitle": "Thema konnte nicht als gelöst markiert werden", "errorServerMessage": "Der Server sagte:\n\n{message}", "errorServerVersionUnsupportedMessage": "{url} nutzt Zulip Server {zulipVersion}, welche nicht unterstützt wird. Die unterstützte Mindestversion ist Zulip Server {minSupportedZulipVersion}.", + "errorSharingAccountNotLoggedIn": "Es ist kein Konto angemeldet. Bitte logge dich in ein Konto ein und versuche es erneut.", "errorSharingFailed": "Teilen fehlgeschlagen", + "errorSharingTitle": "Teilen des Inhalts fehlgeschlagen", "errorStarMessageFailedTitle": "Konnte Nachricht nicht markieren", "errorUnfollowTopicFailed": "Konnte Thema nicht entfolgen", "errorUnmuteTopicFailed": "Konnte Thema nicht lautschalten", @@ -1205,6 +1352,7 @@ "initialAnchorSettingFirstUnreadConversations": "Erste ungelesene Nachricht in Unterhaltungsansicht, sonst neueste Nachricht", "initialAnchorSettingNewestAlways": "Neueste Nachricht", "initialAnchorSettingTitle": "Nachrichten-Feed öffnen bei", + "invisibleMode": "Unsichtbarer Modus", "lightboxCopyLinkTooltip": "Link kopieren", "lightboxVideoCurrentPosition": "Aktuelle Position", "lightboxVideoDuration": "Videolänge", @@ -1250,6 +1398,7 @@ "newDmSheetSearchHintEmpty": "Füge ein oder mehrere Nutzer:innen hinzu", "newDmSheetSearchHintSomeSelected": "Füge weitere Nutzer:in hinzu…", "noEarlierMessages": "Keine früheren Nachrichten", + "noStatusText": "Kein Statustext", "notifGroupDmConversationLabel": "{senderFullName} an dich und {numOthers, plural, =1{1 weitere:n} other{{numOthers} weitere}}", "notifSelfUser": "Du", "onePersonTyping": "{typist} tippt…", @@ -1265,10 +1414,13 @@ "preparingEditMessageContentInput": "Bereite vor…", "profileButtonSendDirectMessage": "Direktnachricht senden", "reactedEmojiSelfUser": "Du", + "reactionChipLabel": "{emojiName}: {votes}", + "reactionChipVotesYouAndOthers": "{otherUsersCount, plural, =1{Du und ein weiterer} other{Du und {otherUsersCount} weitere}}", + "reactionChipsLabel": "Reaktionen", "recentDmConversationsEmptyPlaceholder": "Du hast noch keine Direktnachrichten! Warum nicht die Unterhaltung beginnen?", "recentDmConversationsPageTitle": "Direktnachrichten", "recentDmConversationsSectionHeader": "Direktnachrichten", - "revealButtonLabel": "Nachricht für stummgeschalteten Absender anzeigen", + "revealButtonLabel": "Nachricht anzeigen", "savingMessageEditFailedLabel": "BEARBEITUNG NICHT GESPEICHERT", "savingMessageEditLabel": "SPEICHERE BEARBEITUNG…", "scrollToBottomTooltip": "Nach unten Scrollen", @@ -1285,14 +1437,18 @@ "serverUrlValidationErrorUnsupportedScheme": "Die Server-URL muss mit http:// oder https:// beginnen.", "setStatusPageTitle": "Status setzen", "settingsPageTitle": "Einstellungen", + "sharePageTitle": "Teilen", "signInWithFoo": "Anmelden mit {method}", "snackBarDetails": "Details", "spoilerDefaultHeaderText": "Spoiler", "starredMessagesPageTitle": "Markierte Nachrichten", + "statusButtonLabelStatusSet": "Status", + "statusButtonLabelStatusUnset": "Status setzen", "statusClearButtonLabel": "Leeren", "statusSaveButtonLabel": "Speichern", "statusTextHint": "Dein Status", "subscribeFailedTitle": "Konnte nicht abonnieren", + "successChannelLinkCopied": "Kanallink kopiert", "successLinkCopied": "Link kopiert", "successMessageLinkCopied": "Nachrichtenlink kopiert", "successMessageTextCopied": "Nachrichtentext kopiert", @@ -1308,6 +1464,8 @@ "topicsButtonTooltip": "Themen", "tryAnotherAccountButton": "Anderen Account ausprobieren", "tryAnotherAccountMessage": "Dein Account bei {url} benötigt einige Zeit zum Laden.", + "turnOffInvisibleModeErrorTitle": "Fehler beim Ausschalten des unsichtbaren Modus. Bitte versuche es erneut.", + "turnOnInvisibleModeErrorTitle": "Fehler beim Einschalten des unsichtbaren Modus. Bitte versuche es erneut.", "twoPeopleTyping": "{typist} und {otherTypist} tippen…", "unknownChannelName": "(unbekannter Kanal)", "unknownUserName": "(Nutzer:in unbekannt)", @@ -1321,6 +1479,14 @@ "upgradeWelcomeDialogLinkText": "Sieh dir den Ankündigungs-Blogpost an!", "upgradeWelcomeDialogMessage": "Du wirst ein vertrautes Erlebnis in einer schnelleren, schlankeren App erleben.", "upgradeWelcomeDialogTitle": "Willkommen in der neuen Zulip-App!", + "userActiveDate": "Aktiv {date}", + "userActiveDaysAgo": "Aktiv vor {days, plural, =1{einem Tag} other{{days} Tagen}}", + "userActiveHoursAgo": "Aktiv vor {hours, plural, =1{einer Stunde} other{{hours} Stunden}}", + "userActiveMinutesAgo": "Aktiv vor {minutes, plural, =1{einer Minute} other{{minutes} Minuten}}", + "userActiveNow": "Gerade aktiv", + "userActiveYesterday": "Gestern aktiv", + "userIdle": "Untätig", + "userNotActiveInYear": "Im letzten Jahr nicht aktiv", "userRoleAdministrator": "Administrator", "userRoleGuest": "Gast", "userRoleMember": "Mitglied", diff --git a/assets/l10n/app_ja.arb b/assets/l10n/app_ja.arb index dcbe99f1b7..c8502a3edf 100644 --- a/assets/l10n/app_ja.arb +++ b/assets/l10n/app_ja.arb @@ -1,192 +1,1496 @@ { - "chooseAccountPageTitle": "アカウントを選択", - "@chooseAccountPageTitle": {}, - "chooseAccountButtonAddAnAccount": "新しいアカウントを追加", - "@chooseAccountButtonAddAnAccount": {}, - "profileButtonSendDirectMessage": "ダイレクトメッセージを送信", - "@profileButtonSendDirectMessage": {}, - "userRoleOwner": "オーナー", - "@userRoleOwner": {}, - "userRoleAdministrator": "管理者", - "@userRoleAdministrator": {}, - "userRoleModerator": "モデレータ", - "@userRoleModerator": {}, - "userRoleMember": "メンバー", - "@userRoleMember": {}, - "userRoleGuest": "ゲスト", - "@userRoleGuest": {}, - "userRoleUnknown": "不明", - "@userRoleUnknown": {}, - "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" }, - "upgradeWelcomeDialogTitle": "新しいZulipアプリへようこそ!", - "@upgradeWelcomeDialogTitle": { - "description": "Title for dialog shown on first upgrade from the legacy Zulip app." - }, - "aboutPageTapToView": "タップして表示", "@aboutPageTapToView": { "description": "Item subtitle in About Zulip page to navigate to Licenses page" }, - "upgradeWelcomeDialogMessage": "より速く、洗練されたデザインで、これまでと同じ使い心地をお楽しみいただけます。", - "@upgradeWelcomeDialogMessage": { - "description": "Message text for dialog shown on first upgrade from the legacy Zulip app." + "@aboutPageTitle": { + "description": "Title for About Zulip page." }, - "upgradeWelcomeDialogLinkText": "お知らせブログ記事をご確認ください!", - "@upgradeWelcomeDialogLinkText": { - "description": "Text of link in dialog shown on first upgrade from the legacy Zulip app." + "@actionSheetOptionCopyChannelLink": { + "description": "Label for copy channel link button on action sheet." }, - "upgradeWelcomeDialogDismiss": "はじめよう", - "@upgradeWelcomeDialogDismiss": { - "description": "Label for button dismissing dialog shown on first upgrade from the legacy Zulip app." + "@actionSheetOptionCopyMessageLink": { + "description": "Label for copy message link button on action sheet." }, - "settingsPageTitle": "設定", - "@settingsPageTitle": { - "description": "Title for the settings page." + "@actionSheetOptionCopyMessageText": { + "description": "Label for copy message text button on action sheet." }, - "switchAccountButton": "アカウントを切り替える", - "@switchAccountButton": { - "description": "Label for main-menu button leading to the choose-account page." + "@actionSheetOptionCopyTopicLink": { + "description": "Label for copy topic link button in action sheet." }, - "chooseAccountPageLogOutButton": "ログアウト", - "@chooseAccountPageLogOutButton": { - "description": "Label for the 'Log out' button for an account on the choose-account page" + "@actionSheetOptionEditMessage": { + "description": "Label for the 'Edit message' button in the message action sheet." }, - "logOutConfirmationDialogTitle": "ログアウトしますか?", - "@logOutConfirmationDialogTitle": { - "description": "Title for a confirmation dialog for logging out." + "@actionSheetOptionFollowTopic": { + "description": "Label for following a topic on action sheet." + }, + "@actionSheetOptionHideMutedMessage": { + "description": "Label for hide muted message again button on action sheet." }, - "actionSheetOptionListOfTopics": "トピック一覧", "@actionSheetOptionListOfTopics": { "description": "Label for navigating to a channel's topic-list page." }, - "actionSheetOptionMarkChannelAsRead": "チャンネルを既読にする", + "@actionSheetOptionMarkAsUnread": { + "description": "Label for mark as unread button on action sheet." + }, "@actionSheetOptionMarkChannelAsRead": { "description": "Label for marking a channel as read." }, - "actionSheetOptionMuteTopic": "トピックをミュート", + "@actionSheetOptionMarkTopicAsRead": { + "description": "Option to mark a specific topic as read in the action sheet." + }, "@actionSheetOptionMuteTopic": { "description": "Label for muting a topic on action sheet." }, - "actionSheetOptionUnmuteTopic": "トピックのミュートを解除", - "@actionSheetOptionUnmuteTopic": { - "description": "Label for unmuting a topic on action sheet." + "@actionSheetOptionQuoteMessage": { + "description": "Label for the 'Quote message' button in the message action sheet." }, - "actionSheetOptionFollowTopic": "トピックをフォロー", - "@actionSheetOptionFollowTopic": { - "description": "Label for following a topic on 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": { + "description": "Label for share button on action sheet." + }, + "@actionSheetOptionStarMessage": { + "description": "Label for star button on action sheet." + }, + "@actionSheetOptionSubscribe": { + "description": "Label in the channel action sheet for subscribing to the channel." }, - "actionSheetOptionUnfollowTopic": "トピックのフォローを解除", "@actionSheetOptionUnfollowTopic": { "description": "Label for unfollowing a topic on action sheet." }, - "actionSheetOptionResolveTopic": "解決済みにする", - "@actionSheetOptionResolveTopic": { - "description": "Label for the 'Mark as resolved' button on the topic action sheet." + "@actionSheetOptionUnmuteTopic": { + "description": "Label for unmuting a topic on action sheet." }, - "actionSheetOptionUnresolveTopic": "未解決にする", "@actionSheetOptionUnresolveTopic": { "description": "Label for the 'Mark as unresolved' button on the topic action sheet." }, - "errorResolveTopicFailedTitle": "トピックを解決済みにできませんでした", - "@errorResolveTopicFailedTitle": { - "description": "Error title when marking a topic as resolved failed." + "@actionSheetOptionUnstarMessage": { + "description": "Label for unstar button on action sheet." }, - "errorUnresolveTopicFailedTitle": "トピックを未解決にできませんでした", - "@errorUnresolveTopicFailedTitle": { - "description": "Error title when marking a topic as unresolved failed." + "@actionSheetOptionUnsubscribe": { + "description": "Label in the channel action sheet for unsubscribing from the channel." }, - "actionSheetOptionCopyMessageText": "メッセージ本文をコピー", - "@actionSheetOptionCopyMessageText": { - "description": "Label for copy message text button on action sheet." + "@actionSheetOptionViewReadReceipts": { + "description": "Label for the 'View read receipts' button in the message action sheet." }, - "actionSheetOptionCopyMessageLink": "メッセージへのリンクをコピー", - "@actionSheetOptionCopyMessageLink": { - "description": "Label for copy message link button on action sheet." + "@actionSheetReadReceipts": { + "description": "Title for the \"Read receipts\" bottom sheet." }, - "actionSheetOptionMarkAsUnread": "ここから未読にする", - "@actionSheetOptionMarkAsUnread": { - "description": "Label for mark as unread button on action sheet." + "@actionSheetReadReceiptsErrorReadCount": { + "description": "Label in the \"Read receipts\" bottom sheet when loading read receipts failed." }, - "actionSheetOptionHideMutedMessage": "ミュートしたメッセージを再び非表示にする", - "@actionSheetOptionHideMutedMessage": { - "description": "Label for hide muted message again button on action sheet." + "@actionSheetReadReceiptsReadCount": { + "description": "Label in the \"Read receipts\" bottom sheet when one or more people have read the message.", + "placeholders": { + "count": { + "example": "1", + "type": "int" + } + } }, - "actionSheetOptionShare": "共有", - "@actionSheetOptionShare": { - "description": "Label for share button on action sheet." + "@actionSheetReadReceiptsZeroReadCount": { + "description": "Label in the \"Read receipts\" bottom sheet when no one has read the message." }, - "actionSheetOptionQuoteMessage": "メッセージを引用", - "@actionSheetOptionQuoteMessage": { - "description": "Label for the 'Quote message' button in the message action sheet." + "@appVersionUnknownPlaceholder": { + "description": "Placeholder to show in place of the app version when it is unknown." }, - "actionSheetOptionStarMessage": "メッセージにスターを付ける", - "@actionSheetOptionStarMessage": { - "description": "Label for star button on action sheet." + "@channelFeedButtonTooltip": { + "description": "Tooltip for button to navigate to a given channel's feed" }, - "actionSheetOptionUnstarMessage": "メッセージのスターを外す", - "@actionSheetOptionUnstarMessage": { - "description": "Label for unstar button on action sheet." + "@channelsEmptyPlaceholder": { + "description": "Centered text on the 'Channels' page saying that there is no content to show." }, - "actionSheetOptionEditMessage": "メッセージを編集", - "@actionSheetOptionEditMessage": { - "description": "Label for the 'Edit message' button in the message action sheet." + "@channelsPageTitle": { + "description": "Title for the page with a list of subscribed channels." }, - "actionSheetOptionMarkTopicAsRead": "トピックを既読にする", - "@actionSheetOptionMarkTopicAsRead": { - "description": "Option to mark a specific topic as read in the action sheet." + "@chooseAccountButtonAddAnAccount": {}, + "@chooseAccountPageLogOutButton": { + "description": "Label for the 'Log out' button for an account on the choose-account page" }, - "errorWebAuthOperationalErrorTitle": "問題が発生しました", - "@errorWebAuthOperationalErrorTitle": { - "description": "Error title when third-party authentication has an operational error (not necessarily caused by invalid credentials)." + "@chooseAccountPageTitle": {}, + "@combinedFeedPageTitle": { + "description": "Page title for the 'Combined feed' message view." }, - "errorWebAuthOperationalError": "予期しないエラーが発生しました。", - "@errorWebAuthOperationalError": { - "description": "Error message when third-party authentication has an operational error (not necessarily caused by invalid credentials)." + "@composeBoxAttachFilesTooltip": { + "description": "Tooltip for compose box icon to attach a file to the message." + }, + "@composeBoxAttachFromCameraTooltip": { + "description": "Tooltip for compose box icon to attach an image from the camera to the message." + }, + "@composeBoxAttachMediaTooltip": { + "description": "Tooltip for compose box icon to attach media to the message." + }, + "@composeBoxBannerButtonCancel": { + "description": "Label text for the 'Cancel' button in the compose-box banner when you are editing a message." + }, + "@composeBoxBannerButtonSave": { + "description": "Label text for the 'Save' button in the compose-box banner when you are editing a message." + }, + "@composeBoxBannerLabelEditMessage": { + "description": "Label text for the compose-box banner when you are editing a message." + }, + "@composeBoxChannelContentHint": { + "description": "Hint text for content input when sending a message to a channel.", + "placeholders": { + "destination": { + "example": "#channel name > topic name", + "type": "String" + } + } + }, + "@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": { + "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": { + "messageId": { + "example": "1234", + "type": "int" + } + } + }, + "@composeBoxSelfDmContentHint": { + "description": "Hint text for content input when sending a message to yourself." + }, + "@composeBoxSendTooltip": { + "description": "Tooltip for send button in compose box." + }, + "@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": { + "filename": { + "example": "file.txt", + "type": "String" + } + } + }, + "@contentValidationErrorEmpty": { + "description": "Content validation error message when the message is empty." + }, + "@contentValidationErrorQuoteAndReplyInProgress": { + "description": "Content validation error message when a quotation has not completed yet." + }, + "@contentValidationErrorTooLong": { + "description": "Content validation error message when the message is too long." + }, + "@contentValidationErrorUploadInProgress": { + "description": "Content validation error message when attachments have not finished uploading." + }, + "@dialogCancel": { + "description": "Button label in dialogs to cancel." + }, + "@dialogClose": { + "description": "Button label in dialogs to close." + }, + "@dialogContinue": { + "description": "Button label in dialogs to proceed." + }, + "@discardDraftConfirmationDialogConfirmButton": { + "description": "Label for the 'Discard' button on a confirmation dialog for discarding message text that was typed into the compose box." + }, + "@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": { + "others": { + "example": "Alice, Bob", + "type": "String" + } + } + }, + "@dmsWithYourselfPageTitle": { + "description": "Message list page title for a DM group that only includes yourself." + }, + "@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": { + "email": { + "example": "user@example.com", + "type": "String" + }, + "server": { + "example": "https://example.com", + "type": "String" + } + } }, - "errorAccountLoggedInTitle": "このアカウントはすでにログインしています", "@errorAccountLoggedInTitle": { "description": "Error title on attempting to log into an account that's already logged in." }, - "errorCouldNotFetchMessageSource": "メッセージのソースを取得できませんでした。", - "@errorCouldNotFetchMessageSource": { - "description": "Error message when the source of a message could not be fetched." + "@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": { + "error": { + "example": "Invalid format", + "type": "String" + }, + "serverUrl": { + "example": "http://example.com/", + "type": "String" + } + } + }, + "@errorConnectingToServerShort": { + "description": "Short error message for a generic unknown error connecting to the server." + }, + "@errorContentNotInsertedTitle": { + "description": "Title for error dialog when an attempt to insert rich content failed." + }, + "@errorContentToInsertIsEmpty": { + "description": "Error message when the rich content to be inserted is empty or cannot be accessed." }, - "errorCopyingFailed": "コピーに失敗しました", "@errorCopyingFailed": { "description": "Error message when copying the text of a message to the user's system clipboard failed." }, - "errorFailedToUploadFileTitle": "ファイルのアップロードに失敗しました: {filename}", + "@errorCouldNotConnectTitle": { + "description": "Error title when the app could not connect to the server." + }, + "@errorCouldNotEditMessageTitle": { + "description": "Error title when an exception prevented us from opening the compose box for editing a message." + }, + "@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": { + "description": "Button label in error dialogs to acknowledge the error and close the dialog." + }, + "@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" } } }, - "filenameAndSizeInMiB": "{filename}: {size} MiB", - "@filenameAndSizeInMiB": { - "description": "The name of a file, and its size in mebibytes.", + "@errorFilesTooLarge": { + "description": "Error message when attached files are too large in size.", "placeholders": { - "filename": { - "type": "String", - "example": "foo.txt" + "listMessage": { + "example": "foo.txt: 10.1 MiB\nbar.txt 20.2 MiB", + "type": "String" }, - "size": { - "type": "String", - "example": "20.2" + "maxFileUploadSizeMib": { + "example": "15", + "type": "int" + }, + "num": { + "example": "2", + "type": "int" + } + } + }, + "@errorFilesTooLargeTitle": { + "description": "Error title when attached files are too large in size.", + "placeholders": { + "num": { + "example": "4", + "type": "int" + } + } + }, + "@errorFollowTopicFailed": { + "description": "Error message when following a topic failed." + }, + "@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" } } - } + }, + "@errorHandlingEventTitle": { + "description": "Error title on failing to handle a Zulip server event." + }, + "@errorInvalidApiKeyMessage": { + "description": "Error message in the dialog for invalid API key.", + "placeholders": { + "url": { + "example": "http://chat.example.com/", + "type": "String" + } + } + }, + "@errorInvalidResponse": { + "description": "Error message when an API call returned an invalid response." + }, + "@errorLoginCouldNotConnect": { + "description": "Error message when the app could not connect to the server.", + "placeholders": { + "url": { + "example": "http://example.com/", + "type": "String" + } + } + }, + "@errorLoginFailedTitle": { + "description": "Error title for login when signing into a Zulip server fails." + }, + "@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": { + "httpStatus": { + "example": "200", + "type": "int" + } + } + }, + "@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" + } + } + }, + "@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": { + "description": "Error message when a network request fails." + }, + "@errorNotificationOpenAccountNotFound": { + "description": "Error message when the account associated with the notification could not be found" + }, + "@errorNotificationOpenTitle": { + "description": "Error title when notification opening fails" + }, + "@errorQuotationFailed": { + "description": "Error message when quoting a message failed." + }, + "@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": { + "httpStatus": { + "example": "500", + "type": "int" + } + } + }, + "@errorResolveTopicFailedTitle": { + "description": "Error title when marking a topic as resolved failed." + }, + "@errorServerMessage": { + "description": "Error message that quotes an error from the server.", + "placeholders": { + "message": { + "example": "Invalid format", + "type": "String" + } + } + }, + "@errorServerVersionUnsupportedMessage": { + "description": "Error message in the dialog for when the Zulip Server version is unsupported.", + "placeholders": { + "minSupportedZulipVersion": { + "example": "4.0", + "type": "String" + }, + "url": { + "example": "http://chat.example.com/", + "type": "String" + }, + "zulipVersion": { + "example": "3.2", + "type": "String" + } + } + }, + "@errorSharingAccountNotLoggedIn": { + "description": "Error title when sharing content received from other apps fails, when there is no account logged in" + }, + "@errorSharingFailed": { + "description": "Error message when sharing a message failed." + }, + "@errorSharingTitle": { + "description": "Error title when sharing content received from other apps fails" + }, + "@errorStarMessageFailedTitle": { + "description": "Error title when starring a message failed." + }, + "@errorUnfollowTopicFailed": { + "description": "Error message when unfollowing a topic failed." + }, + "@errorUnmuteTopicFailed": { + "description": "Error message when unmuting a topic failed." + }, + "@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": { + "description": "Title of settings page for experimental, in-development features" + }, + "@experimentalFeatureSettingsWarning": { + "description": "Warning text on settings page for experimental, in-development features" + }, + "@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" + } + } + }, + "@inboxEmptyPlaceholder": { + "description": "Centered text on the 'Inbox' page saying that there is no content to show." + }, + "@inboxPageTitle": { + "description": "Title for the page with unreads." + }, + "@initialAnchorSettingDescription": { + "description": "Description of setting controlling initial anchor of message list." + }, + "@initialAnchorSettingFirstUnreadAlways": { + "description": "Label for a value of setting controlling initial anchor of message list." + }, + "@initialAnchorSettingFirstUnreadConversations": { + "description": "Label for a value of setting controlling initial anchor of message list." + }, + "@initialAnchorSettingNewestAlways": { + "description": "Label for a value of setting controlling initial anchor of message list." + }, + "@initialAnchorSettingTitle": { + "description": "Title of setting controlling initial anchor of message list." + }, + "@invisibleMode": { + "description": "Label for the 'Invisible mode' switch on the profile page." + }, + "@lightboxCopyLinkTooltip": { + "description": "Tooltip in lightbox for the copy link action." + }, + "@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": { + "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": { + "example": "4", + "type": "int" + } + } + }, + "@markAsReadInProgress": { + "description": "Progress message when marking messages as read." + }, + "@markAsUnreadComplete": { + "description": "Message when marking messages as unread has completed.", + "placeholders": { + "num": { + "example": "4", + "type": "int" + } + } + }, + "@markAsUnreadInProgress": { + "description": "Progress message when marking messages as unread." + }, + "@markReadOnScrollSettingAlways": { + "description": "Label for a value of setting controlling which message-list views should mark read on scroll." + }, + "@markReadOnScrollSettingConversations": { + "description": "Label for a value of setting controlling which message-list views should mark read on scroll." + }, + "@markReadOnScrollSettingConversationsDescription": { + "description": "Description for a value of setting controlling which message-list views should mark read on scroll." + }, + "@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": { + "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": { + "example": "Alice, Bob", + "type": "String" + } + } + }, + "@messageListGroupYouWithYourself": { + "description": "Message list recipient header for a DM group that only includes yourself." + }, + "@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.)" + }, + "@mutedUser": { + "description": "Text to display in place of a muted user's name." + }, + "@newDmFabButtonLabel": { + "description": "Label for the floating action button (FAB) that opens the new DM sheet." + }, + "@newDmSheetComposeButtonLabel": { + "description": "Label for the compose button in the new DM sheet that starts composing a message to the selected users." + }, + "@newDmSheetNoUsersFound": { + "description": "Message shown in the new DM sheet when no users match the search." + }, + "@newDmSheetScreenTitle": { + "description": "Title displayed at the top of the new DM screen." + }, + "@newDmSheetSearchHintEmpty": { + "description": "Hint text for the search bar when no users are selected" + }, + "@newDmSheetSearchHintSomeSelected": { + "description": "Hint text for the search bar when at least one user is selected." + }, + "@noEarlierMessages": { + "description": "Text to show at the start of a message list if there are no earlier messages." + }, + "@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": { + "numOthers": { + "example": "4", + "type": "int" + }, + "senderFullName": { + "example": "Alice", + "type": "String" + } + } + }, + "@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": { + "typist": { + "example": "Alice", + "type": "String" + } + } + }, + "@openLinksWithInAppBrowser": { + "description": "Label for toggling setting to open links with in-app browser" + }, + "@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": { + "description": "The list of people who voted for a poll option, wrapped in parentheses.", + "placeholders": { + "voterNames": { + "example": "Alice, Bob, Chad", + "type": "String" + } + } + }, + "@pollWidgetOptionsMissing": { + "description": "Text to display for a poll when it has no options" + }, + "@pollWidgetQuestionMissing": { + "description": "Text to display for a poll when the question is missing" + }, + "@preparingEditMessageContentInput": { + "description": "Hint text for content input when the compose box is preparing to edit a message." + }, + "@profileButtonSendDirectMessage": {}, + "@reactedEmojiSelfUser": { + "description": "Display name for the user themself, to show on an emoji reaction added by the user." + }, + "@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" + } + } + }, + "@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" + } + } + }, + "@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": { + "emojiName": { + "example": "working_on_it", + "type": "String" + }, + "num": { + "example": "2", + "type": "int" + } + } + }, + "@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" + } + } + }, + "@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" + }, + "num": { + "example": "2", + "type": "int" + } + } + }, + "@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": { + "description": "Error message when URL has an unsupported scheme." + }, + "@setStatusPageTitle": { + "description": "Title for the 'Set status' page." + }, + "@settingsPageTitle": { + "description": "Title for the settings page." + }, + "@sharePageTitle": { + "description": "Title for the page about sharing content received from other apps." + }, + "@signInWithFoo": { + "description": "Button to use {method} to sign in to the app.", + "placeholders": { + "method": { + "example": "Google", + "type": "String" + } + } + }, + "@snackBarDetails": { + "description": "Button label for snack bar button that opens a dialog with more details." + }, + "@spoilerDefaultHeaderText": { + "description": "The default header text in a spoiler block ( https://zulip.com/help/spoilers )." + }, + "@starredMessagesPageTitle": { + "description": "Page title for the 'Starred messages' message view." + }, + "@statusButtonLabelStatusSet": { + "description": "The status button label in self-user profile page when status is set." + }, + "@statusButtonLabelStatusUnset": { + "description": "The status button label in self-user profile page when status is not set." + }, + "@statusClearButtonLabel": { + "description": "Label for the button that clears the user status, in 'Set status' page." + }, + "@statusSaveButtonLabel": { + "description": "Label for the button that saves the user status, in 'Set status' page." + }, + "@statusTextHint": { + "description": "Hint text for the status text input field in 'Set status' page." + }, + "@subscribeFailedTitle": { + "description": "Error title when subscribing to a channel failed." + }, + "@successChannelLinkCopied": { + "description": "Message when link of a channel was copied to the user's system clipboard." + }, + "@successLinkCopied": { + "description": "Success message after copy link action completed." + }, + "@successMessageLinkCopied": { + "description": "Message when link of a message was copied to the user's system clipboard." + }, + "@successMessageTextCopied": { + "description": "Message when content of a message was copied to the user's system clipboard." + }, + "@successTopicLinkCopied": { + "description": "Message when link of a topic was copied to the user's system clipboard." + }, + "@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": { + "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." + }, + "@unsubscribeConfirmationDialogConfirmButton": { + "description": "Label for the 'Unsubscribe' button on a confirmation dialog for unsubscribing from a channel." + }, + "@unsubscribeConfirmationDialogMessageMaybeCannotResubscribe": { + "description": "Message for a confirmation dialog for unsubscribing from a channel when you might not have permission to resubscribe." + }, + "@unsubscribeConfirmationDialogTitle": { + "description": "Title for a confirmation dialog for unsubscribing from a channel.", + "placeholders": { + "channelName": { + "example": "mobile", + "type": "String" + } + } + }, + "@unsubscribeFailedTitle": { + "description": "Error title when unsubscribing from a channel failed." + }, + "@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." + }, + "@userActiveDate": { + "description": "Indicates the date when a user was last active on Zulip (who is currently offline).\n\nThe date might be day and month if recent, or day, month, and year if less recent.", + "placeholders": { + "date": { + "example": "Aug 1, 2024", + "type": "String" + } + } + }, + "@userActiveDaysAgo": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)", + "placeholders": { + "days": { + "example": "5", + "type": "int" + } + } + }, + "@userActiveHoursAgo": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)", + "placeholders": { + "hours": { + "example": "5", + "type": "int" + } + } + }, + "@userActiveMinutesAgo": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)", + "placeholders": { + "minutes": { + "example": "5", + "type": "int" + } + } + }, + "@userActiveNow": { + "description": "Indicates a user is currently active on Zulip (not idle or offline)" + }, + "@userActiveYesterday": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)" + }, + "@userIdle": { + "description": "Indicates a user is currently idle on Zulip (not active, but not offline)" + }, + "@userNotActiveInYear": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)" + }, + "@userRoleAdministrator": {}, + "@userRoleGuest": {}, + "@userRoleMember": {}, + "@userRoleModerator": {}, + "@userRoleOwner": {}, + "@userRoleUnknown": {}, + "@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": "アプリのバージョン", + "aboutPageOpenSourceLicenses": "オープンソースライセンス", + "aboutPageTapToView": "タップして表示", + "aboutPageTitle": "Zulipについて", + "actionSheetOptionCopyChannelLink": "チャンネルのリンクをコピー", + "actionSheetOptionCopyMessageLink": "メッセージへのリンクをコピー", + "actionSheetOptionCopyMessageText": "メッセージ本文をコピー", + "actionSheetOptionCopyTopicLink": "トピックのリンクをコピー", + "actionSheetOptionEditMessage": "メッセージを編集", + "actionSheetOptionFollowTopic": "トピックをフォロー", + "actionSheetOptionHideMutedMessage": "ミュートしたメッセージを再び非表示にする", + "actionSheetOptionListOfTopics": "トピック一覧", + "actionSheetOptionMarkAsUnread": "ここから未読にする", + "actionSheetOptionMarkChannelAsRead": "チャンネルを既読にする", + "actionSheetOptionMarkTopicAsRead": "トピックを既読にする", + "actionSheetOptionMuteTopic": "トピックをミュート", + "actionSheetOptionQuoteMessage": "メッセージを引用", + "actionSheetOptionResolveTopic": "解決済みにする", + "actionSheetOptionSeeWhoReacted": "リアクションした人を見る", + "actionSheetOptionShare": "共有", + "actionSheetOptionStarMessage": "メッセージにスターを付ける", + "actionSheetOptionSubscribe": "チャンネルに参加", + "actionSheetOptionUnfollowTopic": "トピックのフォローを解除", + "actionSheetOptionUnmuteTopic": "トピックのミュートを解除", + "actionSheetOptionUnresolveTopic": "未解決にする", + "actionSheetOptionUnstarMessage": "メッセージのスターを外す", + "actionSheetOptionUnsubscribe": "チャンネルから退出", + "actionSheetOptionViewReadReceipts": "既読確認を表示", + "actionSheetReadReceipts": "既読確認", + "actionSheetReadReceiptsErrorReadCount": "既読情報の読み込みに失敗しました。", + "actionSheetReadReceiptsReadCount": "{count, plural, =1{このメッセージは {count} 人に読まれています:} other{このメッセージは {count} 人に読まれています:}}", + "actionSheetReadReceiptsZeroReadCount": "このメッセージはまだ誰も読んでいません。", + "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}とのDM", + "dmsWithYourselfPageTitle": "自分とのDM", + "editAlreadyInProgressMessage": "他の編集が進行中です。完了するまでお待ちください。", + "editAlreadyInProgressTitle": "メッセージを編集できません", + "emojiPickerSearchEmoji": "絵文字を検索", + "emojiReactionsMore": "その他", + "emptyMessageList": "ここにはメッセージがありません。", + "emptyMessageListSearch": "検索結果はありません。", + "errorAccountLoggedIn": "{server} の {email} アカウントは、すでにアカウント一覧に追加されています。", + "errorAccountLoggedInTitle": "このアカウントはすでにログインしています", + "errorBannerCannotPostInChannelLabel": "このチャンネルに投稿する権限がありません。", + "errorBannerDeactivatedDmLabel": "無効化されたユーザーにはメッセージを送信できません。", + "errorConnectingToServerDetails": "Zulip({serverUrl})への接続でエラーが発生しました。再試行します:\n\n{error}", + "errorConnectingToServerShort": "Zulip への接続でエラーが発生しました。再試行中…", + "errorContentNotInsertedTitle": "コンテンツを挿入できませんでした", + "errorContentToInsertIsEmpty": "挿入しようとしたファイルが空、またはアクセスできません。", + "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": "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} です。", + "errorSharingAccountNotLoggedIn": "ログインしていません。アカウントにログインしてから、もう一度お試しください。", + "errorSharingFailed": "共有に失敗しました", + "errorSharingTitle": "コンテンツを共有できませんでした", + "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": "Zulip サーバーのURL", + "loginUsernameLabel": "ユーザー名", + "mainMenuMyProfile": "自分のプロフィール", + "manyPeopleTyping": "複数のユーザーが入力中…", + "markAllAsReadLabel": "すべてのメッセージを既読にする", + "markAsReadComplete": "{num, plural, =1{1 message} other{{num} messages}}件のメッセージを既読にしました。", + "markAsReadInProgress": "メッセージを既読にしています…", + "markAsUnreadComplete": "{num, plural, =1{1 message} other{{num} messages}}件のメッセージを未読にしました。", + "markAsUnreadInProgress": "メッセージを未読にしています…", + "markReadOnScrollSettingAlways": "常に既読にする", + "markReadOnScrollSettingConversations": "会話ビューのみ", + "markReadOnScrollSettingConversationsDescription": "メッセージは、単一のトピックまたはダイレクトメッセージの会話を表示しているときのみ、自動的に既読になります。", + "markReadOnScrollSettingDescription": "メッセージをスクロールしたとき、自動的に既読にしますか?", + "markReadOnScrollSettingNever": "既読にしない", + "markReadOnScrollSettingTitle": "スクロールでメッセージを既読にする", + "mentionsPageTitle": "メンション", + "messageIsEditedLabel": "編集済み", + "messageIsMovedLabel": "移動済み", + "messageListGroupYouAndOthers": "自分と{others}", + "messageListGroupYouWithYourself": "自分とのメッセージ", + "messageNotSentLabel": "メッセージ未送信", + "mutedUser": "ミュート中のユーザー", + "newDmFabButtonLabel": "新しいDM", + "newDmSheetComposeButtonLabel": "作成", + "newDmSheetNoUsersFound": "ユーザーが見つかりません", + "newDmSheetScreenTitle": "新しいDM", + "newDmSheetSearchHintEmpty": "1人以上のユーザーを追加", + "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": "設定", + "sharePageTitle": "共有", + "signInWithFoo": "{method}でログイン", + "snackBarDetails": "詳細", + "spoilerDefaultHeaderText": "内容を隠す", + "starredMessagesPageTitle": "スター付きメッセージ", + "statusButtonLabelStatusSet": "ステータス", + "statusButtonLabelStatusUnset": "ステータスを設定", + "statusClearButtonLabel": "クリア", + "statusSaveButtonLabel": "保存", + "statusTextHint": "自分のステータス", + "subscribeFailedTitle": "チャンネルへの参加に失敗しました", + "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": "ピン留めなし", + "unsubscribeConfirmationDialogConfirmButton": "チャンネルから退出", + "unsubscribeConfirmationDialogMessageMaybeCannotResubscribe": "このチャンネルを退出すると、再び参加できない可能性があります。", + "unsubscribeConfirmationDialogTitle": "{channelName} から退出しますか?", + "unsubscribeFailedTitle": "チャンネルからの退出に失敗しました", + "updateStatusErrorTitle": "ステータスの更新に失敗しました。もう一度お試しください。", + "upgradeWelcomeDialogDismiss": "はじめよう", + "upgradeWelcomeDialogLinkText": "お知らせブログ記事をご確認ください!", + "upgradeWelcomeDialogMessage": "より速く、洗練されたデザインで、これまでと同じ使い心地をお楽しみいただけます。", + "upgradeWelcomeDialogTitle": "新しいZulipアプリへようこそ!", + "userActiveDate": "{date}にオンライン", + "userActiveDaysAgo": "{days, plural, =1{1 day} other{{days} days}}日前にオンライン", + "userActiveHoursAgo": "{hours, plural, =1{1 hour} other{{hours} hours}}時間前にオンライン", + "userActiveMinutesAgo": "{minutes, plural, =1{1 minute} other{{minutes} minutes}}分前にオンライン", + "userActiveNow": "オンライン", + "userActiveYesterday": "昨日オンライン", + "userIdle": "退席中", + "userNotActiveInYear": "1年以上活動していません", + "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_pl.arb b/assets/l10n/app_pl.arb index 73ade45245..ccfed00d3b 100644 --- a/assets/l10n/app_pl.arb +++ b/assets/l10n/app_pl.arb @@ -62,6 +62,9 @@ "@actionSheetOptionStarMessage": { "description": "Label for star button on action sheet." }, + "@actionSheetOptionSubscribe": { + "description": "Label in the channel action sheet for subscribing to the channel." + }, "@actionSheetOptionUnfollowTopic": { "description": "Label for unfollowing a topic on action sheet." }, @@ -74,6 +77,30 @@ "@actionSheetOptionUnstarMessage": { "description": "Label for unstar button on action sheet." }, + "@actionSheetOptionUnsubscribe": { + "description": "Label in the channel action sheet for unsubscribing from the channel." + }, + "@actionSheetOptionViewReadReceipts": { + "description": "Label for the 'View read receipts' button in the message action sheet." + }, + "@actionSheetReadReceipts": { + "description": "Title for the \"Read receipts\" bottom sheet." + }, + "@actionSheetReadReceiptsErrorReadCount": { + "description": "Label in the \"Read receipts\" bottom sheet when loading read receipts failed." + }, + "@actionSheetReadReceiptsReadCount": { + "description": "Label in the \"Read receipts\" bottom sheet when one or more people have read the message.", + "placeholders": { + "count": { + "example": "1", + "type": "int" + } + } + }, + "@actionSheetReadReceiptsZeroReadCount": { + "description": "Label in the \"Read receipts\" bottom sheet when no one has read the message." + }, "@appVersionUnknownPlaceholder": { "description": "Placeholder to show in place of the app version when it is unknown." }, @@ -277,6 +304,12 @@ "@errorConnectingToServerShort": { "description": "Short error message for a generic unknown error connecting to the server." }, + "@errorContentNotInsertedTitle": { + "description": "Title for error dialog when an attempt to insert rich content failed." + }, + "@errorContentToInsertIsEmpty": { + "description": "Error message when the rich content to be inserted is empty or cannot be accessed." + }, "@errorCopyingFailed": { "description": "Error message when copying the text of a message to the user's system clipboard failed." }, @@ -494,9 +527,15 @@ } } }, + "@errorSharingAccountNotLoggedIn": { + "description": "Error title when sharing content received from other apps fails, when there is no account logged in" + }, "@errorSharingFailed": { "description": "Error message when sharing a message failed." }, + "@errorSharingTitle": { + "description": "Error title when sharing content received from other apps fails" + }, "@errorStarMessageFailedTitle": { "description": "Error title when starring a message failed." }, @@ -898,6 +937,9 @@ "@settingsPageTitle": { "description": "Title for the settings page." }, + "@sharePageTitle": { + "description": "Title for the page about sharing content received from other apps." + }, "@signInWithFoo": { "description": "Button to use {method} to sign in to the app.", "placeholders": { @@ -931,6 +973,9 @@ "@statusTextHint": { "description": "Hint text for the status text input field in 'Set status' page." }, + "@subscribeFailedTitle": { + "description": "Error title when subscribing to a channel failed." + }, "@successChannelLinkCopied": { "description": "Message when link of a channel was copied to the user's system clipboard." }, @@ -1011,6 +1056,24 @@ "@unpinnedSubscriptionsLabel": { "description": "Label for the list of unpinned subscribed channels." }, + "@unsubscribeConfirmationDialogConfirmButton": { + "description": "Label for the 'Unsubscribe' button on a confirmation dialog for unsubscribing from a channel." + }, + "@unsubscribeConfirmationDialogMessageMaybeCannotResubscribe": { + "description": "Message for a confirmation dialog for unsubscribing from a channel when you might not have permission to resubscribe." + }, + "@unsubscribeConfirmationDialogTitle": { + "description": "Title for a confirmation dialog for unsubscribing from a channel.", + "placeholders": { + "channelName": { + "example": "mobile", + "type": "String" + } + } + }, + "@unsubscribeFailedTitle": { + "description": "Error title when unsubscribing from a channel failed." + }, "@updateStatusErrorTitle": { "description": "Error title when updating user status failed." }, @@ -1026,6 +1089,54 @@ "@upgradeWelcomeDialogTitle": { "description": "Title for dialog shown on first upgrade from the legacy Zulip app." }, + "@userActiveDate": { + "description": "Indicates the date when a user was last active on Zulip (who is currently offline).\n\nThe date might be day and month if recent, or day, month, and year if less recent.", + "placeholders": { + "date": { + "example": "Aug 1, 2024", + "type": "String" + } + } + }, + "@userActiveDaysAgo": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)", + "placeholders": { + "days": { + "example": "5", + "type": "int" + } + } + }, + "@userActiveHoursAgo": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)", + "placeholders": { + "hours": { + "example": "5", + "type": "int" + } + } + }, + "@userActiveMinutesAgo": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)", + "placeholders": { + "minutes": { + "example": "5", + "type": "int" + } + } + }, + "@userActiveNow": { + "description": "Indicates a user is currently active on Zulip (not idle or offline)" + }, + "@userActiveYesterday": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)" + }, + "@userIdle": { + "description": "Indicates a user is currently idle on Zulip (not active, but not offline)" + }, + "@userNotActiveInYear": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)" + }, "@userRoleAdministrator": { "description": "Label for UserRole.administrator" }, @@ -1119,10 +1230,17 @@ "actionSheetOptionSeeWhoReacted": "Pokaż kto zareagował", "actionSheetOptionShare": "Udostępnij", "actionSheetOptionStarMessage": "Oznacz gwiazdką", + "actionSheetOptionSubscribe": "Subskrybuj", "actionSheetOptionUnfollowTopic": "Nie śledź wątku", "actionSheetOptionUnmuteTopic": "Wznów wątek", "actionSheetOptionUnresolveTopic": "Oznacz brak rozwiązania", "actionSheetOptionUnstarMessage": "Odbierz gwiazdkę", + "actionSheetOptionUnsubscribe": "Odsubskrybuj", + "actionSheetOptionViewReadReceipts": "Zobacz potwierdzenia odczytu", + "actionSheetReadReceipts": "Potwierdzenia odczytu", + "actionSheetReadReceiptsErrorReadCount": "Ładowanie potwierdzeń odczytu bez powodzenia.", + "actionSheetReadReceiptsReadCount": "{count, plural, =1{Ta wiadomość została przeczytana przez {count} osobę:} other{Ta wiadomość została przeczytana przez {count} osób:}}", + "actionSheetReadReceiptsZeroReadCount": "Nikt jeszcze nie widział tej wiadomości.", "appVersionUnknownPlaceholder": "(…)", "channelFeedButtonTooltip": "Strumień kanału", "channelsEmptyPlaceholder": "Nie śledzisz żadnego z kanałów.", @@ -1172,6 +1290,8 @@ "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…", + "errorContentNotInsertedTitle": "Dodanie zawartości bez powodzenia", + "errorContentToInsertIsEmpty": "Plik do dodania jest pusty lub nie ma do niego dostępu.", "errorCopyingFailed": "Nie udało się skopiować", "errorCouldNotConnectTitle": "Brak połączenia", "errorCouldNotEditMessageTitle": "Nie można zmienić wiadomości", @@ -1211,7 +1331,9 @@ "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}.", + "errorSharingAccountNotLoggedIn": "Brak zalogowanego użytkownika. Proszę zaloguj się i spróbuj ponownie.", "errorSharingFailed": "Udostępnianie bez powodzenia", + "errorSharingTitle": "Udostępnianie zawartości bez powodzenia", "errorStarMessageFailedTitle": "Dodanie gwiazdki bez powodzenia", "errorUnfollowTopicFailed": "Nie śledź bez powodzenia", "errorUnmuteTopicFailed": "Wznowienie bez powodzenia", @@ -1315,6 +1437,7 @@ "serverUrlValidationErrorUnsupportedScheme": "Adres URL serwera musi zaczynać się od http:// or https://.", "setStatusPageTitle": "Ustaw stan", "settingsPageTitle": "Ustawienia", + "sharePageTitle": "Udostępnij", "signInWithFoo": "Logowanie z {method}", "snackBarDetails": "Szczegóły", "spoilerDefaultHeaderText": "Spoiler", @@ -1324,6 +1447,7 @@ "statusClearButtonLabel": "Wyczyść", "statusSaveButtonLabel": "Zapisz", "statusTextHint": "Twój stan", + "subscribeFailedTitle": "Subskrypcja bez powodzenia", "successChannelLinkCopied": "Skopiowano odnośnik do kanału", "successLinkCopied": "Skopiowano odnośnik", "successMessageLinkCopied": "Skopiowano odnośnik wiadomości", @@ -1346,11 +1470,23 @@ "unknownChannelName": "(nieznany kanał)", "unknownUserName": "(nieznany użytkownik)", "unpinnedSubscriptionsLabel": "Odpięte", + "unsubscribeConfirmationDialogConfirmButton": "Odsubskrybuj", + "unsubscribeConfirmationDialogMessageMaybeCannotResubscribe": "Po opuszczeniu kanału możesz utracić możliwość powrotu.", + "unsubscribeConfirmationDialogTitle": "Odsubskrybować z {channelName}?", + "unsubscribeFailedTitle": "Odsubskrybowanie bez powdzenia", "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!", + "userActiveDate": "Aktywny {date}", + "userActiveDaysAgo": "Aktywny {days, plural, =1{1 dzień} other{{days} dni}} temu", + "userActiveHoursAgo": "Aktywny {hours, plural, =1{1 godzinę} other{{hours} godzin}} temu", + "userActiveMinutesAgo": "Aktywny {minutes, plural, =1{1 minutę} other{{minutes} minut}} temu", + "userActiveNow": "Dostępny", + "userActiveYesterday": "Aktywny wczoraj", + "userIdle": "Bezczynny", + "userNotActiveInYear": "Brak aktywności za ostatni rok", "userRoleAdministrator": "Administrator", "userRoleGuest": "Gość", "userRoleMember": "Członek", diff --git a/assets/l10n/app_ru.arb b/assets/l10n/app_ru.arb index b147a7f321..8610859f29 100644 --- a/assets/l10n/app_ru.arb +++ b/assets/l10n/app_ru.arb @@ -80,6 +80,27 @@ "@actionSheetOptionUnsubscribe": { "description": "Label in the channel action sheet for unsubscribing from the channel." }, + "@actionSheetOptionViewReadReceipts": { + "description": "Label for the 'View read receipts' button in the message action sheet." + }, + "@actionSheetReadReceipts": { + "description": "Title for the \"Read receipts\" bottom sheet." + }, + "@actionSheetReadReceiptsErrorReadCount": { + "description": "Label in the \"Read receipts\" bottom sheet when loading read receipts failed." + }, + "@actionSheetReadReceiptsReadCount": { + "description": "Label in the \"Read receipts\" bottom sheet when one or more people have read the message.", + "placeholders": { + "count": { + "example": "1", + "type": "int" + } + } + }, + "@actionSheetReadReceiptsZeroReadCount": { + "description": "Label in the \"Read receipts\" bottom sheet when no one has read the message." + }, "@appVersionUnknownPlaceholder": { "description": "Placeholder to show in place of the app version when it is unknown." }, @@ -283,6 +304,12 @@ "@errorConnectingToServerShort": { "description": "Short error message for a generic unknown error connecting to the server." }, + "@errorContentNotInsertedTitle": { + "description": "Title for error dialog when an attempt to insert rich content failed." + }, + "@errorContentToInsertIsEmpty": { + "description": "Error message when the rich content to be inserted is empty or cannot be accessed." + }, "@errorCopyingFailed": { "description": "Error message when copying the text of a message to the user's system clipboard failed." }, @@ -500,9 +527,15 @@ } } }, + "@errorSharingAccountNotLoggedIn": { + "description": "Error title when sharing content received from other apps fails, when there is no account logged in" + }, "@errorSharingFailed": { "description": "Error message when sharing a message failed." }, + "@errorSharingTitle": { + "description": "Error title when sharing content received from other apps fails" + }, "@errorStarMessageFailedTitle": { "description": "Error title when starring a message failed." }, @@ -904,6 +937,9 @@ "@settingsPageTitle": { "description": "Title for the settings page." }, + "@sharePageTitle": { + "description": "Title for the page about sharing content received from other apps." + }, "@signInWithFoo": { "description": "Button to use {method} to sign in to the app.", "placeholders": { @@ -1053,6 +1089,54 @@ "@upgradeWelcomeDialogTitle": { "description": "Title for dialog shown on first upgrade from the legacy Zulip app." }, + "@userActiveDate": { + "description": "Indicates the date when a user was last active on Zulip (who is currently offline).\n\nThe date might be day and month if recent, or day, month, and year if less recent.", + "placeholders": { + "date": { + "example": "Aug 1, 2024", + "type": "String" + } + } + }, + "@userActiveDaysAgo": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)", + "placeholders": { + "days": { + "example": "5", + "type": "int" + } + } + }, + "@userActiveHoursAgo": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)", + "placeholders": { + "hours": { + "example": "5", + "type": "int" + } + } + }, + "@userActiveMinutesAgo": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)", + "placeholders": { + "minutes": { + "example": "5", + "type": "int" + } + } + }, + "@userActiveNow": { + "description": "Indicates a user is currently active on Zulip (not idle or offline)" + }, + "@userActiveYesterday": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)" + }, + "@userIdle": { + "description": "Indicates a user is currently idle on Zulip (not active, but not offline)" + }, + "@userNotActiveInYear": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)" + }, "@userRoleAdministrator": { "description": "Label for UserRole.administrator" }, @@ -1152,6 +1236,11 @@ "actionSheetOptionUnresolveTopic": "Снять отметку \"решено\"", "actionSheetOptionUnstarMessage": "Снять отметку с сообщения", "actionSheetOptionUnsubscribe": "Отписаться", + "actionSheetOptionViewReadReceipts": "Посмотреть подтверждения прочтения", + "actionSheetReadReceipts": "Подтверждения прочтения", + "actionSheetReadReceiptsErrorReadCount": "Не удалось загрузить подтверждения прочтения.", + "actionSheetReadReceiptsReadCount": "{count, plural, one{Это сообщение было прочитано {count} пользователем:} other{Это сообщение было прочитано {count} пользователями:}}", + "actionSheetReadReceiptsZeroReadCount": "Это сообщение еще никто не прочитал.", "appVersionUnknownPlaceholder": "(…)", "channelFeedButtonTooltip": "Лента канала", "channelsEmptyPlaceholder": "Вы ещё не подписаны ни на один канал.", @@ -1201,6 +1290,8 @@ "errorBannerDeactivatedDmLabel": "Нельзя отправить сообщение отключенным пользователям.", "errorConnectingToServerDetails": "Ошибка подключения к Zulip на {serverUrl}. Повторим попытку:\n\n{error}", "errorConnectingToServerShort": "Ошибка подключения к Zulip. Повторяем попытку…", + "errorContentNotInsertedTitle": "Содержимое не вставлено", + "errorContentToInsertIsEmpty": "Файл для вставки пустой, или к нему нет доступа.", "errorCopyingFailed": "Сбой копирования", "errorCouldNotConnectTitle": "Нет связи с сервером", "errorCouldNotEditMessageTitle": "Сбой редактирования", @@ -1240,7 +1331,9 @@ "errorResolveTopicFailedTitle": "Не удалось отметить тему как решенную", "errorServerMessage": "Ответ сервера:\n\n{message}", "errorServerVersionUnsupportedMessage": "{url} использует Zulip Server {zulipVersion}, который не поддерживается. Минимальная поддерживаемая версия — Zulip Server {minSupportedZulipVersion}.", + "errorSharingAccountNotLoggedIn": "Не выполнен вход с учетной записью. Пожалуйста, войдите в систему и повторите попытку.", "errorSharingFailed": "Не удалось поделиться", + "errorSharingTitle": "Не удалось поделиться содержанием", "errorStarMessageFailedTitle": "Не удалось отметить сообщение", "errorUnfollowTopicFailed": "Не удалось прекратить отслеживать тему", "errorUnmuteTopicFailed": "Не удалось включить оповещения темы", @@ -1344,6 +1437,7 @@ "serverUrlValidationErrorUnsupportedScheme": "URL-адрес сервера должен начинаться с http:// или https://.", "setStatusPageTitle": "Установить статус", "settingsPageTitle": "Настройки", + "sharePageTitle": "Поделиться", "signInWithFoo": "Войти с помощью {method}", "snackBarDetails": "Подробности", "spoilerDefaultHeaderText": "Спойлер", @@ -1381,10 +1475,18 @@ "unsubscribeConfirmationDialogTitle": "Отменить подписку на {channelName}?", "unsubscribeFailedTitle": "Не удалось отписаться", "updateStatusErrorTitle": "Ошибка обновления статуса пользователя. Попробуйте ещё раз.", - "upgradeWelcomeDialogDismiss": "Приступим!", + "upgradeWelcomeDialogDismiss": "Приступим", "upgradeWelcomeDialogLinkText": "Ознакомьтесь с анонсом в блоге!", "upgradeWelcomeDialogMessage": "Вы найдете привычные возможности в более быстром и легком приложении.", "upgradeWelcomeDialogTitle": "Добро пожаловать в новое приложение Zulip!", + "userActiveDate": "Был/а на связи {date}", + "userActiveDaysAgo": "Был/а на связи {days, plural, one{{days} день} few{{days} дня} many{{days} дней} other{{days} дней}} назад", + "userActiveHoursAgo": "Был/а на связи {hours, plural, one{{hours} час} few{{hours} часа} many{{hours} часов} other{{hours} часов}} назад", + "userActiveMinutesAgo": "Был/а на связи {minutes, plural, one{{minutes} минуту} few{{minutes} минуты} many{{minutes} минут} other{{minutes} минут}} назад", + "userActiveNow": "На связи", + "userActiveYesterday": "Был/а на связи вчера", + "userIdle": "Бездействует", + "userNotActiveInYear": "Не выходил/а на связь за последний год", "userRoleAdministrator": "Администратор", "userRoleGuest": "Гость", "userRoleMember": "Участник", diff --git a/assets/l10n/app_uk.arb b/assets/l10n/app_uk.arb index 06d798fe5d..5abc3bf35e 100644 --- a/assets/l10n/app_uk.arb +++ b/assets/l10n/app_uk.arb @@ -11,6 +11,9 @@ "@aboutPageTitle": { "description": "Title for About Zulip page." }, + "@actionSheetOptionChannelFeed": { + "description": "Label for navigating to a channel's channel-feed page." + }, "@actionSheetOptionCopyChannelLink": { "description": "Label for copy channel link button on action sheet." }, @@ -80,6 +83,27 @@ "@actionSheetOptionUnsubscribe": { "description": "Label in the channel action sheet for unsubscribing from the channel." }, + "@actionSheetOptionViewReadReceipts": { + "description": "Label for the 'View read receipts' button in the message action sheet." + }, + "@actionSheetReadReceipts": { + "description": "Title for the \"Read receipts\" bottom sheet." + }, + "@actionSheetReadReceiptsErrorReadCount": { + "description": "Label in the \"Read receipts\" bottom sheet when loading read receipts failed." + }, + "@actionSheetReadReceiptsReadCount": { + "description": "Label in the \"Read receipts\" bottom sheet when one or more people have read the message.", + "placeholders": { + "count": { + "example": "1", + "type": "int" + } + } + }, + "@actionSheetReadReceiptsZeroReadCount": { + "description": "Label in the \"Read receipts\" bottom sheet when no one has read the message." + }, "@appVersionUnknownPlaceholder": { "description": "Placeholder to show in place of the app version when it is unknown." }, @@ -283,6 +307,12 @@ "@errorConnectingToServerShort": { "description": "Short error message for a generic unknown error connecting to the server." }, + "@errorContentNotInsertedTitle": { + "description": "Title for error dialog when an attempt to insert rich content failed." + }, + "@errorContentToInsertIsEmpty": { + "description": "Error message when the rich content to be inserted is empty or cannot be accessed." + }, "@errorCopyingFailed": { "description": "Error message when copying the text of a message to the user's system clipboard failed." }, @@ -500,9 +530,15 @@ } } }, + "@errorSharingAccountNotLoggedIn": { + "description": "Error title when sharing content received from other apps fails, when there is no account logged in" + }, "@errorSharingFailed": { "description": "Error message when sharing a message failed." }, + "@errorSharingTitle": { + "description": "Error title when sharing content received from other apps fails" + }, "@errorStarMessageFailedTitle": { "description": "Error title when starring a message failed." }, @@ -904,6 +940,9 @@ "@settingsPageTitle": { "description": "Title for the settings page." }, + "@sharePageTitle": { + "description": "Title for the page about sharing content received from other apps." + }, "@signInWithFoo": { "description": "Button to use {method} to sign in to the app.", "placeholders": { @@ -1053,6 +1092,54 @@ "@upgradeWelcomeDialogTitle": { "description": "Title for dialog shown on first upgrade from the legacy Zulip app." }, + "@userActiveDate": { + "description": "Indicates the date when a user was last active on Zulip (who is currently offline).\n\nThe date might be day and month if recent, or day, month, and year if less recent.", + "placeholders": { + "date": { + "example": "Aug 1, 2024", + "type": "String" + } + } + }, + "@userActiveDaysAgo": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)", + "placeholders": { + "days": { + "example": "5", + "type": "int" + } + } + }, + "@userActiveHoursAgo": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)", + "placeholders": { + "hours": { + "example": "5", + "type": "int" + } + } + }, + "@userActiveMinutesAgo": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)", + "placeholders": { + "minutes": { + "example": "5", + "type": "int" + } + } + }, + "@userActiveNow": { + "description": "Indicates a user is currently active on Zulip (not idle or offline)" + }, + "@userActiveYesterday": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)" + }, + "@userIdle": { + "description": "Indicates a user is currently idle on Zulip (not active, but not offline)" + }, + "@userNotActiveInYear": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)" + }, "@userRoleAdministrator": { "description": "Label for UserRole.administrator" }, @@ -1129,6 +1216,7 @@ "aboutPageOpenSourceLicenses": "Ліцензії з відкритим кодом", "aboutPageTapToView": "Натисніть, щоб переглянути", "aboutPageTitle": "Про Zulip", + "actionSheetOptionChannelFeed": "Стрічка каналу", "actionSheetOptionCopyChannelLink": "Копіювати посилання на канал", "actionSheetOptionCopyMessageLink": "Копіювати посилання на повідомлення", "actionSheetOptionCopyMessageText": "Копіювати текст повідомлення", @@ -1152,6 +1240,11 @@ "actionSheetOptionUnresolveTopic": "Позначити як невирішене", "actionSheetOptionUnstarMessage": "Зняти позначку зірки з повідомлення", "actionSheetOptionUnsubscribe": "Скасувати підписку", + "actionSheetOptionViewReadReceipts": "Переглянути сповіщення про прочитання", + "actionSheetReadReceipts": "Квитанції про прочитання", + "actionSheetReadReceiptsErrorReadCount": "Не вдалося завантажити сповіщення про прочитання.", + "actionSheetReadReceiptsReadCount": "{count, plural, =1{Це повідомлення було прочитано {count} особою:} other{Це повідомлення було прочитано {count} людьми:}}", + "actionSheetReadReceiptsZeroReadCount": "Ніхто ще не прочитав цього повідомлення.", "appVersionUnknownPlaceholder": "(…)", "channelFeedButtonTooltip": "Стрічка каналу", "channelsEmptyPlaceholder": "Ви ще не підписані на жодний канал.", @@ -1201,6 +1294,8 @@ "errorBannerDeactivatedDmLabel": "Ви не можете надсилати повідомлення деактивованим користувачам.", "errorConnectingToServerDetails": "Помилка підключення до Zulip на {serverUrl}. Буде повторена спроба:\n\n{error}", "errorConnectingToServerShort": "Помилка підключення до Zulip. Повторна спроба…", + "errorContentNotInsertedTitle": "Вміст не вставлено", + "errorContentToInsertIsEmpty": "Файл, який потрібно вставити, порожній або до нього немає доступу.", "errorCopyingFailed": "Помилка копіювання", "errorCouldNotConnectTitle": "Не вдалося підключитися", "errorCouldNotEditMessageTitle": "Не вдалося редагувати повідомлення", @@ -1240,7 +1335,9 @@ "errorResolveTopicFailedTitle": "Не вдалося позначити тему як вирішену", "errorServerMessage": "Сервер сказав:\n\n{message}", "errorServerVersionUnsupportedMessage": "{url} використовує Zulip Server {zulipVersion}, який не підтримується. Мінімальною підтримуваною версією є Zulip Server {minSupportedZulipVersion}.", + "errorSharingAccountNotLoggedIn": "Немає облікового запису, в який ви ввійшли. Будь ласка, увійдіть в обліковий запис і спробуйте ще раз..", "errorSharingFailed": "Поширення не вдалося", + "errorSharingTitle": "Не вдалося поділитися контентом", "errorStarMessageFailedTitle": "Не вдалося позначити повідомлення зіркою", "errorUnfollowTopicFailed": "Не вдалося відписатися від теми", "errorUnmuteTopicFailed": "Не вдалося увімкнути тему", @@ -1344,6 +1441,7 @@ "serverUrlValidationErrorUnsupportedScheme": "URL-адреса сервера має починатися з http:// або https://.", "setStatusPageTitle": "Встановити статус", "settingsPageTitle": "Налаштування", + "sharePageTitle": "Поділитися", "signInWithFoo": "Увійти з {method}", "snackBarDetails": "Деталі", "spoilerDefaultHeaderText": "Спойлер", @@ -1381,10 +1479,18 @@ "unsubscribeConfirmationDialogTitle": "Відписатися від {channelName}?", "unsubscribeFailedTitle": "Не вдалося скасувати підписку", "updateStatusErrorTitle": "Помилка оновлення статусу користувача. Спробуйте ще раз.", - "upgradeWelcomeDialogDismiss": "Ходімо!", + "upgradeWelcomeDialogDismiss": "Ходімо", "upgradeWelcomeDialogLinkText": "Ознайомтесь з анонсом у блозі!", "upgradeWelcomeDialogMessage": "Ви знайдете звичні можливості у більш швидкому і легкому додатку.", "upgradeWelcomeDialogTitle": "Ласкаво просимо у новий додаток Zulip!", + "userActiveDate": "Активний {date}", + "userActiveDaysAgo": "Активний {days, plural, =1{1 день} other{{days} дні}} тому", + "userActiveHoursAgo": "Активний {hours, plural, =1{1 година} other{{hours} години}} тому", + "userActiveMinutesAgo": "Активний {minutes, plural, =1{1 хвилина} other{{minutes} хвилин}} тому", + "userActiveNow": "Активний зараз", + "userActiveYesterday": "Активний учора", + "userIdle": "Холостий хід", + "userNotActiveInYear": "Неактивний протягом останнього року", "userRoleAdministrator": "Адміністратор", "userRoleGuest": "Гість", "userRoleMember": "Учасник", diff --git a/assets/l10n/app_zh_Hans_CN.arb b/assets/l10n/app_zh_Hans_CN.arb index e47d033f4b..52ce2b70c4 100644 --- a/assets/l10n/app_zh_Hans_CN.arb +++ b/assets/l10n/app_zh_Hans_CN.arb @@ -1,1194 +1,1512 @@ { - "settingsPageTitle": "设置", - "@settingsPageTitle": {}, - "actionSheetOptionResolveTopic": "标记为已解决", - "@actionSheetOptionResolveTopic": { - "description": "Label for the 'Mark as resolved' button on the topic action sheet." - }, - "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" }, - "chooseAccountPageTitle": "选择账号", - "@chooseAccountPageTitle": { - "description": "Title for the page to choose between Zulip accounts." + "@aboutPageTapToView": { + "description": "Item subtitle in About Zulip page to navigate to Licenses page" }, - "switchAccountButton": "切换账号", - "@switchAccountButton": { - "description": "Label for main-menu button leading to the choose-account page." + "@aboutPageTitle": { + "description": "Title for About Zulip page." }, - "tryAnotherAccountButton": "尝试另一个账号", - "@tryAnotherAccountButton": { - "description": "Label for loading screen button prompting user to try another account." + "@actionSheetOptionCopyChannelLink": { + "description": "Label for copy channel link button on action sheet." }, - "chooseAccountPageLogOutButton": "登出", - "@chooseAccountPageLogOutButton": { - "description": "Label for the 'Log out' button for an account on the choose-account page" + "@actionSheetOptionCopyMessageLink": { + "description": "Label for copy message link button on action sheet." }, - "logOutConfirmationDialogTitle": "登出?", - "@logOutConfirmationDialogTitle": { - "description": "Title for a confirmation dialog for logging out." + "@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." }, - "profileButtonSendDirectMessage": "发送私信", - "@profileButtonSendDirectMessage": { - "description": "Label for button in profile screen to navigate to DMs with the shown user." + "@actionSheetOptionEditMessage": { + "description": "Label for the 'Edit message' button in the message action sheet." }, - "errorCouldNotShowUserProfile": "无法显示用户个人资料。", - "@errorCouldNotShowUserProfile": { - "description": "Message that appears on the user profile page when the profile cannot be shown." + "@actionSheetOptionFollowTopic": { + "description": "Label for following a topic on action sheet." }, - "permissionsNeededOpenSettings": "打开设置", - "@permissionsNeededOpenSettings": { - "description": "Button label for permissions dialog button that opens the system settings screen." + "@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": "标记频道为已读", "@actionSheetOptionMarkChannelAsRead": { "description": "Label for marking a channel as read." }, - "actionSheetOptionListOfTopics": "话题列表", - "@actionSheetOptionListOfTopics": { - "description": "Label for navigating to a channel's topic-list page." + "@actionSheetOptionMarkTopicAsRead": { + "description": "Option to mark a specific topic as read in the action sheet." }, - "actionSheetOptionFollowTopic": "关注话题", - "@actionSheetOptionFollowTopic": { - "description": "Label for following a topic on 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": { + "description": "Label for share button on action sheet." + }, + "@actionSheetOptionStarMessage": { + "description": "Label for star button on action sheet." + }, + "@actionSheetOptionSubscribe": { + "description": "Label in the channel action sheet for subscribing to the channel." }, - "actionSheetOptionUnfollowTopic": "取消关注话题", "@actionSheetOptionUnfollowTopic": { "description": "Label for unfollowing a topic on action sheet." }, - "zulipAppTitle": "Zulip", - "@zulipAppTitle": { - "description": "The name of Zulip. This should be either 'Zulip' or a transliteration." + "@actionSheetOptionUnmuteTopic": { + "description": "Label for unmuting a topic on action sheet." }, - "aboutPageTapToView": "查看更多", - "@aboutPageTapToView": { - "description": "Item subtitle in About Zulip page to navigate to Licenses page" + "@actionSheetOptionUnresolveTopic": { + "description": "Label for the 'Mark as unresolved' button on the topic 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/" + "@actionSheetOptionUnstarMessage": { + "description": "Label for unstar button on action sheet." + }, + "@actionSheetOptionUnsubscribe": { + "description": "Label in the channel action sheet for unsubscribing from the channel." + }, + "@actionSheetOptionViewReadReceipts": { + "description": "Label for the 'View read receipts' button in the message action sheet." + }, + "@actionSheetReadReceipts": { + "description": "Title for the \"Read receipts\" bottom sheet." + }, + "@actionSheetReadReceiptsErrorReadCount": { + "description": "Label in the \"Read receipts\" bottom sheet when loading read receipts failed." + }, + "@actionSheetReadReceiptsReadCount": { + "description": "Label in the \"Read receipts\" bottom sheet when one or more people have read the message.", + "placeholders": { + "count": { + "example": "1", + "type": "int" + } } }, - "logOutConfirmationDialogMessage": "下次登入此账号时,您将需要重新输入组织网址和账号信息。", - "@logOutConfirmationDialogMessage": { - "description": "Message for a confirmation dialog for logging out." + "@actionSheetReadReceiptsZeroReadCount": { + "description": "Label in the \"Read receipts\" bottom sheet when no one has read the message." }, - "logOutConfirmationDialogConfirmButton": "登出", - "@logOutConfirmationDialogConfirmButton": { - "description": "Label for the 'Log out' button on a confirmation dialog for logging out." + "@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." }, - "newDmSheetComposeButtonLabel": "撰写消息", - "@newDmSheetComposeButtonLabel": { - "description": "Label for the compose button in the new DM sheet that starts composing a message to the selected users." + "@chooseAccountButtonAddAnAccount": { + "description": "Label for ChooseAccountPage button to add an account" + }, + "@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": { + "description": "Tooltip for compose box icon to attach a file to the message." + }, + "@composeBoxAttachFromCameraTooltip": { + "description": "Tooltip for compose box icon to attach an image from the camera to the message." + }, + "@composeBoxAttachMediaTooltip": { + "description": "Tooltip for compose box icon to attach media to the message." + }, + "@composeBoxBannerButtonCancel": { + "description": "Label text for the 'Cancel' button in the compose-box banner when you are editing a message." + }, + "@composeBoxBannerButtonSave": { + "description": "Label text for the 'Save' button in the compose-box banner when you are editing a message." + }, + "@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" } } }, - "preparingEditMessageContentInput": "准备编辑消息…", - "@preparingEditMessageContentInput": { - "description": "Hint text for content input when the compose box is preparing to edit a message." + "@composeBoxDmContentHint": { + "description": "Hint text for content input when sending a message to one other person.", + "placeholders": { + "user": { + "example": "channel name", + "type": "String" + } + } }, - "composeBoxSendTooltip": "发送", - "@composeBoxSendTooltip": { - "description": "Tooltip for send button in compose box." + "@composeBoxEnterTopicOrSkipHintText": { + "description": "Hint text for topic input widget in compose box when topics are optional.", + "placeholders": { + "defaultTopicName": { + "example": "general chat", + "type": "String" + } + } }, - "unknownChannelName": "(未知频道)", - "@unknownChannelName": { - "description": "Replacement name for channel when it cannot be found in the store." + "@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": "(加载消息 {messageId})", "@composeBoxLoadingMessage": { "description": "Placeholder in compose box showing the quoted message is currently loading.", "placeholders": { "messageId": { - "type": "int", - "example": "1234" + "example": "1234", + "type": "int" } } }, - "unknownUserName": "(未知用户)", - "@unknownUserName": { - "description": "Name placeholder to use for a user when we don't know their name." + "@composeBoxSelfDmContentHint": { + "description": "Hint text for content input when sending a message to yourself." }, - "dmsWithOthersPageTitle": "与{others}的私信", - "@dmsWithOthersPageTitle": { - "description": "Message list page title for a DM group with others.", + "@composeBoxSendTooltip": { + "description": "Tooltip for send button in compose box." + }, + "@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": { - "others": { - "type": "String", - "example": "Alice, Bob" + "filename": { + "example": "file.txt", + "type": "String" } } }, - "messageListGroupYouWithYourself": "与自己的私信", - "@messageListGroupYouWithYourself": { - "description": "Message list recipient header for a DM group that only includes yourself." + "@contentValidationErrorEmpty": { + "description": "Content validation error message when the message is empty." + }, + "@contentValidationErrorQuoteAndReplyInProgress": { + "description": "Content validation error message when a quotation has not completed yet." }, - "contentValidationErrorTooLong": "消息的长度不能超过10000个字符。", "@contentValidationErrorTooLong": { "description": "Content validation error message when the message is too long." }, - "errorDialogLearnMore": "更多信息", - "@errorDialogLearnMore": { - "description": "Button label in error dialogs to open a web page with more information." + "@contentValidationErrorUploadInProgress": { + "description": "Content validation error message when attachments have not finished uploading." }, - "errorDialogContinue": "好的", - "@errorDialogContinue": { - "description": "Button label in error dialogs to acknowledge the error and close the dialog." + "@dialogCancel": { + "description": "Button label in dialogs to cancel." }, - "errorDialogTitle": "错误", - "@errorDialogTitle": { - "description": "Generic title for error dialog." + "@dialogClose": { + "description": "Button label in dialogs to close." }, - "lightboxCopyLinkTooltip": "复制链接", - "@lightboxCopyLinkTooltip": { - "description": "Tooltip in lightbox for the copy link action." + "@dialogContinue": { + "description": "Button label in dialogs to proceed." }, - "lightboxVideoCurrentPosition": "当前进度", - "@lightboxVideoCurrentPosition": { - "description": "The current playback position of the video playing in the lightbox." + "@discardDraftConfirmationDialogConfirmButton": { + "description": "Label for the 'Discard' button on a confirmation dialog for discarding message text that was typed into the compose box." }, - "lightboxVideoDuration": "视频时长", - "@lightboxVideoDuration": { - "description": "The total duration of the video playing in the lightbox." + "@discardDraftConfirmationDialogTitle": { + "description": "Title for a confirmation dialog for discarding message text that was typed into the compose box." }, - "loginFormSubmitLabel": "登入", - "@loginFormSubmitLabel": { - "description": "Button text to submit login credentials." + "@discardDraftForEditConfirmationDialogMessage": { + "description": "Message for a confirmation dialog for discarding message text that was typed into the compose box, when editing a message." }, - "loginMethodDivider": "或", - "@loginMethodDivider": { - "description": "Text on the divider between the username/password form and the third-party login options. Uppercase (for languages with letter case)." + "@discardDraftForOutboxConfirmationDialogMessage": { + "description": "Message for a confirmation dialog when restoring an outbox message, 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.", + "@dmsWithOthersPageTitle": { + "description": "Message list page title for a DM group with others.", "placeholders": { - "method": { - "type": "String", - "example": "Google" + "others": { + "example": "Alice, Bob", + "type": "String" } } }, - "loginAddAnAccountPageTitle": "添加账号", - "@loginAddAnAccountPageTitle": { - "description": "Title for page to add a Zulip account." - }, - "loginServerUrlLabel": "Zulip 服务器网址", - "@loginServerUrlLabel": { - "description": "Label in login page for Zulip server URL entry." + "@dmsWithYourselfPageTitle": { + "description": "Message list page title for a DM group that only includes yourself." }, - "loginHidePassword": "隐藏密码", - "@loginHidePassword": { - "description": "Icon label for button to hide password in input form." + "@editAlreadyInProgressMessage": { + "description": "Error message when a message edit cannot be saved because there is another edit already in progress." }, - "topicValidationErrorMandatoryButEmpty": "话题在该组织为必填项。", - "@topicValidationErrorMandatoryButEmpty": { - "description": "Topic validation error when topic is required but was empty." + "@editAlreadyInProgressTitle": { + "description": "Error title when a message edit cannot be saved because there is another edit already in progress." }, - "errorInvalidApiKeyMessage": "您在 {url} 的账号无法被登入。请重试或者使用另外的账号。", - "@errorInvalidApiKeyMessage": { - "description": "Error message in the dialog for invalid API key.", - "placeholders": { - "url": { - "type": "String", - "example": "http://chat.example.com/" - } - } + "@emojiPickerSearchEmoji": { + "description": "Hint text for the emoji picker search text field." }, - "errorInvalidResponse": "服务器的回复不合法。", - "@errorInvalidResponse": { - "description": "Error message when an API call returned an invalid response." + "@emojiReactionsMore": { + "description": "Label for a button opening the emoji picker." }, - "errorNetworkRequestFailed": "网络请求失败", - "@errorNetworkRequestFailed": { - "description": "Error message when a network request fails." + "@emptyMessageList": { + "description": "Placeholder for some message-list pages when there are no messages." }, - "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" - } - } + "@emptyMessageListSearch": { + "description": "Placeholder for the 'Search' page when there are no messages." }, - "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.", + "@errorAccountLoggedIn": { + "description": "Error message on attempting to log into an account that's already logged in.", "placeholders": { - "httpStatus": { - "type": "int", - "example": "200" + "email": { + "example": "user@example.com", + "type": "String" }, - "details": { - "type": "String", - "example": "type 'Null' is not a subtype of type 'String' in type cast" - } - } - }, - "serverUrlValidationErrorInvalidUrl": "请输入正确的网址。", - "@serverUrlValidationErrorInvalidUrl": { - "description": "Error message when URL is not in a valid format." - }, - "serverUrlValidationErrorNoUseEmail": "请输入服务器网址,而不是您的电子邮件。", - "@serverUrlValidationErrorNoUseEmail": { - "description": "Error message when URL looks like an email" - }, - "spoilerDefaultHeaderText": "剧透", - "@spoilerDefaultHeaderText": { - "description": "The default header text in a spoiler block ( https://zulip.com/help/spoilers )." - }, - "markAllAsReadLabel": "将所有消息标为已读", - "@markAllAsReadLabel": { - "description": "Button text to mark messages as read." - }, - "markAsReadComplete": "已将 {num, plural, other{{num} 条消息}}标为已读。", - "@markAsReadComplete": { - "description": "Message when marking messages as read has completed.", - "placeholders": { - "num": { - "type": "int", - "example": "4" + "server": { + "example": "https://example.com", + "type": "String" } } }, - "markAsUnreadInProgress": "正在将消息标为未读…", - "@markAsUnreadInProgress": { - "description": "Progress message when marking messages as unread." - }, - "errorMarkAsUnreadFailedTitle": "未能将消息标为未读", - "@errorMarkAsUnreadFailedTitle": { - "description": "Error title when mark as unread action failed." - }, - "userRoleAdministrator": "管理员", - "@userRoleAdministrator": { - "description": "Label for UserRole.administrator" - }, - "userRoleModerator": "版主", - "@userRoleModerator": { - "description": "Label for UserRole.moderator" - }, - "userRoleMember": "成员", - "@userRoleMember": { - "description": "Label for UserRole.member" - }, - "recentDmConversationsEmptyPlaceholder": "您还没有任何私信消息!何不开启一个新对话?", - "@recentDmConversationsEmptyPlaceholder": { - "description": "Centered text on the 'Direct messages' page saying that there is no content to show." - }, - "channelsEmptyPlaceholder": "您还没有订阅任何频道。", - "@channelsEmptyPlaceholder": { - "description": "Centered text on the 'Channels' page saying that there is no content to show." + "@errorAccountLoggedInTitle": { + "description": "Error title on attempting to log into an account that's already logged in." }, - "channelFeedButtonTooltip": "频道订阅", - "@channelFeedButtonTooltip": { - "description": "Tooltip for button to navigate to a given channel's feed" + "@errorBannerCannotPostInChannelLabel": { + "description": "Error-banner text replacing the compose box when you do not have permission to send a message to the channel." }, - "unpinnedSubscriptionsLabel": "未置顶", - "@unpinnedSubscriptionsLabel": { - "description": "Label for the list of unpinned subscribed channels." + "@errorBannerDeactivatedDmLabel": { + "description": "Label text for error banner when sending a message to one or multiple deactivated users." }, - "notifGroupDmConversationLabel": "{senderFullName}向您和其他 {numOthers, plural, other{{numOthers} 个用户}}", - "@notifGroupDmConversationLabel": { - "description": "Label for a group DM conversation notification.", + "@errorConnectingToServerDetails": { + "description": "Dialog error message for a generic unknown error connecting to the server with details.", "placeholders": { - "senderFullName": { - "type": "String", - "example": "Alice" + "error": { + "example": "Invalid format", + "type": "String" }, - "numOthers": { - "type": "int", - "example": "4" + "serverUrl": { + "example": "http://example.com/", + "type": "String" } } }, - "wildcardMentionChannel": "频道", - "@wildcardMentionChannel": { - "description": "Text for \"@channel\" wildcard-mention autocomplete option when writing a channel message." - }, - "wildcardMentionEveryone": "所有人", - "@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." + "@errorConnectingToServerShort": { + "description": "Short error message for a generic unknown error connecting to the server." }, - "wildcardMentionTopic": "话题", - "@wildcardMentionTopic": { - "description": "Text for \"@topic\" wildcard-mention autocomplete option when writing a channel message." + "@errorContentNotInsertedTitle": { + "description": "Title for error dialog when an attempt to insert rich content failed." }, - "wildcardMentionTopicDescription": "通知话题", - "@wildcardMentionTopicDescription": { - "description": "Description for \"@topic\" wildcard-mention autocomplete options when writing a channel message." + "@errorContentToInsertIsEmpty": { + "description": "Error message when the rich content to be inserted is empty or cannot be accessed." }, - "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.)" + "@errorCopyingFailed": { + "description": "Error message when copying the text of a message to the user's system clipboard failed." }, - "messageIsEditedLabel": "已编辑", - "@messageIsEditedLabel": { - "description": "Label for an edited message. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + "@errorCouldNotConnectTitle": { + "description": "Error title when the app could not connect to the server." }, - "themeSettingDark": "暗色", - "@themeSettingDark": { - "description": "Label for dark theme setting." + "@errorCouldNotEditMessageTitle": { + "description": "Error title when an exception prevented us from opening the compose box for editing a message." }, - "themeSettingLight": "浅色", - "@themeSettingLight": { - "description": "Label for light theme setting." + "@errorCouldNotFetchMessageSource": { + "description": "Error message when the source of a message could not be fetched." }, - "pollVoterNames": "({voterNames})", - "@pollVoterNames": { - "description": "The list of people who voted for a poll option, wrapped in parentheses.", + "@errorCouldNotOpenLink": { + "description": "Error message when opening a link failed.", "placeholders": { - "voterNames": { - "type": "String", - "example": "Alice, Bob, Chad" + "url": { + "example": "https://chat.example.com", + "type": "String" } } }, - "pollWidgetOptionsMissing": "该投票还没有任何选项。", - "@pollWidgetOptionsMissing": { - "description": "Text to display for a poll when it has no options" - }, - "experimentalFeatureSettingsWarning": "以下选项能够启用开发中的功能。它们暂不完善,并可能造成其他的一些问题。\n\n这些选项的目的是为了帮助开发者进行实验。", - "@experimentalFeatureSettingsWarning": { - "description": "Warning text on settings page for experimental, in-development features" - }, - "initialAnchorSettingDescription": "您可以将消息的起始位置设置为第一条未读消息或者最新消息。", - "@initialAnchorSettingDescription": { - "description": "Description of setting controlling initial anchor of message list." - }, - "initialAnchorSettingTitle": "设置消息起始位置于", - "@initialAnchorSettingTitle": { - "description": "Title of setting controlling initial anchor of message list." + "@errorCouldNotOpenLinkTitle": { + "description": "Error title when opening a link failed." }, - "initialAnchorSettingNewestAlways": "最新消息", - "@initialAnchorSettingNewestAlways": { - "description": "Label for a value of setting controlling initial anchor of message list." + "@errorCouldNotShowUserProfile": { + "description": "Message that appears on the user profile page when the profile cannot be shown." }, - "initialAnchorSettingFirstUnreadConversations": "在单个话题或私信的第一条未读消息;在其他情况下的最新消息", - "@initialAnchorSettingFirstUnreadConversations": { - "description": "Label for a value of setting controlling initial anchor of message list." + "@errorDialogContinue": { + "description": "Button label in error dialogs to acknowledge the error and close the dialog." }, - "initialAnchorSettingFirstUnreadAlways": "第一条未读消息", - "@initialAnchorSettingFirstUnreadAlways": { - "description": "Label for a value of setting controlling initial anchor of message list." + "@errorDialogLearnMore": { + "description": "Button label in error dialogs to open a web page with more information." }, - "actionSheetOptionCopyMessageLink": "复制消息链接", - "@actionSheetOptionCopyMessageLink": { - "description": "Label for copy message link button on action sheet." + "@errorDialogTitle": { + "description": "Generic title for error dialog." }, - "errorConnectingToServerDetails": "未能连接到在 {serverUrl} 的 Zulip 服务器。即将重连:\n\n{error}", - "@errorConnectingToServerDetails": { - "description": "Dialog error message for a generic unknown error connecting to the server with details.", + "@errorFailedToUploadFileTitle": { + "description": "Error title when the specified file failed to upload.", "placeholders": { - "serverUrl": { - "type": "String", - "example": "http://example.com/" - }, - "error": { - "type": "String", - "example": "Invalid format" + "filename": { + "example": "file.txt", + "type": "String" } } }, - "errorAccountLoggedIn": "在 {server} 的账号 {email} 已经在您的账号列表了。", - "@errorAccountLoggedIn": { - "description": "Error message on attempting to log into an account that's already logged in.", + "@errorFilesTooLarge": { + "description": "Error message when attached files are too large in size.", "placeholders": { - "email": { - "type": "String", - "example": "user@example.com" + "listMessage": { + "example": "foo.txt: 10.1 MiB\nbar.txt 20.2 MiB", + "type": "String" }, - "server": { - "type": "String", - "example": "https://example.com" + "maxFileUploadSizeMib": { + "example": "15", + "type": "int" + }, + "num": { + "example": "2", + "type": "int" } } }, - "errorServerVersionUnsupportedMessage": "{url} 运行的 Zulip 服务器版本 {zulipVersion} 过低。该客户端只支持 {minSupportedZulipVersion} 及以后的服务器版本。", - "@errorServerVersionUnsupportedMessage": { - "description": "Error message in the dialog for when the Zulip Server version is unsupported.", + "@errorFilesTooLargeTitle": { + "description": "Error title when attached files are too large in size.", "placeholders": { - "url": { - "type": "String", - "example": "http://chat.example.com/" - }, - "zulipVersion": { - "type": "String", - "example": "3.2" - }, - "minSupportedZulipVersion": { - "type": "String", - "example": "4.0" + "num": { + "example": "4", + "type": "int" } } }, - "errorHandlingEventDetails": "处理来自 {serverUrl} 的 Zulip 事件时发生了一些问题。即将重连。\n\n错误:{error}\n\n事件:{event}", + "@errorFollowTopicFailed": { + "description": "Error message when following a topic failed." + }, "@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" + "example": "Unexpected null value", + "type": "String" }, "event": { - "type": "String", - "example": "UpdateMessageEvent(id: 123, messageIds: [2345, 3456], newTopic: 'dinner')" + "example": "UpdateMessageEvent(id: 123, messageIds: [2345, 3456], newTopic: 'dinner')", + "type": "String" + }, + "serverUrl": { + "example": "https://chat.example.com", + "type": "String" } } }, - "editAlreadyInProgressTitle": "未能编辑消息", - "@editAlreadyInProgressTitle": { - "description": "Error title when a message edit cannot be saved because there is another edit already in progress." + "@errorHandlingEventTitle": { + "description": "Error title on failing to handle a Zulip server event." }, - "errorServerMessage": "服务器:\n\n{message}", - "@errorServerMessage": { - "description": "Error message that quotes an error from the server.", + "@errorInvalidApiKeyMessage": { + "description": "Error message in the dialog for invalid API key.", "placeholders": { - "message": { - "type": "String", - "example": "Invalid format" + "url": { + "example": "http://chat.example.com/", + "type": "String" } } }, - "loginErrorMissingUsername": "请输入用户名。", - "@loginErrorMissingUsername": { - "description": "Error message when an empty username was provided." - }, - "successMessageTextCopied": "已复制消息文本", - "@successMessageTextCopied": { - "description": "Message when content of a message was copied to the user's system clipboard." - }, - "errorBannerDeactivatedDmLabel": "您不能向被停用的用户发送消息。", - "@errorBannerDeactivatedDmLabel": { - "description": "Label text for error banner when sending a message to one or multiple deactivated users." - }, - "noEarlierMessages": "没有更早的消息了", - "@noEarlierMessages": { - "description": "Text to show at the start of a message list if there are no earlier messages." - }, - "discardDraftForOutboxConfirmationDialogMessage": "当您恢复未能发送的消息时,文本框已有的内容将会被清空。", - "@discardDraftForOutboxConfirmationDialogMessage": { - "description": "Message for a confirmation dialog when restoring an outbox message, for discarding message text that was typed into the compose box." - }, - "loginPageTitle": "登入", - "@loginPageTitle": { - "description": "Title for login page." - }, - "loginEmailLabel": "电子邮箱地址", - "@loginEmailLabel": { - "description": "Label for input when an email is required to log in." - }, - "topicValidationErrorTooLong": "话题长度不应该超过 60 个字符。", - "@topicValidationErrorTooLong": { - "description": "Topic validation error when topic is too long." - }, - "userRoleUnknown": "未知", - "@userRoleUnknown": { - "description": "Label for UserRole.unknown" - }, - "markAsReadInProgress": "正在将消息标为已读…", - "@markAsReadInProgress": { - "description": "Progress message when marking messages as read." + "@errorInvalidResponse": { + "description": "Error message when an API call returned an invalid response." }, - "onePersonTyping": "{typist}正在输入…", - "@onePersonTyping": { - "description": "Text to display when there is one user typing.", + "@errorLoginCouldNotConnect": { + "description": "Error message when the app could not connect to the server.", "placeholders": { - "typist": { - "type": "String", - "example": "Alice" + "url": { + "example": "http://example.com/", + "type": "String" } } }, - "inboxPageTitle": "收件箱", - "@inboxPageTitle": { - "description": "Title for the page with unreads." - }, - "openLinksWithInAppBrowser": "使用内置浏览器打开链接", - "@openLinksWithInAppBrowser": { - "description": "Label for toggling setting to open links with in-app browser" - }, - "inboxEmptyPlaceholder": "您的收件箱中没有未读消息。您可以通过底部导航栏访问综合消息或者频道列表。", - "@inboxEmptyPlaceholder": { - "description": "Centered text on the 'Inbox' page saying that there is no content to show." - }, - "themeSettingSystem": "系统", - "@themeSettingSystem": { - "description": "Label for system theme setting." - }, - "experimentalFeatureSettingsPageTitle": "实验功能", - "@experimentalFeatureSettingsPageTitle": { - "description": "Title of settings page for experimental, in-development features" - }, - "wildcardMentionChannelDescription": "通知频道", - "@wildcardMentionChannelDescription": { - "description": "Description for \"@all\", \"@everyone\", \"@channel\", and \"@stream\" wildcard-mention autocomplete options when writing a channel message." - }, - "actionSheetOptionMuteTopic": "静音话题", - "@actionSheetOptionMuteTopic": { - "description": "Label for muting a topic on action sheet." - }, - "actionSheetOptionUnmuteTopic": "取消静音话题", - "@actionSheetOptionUnmuteTopic": { - "description": "Label for unmuting a topic on action sheet." + "@errorLoginFailedTitle": { + "description": "Error title for login when signing into a Zulip server fails." }, - "actionSheetOptionUnresolveTopic": "标记为未解决", - "@actionSheetOptionUnresolveTopic": { - "description": "Label for the 'Mark as unresolved' button on the topic action sheet." + "@errorLoginInvalidInputTitle": { + "description": "Error title for login when input is invalid." }, - "errorUnresolveTopicFailedTitle": "未能将话题标记为未解决", - "@errorUnresolveTopicFailedTitle": { - "description": "Error title when marking a topic as unresolved failed." + "@errorMalformedResponse": { + "description": "Error message when an API call fails because we could not parse the response.", + "placeholders": { + "httpStatus": { + "example": "200", + "type": "int" + } + } }, - "errorResolveTopicFailedTitle": "未能将话题标记为解决", - "@errorResolveTopicFailedTitle": { - "description": "Error title when marking a topic as resolved failed." + "@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" + } + } }, - "actionSheetOptionCopyMessageText": "复制消息文本", - "@actionSheetOptionCopyMessageText": { - "description": "Label for copy message text button on action sheet." + "@errorMarkAsReadFailedTitle": { + "description": "Error title when mark as read action failed." }, - "actionSheetOptionMarkAsUnread": "从这里标为未读", - "@actionSheetOptionMarkAsUnread": { - "description": "Label for mark as unread button on action sheet." + "@errorMarkAsUnreadFailedTitle": { + "description": "Error title when mark as unread action failed." }, - "actionSheetOptionShare": "分享", - "@actionSheetOptionShare": { - "description": "Label for share button on action sheet." + "@errorMessageDoesNotSeemToExist": { + "description": "Error message when loading a message that does not exist." }, - "errorLoginInvalidInputTitle": "输入的信息不正确", - "@errorLoginInvalidInputTitle": { - "description": "Error title for login when input is invalid." + "@errorMessageEditNotSaved": { + "description": "Error message for compose box when a message edit could not be saved." }, - "errorMessageNotSent": "未能发送消息", "@errorMessageNotSent": { "description": "Error message for compose box when a message could not be sent." }, - "errorCouldNotConnectTitle": "未能连接", - "@errorCouldNotConnectTitle": { - "description": "Error title when the app could not connect to the server." + "@errorMuteTopicFailed": { + "description": "Error message when muting a topic failed." }, - "errorMessageDoesNotSeemToExist": "找不到此消息。", - "@errorMessageDoesNotSeemToExist": { - "description": "Error message when loading a message that does not exist." + "@errorNetworkRequestFailed": { + "description": "Error message when a network request fails." }, - "discardDraftConfirmationDialogTitle": "放弃您正在撰写的消息?", - "@discardDraftConfirmationDialogTitle": { - "description": "Title for a confirmation dialog for discarding message text that was typed into the compose box." + "@errorNotificationOpenAccountNotFound": { + "description": "Error message when the account associated with the notification could not be found" }, - "discardDraftConfirmationDialogConfirmButton": "清空", - "@discardDraftConfirmationDialogConfirmButton": { - "description": "Label for the 'Discard' button on a confirmation dialog for discarding message text that was typed into the compose box." + "@errorNotificationOpenTitle": { + "description": "Error title when notification opening fails" }, - "composeBoxGroupDmContentHint": "发送私信到群组", - "@composeBoxGroupDmContentHint": { - "description": "Hint text for content input when sending a message to a group." + "@errorQuotationFailed": { + "description": "Error message when quoting a message failed." }, - "composeBoxSelfDmContentHint": "向自己撰写消息", - "@composeBoxSelfDmContentHint": { - "description": "Hint text for content input when sending a message to yourself." + "@errorReactionAddingFailedTitle": { + "description": "Error title when adding a message reaction fails" }, - "composeBoxUploadingFilename": "正在上传 {filename}…", - "@composeBoxUploadingFilename": { - "description": "Placeholder in compose box showing the specified file is currently uploading.", + "@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" } } }, - "composeBoxTopicHintText": "话题", - "@composeBoxTopicHintText": { - "description": "Hint text for topic input widget in compose box." + "@errorResolveTopicFailedTitle": { + "description": "Error title when marking a topic as resolved failed." }, - "composeBoxEnterTopicOrSkipHintText": "输入话题(默认为“{defaultTopicName}”)", - "@composeBoxEnterTopicOrSkipHintText": { - "description": "Hint text for topic input widget in compose box when topics are optional.", + "@errorServerMessage": { + "description": "Error message that quotes an error from the server.", "placeholders": { - "defaultTopicName": { - "type": "String", - "example": "general chat" + "message": { + "example": "Invalid format", + "type": "String" } } }, - "messageListGroupYouAndOthers": "您和{others}", - "@messageListGroupYouAndOthers": { - "description": "Message list recipient header for a DM group with others.", + "@errorServerVersionUnsupportedMessage": { + "description": "Error message in the dialog for when the Zulip Server version is unsupported.", "placeholders": { - "others": { - "type": "String", - "example": "Alice, Bob" + "minSupportedZulipVersion": { + "example": "4.0", + "type": "String" + }, + "url": { + "example": "http://chat.example.com/", + "type": "String" + }, + "zulipVersion": { + "example": "3.2", + "type": "String" } } }, - "dialogCancel": "取消", - "@dialogCancel": { - "description": "Button label in dialogs to cancel." + "@errorSharingAccountNotLoggedIn": { + "description": "Error title when sharing content received from other apps fails, when there is no account logged in" }, - "loginUsernameLabel": "用户名", - "@loginUsernameLabel": { - "description": "Label for input when a username is required to log in." + "@errorSharingFailed": { + "description": "Error message when sharing a message failed." }, - "errorRequestFailed": "网络请求失败;HTTP 状态码 {httpStatus}", - "@errorRequestFailed": { - "description": "Error message when an API call fails.", - "placeholders": { - "httpStatus": { - "type": "int", - "example": "500" - } - } + "@errorSharingTitle": { + "description": "Error title when sharing content received from other apps fails" + }, + "@errorStarMessageFailedTitle": { + "description": "Error title when starring a message failed." + }, + "@errorUnfollowTopicFailed": { + "description": "Error message when unfollowing a topic failed." + }, + "@errorUnmuteTopicFailed": { + "description": "Error message when unmuting a topic failed." + }, + "@errorUnresolveTopicFailedTitle": { + "description": "Error title when marking a topic as unresolved failed." + }, + "@errorUnstarMessageFailedTitle": { + "description": "Error title when unstarring a message failed." }, - "errorVideoPlayerFailed": "未能播放视频。", "@errorVideoPlayerFailed": { "description": "Error message when a video fails to play." }, - "combinedFeedPageTitle": "综合消息", - "@combinedFeedPageTitle": { - "description": "Page title for the 'Combined feed' message view." + "@errorWebAuthOperationalError": { + "description": "Error message when third-party authentication has an operational error (not necessarily caused by invalid credentials)." }, - "channelsPageTitle": "频道", - "@channelsPageTitle": { - "description": "Title for the page with a list of subscribed channels." + "@errorWebAuthOperationalErrorTitle": { + "description": "Error title when third-party authentication has an operational error (not necessarily caused by invalid credentials)." }, - "pinnedSubscriptionsLabel": "置顶", - "@pinnedSubscriptionsLabel": { - "description": "Label for the list of pinned subscribed channels." + "@experimentalFeatureSettingsPageTitle": { + "description": "Title of settings page for experimental, in-development features" }, - "twoPeopleTyping": "{typist}和{otherTypist}正在输入…", - "@twoPeopleTyping": { - "description": "Text to display when there are two users typing.", + "@experimentalFeatureSettingsWarning": { + "description": "Warning text on settings page for experimental, in-development features" + }, + "@filenameAndSizeInMiB": { + "description": "The name of a file, and its size in mebibytes.", "placeholders": { - "typist": { - "type": "String", - "example": "Alice" + "filename": { + "example": "foo.txt", + "type": "String" }, - "otherTypist": { - "type": "String", - "example": "Bob" + "size": { + "example": "20.2", + "type": "String" } } }, - "manyPeopleTyping": "多个用户正在输入…", - "@manyPeopleTyping": { - "description": "Text to display when there are multiple users typing." - }, - "errorNotificationOpenTitle": "未能打开消息提醒", - "@errorNotificationOpenTitle": { - "description": "Error title when notification opening fails" + "@inboxEmptyPlaceholder": { + "description": "Centered text on the 'Inbox' page saying that there is no content to show." }, - "errorReactionAddingFailedTitle": "未能添加表情符号", - "@errorReactionAddingFailedTitle": { - "description": "Error title when adding a message reaction fails" + "@inboxPageTitle": { + "description": "Title for the page with unreads." }, - "errorReactionRemovingFailedTitle": "未能移除表情符号", - "@errorReactionRemovingFailedTitle": { - "description": "Error title when removing a message reaction fails" + "@initialAnchorSettingDescription": { + "description": "Description of setting controlling initial anchor of message list." }, - "actionSheetOptionHideMutedMessage": "再次隐藏静音消息", - "@actionSheetOptionHideMutedMessage": { - "description": "Label for hide muted message again button on action sheet." + "@initialAnchorSettingFirstUnreadAlways": { + "description": "Label for a value of setting controlling initial anchor of message list." }, - "actionSheetOptionStarMessage": "添加星标消息标记", - "@actionSheetOptionStarMessage": { - "description": "Label for star button on action sheet." + "@initialAnchorSettingFirstUnreadConversations": { + "description": "Label for a value of setting controlling initial anchor of message list." }, - "actionSheetOptionUnstarMessage": "取消星标消息标记", - "@actionSheetOptionUnstarMessage": { - "description": "Label for unstar button on action sheet." + "@initialAnchorSettingNewestAlways": { + "description": "Label for a value of setting controlling initial anchor of message list." }, - "actionSheetOptionEditMessage": "编辑消息", - "@actionSheetOptionEditMessage": { - "description": "Label for the 'Edit message' button in the message action sheet." + "@initialAnchorSettingTitle": { + "description": "Title of setting controlling initial anchor of message list." }, - "actionSheetOptionMarkTopicAsRead": "将话题标为已读", - "@actionSheetOptionMarkTopicAsRead": { - "description": "Option to mark a specific topic as read in the action sheet." + "@invisibleMode": { + "description": "Label for the 'Invisible mode' switch on the profile page." }, - "errorWebAuthOperationalErrorTitle": "出现了一些问题", - "@errorWebAuthOperationalErrorTitle": { - "description": "Error title when third-party authentication has an operational error (not necessarily caused by invalid credentials)." + "@lightboxCopyLinkTooltip": { + "description": "Tooltip in lightbox for the copy link action." }, - "errorAccountLoggedInTitle": "已经登入该账号", - "@errorAccountLoggedInTitle": { - "description": "Error title on attempting to log into an account that's already logged in." + "@lightboxVideoCurrentPosition": { + "description": "The current playback position of the video playing in the lightbox." }, - "errorWebAuthOperationalError": "发生了未知的错误。", - "@errorWebAuthOperationalError": { - "description": "Error message when third-party authentication has an operational error (not necessarily caused by invalid credentials)." + "@lightboxVideoDuration": { + "description": "The total duration of the video playing in the lightbox." }, - "errorCouldNotFetchMessageSource": "未能获取原始消息。", - "@errorCouldNotFetchMessageSource": { - "description": "Error message when the source of a message could not be fetched." + "@logOutConfirmationDialogConfirmButton": { + "description": "Label for the 'Log out' button on a confirmation dialog for logging out." }, - "errorCopyingFailed": "未能复制消息文本", - "@errorCopyingFailed": { - "description": "Error message when copying the text of a message to the user's system clipboard failed." + "@logOutConfirmationDialogMessage": { + "description": "Message for a confirmation dialog for logging out." }, - "errorFailedToUploadFileTitle": "未能上传文件:{filename}", - "@errorFailedToUploadFileTitle": { - "description": "Error title when the specified file failed to upload.", - "placeholders": { - "filename": { - "type": "String", - "example": "file.txt" - } - } + "@logOutConfirmationDialogTitle": { + "description": "Title for a confirmation dialog for logging out." }, - "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" - } - } + "@loginAddAnAccountPageTitle": { + "description": "Title for page to add a Zulip account." }, - "errorFilesTooLargeTitle": "文件过大", - "@errorFilesTooLargeTitle": { - "description": "Error title when attached files are too large in size.", - "placeholders": { - "num": { - "type": "int", - "example": "4" - } - } + "@loginEmailLabel": { + "description": "Label for input when an email is required to log in." }, - "errorLoginFailedTitle": "未能登入", - "@errorLoginFailedTitle": { - "description": "Error title for login when signing into a Zulip server fails." + "@loginErrorMissingEmail": { + "description": "Error message when an empty email was provided." }, - "errorMessageEditNotSaved": "未能保存消息编辑", - "@errorMessageEditNotSaved": { - "description": "Error message for compose box when a message edit could not be saved." + "@loginErrorMissingPassword": { + "description": "Error message when an empty password was provided." }, - "errorLoginCouldNotConnect": "未能连接到服务器:\n{url}", - "@errorLoginCouldNotConnect": { - "description": "Error message when the app could not connect to the server.", - "placeholders": { - "url": { - "type": "String", - "example": "http://example.com/" - } - } + "@loginErrorMissingUsername": { + "description": "Error message when an empty username was provided." }, - "errorQuotationFailed": "未能引用消息", - "@errorQuotationFailed": { - "description": "Error message when quoting a message failed." + "@loginFormSubmitLabel": { + "description": "Button text to submit login credentials." }, - "errorConnectingToServerShort": "未能连接到 Zulip. 重试中…", - "@errorConnectingToServerShort": { - "description": "Short error message for a generic unknown error connecting to the server." + "@loginHidePassword": { + "description": "Icon label for button to hide password in input form." }, - "errorFilesTooLarge": "{num, plural, other{{num} 个您上传的文件}}大小超过了该组织 {maxFileUploadSizeMib} MiB 的限制:\n\n{listMessage}", - "@errorFilesTooLarge": { - "description": "Error message when attached files are too large in size.", + "@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" } } }, - "errorHandlingEventTitle": "处理 Zulip 事件时发生了一些问题。即将重连…", - "@errorHandlingEventTitle": { - "description": "Error title on failing to handle a Zulip server event." - }, - "errorCouldNotOpenLinkTitle": "未能打开链接", - "@errorCouldNotOpenLinkTitle": { - "description": "Error title when opening a link failed." + "@markAsReadInProgress": { + "description": "Progress message when marking messages as read." }, - "errorCouldNotOpenLink": "未能打开此链接:{url}", - "@errorCouldNotOpenLink": { - "description": "Error message when opening a link failed.", + "@markAsUnreadComplete": { + "description": "Message when marking messages as unread has completed.", "placeholders": { - "url": { - "type": "String", - "example": "https://chat.example.com" + "num": { + "example": "4", + "type": "int" } } }, - "errorFollowTopicFailed": "未能关注话题", - "@errorFollowTopicFailed": { - "description": "Error message when following a topic failed." + "@markAsUnreadInProgress": { + "description": "Progress message when marking messages as unread." }, - "errorMuteTopicFailed": "未能静音话题", - "@errorMuteTopicFailed": { - "description": "Error message when muting a topic failed." + "@markReadOnScrollSettingAlways": { + "description": "Label for a value of setting controlling which message-list views should mark read on scroll." }, - "errorUnmuteTopicFailed": "未能取消静音话题", - "@errorUnmuteTopicFailed": { - "description": "Error message when unmuting a topic failed." + "@markReadOnScrollSettingConversations": { + "description": "Label for a value of setting controlling which message-list views should mark read on scroll." }, - "errorUnfollowTopicFailed": "未能取消关注话题", - "@errorUnfollowTopicFailed": { - "description": "Error message when unfollowing a topic failed." + "@markReadOnScrollSettingConversationsDescription": { + "description": "Description for a value of setting controlling which message-list views should mark read on scroll." }, - "errorSharingFailed": "分享失败", - "@errorSharingFailed": { - "description": "Error message when sharing a message failed." + "@markReadOnScrollSettingDescription": { + "description": "Description of setting controlling which message-list views should mark read on scroll." }, - "errorStarMessageFailedTitle": "未能添加星标消息标记", - "@errorStarMessageFailedTitle": { - "description": "Error title when starring a message failed." + "@markReadOnScrollSettingNever": { + "description": "Label for a value of setting controlling which message-list views should mark read on scroll." }, - "errorUnstarMessageFailedTitle": "未能取消星标消息标记", - "@errorUnstarMessageFailedTitle": { - "description": "Error title when unstarring a message failed." + "@markReadOnScrollSettingTitle": { + "description": "Title of setting controlling which message-list views should mark read on scroll." }, - "errorCouldNotEditMessageTitle": "未能编辑消息", - "@errorCouldNotEditMessageTitle": { - "description": "Error title when an exception prevented us from opening the compose box for editing a message." + "@mentionsPageTitle": { + "description": "Page title for the 'Mentions' message view." }, - "successLinkCopied": "已复制链接", - "@successLinkCopied": { - "description": "Success message after copy link action completed." + "@messageIsEditedLabel": { + "description": "Label for an edited message. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" }, - "successMessageLinkCopied": "已复制消息链接", - "@successMessageLinkCopied": { - "description": "Message when link of a message was copied to the user's system clipboard." + "@messageIsMovedLabel": { + "description": "Label for a moved message. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" }, - "errorBannerCannotPostInChannelLabel": "您没有足够的权限在此频道发送消息。", - "@errorBannerCannotPostInChannelLabel": { - "description": "Error-banner text replacing the compose box when you do not have permission to send a message to the channel." + "@messageListGroupYouAndOthers": { + "description": "Message list recipient header for a DM group with others.", + "placeholders": { + "others": { + "example": "Alice, Bob", + "type": "String" + } + } }, - "composeBoxBannerLabelEditMessage": "编辑消息", - "@composeBoxBannerLabelEditMessage": { - "description": "Label text for the compose-box banner when you are editing a message." + "@messageListGroupYouWithYourself": { + "description": "Message list recipient header for a DM group that only includes yourself." }, - "composeBoxBannerButtonCancel": "取消", - "@composeBoxBannerButtonCancel": { - "description": "Label text for the 'Cancel' button in the compose-box banner when you are editing a message." + "@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.)" }, - "composeBoxBannerButtonSave": "保存", - "@composeBoxBannerButtonSave": { - "description": "Label text for the 'Save' button in the compose-box banner when you are editing a message." + "@mutedUser": { + "description": "Name for a muted user to display all over the app." }, - "editAlreadyInProgressMessage": "已有正在被编辑的消息。请在其完成后重试。", - "@editAlreadyInProgressMessage": { - "description": "Error message when a message edit cannot be saved because there is another edit already in progress." + "@newDmFabButtonLabel": { + "description": "Label for the floating action button (FAB) that opens the new DM sheet." }, - "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.)" + "@newDmSheetComposeButtonLabel": { + "description": "Label for the compose button in the new DM sheet that starts composing a message to the selected users." }, - "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.)" - }, - "discardDraftForEditConfirmationDialogMessage": "当您编辑消息时,文本框中已有的内容将会被清空。", - "@discardDraftForEditConfirmationDialogMessage": { - "description": "Message for a confirmation dialog for discarding message text that was typed into the compose box, when editing a message." - }, - "composeBoxAttachFilesTooltip": "上传文件", - "@composeBoxAttachFilesTooltip": { - "description": "Tooltip for compose box icon to attach a file to the message." - }, - "composeBoxAttachMediaTooltip": "上传图片或视频", - "@composeBoxAttachMediaTooltip": { - "description": "Tooltip for compose box icon to attach media to the message." - }, - "composeBoxAttachFromCameraTooltip": "拍摄照片", - "@composeBoxAttachFromCameraTooltip": { - "description": "Tooltip for compose box icon to attach an image from the camera to the message." - }, - "composeBoxGenericContentHint": "撰写消息", - "@composeBoxGenericContentHint": { - "description": "Hint text for content input when sending a message." - }, - "newDmSheetSearchHintEmpty": "添加一个或多个用户", - "@newDmSheetSearchHintEmpty": { - "description": "Hint text for the search bar when no users are selected" + "@newDmSheetNoUsersFound": { + "description": "Message shown in the new DM sheet when no users match the search." }, - "newDmSheetScreenTitle": "发起私信", "@newDmSheetScreenTitle": { "description": "Title displayed at the top of the new DM screen." }, - "newDmFabButtonLabel": "发起私信", - "@newDmFabButtonLabel": { - "description": "Label for the floating action button (FAB) that opens the new DM sheet." + "@newDmSheetSearchHintEmpty": { + "description": "Hint text for the search bar when no users are selected" }, - "newDmSheetSearchHintSomeSelected": "添加更多用户…", "@newDmSheetSearchHintSomeSelected": { "description": "Hint text for the search bar when at least one user is selected." }, - "newDmSheetNoUsersFound": "没有用户", - "@newDmSheetNoUsersFound": { - "description": "Message shown in the new DM sheet when no users match the search." + "@noEarlierMessages": { + "description": "Text to show at the start of a message list if there are no earlier messages." }, - "composeBoxDmContentHint": "发送私信给 @{user}", - "@composeBoxDmContentHint": { - "description": "Hint text for content input when sending a message to one other person.", + "@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": { - "user": { - "type": "String", - "example": "channel name" + "numOthers": { + "example": "4", + "type": "int" + }, + "senderFullName": { + "example": "Alice", + "type": "String" } } }, - "dmsWithYourselfPageTitle": "与自己的私信", - "@dmsWithYourselfPageTitle": { - "description": "Message list page title for a DM group that only includes yourself." + "@notifSelfUser": { + "description": "Display name for the user themself, to show after replying in an Android notification" }, - "contentValidationErrorUploadInProgress": "请等待上传完成。", - "@contentValidationErrorUploadInProgress": { - "description": "Content validation error message when attachments have not finished uploading." + "@onePersonTyping": { + "description": "Text to display when there is one user typing.", + "placeholders": { + "typist": { + "example": "Alice", + "type": "String" + } + } }, - "contentValidationErrorEmpty": "发送的消息不能为空!", - "@contentValidationErrorEmpty": { - "description": "Content validation error message when the message is empty." + "@openLinksWithInAppBrowser": { + "description": "Label for toggling setting to open links with in-app browser" }, - "contentValidationErrorQuoteAndReplyInProgress": "请等待引用消息完成。", - "@contentValidationErrorQuoteAndReplyInProgress": { - "description": "Content validation error message when a quotation has not completed yet." + "@permissionsDeniedCameraAccess": { + "description": "Message for dialog asking the user to grant permissions for camera access." }, - "dialogContinue": "继续", - "@dialogContinue": { - "description": "Button label in dialogs to proceed." + "@permissionsDeniedReadExternalStorage": { + "description": "Message for dialog asking the user to grant permissions for external storage read access." }, - "dialogClose": "关闭", - "@dialogClose": { - "description": "Button label in dialogs to close." + "@permissionsNeededOpenSettings": { + "description": "Button label for permissions dialog button that opens the system settings screen." }, - "snackBarDetails": "详情", - "@snackBarDetails": { - "description": "Button label for snack bar button that opens a dialog with more details." + "@permissionsNeededTitle": { + "description": "Title for dialog asking the user to grant additional permissions." }, - "loginErrorMissingEmail": "请输入电子邮箱地址。", - "@loginErrorMissingEmail": { - "description": "Error message when an empty email was provided." + "@pinnedSubscriptionsLabel": { + "description": "Label for the list of pinned subscribed channels." }, - "loginPasswordLabel": "密码", - "@loginPasswordLabel": { - "description": "Label for password input field." + "@pollVoterNames": { + "description": "The list of people who voted for a poll option, wrapped in parentheses.", + "placeholders": { + "voterNames": { + "example": "Alice, Bob, Chad", + "type": "String" + } + } }, - "loginErrorMissingPassword": "请输入密码。", - "@loginErrorMissingPassword": { - "description": "Error message when an empty password was provided." + "@pollWidgetOptionsMissing": { + "description": "Text to display for a poll when it has no options" }, - "serverUrlValidationErrorEmpty": "请输入网址。", - "@serverUrlValidationErrorEmpty": { - "description": "Error message when URL is empty" + "@pollWidgetQuestionMissing": { + "description": "Text to display for a poll when the question is missing" }, - "serverUrlValidationErrorUnsupportedScheme": "服务器网址必须以 http:// 或 https:// 开头。", - "@serverUrlValidationErrorUnsupportedScheme": { - "description": "Error message when URL has an unsupported scheme." + "@preparingEditMessageContentInput": { + "description": "Hint text for content input when the compose box is preparing to edit a message." }, - "errorMarkAsReadFailedTitle": "未能将消息标为已读", - "@errorMarkAsReadFailedTitle": { - "description": "Error title when mark as read action failed." + "@profileButtonSendDirectMessage": { + "description": "Label for button in profile screen to navigate to DMs with the shown user." }, - "markAsUnreadComplete": "已将 {num, plural, other{{num} 条消息}}标为未读。", - "@markAsUnreadComplete": { - "description": "Message when marking messages as unread has completed.", + "@reactedEmojiSelfUser": { + "description": "Display name for the user themself, to show on an emoji reaction added by the user." + }, + "@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" } } }, - "today": "今天", - "@today": { - "description": "Term to use to reference the current day." + "@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" + } + } }, - "yesterday": "昨天", - "@yesterday": { - "description": "Term to use to reference the previous day." + "@reactionChipsLabel": { + "description": "Text identifying the container of reaction chips on a message. (An accessibility label for assistive technology.)" }, - "userRoleOwner": "所有者", - "@userRoleOwner": { - "description": "Label for UserRole.owner" + "@recentDmConversationsEmptyPlaceholder": { + "description": "Centered text on the 'Direct messages' page saying that there is no content to show." }, - "userRoleGuest": "访客", - "@userRoleGuest": { - "description": "Label for UserRole.guest" + "@recentDmConversationsPageTitle": { + "description": "Title for the page with a list of DM conversations." }, - "recentDmConversationsSectionHeader": "私信", "@recentDmConversationsSectionHeader": { "description": "Heading for direct messages section on the 'Inbox' message view." }, - "recentDmConversationsPageTitle": "私信", - "@recentDmConversationsPageTitle": { - "description": "Title for the page with a list of DM conversations." + "@revealButtonLabel": { + "description": "Label for the button revealing hidden message from a muted sender in message list." }, - "mentionsPageTitle": "被提及消息", - "@mentionsPageTitle": { - "description": "Page title for the 'Mentions' message view." + "@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.)" }, - "starredMessagesPageTitle": "星标消息", - "@starredMessagesPageTitle": { - "description": "Page title for the 'Starred messages' message view." + "@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.)" }, - "mainMenuMyProfile": "个人资料", - "@mainMenuMyProfile": { - "description": "Label for main-menu button leading to the user's own profile." + "@scrollToBottomTooltip": { + "description": "Tooltip for button to scroll to bottom." }, - "topicsButtonTooltip": "话题", - "@topicsButtonTooltip": { - "description": "Tooltip for button to navigate to topic-list page." + "@searchMessagesClearButtonTooltip": { + "description": "Tooltip for the 'x' button in the search text field." }, - "notifSelfUser": "您", - "@notifSelfUser": { - "description": "Display name for the user themself, to show after replying in an Android notification" + "@searchMessagesHintText": { + "description": "Hint text for the message search text field." }, - "reactedEmojiSelfUser": "您", - "@reactedEmojiSelfUser": { - "description": "Display name for the user themself, to show on an emoji reaction added by the user." + "@searchMessagesPageTitle": { + "description": "Page title for the 'Search' message view." }, - "wildcardMentionAll": "所有人", - "@wildcardMentionAll": { - "description": "Text for \"@all\" wildcard-mention autocomplete option when writing a channel or DM message." + "@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" + } + } }, - "wildcardMentionAllDmDescription": "通知收件人", - "@wildcardMentionAllDmDescription": { - "description": "Description for \"@all\" and \"@everyone\" wildcard-mention autocomplete options when writing a DM message." + "@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" + } + } }, - "messageIsMovedLabel": "已移动", - "@messageIsMovedLabel": { - "description": "Label for a moved message. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + "@seeWhoReactedSheetNoReactions": { + "description": "Explanation on the 'See who reacted' sheet when the message has no reactions (because they were removed after the sheet was opened)." }, - "themeSettingTitle": "主题", - "@themeSettingTitle": { - "description": "Title for theme setting. (Use ALL CAPS for cased alphabets: Latin, Greek, Cyrillic, etc.)" + "@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" + } + } }, - "emojiReactionsMore": "更多", - "@emojiReactionsMore": { - "description": "Label for a button opening the emoji picker." + "@serverUrlValidationErrorEmpty": { + "description": "Error message when URL is empty" }, - "errorNotificationOpenAccountNotFound": "未能找到关联该消息提醒的账号。", - "@errorNotificationOpenAccountNotFound": { - "description": "Error message when the account associated with the notification could not be found" + "@serverUrlValidationErrorInvalidUrl": { + "description": "Error message when URL is not in a valid format." }, - "emojiPickerSearchEmoji": "搜索表情符号", - "@emojiPickerSearchEmoji": { - "description": "Hint text for the emoji picker search text field." + "@serverUrlValidationErrorNoUseEmail": { + "description": "Error message when URL looks like an email" }, - "scrollToBottomTooltip": "拖动到最底", - "@scrollToBottomTooltip": { - "description": "Tooltip for button to scroll to bottom." + "@serverUrlValidationErrorUnsupportedScheme": { + "description": "Error message when URL has an unsupported scheme." }, - "revealButtonLabel": "显示静音用户发送的消息", - "@revealButtonLabel": { - "description": "Label for the button revealing hidden message from a muted sender in message list." + "@setStatusPageTitle": { + "description": "Title for the 'Set status' page." }, - "mutedUser": "静音用户", - "@mutedUser": { - "description": "Name for a muted user to display all over the app." + "@settingsPageTitle": {}, + "@sharePageTitle": { + "description": "Title for the page about sharing content received from other apps." }, - "appVersionUnknownPlaceholder": "(…)", - "@appVersionUnknownPlaceholder": { - "description": "Placeholder to show in place of the app version when it is unknown." + "@signInWithFoo": { + "description": "Button to use {method} to sign in to the app.", + "placeholders": { + "method": { + "example": "Google", + "type": "String" + } + } }, - "wildcardMentionStreamDescription": "通知频道", - "@wildcardMentionStreamDescription": { - "description": "Description for \"@all\", \"@everyone\", and \"@stream\" wildcard-mention autocomplete options when writing a channel message in older servers." + "@snackBarDetails": { + "description": "Button label for snack bar button that opens a dialog with more details." }, - "pollWidgetQuestionMissing": "无问题。", - "@pollWidgetQuestionMissing": { - "description": "Text to display for a poll when the question is missing" + "@spoilerDefaultHeaderText": { + "description": "The default header text in a spoiler block ( https://zulip.com/help/spoilers )." }, - "markReadOnScrollSettingAlways": "总是", - "@markReadOnScrollSettingAlways": { - "description": "Label 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." }, - "markReadOnScrollSettingNever": "从不", - "@markReadOnScrollSettingNever": { - "description": "Label for a value of setting controlling which message-list views should mark read on scroll." + "@statusButtonLabelStatusSet": { + "description": "The status button label in self-user profile page when status is set." }, - "markReadOnScrollSettingConversations": "只在对话视图", - "@markReadOnScrollSettingConversations": { - "description": "Label for a value of setting controlling which message-list views should mark read on scroll." + "@statusButtonLabelStatusUnset": { + "description": "The status button label in self-user profile page when status is not set." }, - "markReadOnScrollSettingDescription": "在滑动浏览消息时,是否自动将它们标记为已读?", - "@markReadOnScrollSettingDescription": { - "description": "Description of setting controlling which message-list views should mark read on scroll." + "@statusClearButtonLabel": { + "description": "Label for the button that clears the user status, in 'Set status' page." }, - "markReadOnScrollSettingConversationsDescription": "只将在同一个话题或私聊中的消息自动标记为已读。", - "@markReadOnScrollSettingConversationsDescription": { - "description": "Description for a value of setting controlling which message-list views should mark read on scroll." + "@statusSaveButtonLabel": { + "description": "Label for the button that saves the user status, in 'Set status' page." }, - "markReadOnScrollSettingTitle": "滑动时将消息标为已读", - "@markReadOnScrollSettingTitle": { - "description": "Title of setting controlling which message-list views should mark read on scroll." + "@statusTextHint": { + "description": "Hint text for the status text input field in 'Set status' page." }, - "actionSheetOptionQuoteMessage": "引用消息", - "@actionSheetOptionQuoteMessage": { - "description": "Label for the 'Quote message' button in the message action sheet." + "@subscribeFailedTitle": { + "description": "Error title when subscribing to a channel failed." }, - "upgradeWelcomeDialogTitle": "欢迎来到新的 Zulip 应用!", - "@upgradeWelcomeDialogTitle": { - "description": "Title for dialog shown on first upgrade from the legacy Zulip app." + "@successChannelLinkCopied": { + "description": "Message when link of a channel was copied to the user's system clipboard." + }, + "@successLinkCopied": { + "description": "Success message after copy link action completed." + }, + "@successMessageLinkCopied": { + "description": "Message when link of a message was copied to the user's system clipboard." + }, + "@successMessageTextCopied": { + "description": "Message when content of a message was copied to the user's system clipboard." + }, + "@successTopicLinkCopied": { + "description": "Message when link of a topic was copied to the user's system clipboard." + }, + "@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": { + "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." + }, + "@unsubscribeConfirmationDialogConfirmButton": { + "description": "Label for the 'Unsubscribe' button on a confirmation dialog for unsubscribing from a channel." + }, + "@unsubscribeConfirmationDialogMessageMaybeCannotResubscribe": { + "description": "Message for a confirmation dialog for unsubscribing from a channel when you might not have permission to resubscribe." + }, + "@unsubscribeConfirmationDialogTitle": { + "description": "Title for a confirmation dialog for unsubscribing from a channel.", + "placeholders": { + "channelName": { + "example": "mobile", + "type": "String" + } + } + }, + "@unsubscribeFailedTitle": { + "description": "Error title when unsubscribing from a channel failed." + }, + "@updateStatusErrorTitle": { + "description": "Error title when updating user status failed." }, - "upgradeWelcomeDialogDismiss": "开始吧", "@upgradeWelcomeDialogDismiss": { "description": "Label for button dismissing dialog shown on first upgrade from the legacy Zulip app." }, - "upgradeWelcomeDialogLinkText": "来看看最新的公告吧!", "@upgradeWelcomeDialogLinkText": { "description": "Text of link in dialog shown on first upgrade from the legacy Zulip app." }, - "upgradeWelcomeDialogMessage": "您将会得到到更快,更流畅的体验。", "@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." + }, + "@userActiveDate": { + "description": "Indicates the date when a user was last active on Zulip (who is currently offline).\n\nThe date might be day and month if recent, or day, month, and year if less recent.", + "placeholders": { + "date": { + "example": "Aug 1, 2024", + "type": "String" + } + } + }, + "@userActiveDaysAgo": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)", + "placeholders": { + "days": { + "example": "5", + "type": "int" + } + } + }, + "@userActiveHoursAgo": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)", + "placeholders": { + "hours": { + "example": "5", + "type": "int" + } + } + }, + "@userActiveMinutesAgo": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)", + "placeholders": { + "minutes": { + "example": "5", + "type": "int" + } + } + }, + "@userActiveNow": { + "description": "Indicates a user is currently active on Zulip (not idle or offline)" + }, + "@userActiveYesterday": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)" + }, + "@userIdle": { + "description": "Indicates a user is currently idle on Zulip (not active, but not offline)" + }, + "@userNotActiveInYear": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)" + }, + "@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": "应用程序版本", + "aboutPageOpenSourceLicenses": "开源许可", + "aboutPageTapToView": "查看更多", + "aboutPageTitle": "关于 Zulip", + "actionSheetOptionCopyChannelLink": "复制频道链接", + "actionSheetOptionCopyMessageLink": "复制消息链接", + "actionSheetOptionCopyMessageText": "复制消息文本", + "actionSheetOptionCopyTopicLink": "复制话题链接", + "actionSheetOptionEditMessage": "编辑消息", + "actionSheetOptionFollowTopic": "关注话题", + "actionSheetOptionHideMutedMessage": "再次隐藏静音消息", + "actionSheetOptionListOfTopics": "话题列表", + "actionSheetOptionMarkAsUnread": "从这里开始标为未读", + "actionSheetOptionMarkChannelAsRead": "标记频道为已读", + "actionSheetOptionMarkTopicAsRead": "将话题标为已读", + "actionSheetOptionMuteTopic": "静音话题", + "actionSheetOptionQuoteMessage": "引用消息", + "actionSheetOptionResolveTopic": "标记为已解决", + "actionSheetOptionSeeWhoReacted": "查看谁做出了表情符号回应", + "actionSheetOptionShare": "分享", + "actionSheetOptionStarMessage": "添加星标消息标记", + "actionSheetOptionSubscribe": "订阅", + "actionSheetOptionUnfollowTopic": "取消关注话题", + "actionSheetOptionUnmuteTopic": "取消静音话题", + "actionSheetOptionUnresolveTopic": "标记为未解决", + "actionSheetOptionUnstarMessage": "取消星标消息标记", + "actionSheetOptionUnsubscribe": "取消订阅", + "actionSheetOptionViewReadReceipts": "查看已读回执", + "actionSheetReadReceipts": "已读回执", + "actionSheetReadReceiptsErrorReadCount": "加载已读回执失败。", + "actionSheetReadReceiptsReadCount": "{count, plural, =1{此消息已被阅读,共有 {count} 人:} other{此消息已被阅读,共有 {count} 人:}}", + "actionSheetReadReceiptsZeroReadCount": "尚无人阅读此消息。", + "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": "未能连接到在 {serverUrl} 的 Zulip 服务器。即将重连:\n\n{error}", + "errorConnectingToServerShort": "未能连接到 Zulip. 重试中…", + "errorContentNotInsertedTitle": "未插入内容", + "errorContentToInsertIsEmpty": "要插入的文件为空或无法访问。", + "errorCopyingFailed": "未能复制消息文本", + "errorCouldNotConnectTitle": "未能连接", + "errorCouldNotEditMessageTitle": "未能编辑消息", + "errorCouldNotFetchMessageSource": "未能获取原始消息。", + "errorCouldNotOpenLink": "未能打开此链接:{url}", + "errorCouldNotOpenLinkTitle": "未能打开链接", + "errorCouldNotShowUserProfile": "无法显示用户个人资料。", + "errorDialogContinue": "好的", + "errorDialogLearnMore": "更多信息", + "errorDialogTitle": "错误", + "errorFailedToUploadFileTitle": "未能上传文件:{filename}", + "errorFilesTooLarge": "{num, plural, 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 服务器版本 {zulipVersion} 过低。该客户端只支持 {minSupportedZulipVersion} 及以后的服务器版本。", + "errorSharingAccountNotLoggedIn": "尚未登录任何账号。请登录账号后再次尝试。", + "errorSharingFailed": "分享失败", + "errorSharingTitle": "分享内容失败", + "errorStarMessageFailedTitle": "未能添加星标消息标记", + "errorUnfollowTopicFailed": "未能取消关注话题", + "errorUnmuteTopicFailed": "未能取消静音话题", + "errorUnresolveTopicFailedTitle": "未能将话题标记为未解决", + "errorUnstarMessageFailedTitle": "未能取消星标消息标记", + "errorVideoPlayerFailed": "未能播放视频。", + "errorWebAuthOperationalError": "发生了未知的错误。", + "errorWebAuthOperationalErrorTitle": "出现了一些问题", + "experimentalFeatureSettingsPageTitle": "实验功能", + "experimentalFeatureSettingsWarning": "以下选项能够启用开发中的功能。它们暂不完善,并可能造成其他的一些问题。\n\n这些选项的目的是为了帮助开发者进行实验。", + "filenameAndSizeInMiB": "{filename}: {size} MiB", + "inboxEmptyPlaceholder": "您的收件箱中没有未读消息。您可以通过底部导航栏访问综合消息或者频道列表。", + "inboxPageTitle": "收件箱", + "initialAnchorSettingDescription": "您可以将消息的起始位置设置为第一条未读消息或者最新消息。", + "initialAnchorSettingFirstUnreadAlways": "第一条未读消息", + "initialAnchorSettingFirstUnreadConversations": "在单个话题或私信的第一条未读消息;在其他情况下的最新消息", + "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, other{{num} 条消息}}标为已读。", + "markAsReadInProgress": "正在将消息标为已读…", + "markAsUnreadComplete": "已将 {num, plural, 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, 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": "服务器网址必须以 http:// 或 https:// 开头。", + "setStatusPageTitle": "设定状态", + "settingsPageTitle": "设置", + "sharePageTitle": "分享", + "signInWithFoo": "使用{method}登入", + "snackBarDetails": "详情", + "spoilerDefaultHeaderText": "剧透", + "starredMessagesPageTitle": "星标消息", + "statusButtonLabelStatusSet": "状态", + "statusButtonLabelStatusUnset": "设定状态", + "statusClearButtonLabel": "清除", + "statusSaveButtonLabel": "保存", + "statusTextHint": "您的状态", + "subscribeFailedTitle": "订阅失败", + "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": "未置顶", + "unsubscribeConfirmationDialogConfirmButton": "取消订阅", + "unsubscribeConfirmationDialogMessageMaybeCannotResubscribe": "一旦退出该频道,您可能无法重新加入。", + "unsubscribeConfirmationDialogTitle": "确定取消订阅{channelName}么?", + "unsubscribeFailedTitle": "取消订阅失败", + "updateStatusErrorTitle": "更新用户状态时发生错误。请再试一次。", + "upgradeWelcomeDialogDismiss": "开始吧", + "upgradeWelcomeDialogLinkText": "来看看最新的公告博客吧!", + "upgradeWelcomeDialogMessage": "您将在更快、更流畅的版本中享受熟悉的体验。", + "upgradeWelcomeDialogTitle": "欢迎来到新的 Zulip 应用程序!", + "userActiveDate": "上次活跃于 {date}", + "userActiveDaysAgo": "上次活跃于 {days, plural, =1{1 天前} other{{days} 天前}}", + "userActiveHoursAgo": "上次活跃于 {hours, plural, =1{1 小时前} other{{hours} 小时前}}", + "userActiveMinutesAgo": "上次活跃于 {minutes, plural, =1{1 分钟前} other{{minutes} 分钟前}}", + "userActiveNow": "当前活跃", + "userActiveYesterday": "昨天活跃", + "userIdle": "空闲", + "userNotActiveInYear": "去年未活跃", + "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 dcb8475653..73ac399961 100644 --- a/assets/l10n/app_zh_Hant_TW.arb +++ b/assets/l10n/app_zh_Hant_TW.arb @@ -80,6 +80,27 @@ "@actionSheetOptionUnsubscribe": { "description": "Label in the channel action sheet for unsubscribing from the channel." }, + "@actionSheetOptionViewReadReceipts": { + "description": "Label for the 'View read receipts' button in the message action sheet." + }, + "@actionSheetReadReceipts": { + "description": "Title for the \"Read receipts\" bottom sheet." + }, + "@actionSheetReadReceiptsErrorReadCount": { + "description": "Label in the \"Read receipts\" bottom sheet when loading read receipts failed." + }, + "@actionSheetReadReceiptsReadCount": { + "description": "Label in the \"Read receipts\" bottom sheet when one or more people have read the message.", + "placeholders": { + "count": { + "example": "1", + "type": "int" + } + } + }, + "@actionSheetReadReceiptsZeroReadCount": { + "description": "Label in the \"Read receipts\" bottom sheet when no one has read the message." + }, "@appVersionUnknownPlaceholder": { "description": "Placeholder to show in place of the app version when it is unknown." }, @@ -283,6 +304,12 @@ "@errorConnectingToServerShort": { "description": "Short error message for a generic unknown error connecting to the server." }, + "@errorContentNotInsertedTitle": { + "description": "Title for error dialog when an attempt to insert rich content failed." + }, + "@errorContentToInsertIsEmpty": { + "description": "Error message when the rich content to be inserted is empty or cannot be accessed." + }, "@errorCopyingFailed": { "description": "Error message when copying the text of a message to the user's system clipboard failed." }, @@ -500,9 +527,15 @@ } } }, + "@errorSharingAccountNotLoggedIn": { + "description": "Error title when sharing content received from other apps fails, when there is no account logged in" + }, "@errorSharingFailed": { "description": "Error message when sharing a message failed." }, + "@errorSharingTitle": { + "description": "Error title when sharing content received from other apps fails" + }, "@errorStarMessageFailedTitle": { "description": "Error title when starring a message failed." }, @@ -902,6 +935,9 @@ "description": "Title for the 'Set status' page." }, "@settingsPageTitle": {}, + "@sharePageTitle": { + "description": "Title for the page about sharing content received from other apps." + }, "@signInWithFoo": { "description": "Button to use {method} to sign in to the app.", "placeholders": { @@ -1051,6 +1087,54 @@ "@upgradeWelcomeDialogTitle": { "description": "Title for dialog shown on first upgrade from the legacy Zulip app." }, + "@userActiveDate": { + "description": "Indicates the date when a user was last active on Zulip (who is currently offline).\n\nThe date might be day and month if recent, or day, month, and year if less recent.", + "placeholders": { + "date": { + "example": "Aug 1, 2024", + "type": "String" + } + } + }, + "@userActiveDaysAgo": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)", + "placeholders": { + "days": { + "example": "5", + "type": "int" + } + } + }, + "@userActiveHoursAgo": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)", + "placeholders": { + "hours": { + "example": "5", + "type": "int" + } + } + }, + "@userActiveMinutesAgo": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)", + "placeholders": { + "minutes": { + "example": "5", + "type": "int" + } + } + }, + "@userActiveNow": { + "description": "Indicates a user is currently active on Zulip (not idle or offline)" + }, + "@userActiveYesterday": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)" + }, + "@userIdle": { + "description": "Indicates a user is currently idle on Zulip (not active, but not offline)" + }, + "@userNotActiveInYear": { + "description": "Indicates when a user was last active on Zulip (who is currently offline)" + }, "@userRoleAdministrator": { "description": "Label for UserRole.administrator" }, @@ -1150,6 +1234,11 @@ "actionSheetOptionUnresolveTopic": "標註為未解決", "actionSheetOptionUnstarMessage": "取消收藏訊息", "actionSheetOptionUnsubscribe": "取消訂閱", + "actionSheetOptionViewReadReceipts": "查看已讀回條", + "actionSheetReadReceipts": "已讀回條", + "actionSheetReadReceiptsErrorReadCount": "載入已讀回條失敗。", + "actionSheetReadReceiptsReadCount": "{count, plural, =1{此訊息已被閱讀,共有 {count} 人:} other{此訊息已被閱讀,共有 {count} 人:}}", + "actionSheetReadReceiptsZeroReadCount": "尚無人閱讀此訊息。", "appVersionUnknownPlaceholder": "(…)", "channelFeedButtonTooltip": "頻道饋給", "channelsEmptyPlaceholder": "您尚未訂閱任何頻道。", @@ -1199,6 +1288,8 @@ "errorBannerDeactivatedDmLabel": "您無法向已停用的使用者發送訊息。", "errorConnectingToServerDetails": "連接 Zulip {serverUrl} 時發生錯誤。將重試:\n\n{error}", "errorConnectingToServerShort": "連接 Zulip 時發生錯誤。重試中…", + "errorContentNotInsertedTitle": "未插入內容", + "errorContentToInsertIsEmpty": "要插入的檔案為空或無法存取。", "errorCopyingFailed": "複製失敗", "errorCouldNotConnectTitle": "無法連線", "errorCouldNotEditMessageTitle": "無法編輯訊息", @@ -1238,7 +1329,9 @@ "errorResolveTopicFailedTitle": "無法標註話題為已解決", "errorServerMessage": "伺服器回應:\n\n{message}", "errorServerVersionUnsupportedMessage": "{url} 執行的 Zulip Server 為 {zulipVersion},此版本已不受支援。最低支援版本為 Zulip Server {minSupportedZulipVersion}。", + "errorSharingAccountNotLoggedIn": "尚未登入任何帳號。請登入帳號後再試一次。", "errorSharingFailed": "分享失敗", + "errorSharingTitle": "分享內容失敗", "errorStarMessageFailedTitle": "無法收藏訊息", "errorUnfollowTopicFailed": "無法取消跟隨話題", "errorUnmuteTopicFailed": "無法取消靜音話題", @@ -1342,6 +1435,7 @@ "serverUrlValidationErrorUnsupportedScheme": "伺服器 URL 必須以 http:// 或 https:// 開頭。", "setStatusPageTitle": "設定狀態", "settingsPageTitle": "設定", + "sharePageTitle": "分享", "signInWithFoo": "使用 {method} 登入", "snackBarDetails": "詳細資訊", "spoilerDefaultHeaderText": "劇透", @@ -1383,6 +1477,14 @@ "upgradeWelcomeDialogLinkText": "查看公告部落格文章!", "upgradeWelcomeDialogMessage": "您將在更快、更流暢的版本中享受熟悉的體驗。", "upgradeWelcomeDialogTitle": "歡迎使用新 Zulip 應用程式!", + "userActiveDate": "上次活躍於 {date}", + "userActiveDaysAgo": "上次活躍於 {days, plural, =1{1 天前} other{{days} 天前}}", + "userActiveHoursAgo": "上次活躍於 {hours, plural, =1{1 小時前} other{{hours} 小時前}}", + "userActiveMinutesAgo": "上次活躍於 {minutes, plural, =1{1 分鐘前} other{{minutes} 分鐘前}}", + "userActiveNow": "目前活躍", + "userActiveYesterday": "昨天活躍", + "userIdle": "閒置", + "userNotActiveInYear": "去年未活躍", "userRoleAdministrator": "管理員", "userRoleGuest": "訪客", "userRoleMember": "成員", diff --git a/lib/generated/l10n/zulip_localizations_de.dart b/lib/generated/l10n/zulip_localizations_de.dart index fb47405921..a22b46f863 100644 --- a/lib/generated/l10n/zulip_localizations_de.dart +++ b/lib/generated/l10n/zulip_localizations_de.dart @@ -180,29 +180,31 @@ class ZulipLocalizationsDe extends ZulipLocalizations { } @override - String get actionSheetOptionViewReadReceipts => 'View read receipts'; + String get actionSheetOptionViewReadReceipts => + 'Empfangsbestätigungen ansehen'; @override - String get actionSheetReadReceipts => 'Read receipts'; + String get actionSheetReadReceipts => 'Empfangsbestätigungen'; @override String actionSheetReadReceiptsReadCount(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'This message has been read by $count people:', - one: 'This message has been read by $count person:', + other: + 'Diese Nachricht wurde von $count Personen gelesen:', + one: 'Diese Nachricht wurde von einer Person gelesen:', ); return '$_temp0'; } @override String get actionSheetReadReceiptsZeroReadCount => - 'No one has read this message yet.'; + 'Niemand hat diese Nachricht bisher gelesen.'; @override String get actionSheetReadReceiptsErrorReadCount => - 'Failed to load read receipts.'; + 'Laden von Empfangsbestätigungen fehlgeschlagen.'; @override String get actionSheetOptionCopyMessageText => 'Nachrichtentext kopieren'; @@ -403,7 +405,7 @@ class ZulipLocalizationsDe extends ZulipLocalizations { String get successTopicLinkCopied => 'Link zum Thema kopiert'; @override - String get successChannelLinkCopied => 'Channel link copied'; + String get successChannelLinkCopied => 'Kanallink kopiert'; @override String get errorBannerDeactivatedDmLabel => @@ -542,10 +544,10 @@ class ZulipLocalizationsDe extends ZulipLocalizations { } @override - String get emptyMessageList => 'There are no messages here.'; + String get emptyMessageList => 'Hier gibt es keine Nachrichten.'; @override - String get emptyMessageListSearch => 'No search results.'; + String get emptyMessageListSearch => 'Keine Suchergebnisse.'; @override String get messageListGroupYouWithYourself => 'Nachrichten mit dir selbst'; @@ -645,11 +647,11 @@ class ZulipLocalizationsDe extends ZulipLocalizations { 'Themen sind in dieser Organisation erforderlich.'; @override - String get errorContentNotInsertedTitle => 'Content not inserted'; + String get errorContentNotInsertedTitle => 'Inhalt nicht eingefügt'; @override String get errorContentToInsertIsEmpty => - 'The file to be inserted is empty or cannot be accessed.'; + 'Die einzufügende Datei ist leer oder kann nicht geöffnet werden.'; @override String errorServerVersionUnsupportedMessage( @@ -756,20 +758,20 @@ class ZulipLocalizationsDe extends ZulipLocalizations { String get yesterday => 'Gestern'; @override - String get userActiveNow => 'Active now'; + String get userActiveNow => 'Gerade aktiv'; @override - String get userIdle => 'Idle'; + String get userIdle => 'Untätig'; @override String userActiveMinutesAgo(int minutes) { String _temp0 = intl.Intl.pluralLogic( minutes, locale: localeName, - other: '$minutes minutes', - one: '1 minute', + other: '$minutes Minuten', + one: 'einer Minute', ); - return 'Active $_temp0 ago'; + return 'Aktiv vor $_temp0'; } @override @@ -777,44 +779,44 @@ class ZulipLocalizationsDe extends ZulipLocalizations { String _temp0 = intl.Intl.pluralLogic( hours, locale: localeName, - other: '$hours hours', - one: '1 hour', + other: '$hours Stunden', + one: 'einer Stunde', ); - return 'Active $_temp0 ago'; + return 'Aktiv vor $_temp0'; } @override - String get userActiveYesterday => 'Active yesterday'; + String get userActiveYesterday => 'Gestern aktiv'; @override String userActiveDaysAgo(int days) { String _temp0 = intl.Intl.pluralLogic( days, locale: localeName, - other: '$days days', - one: '1 day', + other: '$days Tagen', + one: 'einem Tag', ); - return 'Active $_temp0 ago'; + return 'Aktiv vor $_temp0'; } @override String userActiveDate(String date) { - return 'Active $date'; + return 'Aktiv $date'; } @override - String get userNotActiveInYear => 'Not active in the last year'; + String get userNotActiveInYear => 'Im letzten Jahr nicht aktiv'; @override - String get invisibleMode => 'Invisible mode'; + String get invisibleMode => 'Unsichtbarer Modus'; @override String get turnOnInvisibleModeErrorTitle => - 'Error turning on invisible mode. Please try again.'; + 'Fehler beim Einschalten des unsichtbaren Modus. Bitte versuche es erneut.'; @override String get turnOffInvisibleModeErrorTitle => - 'Error turning off invisible mode. Please try again.'; + 'Fehler beim Ausschalten des unsichtbaren Modus. Bitte versuche es erneut.'; @override String get userRoleOwner => 'Besitzer'; @@ -838,10 +840,10 @@ class ZulipLocalizationsDe extends ZulipLocalizations { String get statusButtonLabelStatusSet => 'Status'; @override - String get statusButtonLabelStatusUnset => 'Set status'; + String get statusButtonLabelStatusUnset => 'Status setzen'; @override - String get noStatusText => 'No status text'; + String get noStatusText => 'Kein Statustext'; @override String get setStatusPageTitle => 'Status setzen'; @@ -922,7 +924,7 @@ class ZulipLocalizationsDe extends ZulipLocalizations { String get channelsEmptyPlaceholder => 'Du hast noch keine Kanäle abonniert.'; @override - String get sharePageTitle => 'Share'; + String get sharePageTitle => 'Teilen'; @override String get mainMenuMyProfile => 'Mein Profil'; @@ -957,7 +959,7 @@ class ZulipLocalizationsDe extends ZulipLocalizations { String get reactedEmojiSelfUser => 'Du'; @override - String get reactionChipsLabel => 'Reactions'; + String get reactionChipsLabel => 'Reaktionen'; @override String reactionChipLabel(String emojiName, String votes) { @@ -969,8 +971,8 @@ class ZulipLocalizationsDe extends ZulipLocalizations { String _temp0 = intl.Intl.pluralLogic( otherUsersCount, locale: localeName, - other: 'You and $otherUsersCount others', - one: 'You and 1 other', + other: 'Du und $otherUsersCount weitere', + one: 'Du und ein weiterer', ); return '$_temp0'; } @@ -1116,11 +1118,11 @@ class ZulipLocalizationsDe extends ZulipLocalizations { 'Entfernen der Reaktion fehlgeschlagen'; @override - String get errorSharingTitle => 'Failed to share content'; + String get errorSharingTitle => 'Teilen des Inhalts fehlgeschlagen'; @override String get errorSharingAccountNotLoggedIn => - 'There is no account logged in. Please log in to an account and try again.'; + 'Es ist kein Konto angemeldet. Bitte logge dich in ein Konto ein und versuche es erneut.'; @override String get emojiReactionsMore => 'mehr'; @@ -1132,8 +1134,7 @@ class ZulipLocalizationsDe extends ZulipLocalizations { String get noEarlierMessages => 'Keine früheren Nachrichten'; @override - String get revealButtonLabel => - 'Nachricht für stummgeschalteten Absender anzeigen'; + String get revealButtonLabel => 'Nachricht anzeigen'; @override String get mutedUser => 'Stummgeschaltete:r Nutzer:in'; diff --git a/lib/generated/l10n/zulip_localizations_ja.dart b/lib/generated/l10n/zulip_localizations_ja.dart index 647b1f155d..249e42587b 100644 --- a/lib/generated/l10n/zulip_localizations_ja.dart +++ b/lib/generated/l10n/zulip_localizations_ja.dart @@ -44,11 +44,11 @@ class ZulipLocalizationsJa extends ZulipLocalizations { @override String tryAnotherAccountMessage(Object url) { - return 'Your account at $url is taking a while to load.'; + return '$url のアカウントの読み込みに時間がかかっています。'; } @override - String get tryAnotherAccountButton => 'Try another account'; + String get tryAnotherAccountButton => '別のアカウントを試す'; @override String get chooseAccountPageLogOutButton => 'ログアウト'; @@ -58,10 +58,10 @@ class ZulipLocalizationsJa extends ZulipLocalizations { @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.'; + '今後このアカウントを使うには、組織のURLとアカウント情報を再度入力する必要があります。'; @override - String get logOutConfirmationDialogConfirmButton => 'Log out'; + String get logOutConfirmationDialogConfirmButton => 'ログアウト'; @override String get chooseAccountButtonAddAnAccount => '新しいアカウントを追加'; @@ -70,33 +70,33 @@ class ZulipLocalizationsJa extends ZulipLocalizations { String get profileButtonSendDirectMessage => 'ダイレクトメッセージを送信'; @override - String get errorCouldNotShowUserProfile => 'Could not show user profile.'; + String get errorCouldNotShowUserProfile => 'ユーザープロフィールを表示できませんでした。'; @override - String get permissionsNeededTitle => 'Permissions needed'; + String get permissionsNeededTitle => '権限が必要です'; @override - String get permissionsNeededOpenSettings => 'Open settings'; + String get permissionsNeededOpenSettings => '設定を開く'; @override String get permissionsDeniedCameraAccess => - 'To upload an image, please grant Zulip additional permissions in Settings.'; + '画像をアップロードするには、[設定] でZulipに追加の権限を付与してください。'; @override String get permissionsDeniedReadExternalStorage => - 'To upload files, please grant Zulip additional permissions in Settings.'; + 'ファイルをアップロードするには、[設定] でZulipに追加の権限を付与してください。'; @override - String get actionSheetOptionSubscribe => 'Subscribe'; + String get actionSheetOptionSubscribe => 'チャンネルに参加'; @override - String get subscribeFailedTitle => 'Failed to subscribe'; + String get subscribeFailedTitle => 'チャンネルへの参加に失敗しました'; @override String get actionSheetOptionMarkChannelAsRead => 'チャンネルを既読にする'; @override - String get actionSheetOptionCopyChannelLink => 'Copy link to channel'; + String get actionSheetOptionCopyChannelLink => 'チャンネルのリンクをコピー'; @override String get actionSheetOptionListOfTopics => 'トピック一覧'; @@ -105,22 +105,22 @@ class ZulipLocalizationsJa extends ZulipLocalizations { String get actionSheetOptionChannelFeed => 'Channel feed'; @override - String get actionSheetOptionUnsubscribe => 'Unsubscribe'; + String get actionSheetOptionUnsubscribe => 'チャンネルから退出'; @override String unsubscribeConfirmationDialogTitle(String channelName) { - return 'Unsubscribe from $channelName?'; + return '$channelName から退出しますか?'; } @override String get unsubscribeConfirmationDialogMessageMaybeCannotResubscribe => - 'Once you leave this channel, you might not be able to rejoin.'; + 'このチャンネルを退出すると、再び参加できない可能性があります。'; @override - String get unsubscribeConfirmationDialogConfirmButton => 'Unsubscribe'; + String get unsubscribeConfirmationDialogConfirmButton => 'チャンネルから退出'; @override - String get unsubscribeFailedTitle => 'Failed to unsubscribe'; + String get unsubscribeFailedTitle => 'チャンネルからの退出に失敗しました'; @override String get actionSheetOptionMuteTopic => 'トピックをミュート'; @@ -147,14 +147,14 @@ class ZulipLocalizationsJa extends ZulipLocalizations { String get errorUnresolveTopicFailedTitle => 'トピックを未解決にできませんでした'; @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 @@ -162,41 +162,39 @@ class ZulipLocalizationsJa extends ZulipLocalizations { String _temp0 = intl.Intl.pluralLogic( num, locale: localeName, - other: '$num votes', - one: '1 vote', + other: '$num件', + one: '1件', ); - return '$emojiName: $_temp0'; + return '$emojiName:$_temp0'; } @override String seeWhoReactedSheetUserListLabel(String emojiName, int num) { - return 'Votes for $emojiName ($num)'; + return '$emojiName のリアクション件数($num件)'; } @override - String get actionSheetOptionViewReadReceipts => 'View read receipts'; + String get actionSheetOptionViewReadReceipts => '既読確認を表示'; @override - String get actionSheetReadReceipts => 'Read receipts'; + String get actionSheetReadReceipts => '既読確認'; @override String actionSheetReadReceiptsReadCount(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'This message has been read by $count people:', - one: 'This message has been read by $count person:', + other: 'このメッセージは $count 人に読まれています:', + one: 'このメッセージは $count 人に読まれています:', ); return '$_temp0'; } @override - String get actionSheetReadReceiptsZeroReadCount => - 'No one has read this message yet.'; + String get actionSheetReadReceiptsZeroReadCount => 'このメッセージはまだ誰も読んでいません。'; @override - String get actionSheetReadReceiptsErrorReadCount => - 'Failed to load read receipts.'; + String get actionSheetReadReceiptsErrorReadCount => '既読情報の読み込みに失敗しました。'; @override String get actionSheetOptionCopyMessageText => 'メッセージ本文をコピー'; @@ -229,7 +227,7 @@ class ZulipLocalizationsJa extends ZulipLocalizations { String get actionSheetOptionMarkTopicAsRead => 'トピックを既読にする'; @override - String get actionSheetOptionCopyTopicLink => 'Copy link to topic'; + String get actionSheetOptionCopyTopicLink => 'トピックのリンクをコピー'; @override String get errorWebAuthOperationalErrorTitle => '問題が発生しました'; @@ -242,7 +240,7 @@ class ZulipLocalizationsJa extends ZulipLocalizations { @override String errorAccountLoggedIn(String email, String server) { - return 'The account $email at $server is already in your list of accounts.'; + return '$server の $email アカウントは、すでにアカウント一覧に追加されています。'; } @override @@ -270,10 +268,10 @@ class ZulipLocalizationsJa extends ZulipLocalizations { String _temp0 = intl.Intl.pluralLogic( num, locale: localeName, - other: '$num files are', - one: 'File is', + other: '添付した $num 個のファイルは', + one: '添付したファイルは', ); - return '$_temp0 larger than the server\'s limit of $maxFileUploadSizeMib MiB and will not be uploaded:\n\n$listMessage'; + return '$_temp0サーバーの上限 $maxFileUploadSizeMib MiB を超えているため、アップロードできません:\n\n$listMessage'; } @override @@ -281,56 +279,53 @@ class ZulipLocalizationsJa extends ZulipLocalizations { String _temp0 = intl.Intl.pluralLogic( num, locale: localeName, - other: 'Files', - one: 'File', + other: 'ファイルが大きすぎます', + one: 'ファイルが大きすぎます', ); - return '$_temp0 too large'; + return '$_temp0'; } @override - String get errorLoginInvalidInputTitle => 'Invalid input'; + String get errorLoginInvalidInputTitle => '入力が正しくありません'; @override - String get errorLoginFailedTitle => 'Login failed'; + String get errorLoginFailedTitle => 'ログインに失敗しました'; @override - String get errorMessageNotSent => 'Message not sent'; + String get errorMessageNotSent => 'メッセージを送信できませんでした'; @override - String get errorMessageEditNotSaved => 'Message not saved'; + String get errorMessageEditNotSaved => 'メッセージを保存できませんでした'; @override String errorLoginCouldNotConnect(String url) { - return 'Failed to connect to server:\n$url'; + return 'サーバーに接続できませんでした:\n$url'; } @override - String get errorCouldNotConnectTitle => 'Could not connect'; + String get errorCouldNotConnectTitle => '接続できませんでした'; @override - String get errorMessageDoesNotSeemToExist => - 'That message does not seem to exist.'; + String get errorMessageDoesNotSeemToExist => 'そのメッセージは見つかりませんでした。'; @override - String get errorQuotationFailed => 'Quotation failed'; + String get errorQuotationFailed => '引用できませんでした'; @override String errorServerMessage(String message) { - return 'The server said:\n\n$message'; + return 'サーバーからの応答:\n\n$message'; } @override - String get errorConnectingToServerShort => - 'Error connecting to Zulip. Retrying…'; + String get errorConnectingToServerShort => 'Zulip への接続でエラーが発生しました。再試行中…'; @override String errorConnectingToServerDetails(String serverUrl, String error) { - return 'Error connecting to Zulip at $serverUrl. Will retry:\n\n$error'; + return 'Zulip($serverUrl)への接続でエラーが発生しました。再試行します:\n\n$error'; } @override - String get errorHandlingEventTitle => - 'Error handling a Zulip event. Retrying connection…'; + String get errorHandlingEventTitle => 'Zulip のイベント処理でエラーが発生しました。再接続を試行しています…'; @override String errorHandlingEventDetails( @@ -338,299 +333,290 @@ class ZulipLocalizationsJa extends ZulipLocalizations { String error, String event, ) { - return 'Error handling a Zulip event from $serverUrl; will retry.\n\nError: $error\n\nEvent: $event'; + return 'Zulip($serverUrl)からのイベント処理でエラーが発生しました。再試行します。\n\nエラー:$error\n\nイベント:$event'; } @override - String get errorCouldNotOpenLinkTitle => 'Unable to open link'; + String get errorCouldNotOpenLinkTitle => 'リンクを開けませんでした'; @override String errorCouldNotOpenLink(String url) { - return 'Link could not be opened: $url'; + return 'リンクを開けませんでした:$url'; } @override - String get errorMuteTopicFailed => 'Failed to mute topic'; + String get errorMuteTopicFailed => 'トピックをミュートできませんでした'; @override - String get errorUnmuteTopicFailed => 'Failed to unmute topic'; + String get errorUnmuteTopicFailed => 'トピックのミュート解除ができませんでした'; @override - String get errorFollowTopicFailed => 'Failed to follow topic'; + String get errorFollowTopicFailed => 'トピックをフォローできませんでした'; @override - String get errorUnfollowTopicFailed => 'Failed to unfollow topic'; + String get errorUnfollowTopicFailed => 'トピックのフォロー解除ができませんでした'; @override - String get errorSharingFailed => 'Sharing failed'; + String get errorSharingFailed => '共有に失敗しました'; @override - String get errorStarMessageFailedTitle => 'Failed to star message'; + String get errorStarMessageFailedTitle => 'メッセージにスターを付けられませんでした'; @override - String get errorUnstarMessageFailedTitle => 'Failed to unstar message'; + String get errorUnstarMessageFailedTitle => 'メッセージのスターを外せませんでした'; @override - String get errorCouldNotEditMessageTitle => 'Could not edit message'; + String get errorCouldNotEditMessageTitle => 'メッセージを編集できませんでした'; @override - String get successLinkCopied => 'Link copied'; + String get successLinkCopied => 'リンクをコピーしました'; @override - String get successMessageTextCopied => 'Message text copied'; + String get successMessageTextCopied => 'メッセージ本文をコピーしました'; @override - String get successMessageLinkCopied => 'Message link copied'; + 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 => - 'You cannot send messages to deactivated users.'; + String get errorBannerDeactivatedDmLabel => '無効化されたユーザーにはメッセージを送信できません。'; @override - String get errorBannerCannotPostInChannelLabel => - 'You do not have permission to post in this channel.'; + String get errorBannerCannotPostInChannelLabel => 'このチャンネルに投稿する権限がありません。'; @override - String get composeBoxBannerLabelEditMessage => 'Edit message'; + String get composeBoxBannerLabelEditMessage => 'メッセージを編集'; @override - String get composeBoxBannerButtonCancel => 'Cancel'; + String get composeBoxBannerButtonCancel => 'キャンセル'; @override - String get composeBoxBannerButtonSave => 'Save'; + String get composeBoxBannerButtonSave => '保存'; @override - String get editAlreadyInProgressTitle => 'Cannot edit message'; + String get editAlreadyInProgressTitle => 'メッセージを編集できません'; @override - String get editAlreadyInProgressMessage => - 'An edit is already in progress. Please wait for it to complete.'; + String get editAlreadyInProgressMessage => '他の編集が進行中です。完了するまでお待ちください。'; @override - String get savingMessageEditLabel => 'SAVING EDIT…'; + String get savingMessageEditLabel => '保存中…'; @override - String get savingMessageEditFailedLabel => 'EDIT NOT SAVED'; + String get savingMessageEditFailedLabel => '編集未保存'; @override - String get discardDraftConfirmationDialogTitle => - 'Discard the message you’re writing?'; + String get discardDraftConfirmationDialogTitle => '作成中のメッセージを破棄しますか?'; @override String get discardDraftForEditConfirmationDialogMessage => - 'When you edit a message, the content that was previously in the compose box is discarded.'; + 'メッセージを編集すると、作成中の内容は破棄されます。'; @override String get discardDraftForOutboxConfirmationDialogMessage => - 'When you restore an unsent message, the content that was previously in the compose box is discarded.'; + '未送信メッセージを復元すると、作成中の内容は破棄されます。'; @override - String get discardDraftConfirmationDialogConfirmButton => 'Discard'; + String get discardDraftConfirmationDialogConfirmButton => '破棄'; @override - String get composeBoxAttachFilesTooltip => 'Attach files'; + String get composeBoxAttachFilesTooltip => 'ファイルを添付'; @override - String get composeBoxAttachMediaTooltip => 'Attach images or videos'; + String get composeBoxAttachMediaTooltip => '画像や動画を添付'; @override - String get composeBoxAttachFromCameraTooltip => 'Take a photo'; + String get composeBoxAttachFromCameraTooltip => '写真を撮る'; @override - String get composeBoxGenericContentHint => 'Type a message'; + String get composeBoxGenericContentHint => 'メッセージを入力'; @override - String get newDmSheetComposeButtonLabel => 'Compose'; + String get newDmSheetComposeButtonLabel => '作成'; @override - String get newDmSheetScreenTitle => 'New DM'; + String get newDmSheetScreenTitle => '新しいDM'; @override - String get newDmFabButtonLabel => 'New DM'; + String get newDmFabButtonLabel => '新しいDM'; @override - String get newDmSheetSearchHintEmpty => 'Add one or more users'; + String get newDmSheetSearchHintEmpty => '1人以上のユーザーを追加'; @override - String get newDmSheetSearchHintSomeSelected => 'Add another user…'; + String get newDmSheetSearchHintSomeSelected => '別のユーザーを追加…'; @override - String get newDmSheetNoUsersFound => 'No users found'; + String get newDmSheetNoUsersFound => 'ユーザーが見つかりません'; @override String composeBoxDmContentHint(String user) { - return 'Message @$user'; + return '@$user さんにメッセージ'; } @override - String get composeBoxGroupDmContentHint => 'Message group'; + String get composeBoxGroupDmContentHint => 'グループにメッセージ'; @override - String get composeBoxSelfDmContentHint => 'Jot down something'; + String get composeBoxSelfDmContentHint => 'メモを書き留める'; @override String composeBoxChannelContentHint(String destination) { - return 'Message $destination'; + return '$destination にメッセージを送信'; } @override - String get preparingEditMessageContentInput => 'Preparing…'; + String get preparingEditMessageContentInput => '準備中…'; @override - String get composeBoxSendTooltip => 'Send'; + String get composeBoxSendTooltip => '送信'; @override - String get unknownChannelName => '(unknown channel)'; + String get unknownChannelName => '(不明なチャンネル)'; @override - String get composeBoxTopicHintText => 'Topic'; + String get composeBoxTopicHintText => 'トピック'; @override String composeBoxEnterTopicOrSkipHintText(String defaultTopicName) { - return 'Enter a topic (skip for “$defaultTopicName”)'; + return 'トピックを入力(省略時は「$defaultTopicName」)'; } @override String composeBoxUploadingFilename(String filename) { - return 'Uploading $filename…'; + return '$filename をアップロード中…'; } @override String composeBoxLoadingMessage(int messageId) { - return '(loading message $messageId)'; + return '(メッセージ $messageId を読み込み中)'; } @override - String get unknownUserName => '(unknown user)'; + String get unknownUserName => '(不明なユーザー)'; @override - String get dmsWithYourselfPageTitle => 'DMs with yourself'; + String get dmsWithYourselfPageTitle => '自分とのDM'; @override String messageListGroupYouAndOthers(String others) { - return 'You and $others'; + return '自分と$others'; } @override String dmsWithOthersPageTitle(String others) { - return 'DMs with $others'; + return '$othersとのDM'; } @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 => 'Messages with yourself'; + String get messageListGroupYouWithYourself => '自分とのメッセージ'; @override - String get contentValidationErrorTooLong => - 'Message length shouldn\'t be greater than 10000 characters.'; + String get contentValidationErrorTooLong => 'メッセージは10000文字以内で入力してください。'; @override - String get contentValidationErrorEmpty => 'You have nothing to send!'; + String get contentValidationErrorEmpty => 'メッセージが空です!'; @override String get contentValidationErrorQuoteAndReplyInProgress => - 'Please wait for the quotation to complete.'; + '引用が完了するまでお待ちください。'; @override - String get contentValidationErrorUploadInProgress => - 'Please wait for the upload to complete.'; + String get contentValidationErrorUploadInProgress => 'アップロードが完了するまでお待ちください。'; @override - String get dialogCancel => 'Cancel'; + String get dialogCancel => 'キャンセル'; @override - String get dialogContinue => 'Continue'; + String get dialogContinue => '続行'; @override - String get dialogClose => 'Close'; + String get dialogClose => '閉じる'; @override - String get errorDialogLearnMore => 'Learn more'; + String get errorDialogLearnMore => '詳しく見る'; @override String get errorDialogContinue => 'OK'; @override - String get errorDialogTitle => 'Error'; + String get errorDialogTitle => 'エラー'; @override - String get snackBarDetails => 'Details'; + String get snackBarDetails => '詳細'; @override - String get lightboxCopyLinkTooltip => 'Copy link'; + String get lightboxCopyLinkTooltip => 'リンクをコピー'; @override - String get lightboxVideoCurrentPosition => 'Current position'; + String get lightboxVideoCurrentPosition => '再生位置'; @override - String get lightboxVideoDuration => 'Video duration'; + String get lightboxVideoDuration => '再生時間'; @override - String get loginPageTitle => 'Log in'; + String get loginPageTitle => 'ログイン'; @override - String get loginFormSubmitLabel => 'Log in'; + String get loginFormSubmitLabel => 'ログイン'; @override - String get loginMethodDivider => 'OR'; + String get loginMethodDivider => 'または'; @override String signInWithFoo(String method) { - return 'Sign in with $method'; + return '$methodでログイン'; } @override - String get loginAddAnAccountPageTitle => 'Add an account'; + String get loginAddAnAccountPageTitle => 'アカウントを追加'; @override - String get loginServerUrlLabel => 'Your Zulip server URL'; + String get loginServerUrlLabel => 'Zulip サーバーのURL'; @override - String get loginHidePassword => 'Hide password'; + String get loginHidePassword => 'パスワードを非表示'; @override - String get loginEmailLabel => 'Email address'; + String get loginEmailLabel => 'メールアドレス'; @override - String get loginErrorMissingEmail => 'Please enter your email.'; + String get loginErrorMissingEmail => 'メールアドレスを入力してください。'; @override - String get loginPasswordLabel => 'Password'; + String get loginPasswordLabel => 'パスワード'; @override - String get loginErrorMissingPassword => 'Please enter your password.'; + String get loginErrorMissingPassword => 'パスワードを入力してください。'; @override - String get loginUsernameLabel => 'Username'; + String get loginUsernameLabel => 'ユーザー名'; @override - String get loginErrorMissingUsername => 'Please enter your username.'; + String get loginErrorMissingUsername => 'ユーザー名を入力してください。'; @override - String get topicValidationErrorTooLong => - 'Topic length shouldn\'t be greater than 60 characters.'; + String get topicValidationErrorTooLong => 'トピックは60文字以内で入力してください。'; @override - String get topicValidationErrorMandatoryButEmpty => - 'Topics are required in this organization.'; + String get topicValidationErrorMandatoryButEmpty => 'この組織ではトピックの入力が必須です。'; @override - String get errorContentNotInsertedTitle => 'Content not inserted'; + String get errorContentNotInsertedTitle => 'コンテンツを挿入できませんでした'; @override - String get errorContentToInsertIsEmpty => - 'The file to be inserted is empty or cannot be accessed.'; + String get errorContentToInsertIsEmpty => '挿入しようとしたファイルが空、またはアクセスできません。'; @override String errorServerVersionUnsupportedMessage( @@ -638,57 +624,57 @@ class ZulipLocalizationsJa extends ZulipLocalizations { String zulipVersion, String minSupportedZulipVersion, ) { - return '$url is running Zulip Server $zulipVersion, which is unsupported. The minimum supported version is Zulip Server $minSupportedZulipVersion.'; + return '$url で動作している Zulip Server $zulipVersion はサポート対象外です。サポートされる最小バージョンは Zulip Server $minSupportedZulipVersion です。'; } @override String errorInvalidApiKeyMessage(String url) { - return 'Your account at $url could not be authenticated. Please try logging in again or use another account.'; + return '$url のアカウントを認証できませんでした。もう一度ログインするか、別のアカウントを使用してください。'; } @override - String get errorInvalidResponse => 'The server sent an invalid response.'; + String get errorInvalidResponse => 'サーバーから無効な応答が返されました。'; @override - String get errorNetworkRequestFailed => 'Network request failed'; + String get errorNetworkRequestFailed => 'ネットワークエラーが発生しました'; @override String errorMalformedResponse(int httpStatus) { - return 'Server gave malformed response; HTTP status $httpStatus'; + return 'サーバーが不正なレスポンスを返しました(HTTPステータス $httpStatus)'; } @override String errorMalformedResponseWithCause(int httpStatus, String details) { - return 'Server gave malformed response; HTTP status $httpStatus; $details'; + return 'サーバーが不正なレスポンスを返しました(HTTPステータス $httpStatus、詳細: $details)'; } @override String errorRequestFailed(int httpStatus) { - return 'Network request failed: HTTP status $httpStatus'; + return 'ネットワークリクエストに失敗しました:HTTP ステータス $httpStatus'; } @override - String get errorVideoPlayerFailed => 'Unable to play the video.'; + String get errorVideoPlayerFailed => '動画を再生できません。'; @override - String get serverUrlValidationErrorEmpty => 'Please enter a URL.'; + String get serverUrlValidationErrorEmpty => 'URLを入力してください。'; @override - String get serverUrlValidationErrorInvalidUrl => 'Please enter a valid URL.'; + String get serverUrlValidationErrorInvalidUrl => '有効なURLを入力してください。'; @override String get serverUrlValidationErrorNoUseEmail => - 'Please enter the server URL, not your email.'; + 'メールアドレスではなく、サーバーURLを入力してください。'; @override String get serverUrlValidationErrorUnsupportedScheme => - 'The server URL must start with http:// or https://.'; + 'サーバーURLは http:// または https:// で始まる必要があります。'; @override - String get spoilerDefaultHeaderText => 'Spoiler'; + String get spoilerDefaultHeaderText => '内容を隠す'; @override - String get markAllAsReadLabel => 'Mark all messages as read'; + String get markAllAsReadLabel => 'すべてのメッセージを既読にする'; @override String markAsReadComplete(int num) { @@ -698,14 +684,14 @@ class ZulipLocalizationsJa extends ZulipLocalizations { other: '$num messages', one: '1 message', ); - return 'Marked $_temp0 as read.'; + return '$_temp0件のメッセージを既読にしました。'; } @override - String get markAsReadInProgress => 'Marking messages as read…'; + String get markAsReadInProgress => 'メッセージを既読にしています…'; @override - String get errorMarkAsReadFailedTitle => 'Mark as read failed'; + String get errorMarkAsReadFailedTitle => '既読にできませんでした'; @override String markAsUnreadComplete(int num) { @@ -715,26 +701,26 @@ class ZulipLocalizationsJa extends ZulipLocalizations { other: '$num messages', one: '1 message', ); - return 'Marked $_temp0 as unread.'; + return '$_temp0件のメッセージを未読にしました。'; } @override - String get markAsUnreadInProgress => 'Marking messages as unread…'; + String get markAsUnreadInProgress => 'メッセージを未読にしています…'; @override - String get errorMarkAsUnreadFailedTitle => 'Mark as unread failed'; + String get errorMarkAsUnreadFailedTitle => '未読にできませんでした'; @override - String get today => 'Today'; + String get today => '今日'; @override - String get yesterday => 'Yesterday'; + String get yesterday => '昨日'; @override - String get userActiveNow => 'Active now'; + String get userActiveNow => 'オンライン'; @override - String get userIdle => 'Idle'; + String get userIdle => '退席中'; @override String userActiveMinutesAgo(int minutes) { @@ -744,7 +730,7 @@ class ZulipLocalizationsJa extends ZulipLocalizations { other: '$minutes minutes', one: '1 minute', ); - return 'Active $_temp0 ago'; + return '$_temp0分前にオンライン'; } @override @@ -755,11 +741,11 @@ class ZulipLocalizationsJa extends ZulipLocalizations { other: '$hours hours', one: '1 hour', ); - return 'Active $_temp0 ago'; + return '$_temp0時間前にオンライン'; } @override - String get userActiveYesterday => 'Active yesterday'; + String get userActiveYesterday => '昨日オンライン'; @override String userActiveDaysAgo(int days) { @@ -769,27 +755,25 @@ class ZulipLocalizationsJa extends ZulipLocalizations { other: '$days days', one: '1 day', ); - return 'Active $_temp0 ago'; + return '$_temp0日前にオンライン'; } @override String userActiveDate(String date) { - return 'Active $date'; + return '$dateにオンライン'; } @override - String get userNotActiveInYear => 'Not active in the last year'; + String get userNotActiveInYear => '1年以上活動していません'; @override - String get invisibleMode => 'Invisible mode'; + String get invisibleMode => 'ステータス非表示'; @override - String get turnOnInvisibleModeErrorTitle => - 'Error turning on invisible mode. Please try again.'; + String get turnOnInvisibleModeErrorTitle => '非表示モードを有効にできませんでした。もう一度お試しください。'; @override - String get turnOffInvisibleModeErrorTitle => - 'Error turning off invisible mode. Please try again.'; + String get turnOffInvisibleModeErrorTitle => '非表示モードをオフにできません。もう一度お試しください。'; @override String get userRoleOwner => 'オーナー'; @@ -810,134 +794,132 @@ class ZulipLocalizationsJa 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.'; + String get updateStatusErrorTitle => 'ステータスの更新に失敗しました。もう一度お試しください。'; @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 => 'Inbox'; + String get inboxPageTitle => '受信箱'; @override String get inboxEmptyPlaceholder => - 'There are no unread messages in your inbox. Use the buttons below to view the combined feed or list of channels.'; + '未読メッセージはありません。下のボタンから、統合フィードまたはチャンネル一覧を表示できます。'; @override - String get recentDmConversationsPageTitle => 'Direct messages'; + String get recentDmConversationsPageTitle => 'ダイレクトメッセージ'; @override - String get recentDmConversationsSectionHeader => 'Direct messages'; + String get recentDmConversationsSectionHeader => 'ダイレクトメッセージ'; @override String get recentDmConversationsEmptyPlaceholder => - 'You have no direct messages yet! Why not start the conversation?'; + 'まだダイレクトメッセージはありません!会話を始めてみませんか?'; @override - String get combinedFeedPageTitle => 'Combined feed'; + String get combinedFeedPageTitle => '統合フィード'; @override - String get mentionsPageTitle => 'Mentions'; + String get mentionsPageTitle => 'メンション'; @override - String get starredMessagesPageTitle => 'Starred messages'; + String get starredMessagesPageTitle => 'スター付きメッセージ'; @override - String get channelsPageTitle => 'Channels'; + String get channelsPageTitle => 'チャンネル'; @override - String get channelsEmptyPlaceholder => - 'You are not subscribed to any channels yet.'; + String get channelsEmptyPlaceholder => 'まだ参加しているチャンネルはありません。'; @override - String get sharePageTitle => 'Share'; + String get sharePageTitle => '共有'; @override - String get mainMenuMyProfile => 'My profile'; + String get mainMenuMyProfile => '自分のプロフィール'; @override - String get topicsButtonTooltip => 'Topics'; + String get topicsButtonTooltip => 'トピック'; @override - String get channelFeedButtonTooltip => 'Channel feed'; + String get channelFeedButtonTooltip => 'チャンネルフィード'; @override String notifGroupDmConversationLabel(String senderFullName, int numOthers) { String _temp0 = intl.Intl.pluralLogic( numOthers, locale: localeName, - other: '$numOthers others', - one: '1 other', + other: 'ほか$numOthers人', + one: 'ほか1人', ); - return '$senderFullName to you and $_temp0'; + return '$senderFullName から 自分と$_temp0へ'; } @override - String get pinnedSubscriptionsLabel => 'Pinned'; + String get pinnedSubscriptionsLabel => 'ピン留め済み'; @override - String get unpinnedSubscriptionsLabel => 'Unpinned'; + String get unpinnedSubscriptionsLabel => 'ピン留めなし'; @override - String get notifSelfUser => 'You'; + String get notifSelfUser => '自分'; @override - String get reactedEmojiSelfUser => 'You'; + String get reactedEmojiSelfUser => '自分'; @override - String get reactionChipsLabel => 'Reactions'; + String get reactionChipsLabel => 'リアクション'; @override String reactionChipLabel(String emojiName, String votes) { - return '$emojiName: $votes'; + return '$emojiName: $votes件'; } @override @@ -945,60 +927,60 @@ class ZulipLocalizationsJa 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'; } @override String onePersonTyping(String typist) { - return '$typist is typing…'; + return '$typist さんが入力中…'; } @override String twoPeopleTyping(String typist, String otherTypist) { - return '$typist and $otherTypist are typing…'; + return '$typist さんと $otherTypist さんが入力中…'; } @override - String get manyPeopleTyping => 'Several people are typing…'; + String get manyPeopleTyping => '複数のユーザーが入力中…'; @override - String get wildcardMentionAll => 'all'; + String get wildcardMentionAll => '全員'; @override - String get wildcardMentionEveryone => 'everyone'; + String get wildcardMentionEveryone => '全員'; @override - String get wildcardMentionChannel => 'channel'; + String get wildcardMentionChannel => 'チャンネル'; @override - String get wildcardMentionStream => 'stream'; + String get wildcardMentionStream => 'チャンネル'; @override - String get wildcardMentionTopic => 'topic'; + String get wildcardMentionTopic => 'トピック'; @override - String get wildcardMentionChannelDescription => 'Notify channel'; + String get wildcardMentionChannelDescription => 'チャンネル参加者に通知'; @override - String get wildcardMentionStreamDescription => 'Notify stream'; + String get wildcardMentionStreamDescription => 'ストリーム参加者に通知'; @override - String get wildcardMentionAllDmDescription => 'Notify recipients'; + String get wildcardMentionAllDmDescription => '受信者に通知'; @override - String get wildcardMentionTopicDescription => 'Notify topic'; + String get wildcardMentionTopicDescription => 'トピック参加者に通知'; @override - String get messageIsEditedLabel => 'EDITED'; + String get messageIsEditedLabel => '編集済み'; @override - String get messageIsMovedLabel => 'MOVED'; + String get messageIsMovedLabel => '移動済み'; @override - String get messageNotSentLabel => 'MESSAGE NOT SENT'; + String get messageNotSentLabel => 'メッセージ未送信'; @override String pollVoterNames(String voterNames) { @@ -1006,111 +988,110 @@ class ZulipLocalizationsJa extends ZulipLocalizations { } @override - String get themeSettingTitle => 'THEME'; + String get themeSettingTitle => 'テーマ'; @override - String get themeSettingDark => 'Dark'; + String get themeSettingDark => 'ダークテーマ'; @override - String get themeSettingLight => 'Light'; + String get themeSettingLight => 'ライトテーマ'; @override - String get themeSettingSystem => 'System'; + String get themeSettingSystem => '自動テーマ'; @override - String get openLinksWithInAppBrowser => 'Open links with in-app browser'; + String get openLinksWithInAppBrowser => 'リンクをアプリ内ブラウザで開く'; @override - String get pollWidgetQuestionMissing => 'No question.'; + String get pollWidgetQuestionMissing => '質問がありません。'; @override - String get pollWidgetOptionsMissing => 'This poll has no options yet.'; + String get pollWidgetOptionsMissing => 'この投票にはまだ選択肢がありません。'; @override - String get initialAnchorSettingTitle => 'Open message feeds at'; + String get initialAnchorSettingTitle => 'メッセージ一覧の開始位置'; @override String get initialAnchorSettingDescription => - 'You can choose whether message feeds open at your first unread message or at the newest messages.'; + 'メッセージ一覧を、最初の未読メッセージから開くか、最新のメッセージから開くかを選択できます。'; @override - String get initialAnchorSettingFirstUnreadAlways => 'First unread message'; + String get initialAnchorSettingFirstUnreadAlways => '最初の未読メッセージ'; @override String get initialAnchorSettingFirstUnreadConversations => - 'First unread message in conversation views, newest message elsewhere'; + '会話ビューでは最初の未読メッセージ、それ以外では最新メッセージ'; @override - String get initialAnchorSettingNewestAlways => 'Newest message'; + String get initialAnchorSettingNewestAlways => '最新のメッセージ'; @override - String get markReadOnScrollSettingTitle => 'Mark messages as read on scroll'; + String get markReadOnScrollSettingTitle => 'スクロールでメッセージを既読にする'; @override String get markReadOnScrollSettingDescription => - 'When scrolling through messages, should they automatically be marked as read?'; + 'メッセージをスクロールしたとき、自動的に既読にしますか?'; @override - String get markReadOnScrollSettingAlways => 'Always'; + String get markReadOnScrollSettingAlways => '常に既読にする'; @override - String get markReadOnScrollSettingNever => 'Never'; + String get markReadOnScrollSettingNever => '既読にしない'; @override - String get markReadOnScrollSettingConversations => - 'Only in conversation views'; + String get markReadOnScrollSettingConversations => '会話ビューのみ'; @override String get markReadOnScrollSettingConversationsDescription => - 'Messages will be automatically marked as read only when viewing a single topic or direct message conversation.'; + 'メッセージは、単一のトピックまたはダイレクトメッセージの会話を表示しているときのみ、自動的に既読になります。'; @override - String get experimentalFeatureSettingsPageTitle => 'Experimental features'; + String get experimentalFeatureSettingsPageTitle => '実験的機能'; @override String get experimentalFeatureSettingsWarning => - 'These options enable features which are still under development and not ready. They may not work, and may cause issues in other areas of the app.\n\nThe purpose of these settings is for experimentation by people working on developing Zulip.'; + 'これらのオプションは、まだ開発中で未完成の機能を有効にします。正常に動作しない場合や、アプリの他の部分に不具合を引き起こす可能性があります。\n\nこの設定は、Zulip の開発に携わる人が試験的に利用することを目的としています。'; @override - String get errorNotificationOpenTitle => 'Failed to open notification'; + String get errorNotificationOpenTitle => '通知を開けませんでした'; @override String get errorNotificationOpenAccountNotFound => - 'The account associated with this notification could not be found.'; + 'この通知に関連付けられたアカウントが見つかりませんでした。'; @override - String get errorReactionAddingFailedTitle => 'Adding reaction failed'; + String get errorReactionAddingFailedTitle => 'リアクションを追加できませんでした'; @override - String get errorReactionRemovingFailedTitle => 'Removing reaction failed'; + String get errorReactionRemovingFailedTitle => 'リアクションを削除できませんでした'; @override - String get errorSharingTitle => 'Failed to share content'; + String get errorSharingTitle => 'コンテンツを共有できませんでした'; @override String get errorSharingAccountNotLoggedIn => - 'There is no account logged in. Please log in to an account and try again.'; + 'ログインしていません。アカウントにログインしてから、もう一度お試しください。'; @override - String get emojiReactionsMore => 'more'; + String get emojiReactionsMore => 'その他'; @override - String get emojiPickerSearchEmoji => 'Search emoji'; + String get emojiPickerSearchEmoji => '絵文字を検索'; @override - String get noEarlierMessages => 'No earlier messages'; + String get noEarlierMessages => 'これより前のメッセージはありません'; @override - String get revealButtonLabel => 'Reveal message'; + String get revealButtonLabel => 'メッセージを表示'; @override - String get mutedUser => 'Muted user'; + String get mutedUser => 'ミュート中のユーザー'; @override - String get scrollToBottomTooltip => 'Scroll to bottom'; + String get scrollToBottomTooltip => '最下部へ移動'; @override - String get appVersionUnknownPlaceholder => '(…)'; + String get appVersionUnknownPlaceholder => '(…)'; @override String get zulipAppTitle => 'Zulip'; diff --git a/lib/generated/l10n/zulip_localizations_pl.dart b/lib/generated/l10n/zulip_localizations_pl.dart index e4fdc40e60..2794614e81 100644 --- a/lib/generated/l10n/zulip_localizations_pl.dart +++ b/lib/generated/l10n/zulip_localizations_pl.dart @@ -89,10 +89,10 @@ class ZulipLocalizationsPl extends ZulipLocalizations { 'Aby odebrać pliki Zulip musi uzyskać dodatkowe uprawnienia w Ustawieniach.'; @override - String get actionSheetOptionSubscribe => 'Subscribe'; + String get actionSheetOptionSubscribe => 'Subskrybuj'; @override - String get subscribeFailedTitle => 'Failed to subscribe'; + String get subscribeFailedTitle => 'Subskrypcja bez powodzenia'; @override String get actionSheetOptionMarkChannelAsRead => @@ -108,22 +108,22 @@ class ZulipLocalizationsPl extends ZulipLocalizations { String get actionSheetOptionChannelFeed => 'Channel feed'; @override - String get actionSheetOptionUnsubscribe => 'Unsubscribe'; + String get actionSheetOptionUnsubscribe => 'Odsubskrybuj'; @override String unsubscribeConfirmationDialogTitle(String channelName) { - return 'Unsubscribe from $channelName?'; + return 'Odsubskrybować z $channelName?'; } @override String get unsubscribeConfirmationDialogMessageMaybeCannotResubscribe => - 'Once you leave this channel, you might not be able to rejoin.'; + 'Po opuszczeniu kanału możesz utracić możliwość powrotu.'; @override - String get unsubscribeConfirmationDialogConfirmButton => 'Unsubscribe'; + String get unsubscribeConfirmationDialogConfirmButton => 'Odsubskrybuj'; @override - String get unsubscribeFailedTitle => 'Failed to unsubscribe'; + String get unsubscribeFailedTitle => 'Odsubskrybowanie bez powdzenia'; @override String get actionSheetOptionMuteTopic => 'Wycisz wątek'; @@ -179,29 +179,32 @@ class ZulipLocalizationsPl extends ZulipLocalizations { } @override - String get actionSheetOptionViewReadReceipts => 'View read receipts'; + String get actionSheetOptionViewReadReceipts => + 'Zobacz potwierdzenia odczytu'; @override - String get actionSheetReadReceipts => 'Read receipts'; + String get actionSheetReadReceipts => 'Potwierdzenia odczytu'; @override String actionSheetReadReceiptsReadCount(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'This message has been read by $count people:', - one: 'This message has been read by $count person:', + other: + 'Ta wiadomość została przeczytana przez $count osób:', + one: + 'Ta wiadomość została przeczytana przez $count osobę:', ); return '$_temp0'; } @override String get actionSheetReadReceiptsZeroReadCount => - 'No one has read this message yet.'; + 'Nikt jeszcze nie widział tej wiadomości.'; @override String get actionSheetReadReceiptsErrorReadCount => - 'Failed to load read receipts.'; + 'Ładowanie potwierdzeń odczytu bez powodzenia.'; @override String get actionSheetOptionCopyMessageText => 'Skopiuj tekst wiadomości'; @@ -638,11 +641,12 @@ class ZulipLocalizationsPl extends ZulipLocalizations { 'Wątki są wymagane przez tę organizację.'; @override - String get errorContentNotInsertedTitle => 'Content not inserted'; + String get errorContentNotInsertedTitle => + 'Dodanie zawartości bez powodzenia'; @override String get errorContentToInsertIsEmpty => - 'The file to be inserted is empty or cannot be accessed.'; + 'Plik do dodania jest pusty lub nie ma do niego dostępu.'; @override String errorServerVersionUnsupportedMessage( @@ -745,20 +749,20 @@ class ZulipLocalizationsPl extends ZulipLocalizations { String get yesterday => 'Wczoraj'; @override - String get userActiveNow => 'Active now'; + String get userActiveNow => 'Dostępny'; @override - String get userIdle => 'Idle'; + String get userIdle => 'Bezczynny'; @override String userActiveMinutesAgo(int minutes) { String _temp0 = intl.Intl.pluralLogic( minutes, locale: localeName, - other: '$minutes minutes', - one: '1 minute', + other: '$minutes minut', + one: '1 minutę', ); - return 'Active $_temp0 ago'; + return 'Aktywny $_temp0 temu'; } @override @@ -766,33 +770,33 @@ class ZulipLocalizationsPl extends ZulipLocalizations { String _temp0 = intl.Intl.pluralLogic( hours, locale: localeName, - other: '$hours hours', - one: '1 hour', + other: '$hours godzin', + one: '1 godzinę', ); - return 'Active $_temp0 ago'; + return 'Aktywny $_temp0 temu'; } @override - String get userActiveYesterday => 'Active yesterday'; + String get userActiveYesterday => 'Aktywny wczoraj'; @override String userActiveDaysAgo(int days) { String _temp0 = intl.Intl.pluralLogic( days, locale: localeName, - other: '$days days', - one: '1 day', + other: '$days dni', + one: '1 dzień', ); - return 'Active $_temp0 ago'; + return 'Aktywny $_temp0 temu'; } @override String userActiveDate(String date) { - return 'Active $date'; + return 'Aktywny $date'; } @override - String get userNotActiveInYear => 'Not active in the last year'; + String get userNotActiveInYear => 'Brak aktywności za ostatni rok'; @override String get invisibleMode => 'Tryb ukrycia'; @@ -911,7 +915,7 @@ class ZulipLocalizationsPl extends ZulipLocalizations { String get channelsEmptyPlaceholder => 'Nie śledzisz żadnego z kanałów.'; @override - String get sharePageTitle => 'Share'; + String get sharePageTitle => 'Udostępnij'; @override String get mainMenuMyProfile => 'Mój profil'; @@ -1101,11 +1105,11 @@ class ZulipLocalizationsPl extends ZulipLocalizations { 'Usuwanie reakcji bez powodzenia'; @override - String get errorSharingTitle => 'Failed to share content'; + String get errorSharingTitle => 'Udostępnianie zawartości bez powodzenia'; @override String get errorSharingAccountNotLoggedIn => - 'There is no account logged in. Please log in to an account and try again.'; + 'Brak zalogowanego użytkownika. Proszę zaloguj się i spróbuj ponownie.'; @override String get emojiReactionsMore => 'więcej'; diff --git a/lib/generated/l10n/zulip_localizations_ru.dart b/lib/generated/l10n/zulip_localizations_ru.dart index 3b0d3e8cd8..b07752966c 100644 --- a/lib/generated/l10n/zulip_localizations_ru.dart +++ b/lib/generated/l10n/zulip_localizations_ru.dart @@ -32,7 +32,7 @@ class ZulipLocalizationsRu extends ZulipLocalizations { String get upgradeWelcomeDialogLinkText => 'Ознакомьтесь с анонсом в блоге!'; @override - String get upgradeWelcomeDialogDismiss => 'Приступим!'; + String get upgradeWelcomeDialogDismiss => 'Приступим'; @override String get chooseAccountPageTitle => 'Выберите учетную запись'; @@ -181,29 +181,32 @@ class ZulipLocalizationsRu extends ZulipLocalizations { } @override - String get actionSheetOptionViewReadReceipts => 'View read receipts'; + String get actionSheetOptionViewReadReceipts => + 'Посмотреть подтверждения прочтения'; @override - String get actionSheetReadReceipts => 'Read receipts'; + String get actionSheetReadReceipts => 'Подтверждения прочтения'; @override String actionSheetReadReceiptsReadCount(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'This message has been read by $count people:', - one: 'This message has been read by $count person:', + other: + 'Это сообщение было прочитано $count пользователями:', + one: + 'Это сообщение было прочитано $count пользователем:', ); return '$_temp0'; } @override String get actionSheetReadReceiptsZeroReadCount => - 'No one has read this message yet.'; + 'Это сообщение еще никто не прочитал.'; @override String get actionSheetReadReceiptsErrorReadCount => - 'Failed to load read receipts.'; + 'Не удалось загрузить подтверждения прочтения.'; @override String get actionSheetOptionCopyMessageText => 'Скопировать текст сообщения'; @@ -642,11 +645,11 @@ class ZulipLocalizationsRu extends ZulipLocalizations { 'Темы обязательны в этой организации.'; @override - String get errorContentNotInsertedTitle => 'Content not inserted'; + String get errorContentNotInsertedTitle => 'Содержимое не вставлено'; @override String get errorContentToInsertIsEmpty => - 'The file to be inserted is empty or cannot be accessed.'; + 'Файл для вставки пустой, или к нему нет доступа.'; @override String errorServerVersionUnsupportedMessage( @@ -750,20 +753,22 @@ class ZulipLocalizationsRu extends ZulipLocalizations { String get yesterday => 'Вчера'; @override - String get userActiveNow => 'Active now'; + String get userActiveNow => 'На связи'; @override - String get userIdle => 'Idle'; + String get userIdle => 'Бездействует'; @override String userActiveMinutesAgo(int minutes) { String _temp0 = intl.Intl.pluralLogic( minutes, locale: localeName, - other: '$minutes minutes', - one: '1 minute', + other: '$minutes минут', + many: '$minutes минут', + few: '$minutes минуты', + one: '$minutes минуту', ); - return 'Active $_temp0 ago'; + return 'Был/а на связи $_temp0 назад'; } @override @@ -771,33 +776,37 @@ class ZulipLocalizationsRu extends ZulipLocalizations { String _temp0 = intl.Intl.pluralLogic( hours, locale: localeName, - other: '$hours hours', - one: '1 hour', + other: '$hours часов', + many: '$hours часов', + few: '$hours часа', + one: '$hours час', ); - return 'Active $_temp0 ago'; + return 'Был/а на связи $_temp0 назад'; } @override - String get userActiveYesterday => 'Active yesterday'; + String get userActiveYesterday => 'Был/а на связи вчера'; @override String userActiveDaysAgo(int days) { String _temp0 = intl.Intl.pluralLogic( days, locale: localeName, - other: '$days days', - one: '1 day', + other: '$days дней', + many: '$days дней', + few: '$days дня', + one: '$days день', ); - return 'Active $_temp0 ago'; + return 'Был/а на связи $_temp0 назад'; } @override String userActiveDate(String date) { - return 'Active $date'; + return 'Был/а на связи $date'; } @override - String get userNotActiveInYear => 'Not active in the last year'; + String get userNotActiveInYear => 'Не выходил/а на связь за последний год'; @override String get invisibleMode => 'Режим невидимости'; @@ -917,7 +926,7 @@ class ZulipLocalizationsRu extends ZulipLocalizations { 'Вы ещё не подписаны ни на один канал.'; @override - String get sharePageTitle => 'Share'; + String get sharePageTitle => 'Поделиться'; @override String get mainMenuMyProfile => 'Мой профиль'; @@ -1109,11 +1118,11 @@ class ZulipLocalizationsRu extends ZulipLocalizations { String get errorReactionRemovingFailedTitle => 'Не удалось удалить реакцию'; @override - String get errorSharingTitle => 'Failed to share content'; + String get errorSharingTitle => 'Не удалось поделиться содержанием'; @override String get errorSharingAccountNotLoggedIn => - 'There is no account logged in. Please log in to an account and try again.'; + 'Не выполнен вход с учетной записью. Пожалуйста, войдите в систему и повторите попытку.'; @override String get emojiReactionsMore => 'ещё'; diff --git a/lib/generated/l10n/zulip_localizations_uk.dart b/lib/generated/l10n/zulip_localizations_uk.dart index d263a8a9c0..92bcdb05c8 100644 --- a/lib/generated/l10n/zulip_localizations_uk.dart +++ b/lib/generated/l10n/zulip_localizations_uk.dart @@ -32,7 +32,7 @@ class ZulipLocalizationsUk extends ZulipLocalizations { String get upgradeWelcomeDialogLinkText => 'Ознайомтесь з анонсом у блозі!'; @override - String get upgradeWelcomeDialogDismiss => 'Ходімо!'; + String get upgradeWelcomeDialogDismiss => 'Ходімо'; @override String get chooseAccountPageTitle => 'Обрати обліковий запис'; @@ -106,7 +106,7 @@ class ZulipLocalizationsUk extends ZulipLocalizations { String get actionSheetOptionListOfTopics => 'Список тем'; @override - String get actionSheetOptionChannelFeed => 'Channel feed'; + String get actionSheetOptionChannelFeed => 'Стрічка каналу'; @override String get actionSheetOptionUnsubscribe => 'Скасувати підписку'; @@ -181,29 +181,30 @@ class ZulipLocalizationsUk extends ZulipLocalizations { } @override - String get actionSheetOptionViewReadReceipts => 'View read receipts'; + String get actionSheetOptionViewReadReceipts => + 'Переглянути сповіщення про прочитання'; @override - String get actionSheetReadReceipts => 'Read receipts'; + String get actionSheetReadReceipts => 'Квитанції про прочитання'; @override String actionSheetReadReceiptsReadCount(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'This message has been read by $count people:', - one: 'This message has been read by $count person:', + other: 'Це повідомлення було прочитано $count людьми:', + one: 'Це повідомлення було прочитано $count особою:', ); return '$_temp0'; } @override String get actionSheetReadReceiptsZeroReadCount => - 'No one has read this message yet.'; + 'Ніхто ще не прочитав цього повідомлення.'; @override String get actionSheetReadReceiptsErrorReadCount => - 'Failed to load read receipts.'; + 'Не вдалося завантажити сповіщення про прочитання.'; @override String get actionSheetOptionCopyMessageText => 'Копіювати текст повідомлення'; @@ -642,11 +643,11 @@ class ZulipLocalizationsUk extends ZulipLocalizations { 'Теми обовʼязкові в цій організації.'; @override - String get errorContentNotInsertedTitle => 'Content not inserted'; + String get errorContentNotInsertedTitle => 'Вміст не вставлено'; @override String get errorContentToInsertIsEmpty => - 'The file to be inserted is empty or cannot be accessed.'; + 'Файл, який потрібно вставити, порожній або до нього немає доступу.'; @override String errorServerVersionUnsupportedMessage( @@ -749,20 +750,20 @@ class ZulipLocalizationsUk extends ZulipLocalizations { String get yesterday => 'Учора'; @override - String get userActiveNow => 'Active now'; + String get userActiveNow => 'Активний зараз'; @override - String get userIdle => 'Idle'; + String get userIdle => 'Холостий хід'; @override String userActiveMinutesAgo(int minutes) { String _temp0 = intl.Intl.pluralLogic( minutes, locale: localeName, - other: '$minutes minutes', - one: '1 minute', + other: '$minutes хвилин', + one: '1 хвилина', ); - return 'Active $_temp0 ago'; + return 'Активний $_temp0 тому'; } @override @@ -770,33 +771,33 @@ class ZulipLocalizationsUk extends ZulipLocalizations { String _temp0 = intl.Intl.pluralLogic( hours, locale: localeName, - other: '$hours hours', - one: '1 hour', + other: '$hours години', + one: '1 година', ); - return 'Active $_temp0 ago'; + return 'Активний $_temp0 тому'; } @override - String get userActiveYesterday => 'Active yesterday'; + String get userActiveYesterday => 'Активний учора'; @override String userActiveDaysAgo(int days) { String _temp0 = intl.Intl.pluralLogic( days, locale: localeName, - other: '$days days', - one: '1 day', + other: '$days дні', + one: '1 день', ); - return 'Active $_temp0 ago'; + return 'Активний $_temp0 тому'; } @override String userActiveDate(String date) { - return 'Active $date'; + return 'Активний $date'; } @override - String get userNotActiveInYear => 'Not active in the last year'; + String get userNotActiveInYear => 'Неактивний протягом останнього року'; @override String get invisibleMode => 'Невидимий режим'; @@ -915,7 +916,7 @@ class ZulipLocalizationsUk extends ZulipLocalizations { String get channelsEmptyPlaceholder => 'Ви ще не підписані на жодний канал.'; @override - String get sharePageTitle => 'Share'; + String get sharePageTitle => 'Поділитися'; @override String get mainMenuMyProfile => 'Мій профіль'; @@ -1106,11 +1107,11 @@ class ZulipLocalizationsUk extends ZulipLocalizations { String get errorReactionRemovingFailedTitle => 'Не вдалося видалити реакцію'; @override - String get errorSharingTitle => 'Failed to share content'; + String get errorSharingTitle => 'Не вдалося поділитися контентом'; @override String get errorSharingAccountNotLoggedIn => - 'There is no account logged in. Please log in to an account and try again.'; + 'Немає облікового запису, в який ви ввійшли. Будь ласка, увійдіть в обліковий запис і спробуйте ще раз..'; @override String get emojiReactionsMore => 'більше'; diff --git a/lib/generated/l10n/zulip_localizations_zh.dart b/lib/generated/l10n/zulip_localizations_zh.dart index 59fbc4b5d5..00e7ed864e 100644 --- a/lib/generated/l10n/zulip_localizations_zh.dart +++ b/lib/generated/l10n/zulip_localizations_zh.dart @@ -1136,13 +1136,13 @@ class ZulipLocalizationsZhHansCn extends ZulipLocalizationsZh { String get aboutPageTapToView => '查看更多'; @override - String get upgradeWelcomeDialogTitle => '欢迎来到新的 Zulip 应用!'; + String get upgradeWelcomeDialogTitle => '欢迎来到新的 Zulip 应用程序!'; @override - String get upgradeWelcomeDialogMessage => '您将会得到到更快,更流畅的体验。'; + String get upgradeWelcomeDialogMessage => '您将在更快、更流畅的版本中享受熟悉的体验。'; @override - String get upgradeWelcomeDialogLinkText => '来看看最新的公告吧!'; + String get upgradeWelcomeDialogLinkText => '来看看最新的公告博客吧!'; @override String get upgradeWelcomeDialogDismiss => '开始吧'; @@ -1192,18 +1192,45 @@ class ZulipLocalizationsZhHansCn extends ZulipLocalizationsZh { String get permissionsNeededOpenSettings => '打开设置'; @override - String get permissionsDeniedCameraAccess => '上传图片前,请在设置授予 Zulip 相应的权限。'; + String get permissionsDeniedCameraAccess => '上传图片前,请在设置中授予 Zulip 相应的权限。'; @override String get permissionsDeniedReadExternalStorage => - '上传文件前,请在设置授予 Zulip 相应的权限。'; + '上传文件前,请在设置中授予 Zulip 相应的权限。'; + + @override + String get actionSheetOptionSubscribe => '订阅'; + + @override + String get subscribeFailedTitle => '订阅失败'; @override String get actionSheetOptionMarkChannelAsRead => '标记频道为已读'; + @override + String get actionSheetOptionCopyChannelLink => '复制频道链接'; + @override String get actionSheetOptionListOfTopics => '话题列表'; + @override + String get actionSheetOptionUnsubscribe => '取消订阅'; + + @override + String unsubscribeConfirmationDialogTitle(String channelName) { + return '确定取消订阅$channelName么?'; + } + + @override + String get unsubscribeConfirmationDialogMessageMaybeCannotResubscribe => + '一旦退出该频道,您可能无法重新加入。'; + + @override + String get unsubscribeConfirmationDialogConfirmButton => '取消订阅'; + + @override + String get unsubscribeFailedTitle => '取消订阅失败'; + @override String get actionSheetOptionMuteTopic => '静音话题'; @@ -1228,6 +1255,56 @@ class ZulipLocalizationsZhHansCn 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 actionSheetOptionViewReadReceipts => '查看已读回执'; + + @override + String get actionSheetReadReceipts => '已读回执'; + + @override + String actionSheetReadReceiptsReadCount(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '此消息已被阅读,共有 $count 人:', + one: '此消息已被阅读,共有 $count 人:', + ); + return '$_temp0'; + } + + @override + String get actionSheetReadReceiptsZeroReadCount => '尚无人阅读此消息。'; + + @override + String get actionSheetReadReceiptsErrorReadCount => '加载已读回执失败。'; + @override String get actionSheetOptionCopyMessageText => '复制消息文本'; @@ -1235,7 +1312,7 @@ class ZulipLocalizationsZhHansCn extends ZulipLocalizationsZh { String get actionSheetOptionCopyMessageLink => '复制消息链接'; @override - String get actionSheetOptionMarkAsUnread => '从这里标为未读'; + String get actionSheetOptionMarkAsUnread => '从这里开始标为未读'; @override String get actionSheetOptionHideMutedMessage => '再次隐藏静音消息'; @@ -1258,6 +1335,9 @@ class ZulipLocalizationsZhHansCn extends ZulipLocalizationsZh { @override String get actionSheetOptionMarkTopicAsRead => '将话题标为已读'; + @override + String get actionSheetOptionCopyTopicLink => '复制话题链接'; + @override String get errorWebAuthOperationalErrorTitle => '出现了一些问题'; @@ -1304,7 +1384,13 @@ class ZulipLocalizationsZhHansCn extends ZulipLocalizationsZh { @override String errorFilesTooLargeTitle(int num) { - return '文件过大'; + String _temp0 = intl.Intl.pluralLogic( + num, + locale: localeName, + other: '文件', + one: '文件', + ); + return '$_temp0太大'; } @override @@ -1399,6 +1485,12 @@ class ZulipLocalizationsZhHansCn extends ZulipLocalizationsZh { @override String get successMessageLinkCopied => '已复制消息链接'; + @override + String get successTopicLinkCopied => '话题链接已复制'; + + @override + String get successChannelLinkCopied => '频道链接已复制'; + @override String get errorBannerDeactivatedDmLabel => '您不能向被停用的用户发送消息。'; @@ -1529,6 +1621,12 @@ class ZulipLocalizationsZhHansCn extends ZulipLocalizationsZh { return '与$others的私信'; } + @override + String get emptyMessageList => '这里没有消息。'; + + @override + String get emptyMessageListSearch => '没有搜索结果。'; + @override String get messageListGroupYouWithYourself => '与自己的私信'; @@ -1621,6 +1719,12 @@ class ZulipLocalizationsZhHansCn extends ZulipLocalizationsZh { @override String get topicValidationErrorMandatoryButEmpty => '话题在该组织为必填项。'; + @override + String get errorContentNotInsertedTitle => '未插入内容'; + + @override + String get errorContentToInsertIsEmpty => '要插入的文件为空或无法访问。'; + @override String errorServerVersionUnsupportedMessage( String url, @@ -1716,6 +1820,65 @@ class ZulipLocalizationsZhHansCn extends ZulipLocalizationsZh { @override String get yesterday => '昨天'; + @override + String get userActiveNow => '当前活跃'; + + @override + String get userIdle => '空闲'; + + @override + String userActiveMinutesAgo(int minutes) { + String _temp0 = intl.Intl.pluralLogic( + minutes, + locale: localeName, + other: '$minutes 分钟前', + one: '1 分钟前', + ); + return '上次活跃于 $_temp0'; + } + + @override + String userActiveHoursAgo(int hours) { + String _temp0 = intl.Intl.pluralLogic( + hours, + locale: localeName, + other: '$hours 小时前', + one: '1 小时前', + ); + return '上次活跃于 $_temp0'; + } + + @override + String get userActiveYesterday => '昨天活跃'; + + @override + String userActiveDaysAgo(int days) { + String _temp0 = intl.Intl.pluralLogic( + days, + locale: localeName, + other: '$days 天前', + one: '1 天前', + ); + return '上次活跃于 $_temp0'; + } + + @override + String userActiveDate(String date) { + return '上次活跃于 $date'; + } + + @override + String get userNotActiveInYear => '去年未活跃'; + + @override + String get invisibleMode => '隐身模式'; + + @override + String get turnOnInvisibleModeErrorTitle => '启用隐身模式时发生错误。请再尝试一次。'; + + @override + String get turnOffInvisibleModeErrorTitle => '关闭隐身模式时发生错误。请再尝试一次。'; + @override String get userRoleOwner => '所有者'; @@ -1734,6 +1897,60 @@ class ZulipLocalizationsZhHansCn 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 => '搜索'; + + @override + String get searchMessagesHintText => '搜索'; + + @override + String get searchMessagesClearButtonTooltip => '清除'; + @override String get inboxPageTitle => '收件箱'; @@ -1764,6 +1981,9 @@ class ZulipLocalizationsZhHansCn extends ZulipLocalizationsZh { @override String get channelsEmptyPlaceholder => '您还没有订阅任何频道。'; + @override + String get sharePageTitle => '分享'; + @override String get mainMenuMyProfile => '个人资料'; @@ -1795,6 +2015,25 @@ class ZulipLocalizationsZhHansCn 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正在输入…'; @@ -1853,13 +2092,13 @@ class ZulipLocalizationsZhHansCn extends ZulipLocalizationsZh { String get themeSettingTitle => '主题'; @override - String get themeSettingDark => '暗色'; + String get themeSettingDark => '暗色模式'; @override - String get themeSettingLight => '浅色'; + String get themeSettingLight => '浅色模式'; @override - String get themeSettingSystem => '系统'; + String get themeSettingSystem => '跟随系统'; @override String get openLinksWithInAppBrowser => '使用内置浏览器打开链接'; @@ -1924,6 +2163,12 @@ class ZulipLocalizationsZhHansCn extends ZulipLocalizationsZh { @override String get errorReactionRemovingFailedTitle => '未能移除表情符号'; + @override + String get errorSharingTitle => '分享内容失败'; + + @override + String get errorSharingAccountNotLoggedIn => '尚未登录任何账号。请登录账号后再次尝试。'; + @override String get emojiReactionsMore => '更多'; @@ -1934,7 +2179,7 @@ class ZulipLocalizationsZhHansCn extends ZulipLocalizationsZh { String get noEarlierMessages => '没有更早的消息了'; @override - String get revealButtonLabel => '显示静音用户发送的消息'; + String get revealButtonLabel => '显示消息'; @override String get mutedUser => '静音用户'; @@ -2113,6 +2358,29 @@ class ZulipLocalizationsZhHantTw extends ZulipLocalizationsZh { return '$emojiName 的投票數($num)'; } + @override + String get actionSheetOptionViewReadReceipts => '查看已讀回條'; + + @override + String get actionSheetReadReceipts => '已讀回條'; + + @override + String actionSheetReadReceiptsReadCount(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '此訊息已被閱讀,共有 $count 人:', + one: '此訊息已被閱讀,共有 $count 人:', + ); + return '$_temp0'; + } + + @override + String get actionSheetReadReceiptsZeroReadCount => '尚無人閱讀此訊息。'; + + @override + String get actionSheetReadReceiptsErrorReadCount => '載入已讀回條失敗。'; + @override String get actionSheetOptionCopyMessageText => '複製訊息文字'; @@ -2528,6 +2796,12 @@ class ZulipLocalizationsZhHantTw extends ZulipLocalizationsZh { @override String get topicValidationErrorMandatoryButEmpty => '此組織要求必須填寫議題。'; + @override + String get errorContentNotInsertedTitle => '未插入內容'; + + @override + String get errorContentToInsertIsEmpty => '要插入的檔案為空或無法存取。'; + @override String errorServerVersionUnsupportedMessage( String url, @@ -2625,6 +2899,56 @@ class ZulipLocalizationsZhHantTw extends ZulipLocalizationsZh { @override String get yesterday => '昨天'; + @override + String get userActiveNow => '目前活躍'; + + @override + String get userIdle => '閒置'; + + @override + String userActiveMinutesAgo(int minutes) { + String _temp0 = intl.Intl.pluralLogic( + minutes, + locale: localeName, + other: '$minutes 分鐘前', + one: '1 分鐘前', + ); + return '上次活躍於 $_temp0'; + } + + @override + String userActiveHoursAgo(int hours) { + String _temp0 = intl.Intl.pluralLogic( + hours, + locale: localeName, + other: '$hours 小時前', + one: '1 小時前', + ); + return '上次活躍於 $_temp0'; + } + + @override + String get userActiveYesterday => '昨天活躍'; + + @override + String userActiveDaysAgo(int days) { + String _temp0 = intl.Intl.pluralLogic( + days, + locale: localeName, + other: '$days 天前', + one: '1 天前', + ); + return '上次活躍於 $_temp0'; + } + + @override + String userActiveDate(String date) { + return '上次活躍於 $date'; + } + + @override + String get userNotActiveInYear => '去年未活躍'; + @override String get invisibleMode => '隱身模式'; @@ -2736,6 +3060,9 @@ class ZulipLocalizationsZhHantTw extends ZulipLocalizationsZh { @override String get channelsEmptyPlaceholder => '您尚未訂閱任何頻道。'; + @override + String get sharePageTitle => '分享'; + @override String get mainMenuMyProfile => '我的設定檔'; @@ -2916,6 +3243,12 @@ class ZulipLocalizationsZhHantTw extends ZulipLocalizationsZh { @override String get errorReactionRemovingFailedTitle => '移除表情反應失敗'; + @override + String get errorSharingTitle => '分享內容失敗'; + + @override + String get errorSharingAccountNotLoggedIn => '尚未登入任何帳號。請登入帳號後再試一次。'; + @override String get emojiReactionsMore => '更多';