|
27 | 27 | "@profileButtonSendDirectMessage": {
|
28 | 28 | "description": "Label for button in profile screen to navigate to DMs with the shown user."
|
29 | 29 | },
|
30 |
| - "cameraAccessDeniedTitle": "Permissions needed", |
31 |
| - "@cameraAccessDeniedTitle": { |
32 |
| - "description": "Title for dialog when the user needs to grant permissions for camera access." |
| 30 | + "permissionsNeededTitle": "Permissions needed", |
| 31 | + "@permissionsNeededTitle": { |
| 32 | + "description": "Title for dialog when the user needs to grant additional permissions." |
33 | 33 | },
|
34 |
| - "cameraAccessDeniedMessage": "To upload an image, please grant Zulip additional permissions in Settings.", |
35 |
| - "@cameraAccessDeniedMessage": { |
36 |
| - "description": "Message for dialog when the user needs to grant permissions for camera access." |
| 34 | + "permissionsNeededOpenSettings": "Open settings", |
| 35 | + "@permissionsNeededOpenSettings": { |
| 36 | + "description": "Button label for permissions dialog button that opens the system settings screen." |
37 | 37 | },
|
38 |
| - "cameraAccessDeniedButtonText": "Open settings", |
39 |
| - "@cameraAccessDeniedButtonText": { |
| 38 | + "permissionsDeniedCameraAccess": "To upload an image, please grant Zulip additional permissions in Settings.", |
| 39 | + "@permissionsDeniedCameraAccess": { |
40 | 40 | "description": "Message for dialog when the user needs to grant permissions for camera access."
|
41 | 41 | },
|
| 42 | + "permissionsDeniedReadExternalStorage": "To upload files, please grant Zulip additional permissions in Settings.", |
| 43 | + "@permissionsDeniedReadExternalStorage": { |
| 44 | + "description": "Message for dialog when the user needs to grant permissions for external storage read access." |
| 45 | + }, |
42 | 46 | "actionSheetOptionCopy": "Copy message text",
|
43 | 47 | "@actionSheetOptionCopy": {
|
44 | 48 | "description": "Label for copy message text button on action sheet."
|
|
59 | 63 | "@errorCopyingFailed": {
|
60 | 64 | "description": "Error message when copying the text of a message to the users system clipboard failed."
|
61 | 65 | },
|
| 66 | + "errorFailedToUploadFileTitle": "Failed to upload file: {filename}", |
| 67 | + "@errorFailedToUploadFileTitle": { |
| 68 | + "description": "Error title when the specified file failed to upload.", |
| 69 | + "placeholders": { |
| 70 | + "filename": {"type": "String", "example": "file.txt"} |
| 71 | + } |
| 72 | + }, |
| 73 | + "errorFilesTooLarge": "{num, plural, =1{File is} other{{num} files are}} larger than the server's limit of {maxFileUploadSizeMib} MiB and will not be uploaded:\n\n{listMessage}", |
| 74 | + "@errorFilesTooLarge": { |
| 75 | + "description": "Error message when attached files are too large in size.", |
| 76 | + "placeholders": { |
| 77 | + "num": {"type": "int", "example": "2"}, |
| 78 | + "maxFileUploadSizeMib": {"type": "int", "example": "15"}, |
| 79 | + "listMessage": {"type": "String", "example": "foo.txt\nbar.txt"} |
| 80 | + } |
| 81 | + }, |
| 82 | + "errorFilesTooLargeTitle": "{num, plural, =1{File} other{Files}} too large", |
| 83 | + "@errorFilesTooLargeTitle": { |
| 84 | + "description": "Error title when attached files are too large in size.", |
| 85 | + "placeholders": { |
| 86 | + "num": {"type": "int", "example": "4"} |
| 87 | + } |
| 88 | + }, |
| 89 | + "errorLoginInvalidInputTitle": "Invalid input", |
| 90 | + "@errorLoginInvalidInputTitle": { |
| 91 | + "description": "Error title for login when input is invalid." |
| 92 | + }, |
| 93 | + "errorLoginFailed": "Login failed", |
| 94 | + "@errorLoginFailed": { |
| 95 | + "description": "Error title for login when signing into a Zulip server fails." |
| 96 | + }, |
| 97 | + "errorMessageNotSent": "Message not sent", |
| 98 | + "@errorMessageNotSent": { |
| 99 | + "description": "Error message for compose box when a message could not be sent." |
| 100 | + }, |
| 101 | + "errorServerErrorMessage": "The server said:\n\n{message}", |
| 102 | + "@errorServerErrorMessage": { |
| 103 | + "description": "Error message that quotes an error from the server.", |
| 104 | + "placeholders": { |
| 105 | + "message": {"type": "String", "example": "Invalid format"} |
| 106 | + } |
| 107 | + }, |
| 108 | + "errorLoginCouldNotConnect": "Failed to connect to server:\n{url}", |
| 109 | + "@errorLoginCouldNotConnect": { |
| 110 | + "description": "Error message when the app could not connect to the server.", |
| 111 | + "placeholders": { |
| 112 | + "url": {"type": "String", "example": "http://example.com/"} |
| 113 | + } |
| 114 | + }, |
| 115 | + "errorLoginCouldNotConnectTitle": "Could not connect", |
| 116 | + "@errorLoginCouldNotConnectTitle": { |
| 117 | + "description": "Error title when the app could not connect to the server." |
| 118 | + }, |
62 | 119 | "errorMessageDoesNotSeemToExist": "That message does not seem to exist.",
|
63 | 120 | "@errorMessageDoesNotSeemToExist": {
|
64 | 121 | "description": "Error message when loading a message that does not exist."
|
|
67 | 124 | "@errorQuotationFailed": {
|
68 | 125 | "description": "Error message when quoting a message failed."
|
69 | 126 | },
|
| 127 | + "errorServerMessage": "The server said:\n\n{message}", |
| 128 | + "@errorServerMessage": { |
| 129 | + "description": "Error message that quotes an error from the server.", |
| 130 | + "placeholders": { |
| 131 | + "message": {"type": "String", "example": "Invalid format"} |
| 132 | + } |
| 133 | + }, |
70 | 134 | "successLinkCopied": "Link copied",
|
71 | 135 | "@successLinkCopied": {
|
72 | 136 | "description": "Success message after copy link action completed."
|
|
75 | 139 | "@successMessageCopied": {
|
76 | 140 | "description": "Message when content of a message was copied to the users system clipboard."
|
77 | 141 | },
|
| 142 | + "composeBoxAttachFilesTooltip": "Attach files", |
| 143 | + "@composeBoxAttachFilesTooltip": { |
| 144 | + "description": "Tooltip for compose box icon to attach a file to the message." |
| 145 | + }, |
| 146 | + "composeBoxAttachMediaTooltip": "Attach images or videos", |
| 147 | + "@composeBoxAttachMediaTooltip": { |
| 148 | + "description": "Tooltip for compose box icon to attach media to the message." |
| 149 | + }, |
| 150 | + "composeBoxAttachFromCameraTooltip": "Take a photo", |
| 151 | + "@composeBoxAttachFromCameraTooltip": { |
| 152 | + "description": "Tooltip for compose box icon to attach an image from the camera to the message." |
| 153 | + }, |
| 154 | + "composeBoxGenericContentHint": "Type a message", |
| 155 | + "@composeBoxGenericContentHint": { |
| 156 | + "description": "Hint text for content input when sending a message." |
| 157 | + }, |
| 158 | + "composeBoxDmContentHint": "Message @{user}", |
| 159 | + "@composeBoxDmContentHint": { |
| 160 | + "description": "Hint text for content input when sending a message to one other person.", |
| 161 | + "placeholders": { |
| 162 | + "user": {"type": "String", "example": "stream name"} |
| 163 | + } |
| 164 | + }, |
| 165 | + "composeBoxGroupDmContentHint": "Message group", |
| 166 | + "@composeBoxGroupDmContentHint": { |
| 167 | + "description": "Hint text for content input when sending a message to a group." |
| 168 | + }, |
| 169 | + "composeBoxSelfDmContentHint": "Jot down something", |
| 170 | + "@composeBoxSelfDmContentHint": { |
| 171 | + "description": "Hint text for content input when sending a message to yourself." |
| 172 | + }, |
| 173 | + "composeBoxStreamContentHint": "Message #{stream} > {topic}", |
| 174 | + "@composeBoxStreamContentHint": { |
| 175 | + "description": "Hint text for content input when sending a message to a stream", |
| 176 | + "placeholders": { |
| 177 | + "stream": {"type": "String", "example": "stream name"}, |
| 178 | + "topic": {"type": "String", "example": "topic name"} |
| 179 | + } |
| 180 | + }, |
| 181 | + "composeBoxSendTooltip": "Send", |
| 182 | + "@composeBoxSendTooltip": { |
| 183 | + "description": "Tooltip for send button in compose box." |
| 184 | + }, |
| 185 | + "composeBoxUnknownStreamName": "(unknown stream)", |
| 186 | + "@composeBoxUnknownStreamName": { |
| 187 | + "description": "Replacement name for stream when it cannot be found in the store." |
| 188 | + }, |
| 189 | + "composeBoxTopicHintText": "Topic", |
| 190 | + "@composeBoxTopicHintText": { |
| 191 | + "description": "Hint text for topic input widget in compose box." |
| 192 | + }, |
| 193 | + "composeBoxUploadingFilename": "Uploading {filename}...", |
| 194 | + "@composeBoxUploadingFilename": { |
| 195 | + "description": "Label in compose box showing the specified file is currently uploading.", |
| 196 | + "placeholders": { |
| 197 | + "filename": {"type": "String", "example": "file.txt"} |
| 198 | + } |
| 199 | + }, |
| 200 | + "contentValidationErrorTooLong": "Message length shouldn't be greater than 10000 characters.", |
| 201 | + "@contentValidationErrorTooLong": { |
| 202 | + "description": "Content validation error message when the message is too long." |
| 203 | + }, |
| 204 | + "contentValidationErrorEmpty": "You have nothing to send!", |
| 205 | + "@contentValidationErrorEmpty": { |
| 206 | + "description": "Content validation error message when the message is empty." |
| 207 | + }, |
| 208 | + "contentValidationErrorQuoteAndReplyInProgress": "Please wait for the quotation to complete.", |
| 209 | + "@contentValidationErrorQuoteAndReplyInProgress": { |
| 210 | + "description": "Content validation error message when a quotation has not completed yet." |
| 211 | + }, |
| 212 | + "contentValidationErrorUploadInProgress": "Please wait for the upload to complete.", |
| 213 | + "@contentValidationErrorUploadInProgress": { |
| 214 | + "description": "Content validation error message when attachments have not finished uploading." |
| 215 | + }, |
78 | 216 | "dialogCancel": "Cancel",
|
79 | 217 | "@dialogCancel": {
|
80 | 218 | "description": "Button label in dialogs to cancel."
|
|
87 | 225 | "@errorDialogContinue": {
|
88 | 226 | "description": "Button label in error dialogs to acknowledge error."
|
89 | 227 | },
|
| 228 | + "errorDialogTitle": "Error", |
| 229 | + "@errorDialogTitle": { |
| 230 | + "description": "Generic title for error dialog." |
| 231 | + }, |
90 | 232 | "lightboxCopyLinkTooltip": "Copy link",
|
91 | 233 | "@lightboxCopyLinkTooltip": {
|
92 | 234 | "description": "Tooltip in lightbox for the copy link action."
|
93 | 235 | },
|
| 236 | + "loginPageTitle": "Log in", |
| 237 | + "@loginPageTitle": { |
| 238 | + "description": "Page title for login page." |
| 239 | + }, |
| 240 | + "loginFormSubmitLabel": "Log in", |
| 241 | + "@loginFormSubmitLabel": { |
| 242 | + "description": "Button text to submit login credentials." |
| 243 | + }, |
| 244 | + "loginAddAnAccount": "Add an account", |
| 245 | + "@loginAddAnAccount": { |
| 246 | + "description": "Page title for screen to add a Zulip account." |
| 247 | + }, |
| 248 | + "loginServerUrlInputLabel": "Your Zulip server URL", |
| 249 | + "@loginServerUrlInputLabel": { |
| 250 | + "description": "Input label in login page for Zulip server URL entry." |
| 251 | + }, |
| 252 | + "loginHidePassword": "Hide password", |
| 253 | + "@loginHidePassword": { |
| 254 | + "description": "Icon label for button to hide password in input form." |
| 255 | + }, |
| 256 | + "loginEmailLabel": "Email address", |
| 257 | + "@loginEmailLabel": { |
| 258 | + "description": "Label for input when an email is required to login." |
| 259 | + }, |
| 260 | + "loginErrorMissingEmail": "Please enter your email.", |
| 261 | + "@loginErrorMissingEmail": { |
| 262 | + "description": "Error message when an empty email was provided." |
| 263 | + }, |
| 264 | + "loginPasswordLabel": "Password", |
| 265 | + "@loginPasswordLabel": { |
| 266 | + "description": "Label for input for password field." |
| 267 | + }, |
| 268 | + "loginErrorMissingPassword": "Please enter your password.", |
| 269 | + "@loginErrorMissingPassword": { |
| 270 | + "description": "Error message when an empty password was provided." |
| 271 | + }, |
| 272 | + "loginUsernameLabel": "Username", |
| 273 | + "@loginUsernameLabel": { |
| 274 | + "description": "Label for input when a username is required to login." |
| 275 | + }, |
| 276 | + "loginErrorMissingUsername": "Please enter your username.", |
| 277 | + "@loginErrorMissingUsername": { |
| 278 | + "description": "Error message when an empty username was provided." |
| 279 | + }, |
| 280 | + "topicValidationErrorTooLong": "Topic length shouldn't be greater than 60 characters.", |
| 281 | + "@topicValidationErrorTooLong": { |
| 282 | + "description": "Topic validation error when topic is too long." |
| 283 | + }, |
| 284 | + "topicValidationErrorMandatoryButEmpty": "Topics are required in this organization.", |
| 285 | + "@topicValidationErrorMandatoryButEmpty": { |
| 286 | + "description": "Topic validation error when topic is required but was empty." |
| 287 | + }, |
94 | 288 | "subscribedToNStreams": "Subscribed to {num, plural, =0{no streams} =1{1 stream} other{{num} streams}}",
|
95 | 289 | "@subscribedToNStreams": {
|
96 | 290 | "description": "Test page label showing number of streams user is subscribed to.",
|
|
116 | 310 | "httpStatus": {"type": "int", "example": "500"}
|
117 | 311 | }
|
118 | 312 | },
|
| 313 | + "serverUrlValidationErrorEmpty": "Please enter a URL.", |
| 314 | + "@serverUrlValidationErrorEmpty": { |
| 315 | + "description": "Error message when URL is empty" |
| 316 | + }, |
| 317 | + "serverUrlValidationErrorInvalidUrl": "Please enter a valid URL.", |
| 318 | + "@serverUrlValidationErrorInvalidUrl": { |
| 319 | + "description": "Error message when URL is not in a valid format." |
| 320 | + }, |
| 321 | + "serverUrlValidationErrorNoUseEmail": "Please enter the server URL, not your email.", |
| 322 | + "@serverUrlValidationErrorNoUseEmail": { |
| 323 | + "description": "Error message when URL looks like an email" |
| 324 | + }, |
| 325 | + "serverUrlValidationErrorUnsupportedScheme": "The server URL must start with http:// or https://.", |
| 326 | + "@serverUrlValidationErrorUnsupportedScheme": { |
| 327 | + "description": "Error message when URL has an unsupported scheme." |
| 328 | + }, |
119 | 329 | "userRoleOwner": "Owner",
|
120 | 330 | "@userRoleOwner": {
|
121 | 331 | "description": "Label for UserRole.owner"
|
|
0 commit comments