diff --git a/lang/flectar-mail.pot b/lang/flectar-mail.pot index 5ccf9c95..bbe1502b 100644 --- a/lang/flectar-mail.pot +++ b/lang/flectar-mail.pot @@ -21,2138 +21,2154 @@ msgid "Graphite" msgstr "" #: ui/app-icon.slint:21 ui/components/theme-editor.slint:612 -#: ui/app-icon.slint:21 ui/components/theme-editor.slint:612 ui/dialogs/settings-dialog.slint:1147 +#: ui/app-icon.slint:21 ui/components/theme-editor.slint:612 ui/dialogs/settings-dialog.slint:1148 msgid "Light" msgstr "" -#: ui/app-icon.slint:22 ui/views/mail-reading-pane.slint:2077 +#: ui/app-icon.slint:22 ui/views/mail-reading-pane.slint:2082 msgid "Blue" msgstr "" #: ui/app-icon.slint:23 ui/components/theme-editor.slint:623 -#: ui/app-icon.slint:23 ui/components/theme-editor.slint:623 ui/views/mail-reading-pane.slint:2082 +#: ui/app-icon.slint:23 ui/components/theme-editor.slint:623 ui/views/mail-reading-pane.slint:2087 msgid "Green" msgstr "" #: ui/app-icon.slint:24 ui/components/theme-editor.slint:624 -#: ui/app-icon.slint:24 ui/components/theme-editor.slint:624 ui/views/mail-reading-pane.slint:2078 +#: ui/app-icon.slint:24 ui/components/theme-editor.slint:624 ui/views/mail-reading-pane.slint:2083 msgid "Purple" msgstr "" -#: ui/app.slint:127 -msgctxt "abbreviated month in a date" -msgid "Jan" -msgstr "" - -#: ui/app.slint:128 -msgctxt "abbreviated month in a date" -msgid "Feb" -msgstr "" - -#: ui/app.slint:129 -msgctxt "abbreviated month in a date" -msgid "Mar" -msgstr "" - #: ui/app.slint:130 msgctxt "abbreviated month in a date" -msgid "Apr" +msgid "Jan" msgstr "" #: ui/app.slint:131 msgctxt "abbreviated month in a date" -msgid "May" +msgid "Feb" msgstr "" #: ui/app.slint:132 msgctxt "abbreviated month in a date" -msgid "Jun" +msgid "Mar" msgstr "" #: ui/app.slint:133 msgctxt "abbreviated month in a date" -msgid "Jul" +msgid "Apr" msgstr "" #: ui/app.slint:134 msgctxt "abbreviated month in a date" -msgid "Aug" +msgid "May" msgstr "" #: ui/app.slint:135 msgctxt "abbreviated month in a date" -msgid "Sep" +msgid "Jun" msgstr "" #: ui/app.slint:136 msgctxt "abbreviated month in a date" -msgid "Oct" +msgid "Jul" msgstr "" #: ui/app.slint:137 msgctxt "abbreviated month in a date" -msgid "Nov" +msgid "Aug" msgstr "" #: ui/app.slint:138 msgctxt "abbreviated month in a date" -msgid "Dec" +msgid "Sep" +msgstr "" + +#: ui/app.slint:139 +msgctxt "abbreviated month in a date" +msgid "Oct" +msgstr "" + +#: ui/app.slint:140 +msgctxt "abbreviated month in a date" +msgid "Nov" msgstr "" #: ui/app.slint:141 -msgctxt "month in a date" -msgid "January" -msgstr "" - -#: ui/app.slint:142 -msgctxt "month in a date" -msgid "February" -msgstr "" - -#: ui/app.slint:143 -msgctxt "month in a date" -msgid "March" +msgctxt "abbreviated month in a date" +msgid "Dec" msgstr "" #: ui/app.slint:144 msgctxt "month in a date" -msgid "April" +msgid "January" msgstr "" #: ui/app.slint:145 msgctxt "month in a date" -msgid "May" +msgid "February" msgstr "" #: ui/app.slint:146 msgctxt "month in a date" -msgid "June" +msgid "March" msgstr "" #: ui/app.slint:147 msgctxt "month in a date" -msgid "July" +msgid "April" msgstr "" #: ui/app.slint:148 msgctxt "month in a date" -msgid "August" +msgid "May" msgstr "" #: ui/app.slint:149 msgctxt "month in a date" -msgid "September" +msgid "June" msgstr "" #: ui/app.slint:150 msgctxt "month in a date" -msgid "October" +msgid "July" msgstr "" #: ui/app.slint:151 msgctxt "month in a date" -msgid "November" +msgid "August" msgstr "" #: ui/app.slint:152 msgctxt "month in a date" -msgid "December" +msgid "September" +msgstr "" + +#: ui/app.slint:153 +msgctxt "month in a date" +msgid "October" msgstr "" #: ui/app.slint:154 -msgctxt "month on its own" -msgid "January" +msgctxt "month in a date" +msgid "November" msgstr "" #: ui/app.slint:155 -msgctxt "month on its own" -msgid "February" -msgstr "" - -#: ui/app.slint:156 -msgctxt "month on its own" -msgid "March" +msgctxt "month in a date" +msgid "December" msgstr "" #: ui/app.slint:157 msgctxt "month on its own" -msgid "April" +msgid "January" msgstr "" #: ui/app.slint:158 msgctxt "month on its own" -msgid "May" +msgid "February" msgstr "" #: ui/app.slint:159 msgctxt "month on its own" -msgid "June" +msgid "March" msgstr "" #: ui/app.slint:160 msgctxt "month on its own" -msgid "July" +msgid "April" msgstr "" #: ui/app.slint:161 msgctxt "month on its own" -msgid "August" +msgid "May" msgstr "" #: ui/app.slint:162 msgctxt "month on its own" -msgid "September" +msgid "June" msgstr "" #: ui/app.slint:163 msgctxt "month on its own" -msgid "October" +msgid "July" msgstr "" #: ui/app.slint:164 msgctxt "month on its own" -msgid "November" +msgid "August" msgstr "" #: ui/app.slint:165 msgctxt "month on its own" +msgid "September" +msgstr "" + +#: ui/app.slint:166 +msgctxt "month on its own" +msgid "October" +msgstr "" + +#: ui/app.slint:167 +msgctxt "month on its own" +msgid "November" +msgstr "" + +#: ui/app.slint:168 +msgctxt "month on its own" msgid "December" msgstr "" -#: ui/app.slint:170 ui/components/calendar.slint:691 +#: ui/app.slint:173 ui/components/calendar.slint:691 msgid "Mon" msgstr "" -#: ui/app.slint:170 +#: ui/app.slint:173 msgid "Monday" msgstr "" -#: ui/app.slint:171 ui/components/calendar.slint:691 +#: ui/app.slint:174 ui/components/calendar.slint:691 msgid "Tue" msgstr "" -#: ui/app.slint:171 +#: ui/app.slint:174 msgid "Tuesday" msgstr "" -#: ui/app.slint:172 ui/components/calendar.slint:691 +#: ui/app.slint:175 ui/components/calendar.slint:691 msgid "Wed" msgstr "" -#: ui/app.slint:172 +#: ui/app.slint:175 msgid "Wednesday" msgstr "" -#: ui/app.slint:173 ui/components/calendar.slint:691 +#: ui/app.slint:176 ui/components/calendar.slint:691 msgid "Thu" msgstr "" -#: ui/app.slint:173 +#: ui/app.slint:176 msgid "Thursday" msgstr "" -#: ui/app.slint:174 ui/components/calendar.slint:691 +#: ui/app.slint:177 ui/components/calendar.slint:691 msgid "Fri" msgstr "" -#: ui/app.slint:174 +#: ui/app.slint:177 msgid "Friday" msgstr "" -#: ui/app.slint:175 ui/components/calendar.slint:691 +#: ui/app.slint:178 ui/components/calendar.slint:691 msgid "Sat" msgstr "" -#: ui/app.slint:175 +#: ui/app.slint:178 msgid "Saturday" msgstr "" -#: ui/app.slint:176 ui/components/calendar.slint:691 +#: ui/app.slint:179 ui/components/calendar.slint:691 msgid "Sun" msgstr "" -#: ui/app.slint:176 +#: ui/app.slint:179 msgid "Sunday" msgstr "" -#: ui/app.slint:180 +#: ui/app.slint:183 msgctxt "time of day" msgid "PM" msgstr "" -#: ui/app.slint:180 +#: ui/app.slint:183 msgctxt "time of day" msgid "AM" msgstr "" -#: ui/app.slint:183 ui/views/mail-list-pane.slint:679 +#: ui/app.slint:186 ui/views/mail-list-pane.slint:679 msgid "Yesterday" msgstr "" -#: ui/app.slint:186 +#: ui/app.slint:189 msgctxt "date pattern (CLDR): day and month of recent mail in lists" msgid "MMM d" msgstr "" -#: ui/app.slint:187 +#: ui/app.slint:190 msgctxt "date pattern (CLDR): date of older mail in lists, keep it short" msgid "MMM d, y" msgstr "" -#: ui/app.slint:188 +#: ui/app.slint:191 msgctxt "date pattern (CLDR): a date on its own" msgid "MMM d, y" msgstr "" -#: ui/app.slint:189 +#: ui/app.slint:192 msgctxt "date pattern (CLDR): a date with its weekday" msgid "EEE, MMM d, y" msgstr "" -#: ui/app.slint:190 +#: ui/app.slint:193 msgctxt "date pattern (CLDR): day heading in the agenda" msgid "EEEE, MMMM d" msgstr "" -#: ui/app.slint:191 +#: ui/app.slint:194 msgctxt "date pattern (CLDR): month heading, LLLL is the month name on its own" msgid "LLLL y" msgstr "" -#: ui/app.slint:192 +#: ui/app.slint:195 msgctxt "date pattern (CLDR): first date of a range within one month" msgid "MMMM d" msgstr "" -#: ui/app.slint:193 +#: ui/app.slint:196 msgctxt "date pattern (CLDR): last date of a range within one month" msgid "d, y" msgstr "" -#: ui/app.slint:194 +#: ui/app.slint:197 msgctxt "date pattern (CLDR): first date of a range within one year" msgid "MMM d" msgstr "" -#: ui/app.slint:195 +#: ui/app.slint:198 msgctxt "date pattern (CLDR): last date of a range within one year" msgid "MMM d, y" msgstr "" -#: ui/app.slint:196 +#: ui/app.slint:199 msgctxt "time pattern (CLDR): 24-hour clock" msgid "HH:mm" msgstr "" -#: ui/app.slint:197 +#: ui/app.slint:200 msgctxt "time pattern (CLDR): 12-hour clock, a is AM or PM" msgid "h:mm a" msgstr "" -#: ui/app.slint:198 +#: ui/app.slint:201 msgctxt "time pattern (CLDR): whole hour on a 12-hour clock" msgid "h a" msgstr "" -#: ui/app.slint:201 +#: ui/app.slint:204 msgctxt "date range" msgid "{0} – {1}" msgstr "" -#: ui/app.slint:202 +#: ui/app.slint:205 msgctxt "date and time" msgid "{0} at {1}" msgstr "" -#: ui/app.slint:204 +#: ui/app.slint:207 msgid "All day" msgstr "" -#: ui/app.slint:205 +#: ui/app.slint:208 msgid "(untitled event)" msgstr "" -#: ui/app.slint:206 +#: ui/app.slint:209 msgid "No conversation history" msgstr "" -#: ui/app.slint:207 +#: ui/app.slint:210 msgid "Conversation history available" msgstr "" -#: ui/app.slint:208 +#: ui/app.slint:211 msgid "New address-book entry" msgstr "" -#: ui/app.slint:209 ui/app.slint:1198 ui/components/composer-fields.slint:89 -#: ui/app.slint:209 ui/app.slint:1198 ui/components/composer-fields.slint:89 ui/components/email-composer.slint:35 +#: ui/app.slint:212 ui/app.slint:1205 ui/components/composer-fields.slint:89 +#: ui/app.slint:212 ui/app.slint:1205 ui/components/composer-fields.slint:89 ui/components/email-composer.slint:35 msgid "No connected account" msgstr "" -#: ui/app.slint:211 +#: ui/app.slint:214 msgid "{n} interaction" msgid_plural "{n} interactions" msgstr[0] "" msgstr[1] "" -#: ui/app.slint:213 ui/components/composer-fields.slint:18 +#: ui/app.slint:216 ui/components/composer-fields.slint:18 msgid "New message" msgstr "" -#: ui/app.slint:214 ui/views/mail-list-pane.slint:978 -#: ui/app.slint:214 ui/views/mail-list-pane.slint:978 ui/views/mail-reading-pane.slint:689 +#: ui/app.slint:217 ui/views/mail-list-pane.slint:978 +#: ui/app.slint:217 ui/views/mail-list-pane.slint:978 ui/views/mail-reading-pane.slint:692 msgid "(No subject)" msgstr "" -#: ui/app.slint:216 +#: ui/app.slint:219 msgid "{n} new message" msgid_plural "{n} new messages" msgstr[0] "" msgstr[1] "" -#: ui/app.slint:219 +#: ui/app.slint:222 msgctxt "the first senders of new mail, then how many others" msgid "{0} and {n} more" msgid_plural "{0} and {n} more" msgstr[0] "" msgstr[1] "" -#: ui/app.slint:222 +#: ui/app.slint:225 msgid "Open" msgstr "" -#: ui/app.slint:223 ui/views/mail-list-pane.slint:848 -#: ui/app.slint:223 ui/views/mail-list-pane.slint:848 ui/views/mail-reading-pane.slint:352 -#: ui/app.slint:223 ui/views/mail-list-pane.slint:848 ui/views/mail-reading-pane.slint:352 ui/views/mail-reading-pane.slint:396 -#: ui/app.slint:223 ui/views/mail-list-pane.slint:848 ui/views/mail-reading-pane.slint:352 ui/views/mail-reading-pane.slint:396 ui/views/mail-reading-pane.slint:828 +#: ui/app.slint:226 ui/views/mail-list-pane.slint:848 +#: ui/app.slint:226 ui/views/mail-list-pane.slint:848 ui/views/mail-reading-pane.slint:353 +#: ui/app.slint:226 ui/views/mail-list-pane.slint:848 ui/views/mail-reading-pane.slint:353 ui/views/mail-reading-pane.slint:399 +#: ui/app.slint:226 ui/views/mail-list-pane.slint:848 ui/views/mail-reading-pane.slint:353 ui/views/mail-reading-pane.slint:399 ui/views/mail-reading-pane.slint:831 msgid "Mark as read" msgstr "" -#: ui/app.slint:225 +#: ui/app.slint:228 msgid "{n} unread message" msgid_plural "{n} unread messages" msgstr[0] "" msgstr[1] "" #. Local mail has no archive or spam. -#: ui/app.slint:227 ui/dialogs/move-dialog.slint:45 -#: ui/app.slint:227 ui/dialogs/move-dialog.slint:45 -#: ui/app.slint:227 ui/dialogs/move-dialog.slint:45 ui/views/mail-list-pane.slint:1438 -#: ui/app.slint:227 ui/dialogs/move-dialog.slint:45 ui/views/mail-list-pane.slint:1438 ui/views/mail-reading-pane.slint:374 +#: ui/app.slint:230 ui/dialogs/move-dialog.slint:45 +#: ui/app.slint:230 ui/dialogs/move-dialog.slint:45 +#: ui/app.slint:230 ui/dialogs/move-dialog.slint:45 ui/views/mail-list-pane.slint:1438 +#: ui/app.slint:230 ui/dialogs/move-dialog.slint:45 ui/views/mail-list-pane.slint:1438 ui/views/mail-reading-pane.slint:376 msgid "Archive" msgstr "" -#: ui/app.slint:228 ui/components/account-mail-preferences.slint:194 -#: ui/app.slint:228 ui/components/account-mail-preferences.slint:194 -#: ui/app.slint:228 ui/components/account-mail-preferences.slint:194 -#: ui/app.slint:228 ui/components/account-mail-preferences.slint:194 ui/views/contacts-view.slint:608 -#: ui/app.slint:228 ui/components/account-mail-preferences.slint:194 ui/views/contacts-view.slint:608 +#: ui/app.slint:231 ui/components/account-mail-preferences.slint:194 +#: ui/app.slint:231 ui/components/account-mail-preferences.slint:194 +#: ui/app.slint:231 ui/components/account-mail-preferences.slint:194 +#: ui/app.slint:231 ui/components/account-mail-preferences.slint:194 ui/views/contacts-view.slint:608 +#: ui/app.slint:231 ui/components/account-mail-preferences.slint:194 ui/views/contacts-view.slint:608 msgid "Delete" msgstr "" #. notification settings list: mail that may play a sound, and the rest. -#: ui/app.slint:231 +#: ui/app.slint:234 msgid "New mail" msgstr "" -#: ui/app.slint:232 +#: ui/app.slint:235 msgid "New mail without sound" msgstr "" -#: ui/app.slint:233 +#: ui/app.slint:236 msgid "Checking for new mail" msgstr "" -#: ui/app.slint:234 +#: ui/app.slint:237 msgid "Last contacted {}" msgstr "" -#: ui/app.slint:235 ui/app.slint:516 +#: ui/app.slint:238 ui/app.slint:519 msgid "Loading local data…" msgstr "" -#: ui/app.slint:236 ui/app.slint:517 +#: ui/app.slint:239 ui/app.slint:520 msgid "Local data ready." msgstr "" -#: ui/app.slint:237 +#: ui/app.slint:240 msgid "Local data is unavailable: {}" msgstr "" -#: ui/app.slint:238 +#: ui/app.slint:241 msgid "Could not display local mail: {}" msgstr "" -#: ui/app.slint:269 +#: ui/app.slint:272 msgid "An unexpected interface message occurred." msgstr "" -#: ui/app.slint:273 +#: ui/app.slint:276 msgid "Notification preferences are active for this session." msgstr "" -#: ui/app.slint:274 +#: ui/app.slint:277 msgid "Notification preferences saved." msgstr "" -#: ui/app.slint:275 +#: ui/app.slint:278 msgid "Update preference saved." msgstr "" -#: ui/app.slint:276 +#: ui/app.slint:279 msgid "Undo send preference saved." msgstr "" -#: ui/app.slint:277 +#: ui/app.slint:280 msgid "Could not save notifications: {}" msgstr "" -#: ui/app.slint:278 +#: ui/app.slint:281 msgid "Could not save the update preference: {}" msgstr "" -#: ui/app.slint:279 +#: ui/app.slint:282 msgid "Could not save the undo send preference: {}" msgstr "" -#: ui/app.slint:280 +#: ui/app.slint:283 msgid "Sync interval is active for this session." msgstr "" -#: ui/app.slint:281 +#: ui/app.slint:284 msgid "Sync interval set to {} minutes." msgstr "" -#: ui/app.slint:282 +#: ui/app.slint:285 msgid "Could not save sync interval: {}" msgstr "" -#: ui/app.slint:283 +#: ui/app.slint:286 msgid "Message-opening preference updated for this session." msgstr "" -#: ui/app.slint:284 +#: ui/app.slint:287 msgid "Message-opening preference saved." msgstr "" -#: ui/app.slint:285 +#: ui/app.slint:288 msgid "Could not save message-opening preference: {}" msgstr "" -#: ui/app.slint:286 +#: ui/app.slint:289 msgid "Contact suggestion preferences are active for this session." msgstr "" -#: ui/app.slint:287 +#: ui/app.slint:290 msgid "Contact suggestion preferences saved." msgstr "" -#: ui/app.slint:288 +#: ui/app.slint:291 msgid "Could not save contact suggestion preferences: {}" msgstr "" -#: ui/app.slint:289 +#: ui/app.slint:292 msgid "Contact storage is still starting. Try again shortly." msgstr "" -#: ui/app.slint:290 +#: ui/app.slint:293 msgid "Cleared {} suggested people." msgstr "" -#: ui/app.slint:291 +#: ui/app.slint:294 msgid "Could not clear suggested people: {}" msgstr "" -#: ui/app.slint:292 +#: ui/app.slint:295 msgid "Theme updated for this session." msgstr "" -#: ui/app.slint:293 +#: ui/app.slint:296 msgid "Theme preference saved." msgstr "" -#: ui/app.slint:294 +#: ui/app.slint:297 msgid "Message appearance updated for this session." msgstr "" -#: ui/app.slint:295 +#: ui/app.slint:298 msgid "Message appearance preference saved." msgstr "" -#: ui/app.slint:296 +#: ui/app.slint:299 msgid "Could not save message appearance: {}" msgstr "" -#: ui/app.slint:297 +#: ui/app.slint:300 msgid "Could not save theme: {}" msgstr "" -#: ui/app.slint:298 +#: ui/app.slint:301 msgid "Theme palette updated for this session." msgstr "" -#: ui/app.slint:299 +#: ui/app.slint:302 msgid "Theme palette saved." msgstr "" -#: ui/app.slint:300 +#: ui/app.slint:303 msgid "Could not save theme palette: {}" msgstr "" -#: ui/app.slint:301 +#: ui/app.slint:304 msgid "Custom theme updated for this session." msgstr "" -#: ui/app.slint:302 +#: ui/app.slint:305 msgid "Custom theme saved." msgstr "" -#: ui/app.slint:303 +#: ui/app.slint:306 msgid "Download location saved." msgstr "" -#: ui/app.slint:304 +#: ui/app.slint:307 msgid "Download location is saved once an account is set up." msgstr "" -#: ui/app.slint:305 +#: ui/app.slint:308 msgid "Could not save the download location: {}" msgstr "" -#: ui/app.slint:306 +#: ui/app.slint:309 msgid "Choose download location" msgstr "" -#: ui/app.slint:307 +#: ui/app.slint:310 msgid "Could not save custom theme: {}" msgstr "" -#: ui/app.slint:308 +#: ui/app.slint:311 msgid "Language updated for this session." msgstr "" -#: ui/app.slint:309 +#: ui/app.slint:312 msgid "Language preference saved." msgstr "" -#: ui/app.slint:310 +#: ui/app.slint:313 msgid "Could not save language: {}" msgstr "" -#: ui/app.slint:311 +#: ui/app.slint:314 msgid "Time format updated for this session." msgstr "" -#: ui/app.slint:312 +#: ui/app.slint:315 msgid "Time format preference saved." msgstr "" -#: ui/app.slint:313 +#: ui/app.slint:316 msgid "Could not save time format: {}" msgstr "" -#: ui/app.slint:314 +#: ui/app.slint:317 msgid "Sidebar icon style updated for this session." msgstr "" -#: ui/app.slint:315 +#: ui/app.slint:318 msgid "Sidebar icon preference saved." msgstr "" -#: ui/app.slint:316 +#: ui/app.slint:319 msgid "Could not save sidebar icon preference: {}" msgstr "" -#: ui/app.slint:317 +#: ui/app.slint:320 msgid "App icon updated for this session." msgstr "" -#: ui/app.slint:318 +#: ui/app.slint:321 msgid "App icon saved." msgstr "" -#: ui/app.slint:319 +#: ui/app.slint:322 msgid "Could not save app icon: {}" msgstr "" -#: ui/app.slint:320 +#: ui/app.slint:323 msgid "Avatar preference updated for this session." msgstr "" -#: ui/app.slint:321 +#: ui/app.slint:324 msgid "Avatar preference saved." msgstr "" -#: ui/app.slint:322 +#: ui/app.slint:325 msgid "Could not save avatar preference: {}" msgstr "" -#: ui/app.slint:323 +#: ui/app.slint:326 msgid "Window frame updated for this session." msgstr "" -#: ui/app.slint:324 +#: ui/app.slint:327 msgid "Window frame preference saved." msgstr "" -#: ui/app.slint:325 +#: ui/app.slint:328 msgid "Could not save window frame preference: {}" msgstr "" -#: ui/app.slint:326 +#: ui/app.slint:329 msgid "Tabs preference updated for this session." msgstr "" -#: ui/app.slint:327 +#: ui/app.slint:330 msgid "Tabs preference saved." msgstr "" -#: ui/app.slint:328 +#: ui/app.slint:331 msgid "Could not save tabs preference: {}" msgstr "" -#: ui/app.slint:329 +#: ui/app.slint:332 msgid "Could not save spelling preference: {}" msgstr "" -#: ui/app.slint:330 +#: ui/app.slint:333 msgid "At most {} tabs can be open. Close a tab to open another." msgstr "" -#: ui/app.slint:331 +#: ui/app.slint:334 msgid "Mail grouping is active for this session." msgstr "" -#: ui/app.slint:332 +#: ui/app.slint:335 msgid "Mail grouping preference saved." msgstr "" -#: ui/app.slint:333 +#: ui/app.slint:336 msgid "Could not save mail grouping preference: {}" msgstr "" -#: ui/app.slint:334 +#: ui/app.slint:337 msgid "Conversation view updated for this session." msgstr "" -#: ui/app.slint:335 +#: ui/app.slint:338 msgid "Conversation view preference saved." msgstr "" -#: ui/app.slint:336 +#: ui/app.slint:339 msgid "Could not save conversation view preference: {}" msgstr "" -#: ui/app.slint:337 +#: ui/app.slint:340 msgid "Profile changes require local mail data." msgstr "" -#: ui/app.slint:338 +#: ui/app.slint:341 msgid "Profile saved." msgstr "" -#: ui/app.slint:339 +#: ui/app.slint:342 msgid "Could not save profile: {}" msgstr "" -#: ui/app.slint:340 +#: ui/app.slint:343 msgid "Account profile updated." msgstr "" -#: ui/app.slint:341 +#: ui/app.slint:344 msgid "Account color changes require local mail data." msgstr "" -#: ui/app.slint:342 +#: ui/app.slint:345 msgid "Account color updated." msgstr "" -#: ui/app.slint:343 +#: ui/app.slint:346 msgid "Could not update account color: {}" msgstr "" -#: ui/app.slint:344 +#: ui/app.slint:347 msgid "Could not update account profile: {}" msgstr "" -#: ui/app.slint:345 +#: ui/app.slint:348 msgid "Profile deleted." msgstr "" -#: ui/app.slint:346 +#: ui/app.slint:349 msgid "Could not delete profile: {}" msgstr "" -#: ui/app.slint:347 +#: ui/app.slint:350 msgid "Could not switch profile: {}" msgstr "" -#: ui/app.slint:348 +#: ui/app.slint:351 msgid "Marker preference is active for this session." msgstr "" -#: ui/app.slint:349 +#: ui/app.slint:352 msgid "Mail-list marker preference saved." msgstr "" -#: ui/app.slint:350 +#: ui/app.slint:353 msgid "Could not save mail-list marker preference: {}" msgstr "" -#: ui/app.slint:351 +#: ui/app.slint:354 msgid "Workspace layout updated for this session." msgstr "" -#: ui/app.slint:352 +#: ui/app.slint:355 msgid "Workspace layout preference saved." msgstr "" -#: ui/app.slint:353 +#: ui/app.slint:356 msgid "Could not save workspace layout: {}" msgstr "" -#: ui/app.slint:354 +#: ui/app.slint:357 msgid "Could not save list pane width: {}" msgstr "" -#: ui/app.slint:359 +#: ui/app.slint:362 msgid "Opened {}" msgstr "" -#: ui/app.slint:360 +#: ui/app.slint:363 msgid "Could not open link: {}" msgstr "" -#: ui/app.slint:361 +#: ui/app.slint:364 msgid "This email link is too long to open." msgstr "" -#: ui/app.slint:362 +#: ui/app.slint:365 msgid "The email link will open when you close this message." msgstr "" -#: ui/app.slint:363 +#: ui/app.slint:366 msgid "The message you were writing was saved to Drafts." msgstr "" -#: ui/app.slint:364 +#: ui/app.slint:367 msgid "" "Files from links are never attached for you. Attach them yourself if you " "trust them: {}" msgstr "" -#: ui/app.slint:365 +#: ui/app.slint:368 msgid "Copied HTML source" msgstr "" -#: ui/app.slint:366 +#: ui/app.slint:369 msgid "Copied HTML source. Paste it into the issue." msgstr "" -#: ui/app.slint:367 +#: ui/app.slint:370 msgid "Saved HTML source. Attach the file to the issue." msgstr "" -#: ui/app.slint:368 +#: ui/app.slint:371 msgid "Could not save HTML source: {}" msgstr "" -#: ui/app.slint:369 +#: ui/app.slint:372 msgid "Copied selected text" msgstr "" -#: ui/app.slint:370 +#: ui/app.slint:373 msgid "Copied email text" msgstr "" -#: ui/app.slint:371 +#: ui/app.slint:374 msgid "Copied link" msgstr "" -#: ui/app.slint:372 +#: ui/app.slint:375 msgid "Blitz software selection render failed: {}" msgstr "" -#: ui/app.slint:373 +#: ui/app.slint:376 msgid "Blitz software tile render failed: {}" msgstr "" -#: ui/app.slint:374 +#: ui/app.slint:377 msgid "Message ready." msgstr "" -#: ui/app.slint:375 +#: ui/app.slint:378 msgid "System tray behavior is unavailable in this package." msgstr "" -#: ui/app.slint:376 +#: ui/app.slint:379 msgid "Close-to-tray is active for this session." msgstr "" -#: ui/app.slint:377 +#: ui/app.slint:380 msgid "Saving close behavior…" msgstr "" -#: ui/app.slint:378 +#: ui/app.slint:381 msgid "Closing the window will now keep Flectar Mail in the tray." msgstr "" -#: ui/app.slint:379 +#: ui/app.slint:382 msgid "Closing the window will now quit Flectar Mail." msgstr "" -#: ui/app.slint:380 +#: ui/app.slint:383 msgid "Closing the window will now keep Flectar Mail running in the background." msgstr "" -#: ui/app.slint:381 +#: ui/app.slint:384 msgid "Your desktop did not allow Flectar Mail to run in the background." msgstr "" -#: ui/app.slint:382 +#: ui/app.slint:385 msgid "Could not save close behavior: {}" msgstr "" -#: ui/app.slint:383 +#: ui/app.slint:386 msgid "Flectar Mail will start when you sign in." msgstr "" -#: ui/app.slint:384 +#: ui/app.slint:387 msgid "Flectar Mail is now your default email app." msgstr "" -#: ui/app.slint:385 +#: ui/app.slint:388 msgid "Choose Flectar Mail for MAILTO in Windows Settings to finish." msgstr "" -#: ui/app.slint:386 +#: ui/app.slint:389 msgid "Windows no longer offers this copy for email links." msgstr "" -#: ui/app.slint:387 +#: ui/app.slint:390 msgid "Could not change the default email app: {}" msgstr "" -#: ui/app.slint:388 +#: ui/app.slint:391 msgid "Flectar Mail will no longer start when you sign in." msgstr "" -#: ui/app.slint:389 +#: ui/app.slint:392 msgid "Could not change startup behavior: {}" msgstr "" -#: ui/app.slint:390 +#: ui/app.slint:393 msgid "Allow Flectar Mail under Login Items in System Settings to finish." msgstr "" -#: ui/app.slint:391 +#: ui/app.slint:394 msgid "Turn on Flectar Mail under Startup apps in Windows Settings to finish." msgstr "" -#: ui/app.slint:396 +#: ui/app.slint:399 msgid "Database snapshot exported to {}." msgstr "" -#: ui/app.slint:397 +#: ui/app.slint:400 msgid "Choose where to export the mail" msgstr "" -#: ui/app.slint:398 +#: ui/app.slint:401 msgid "Exporting mail…" msgstr "" -#: ui/app.slint:399 +#: ui/app.slint:402 msgid "Mail exported to {}." msgstr "" -#: ui/app.slint:400 +#: ui/app.slint:403 msgid "" "Mail exported to {}. Some messages could not be found on this device or the " "mail server." msgstr "" -#: ui/app.slint:401 +#: ui/app.slint:404 msgid "Could not export mail: {}" msgstr "" -#: ui/app.slint:402 +#: ui/app.slint:405 msgid "Could not export database snapshot: {}" msgstr "" -#: ui/app.slint:403 +#: ui/app.slint:406 msgid "Account order saved." msgstr "" -#: ui/app.slint:404 +#: ui/app.slint:407 msgid "Could not save account order: {}" msgstr "" -#: ui/app.slint:405 +#: ui/app.slint:408 msgid "Mail history updated. Background sync is adjusting now." msgstr "" -#: ui/app.slint:406 +#: ui/app.slint:409 msgid "Account removed from this device." msgstr "" -#: ui/app.slint:407 +#: ui/app.slint:410 msgid "Account removed. Mail refresh will retry." msgstr "" -#: ui/app.slint:408 +#: ui/app.slint:411 msgid "Account removed; local cleanup needs a retry: {}" msgstr "" -#: ui/app.slint:409 +#: ui/app.slint:412 msgid "Could not remove account: {}" msgstr "" -#: ui/app.slint:410 +#: ui/app.slint:413 msgid "Removing account…" msgstr "" -#: ui/app.slint:411 +#: ui/app.slint:414 msgid "Deleting mail on this device…" msgstr "" -#: ui/app.slint:412 +#: ui/app.slint:415 msgid "Mail on this device deleted." msgstr "" -#: ui/app.slint:413 +#: ui/app.slint:416 msgid "Mail on this device deleted. Mail refresh will retry." msgstr "" -#: ui/app.slint:414 +#: ui/app.slint:417 msgid "Mail on this device deleted; local cleanup needs a retry: {}" msgstr "" -#: ui/app.slint:415 +#: ui/app.slint:418 msgid "Could not delete mail on this device: {}" msgstr "" -#: ui/app.slint:416 +#: ui/app.slint:419 msgid "Synchronizing account…" msgstr "" -#: ui/app.slint:417 +#: ui/app.slint:420 msgid "Could not update mail history: {}" msgstr "" -#: ui/app.slint:418 +#: ui/app.slint:421 msgid "Connected {}. Initial sync is running in the background." msgstr "" -#: ui/app.slint:419 +#: ui/app.slint:422 msgid "Account setup failed: {}" msgstr "" -#: ui/app.slint:420 +#: ui/app.slint:423 msgid "OAuth failed: {}" msgstr "" -#: ui/app.slint:421 +#: ui/app.slint:424 msgid "Reconnected {}. Synchronization is resuming." msgstr "" -#: ui/app.slint:422 +#: ui/app.slint:425 msgid "Reconnection failed: {}" msgstr "" -#: ui/app.slint:423 +#: ui/app.slint:426 msgid "Calendar connected and initial sync started." msgstr "" -#: ui/app.slint:424 ui/components/account-calendars.slint:270 +#: ui/app.slint:427 ui/components/account-calendars.slint:270 msgid "Could not connect calendar: {}" msgstr "" -#: ui/app.slint:425 +#: ui/app.slint:428 msgid "Calendar sync enabled." msgstr "" -#: ui/app.slint:426 +#: ui/app.slint:429 msgid "Calendar sync paused." msgstr "" -#: ui/app.slint:427 +#: ui/app.slint:430 msgid "Could not update calendar sync: {}" msgstr "" -#: ui/app.slint:428 +#: ui/app.slint:431 msgid "CalDAV connected and initial sync started." msgstr "" -#: ui/app.slint:429 +#: ui/app.slint:432 msgid "Could not connect CalDAV: {}" msgstr "" -#: ui/app.slint:430 +#: ui/app.slint:433 msgid "Calendar removed." msgstr "" -#: ui/app.slint:431 +#: ui/app.slint:434 msgid "Could not remove calendar: {}" msgstr "" -#: ui/app.slint:432 +#: ui/app.slint:435 msgid "CardDAV connected and initial sync started." msgstr "" -#: ui/app.slint:433 +#: ui/app.slint:436 msgid "Could not connect CardDAV: {}" msgstr "" -#: ui/app.slint:434 +#: ui/app.slint:437 msgid "CardDAV sync enabled." msgstr "" -#: ui/app.slint:435 +#: ui/app.slint:438 msgid "CardDAV sync paused." msgstr "" -#: ui/app.slint:436 +#: ui/app.slint:439 msgid "Could not update CardDAV sync: {}" msgstr "" -#: ui/app.slint:437 +#: ui/app.slint:440 msgid "CardDAV disconnected." msgstr "" -#: ui/app.slint:438 +#: ui/app.slint:441 msgid "Could not disconnect CardDAV: {}" msgstr "" -#: ui/app.slint:443 +#: ui/app.slint:446 msgid "Connect an account before creating a backup." msgstr "" -#: ui/app.slint:444 +#: ui/app.slint:447 msgid "Export Flectar Mail account backup" msgstr "" -#: ui/app.slint:445 +#: ui/app.slint:448 msgid "Flectar Mail backup" msgstr "" -#: ui/app.slint:446 ui/dialogs/import-dialog.slint:407 -#: ui/app.slint:446 ui/dialogs/import-dialog.slint:407 ui/views/onboarding-view.slint:225 +#: ui/app.slint:449 ui/dialogs/import-dialog.slint:407 +#: ui/app.slint:449 ui/dialogs/import-dialog.slint:407 ui/views/onboarding-view.slint:225 msgid "Import accounts and mail" msgstr "" -#: ui/app.slint:447 +#: ui/app.slint:450 msgid "Choose a Thunderbird profile or a folder of mail" msgstr "" -#: ui/app.slint:448 +#: ui/app.slint:451 msgid "Imported messages" msgstr "" -#: ui/app.slint:449 +#: ui/app.slint:452 msgid "Choose where to export the database snapshot" msgstr "" -#: ui/app.slint:450 +#: ui/app.slint:453 msgid "Backup exported. Passwords and OAuth tokens were not included." msgstr "" -#: ui/app.slint:451 +#: ui/app.slint:454 msgid "Could not export backup: {}" msgstr "" -#: ui/app.slint:452 +#: ui/app.slint:455 msgid "Local data storage is unavailable. Retry startup." msgstr "" -#: ui/app.slint:453 +#: ui/app.slint:456 msgid "Creating verified database snapshot…" msgstr "" -#: ui/app.slint:454 +#: ui/app.slint:457 msgid "All local Flectar Mail data was deleted." msgstr "" -#: ui/app.slint:455 +#: ui/app.slint:458 msgid "Could not delete all local data: {}" msgstr "" -#: ui/app.slint:456 +#: ui/app.slint:459 msgid "Deleting local accounts and cached data…" msgstr "" -#: ui/app.slint:461 +#: ui/app.slint:464 msgid "Background mail refresh failed: {}" msgstr "" -#: ui/app.slint:462 +#: ui/app.slint:465 msgid "No conversations in this folder" msgstr "" -#: ui/app.slint:463 +#: ui/app.slint:466 msgid "No conversations match this search" msgstr "" -#: ui/app.slint:464 +#: ui/app.slint:467 msgid "Mail core is ready for account synchronization and message actions." msgstr "" -#: ui/app.slint:465 +#: ui/app.slint:468 msgid "Large message rendered in compatibility mode." msgstr "" -#: ui/app.slint:466 +#: ui/app.slint:469 msgid "Software email render failed: {}" msgstr "" -#: ui/app.slint:467 +#: ui/app.slint:470 msgid "Rendered with software fallback after GPU error: {}" msgstr "" -#: ui/app.slint:468 +#: ui/app.slint:471 msgid "Blitz render failed (GPU: {}; software: {})" msgstr "" -#: ui/app.slint:473 +#: ui/app.slint:476 msgid "Enter a name, email address, or phone number, then save." msgstr "" -#: ui/app.slint:474 +#: ui/app.slint:477 msgid "Could not save: contact storage is unavailable." msgstr "" -#: ui/app.slint:475 +#: ui/app.slint:478 msgid "Could not save contact: {}" msgstr "" -#: ui/app.slint:476 +#: ui/app.slint:479 msgid "Contact saved." msgstr "" -#: ui/app.slint:477 +#: ui/app.slint:480 msgid "Saved to contacts." msgstr "" -#: ui/app.slint:478 +#: ui/app.slint:481 msgid "Could not delete: contact storage is unavailable." msgstr "" -#: ui/app.slint:479 +#: ui/app.slint:482 msgid "Could not delete contact: {}" msgstr "" -#: ui/app.slint:480 +#: ui/app.slint:483 msgid "Contact deleted." msgstr "" -#: ui/app.slint:481 +#: ui/app.slint:484 msgid "Could not load contacts: {}" msgstr "" -#: ui/app.slint:482 +#: ui/app.slint:485 msgid "Local contact storage is still starting…" msgstr "" -#: ui/app.slint:483 +#: ui/app.slint:486 msgid "Loading contacts…" msgstr "" -#: ui/app.slint:488 ui/components/calendar-agenda.slint:235 -#: ui/app.slint:488 ui/components/calendar-agenda.slint:235 +#: ui/app.slint:491 ui/components/calendar-agenda.slint:235 +#: ui/app.slint:491 ui/components/calendar-agenda.slint:235 msgid "Local calendar" msgstr "" -#: ui/app.slint:489 ui/components/calendar.slint:273 -#: ui/app.slint:489 ui/components/calendar.slint:273 ui/components/calendar.slint:321 -#: ui/app.slint:489 ui/components/calendar.slint:273 ui/components/calendar.slint:321 ui/components/calendar.slint:439 -#: ui/app.slint:489 ui/components/calendar.slint:273 ui/components/calendar.slint:321 ui/components/calendar.slint:439 -#: ui/app.slint:489 ui/components/calendar.slint:273 ui/components/calendar.slint:321 ui/components/calendar.slint:439 -#: ui/app.slint:489 ui/components/calendar.slint:273 ui/components/calendar.slint:321 ui/components/calendar.slint:439 -#: ui/app.slint:489 ui/components/calendar.slint:273 ui/components/calendar.slint:321 ui/components/calendar.slint:439 +#: ui/app.slint:492 ui/components/calendar.slint:273 +#: ui/app.slint:492 ui/components/calendar.slint:273 ui/components/calendar.slint:321 +#: ui/app.slint:492 ui/components/calendar.slint:273 ui/components/calendar.slint:321 ui/components/calendar.slint:439 +#: ui/app.slint:492 ui/components/calendar.slint:273 ui/components/calendar.slint:321 ui/components/calendar.slint:439 +#: ui/app.slint:492 ui/components/calendar.slint:273 ui/components/calendar.slint:321 ui/components/calendar.slint:439 +#: ui/app.slint:492 ui/components/calendar.slint:273 ui/components/calendar.slint:321 ui/components/calendar.slint:439 +#: ui/app.slint:492 ui/components/calendar.slint:273 ui/components/calendar.slint:321 ui/components/calendar.slint:439 msgid "Calendar" msgstr "" -#: ui/app.slint:490 +#: ui/app.slint:493 msgid "Could not load calendar: {}" msgstr "" -#: ui/app.slint:491 +#: ui/app.slint:494 msgid "Calendar shown and syncing." msgstr "" -#: ui/app.slint:492 +#: ui/app.slint:495 msgid "Calendar hidden and sync paused." msgstr "" -#: ui/app.slint:493 +#: ui/app.slint:496 msgid "Calendar update failed: {}" msgstr "" -#: ui/app.slint:494 +#: ui/app.slint:497 msgid "Only events created in Flectar Mail can be edited." msgstr "" -#: ui/app.slint:495 +#: ui/app.slint:498 msgid "Only events created in Flectar Mail can be deleted." msgstr "" -#: ui/app.slint:496 +#: ui/app.slint:499 msgid "Calendar storage is unavailable." msgstr "" -#: ui/app.slint:497 +#: ui/app.slint:500 msgid "Could not delete event: {}" msgstr "" -#: ui/app.slint:498 +#: ui/app.slint:501 msgid "Event deleted, but refresh failed: {}" msgstr "" -#: ui/app.slint:499 +#: ui/app.slint:502 msgid "Event deleted." msgstr "" -#: ui/app.slint:500 +#: ui/app.slint:503 msgid "Use YYYY-MM-DD for the date and a time such as {}." msgstr "" -#: ui/app.slint:501 +#: ui/app.slint:504 msgid "Event duration must be a number of minutes." msgstr "" -#: ui/app.slint:502 +#: ui/app.slint:505 msgid "Add a title and choose a duration from 15 to 1440 minutes." msgstr "" -#: ui/app.slint:503 +#: ui/app.slint:506 msgid "That local time does not exist in the current time zone." msgstr "" -#: ui/app.slint:504 +#: ui/app.slint:507 msgid "Could not save event: {}" msgstr "" -#: ui/app.slint:505 +#: ui/app.slint:508 msgid "Event saved, but refresh failed: {}" msgstr "" -#: ui/app.slint:506 +#: ui/app.slint:509 msgid "Event saved. Provider sync will run when enabled." msgstr "" -#: ui/app.slint:511 +#: ui/app.slint:514 msgid "Email resource render failed: {}" msgstr "" -#: ui/app.slint:512 +#: ui/app.slint:515 msgid "Message refresh failed: {}" msgstr "" -#: ui/app.slint:513 +#: ui/app.slint:516 msgid "Message load failed: {}" msgstr "" -#: ui/app.slint:514 +#: ui/app.slint:517 msgid "" "Your local mailbox could not be opened. No account operation was started. " "Retry, or copy the diagnostics for support." msgstr "" -#: ui/app.slint:515 +#: ui/app.slint:518 msgid "Local storage startup failed." msgstr "" -#: ui/app.slint:522 +#: ui/app.slint:525 msgid "Could not identify the dragged account." msgstr "" -#: ui/app.slint:523 +#: ui/app.slint:526 msgid "Account ordering requires local mail data." msgstr "" -#: ui/app.slint:524 +#: ui/app.slint:527 msgid "Could not find the account to reorder." msgstr "" -#: ui/app.slint:525 +#: ui/app.slint:528 msgid "Saving account order…" msgstr "" -#: ui/app.slint:526 +#: ui/app.slint:529 msgid "Sent copy settings require local mail data." msgstr "" -#: ui/app.slint:527 +#: ui/app.slint:530 msgid "Updating Sent copy settings…" msgstr "" -#: ui/app.slint:528 +#: ui/app.slint:531 msgid "Sent copy settings updated." msgstr "" -#: ui/app.slint:529 +#: ui/app.slint:532 msgid "Could not update Sent copy settings: {}" msgstr "" -#: ui/app.slint:530 +#: ui/app.slint:533 msgid "Server mail settings require local mail data." msgstr "" -#: ui/app.slint:531 +#: ui/app.slint:534 msgid "Updating server mail settings…" msgstr "" -#: ui/app.slint:532 +#: ui/app.slint:535 msgid "Server mail settings updated." msgstr "" -#: ui/app.slint:533 +#: ui/app.slint:536 msgid "Could not update server mail settings: {}" msgstr "" -#: ui/app.slint:534 +#: ui/app.slint:537 msgid "Mail history requires local mail data." msgstr "" -#: ui/app.slint:535 +#: ui/app.slint:538 msgid "Updating mail history…" msgstr "" -#: ui/app.slint:536 +#: ui/app.slint:539 msgid "Remote images are unavailable in this minimal build." msgstr "" -#: ui/app.slint:537 +#: ui/app.slint:540 msgid "Could not save remote-image setting: {}" msgstr "" -#: ui/app.slint:538 +#: ui/app.slint:541 msgid "Remote sender icons unavailable: {}" msgstr "" -#: ui/app.slint:539 +#: ui/app.slint:542 msgid "Remote images unavailable: {}" msgstr "" -#: ui/app.slint:540 +#: ui/app.slint:543 msgid "Remote body images and sender favicons enabled." msgstr "" -#: ui/app.slint:541 +#: ui/app.slint:544 msgid "Remote images blocked." msgstr "" -#: ui/app.slint:542 +#: ui/app.slint:545 msgid "Could not refresh message images: {}" msgstr "" -#: ui/app.slint:543 +#: ui/app.slint:546 msgid "Remote-image loading is disabled." msgstr "" -#: ui/app.slint:544 +#: ui/app.slint:547 msgid "Could not load message images: {}" msgstr "" -#: ui/app.slint:545 +#: ui/app.slint:548 msgid "Sync finished, refresh failed: {}" msgstr "" -#: ui/app.slint:546 +#: ui/app.slint:549 msgid "Sync complete." msgstr "" -#: ui/app.slint:547 +#: ui/app.slint:550 msgid "Sync failed: {}" msgstr "" -#: ui/app.slint:548 +#: ui/app.slint:551 msgid "Local mail data is unavailable; preview data is read-only." msgstr "" -#: ui/app.slint:549 +#: ui/app.slint:552 msgid "Synchronizing accounts…" msgstr "" -#: ui/app.slint:554 +#: ui/app.slint:557 msgid "Message action completed." msgstr "" -#: ui/app.slint:555 +#: ui/app.slint:558 msgid "" "Permanent deletion queued. Mail will disappear after the server confirms." msgstr "" -#: ui/app.slint:556 +#: ui/app.slint:559 msgid "Message action failed: {}" msgstr "" -#: ui/app.slint:557 +#: ui/app.slint:560 msgid "Message action failed: message is no longer available" msgstr "" -#: ui/app.slint:558 +#: ui/app.slint:561 msgid "Label added." msgstr "" -#: ui/app.slint:559 +#: ui/app.slint:562 msgid "Label removed." msgstr "" -#: ui/app.slint:560 +#: ui/app.slint:563 msgid "Label created and added." msgstr "" -#: ui/app.slint:561 +#: ui/app.slint:564 msgid "Label created." msgstr "" -#: ui/app.slint:562 +#: ui/app.slint:565 msgid "Label updated." msgstr "" -#: ui/app.slint:563 +#: ui/app.slint:566 msgid "Label deleted." msgstr "" -#: ui/app.slint:564 +#: ui/app.slint:567 msgid "No other folder to move this mail to." msgstr "" -#: ui/app.slint:565 +#: ui/app.slint:568 msgid "Could not move mail: {}" msgstr "" -#: ui/app.slint:566 +#: ui/app.slint:569 msgid "No folder to copy this mail to." msgstr "" -#: ui/app.slint:567 +#: ui/app.slint:570 msgid "Attaching the original's files…" msgstr "" -#: ui/app.slint:568 +#: ui/app.slint:571 msgid "Could not attach the original's files: {}" msgstr "" -#: ui/app.slint:569 +#: ui/app.slint:572 msgid "Some of the original's files are over the 25 MB limit for attachments." msgstr "" -#: ui/app.slint:570 +#: ui/app.slint:573 msgid "Could not copy mail: {}" msgstr "" -#: ui/app.slint:571 +#: ui/app.slint:574 msgid "Moving mail to the other account…" msgstr "" -#: ui/app.slint:572 +#: ui/app.slint:575 msgid "Copying mail to the other account…" msgstr "" -#: ui/app.slint:573 +#: ui/app.slint:576 msgid "Conversation archived." msgid_plural "{0} conversations archived." msgstr[0] "" msgstr[1] "" -#: ui/app.slint:574 +#: ui/app.slint:577 msgid "Message archived." msgid_plural "{0} messages archived." msgstr[0] "" msgstr[1] "" -#: ui/app.slint:575 +#: ui/app.slint:578 msgid "Conversation moved to Trash." msgid_plural "{0} conversations moved to Trash." msgstr[0] "" msgstr[1] "" -#: ui/app.slint:576 +#: ui/app.slint:579 msgid "Message moved to Trash." msgid_plural "{0} messages moved to Trash." msgstr[0] "" msgstr[1] "" -#: ui/app.slint:577 +#: ui/app.slint:580 msgid "Conversation marked as spam." msgid_plural "{0} conversations marked as spam." msgstr[0] "" msgstr[1] "" -#: ui/app.slint:578 +#: ui/app.slint:581 msgid "Message marked as spam." msgid_plural "{0} messages marked as spam." msgstr[0] "" msgstr[1] "" -#: ui/app.slint:579 +#: ui/app.slint:582 msgid "Conversation moved." msgid_plural "{0} conversations moved." msgstr[0] "" msgstr[1] "" -#: ui/app.slint:580 +#: ui/app.slint:583 msgid "Message moved." msgid_plural "{0} messages moved." msgstr[0] "" msgstr[1] "" -#: ui/app.slint:581 +#: ui/app.slint:584 msgid "Conversation marked as read." msgid_plural "{0} conversations marked as read." msgstr[0] "" msgstr[1] "" -#: ui/app.slint:582 +#: ui/app.slint:585 msgid "Message marked as read." msgid_plural "{0} messages marked as read." msgstr[0] "" msgstr[1] "" -#: ui/app.slint:583 +#: ui/app.slint:586 msgid "Conversation marked as unread." msgid_plural "{0} conversations marked as unread." msgstr[0] "" msgstr[1] "" -#: ui/app.slint:584 +#: ui/app.slint:587 msgid "Message marked as unread." msgid_plural "{0} messages marked as unread." msgstr[0] "" msgstr[1] "" -#: ui/app.slint:585 +#: ui/app.slint:588 msgid "Conversation starred." msgid_plural "{0} conversations starred." msgstr[0] "" msgstr[1] "" -#: ui/app.slint:586 +#: ui/app.slint:589 msgid "Message starred." msgid_plural "{0} messages starred." msgstr[0] "" msgstr[1] "" -#: ui/app.slint:587 +#: ui/app.slint:590 msgid "Conversation unstarred." msgid_plural "{0} conversations unstarred." msgstr[0] "" msgstr[1] "" -#: ui/app.slint:588 +#: ui/app.slint:591 msgid "Message unstarred." msgid_plural "{0} messages unstarred." msgstr[0] "" msgstr[1] "" -#: ui/app.slint:589 +#: ui/app.slint:592 msgid "This can no longer be undone." msgstr "" -#: ui/app.slint:590 +#: ui/app.slint:593 msgid "Could not undo: {}" msgstr "" -#: ui/app.slint:591 +#: ui/app.slint:594 msgid "This message names no way to unsubscribe." msgstr "" -#: ui/app.slint:592 +#: ui/app.slint:595 msgid "Could not unsubscribe: {}" msgstr "" -#: ui/app.slint:593 +#: ui/app.slint:596 msgid "Unsubscribed from {}." msgstr "" -#: ui/app.slint:594 +#: ui/app.slint:597 msgid "Unsubscribe request sent to {}." msgstr "" -#: ui/app.slint:595 +#: ui/app.slint:598 +msgid "Blocked {}." +msgstr "" + +#: ui/app.slint:599 +msgid "Unblocked {}." +msgstr "" + +#: ui/app.slint:600 +msgid "Could not block: {}" +msgstr "" + +#: ui/app.slint:601 +msgid "Could not unblock: {}" +msgstr "" + +#: ui/app.slint:602 msgid "Moved one message to the other account." msgid_plural "Moved {0} messages to the other account." msgstr[0] "" msgstr[1] "" -#: ui/app.slint:596 +#: ui/app.slint:603 msgid "Copied one message to the other account." msgid_plural "Copied {0} messages to the other account." msgstr[0] "" msgstr[1] "" -#: ui/app.slint:597 +#: ui/app.slint:604 msgid "Moved or copied one message to the other account." msgid_plural "Moved or copied {0} messages to the other account." msgstr[0] "" msgstr[1] "" -#: ui/app.slint:598 +#: ui/app.slint:605 msgid "The other account had that message already." msgid_plural "The other account had those {0} messages already." msgstr[0] "" msgstr[1] "" -#: ui/app.slint:599 +#: ui/app.slint:606 msgid "Could not move or copy one message: {1}" msgid_plural "Could not move or copy {0} messages: {1}" msgstr[0] "" msgstr[1] "" -#: ui/app.slint:600 +#: ui/app.slint:607 msgid "Could not update label: {}" msgstr "" -#: ui/app.slint:601 +#: ui/app.slint:608 msgid "Could not save label: {}" msgstr "" -#: ui/app.slint:602 +#: ui/app.slint:609 msgid "Could not delete label: {}" msgstr "" -#: ui/app.slint:603 +#: ui/app.slint:610 msgid "Folder created." msgstr "" -#: ui/app.slint:604 +#: ui/app.slint:611 msgid "Folder renamed." msgstr "" -#: ui/app.slint:605 +#: ui/app.slint:612 msgid "Folder deleted." msgstr "" -#: ui/app.slint:606 +#: ui/app.slint:613 msgid "Could not create folder: {}" msgstr "" -#: ui/app.slint:607 +#: ui/app.slint:614 msgid "Could not rename folder: {}" msgstr "" -#: ui/app.slint:608 +#: ui/app.slint:615 msgid "Could not delete folder: {}" msgstr "" -#: ui/app.slint:609 +#: ui/app.slint:616 msgid "Could not close preview: {}" msgstr "" -#: ui/app.slint:610 +#: ui/app.slint:617 msgid "Opened the system print view." msgstr "" -#: ui/app.slint:611 +#: ui/app.slint:618 msgid "Could not print message: {}" msgstr "" -#: ui/app.slint:612 +#: ui/app.slint:619 msgid "Opened the message in your browser." msgstr "" -#: ui/app.slint:613 +#: ui/app.slint:620 msgid "Could not open message in browser: {}" msgstr "" -#: ui/app.slint:614 +#: ui/app.slint:621 msgid "Connect an account before replying or forwarding." msgstr "" -#: ui/app.slint:615 +#: ui/app.slint:622 msgid "Choose a message first." msgstr "" -#: ui/app.slint:616 +#: ui/app.slint:623 msgid "Only drafts can be reopened for editing." msgstr "" -#: ui/app.slint:617 +#: ui/app.slint:624 msgid "Could not open draft: {}" msgstr "" -#: ui/app.slint:618 +#: ui/app.slint:625 msgid "Could not open draft: invalid account identifier" msgstr "" -#: ui/app.slint:619 +#: ui/app.slint:626 msgid "Connected account" msgstr "" -#: ui/app.slint:620 +#: ui/app.slint:627 msgid "Could not open composer: {}" msgstr "" -#: ui/app.slint:621 +#: ui/app.slint:628 msgid "Add an account to send mail." msgstr "" -#: ui/app.slint:622 ui/components/sidebar.slint:585 -#: ui/app.slint:622 ui/components/sidebar.slint:585 ui/views/mail-list-pane.slint:936 +#: ui/app.slint:629 ui/components/sidebar.slint:585 +#: ui/app.slint:629 ui/components/sidebar.slint:585 ui/views/mail-list-pane.slint:936 msgid "On this device" msgstr "" -#: ui/app.slint:623 +#: ui/app.slint:630 msgid "Could not open composer: invalid account identifier" msgstr "" #. Reply and forward quotation headers, written into the draft. -#: ui/app.slint:629 +#: ui/app.slint:636 msgid "On {}, {} wrote:" msgstr "" -#: ui/app.slint:630 +#: ui/app.slint:637 msgid "{} wrote:" msgstr "" -#: ui/app.slint:631 ui/components/email-composer.slint:709 +#: ui/app.slint:638 ui/components/email-composer.slint:709 msgid "Forwarded message" msgstr "" -#: ui/app.slint:632 +#: ui/app.slint:639 msgctxt "forwarded message header" msgid "From: {}" msgstr "" -#: ui/app.slint:633 +#: ui/app.slint:640 msgctxt "forwarded message header" msgid "Date: {}" msgstr "" -#: ui/app.slint:634 +#: ui/app.slint:641 msgctxt "forwarded message header" msgid "Subject: {}" msgstr "" -#: ui/app.slint:635 +#: ui/app.slint:642 msgctxt "forwarded message header" msgid "To: {}" msgstr "" -#: ui/app.slint:636 +#: ui/app.slint:643 msgid "Attach files to this email" msgstr "" -#: ui/app.slint:637 +#: ui/app.slint:644 msgid "Could not add attachments: {}" msgstr "" -#: ui/app.slint:638 +#: ui/app.slint:645 msgid "Could not show the quoted message: {}" msgstr "" -#: ui/app.slint:639 +#: ui/app.slint:646 msgid "Added 1 attachment." msgstr "" -#: ui/app.slint:640 +#: ui/app.slint:647 msgid "Added {} attachments." msgstr "" -#: ui/app.slint:641 +#: ui/app.slint:648 msgid "" "Attachments added: {}. Skipped: {} (duplicate, unreadable, or over the 25 MB " "total limit)." msgstr "" -#: ui/app.slint:642 +#: ui/app.slint:649 msgid "Attachment removed." msgstr "" -#: ui/app.slint:643 +#: ui/app.slint:650 msgid "Choose the account this message should be sent from." msgstr "" -#: ui/app.slint:644 +#: ui/app.slint:651 msgid "Choose a verified sender identity for this message." msgstr "" -#: ui/app.slint:645 +#: ui/app.slint:652 msgid "Connect an account before saving or sending mail." msgstr "" -#: ui/app.slint:646 +#: ui/app.slint:653 msgid "Message queued for delivery (action {})." msgstr "" -#: ui/app.slint:647 +#: ui/app.slint:654 msgid "Sending message…" msgstr "" -#: ui/app.slint:648 +#: ui/app.slint:655 msgid "This message has already been sent." msgstr "" -#: ui/app.slint:649 +#: ui/app.slint:656 msgid "Could not take the message back: {}" msgstr "" -#: ui/app.slint:650 +#: ui/app.slint:657 msgid "Message sent." msgstr "" -#: ui/app.slint:651 +#: ui/app.slint:658 msgid "Message was not sent: {} Your draft is preserved." msgstr "" -#: ui/app.slint:652 +#: ui/app.slint:659 msgid "Draft saved locally (#{})." msgstr "" -#: ui/app.slint:653 +#: ui/app.slint:660 msgid "Compose failed: {}" msgstr "" -#: ui/app.slint:654 +#: ui/app.slint:661 msgid "Could not open the message in its own window." msgstr "" -#: ui/app.slint:655 +#: ui/app.slint:662 msgid "Could not open the message in its own window, so it was saved to Drafts." msgstr "" -#: ui/app.slint:656 +#: ui/app.slint:663 msgid "Connect an account before managing email templates." msgstr "" -#: ui/app.slint:657 +#: ui/app.slint:664 msgid "Could not load email templates: {}" msgstr "" -#: ui/app.slint:658 +#: ui/app.slint:665 msgid "Enter a template name." msgstr "" -#: ui/app.slint:659 +#: ui/app.slint:666 msgid "Add a subject or message to the template." msgstr "" -#: ui/app.slint:660 +#: ui/app.slint:667 msgid "Email template saved." msgstr "" -#: ui/app.slint:661 +#: ui/app.slint:668 msgid "Could not save email template: {}" msgstr "" -#: ui/app.slint:662 +#: ui/app.slint:669 msgid "Email template deleted." msgstr "" -#: ui/app.slint:663 +#: ui/app.slint:670 msgid "Could not delete email template: {}" msgstr "" -#: ui/app.slint:664 +#: ui/app.slint:671 msgid "Email template is no longer available." msgstr "" -#: ui/app.slint:665 +#: ui/app.slint:672 msgid "Email template inserted." msgstr "" -#: ui/app.slint:666 +#: ui/app.slint:673 msgid "Email template inserted, but its usage could not be saved: {}" msgstr "" -#: ui/app.slint:667 +#: ui/app.slint:674 msgid "Choose a supported account type and connection security." msgstr "" -#: ui/app.slint:668 +#: ui/app.slint:675 msgid "IMAP port must be between 1 and 65535." msgstr "" -#: ui/app.slint:669 +#: ui/app.slint:676 msgid "POP3 port must be between 1 and 65535." msgstr "" -#: ui/app.slint:670 +#: ui/app.slint:677 msgid "SMTP port must be between 1 and 65535." msgstr "" -#: ui/app.slint:671 +#: ui/app.slint:678 msgid "Local mail data is unavailable. Retry startup." msgstr "" -#: ui/app.slint:672 +#: ui/app.slint:679 msgid "Discovering JMAP and checking capabilities…" msgstr "" -#: ui/app.slint:673 +#: ui/app.slint:680 msgid "Certificate imported. Connect to verify the server." msgstr "" -#: ui/app.slint:674 +#: ui/app.slint:681 msgid "Could not load account preferences: {}" msgstr "" -#: ui/app.slint:675 +#: ui/app.slint:682 msgid "" "Your edited signature was preserved. Choose No signature to keep it as " "message text before inserting another." msgstr "" -#: ui/app.slint:676 +#: ui/app.slint:683 msgid "Certificate import failed: {}" msgstr "" -#: ui/app.slint:677 +#: ui/app.slint:684 msgid "Testing IMAP and SMTP connections…" msgstr "" -#: ui/app.slint:678 +#: ui/app.slint:685 msgid "Testing POP3 and SMTP connections…" msgstr "" -#: ui/app.slint:683 +#: ui/app.slint:690 msgid "" "Another browser authorization is already in progress; finish it or choose " "Cancel." msgstr "" -#: ui/app.slint:684 ui/dialogs/settings-dialog.slint:2078 -#: ui/app.slint:684 ui/dialogs/settings-dialog.slint:2078 ui/dialogs/settings-dialog.slint:2121 -#: ui/app.slint:684 ui/dialogs/settings-dialog.slint:2078 ui/dialogs/settings-dialog.slint:2121 ui/views/onboarding-view.slint:163 -#: ui/app.slint:684 ui/dialogs/settings-dialog.slint:2078 ui/dialogs/settings-dialog.slint:2121 ui/views/onboarding-view.slint:163 +#: ui/app.slint:691 ui/dialogs/settings-dialog.slint:2126 +#: ui/app.slint:691 ui/dialogs/settings-dialog.slint:2126 ui/dialogs/settings-dialog.slint:2169 +#: ui/app.slint:691 ui/dialogs/settings-dialog.slint:2126 ui/dialogs/settings-dialog.slint:2169 ui/views/onboarding-view.slint:163 +#: ui/app.slint:691 ui/dialogs/settings-dialog.slint:2126 ui/dialogs/settings-dialog.slint:2169 ui/views/onboarding-view.slint:163 msgid "Add app keys in Sign-in settings to enable this provider." msgstr "" -#: ui/app.slint:685 +#: ui/app.slint:692 msgid "Choose Gmail or Outlook OAuth." msgstr "" -#: ui/app.slint:686 +#: ui/app.slint:693 msgid "Complete sign-in in your browser, or choose Cancel here." msgstr "" -#: ui/app.slint:687 +#: ui/app.slint:694 msgid "Cancelling browser sign-in…" msgstr "" -#: ui/app.slint:688 +#: ui/app.slint:695 msgid "Finishing browser sign-in…" msgstr "" -#: ui/app.slint:689 +#: ui/app.slint:696 msgid "Could not use that browser address: {}" msgstr "" -#: ui/app.slint:690 +#: ui/app.slint:697 msgid "Calendar core is unavailable." msgstr "" -#: ui/app.slint:691 +#: ui/app.slint:698 msgid "Account no longer exists." msgstr "" -#: ui/app.slint:692 +#: ui/app.slint:699 msgid "Authorize calendar access in your browser." msgstr "" -#: ui/app.slint:693 +#: ui/app.slint:700 msgid "OAuth app keys saved." msgstr "" -#: ui/app.slint:694 +#: ui/app.slint:701 msgid "{} OAuth settings saved." msgstr "" -#: ui/app.slint:695 +#: ui/app.slint:702 msgid "OAuth settings failed: {}" msgstr "" -#: ui/app.slint:696 +#: ui/app.slint:703 msgid "Mail refresh failed: {}" msgstr "" -#: ui/app.slint:697 +#: ui/app.slint:704 msgid "Mail filter failed: {}" msgstr "" -#: ui/app.slint:698 +#: ui/app.slint:705 msgid "Mail pagination failed: {}" msgstr "" -#: ui/app.slint:699 +#: ui/app.slint:706 msgid "Could not mark message as read: {}" msgstr "" -#: ui/app.slint:700 ui/views/mail-reading-pane.slint:198 -#: ui/app.slint:700 ui/views/mail-reading-pane.slint:198 ui/views/mail-reading-pane.slint:1355 +#: ui/app.slint:707 ui/views/mail-reading-pane.slint:199 +#: ui/app.slint:707 ui/views/mail-reading-pane.slint:199 ui/views/mail-reading-pane.slint:1360 msgid "Loading message…" msgstr "" -#: ui/app.slint:764 ui/components/workspace-navigation.slint:787 -#: ui/app.slint:764 ui/components/workspace-navigation.slint:787 ui/tray.slint:13 ui/tray.slint:14 -#: ui/app.slint:764 ui/components/workspace-navigation.slint:787 ui/tray.slint:13 ui/tray.slint:14 +#: ui/app.slint:771 ui/components/workspace-navigation.slint:787 +#: ui/app.slint:771 ui/components/workspace-navigation.slint:787 ui/tray.slint:13 ui/tray.slint:14 +#: ui/app.slint:771 ui/components/workspace-navigation.slint:787 ui/tray.slint:13 ui/tray.slint:14 msgid "Flectar Mail" msgstr "" -#: ui/app.slint:1409 ui/app.slint:1422 +#: ui/app.slint:1416 ui/app.slint:1429 msgid "Global Labels (local only)" msgstr "" -#: ui/app.slint:2336 +#: ui/app.slint:2351 msgid "Empty Trash?" msgstr "" -#: ui/app.slint:2336 ui/views/files-view.slint:578 +#: ui/app.slint:2351 ui/views/files-view.slint:578 msgid "Delete permanently?" msgstr "" -#: ui/app.slint:2340 +#: ui/app.slint:2355 msgid "Permanently delete all messages in Trash across every connected account?" msgstr "" -#: ui/app.slint:2341 +#: ui/app.slint:2356 msgid "Permanently delete all messages in this account’s Trash?" msgstr "" -#: ui/app.slint:2343 +#: ui/app.slint:2358 msgid "Permanently delete the selected conversations from Trash?" msgstr "" -#: ui/app.slint:2344 +#: ui/app.slint:2359 msgid "Permanently delete this conversation from Trash?" msgstr "" -#: ui/app.slint:2345 ui/components/calendar.slint:947 -#: ui/app.slint:2345 ui/components/calendar.slint:947 +#: ui/app.slint:2360 ui/components/calendar.slint:947 +#: ui/app.slint:2360 ui/components/calendar.slint:947 msgid "This action cannot be undone." msgstr "" -#: ui/app.slint:2346 +#: ui/app.slint:2361 msgid "Empty Trash" msgstr "" -#: ui/app.slint:2346 ui/views/files-view.slint:660 -#: ui/app.slint:2346 ui/views/files-view.slint:660 +#: ui/app.slint:2361 ui/views/files-view.slint:660 +#: ui/app.slint:2361 ui/views/files-view.slint:660 msgid "Delete permanently" msgstr "" -#: ui/app.slint:2531 +#: ui/app.slint:2546 msgid "Mailbox startup failed" msgstr "" -#: ui/app.slint:2537 +#: ui/app.slint:2552 msgid "Flectar Mail could not open local storage" msgstr "" -#: ui/app.slint:2550 +#: ui/app.slint:2565 msgid "Diagnostic ID: {}" msgstr "" -#: ui/app.slint:2553 +#: ui/app.slint:2568 msgid "Diagnostic ID {}" msgstr "" -#: ui/app.slint:2558 +#: ui/app.slint:2573 msgid "Retry" msgstr "" -#: ui/app.slint:2566 ui/components/copyable-diagnostic.slint:43 +#: ui/app.slint:2581 ui/components/copyable-diagnostic.slint:43 msgid "Copy diagnostics" msgstr "" @@ -2235,7 +2251,7 @@ msgstr "" #: ui/components/account-calendars.slint:264 #: ui/components/account-calendars.slint:264 -#: ui/components/account-calendars.slint:264 ui/dialogs/settings-dialog.slint:3210 +#: ui/components/account-calendars.slint:264 ui/dialogs/settings-dialog.slint:3258 msgid "Add CalDAV calendar" msgstr "" @@ -2360,9 +2376,9 @@ msgid "" msgstr "" #: ui/components/account-mail-preferences.slint:171 -#: ui/components/account-mail-preferences.slint:171 ui/dialogs/settings-dialog.slint:3380 -#: ui/components/account-mail-preferences.slint:171 ui/dialogs/settings-dialog.slint:3380 ui/views/onboarding-view.slint:269 -#: ui/components/account-mail-preferences.slint:171 ui/dialogs/settings-dialog.slint:3380 ui/views/onboarding-view.slint:269 +#: ui/components/account-mail-preferences.slint:171 ui/dialogs/settings-dialog.slint:3428 +#: ui/components/account-mail-preferences.slint:171 ui/dialogs/settings-dialog.slint:3428 ui/views/onboarding-view.slint:269 +#: ui/components/account-mail-preferences.slint:171 ui/dialogs/settings-dialog.slint:3428 ui/views/onboarding-view.slint:269 msgid "Email address" msgstr "" @@ -2398,14 +2414,15 @@ msgstr "" #: ui/components/account-mail-preferences.slint:178 #: ui/components/account-mail-preferences.slint:178 #: ui/components/account-mail-preferences.slint:178 +#: ui/components/account-mail-preferences.slint:178 #: ui/components/account-mail-preferences.slint:178 ui/dialogs/folder-dialog.slint:128 #: ui/components/account-mail-preferences.slint:178 ui/dialogs/folder-dialog.slint:128 ui/dialogs/oauth-setup-dialog.slint:126 -#: ui/components/account-mail-preferences.slint:178 ui/dialogs/folder-dialog.slint:128 ui/dialogs/oauth-setup-dialog.slint:126 ui/dialogs/settings-dialog.slint:2423 -#: ui/components/account-mail-preferences.slint:178 ui/dialogs/folder-dialog.slint:128 ui/dialogs/oauth-setup-dialog.slint:126 ui/dialogs/settings-dialog.slint:2423 ui/dialogs/settings-dialog.slint:3456 -#: ui/components/account-mail-preferences.slint:178 ui/dialogs/folder-dialog.slint:128 ui/dialogs/oauth-setup-dialog.slint:126 ui/dialogs/settings-dialog.slint:2423 ui/dialogs/settings-dialog.slint:3456 -#: ui/components/account-mail-preferences.slint:178 ui/dialogs/folder-dialog.slint:128 ui/dialogs/oauth-setup-dialog.slint:126 ui/dialogs/settings-dialog.slint:2423 ui/dialogs/settings-dialog.slint:3456 ui/views/contacts-view.slint:604 -#: ui/components/account-mail-preferences.slint:178 ui/dialogs/folder-dialog.slint:128 ui/dialogs/oauth-setup-dialog.slint:126 ui/dialogs/settings-dialog.slint:2423 ui/dialogs/settings-dialog.slint:3456 ui/views/contacts-view.slint:604 ui/views/files-view.slint:659 -#: ui/components/account-mail-preferences.slint:178 ui/dialogs/folder-dialog.slint:128 ui/dialogs/oauth-setup-dialog.slint:126 ui/dialogs/settings-dialog.slint:2423 ui/dialogs/settings-dialog.slint:3456 ui/views/contacts-view.slint:604 ui/views/files-view.slint:659 +#: ui/components/account-mail-preferences.slint:178 ui/dialogs/folder-dialog.slint:128 ui/dialogs/oauth-setup-dialog.slint:126 ui/dialogs/settings-dialog.slint:2471 +#: ui/components/account-mail-preferences.slint:178 ui/dialogs/folder-dialog.slint:128 ui/dialogs/oauth-setup-dialog.slint:126 ui/dialogs/settings-dialog.slint:2471 ui/dialogs/settings-dialog.slint:3504 +#: ui/components/account-mail-preferences.slint:178 ui/dialogs/folder-dialog.slint:128 ui/dialogs/oauth-setup-dialog.slint:126 ui/dialogs/settings-dialog.slint:2471 ui/dialogs/settings-dialog.slint:3504 +#: ui/components/account-mail-preferences.slint:178 ui/dialogs/folder-dialog.slint:128 ui/dialogs/oauth-setup-dialog.slint:126 ui/dialogs/settings-dialog.slint:2471 ui/dialogs/settings-dialog.slint:3504 ui/views/contacts-view.slint:604 +#: ui/components/account-mail-preferences.slint:178 ui/dialogs/folder-dialog.slint:128 ui/dialogs/oauth-setup-dialog.slint:126 ui/dialogs/settings-dialog.slint:2471 ui/dialogs/settings-dialog.slint:3504 ui/views/contacts-view.slint:604 ui/views/files-view.slint:659 +#: ui/components/account-mail-preferences.slint:178 ui/dialogs/folder-dialog.slint:128 ui/dialogs/oauth-setup-dialog.slint:126 ui/dialogs/settings-dialog.slint:2471 ui/dialogs/settings-dialog.slint:3504 ui/views/contacts-view.slint:604 ui/views/files-view.slint:659 msgid "Cancel" msgstr "" @@ -2593,12 +2610,12 @@ msgstr "" #: ui/components/account-mail-preferences.slint:265 ui/components/notice-toast.slint:90 #: ui/components/account-mail-preferences.slint:265 ui/components/notice-toast.slint:90 ui/dialogs/move-dialog.slint:211 #: ui/components/account-mail-preferences.slint:265 ui/components/notice-toast.slint:90 ui/dialogs/move-dialog.slint:211 -#: ui/components/account-mail-preferences.slint:265 ui/components/notice-toast.slint:90 ui/dialogs/move-dialog.slint:211 ui/dialogs/settings-dialog.slint:3356 -#: ui/components/account-mail-preferences.slint:265 ui/components/notice-toast.slint:90 ui/dialogs/move-dialog.slint:211 ui/dialogs/settings-dialog.slint:3356 -#: ui/components/account-mail-preferences.slint:265 ui/components/notice-toast.slint:90 ui/dialogs/move-dialog.slint:211 ui/dialogs/settings-dialog.slint:3356 ui/views/files-view.slint:505 -#: ui/components/account-mail-preferences.slint:265 ui/components/notice-toast.slint:90 ui/dialogs/move-dialog.slint:211 ui/dialogs/settings-dialog.slint:3356 ui/views/files-view.slint:505 ui/views/files-view.slint:695 -#: ui/components/account-mail-preferences.slint:265 ui/components/notice-toast.slint:90 ui/dialogs/move-dialog.slint:211 ui/dialogs/settings-dialog.slint:3356 ui/views/files-view.slint:505 ui/views/files-view.slint:695 ui/window-chrome.slint:201 -#: ui/components/account-mail-preferences.slint:265 ui/components/notice-toast.slint:90 ui/dialogs/move-dialog.slint:211 ui/dialogs/settings-dialog.slint:3356 ui/views/files-view.slint:505 ui/views/files-view.slint:695 ui/window-chrome.slint:201 +#: ui/components/account-mail-preferences.slint:265 ui/components/notice-toast.slint:90 ui/dialogs/move-dialog.slint:211 ui/dialogs/settings-dialog.slint:3404 +#: ui/components/account-mail-preferences.slint:265 ui/components/notice-toast.slint:90 ui/dialogs/move-dialog.slint:211 ui/dialogs/settings-dialog.slint:3404 +#: ui/components/account-mail-preferences.slint:265 ui/components/notice-toast.slint:90 ui/dialogs/move-dialog.slint:211 ui/dialogs/settings-dialog.slint:3404 ui/views/files-view.slint:505 +#: ui/components/account-mail-preferences.slint:265 ui/components/notice-toast.slint:90 ui/dialogs/move-dialog.slint:211 ui/dialogs/settings-dialog.slint:3404 ui/views/files-view.slint:505 ui/views/files-view.slint:695 +#: ui/components/account-mail-preferences.slint:265 ui/components/notice-toast.slint:90 ui/dialogs/move-dialog.slint:211 ui/dialogs/settings-dialog.slint:3404 ui/views/files-view.slint:505 ui/views/files-view.slint:695 ui/window-chrome.slint:201 +#: ui/components/account-mail-preferences.slint:265 ui/components/notice-toast.slint:90 ui/dialogs/move-dialog.slint:211 ui/dialogs/settings-dialog.slint:3404 ui/views/files-view.slint:505 ui/views/files-view.slint:695 ui/window-chrome.slint:201 msgid "Close" msgstr "" @@ -2645,7 +2662,7 @@ msgid "Show calendars" msgstr "" #: ui/components/calendar-agenda.slint:68 ui/components/theme-editor.slint:782 -#: ui/components/calendar-agenda.slint:68 ui/components/theme-editor.slint:782 ui/dialogs/settings-dialog.slint:1748 +#: ui/components/calendar-agenda.slint:68 ui/components/theme-editor.slint:782 ui/dialogs/settings-dialog.slint:1749 msgid "Reset" msgstr "" @@ -2984,24 +3001,24 @@ msgstr "" msgid "Keep" msgstr "" -#: ui/components/composer-fields.slint:13 ui/views/mail-reading-pane.slint:339 -#: ui/components/composer-fields.slint:13 ui/views/mail-reading-pane.slint:339 ui/views/mail-reading-pane.slint:383 -#: ui/components/composer-fields.slint:13 ui/views/mail-reading-pane.slint:339 ui/views/mail-reading-pane.slint:383 ui/views/mail-reading-pane.slint:777 -#: ui/components/composer-fields.slint:13 ui/views/mail-reading-pane.slint:339 ui/views/mail-reading-pane.slint:383 ui/views/mail-reading-pane.slint:777 +#: ui/components/composer-fields.slint:13 ui/views/mail-reading-pane.slint:340 +#: ui/components/composer-fields.slint:13 ui/views/mail-reading-pane.slint:340 ui/views/mail-reading-pane.slint:386 +#: ui/components/composer-fields.slint:13 ui/views/mail-reading-pane.slint:340 ui/views/mail-reading-pane.slint:386 ui/views/mail-reading-pane.slint:780 +#: ui/components/composer-fields.slint:13 ui/views/mail-reading-pane.slint:340 ui/views/mail-reading-pane.slint:386 ui/views/mail-reading-pane.slint:780 msgid "Reply" msgstr "" -#: ui/components/composer-fields.slint:14 ui/views/mail-reading-pane.slint:340 -#: ui/components/composer-fields.slint:14 ui/views/mail-reading-pane.slint:340 ui/views/mail-reading-pane.slint:384 -#: ui/components/composer-fields.slint:14 ui/views/mail-reading-pane.slint:340 ui/views/mail-reading-pane.slint:384 ui/views/mail-reading-pane.slint:786 -#: ui/components/composer-fields.slint:14 ui/views/mail-reading-pane.slint:340 ui/views/mail-reading-pane.slint:384 ui/views/mail-reading-pane.slint:786 +#: ui/components/composer-fields.slint:14 ui/views/mail-reading-pane.slint:341 +#: ui/components/composer-fields.slint:14 ui/views/mail-reading-pane.slint:341 ui/views/mail-reading-pane.slint:387 +#: ui/components/composer-fields.slint:14 ui/views/mail-reading-pane.slint:341 ui/views/mail-reading-pane.slint:387 ui/views/mail-reading-pane.slint:789 +#: ui/components/composer-fields.slint:14 ui/views/mail-reading-pane.slint:341 ui/views/mail-reading-pane.slint:387 ui/views/mail-reading-pane.slint:789 msgid "Reply all" msgstr "" -#: ui/components/composer-fields.slint:15 ui/views/mail-reading-pane.slint:341 -#: ui/components/composer-fields.slint:15 ui/views/mail-reading-pane.slint:341 ui/views/mail-reading-pane.slint:385 -#: ui/components/composer-fields.slint:15 ui/views/mail-reading-pane.slint:341 ui/views/mail-reading-pane.slint:385 ui/views/mail-reading-pane.slint:795 -#: ui/components/composer-fields.slint:15 ui/views/mail-reading-pane.slint:341 ui/views/mail-reading-pane.slint:385 ui/views/mail-reading-pane.slint:795 +#: ui/components/composer-fields.slint:15 ui/views/mail-reading-pane.slint:342 +#: ui/components/composer-fields.slint:15 ui/views/mail-reading-pane.slint:342 ui/views/mail-reading-pane.slint:388 +#: ui/components/composer-fields.slint:15 ui/views/mail-reading-pane.slint:342 ui/views/mail-reading-pane.slint:388 ui/views/mail-reading-pane.slint:798 +#: ui/components/composer-fields.slint:15 ui/views/mail-reading-pane.slint:342 ui/views/mail-reading-pane.slint:388 ui/views/mail-reading-pane.slint:798 msgid "Forward" msgstr "" @@ -3009,9 +3026,9 @@ msgstr "" msgid "Edit draft" msgstr "" -#: ui/components/composer-fields.slint:17 ui/views/mail-reading-pane.slint:342 -#: ui/components/composer-fields.slint:17 ui/views/mail-reading-pane.slint:342 ui/views/mail-reading-pane.slint:386 -#: ui/components/composer-fields.slint:17 ui/views/mail-reading-pane.slint:342 ui/views/mail-reading-pane.slint:386 +#: ui/components/composer-fields.slint:17 ui/views/mail-reading-pane.slint:343 +#: ui/components/composer-fields.slint:17 ui/views/mail-reading-pane.slint:343 ui/views/mail-reading-pane.slint:389 +#: ui/components/composer-fields.slint:17 ui/views/mail-reading-pane.slint:343 ui/views/mail-reading-pane.slint:389 msgid "Edit as new" msgstr "" @@ -3066,8 +3083,8 @@ msgstr "" msgid "On" msgstr "" -#: ui/components/controls.slint:108 ui/dialogs/settings-dialog.slint:673 -#: ui/components/controls.slint:108 ui/dialogs/settings-dialog.slint:673 +#: ui/components/controls.slint:108 ui/dialogs/settings-dialog.slint:674 +#: ui/components/controls.slint:108 ui/dialogs/settings-dialog.slint:674 msgid "Off" msgstr "" @@ -3586,8 +3603,8 @@ msgid "Expand folder" msgstr "" #: ui/components/sidebar-controls.slint:409 -#: ui/components/sidebar-controls.slint:409 ui/dialogs/settings-dialog.slint:2690 -#: ui/components/sidebar-controls.slint:409 ui/dialogs/settings-dialog.slint:2690 +#: ui/components/sidebar-controls.slint:409 ui/dialogs/settings-dialog.slint:2738 +#: ui/components/sidebar-controls.slint:409 ui/dialogs/settings-dialog.slint:2738 msgid "Check for new mail" msgstr "" @@ -3599,7 +3616,7 @@ msgstr "" msgid "New version available" msgstr "" -#: ui/components/sidebar.slint:80 ui/dialogs/settings-dialog.slint:2877 +#: ui/components/sidebar.slint:80 ui/dialogs/settings-dialog.slint:2925 msgid "Version {}" msgstr "" @@ -3652,7 +3669,7 @@ msgstr "" msgid "Important" msgstr "" -#: ui/components/sidebar.slint:475 ui/dialogs/settings-dialog.slint:275 +#: ui/components/sidebar.slint:475 ui/dialogs/settings-dialog.slint:276 msgid "Other" msgstr "" @@ -3712,9 +3729,9 @@ msgstr "" #: ui/components/tab-overview.slint:69 #: ui/components/tab-overview.slint:69 #: ui/components/tab-overview.slint:69 -#: ui/components/tab-overview.slint:69 ui/dialogs/settings-dialog.slint:1773 -#: ui/components/tab-overview.slint:69 ui/dialogs/settings-dialog.slint:1773 ui/dialogs/settings-dialog.slint:3072 -#: ui/components/tab-overview.slint:69 ui/dialogs/settings-dialog.slint:1773 ui/dialogs/settings-dialog.slint:3072 ui/views/contacts-view.slint:249 +#: ui/components/tab-overview.slint:69 ui/dialogs/settings-dialog.slint:1774 +#: ui/components/tab-overview.slint:69 ui/dialogs/settings-dialog.slint:1774 ui/dialogs/settings-dialog.slint:3120 +#: ui/components/tab-overview.slint:69 ui/dialogs/settings-dialog.slint:1774 ui/dialogs/settings-dialog.slint:3120 ui/views/contacts-view.slint:249 msgid "Contacts" msgstr "" @@ -3729,7 +3746,7 @@ msgstr "" #: ui/components/tab-overview.slint:71 #: ui/components/tab-overview.slint:71 #: ui/components/tab-overview.slint:71 -#: ui/components/tab-overview.slint:71 ui/dialogs/settings-dialog.slint:2686 +#: ui/components/tab-overview.slint:71 ui/dialogs/settings-dialog.slint:2734 msgid "Mail" msgstr "" @@ -3742,7 +3759,7 @@ msgstr "" #: ui/components/tab-overview.slint:198 ui/components/tab-overview.slint:222 #: ui/components/tab-overview.slint:198 ui/components/tab-overview.slint:222 -#: ui/components/tab-overview.slint:198 ui/components/tab-overview.slint:222 ui/dialogs/settings-dialog.slint:2712 +#: ui/components/tab-overview.slint:198 ui/components/tab-overview.slint:222 ui/dialogs/settings-dialog.slint:2760 msgid "Tabs" msgstr "" @@ -3918,7 +3935,7 @@ msgstr "" #: ui/components/theme-editor.slint:785 #: ui/components/theme-editor.slint:785 ui/dialogs/folder-dialog.slint:135 -#: ui/components/theme-editor.slint:785 ui/dialogs/folder-dialog.slint:135 ui/views/mail-reading-pane.slint:2103 +#: ui/components/theme-editor.slint:785 ui/dialogs/folder-dialog.slint:135 ui/views/mail-reading-pane.slint:2108 msgid "Save" msgstr "" @@ -3938,7 +3955,7 @@ msgstr "" msgid "Close tabs to the right" msgstr "" -#: ui/components/zoom-controls.slint:20 ui/dialogs/settings-dialog.slint:2708 +#: ui/components/zoom-controls.slint:20 ui/dialogs/settings-dialog.slint:2756 msgid "Zoom out" msgstr "" @@ -3950,7 +3967,7 @@ msgstr "" msgid "Zoom percentage" msgstr "" -#: ui/components/zoom-controls.slint:39 ui/dialogs/settings-dialog.slint:2707 +#: ui/components/zoom-controls.slint:39 ui/dialogs/settings-dialog.slint:2755 msgid "Zoom in" msgstr "" @@ -3959,8 +3976,8 @@ msgid "Fit to width" msgstr "" #: ui/dialogs/attachment-preview-dialog.slint:39 -#: ui/dialogs/attachment-preview-dialog.slint:39 ui/dialogs/settings-dialog.slint:2971 -#: ui/dialogs/attachment-preview-dialog.slint:39 ui/dialogs/settings-dialog.slint:2971 ui/views/mail-reading-pane.slint:1844 +#: ui/dialogs/attachment-preview-dialog.slint:39 ui/dialogs/settings-dialog.slint:3019 +#: ui/dialogs/attachment-preview-dialog.slint:39 ui/dialogs/settings-dialog.slint:3019 ui/views/mail-reading-pane.slint:1849 msgid "Download" msgstr "" @@ -3968,6 +3985,28 @@ msgstr "" msgid "Loading preview…" msgstr "" +#: ui/dialogs/block-sender-dialog.slint:13 +msgid "Block {}?" +msgstr "" + +#: ui/dialogs/block-sender-dialog.slint:97 +msgid "Future mail from {} will go to Spam." +msgstr "" + +#: ui/dialogs/block-sender-dialog.slint:104 +msgid "Their message in your inbox moves there now." +msgid_plural "Their {n} messages in your inbox move there now." +msgstr[0] "" +msgstr[1] "" + +#: ui/dialogs/block-sender-dialog.slint:129 +msgid "Blocking…" +msgstr "" + +#: ui/dialogs/block-sender-dialog.slint:129 +msgid "Block" +msgstr "" + #: ui/dialogs/calendar-details-dialog.slint:82 msgid "Close calendar details" msgstr "" @@ -4156,7 +4195,7 @@ msgstr "" msgid "Inside “{}”" msgstr "" -#: ui/dialogs/folder-dialog.slint:133 ui/views/mail-reading-pane.slint:2052 +#: ui/dialogs/folder-dialog.slint:133 ui/views/mail-reading-pane.slint:2057 msgid "Create label" msgstr "" @@ -4288,11 +4327,11 @@ msgstr "" msgid "This account syncs with {} instead of downloading mail with POP3." msgstr "" -#: ui/dialogs/import-dialog.slint:156 ui/dialogs/settings-dialog.slint:2304 +#: ui/dialogs/import-dialog.slint:156 ui/dialogs/settings-dialog.slint:2352 msgid "Mail is removed from the server once it's on this device." msgstr "" -#: ui/dialogs/import-dialog.slint:157 ui/dialogs/settings-dialog.slint:2303 +#: ui/dialogs/import-dialog.slint:157 ui/dialogs/settings-dialog.slint:2351 msgid "Mail you delete here is removed from the server too." msgstr "" @@ -4462,8 +4501,8 @@ msgstr "" msgid "Continue in background" msgstr "" -#: ui/dialogs/import-dialog.slint:338 ui/dialogs/settings-dialog.slint:1707 -#: ui/dialogs/import-dialog.slint:338 ui/dialogs/settings-dialog.slint:1707 +#: ui/dialogs/import-dialog.slint:338 ui/dialogs/settings-dialog.slint:1708 +#: ui/dialogs/import-dialog.slint:338 ui/dialogs/settings-dialog.slint:1708 msgid "Choose folder…" msgstr "" @@ -4481,7 +4520,7 @@ msgid_plural "Import {n} accounts" msgstr[0] "" msgstr[1] "" -#: ui/dialogs/import-dialog.slint:375 ui/dialogs/settings-dialog.slint:2510 +#: ui/dialogs/import-dialog.slint:375 ui/dialogs/settings-dialog.slint:2558 msgid "Import" msgstr "" @@ -4834,9 +4873,9 @@ msgstr "" #: ui/dialogs/rendering-info-dialog.slint:29 #: ui/dialogs/rendering-info-dialog.slint:29 -#: ui/dialogs/rendering-info-dialog.slint:29 ui/views/mail-reading-pane.slint:348 -#: ui/dialogs/rendering-info-dialog.slint:29 ui/views/mail-reading-pane.slint:348 ui/views/mail-reading-pane.slint:392 -#: ui/dialogs/rendering-info-dialog.slint:29 ui/views/mail-reading-pane.slint:348 ui/views/mail-reading-pane.slint:392 ui/views/mail-reading-pane.slint:1971 +#: ui/dialogs/rendering-info-dialog.slint:29 ui/views/mail-reading-pane.slint:349 +#: ui/dialogs/rendering-info-dialog.slint:29 ui/views/mail-reading-pane.slint:349 ui/views/mail-reading-pane.slint:395 +#: ui/dialogs/rendering-info-dialog.slint:29 ui/views/mail-reading-pane.slint:349 ui/views/mail-reading-pane.slint:395 ui/views/mail-reading-pane.slint:1976 msgid "About email rendering" msgstr "" @@ -4861,296 +4900,296 @@ msgstr "" msgid "Report issue" msgstr "" -#: ui/dialogs/settings-dialog.slint:73 ui/dialogs/settings-dialog.slint:2766 +#: ui/dialogs/settings-dialog.slint:74 ui/dialogs/settings-dialog.slint:2814 msgid "Sync" msgstr "" -#: ui/dialogs/settings-dialog.slint:101 ui/dialogs/settings-dialog.slint:102 +#: ui/dialogs/settings-dialog.slint:102 ui/dialogs/settings-dialog.slint:103 msgid "Search settings" msgstr "" -#: ui/dialogs/settings-dialog.slint:118 +#: ui/dialogs/settings-dialog.slint:119 msgid "Clear settings search" msgstr "" -#: ui/dialogs/settings-dialog.slint:186 +#: ui/dialogs/settings-dialog.slint:187 msgid "Local storage usage" msgstr "" -#: ui/dialogs/settings-dialog.slint:193 +#: ui/dialogs/settings-dialog.slint:194 msgid "Local storage" msgstr "" -#: ui/dialogs/settings-dialog.slint:211 +#: ui/dialogs/settings-dialog.slint:212 msgid "Calculating…" msgstr "" -#: ui/dialogs/settings-dialog.slint:211 ui/views/files-view.slint:313 +#: ui/dialogs/settings-dialog.slint:212 ui/views/files-view.slint:313 msgid "Refresh" msgstr "" -#: ui/dialogs/settings-dialog.slint:219 +#: ui/dialogs/settings-dialog.slint:220 msgid "Calculating local storage…" msgstr "" -#: ui/dialogs/settings-dialog.slint:220 +#: ui/dialogs/settings-dialog.slint:221 msgid "{} used by Flectar Mail" msgstr "" -#: ui/dialogs/settings-dialog.slint:221 +#: ui/dialogs/settings-dialog.slint:222 msgid "Storage usage could not be calculated. Try again." msgstr "" -#: ui/dialogs/settings-dialog.slint:222 +#: ui/dialogs/settings-dialog.slint:223 msgid "Open Storage to calculate local usage." msgstr "" -#: ui/dialogs/settings-dialog.slint:272 ui/views/mail-reading-pane.slint:1296 -#: ui/dialogs/settings-dialog.slint:272 ui/views/mail-reading-pane.slint:1296 +#: ui/dialogs/settings-dialog.slint:273 ui/views/mail-reading-pane.slint:1301 +#: ui/dialogs/settings-dialog.slint:273 ui/views/mail-reading-pane.slint:1301 msgid "Attachments" msgstr "" -#: ui/dialogs/settings-dialog.slint:274 +#: ui/dialogs/settings-dialog.slint:275 msgid "Databases" msgstr "" -#: ui/dialogs/settings-dialog.slint:286 +#: ui/dialogs/settings-dialog.slint:287 msgid "Downloaded messages" msgstr "" -#: ui/dialogs/settings-dialog.slint:287 +#: ui/dialogs/settings-dialog.slint:288 msgid "Downloaded and draft attachments" msgstr "" -#: ui/dialogs/settings-dialog.slint:288 +#: ui/dialogs/settings-dialog.slint:289 msgid "Offline file copies" msgstr "" -#: ui/dialogs/settings-dialog.slint:289 +#: ui/dialogs/settings-dialog.slint:290 msgid "Mail, calendar, contacts, and indexes" msgstr "" -#: ui/dialogs/settings-dialog.slint:290 +#: ui/dialogs/settings-dialog.slint:291 msgid "Settings and temporary data" msgstr "" -#: ui/dialogs/settings-dialog.slint:314 +#: ui/dialogs/settings-dialog.slint:315 msgid "Some files could not be measured, so this total may be incomplete." msgstr "" -#: ui/dialogs/settings-dialog.slint:315 +#: ui/dialogs/settings-dialog.slint:316 msgid "Storage usage could not be refreshed. Try again." msgstr "" -#: ui/dialogs/settings-dialog.slint:398 ui/dialogs/settings-dialog.slint:406 +#: ui/dialogs/settings-dialog.slint:399 ui/dialogs/settings-dialog.slint:407 msgid "Paid" msgstr "" -#: ui/dialogs/settings-dialog.slint:399 ui/dialogs/settings-dialog.slint:407 +#: ui/dialogs/settings-dialog.slint:400 ui/dialogs/settings-dialog.slint:408 msgid "Coming soon" msgstr "" -#: ui/dialogs/settings-dialog.slint:434 +#: ui/dialogs/settings-dialog.slint:435 msgid "Learn more" msgstr "" -#: ui/dialogs/settings-dialog.slint:668 +#: ui/dialogs/settings-dialog.slint:669 msgid "Every minute" msgstr "" -#: ui/dialogs/settings-dialog.slint:669 +#: ui/dialogs/settings-dialog.slint:670 msgid "Every 5 minutes" msgstr "" -#: ui/dialogs/settings-dialog.slint:670 +#: ui/dialogs/settings-dialog.slint:671 msgid "Every 15 minutes" msgstr "" -#: ui/dialogs/settings-dialog.slint:674 +#: ui/dialogs/settings-dialog.slint:675 msgid "5 seconds" msgstr "" -#: ui/dialogs/settings-dialog.slint:675 +#: ui/dialogs/settings-dialog.slint:676 msgid "10 seconds" msgstr "" -#: ui/dialogs/settings-dialog.slint:676 +#: ui/dialogs/settings-dialog.slint:677 msgid "20 seconds" msgstr "" -#: ui/dialogs/settings-dialog.slint:677 +#: ui/dialogs/settings-dialog.slint:678 msgid "30 seconds" msgstr "" -#: ui/dialogs/settings-dialog.slint:685 +#: ui/dialogs/settings-dialog.slint:686 msgid "Important mail" msgstr "" -#: ui/dialogs/settings-dialog.slint:686 +#: ui/dialogs/settings-dialog.slint:687 msgid "All new mail" msgstr "" -#: ui/dialogs/settings-dialog.slint:689 +#: ui/dialogs/settings-dialog.slint:690 msgid "1 month" msgstr "" -#: ui/dialogs/settings-dialog.slint:690 +#: ui/dialogs/settings-dialog.slint:691 msgid "3 months" msgstr "" -#: ui/dialogs/settings-dialog.slint:691 +#: ui/dialogs/settings-dialog.slint:692 msgid "6 months · Recommended" msgstr "" -#: ui/dialogs/settings-dialog.slint:692 +#: ui/dialogs/settings-dialog.slint:693 msgid "1 year" msgstr "" -#: ui/dialogs/settings-dialog.slint:693 ui/views/mail-list-pane.slint:721 +#: ui/dialogs/settings-dialog.slint:694 ui/views/mail-list-pane.slint:721 msgid "All mail" msgstr "" -#: ui/dialogs/settings-dialog.slint:696 +#: ui/dialogs/settings-dialog.slint:697 msgid "Always" msgstr "" -#: ui/dialogs/settings-dialog.slint:697 +#: ui/dialogs/settings-dialog.slint:698 msgid "Until deleted here" msgstr "" -#: ui/dialogs/settings-dialog.slint:698 +#: ui/dialogs/settings-dialog.slint:699 msgid "7 days" msgstr "" -#: ui/dialogs/settings-dialog.slint:699 +#: ui/dialogs/settings-dialog.slint:700 msgid "14 days" msgstr "" -#: ui/dialogs/settings-dialog.slint:700 +#: ui/dialogs/settings-dialog.slint:701 msgid "30 days" msgstr "" -#: ui/dialogs/settings-dialog.slint:701 +#: ui/dialogs/settings-dialog.slint:702 msgid "Until downloaded" msgstr "" -#: ui/dialogs/settings-dialog.slint:704 +#: ui/dialogs/settings-dialog.slint:705 msgid "System language" msgstr "" -#: ui/dialogs/settings-dialog.slint:705 +#: ui/dialogs/settings-dialog.slint:706 msgid "English" msgstr "" -#: ui/dialogs/settings-dialog.slint:706 +#: ui/dialogs/settings-dialog.slint:707 msgid "Spanish" msgstr "" -#: ui/dialogs/settings-dialog.slint:707 +#: ui/dialogs/settings-dialog.slint:708 msgid "Turkish" msgstr "" -#: ui/dialogs/settings-dialog.slint:708 +#: ui/dialogs/settings-dialog.slint:709 msgid "Simplified Chinese" msgstr "" -#: ui/dialogs/settings-dialog.slint:709 +#: ui/dialogs/settings-dialog.slint:710 msgid "Russian" msgstr "" -#: ui/dialogs/settings-dialog.slint:712 +#: ui/dialogs/settings-dialog.slint:713 msgid "Automatic" msgstr "" -#: ui/dialogs/settings-dialog.slint:713 +#: ui/dialogs/settings-dialog.slint:714 msgid "12-hour" msgstr "" -#: ui/dialogs/settings-dialog.slint:714 +#: ui/dialogs/settings-dialog.slint:715 msgid "24-hour" msgstr "" -#: ui/dialogs/settings-dialog.slint:727 +#: ui/dialogs/settings-dialog.slint:728 msgid "Notifications from Flectar Mail are turned off in your system settings." msgstr "" -#: ui/dialogs/settings-dialog.slint:729 +#: ui/dialogs/settings-dialog.slint:730 msgid "" "macOS doesn't allow notifications from Flectar Mail where it is now. Move it " "to the Applications folder, then open it again." msgstr "" -#: ui/dialogs/settings-dialog.slint:730 +#: ui/dialogs/settings-dialog.slint:731 msgid "" "This system has no notification service running, so notifications can't be " "shown." msgstr "" -#: ui/dialogs/settings-dialog.slint:736 +#: ui/dialogs/settings-dialog.slint:737 msgid "Desktop notifications" msgstr "" -#: ui/dialogs/settings-dialog.slint:736 +#: ui/dialogs/settings-dialog.slint:737 msgid "New mail notifications" msgstr "" -#: ui/dialogs/settings-dialog.slint:741 +#: ui/dialogs/settings-dialog.slint:742 msgid "Flectar Mail {} is out." msgstr "" -#: ui/dialogs/settings-dialog.slint:742 +#: ui/dialogs/settings-dialog.slint:743 msgid "Checking for a new version…" msgstr "" -#: ui/dialogs/settings-dialog.slint:743 +#: ui/dialogs/settings-dialog.slint:744 msgid "GitHub couldn't be reached. Flectar Mail tries again later." msgstr "" -#: ui/dialogs/settings-dialog.slint:744 +#: ui/dialogs/settings-dialog.slint:745 msgid "Flectar Mail is up to date." msgstr "" -#: ui/dialogs/settings-dialog.slint:745 +#: ui/dialogs/settings-dialog.slint:746 msgid "Flectar Mail checks soon after it starts." msgstr "" -#: ui/dialogs/settings-dialog.slint:750 +#: ui/dialogs/settings-dialog.slint:751 msgid "" "Android restricts Flectar Mail in the background, so new mail shows up only " "while the app is open." msgstr "" -#: ui/dialogs/settings-dialog.slint:752 +#: ui/dialogs/settings-dialog.slint:753 msgid "" "Battery Saver pauses checking for new mail while Flectar Mail is in the " "background." msgstr "" -#: ui/dialogs/settings-dialog.slint:753 +#: ui/dialogs/settings-dialog.slint:754 msgid "" "Flectar Mail checks for new mail about every 15 minutes in the background, " "and less often while your phone is idle." msgstr "" -#: ui/dialogs/settings-dialog.slint:755 +#: ui/dialogs/settings-dialog.slint:756 msgid "" "Background App Refresh is off for Flectar Mail, so new mail shows up only " "while the app is open." msgstr "" -#: ui/dialogs/settings-dialog.slint:757 +#: ui/dialogs/settings-dialog.slint:758 msgid "" "Low Power Mode pauses checking for new mail while Flectar Mail is in the " "background." msgstr "" -#: ui/dialogs/settings-dialog.slint:758 +#: ui/dialogs/settings-dialog.slint:759 msgid "" "iOS decides how often Flectar Mail checks for new mail in the background, so " "notifications can arrive late." msgstr "" -#: ui/dialogs/settings-dialog.slint:786 +#: ui/dialogs/settings-dialog.slint:787 msgid "" "general theme appearance palette app icon dock taskbar launcher language " "time clock 12-hour 24-hour workspace layout window frameless title bar " @@ -5159,830 +5198,852 @@ msgid "" "tabs conversations threads" msgstr "" -#: ui/dialogs/settings-dialog.slint:786 +#: ui/dialogs/settings-dialog.slint:787 msgid "sending undo send delay take back" msgstr "" -#: ui/dialogs/settings-dialog.slint:787 +#: ui/dialogs/settings-dialog.slint:788 msgid "spelling spell check dictionary misspelled words" msgstr "" -#: ui/dialogs/settings-dialog.slint:789 +#: ui/dialogs/settings-dialog.slint:790 msgid "" "accounts profiles personal work colors providers gmail outlook imap pop3 " "jmap caldav carddav mail history server oauth security signatures" msgstr "" -#: ui/dialogs/settings-dialog.slint:791 +#: ui/dialogs/settings-dialog.slint:792 msgid "" "contacts people suggestions autocomplete recipients senders address book " "privacy clear" msgstr "" -#: ui/dialogs/settings-dialog.slint:793 +#: ui/dialogs/settings-dialog.slint:794 msgid "" "notifications alerts sounds desktop new mail unread count badge app icon " "dock taskbar background app refresh low power mode battery saver" msgstr "" -#: ui/dialogs/settings-dialog.slint:795 +#: ui/dialogs/settings-dialog.slint:796 msgid "" "shortcuts keyboard keys compose search archive spam junk trash delete " "navigation messages reading find zoom caret tabs" msgstr "" -#: ui/dialogs/settings-dialog.slint:797 +#: ui/dialogs/settings-dialog.slint:798 msgid "" "storage data usage mail attachments files databases backup snapshot import " "export delete" msgstr "" -#: ui/dialogs/settings-dialog.slint:799 +#: ui/dialogs/settings-dialog.slint:800 msgid "" "services flectar base account sign in subscription paid sync devices " "business email custom domain mailbox" msgstr "" -#: ui/dialogs/settings-dialog.slint:800 +#: ui/dialogs/settings-dialog.slint:801 msgid "about version credits contributors license flectar" msgstr "" -#: ui/dialogs/settings-dialog.slint:800 ui/dialogs/settings-dialog.slint:3032 -#: ui/dialogs/settings-dialog.slint:800 ui/dialogs/settings-dialog.slint:3032 +#: ui/dialogs/settings-dialog.slint:801 ui/dialogs/settings-dialog.slint:3080 +#: ui/dialogs/settings-dialog.slint:801 ui/dialogs/settings-dialog.slint:3080 msgid "Privacy policy" msgstr "" -#: ui/dialogs/settings-dialog.slint:801 +#: ui/dialogs/settings-dialog.slint:802 msgid "updates new version release download check" msgstr "" -#: ui/dialogs/settings-dialog.slint:1098 ui/dialogs/settings-dialog.slint:3138 +#: ui/dialogs/settings-dialog.slint:1099 ui/dialogs/settings-dialog.slint:3186 msgid "SETTINGS" msgstr "" -#: ui/dialogs/settings-dialog.slint:1101 ui/dialogs/settings-dialog.slint:3140 +#: ui/dialogs/settings-dialog.slint:1102 ui/dialogs/settings-dialog.slint:3188 msgid "No settings found" msgstr "" -#: ui/dialogs/settings-dialog.slint:1102 ui/dialogs/settings-dialog.slint:1132 -#: ui/dialogs/settings-dialog.slint:1102 ui/dialogs/settings-dialog.slint:1132 ui/dialogs/settings-dialog.slint:3070 -#: ui/dialogs/settings-dialog.slint:1102 ui/dialogs/settings-dialog.slint:1132 ui/dialogs/settings-dialog.slint:3070 +#: ui/dialogs/settings-dialog.slint:1103 ui/dialogs/settings-dialog.slint:1133 +#: ui/dialogs/settings-dialog.slint:1103 ui/dialogs/settings-dialog.slint:1133 ui/dialogs/settings-dialog.slint:3118 +#: ui/dialogs/settings-dialog.slint:1103 ui/dialogs/settings-dialog.slint:1133 ui/dialogs/settings-dialog.slint:3118 msgid "General" msgstr "" -#: ui/dialogs/settings-dialog.slint:1103 ui/dialogs/settings-dialog.slint:1923 -#: ui/dialogs/settings-dialog.slint:1103 ui/dialogs/settings-dialog.slint:1923 ui/dialogs/settings-dialog.slint:3142 -#: ui/dialogs/settings-dialog.slint:1103 ui/dialogs/settings-dialog.slint:1923 ui/dialogs/settings-dialog.slint:3142 ui/dialogs/settings-dialog.slint:3587 +#: ui/dialogs/settings-dialog.slint:1104 ui/dialogs/settings-dialog.slint:1971 +#: ui/dialogs/settings-dialog.slint:1104 ui/dialogs/settings-dialog.slint:1971 ui/dialogs/settings-dialog.slint:3190 +#: ui/dialogs/settings-dialog.slint:1104 ui/dialogs/settings-dialog.slint:1971 ui/dialogs/settings-dialog.slint:3190 ui/dialogs/settings-dialog.slint:3635 msgid "Accounts" msgstr "" -#: ui/dialogs/settings-dialog.slint:1105 ui/dialogs/settings-dialog.slint:2534 -#: ui/dialogs/settings-dialog.slint:1105 ui/dialogs/settings-dialog.slint:2534 ui/dialogs/settings-dialog.slint:3144 +#: ui/dialogs/settings-dialog.slint:1106 ui/dialogs/settings-dialog.slint:2582 +#: ui/dialogs/settings-dialog.slint:1106 ui/dialogs/settings-dialog.slint:2582 ui/dialogs/settings-dialog.slint:3192 msgid "Notifications" msgstr "" -#: ui/dialogs/settings-dialog.slint:1106 ui/dialogs/settings-dialog.slint:3074 -#: ui/dialogs/settings-dialog.slint:1106 ui/dialogs/settings-dialog.slint:3074 +#: ui/dialogs/settings-dialog.slint:1107 ui/dialogs/settings-dialog.slint:3122 +#: ui/dialogs/settings-dialog.slint:1107 ui/dialogs/settings-dialog.slint:3122 msgid "Shortcuts" msgstr "" -#: ui/dialogs/settings-dialog.slint:1107 ui/dialogs/settings-dialog.slint:2442 -#: ui/dialogs/settings-dialog.slint:1107 ui/dialogs/settings-dialog.slint:2442 ui/dialogs/settings-dialog.slint:3146 +#: ui/dialogs/settings-dialog.slint:1108 ui/dialogs/settings-dialog.slint:2490 +#: ui/dialogs/settings-dialog.slint:1108 ui/dialogs/settings-dialog.slint:2490 ui/dialogs/settings-dialog.slint:3194 msgid "Storage" msgstr "" -#: ui/dialogs/settings-dialog.slint:1108 ui/dialogs/settings-dialog.slint:2741 -#: ui/dialogs/settings-dialog.slint:1108 ui/dialogs/settings-dialog.slint:2741 ui/dialogs/settings-dialog.slint:3147 +#: ui/dialogs/settings-dialog.slint:1109 ui/dialogs/settings-dialog.slint:2789 +#: ui/dialogs/settings-dialog.slint:1109 ui/dialogs/settings-dialog.slint:2789 ui/dialogs/settings-dialog.slint:3195 msgid "Services" msgstr "" -#: ui/dialogs/settings-dialog.slint:1109 ui/dialogs/settings-dialog.slint:2828 -#: ui/dialogs/settings-dialog.slint:1109 ui/dialogs/settings-dialog.slint:2828 ui/dialogs/settings-dialog.slint:3148 +#: ui/dialogs/settings-dialog.slint:1110 ui/dialogs/settings-dialog.slint:2876 +#: ui/dialogs/settings-dialog.slint:1110 ui/dialogs/settings-dialog.slint:2876 ui/dialogs/settings-dialog.slint:3196 msgid "About" msgstr "" -#: ui/dialogs/settings-dialog.slint:1133 +#: ui/dialogs/settings-dialog.slint:1134 msgid "Manage appearance, privacy, and synchronization." msgstr "" -#: ui/dialogs/settings-dialog.slint:1145 +#: ui/dialogs/settings-dialog.slint:1146 msgid "Message appearance" msgstr "" -#: ui/dialogs/settings-dialog.slint:1146 +#: ui/dialogs/settings-dialog.slint:1147 msgid "Choose the background and text colors used to read messages." msgstr "" -#: ui/dialogs/settings-dialog.slint:1147 +#: ui/dialogs/settings-dialog.slint:1148 msgid "Follow app theme" msgstr "" -#: ui/dialogs/settings-dialog.slint:1206 +#: ui/dialogs/settings-dialog.slint:1207 msgid "Interface" msgstr "" -#: ui/dialogs/settings-dialog.slint:1209 +#: ui/dialogs/settings-dialog.slint:1210 msgid "Monochrome sidebar icons" msgstr "" -#: ui/dialogs/settings-dialog.slint:1210 +#: ui/dialogs/settings-dialog.slint:1211 msgid "Use one neutral color for mailbox and folder icons." msgstr "" -#: ui/dialogs/settings-dialog.slint:1222 +#: ui/dialogs/settings-dialog.slint:1223 msgid "No avatars" msgstr "" -#: ui/dialogs/settings-dialog.slint:1223 +#: ui/dialogs/settings-dialog.slint:1224 msgid "Hide sender images in the message list and reader." msgstr "" -#: ui/dialogs/settings-dialog.slint:1236 +#: ui/dialogs/settings-dialog.slint:1237 msgid "Keep several mailboxes, conversations and other places open in tabs." msgstr "" -#: ui/dialogs/settings-dialog.slint:1248 +#: ui/dialogs/settings-dialog.slint:1249 msgid "Frameless window" msgstr "" -#: ui/dialogs/settings-dialog.slint:1249 +#: ui/dialogs/settings-dialog.slint:1250 msgid "Replace the system title bar with window controls in the toolbar." msgstr "" -#: ui/dialogs/settings-dialog.slint:1256 +#: ui/dialogs/settings-dialog.slint:1257 msgid "Workspace layout" msgstr "" -#: ui/dialogs/settings-dialog.slint:1268 +#: ui/dialogs/settings-dialog.slint:1269 msgid "Minimal" msgstr "" -#: ui/dialogs/settings-dialog.slint:1288 +#: ui/dialogs/settings-dialog.slint:1289 msgid "Language and time" msgstr "" -#: ui/dialogs/settings-dialog.slint:1291 +#: ui/dialogs/settings-dialog.slint:1292 msgid "Display language" msgstr "" -#: ui/dialogs/settings-dialog.slint:1292 +#: ui/dialogs/settings-dialog.slint:1293 msgid "Follow your device language when a translation is available." msgstr "" -#: ui/dialogs/settings-dialog.slint:1292 +#: ui/dialogs/settings-dialog.slint:1293 msgid "Choose the language used throughout Flectar Mail." msgstr "" -#: ui/dialogs/settings-dialog.slint:1302 +#: ui/dialogs/settings-dialog.slint:1303 msgid "Time format" msgstr "" -#: ui/dialogs/settings-dialog.slint:1303 +#: ui/dialogs/settings-dialog.slint:1304 msgid "Follow your region, for example {}." msgstr "" -#: ui/dialogs/settings-dialog.slint:1303 +#: ui/dialogs/settings-dialog.slint:1304 msgid "Times appear as {}." msgstr "" -#: ui/dialogs/settings-dialog.slint:1315 +#: ui/dialogs/settings-dialog.slint:1316 msgid "" "Add a language in Windows Settings, under Time & language, to check spelling." msgstr "" -#: ui/dialogs/settings-dialog.slint:1317 +#: ui/dialogs/settings-dialog.slint:1318 msgid "Turn on the spell checker in Android's settings to check spelling." msgstr "" -#: ui/dialogs/settings-dialog.slint:1319 +#: ui/dialogs/settings-dialog.slint:1320 msgid "" "Install Hunspell dictionaries for your languages from your system's software " "to check spelling." msgstr "" -#: ui/dialogs/settings-dialog.slint:1321 +#: ui/dialogs/settings-dialog.slint:1322 msgid "" "Underline misspelled words in messages you write, in the languages set in " "System Settings. Right-click a word for corrections." msgstr "" -#: ui/dialogs/settings-dialog.slint:1323 +#: ui/dialogs/settings-dialog.slint:1324 msgid "" "Underline misspelled words in messages you write, in the language set for " "Android's spell checker. Tap a word for corrections." msgstr "" -#: ui/dialogs/settings-dialog.slint:1325 +#: ui/dialogs/settings-dialog.slint:1326 msgid "" "Underline misspelled words in messages you write, in your preferred " "languages from Settings. Tap a word for corrections." msgstr "" -#: ui/dialogs/settings-dialog.slint:1326 +#: ui/dialogs/settings-dialog.slint:1327 msgid "" "Underline misspelled words in messages you write. Right-click a word for " "corrections and languages." msgstr "" -#: ui/dialogs/settings-dialog.slint:1350 +#: ui/dialogs/settings-dialog.slint:1351 msgid "Inbox behavior" msgstr "" -#: ui/dialogs/settings-dialog.slint:1353 +#: ui/dialogs/settings-dialog.slint:1354 msgid "Unified Inbox" msgstr "" -#: ui/dialogs/settings-dialog.slint:1354 +#: ui/dialogs/settings-dialog.slint:1355 msgid "DEFAULT" msgstr "" -#: ui/dialogs/settings-dialog.slint:1356 +#: ui/dialogs/settings-dialog.slint:1357 msgid "Combines incoming messages from every connected account." msgstr "" -#: ui/dialogs/settings-dialog.slint:1360 +#: ui/dialogs/settings-dialog.slint:1361 msgid "Group messages by date" msgstr "" -#: ui/dialogs/settings-dialog.slint:1361 +#: ui/dialogs/settings-dialog.slint:1362 msgid "Show collapsible date sections in the mail list." msgstr "" -#: ui/dialogs/settings-dialog.slint:1373 +#: ui/dialogs/settings-dialog.slint:1374 msgid "Conversation view" msgstr "" -#: ui/dialogs/settings-dialog.slint:1374 +#: ui/dialogs/settings-dialog.slint:1375 msgid "" "Group replies with the messages they answer. Turn this off to list, open and " "act on each message on its own." msgstr "" -#: ui/dialogs/settings-dialog.slint:1391 +#: ui/dialogs/settings-dialog.slint:1392 msgid "Mark messages as read when opened" msgstr "" -#: ui/dialogs/settings-dialog.slint:1392 +#: ui/dialogs/settings-dialog.slint:1393 msgid "Turn this off to keep unread status until you change it manually." msgstr "" -#: ui/dialogs/settings-dialog.slint:1417 +#: ui/dialogs/settings-dialog.slint:1418 msgid "Sending" msgstr "" -#: ui/dialogs/settings-dialog.slint:1420 +#: ui/dialogs/settings-dialog.slint:1421 msgid "Undo send" msgstr "" -#: ui/dialogs/settings-dialog.slint:1421 +#: ui/dialogs/settings-dialog.slint:1422 msgid "" "How long a sent message waits before it leaves, so that you can take it back." msgstr "" -#: ui/dialogs/settings-dialog.slint:1445 +#: ui/dialogs/settings-dialog.slint:1446 msgid "Remote images" msgstr "" -#: ui/dialogs/settings-dialog.slint:1446 +#: ui/dialogs/settings-dialog.slint:1447 msgid "Load sender favicons and images embedded in message bodies." msgstr "" -#: ui/dialogs/settings-dialog.slint:1446 +#: ui/dialogs/settings-dialog.slint:1447 msgid "Unavailable in this minimal build." msgstr "" -#: ui/dialogs/settings-dialog.slint:1447 +#: ui/dialogs/settings-dialog.slint:1448 msgid "Off by default to block tracking pixels and minimize memory use." msgstr "" -#: ui/dialogs/settings-dialog.slint:1473 +#: ui/dialogs/settings-dialog.slint:1474 msgid "Keep running in system tray" msgstr "" -#: ui/dialogs/settings-dialog.slint:1473 +#: ui/dialogs/settings-dialog.slint:1474 msgid "Keep running in the background" msgstr "" -#: ui/dialogs/settings-dialog.slint:1474 +#: ui/dialogs/settings-dialog.slint:1475 msgid "Closing the window hides Flectar Mail while mail continues syncing." msgstr "" -#: ui/dialogs/settings-dialog.slint:1475 +#: ui/dialogs/settings-dialog.slint:1476 msgid "Disabled by default; Quit from the tray menu stops the app." msgstr "" -#: ui/dialogs/settings-dialog.slint:1475 +#: ui/dialogs/settings-dialog.slint:1476 msgid "Disabled by default; open Flectar Mail again to bring its window back." msgstr "" -#: ui/dialogs/settings-dialog.slint:1501 +#: ui/dialogs/settings-dialog.slint:1502 msgid "Start automatically" msgstr "" -#: ui/dialogs/settings-dialog.slint:1502 +#: ui/dialogs/settings-dialog.slint:1503 msgid "Opens Flectar Mail when you sign in." msgstr "" -#: ui/dialogs/settings-dialog.slint:1502 +#: ui/dialogs/settings-dialog.slint:1503 msgid "Starts Flectar Mail in the system tray when you sign in." msgstr "" -#: ui/dialogs/settings-dialog.slint:1502 +#: ui/dialogs/settings-dialog.slint:1503 msgid "Starts Flectar Mail in the background when you sign in." msgstr "" -#: ui/dialogs/settings-dialog.slint:1503 +#: ui/dialogs/settings-dialog.slint:1504 msgid "Disabled by default; also listed in your system's startup apps." msgstr "" -#: ui/dialogs/settings-dialog.slint:1529 +#: ui/dialogs/settings-dialog.slint:1530 msgid "Default email app" msgstr "" -#: ui/dialogs/settings-dialog.slint:1532 +#: ui/dialogs/settings-dialog.slint:1533 msgid "Email links in browsers and other apps open in Flectar Mail." msgstr "" -#: ui/dialogs/settings-dialog.slint:1533 +#: ui/dialogs/settings-dialog.slint:1534 msgid "" "To open email links from browsers and other apps here, choose Flectar Mail " "for email in your system's default apps." msgstr "" -#: ui/dialogs/settings-dialog.slint:1534 +#: ui/dialogs/settings-dialog.slint:1535 msgid "" "Add Flectar Mail to your applications menu to open email links from browsers " "and other apps here." msgstr "" -#: ui/dialogs/settings-dialog.slint:1535 +#: ui/dialogs/settings-dialog.slint:1536 msgid "Open email links from browsers and other apps in Flectar Mail." msgstr "" -#: ui/dialogs/settings-dialog.slint:1542 +#: ui/dialogs/settings-dialog.slint:1543 msgid "Opens Default apps in Windows Settings, where you choose Flectar Mail." msgstr "" -#: ui/dialogs/settings-dialog.slint:1543 +#: ui/dialogs/settings-dialog.slint:1544 msgid "macOS asks you to confirm the change." msgstr "" -#: ui/dialogs/settings-dialog.slint:1544 +#: ui/dialogs/settings-dialog.slint:1545 msgid "Run the AppImage with --integrate, or add it with your AppImage manager." msgstr "" -#: ui/dialogs/settings-dialog.slint:1545 +#: ui/dialogs/settings-dialog.slint:1546 msgid "" "Links fill in a new message for you to review; files are never attached from " "them." msgstr "" -#: ui/dialogs/settings-dialog.slint:1560 +#: ui/dialogs/settings-dialog.slint:1561 msgid "Make default" msgstr "" -#: ui/dialogs/settings-dialog.slint:1568 +#: ui/dialogs/settings-dialog.slint:1569 msgid "Remove from Windows" msgstr "" -#: ui/dialogs/settings-dialog.slint:1592 +#: ui/dialogs/settings-dialog.slint:1593 msgid "Sync and notifications" msgstr "" -#: ui/dialogs/settings-dialog.slint:1596 +#: ui/dialogs/settings-dialog.slint:1597 msgid "How often to refresh when an instant provider update is unavailable." msgstr "" -#: ui/dialogs/settings-dialog.slint:1607 ui/dialogs/settings-dialog.slint:2552 +#: ui/dialogs/settings-dialog.slint:1608 ui/dialogs/settings-dialog.slint:2600 msgid "Choose which incoming messages can alert you." msgstr "" -#: ui/dialogs/settings-dialog.slint:1620 +#: ui/dialogs/settings-dialog.slint:1621 msgid "Provider synchronization is ready." msgstr "" -#: ui/dialogs/settings-dialog.slint:1628 ui/dialogs/settings-dialog.slint:2207 +#: ui/dialogs/settings-dialog.slint:1629 ui/dialogs/settings-dialog.slint:2255 msgid "Syncing…" msgstr "" -#: ui/dialogs/settings-dialog.slint:1628 +#: ui/dialogs/settings-dialog.slint:1629 msgid "Sync now" msgstr "" -#: ui/dialogs/settings-dialog.slint:1647 +#: ui/dialogs/settings-dialog.slint:1648 msgid "Renderer" msgstr "" -#: ui/dialogs/settings-dialog.slint:1648 +#: ui/dialogs/settings-dialog.slint:1649 msgid "Changes take effect after restarting Flectar Mail." msgstr "" -#: ui/dialogs/settings-dialog.slint:1648 +#: ui/dialogs/settings-dialog.slint:1649 msgid "GPU mode is unavailable in this build." msgstr "" -#: ui/dialogs/settings-dialog.slint:1649 +#: ui/dialogs/settings-dialog.slint:1650 msgid "CPU — Low Memory" msgstr "" -#: ui/dialogs/settings-dialog.slint:1649 +#: ui/dialogs/settings-dialog.slint:1650 msgid "GPU — WGPU" msgstr "" -#: ui/dialogs/settings-dialog.slint:1663 +#: ui/dialogs/settings-dialog.slint:1664 msgid "GPU — WGPU could not start, so CPU — Low Memory is active." msgstr "" -#: ui/dialogs/settings-dialog.slint:1663 +#: ui/dialogs/settings-dialog.slint:1664 msgid "Restart required. Your current renderer is still active." msgstr "" -#: ui/dialogs/settings-dialog.slint:1663 +#: ui/dialogs/settings-dialog.slint:1664 msgid "Active: GPU — WGPU" msgstr "" -#: ui/dialogs/settings-dialog.slint:1663 +#: ui/dialogs/settings-dialog.slint:1664 msgid "Active: CPU — Low Memory" msgstr "" -#: ui/dialogs/settings-dialog.slint:1689 ui/dialogs/settings-dialog.slint:1722 +#: ui/dialogs/settings-dialog.slint:1690 ui/dialogs/settings-dialog.slint:1723 msgid "Download location" msgstr "" -#: ui/dialogs/settings-dialog.slint:1698 ui/dialogs/settings-dialog.slint:1731 +#: ui/dialogs/settings-dialog.slint:1699 ui/dialogs/settings-dialog.slint:1732 msgid "" "Saving an attachment asks where to put it, starting in the folder your " "system suggests." msgstr "" -#: ui/dialogs/settings-dialog.slint:1776 +#: ui/dialogs/settings-dialog.slint:1777 msgid "" "Keep your address book clean while still making frequent recipients easy to " "find." msgstr "" -#: ui/dialogs/settings-dialog.slint:1798 +#: ui/dialogs/settings-dialog.slint:1799 msgid "Remember people I email" msgstr "" -#: ui/dialogs/settings-dialog.slint:1799 +#: ui/dialogs/settings-dialog.slint:1800 msgid "" "While enabled, remember To, Cc, and Bcc recipients from new sends and synced " "Sent mail." msgstr "" -#: ui/dialogs/settings-dialog.slint:1814 +#: ui/dialogs/settings-dialog.slint:1815 msgid "Remember incoming senders" msgstr "" -#: ui/dialogs/settings-dialog.slint:1815 +#: ui/dialogs/settings-dialog.slint:1816 msgid "" "Remember human senders from new mail. Automated, spam, trash, and existing " "mail are excluded." msgstr "" -#: ui/dialogs/settings-dialog.slint:1830 +#: ui/dialogs/settings-dialog.slint:1831 msgid "Use suggestions from all accounts" msgstr "" -#: ui/dialogs/settings-dialog.slint:1831 +#: ui/dialogs/settings-dialog.slint:1832 msgid "" "Include people emailed from any connected account. Turn off to keep learned " "recipients account-specific." msgstr "" -#: ui/dialogs/settings-dialog.slint:1846 +#: ui/dialogs/settings-dialog.slint:1847 msgid "Use suggestions when composing" msgstr "" -#: ui/dialogs/settings-dialog.slint:1847 +#: ui/dialogs/settings-dialog.slint:1848 msgid "" "Include learned people in recipient autocomplete. Saved and CardDAV contacts " "are always available." msgstr "" -#: ui/dialogs/settings-dialog.slint:1868 +#: ui/dialogs/settings-dialog.slint:1869 msgid "Suggested people" msgstr "" -#: ui/dialogs/settings-dialog.slint:1871 +#: ui/dialogs/settings-dialog.slint:1872 msgid "" "People you email remain available as local suggestions and never sync to " "CardDAV. Clear them any time to restart learning." msgstr "" -#: ui/dialogs/settings-dialog.slint:1889 +#: ui/dialogs/settings-dialog.slint:1890 msgid "Clear now" msgstr "" -#: ui/dialogs/settings-dialog.slint:1889 +#: ui/dialogs/settings-dialog.slint:1890 msgid "Clear suggested people" msgstr "" -#: ui/dialogs/settings-dialog.slint:1924 +#: ui/dialogs/settings-dialog.slint:1913 +msgid "Blocked senders" +msgstr "" + +#: ui/dialogs/settings-dialog.slint:1916 +msgid "" +"Their mail goes to Spam when Flectar Mail receives it. Block a sender from " +"the menu of one of their messages." +msgstr "" + +#: ui/dialogs/settings-dialog.slint:1922 +msgid "No one is blocked." +msgstr "" + +#: ui/dialogs/settings-dialog.slint:1944 +msgid "Unblock" +msgstr "" + +#: ui/dialogs/settings-dialog.slint:1945 +msgid "Unblock {}" +msgstr "" + +#: ui/dialogs/settings-dialog.slint:1972 msgid "" "Manage connected mailboxes and add providers. Drag an account to change its " "order everywhere." msgstr "" -#: ui/dialogs/settings-dialog.slint:1951 +#: ui/dialogs/settings-dialog.slint:1999 msgid "" "Group accounts as Personal or Work and identify them by color in the mail " "list." msgstr "" -#: ui/dialogs/settings-dialog.slint:1960 ui/dialogs/settings-dialog.slint:1990 +#: ui/dialogs/settings-dialog.slint:2008 ui/dialogs/settings-dialog.slint:2038 msgid "Add profile" msgstr "" -#: ui/dialogs/settings-dialog.slint:1974 ui/dialogs/settings-dialog.slint:1982 +#: ui/dialogs/settings-dialog.slint:2022 ui/dialogs/settings-dialog.slint:2030 msgid "Show account color at the left edge of each message" msgstr "" -#: ui/dialogs/settings-dialog.slint:2004 +#: ui/dialogs/settings-dialog.slint:2052 msgid "" "No profiles yet. Accounts keep their individual or generated colors until " "you create one." msgstr "" -#: ui/dialogs/settings-dialog.slint:2049 ui/dialogs/settings-dialog.slint:3483 -#: ui/dialogs/settings-dialog.slint:2049 ui/dialogs/settings-dialog.slint:3483 +#: ui/dialogs/settings-dialog.slint:2097 ui/dialogs/settings-dialog.slint:3531 +#: ui/dialogs/settings-dialog.slint:2097 ui/dialogs/settings-dialog.slint:3531 msgid "Edit profile" msgstr "" -#: ui/dialogs/settings-dialog.slint:2059 ui/dialogs/settings-dialog.slint:3738 +#: ui/dialogs/settings-dialog.slint:2107 ui/dialogs/settings-dialog.slint:3786 msgid "Delete profile" msgstr "" -#: ui/dialogs/settings-dialog.slint:2075 ui/dialogs/settings-dialog.slint:2121 +#: ui/dialogs/settings-dialog.slint:2123 ui/dialogs/settings-dialog.slint:2169 msgid "Add Gmail" msgstr "" -#: ui/dialogs/settings-dialog.slint:2088 ui/dialogs/settings-dialog.slint:2122 +#: ui/dialogs/settings-dialog.slint:2136 ui/dialogs/settings-dialog.slint:2170 msgid "Add Outlook" msgstr "" -#: ui/dialogs/settings-dialog.slint:2101 ui/dialogs/settings-dialog.slint:2123 +#: ui/dialogs/settings-dialog.slint:2149 ui/dialogs/settings-dialog.slint:2171 msgid "Add mail account" msgstr "" -#: ui/dialogs/settings-dialog.slint:2114 ui/dialogs/settings-dialog.slint:2124 -#: ui/dialogs/settings-dialog.slint:2114 ui/dialogs/settings-dialog.slint:2124 +#: ui/dialogs/settings-dialog.slint:2162 ui/dialogs/settings-dialog.slint:2172 +#: ui/dialogs/settings-dialog.slint:2162 ui/dialogs/settings-dialog.slint:2172 msgid "Cancel sign-in" msgstr "" -#: ui/dialogs/settings-dialog.slint:2207 +#: ui/dialogs/settings-dialog.slint:2255 msgid "Connected · Gmail" msgstr "" -#: ui/dialogs/settings-dialog.slint:2207 +#: ui/dialogs/settings-dialog.slint:2255 msgid "Connected · JMAP" msgstr "" -#: ui/dialogs/settings-dialog.slint:2207 +#: ui/dialogs/settings-dialog.slint:2255 msgid "Connected without encryption · POP3 + SMTP" msgstr "" -#: ui/dialogs/settings-dialog.slint:2207 +#: ui/dialogs/settings-dialog.slint:2255 msgid "Connected · POP3 + SMTP" msgstr "" -#: ui/dialogs/settings-dialog.slint:2207 +#: ui/dialogs/settings-dialog.slint:2255 msgid "Connected without encryption · IMAP + SMTP" msgstr "" -#: ui/dialogs/settings-dialog.slint:2207 +#: ui/dialogs/settings-dialog.slint:2255 msgid "Connected · IMAP + SMTP" msgstr "" -#: ui/dialogs/settings-dialog.slint:2207 +#: ui/dialogs/settings-dialog.slint:2255 msgid "Account status: {}" msgstr "" -#: ui/dialogs/settings-dialog.slint:2210 ui/dialogs/settings-dialog.slint:2423 -#: ui/dialogs/settings-dialog.slint:2210 ui/dialogs/settings-dialog.slint:2423 +#: ui/dialogs/settings-dialog.slint:2258 ui/dialogs/settings-dialog.slint:2471 +#: ui/dialogs/settings-dialog.slint:2258 ui/dialogs/settings-dialog.slint:2471 msgid "Reconnect" msgstr "" -#: ui/dialogs/settings-dialog.slint:2236 ui/views/files-view.slint:504 +#: ui/dialogs/settings-dialog.slint:2284 ui/views/files-view.slint:504 msgid "Manage" msgstr "" -#: ui/dialogs/settings-dialog.slint:2236 +#: ui/dialogs/settings-dialog.slint:2284 msgid "Fix CardDAV" msgstr "" -#: ui/dialogs/settings-dialog.slint:2236 +#: ui/dialogs/settings-dialog.slint:2284 msgid "CardDAV" msgstr "" -#: ui/dialogs/settings-dialog.slint:2251 +#: ui/dialogs/settings-dialog.slint:2299 msgid "Mail synchronization error: {}" msgstr "" -#: ui/dialogs/settings-dialog.slint:2267 +#: ui/dialogs/settings-dialog.slint:2315 msgid "Mail history" msgstr "" -#: ui/dialogs/settings-dialog.slint:2270 +#: ui/dialogs/settings-dialog.slint:2318 msgid "" "Download the full mailbox. Large accounts can take considerable time and " "storage." msgstr "" -#: ui/dialogs/settings-dialog.slint:2271 +#: ui/dialogs/settings-dialog.slint:2319 msgid "How far back to download. Mail already stored on this device is kept." msgstr "" -#: ui/dialogs/settings-dialog.slint:2284 +#: ui/dialogs/settings-dialog.slint:2332 msgid "Sent copies" msgstr "" -#: ui/dialogs/settings-dialog.slint:2286 +#: ui/dialogs/settings-dialog.slint:2334 msgid "" "Choose who saves sent mail. Use Flectar if your server does not save a copy." msgstr "" -#: ui/dialogs/settings-dialog.slint:2287 +#: ui/dialogs/settings-dialog.slint:2335 msgid "Provider default" msgstr "" -#: ui/dialogs/settings-dialog.slint:2287 +#: ui/dialogs/settings-dialog.slint:2335 msgid "Server saves a copy" msgstr "" -#: ui/dialogs/settings-dialog.slint:2287 +#: ui/dialogs/settings-dialog.slint:2335 msgid "Flectar saves a copy" msgstr "" -#: ui/dialogs/settings-dialog.slint:2301 +#: ui/dialogs/settings-dialog.slint:2349 msgid "Keep mail on the server" msgstr "" -#: ui/dialogs/settings-dialog.slint:2305 +#: ui/dialogs/settings-dialog.slint:2353 msgid "Flectar Mail never removes mail from the server." msgstr "" -#: ui/dialogs/settings-dialog.slint:2306 +#: ui/dialogs/settings-dialog.slint:2354 msgid "Mail is removed after this time, or once deleted here." msgstr "" -#: ui/dialogs/settings-dialog.slint:2322 +#: ui/dialogs/settings-dialog.slint:2370 msgid "This server removes mail as soon as it's downloaded." msgstr "" -#: ui/dialogs/settings-dialog.slint:2323 +#: ui/dialogs/settings-dialog.slint:2371 msgid "This server removes downloaded mail after one day." msgid_plural "This server removes downloaded mail after {n} days." msgstr[0] "" msgstr[1] "" -#: ui/dialogs/settings-dialog.slint:2334 +#: ui/dialogs/settings-dialog.slint:2382 msgid "" "Mail removed from the server is kept only on this device. Database snapshots " "in Storage include it." msgstr "" -#: ui/dialogs/settings-dialog.slint:2358 +#: ui/dialogs/settings-dialog.slint:2406 msgid "Uses the {} color in the mail list" msgstr "" -#: ui/dialogs/settings-dialog.slint:2360 +#: ui/dialogs/settings-dialog.slint:2408 msgid "Uses a custom account color" msgstr "" -#: ui/dialogs/settings-dialog.slint:2361 +#: ui/dialogs/settings-dialog.slint:2409 msgid "Uses a generated account color" msgstr "" -#: ui/dialogs/settings-dialog.slint:2405 +#: ui/dialogs/settings-dialog.slint:2453 msgid "OAuth app credentials" msgstr "" -#: ui/dialogs/settings-dialog.slint:2405 +#: ui/dialogs/settings-dialog.slint:2453 msgid "Custom desktop app credentials are configured." msgstr "" -#: ui/dialogs/settings-dialog.slint:2405 +#: ui/dialogs/settings-dialog.slint:2453 msgid "Advanced: use your own Gmail or Microsoft desktop app registration." msgstr "" -#: ui/dialogs/settings-dialog.slint:2406 +#: ui/dialogs/settings-dialog.slint:2454 msgid "Hide" msgstr "" -#: ui/dialogs/settings-dialog.slint:2406 +#: ui/dialogs/settings-dialog.slint:2454 msgid "Configure" msgstr "" -#: ui/dialogs/settings-dialog.slint:2409 ui/dialogs/settings-dialog.slint:2410 +#: ui/dialogs/settings-dialog.slint:2457 ui/dialogs/settings-dialog.slint:2458 msgid "Gmail desktop client ID" msgstr "" -#: ui/dialogs/settings-dialog.slint:2409 ui/dialogs/settings-dialog.slint:2410 +#: ui/dialogs/settings-dialog.slint:2457 ui/dialogs/settings-dialog.slint:2458 msgid "Gmail client secret (optional)" msgstr "" -#: ui/dialogs/settings-dialog.slint:2409 +#: ui/dialogs/settings-dialog.slint:2457 msgid "Save Gmail" msgstr "" -#: ui/dialogs/settings-dialog.slint:2410 +#: ui/dialogs/settings-dialog.slint:2458 msgid "Save Gmail settings" msgstr "" -#: ui/dialogs/settings-dialog.slint:2411 +#: ui/dialogs/settings-dialog.slint:2459 msgid "Save Outlook" msgstr "" -#: ui/dialogs/settings-dialog.slint:2412 +#: ui/dialogs/settings-dialog.slint:2460 msgid "Outlook public desktop clients use PKCE and do not need a client secret." msgstr "" -#: ui/dialogs/settings-dialog.slint:2418 +#: ui/dialogs/settings-dialog.slint:2466 msgid "Connect CardDAV" msgstr "" -#: ui/dialogs/settings-dialog.slint:2418 +#: ui/dialogs/settings-dialog.slint:2466 msgid "Sync contacts with a standards-compliant CardDAV server." msgstr "" -#: ui/dialogs/settings-dialog.slint:2421 +#: ui/dialogs/settings-dialog.slint:2469 msgid "https://contacts.example.com/" msgstr "" -#: ui/dialogs/settings-dialog.slint:2422 ui/dialogs/settings-dialog.slint:3251 -#: ui/dialogs/settings-dialog.slint:2422 ui/dialogs/settings-dialog.slint:3251 ui/dialogs/settings-dialog.slint:3381 +#: ui/dialogs/settings-dialog.slint:2470 ui/dialogs/settings-dialog.slint:3299 +#: ui/dialogs/settings-dialog.slint:2470 ui/dialogs/settings-dialog.slint:3299 ui/dialogs/settings-dialog.slint:3429 msgid "Username" msgstr "" -#: ui/dialogs/settings-dialog.slint:2422 ui/dialogs/settings-dialog.slint:3259 +#: ui/dialogs/settings-dialog.slint:2470 ui/dialogs/settings-dialog.slint:3307 msgid "App password" msgstr "" -#: ui/dialogs/settings-dialog.slint:2423 +#: ui/dialogs/settings-dialog.slint:2471 msgid "Disconnect" msgstr "" -#: ui/dialogs/settings-dialog.slint:2423 ui/dialogs/settings-dialog.slint:3286 -#: ui/dialogs/settings-dialog.slint:2423 ui/dialogs/settings-dialog.slint:3286 +#: ui/dialogs/settings-dialog.slint:2471 ui/dialogs/settings-dialog.slint:3334 +#: ui/dialogs/settings-dialog.slint:2471 ui/dialogs/settings-dialog.slint:3334 msgid "Connect" msgstr "" -#: ui/dialogs/settings-dialog.slint:2445 +#: ui/dialogs/settings-dialog.slint:2493 msgid "See what Flectar Mail stores locally and manage the data on this device." msgstr "" -#: ui/dialogs/settings-dialog.slint:2471 +#: ui/dialogs/settings-dialog.slint:2519 msgid "Mail on this device" msgstr "" -#: ui/dialogs/settings-dialog.slint:2471 +#: ui/dialogs/settings-dialog.slint:2519 msgid "" "Mail you imported. It is kept only here, so export it to keep a copy " "elsewhere." msgstr "" -#: ui/dialogs/settings-dialog.slint:2473 ui/dialogs/settings-dialog.slint:3687 +#: ui/dialogs/settings-dialog.slint:2521 ui/dialogs/settings-dialog.slint:3735 msgid "One message" msgid_plural "{} messages" msgstr[0] "" msgstr[1] "" -#: ui/dialogs/settings-dialog.slint:2481 ui/dialogs/settings-dialog.slint:3667 -#: ui/dialogs/settings-dialog.slint:2481 ui/dialogs/settings-dialog.slint:3667 ui/dialogs/settings-dialog.slint:3715 +#: ui/dialogs/settings-dialog.slint:2529 ui/dialogs/settings-dialog.slint:3715 +#: ui/dialogs/settings-dialog.slint:2529 ui/dialogs/settings-dialog.slint:3715 ui/dialogs/settings-dialog.slint:3763 msgid "Export mail…" msgstr "" -#: ui/dialogs/settings-dialog.slint:2482 ui/views/files-view.slint:600 +#: ui/dialogs/settings-dialog.slint:2530 ui/views/files-view.slint:600 msgid "Delete…" msgstr "" -#: ui/dialogs/settings-dialog.slint:2490 +#: ui/dialogs/settings-dialog.slint:2538 msgid "Database snapshot" msgstr "" -#: ui/dialogs/settings-dialog.slint:2490 +#: ui/dialogs/settings-dialog.slint:2538 msgid "" "Export verified copies of the mail and calendar databases with their schema " "versions." msgstr "" -#: ui/dialogs/settings-dialog.slint:2492 +#: ui/dialogs/settings-dialog.slint:2540 msgid "" "The snapshot contains private local mail and settings, but not passwords or " "OAuth tokens. Store it securely." msgstr "" -#: ui/dialogs/settings-dialog.slint:2493 +#: ui/dialogs/settings-dialog.slint:2541 msgid "Export snapshot" msgstr "" -#: ui/dialogs/settings-dialog.slint:2500 +#: ui/dialogs/settings-dialog.slint:2548 msgid "Transfer account setup" msgstr "" -#: ui/dialogs/settings-dialog.slint:2500 +#: ui/dialogs/settings-dialog.slint:2548 msgid "" "Import accounts and mail from Thunderbird, K-9 Mail, mail files, or a " "backup, or export one connected account and your preferences." @@ -5992,695 +6053,695 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: ui/dialogs/settings-dialog.slint:2502 +#: ui/dialogs/settings-dialog.slint:2550 msgid "" "Passwords and OAuth tokens stay in the system keyring. A restored device " "asks you to sign in securely." msgstr "" -#: ui/dialogs/settings-dialog.slint:2511 +#: ui/dialogs/settings-dialog.slint:2559 msgid "Export" msgstr "" -#: ui/dialogs/settings-dialog.slint:2518 +#: ui/dialogs/settings-dialog.slint:2566 msgid "Delete all local data" msgstr "" -#: ui/dialogs/settings-dialog.slint:2518 +#: ui/dialogs/settings-dialog.slint:2566 msgid "" "Remove accounts, downloaded mail, calendars, contacts, preferences, and " "credentials from this device." msgstr "" -#: ui/dialogs/settings-dialog.slint:2520 +#: ui/dialogs/settings-dialog.slint:2568 msgid "" "Imported mail and the mail of any POP3 account are stored only on this " "device. Nothing is deleted from Gmail, Outlook, or IMAP servers." msgstr "" -#: ui/dialogs/settings-dialog.slint:2520 +#: ui/dialogs/settings-dialog.slint:2568 msgid "" "POP3 mail is stored only on this device. Nothing is deleted from Gmail, " "Outlook, or IMAP servers." msgstr "" -#: ui/dialogs/settings-dialog.slint:2520 +#: ui/dialogs/settings-dialog.slint:2568 msgid "This does not delete anything from Gmail, Outlook, or your IMAP server." msgstr "" -#: ui/dialogs/settings-dialog.slint:2521 ui/dialogs/settings-dialog.slint:3671 +#: ui/dialogs/settings-dialog.slint:2569 ui/dialogs/settings-dialog.slint:3719 msgid "Delete everything" msgstr "" -#: ui/dialogs/settings-dialog.slint:2535 +#: ui/dialogs/settings-dialog.slint:2583 msgid "Choose how Flectar Mail gets your attention." msgstr "" -#: ui/dialogs/settings-dialog.slint:2579 ui/dialogs/settings-dialog.slint:2594 -#: ui/dialogs/settings-dialog.slint:2579 ui/dialogs/settings-dialog.slint:2594 ui/dialogs/settings-dialog.slint:2632 +#: ui/dialogs/settings-dialog.slint:2627 ui/dialogs/settings-dialog.slint:2642 +#: ui/dialogs/settings-dialog.slint:2627 ui/dialogs/settings-dialog.slint:2642 ui/dialogs/settings-dialog.slint:2680 msgid "Open system settings" msgstr "" -#: ui/dialogs/settings-dialog.slint:2639 +#: ui/dialogs/settings-dialog.slint:2687 msgid "Notification sounds" msgstr "" -#: ui/dialogs/settings-dialog.slint:2641 +#: ui/dialogs/settings-dialog.slint:2689 msgid "Your desktop decides whether notifications play a sound." msgstr "" -#: ui/dialogs/settings-dialog.slint:2642 +#: ui/dialogs/settings-dialog.slint:2690 msgid "Play a sound with new mail notifications." msgstr "" -#: ui/dialogs/settings-dialog.slint:2655 +#: ui/dialogs/settings-dialog.slint:2703 msgid "Unread count on the app icon" msgstr "" -#: ui/dialogs/settings-dialog.slint:2660 +#: ui/dialogs/settings-dialog.slint:2708 msgid "" "Show how many unread messages are in your Inbox, on docks that show counts." msgstr "" -#: ui/dialogs/settings-dialog.slint:2661 +#: ui/dialogs/settings-dialog.slint:2709 msgid "" "Show how many unread Important messages are in your Inbox, on docks that " "show counts." msgstr "" -#: ui/dialogs/settings-dialog.slint:2663 +#: ui/dialogs/settings-dialog.slint:2711 msgid "Show how many unread messages are in your Inbox." msgstr "" -#: ui/dialogs/settings-dialog.slint:2664 +#: ui/dialogs/settings-dialog.slint:2712 msgid "Show how many unread Important messages are in your Inbox." msgstr "" -#: ui/dialogs/settings-dialog.slint:2684 +#: ui/dialogs/settings-dialog.slint:2732 msgid "Keyboard shortcuts" msgstr "" -#: ui/dialogs/settings-dialog.slint:2685 +#: ui/dialogs/settings-dialog.slint:2733 msgid "Move through mail without leaving the keyboard." msgstr "" -#: ui/dialogs/settings-dialog.slint:2687 +#: ui/dialogs/settings-dialog.slint:2735 msgid "Compose a new message" msgstr "" -#: ui/dialogs/settings-dialog.slint:2688 +#: ui/dialogs/settings-dialog.slint:2736 msgid "Edit a message as new" msgstr "" -#: ui/dialogs/settings-dialog.slint:2689 +#: ui/dialogs/settings-dialog.slint:2737 msgid "Take back a message just sent" msgstr "" -#: ui/dialogs/settings-dialog.slint:2691 +#: ui/dialogs/settings-dialog.slint:2739 msgid "Check every account for new mail" msgstr "" -#: ui/dialogs/settings-dialog.slint:2692 ui/views/mail-list-pane.slint:719 +#: ui/dialogs/settings-dialog.slint:2740 ui/views/mail-list-pane.slint:719 msgid "Search mail" msgstr "" -#: ui/dialogs/settings-dialog.slint:2694 +#: ui/dialogs/settings-dialog.slint:2742 msgid "Move to a folder" msgstr "" -#: ui/dialogs/settings-dialog.slint:2695 +#: ui/dialogs/settings-dialog.slint:2743 msgid "Copy to a folder" msgstr "" -#: ui/dialogs/settings-dialog.slint:2696 ui/views/mail-list-pane.slint:801 -#: ui/dialogs/settings-dialog.slint:2696 ui/views/mail-list-pane.slint:801 ui/views/mail-reading-pane.slint:357 -#: ui/dialogs/settings-dialog.slint:2696 ui/views/mail-list-pane.slint:801 ui/views/mail-reading-pane.slint:357 ui/views/mail-reading-pane.slint:837 +#: ui/dialogs/settings-dialog.slint:2744 ui/views/mail-list-pane.slint:801 +#: ui/dialogs/settings-dialog.slint:2744 ui/views/mail-list-pane.slint:801 ui/views/mail-reading-pane.slint:358 +#: ui/dialogs/settings-dialog.slint:2744 ui/views/mail-list-pane.slint:801 ui/views/mail-reading-pane.slint:358 ui/views/mail-reading-pane.slint:840 msgid "Move to spam" msgstr "" -#: ui/dialogs/settings-dialog.slint:2697 -#: ui/dialogs/settings-dialog.slint:2697 ui/views/mail-list-pane.slint:810 -#: ui/dialogs/settings-dialog.slint:2697 ui/views/mail-list-pane.slint:810 ui/views/mail-reading-pane.slint:336 -#: ui/dialogs/settings-dialog.slint:2697 ui/views/mail-list-pane.slint:810 ui/views/mail-reading-pane.slint:336 ui/views/mail-reading-pane.slint:379 -#: ui/dialogs/settings-dialog.slint:2697 ui/views/mail-list-pane.slint:810 ui/views/mail-reading-pane.slint:336 ui/views/mail-reading-pane.slint:379 ui/views/mail-reading-pane.slint:417 -#: ui/dialogs/settings-dialog.slint:2697 ui/views/mail-list-pane.slint:810 ui/views/mail-reading-pane.slint:336 ui/views/mail-reading-pane.slint:379 ui/views/mail-reading-pane.slint:417 +#: ui/dialogs/settings-dialog.slint:2745 +#: ui/dialogs/settings-dialog.slint:2745 ui/views/mail-list-pane.slint:810 +#: ui/dialogs/settings-dialog.slint:2745 ui/views/mail-list-pane.slint:810 ui/views/mail-reading-pane.slint:337 +#: ui/dialogs/settings-dialog.slint:2745 ui/views/mail-list-pane.slint:810 ui/views/mail-reading-pane.slint:337 ui/views/mail-reading-pane.slint:382 +#: ui/dialogs/settings-dialog.slint:2745 ui/views/mail-list-pane.slint:810 ui/views/mail-reading-pane.slint:337 ui/views/mail-reading-pane.slint:382 ui/views/mail-reading-pane.slint:420 +#: ui/dialogs/settings-dialog.slint:2745 ui/views/mail-list-pane.slint:810 ui/views/mail-reading-pane.slint:337 ui/views/mail-reading-pane.slint:382 ui/views/mail-reading-pane.slint:420 msgid "Move to trash" msgstr "" -#: ui/dialogs/settings-dialog.slint:2699 +#: ui/dialogs/settings-dialog.slint:2747 msgid "Navigation" msgstr "" -#: ui/dialogs/settings-dialog.slint:2700 +#: ui/dialogs/settings-dialog.slint:2748 msgid "Move between messages" msgstr "" -#: ui/dialogs/settings-dialog.slint:2701 +#: ui/dialogs/settings-dialog.slint:2749 msgid "Open message" msgstr "" -#: ui/dialogs/settings-dialog.slint:2702 +#: ui/dialogs/settings-dialog.slint:2750 msgid "Select message" msgstr "" -#: ui/dialogs/settings-dialog.slint:2703 +#: ui/dialogs/settings-dialog.slint:2751 msgid "Switch between list and message" msgstr "" -#: ui/dialogs/settings-dialog.slint:2705 +#: ui/dialogs/settings-dialog.slint:2753 msgid "Reading" msgstr "" -#: ui/dialogs/settings-dialog.slint:2706 ui/views/mail-reading-pane.slint:1306 -#: ui/dialogs/settings-dialog.slint:2706 ui/views/mail-reading-pane.slint:1306 +#: ui/dialogs/settings-dialog.slint:2754 ui/views/mail-reading-pane.slint:1311 +#: ui/dialogs/settings-dialog.slint:2754 ui/views/mail-reading-pane.slint:1311 msgid "Find in message" msgstr "" -#: ui/dialogs/settings-dialog.slint:2709 +#: ui/dialogs/settings-dialog.slint:2757 msgid "Reset zoom" msgstr "" -#: ui/dialogs/settings-dialog.slint:2710 ui/views/mail-reading-pane.slint:1664 +#: ui/dialogs/settings-dialog.slint:2758 ui/views/mail-reading-pane.slint:1669 msgid "Caret browsing" msgstr "" -#: ui/dialogs/settings-dialog.slint:2716 +#: ui/dialogs/settings-dialog.slint:2764 msgid "Next tab" msgstr "" -#: ui/dialogs/settings-dialog.slint:2717 +#: ui/dialogs/settings-dialog.slint:2765 msgid "Previous tab" msgstr "" -#: ui/dialogs/settings-dialog.slint:2718 +#: ui/dialogs/settings-dialog.slint:2766 msgid "Go to tab 1–8" msgstr "" -#: ui/dialogs/settings-dialog.slint:2719 +#: ui/dialogs/settings-dialog.slint:2767 msgid "Go to last tab" msgstr "" -#: ui/dialogs/settings-dialog.slint:2722 +#: ui/dialogs/settings-dialog.slint:2770 msgid "Quit Flectar Mail" msgstr "" -#: ui/dialogs/settings-dialog.slint:2742 +#: ui/dialogs/settings-dialog.slint:2790 msgid "" "Optional paid services from Flectar. Flectar Mail stays free and works " "without them." msgstr "" -#: ui/dialogs/settings-dialog.slint:2747 +#: ui/dialogs/settings-dialog.slint:2795 msgid "Flectar account" msgstr "" -#: ui/dialogs/settings-dialog.slint:2747 +#: ui/dialogs/settings-dialog.slint:2795 msgid "Not signed in" msgstr "" -#: ui/dialogs/settings-dialog.slint:2749 +#: ui/dialogs/settings-dialog.slint:2797 msgid "" "A Flectar account is only needed for these optional services. Learn more at " "flectar.com/mail." msgstr "" -#: ui/dialogs/settings-dialog.slint:2754 +#: ui/dialogs/settings-dialog.slint:2802 msgid "Sign in with Flectar" msgstr "" -#: ui/dialogs/settings-dialog.slint:2754 +#: ui/dialogs/settings-dialog.slint:2802 msgid "Sign-in coming soon" msgstr "" -#: ui/dialogs/settings-dialog.slint:2767 +#: ui/dialogs/settings-dialog.slint:2815 msgid "Your setup on every device" msgstr "" -#: ui/dialogs/settings-dialog.slint:2768 +#: ui/dialogs/settings-dialog.slint:2816 msgid "" "Sign in on a new phone or computer and your accounts, calendars, contacts, " "and preferences are ready without setting them up again." msgstr "" -#: ui/dialogs/settings-dialog.slint:2770 +#: ui/dialogs/settings-dialog.slint:2818 msgid "Mail accounts, profiles, and signatures" msgstr "" -#: ui/dialogs/settings-dialog.slint:2771 +#: ui/dialogs/settings-dialog.slint:2819 msgid "Calendar and contact connections" msgstr "" -#: ui/dialogs/settings-dialog.slint:2772 +#: ui/dialogs/settings-dialog.slint:2820 msgid "Themes, layout, and notification preferences" msgstr "" -#: ui/dialogs/settings-dialog.slint:2773 +#: ui/dialogs/settings-dialog.slint:2821 msgid "Account credentials, encrypted on this device before upload" msgstr "" -#: ui/dialogs/settings-dialog.slint:2775 +#: ui/dialogs/settings-dialog.slint:2823 msgid "" "Your messages stay with your mail provider. Sync only carries your Flectar " "Mail setup." msgstr "" -#: ui/dialogs/settings-dialog.slint:2790 +#: ui/dialogs/settings-dialog.slint:2838 msgid "Business email" msgstr "" -#: ui/dialogs/settings-dialog.slint:2791 +#: ui/dialogs/settings-dialog.slint:2839 msgid "Mailboxes on your own domain" msgstr "" -#: ui/dialogs/settings-dialog.slint:2792 +#: ui/dialogs/settings-dialog.slint:2840 msgid "Professional addresses such as you@yourcompany.com, hosted by Flectar." msgstr "" -#: ui/dialogs/settings-dialog.slint:2794 +#: ui/dialogs/settings-dialog.slint:2842 msgid "Connect a domain you already own" msgstr "" -#: ui/dialogs/settings-dialog.slint:2795 +#: ui/dialogs/settings-dialog.slint:2843 msgid "Create and manage mailboxes for your team" msgstr "" -#: ui/dialogs/settings-dialog.slint:2796 +#: ui/dialogs/settings-dialog.slint:2844 msgid "New mailboxes appear in Flectar Mail automatically" msgstr "" -#: ui/dialogs/settings-dialog.slint:2798 +#: ui/dialogs/settings-dialog.slint:2846 msgid "Billed per mailbox." msgstr "" -#: ui/dialogs/settings-dialog.slint:2810 +#: ui/dialogs/settings-dialog.slint:2858 msgid "" "These services are in development. Plans and availability will be announced " "on flectar.com/mail." msgstr "" -#: ui/dialogs/settings-dialog.slint:2829 +#: ui/dialogs/settings-dialog.slint:2877 msgid "Flectar Mail, its makers, and its community." msgstr "" -#: ui/dialogs/settings-dialog.slint:2845 ui/views/onboarding-view.slint:123 +#: ui/dialogs/settings-dialog.slint:2893 ui/views/onboarding-view.slint:123 msgid "Flectar Mail logo" msgstr "" -#: ui/dialogs/settings-dialog.slint:2865 +#: ui/dialogs/settings-dialog.slint:2913 msgid "A native mail client for a calm, private inbox." msgstr "" -#: ui/dialogs/settings-dialog.slint:2888 +#: ui/dialogs/settings-dialog.slint:2936 msgid "Updates" msgstr "" -#: ui/dialogs/settings-dialog.slint:2888 +#: ui/dialogs/settings-dialog.slint:2936 msgid "Flectar Mail looks for new versions once a day." msgstr "" -#: ui/dialogs/settings-dialog.slint:2898 +#: ui/dialogs/settings-dialog.slint:2946 msgid "Check for new versions" msgstr "" -#: ui/dialogs/settings-dialog.slint:2899 +#: ui/dialogs/settings-dialog.slint:2947 msgid "It asks GitHub, without any account or mail details." msgstr "" -#: ui/dialogs/settings-dialog.slint:2946 ui/dialogs/settings-dialog.slint:2977 +#: ui/dialogs/settings-dialog.slint:2994 ui/dialogs/settings-dialog.slint:3025 msgid "Check now" msgstr "" -#: ui/dialogs/settings-dialog.slint:2988 +#: ui/dialogs/settings-dialog.slint:3036 msgid "Credits" msgstr "" -#: ui/dialogs/settings-dialog.slint:2988 +#: ui/dialogs/settings-dialog.slint:3036 msgid "Built by Flectar with help from the open-source community." msgstr "" -#: ui/dialogs/settings-dialog.slint:2997 +#: ui/dialogs/settings-dialog.slint:3045 msgid "Flectar" msgstr "" -#: ui/dialogs/settings-dialog.slint:2998 +#: ui/dialogs/settings-dialog.slint:3046 msgid "Company website" msgstr "" -#: ui/dialogs/settings-dialog.slint:3008 +#: ui/dialogs/settings-dialog.slint:3056 msgid "Open-source contributors" msgstr "" -#: ui/dialogs/settings-dialog.slint:3009 +#: ui/dialogs/settings-dialog.slint:3057 msgid "Meet the people who have contributed on GitHub" msgstr "" -#: ui/dialogs/settings-dialog.slint:3023 +#: ui/dialogs/settings-dialog.slint:3071 msgid "Privacy" msgstr "" -#: ui/dialogs/settings-dialog.slint:3023 +#: ui/dialogs/settings-dialog.slint:3071 msgid "How Flectar Mail handles your data." msgstr "" -#: ui/dialogs/settings-dialog.slint:3033 +#: ui/dialogs/settings-dialog.slint:3081 msgid "Read it on flectar.com" msgstr "" -#: ui/dialogs/settings-dialog.slint:3046 +#: ui/dialogs/settings-dialog.slint:3094 msgid "License" msgstr "" -#: ui/dialogs/settings-dialog.slint:3046 +#: ui/dialogs/settings-dialog.slint:3094 msgid "AGPL-3.0-only." msgstr "" -#: ui/dialogs/settings-dialog.slint:3046 +#: ui/dialogs/settings-dialog.slint:3094 msgid "" "Flectar Mail is released under the GNU Affero General Public License v3.0 " "only." msgstr "" -#: ui/dialogs/settings-dialog.slint:3052 +#: ui/dialogs/settings-dialog.slint:3100 msgid "Third-party components retain their own licenses and notices." msgstr "" -#: ui/dialogs/settings-dialog.slint:3079 +#: ui/dialogs/settings-dialog.slint:3127 msgid "Settings sections" msgstr "" -#: ui/dialogs/settings-dialog.slint:3091 +#: ui/dialogs/settings-dialog.slint:3139 msgid "Close settings" msgstr "" -#: ui/dialogs/settings-dialog.slint:3113 +#: ui/dialogs/settings-dialog.slint:3161 msgid "Close settings sections" msgstr "" -#: ui/dialogs/settings-dialog.slint:3161 ui/dialogs/settings-dialog.slint:3210 +#: ui/dialogs/settings-dialog.slint:3209 ui/dialogs/settings-dialog.slint:3258 msgid "CalDAV settings" msgstr "" -#: ui/dialogs/settings-dialog.slint:3211 +#: ui/dialogs/settings-dialog.slint:3259 msgid "Discover new calendars." msgstr "" -#: ui/dialogs/settings-dialog.slint:3211 +#: ui/dialogs/settings-dialog.slint:3259 msgid "" "Works with iCloud, Fastmail, Nextcloud, and standards-compliant CalDAV " "servers." msgstr "" -#: ui/dialogs/settings-dialog.slint:3236 +#: ui/dialogs/settings-dialog.slint:3284 msgid "Server address" msgstr "" -#: ui/dialogs/settings-dialog.slint:3238 +#: ui/dialogs/settings-dialog.slint:3286 msgid "https://calendar.example.com/" msgstr "" -#: ui/dialogs/settings-dialog.slint:3243 +#: ui/dialogs/settings-dialog.slint:3291 msgid "" "To sync one calendar, such as a shared mailbox's, enter that calendar's own " "address." msgstr "" -#: ui/dialogs/settings-dialog.slint:3253 ui/dialogs/settings-dialog.slint:3374 -#: ui/dialogs/settings-dialog.slint:3253 ui/dialogs/settings-dialog.slint:3374 +#: ui/dialogs/settings-dialog.slint:3301 ui/dialogs/settings-dialog.slint:3422 +#: ui/dialogs/settings-dialog.slint:3301 ui/dialogs/settings-dialog.slint:3422 msgid "Usually your email address" msgstr "" -#: ui/dialogs/settings-dialog.slint:3259 +#: ui/dialogs/settings-dialog.slint:3307 msgid "New app password · Optional" msgstr "" -#: ui/dialogs/settings-dialog.slint:3261 +#: ui/dialogs/settings-dialog.slint:3309 msgid "Leave blank to keep the current password" msgstr "" -#: ui/dialogs/settings-dialog.slint:3261 ui/dialogs/settings-dialog.slint:3383 +#: ui/dialogs/settings-dialog.slint:3309 ui/dialogs/settings-dialog.slint:3431 msgid "Stored securely in your system keyring" msgstr "" -#: ui/dialogs/settings-dialog.slint:3286 ui/dialogs/settings-dialog.slint:3462 -#: ui/dialogs/settings-dialog.slint:3286 ui/dialogs/settings-dialog.slint:3462 +#: ui/dialogs/settings-dialog.slint:3334 ui/dialogs/settings-dialog.slint:3510 +#: ui/dialogs/settings-dialog.slint:3334 ui/dialogs/settings-dialog.slint:3510 msgid "Connecting…" msgstr "" -#: ui/dialogs/settings-dialog.slint:3304 +#: ui/dialogs/settings-dialog.slint:3352 msgid "Edit mail account" msgstr "" -#: ui/dialogs/settings-dialog.slint:3304 ui/dialogs/settings-dialog.slint:3352 -#: ui/dialogs/settings-dialog.slint:3304 ui/dialogs/settings-dialog.slint:3352 +#: ui/dialogs/settings-dialog.slint:3352 ui/dialogs/settings-dialog.slint:3400 +#: ui/dialogs/settings-dialog.slint:3352 ui/dialogs/settings-dialog.slint:3400 msgid "Connect a mail account" msgstr "" -#: ui/dialogs/settings-dialog.slint:3352 +#: ui/dialogs/settings-dialog.slint:3400 msgid "Edit {}" msgstr "" -#: ui/dialogs/settings-dialog.slint:3353 +#: ui/dialogs/settings-dialog.slint:3401 msgid "Uses JMAP for mail sync and sending, with automatic discovery." msgstr "" -#: ui/dialogs/settings-dialog.slint:3353 +#: ui/dialogs/settings-dialog.slint:3401 msgid "Downloads mail from a POP3 server to this device and sends through SMTP." msgstr "" -#: ui/dialogs/settings-dialog.slint:3353 +#: ui/dialogs/settings-dialog.slint:3401 msgid "Uses separate IMAP and SMTP servers for mail sync and sending." msgstr "" -#: ui/dialogs/settings-dialog.slint:3373 ui/dialogs/settings-dialog.slint:3380 +#: ui/dialogs/settings-dialog.slint:3421 ui/dialogs/settings-dialog.slint:3428 msgid "name@example.com" msgstr "" -#: ui/dialogs/settings-dialog.slint:3383 ui/views/onboarding-view.slint:286 -#: ui/dialogs/settings-dialog.slint:3383 ui/views/onboarding-view.slint:286 +#: ui/dialogs/settings-dialog.slint:3431 ui/views/onboarding-view.slint:286 +#: ui/dialogs/settings-dialog.slint:3431 ui/views/onboarding-view.slint:286 msgid "Password, app password, or API token" msgstr "" -#: ui/dialogs/settings-dialog.slint:3383 ui/views/onboarding-view.slint:286 -#: ui/dialogs/settings-dialog.slint:3383 ui/views/onboarding-view.slint:286 +#: ui/dialogs/settings-dialog.slint:3431 ui/views/onboarding-view.slint:286 +#: ui/dialogs/settings-dialog.slint:3431 ui/views/onboarding-view.slint:286 msgid "Password or app password" msgstr "" -#: ui/dialogs/settings-dialog.slint:3390 ui/views/onboarding-view.slint:299 +#: ui/dialogs/settings-dialog.slint:3438 ui/views/onboarding-view.slint:299 msgid "IMAP" msgstr "" -#: ui/dialogs/settings-dialog.slint:3391 ui/views/onboarding-view.slint:307 +#: ui/dialogs/settings-dialog.slint:3439 ui/views/onboarding-view.slint:307 msgid "POP3" msgstr "" -#: ui/dialogs/settings-dialog.slint:3392 ui/views/onboarding-view.slint:315 +#: ui/dialogs/settings-dialog.slint:3440 ui/views/onboarding-view.slint:315 msgid "JMAP" msgstr "" -#: ui/dialogs/settings-dialog.slint:3396 +#: ui/dialogs/settings-dialog.slint:3444 msgid "Server address · Optional" msgstr "" -#: ui/dialogs/settings-dialog.slint:3398 +#: ui/dialogs/settings-dialog.slint:3446 msgid "Discovered from your email domain" msgstr "" -#: ui/dialogs/settings-dialog.slint:3405 ui/views/onboarding-view.slint:339 -#: ui/dialogs/settings-dialog.slint:3405 ui/views/onboarding-view.slint:339 +#: ui/dialogs/settings-dialog.slint:3453 ui/views/onboarding-view.slint:339 +#: ui/dialogs/settings-dialog.slint:3453 ui/views/onboarding-view.slint:339 msgid "POP3 server" msgstr "" -#: ui/dialogs/settings-dialog.slint:3405 ui/views/onboarding-view.slint:339 -#: ui/dialogs/settings-dialog.slint:3405 ui/views/onboarding-view.slint:339 +#: ui/dialogs/settings-dialog.slint:3453 ui/views/onboarding-view.slint:339 +#: ui/dialogs/settings-dialog.slint:3453 ui/views/onboarding-view.slint:339 msgid "IMAP server" msgstr "" -#: ui/dialogs/settings-dialog.slint:3405 +#: ui/dialogs/settings-dialog.slint:3453 msgid "pop.example.com" msgstr "" -#: ui/dialogs/settings-dialog.slint:3405 +#: ui/dialogs/settings-dialog.slint:3453 msgid "imap.example.com" msgstr "" -#: ui/dialogs/settings-dialog.slint:3406 ui/dialogs/settings-dialog.slint:3413 -#: ui/dialogs/settings-dialog.slint:3406 ui/dialogs/settings-dialog.slint:3413 ui/views/onboarding-view.slint:369 +#: ui/dialogs/settings-dialog.slint:3454 ui/dialogs/settings-dialog.slint:3461 +#: ui/dialogs/settings-dialog.slint:3454 ui/dialogs/settings-dialog.slint:3461 ui/views/onboarding-view.slint:369 msgid "Port" msgstr "" -#: ui/dialogs/settings-dialog.slint:3412 ui/views/onboarding-view.slint:361 -#: ui/dialogs/settings-dialog.slint:3412 ui/views/onboarding-view.slint:361 +#: ui/dialogs/settings-dialog.slint:3460 ui/views/onboarding-view.slint:361 +#: ui/dialogs/settings-dialog.slint:3460 ui/views/onboarding-view.slint:361 msgid "SMTP server" msgstr "" -#: ui/dialogs/settings-dialog.slint:3412 +#: ui/dialogs/settings-dialog.slint:3460 msgid "smtp.example.com" msgstr "" -#: ui/dialogs/settings-dialog.slint:3416 ui/views/onboarding-view.slint:377 +#: ui/dialogs/settings-dialog.slint:3464 ui/views/onboarding-view.slint:377 msgid "" "Proton Bridge: use the local servers, ports and password shown in Bridge, " "and match its encryption settings." msgstr "" -#: ui/dialogs/settings-dialog.slint:3462 +#: ui/dialogs/settings-dialog.slint:3510 msgid "Save account" msgstr "" -#: ui/dialogs/settings-dialog.slint:3462 ui/views/onboarding-view.slint:409 +#: ui/dialogs/settings-dialog.slint:3510 ui/views/onboarding-view.slint:409 msgid "Connect account" msgstr "" -#: ui/dialogs/settings-dialog.slint:3483 ui/dialogs/settings-dialog.slint:3539 -#: ui/dialogs/settings-dialog.slint:3483 ui/dialogs/settings-dialog.slint:3539 +#: ui/dialogs/settings-dialog.slint:3531 ui/dialogs/settings-dialog.slint:3587 +#: ui/dialogs/settings-dialog.slint:3531 ui/dialogs/settings-dialog.slint:3587 msgid "Create profile" msgstr "" -#: ui/dialogs/settings-dialog.slint:3540 +#: ui/dialogs/settings-dialog.slint:3588 msgid "" "Its color marks its accounts' mail, and choosing it shows only their mail." msgstr "" -#: ui/dialogs/settings-dialog.slint:3545 +#: ui/dialogs/settings-dialog.slint:3593 msgid "Profile name" msgstr "" -#: ui/dialogs/settings-dialog.slint:3547 +#: ui/dialogs/settings-dialog.slint:3595 msgid "Personal or Work" msgstr "" -#: ui/dialogs/settings-dialog.slint:3553 ui/views/mail-reading-pane.slint:2067 +#: ui/dialogs/settings-dialog.slint:3601 ui/views/mail-reading-pane.slint:2072 msgid "Color" msgstr "" -#: ui/dialogs/settings-dialog.slint:3562 +#: ui/dialogs/settings-dialog.slint:3610 msgid "Profile color {}" msgstr "" -#: ui/dialogs/settings-dialog.slint:3604 +#: ui/dialogs/settings-dialog.slint:3652 msgid "Save profile" msgstr "" -#: ui/dialogs/settings-dialog.slint:3612 +#: ui/dialogs/settings-dialog.slint:3660 msgid "Could not save this profile. Check the name and try again." msgstr "" -#: ui/dialogs/settings-dialog.slint:3630 +#: ui/dialogs/settings-dialog.slint:3678 msgid "Choose a profile for {}" msgstr "" -#: ui/dialogs/settings-dialog.slint:3660 +#: ui/dialogs/settings-dialog.slint:3708 msgid "Delete all local data?" msgstr "" -#: ui/dialogs/settings-dialog.slint:3661 +#: ui/dialogs/settings-dialog.slint:3709 msgid "" "This removes every account, downloaded message, calendar, contact, " "preference, and credential stored by Flectar Mail on this device." msgstr "" -#: ui/dialogs/settings-dialog.slint:3663 +#: ui/dialogs/settings-dialog.slint:3711 msgid "" "Imported mail and the mail of any POP3 account are stored only on this " "device and will be deleted. Mail and events on Gmail, Outlook, and IMAP " "servers will not be deleted." msgstr "" -#: ui/dialogs/settings-dialog.slint:3665 +#: ui/dialogs/settings-dialog.slint:3713 msgid "" "POP3 mail is stored only on this device and will be deleted. Mail and events " "on Gmail, Outlook, and IMAP servers will not be deleted." msgstr "" -#: ui/dialogs/settings-dialog.slint:3666 +#: ui/dialogs/settings-dialog.slint:3714 msgid "Mail and events on Gmail, Outlook, and IMAP servers will not be deleted." msgstr "" -#: ui/dialogs/settings-dialog.slint:3667 +#: ui/dialogs/settings-dialog.slint:3715 msgid "Export POP3 mail…" msgstr "" -#: ui/dialogs/settings-dialog.slint:3672 +#: ui/dialogs/settings-dialog.slint:3720 msgid "Keep my data" msgstr "" -#: ui/dialogs/settings-dialog.slint:3686 +#: ui/dialogs/settings-dialog.slint:3734 msgid "Delete mail on this device?" msgstr "" -#: ui/dialogs/settings-dialog.slint:3688 +#: ui/dialogs/settings-dialog.slint:3736 msgid "Delete the mail you imported and its folders from this device." msgstr "" -#: ui/dialogs/settings-dialog.slint:3689 +#: ui/dialogs/settings-dialog.slint:3737 msgid "It exists only here. Export it first to keep a copy." msgstr "" -#: ui/dialogs/settings-dialog.slint:3694 +#: ui/dialogs/settings-dialog.slint:3742 msgid "Delete mail" msgstr "" -#: ui/dialogs/settings-dialog.slint:3695 +#: ui/dialogs/settings-dialog.slint:3743 msgid "Keep mail" msgstr "" -#: ui/dialogs/settings-dialog.slint:3709 +#: ui/dialogs/settings-dialog.slint:3757 msgid "Remove account?" msgstr "" -#: ui/dialogs/settings-dialog.slint:3711 +#: ui/dialogs/settings-dialog.slint:3759 msgid "Remove this account and its downloaded mail from this device." msgstr "" -#: ui/dialogs/settings-dialog.slint:3713 +#: ui/dialogs/settings-dialog.slint:3761 msgid "" "This account's mail is stored only on this device. Export it first to keep a " "copy." msgstr "" -#: ui/dialogs/settings-dialog.slint:3714 +#: ui/dialogs/settings-dialog.slint:3762 msgid "Messages on the mail server will not be deleted." msgstr "" -#: ui/dialogs/settings-dialog.slint:3719 +#: ui/dialogs/settings-dialog.slint:3767 msgid "Remove account" msgstr "" -#: ui/dialogs/settings-dialog.slint:3720 +#: ui/dialogs/settings-dialog.slint:3768 msgid "Keep account" msgstr "" -#: ui/dialogs/settings-dialog.slint:3734 +#: ui/dialogs/settings-dialog.slint:3782 msgid "Delete profile?" msgstr "" -#: ui/dialogs/settings-dialog.slint:3736 +#: ui/dialogs/settings-dialog.slint:3784 msgid "" "Accounts assigned to this profile will return to their individual or " "generated account colors." msgstr "" -#: ui/dialogs/settings-dialog.slint:3737 +#: ui/dialogs/settings-dialog.slint:3785 msgid "Accounts and provider data are not changed." msgstr "" -#: ui/dialogs/settings-dialog.slint:3739 +#: ui/dialogs/settings-dialog.slint:3787 msgid "Keep profile" msgstr "" -#: ui/dialogs/settings-dialog.slint:3753 +#: ui/dialogs/settings-dialog.slint:3801 msgid "Remove calendar?" msgstr "" -#: ui/dialogs/settings-dialog.slint:3755 +#: ui/dialogs/settings-dialog.slint:3803 msgid "Stop syncing it and remove its events from this device." msgstr "" -#: ui/dialogs/settings-dialog.slint:3756 +#: ui/dialogs/settings-dialog.slint:3804 msgid "Events on the server will not be deleted." msgstr "" -#: ui/dialogs/settings-dialog.slint:3758 +#: ui/dialogs/settings-dialog.slint:3806 msgid "Keep calendar" msgstr "" @@ -7523,7 +7584,7 @@ msgstr "" msgid "Delete selected permanently" msgstr "" -#: ui/views/mail-list-pane.slint:823 ui/views/mail-reading-pane.slint:1058 +#: ui/views/mail-list-pane.slint:823 ui/views/mail-reading-pane.slint:1061 msgid "More message actions" msgstr "" @@ -7536,35 +7597,35 @@ msgid "Open in new tab" msgstr "" #: ui/views/mail-list-pane.slint:835 ui/views/mail-list-pane.slint:1440 -#: ui/views/mail-list-pane.slint:835 ui/views/mail-list-pane.slint:1440 ui/views/mail-reading-pane.slint:375 -#: ui/views/mail-list-pane.slint:835 ui/views/mail-list-pane.slint:1440 ui/views/mail-reading-pane.slint:375 ui/views/mail-reading-pane.slint:415 +#: ui/views/mail-list-pane.slint:835 ui/views/mail-list-pane.slint:1440 ui/views/mail-reading-pane.slint:377 +#: ui/views/mail-list-pane.slint:835 ui/views/mail-list-pane.slint:1440 ui/views/mail-reading-pane.slint:377 ui/views/mail-reading-pane.slint:418 msgid "Move to…" msgstr "" #: ui/views/mail-list-pane.slint:842 ui/views/mail-list-pane.slint:1447 -#: ui/views/mail-list-pane.slint:842 ui/views/mail-list-pane.slint:1447 ui/views/mail-reading-pane.slint:376 -#: ui/views/mail-list-pane.slint:842 ui/views/mail-list-pane.slint:1447 ui/views/mail-reading-pane.slint:376 ui/views/mail-reading-pane.slint:416 +#: ui/views/mail-list-pane.slint:842 ui/views/mail-list-pane.slint:1447 ui/views/mail-reading-pane.slint:378 +#: ui/views/mail-list-pane.slint:842 ui/views/mail-list-pane.slint:1447 ui/views/mail-reading-pane.slint:378 ui/views/mail-reading-pane.slint:419 msgid "Copy to…" msgstr "" #: ui/views/mail-list-pane.slint:849 ui/views/mail-list-pane.slint:1436 -#: ui/views/mail-list-pane.slint:849 ui/views/mail-list-pane.slint:1436 ui/views/mail-reading-pane.slint:373 -#: ui/views/mail-list-pane.slint:849 ui/views/mail-list-pane.slint:1436 ui/views/mail-reading-pane.slint:373 ui/views/mail-reading-pane.slint:414 -#: ui/views/mail-list-pane.slint:849 ui/views/mail-list-pane.slint:1436 ui/views/mail-reading-pane.slint:373 ui/views/mail-reading-pane.slint:414 +#: ui/views/mail-list-pane.slint:849 ui/views/mail-list-pane.slint:1436 ui/views/mail-reading-pane.slint:375 +#: ui/views/mail-list-pane.slint:849 ui/views/mail-list-pane.slint:1436 ui/views/mail-reading-pane.slint:375 ui/views/mail-reading-pane.slint:417 +#: ui/views/mail-list-pane.slint:849 ui/views/mail-list-pane.slint:1436 ui/views/mail-reading-pane.slint:375 ui/views/mail-reading-pane.slint:417 msgid "Mark as unread" msgstr "" #: ui/views/mail-list-pane.slint:850 ui/views/mail-list-pane.slint:1435 -#: ui/views/mail-list-pane.slint:850 ui/views/mail-list-pane.slint:1435 ui/views/mail-reading-pane.slint:365 -#: ui/views/mail-list-pane.slint:850 ui/views/mail-list-pane.slint:1435 ui/views/mail-reading-pane.slint:365 ui/views/mail-reading-pane.slint:406 -#: ui/views/mail-list-pane.slint:850 ui/views/mail-list-pane.slint:1435 ui/views/mail-reading-pane.slint:365 ui/views/mail-reading-pane.slint:406 +#: ui/views/mail-list-pane.slint:850 ui/views/mail-list-pane.slint:1435 ui/views/mail-reading-pane.slint:367 +#: ui/views/mail-list-pane.slint:850 ui/views/mail-list-pane.slint:1435 ui/views/mail-reading-pane.slint:367 ui/views/mail-reading-pane.slint:409 +#: ui/views/mail-list-pane.slint:850 ui/views/mail-list-pane.slint:1435 ui/views/mail-reading-pane.slint:367 ui/views/mail-reading-pane.slint:409 msgid "Star message" msgstr "" #: ui/views/mail-list-pane.slint:851 ui/views/mail-list-pane.slint:1435 -#: ui/views/mail-list-pane.slint:851 ui/views/mail-list-pane.slint:1435 ui/views/mail-reading-pane.slint:365 -#: ui/views/mail-list-pane.slint:851 ui/views/mail-list-pane.slint:1435 ui/views/mail-reading-pane.slint:365 ui/views/mail-reading-pane.slint:406 -#: ui/views/mail-list-pane.slint:851 ui/views/mail-list-pane.slint:1435 ui/views/mail-reading-pane.slint:365 ui/views/mail-reading-pane.slint:406 +#: ui/views/mail-list-pane.slint:851 ui/views/mail-list-pane.slint:1435 ui/views/mail-reading-pane.slint:367 +#: ui/views/mail-list-pane.slint:851 ui/views/mail-list-pane.slint:1435 ui/views/mail-reading-pane.slint:367 ui/views/mail-reading-pane.slint:409 +#: ui/views/mail-list-pane.slint:851 ui/views/mail-list-pane.slint:1435 ui/views/mail-reading-pane.slint:367 ui/views/mail-reading-pane.slint:409 msgid "Remove star" msgstr "" @@ -7596,9 +7657,9 @@ msgstr "" msgid "Deselect {}" msgstr "" -#: ui/views/mail-list-pane.slint:1454 ui/views/mail-reading-pane.slint:336 -#: ui/views/mail-list-pane.slint:1454 ui/views/mail-reading-pane.slint:336 ui/views/mail-reading-pane.slint:379 -#: ui/views/mail-list-pane.slint:1454 ui/views/mail-reading-pane.slint:336 ui/views/mail-reading-pane.slint:379 ui/views/mail-reading-pane.slint:417 +#: ui/views/mail-list-pane.slint:1454 ui/views/mail-reading-pane.slint:337 +#: ui/views/mail-list-pane.slint:1454 ui/views/mail-reading-pane.slint:337 ui/views/mail-reading-pane.slint:382 +#: ui/views/mail-list-pane.slint:1454 ui/views/mail-reading-pane.slint:337 ui/views/mail-reading-pane.slint:382 ui/views/mail-reading-pane.slint:420 msgid "Delete permanently…" msgstr "" @@ -7614,269 +7675,277 @@ msgstr "" msgid "Try another folder or search term." msgstr "" -#: ui/views/mail-reading-pane.slint:149 +#: ui/views/mail-reading-pane.slint:150 msgid "Rendering message…" msgstr "" -#: ui/views/mail-reading-pane.slint:197 +#: ui/views/mail-reading-pane.slint:198 msgid "Message from {}" msgstr "" -#: ui/views/mail-reading-pane.slint:197 ui/views/mail-reading-pane.slint:222 +#: ui/views/mail-reading-pane.slint:198 ui/views/mail-reading-pane.slint:223 msgid "You" msgstr "" -#: ui/views/mail-reading-pane.slint:238 +#: ui/views/mail-reading-pane.slint:239 msgid "Verified brand with BIMI authority evidence" msgstr "" -#: ui/views/mail-reading-pane.slint:240 +#: ui/views/mail-reading-pane.slint:241 msgid "BIMI-authenticated sender" msgstr "" -#: ui/views/mail-reading-pane.slint:242 +#: ui/views/mail-reading-pane.slint:243 msgid "Sender authenticated by Microsoft" msgstr "" -#: ui/views/mail-reading-pane.slint:243 +#: ui/views/mail-reading-pane.slint:244 msgid "Sender domain authenticated with DMARC and DKIM" msgstr "" -#: ui/views/mail-reading-pane.slint:263 +#: ui/views/mail-reading-pane.slint:264 msgid "to {}" msgstr "" -#: ui/views/mail-reading-pane.slint:331 ui/views/mail-reading-pane.slint:1955 +#: ui/views/mail-reading-pane.slint:332 ui/views/mail-reading-pane.slint:1960 msgid "Continue editing" msgstr "" -#: ui/views/mail-reading-pane.slint:333 ui/views/mail-reading-pane.slint:334 -#: ui/views/mail-reading-pane.slint:333 ui/views/mail-reading-pane.slint:334 ui/views/mail-reading-pane.slint:350 -#: ui/views/mail-reading-pane.slint:333 ui/views/mail-reading-pane.slint:334 ui/views/mail-reading-pane.slint:350 ui/views/mail-reading-pane.slint:371 -#: ui/views/mail-reading-pane.slint:333 ui/views/mail-reading-pane.slint:334 ui/views/mail-reading-pane.slint:350 ui/views/mail-reading-pane.slint:371 ui/views/mail-reading-pane.slint:394 -#: ui/views/mail-reading-pane.slint:333 ui/views/mail-reading-pane.slint:334 ui/views/mail-reading-pane.slint:350 ui/views/mail-reading-pane.slint:371 ui/views/mail-reading-pane.slint:394 ui/views/mail-reading-pane.slint:412 +#: ui/views/mail-reading-pane.slint:334 ui/views/mail-reading-pane.slint:335 +#: ui/views/mail-reading-pane.slint:334 ui/views/mail-reading-pane.slint:335 ui/views/mail-reading-pane.slint:351 +#: ui/views/mail-reading-pane.slint:334 ui/views/mail-reading-pane.slint:335 ui/views/mail-reading-pane.slint:351 ui/views/mail-reading-pane.slint:373 +#: ui/views/mail-reading-pane.slint:334 ui/views/mail-reading-pane.slint:335 ui/views/mail-reading-pane.slint:351 ui/views/mail-reading-pane.slint:373 ui/views/mail-reading-pane.slint:397 +#: ui/views/mail-reading-pane.slint:334 ui/views/mail-reading-pane.slint:335 ui/views/mail-reading-pane.slint:351 ui/views/mail-reading-pane.slint:373 ui/views/mail-reading-pane.slint:397 ui/views/mail-reading-pane.slint:415 msgid "Show rendered message" msgstr "" -#: ui/views/mail-reading-pane.slint:333 ui/views/mail-reading-pane.slint:349 -#: ui/views/mail-reading-pane.slint:333 ui/views/mail-reading-pane.slint:349 ui/views/mail-reading-pane.slint:393 -#: ui/views/mail-reading-pane.slint:333 ui/views/mail-reading-pane.slint:349 ui/views/mail-reading-pane.slint:393 +#: ui/views/mail-reading-pane.slint:334 ui/views/mail-reading-pane.slint:350 +#: ui/views/mail-reading-pane.slint:334 ui/views/mail-reading-pane.slint:350 ui/views/mail-reading-pane.slint:396 +#: ui/views/mail-reading-pane.slint:334 ui/views/mail-reading-pane.slint:350 ui/views/mail-reading-pane.slint:396 msgid "Show source" msgstr "" -#: ui/views/mail-reading-pane.slint:334 ui/views/mail-reading-pane.slint:350 -#: ui/views/mail-reading-pane.slint:334 ui/views/mail-reading-pane.slint:350 ui/views/mail-reading-pane.slint:394 -#: ui/views/mail-reading-pane.slint:334 ui/views/mail-reading-pane.slint:350 ui/views/mail-reading-pane.slint:394 +#: ui/views/mail-reading-pane.slint:335 ui/views/mail-reading-pane.slint:351 +#: ui/views/mail-reading-pane.slint:335 ui/views/mail-reading-pane.slint:351 ui/views/mail-reading-pane.slint:397 +#: ui/views/mail-reading-pane.slint:335 ui/views/mail-reading-pane.slint:351 ui/views/mail-reading-pane.slint:397 msgid "View plain text" msgstr "" -#: ui/views/mail-reading-pane.slint:335 ui/views/mail-reading-pane.slint:351 -#: ui/views/mail-reading-pane.slint:335 ui/views/mail-reading-pane.slint:351 ui/views/mail-reading-pane.slint:395 -#: ui/views/mail-reading-pane.slint:335 ui/views/mail-reading-pane.slint:351 ui/views/mail-reading-pane.slint:395 ui/views/mail-reading-pane.slint:1307 +#: ui/views/mail-reading-pane.slint:336 ui/views/mail-reading-pane.slint:352 +#: ui/views/mail-reading-pane.slint:336 ui/views/mail-reading-pane.slint:352 ui/views/mail-reading-pane.slint:398 +#: ui/views/mail-reading-pane.slint:336 ui/views/mail-reading-pane.slint:352 ui/views/mail-reading-pane.slint:398 ui/views/mail-reading-pane.slint:1312 msgid "Use message appearance" msgstr "" -#: ui/views/mail-reading-pane.slint:335 ui/views/mail-reading-pane.slint:351 -#: ui/views/mail-reading-pane.slint:335 ui/views/mail-reading-pane.slint:351 ui/views/mail-reading-pane.slint:395 -#: ui/views/mail-reading-pane.slint:335 ui/views/mail-reading-pane.slint:351 ui/views/mail-reading-pane.slint:395 ui/views/mail-reading-pane.slint:1307 -#: ui/views/mail-reading-pane.slint:335 ui/views/mail-reading-pane.slint:351 ui/views/mail-reading-pane.slint:395 ui/views/mail-reading-pane.slint:1307 +#: ui/views/mail-reading-pane.slint:336 ui/views/mail-reading-pane.slint:352 +#: ui/views/mail-reading-pane.slint:336 ui/views/mail-reading-pane.slint:352 ui/views/mail-reading-pane.slint:398 +#: ui/views/mail-reading-pane.slint:336 ui/views/mail-reading-pane.slint:352 ui/views/mail-reading-pane.slint:398 ui/views/mail-reading-pane.slint:1312 +#: ui/views/mail-reading-pane.slint:336 ui/views/mail-reading-pane.slint:352 ui/views/mail-reading-pane.slint:398 ui/views/mail-reading-pane.slint:1312 msgid "Show original colors" msgstr "" -#: ui/views/mail-reading-pane.slint:344 ui/views/mail-reading-pane.slint:366 -#: ui/views/mail-reading-pane.slint:344 ui/views/mail-reading-pane.slint:366 ui/views/mail-reading-pane.slint:407 -#: ui/views/mail-reading-pane.slint:344 ui/views/mail-reading-pane.slint:366 ui/views/mail-reading-pane.slint:407 +#: ui/views/mail-reading-pane.slint:345 ui/views/mail-reading-pane.slint:368 +#: ui/views/mail-reading-pane.slint:345 ui/views/mail-reading-pane.slint:368 ui/views/mail-reading-pane.slint:410 +#: ui/views/mail-reading-pane.slint:345 ui/views/mail-reading-pane.slint:368 ui/views/mail-reading-pane.slint:410 msgid "Manage labels" msgstr "" -#: ui/views/mail-reading-pane.slint:345 ui/views/mail-reading-pane.slint:367 -#: ui/views/mail-reading-pane.slint:345 ui/views/mail-reading-pane.slint:367 ui/views/mail-reading-pane.slint:408 +#: ui/views/mail-reading-pane.slint:346 ui/views/mail-reading-pane.slint:369 +#: ui/views/mail-reading-pane.slint:346 ui/views/mail-reading-pane.slint:369 ui/views/mail-reading-pane.slint:411 msgid "Decrypt / verify OpenPGP" msgstr "" -#: ui/views/mail-reading-pane.slint:346 ui/views/mail-reading-pane.slint:390 +#: ui/views/mail-reading-pane.slint:347 ui/views/mail-reading-pane.slint:393 msgid "Print message" msgstr "" -#: ui/views/mail-reading-pane.slint:347 ui/views/mail-reading-pane.slint:368 -#: ui/views/mail-reading-pane.slint:347 ui/views/mail-reading-pane.slint:368 ui/views/mail-reading-pane.slint:409 -#: ui/views/mail-reading-pane.slint:347 ui/views/mail-reading-pane.slint:368 ui/views/mail-reading-pane.slint:409 +#: ui/views/mail-reading-pane.slint:348 ui/views/mail-reading-pane.slint:370 +#: ui/views/mail-reading-pane.slint:348 ui/views/mail-reading-pane.slint:370 ui/views/mail-reading-pane.slint:412 +#: ui/views/mail-reading-pane.slint:348 ui/views/mail-reading-pane.slint:370 ui/views/mail-reading-pane.slint:412 msgid "Open in browser" msgstr "" -#: ui/views/mail-reading-pane.slint:356 ui/views/mail-reading-pane.slint:377 +#: ui/views/mail-reading-pane.slint:357 ui/views/mail-reading-pane.slint:379 msgid "Unsubscribe…" msgstr "" -#: ui/views/mail-reading-pane.slint:746 +#: ui/views/mail-reading-pane.slint:359 ui/views/mail-reading-pane.slint:381 +msgid "Unblock sender" +msgstr "" + +#: ui/views/mail-reading-pane.slint:359 ui/views/mail-reading-pane.slint:381 +msgid "Block sender…" +msgstr "" + +#: ui/views/mail-reading-pane.slint:749 msgid "Close conversation" msgstr "" -#: ui/views/mail-reading-pane.slint:756 +#: ui/views/mail-reading-pane.slint:759 msgid "Previous conversation" msgstr "" -#: ui/views/mail-reading-pane.slint:766 +#: ui/views/mail-reading-pane.slint:769 msgid "Next conversation" msgstr "" -#: ui/views/mail-reading-pane.slint:807 +#: ui/views/mail-reading-pane.slint:810 msgid "Archive message" msgstr "" -#: ui/views/mail-reading-pane.slint:910 +#: ui/views/mail-reading-pane.slint:913 msgid "Search labels" msgstr "" -#: ui/views/mail-reading-pane.slint:927 +#: ui/views/mail-reading-pane.slint:930 msgid "Available labels" msgstr "" -#: ui/views/mail-reading-pane.slint:966 +#: ui/views/mail-reading-pane.slint:969 msgid "Smart category" msgstr "" -#: ui/views/mail-reading-pane.slint:1007 ui/views/mail-reading-pane.slint:2052 +#: ui/views/mail-reading-pane.slint:1010 ui/views/mail-reading-pane.slint:2057 msgid "Edit label" msgstr "" -#: ui/views/mail-reading-pane.slint:1024 +#: ui/views/mail-reading-pane.slint:1027 msgid "No matching labels" msgstr "" -#: ui/views/mail-reading-pane.slint:1036 +#: ui/views/mail-reading-pane.slint:1039 msgid "Create label…" msgstr "" -#: ui/views/mail-reading-pane.slint:1308 +#: ui/views/mail-reading-pane.slint:1313 msgid "Show original layout" msgstr "" -#: ui/views/mail-reading-pane.slint:1308 +#: ui/views/mail-reading-pane.slint:1313 msgid "Reader mode" msgstr "" -#: ui/views/mail-reading-pane.slint:1315 +#: ui/views/mail-reading-pane.slint:1320 msgid "Previous match" msgstr "" -#: ui/views/mail-reading-pane.slint:1316 +#: ui/views/mail-reading-pane.slint:1321 msgid "Next match" msgstr "" -#: ui/views/mail-reading-pane.slint:1317 +#: ui/views/mail-reading-pane.slint:1322 msgid "Close find" msgstr "" -#: ui/views/mail-reading-pane.slint:1327 ui/views/mail-reading-pane.slint:1339 +#: ui/views/mail-reading-pane.slint:1332 ui/views/mail-reading-pane.slint:1344 msgid "This message is from a mailing list." msgstr "" -#: ui/views/mail-reading-pane.slint:1350 +#: ui/views/mail-reading-pane.slint:1355 msgid "Some images could not be loaded." msgstr "" -#: ui/views/mail-reading-pane.slint:1351 ui/views/mail-reading-pane.slint:1662 +#: ui/views/mail-reading-pane.slint:1356 ui/views/mail-reading-pane.slint:1667 msgid "Retry images" msgstr "" -#: ui/views/mail-reading-pane.slint:1356 +#: ui/views/mail-reading-pane.slint:1361 msgid "Reload message" msgstr "" -#: ui/views/mail-reading-pane.slint:1418 +#: ui/views/mail-reading-pane.slint:1423 msgid "Remote images were blocked to protect your privacy." msgstr "" -#: ui/views/mail-reading-pane.slint:1427 +#: ui/views/mail-reading-pane.slint:1432 msgid "Load images" msgstr "" -#: ui/views/mail-reading-pane.slint:1465 +#: ui/views/mail-reading-pane.slint:1470 msgid "Loading image…" msgstr "" -#: ui/views/mail-reading-pane.slint:1465 +#: ui/views/mail-reading-pane.slint:1470 msgid "Blocked image" msgstr "" -#: ui/views/mail-reading-pane.slint:1465 +#: ui/views/mail-reading-pane.slint:1470 msgid "Image exceeds limits" msgstr "" -#: ui/views/mail-reading-pane.slint:1465 +#: ui/views/mail-reading-pane.slint:1470 msgid "Image unavailable" msgstr "" -#: ui/views/mail-reading-pane.slint:1611 +#: ui/views/mail-reading-pane.slint:1616 msgid "Show rendered email" msgstr "" -#: ui/views/mail-reading-pane.slint:1634 +#: ui/views/mail-reading-pane.slint:1639 msgid "Copy this HTML into your GitHub rendering issue." msgstr "" -#: ui/views/mail-reading-pane.slint:1651 +#: ui/views/mail-reading-pane.slint:1656 msgid "Show email" msgstr "" -#: ui/views/mail-reading-pane.slint:1661 +#: ui/views/mail-reading-pane.slint:1666 msgid "View original plain text" msgstr "" -#: ui/views/mail-reading-pane.slint:1663 +#: ui/views/mail-reading-pane.slint:1668 msgid "Copy formatted selection" msgstr "" -#: ui/views/mail-reading-pane.slint:1667 +#: ui/views/mail-reading-pane.slint:1672 msgid "Copy selected text" msgstr "" -#: ui/views/mail-reading-pane.slint:1677 +#: ui/views/mail-reading-pane.slint:1682 msgid "Copy all email text" msgstr "" -#: ui/views/mail-reading-pane.slint:1687 +#: ui/views/mail-reading-pane.slint:1692 msgid "Select all email text" msgstr "" -#: ui/views/mail-reading-pane.slint:1705 +#: ui/views/mail-reading-pane.slint:1710 msgid "Link: {}" msgstr "" -#: ui/views/mail-reading-pane.slint:1894 +#: ui/views/mail-reading-pane.slint:1899 msgid "Heading: {}" msgstr "" -#: ui/views/mail-reading-pane.slint:2016 +#: ui/views/mail-reading-pane.slint:2021 msgid "No message selected" msgstr "" -#: ui/views/mail-reading-pane.slint:2017 +#: ui/views/mail-reading-pane.slint:2022 msgid "Choose an email to read it here." msgstr "" -#: ui/views/mail-reading-pane.slint:2059 +#: ui/views/mail-reading-pane.slint:2064 msgid "Label name" msgstr "" -#: ui/views/mail-reading-pane.slint:2079 +#: ui/views/mail-reading-pane.slint:2084 msgid "Pink" msgstr "" -#: ui/views/mail-reading-pane.slint:2080 +#: ui/views/mail-reading-pane.slint:2085 msgid "Red" msgstr "" -#: ui/views/mail-reading-pane.slint:2081 +#: ui/views/mail-reading-pane.slint:2086 msgid "Amber" msgstr "" -#: ui/views/mail-reading-pane.slint:2084 +#: ui/views/mail-reading-pane.slint:2089 msgid "Slate" msgstr "" -#: ui/views/mail-reading-pane.slint:2089 +#: ui/views/mail-reading-pane.slint:2094 msgid "Use across all accounts (local only)" msgstr "" diff --git a/src/block_sender.rs b/src/block_sender.rs new file mode 100644 index 00000000..023ea952 --- /dev/null +++ b/src/block_sender.rs @@ -0,0 +1,222 @@ +//! Blocking the sender of the open message (#227). A dialog asks first; +//! their mail in an inbox then moves to Spam, with Undo, and sync sends what +//! they mail later there too (`Core::block_sender`). Settings lists the +//! blocked addresses. + +use super::*; +use std::future::Future; + +struct Controller { + app: slint::Weak, + state: Rc>, + runtime: tokio::runtime::Handle, +} + +thread_local! { + static CONTROLLER: RefCell>> = const { RefCell::new(None) }; +} + +fn with_controller(f: impl FnOnce(&Rc)) { + let controller = CONTROLLER.with(|slot| slot.borrow().clone()); + if let Some(controller) = controller { + f(&controller); + } +} + +pub(super) fn install( + app: &AppWindow, + state: &Rc>, + runtime: &tokio::runtime::Handle, +) { + CONTROLLER.with(|slot| { + *slot.borrow_mut() = Some(Rc::new(Controller { + app: app.as_weak(), + state: Rc::clone(state), + runtime: runtime.clone(), + })); + }); + let ui = app.global::(); + ui.on_start(|| with_controller(|controller| controller.start())); + ui.on_confirm(|| with_controller(|controller| controller.confirm())); + ui.on_close(|| with_controller(|controller| controller.close())); + ui.on_unblock(|address| { + with_controller(|controller| controller.unblock(address.to_string(), false)); + }); +} + +/// Show the blocked addresses in Settings, once the core is there. +pub(super) fn refresh() { + with_controller(|controller| controller.refresh_list()); +} + +/// Undo took a block back. +pub(super) fn unblocked(address: &str) { + with_controller(|controller| controller.changed(address, false)); +} + +impl Controller { + fn core(&self) -> Option { + self.state.borrow().core.clone() + } + + /// The menu: ask before blocking the sender of the open message, or + /// unblock them. + fn start(&self) { + let Some(app) = self.app.upgrade() else { + return; + }; + let ui = app.global::(); + if !ui.get_stage().is_empty() || !ui.get_available() { + return; + } + let address = app.get_selected_address().to_string(); + if ui.get_blocked() { + self.unblock(address, true); + return; + } + let Some(core) = self.core() else { + return; + }; + let name = app.get_selected_sender().to_string(); + self.spawn( + async move { core.block_offer(&address).await }, + move |app, result| match result { + Ok(Some(offer)) => { + let ui = app.global::(); + // A sender known only by address is named by it once. + let name = if name.eq_ignore_ascii_case(&offer.address) { + String::new() + } else { + name + }; + ui.set_name(name.into()); + ui.set_address(offer.address.into()); + ui.set_inbox_count(i32::try_from(offer.inbox_count).unwrap_or(i32::MAX)); + ui.set_stage("confirm".into()); + } + Ok(None) => {} + Err(error) => { + crate::undo::tell(&app, UiMessage::detail("Could not block: {}", error)) + } + }, + ); + } + + /// The dialog's Block button. + fn confirm(&self) { + let Some(app) = self.app.upgrade() else { + return; + }; + let ui = app.global::(); + if ui.get_stage() != "confirm" { + return; + } + let Some(core) = self.core() else { + return; + }; + let address = ui.get_address().to_string(); + ui.set_stage("working".into()); + self.spawn( + async move { core.block_sender(&address).await }, + |app, result| { + app.global::().set_stage("".into()); + match result { + Ok(blocked) => { + with_controller(|controller| controller.changed(&blocked.address, true)); + crate::undo::blocked(&app, blocked.address, blocked.action_ids); + } + Err(error) => { + crate::undo::tell(&app, UiMessage::detail("Could not block: {}", error)) + } + } + }, + ); + } + + fn close(&self) { + if let Some(app) = self.app.upgrade() { + let ui = app.global::(); + if ui.get_stage() != "working" { + ui.set_stage("".into()); + } + } + } + + /// Settings, or the menu of a blocked sender's message: stop blocking + /// `address`, and say so when asked from a message. + fn unblock(&self, address: String, tell: bool) { + let Some(core) = self.core() else { + return; + }; + self.spawn( + async move { core.unblock_sender(&address).await.map(|()| address) }, + move |app, result| match result { + Ok(address) => { + with_controller(|controller| controller.changed(&address, false)); + if tell { + crate::undo::tell(&app, UiMessage::detail("Unblocked {}.", address)); + } + } + Err(error) => { + crate::undo::tell(&app, UiMessage::detail("Could not unblock: {}", error)) + } + }, + ); + } + + /// The block list changed: the open message's menu, the loaded rows from + /// that sender, and Settings follow. + fn changed(&self, address: &str, blocked: bool) { + if let Some(app) = self.app.upgrade() + && app.get_selected_address().eq_ignore_ascii_case(address) + { + app.global::().set_blocked(blocked); + } + for message in self.state.borrow_mut().messages.iter_mut() { + if message.address.eq_ignore_ascii_case(address) { + message.sender_blocked = blocked; + } + } + self.refresh_list(); + } + + fn refresh_list(&self) { + let Some(core) = self.core() else { + return; + }; + self.spawn( + async move { core.blocked_addresses().await }, + |app, result| { + if let Ok(addresses) = result { + let addresses = addresses + .into_iter() + .map(slint::SharedString::from) + .collect::>(); + app.global::() + .set_addresses(ModelRc::new(VecModel::from(addresses))); + } + }, + ); + } + + /// Run `work` on the runtime and `apply` its result on the UI thread. + fn spawn( + &self, + work: impl Future> + Send + 'static, + apply: impl FnOnce(AppWindow, Result) + 'static, + ) { + let weak = self.app.clone(); + let task = self.runtime.spawn(work); + let abort = task.abort_handle(); + if slint::spawn_local(async move { + let result = task.await.unwrap_or_else(|error| Err(error.to_string())); + if let Some(app) = weak.upgrade() { + apply(app, result); + } + }) + .is_err() + { + abort.abort(); + } + } +} diff --git a/src/mail.rs b/src/mail.rs index 43b84700..34ea25fc 100644 --- a/src/mail.rs +++ b/src/mail.rs @@ -6,13 +6,14 @@ use flectar_mail_core::{ events::CoreEvent, models::{ Account, AccountConfig, ActionKind, ActionParams, ActionTarget, AddPasswordAccountArgs, - Address, CalendarConnection, CalendarEvent, CardDavConnection, ConnectCaldavArgs, - ConnectCardDavArgs, ContactRecordCursor, ContactRecordPage, CreateEventArgs, CustomTheme, - DraftAttachmentIn, FolderInfo, Label, MailGrouping, MailHistory, MailProfile, MailProtocol, - MailboxBadgeCounts, MessageCursor, MessageDetail, MessageSearchCursor, MessageSummary, - PerformActionArgs, PortableAccountConfig, Provider, QueueSendArgs, QueueSendResult, - SaveDraftArgs, SearchCursor, Settings, Snippet, ThreadCursor, ThreadSummary, - UnsubscribeOffer, UnsubscribeOutcome, View, normalized_workspace_list_pane_width, roles, + Address, BlockOffer, BlockResult, CalendarConnection, CalendarEvent, CardDavConnection, + ConnectCaldavArgs, ConnectCardDavArgs, ContactRecordCursor, ContactRecordPage, + CreateEventArgs, CustomTheme, DraftAttachmentIn, FolderInfo, Label, MailGrouping, + MailHistory, MailProfile, MailProtocol, MailboxBadgeCounts, MessageCursor, MessageDetail, + MessageSearchCursor, MessageSummary, PerformActionArgs, PortableAccountConfig, Provider, + QueueSendArgs, QueueSendResult, SaveDraftArgs, SearchCursor, Settings, Snippet, + ThreadCursor, ThreadSummary, UnsubscribeOffer, UnsubscribeOutcome, View, + normalized_workspace_list_pane_width, roles, }, }; #[cfg(test)] @@ -90,6 +91,10 @@ pub struct MailMessage { /// The message names a way to leave the mailing list it came from, and /// is neither one's own nor in the spam folder. pub can_unsubscribe: bool, + /// Someone else sent the message, from an address that can be blocked. + pub can_block: bool, + /// Its sender is blocked: their mail goes to Spam. + pub sender_blocked: bool, /// The one-time code the message asks its reader to enter. pub verification_code: Option, /// Gmail labels are tags; other accounts file labels like folders. @@ -133,6 +138,8 @@ impl MailMessage { body_pending: false, sender_verification: String::new(), can_unsubscribe: false, + can_block: false, + sender_blocked: false, verification_code: None, account_uses_labels: false, first_attachment: None, @@ -1876,6 +1883,38 @@ impl CoreMailSource { .map_err(|error| error.to_string()) } + /// `address` as it would be blocked, for the confirmation first. + pub async fn block_offer(&self, address: &str) -> Result, String> { + self.core + .block_offer(address) + .await + .map_err(|error| error.to_string()) + } + + /// Block `address`; what moved to Spam, for Undo. + pub async fn block_sender(&self, address: &str) -> Result { + self.core + .block_sender(address) + .await + .map_err(|error| error.to_string()) + } + + pub async fn unblock_sender(&self, address: &str) -> Result<(), String> { + self.core + .unblock_sender(address) + .await + .map_err(|error| error.to_string()) + } + + /// Every blocked address, alphabetically. + pub async fn blocked_addresses(&self) -> Result, String> { + self.core + .blocked_senders() + .await + .map(|senders| senders.into_iter().map(|sender| sender.address).collect()) + .map_err(|error| error.to_string()) + } + /// Take back the actions of one gesture. False when none could be. pub async fn undo_actions(&self, action_ids: Vec) -> Result { self.core @@ -3039,6 +3078,8 @@ fn summary_to_message( body_pending: true, sender_verification: String::new(), can_unsubscribe: false, + can_block: false, + sender_blocked: false, verification_code: thread.verification_code, account_uses_labels: thread_account .is_some_and(|account| account.mail_protocol == MailProtocol::Gmail), @@ -3145,6 +3186,8 @@ fn message_summary_to_message( body_pending: true, sender_verification: String::new(), can_unsubscribe: false, + can_block: false, + sender_blocked: false, verification_code: message.verification_code, account_uses_labels: message_account .is_some_and(|account| account.mail_protocol == MailProtocol::Gmail), @@ -3261,6 +3304,8 @@ fn detail_to_message(row: &MailMessage, message: &MessageDetail, body_loaded: bo && message.list_unsubscribe.as_deref().is_some_and(|header| { flectar_mail_core::unsubscribe::plan(header, false).is_some() }), + can_block: !message.is_draft && !message.is_outgoing && message.from.email.contains('@'), + sender_blocked: message.sender_blocked, verification_code: row.verification_code.clone(), account_uses_labels: row.account_uses_labels, first_attachment: row.first_attachment.clone(), diff --git a/src/mail_render_projection.rs b/src/mail_render_projection.rs index 5bfb37b6..0291a6f3 100644 --- a/src/mail_render_projection.rs +++ b/src/mail_render_projection.rs @@ -120,6 +120,9 @@ pub(super) fn clear_reader_projection(app: &AppWindow) { app.global::().set_original(false); app.global::().invoke_close_reader(); app.global::().set_available(false); + let block = app.global::(); + block.set_available(false); + block.set_blocked(false); let reader = app.global::(); reader.set_available(false); reader.set_body_pending(false); @@ -160,6 +163,9 @@ pub(super) fn apply_email( app.set_selected_sender_verification(email.sender_verification.clone().into()); app.global::() .set_available(email.can_unsubscribe); + let block = app.global::(); + block.set_available(email.can_block); + block.set_blocked(email.sender_blocked); let reader = app.global::(); reader.set_body_pending(email.body_pending); reader.set_authored_text(email.text.clone().unwrap_or_default().into()); diff --git a/src/mail_view_model.rs b/src/mail_view_model.rs index ffff9ced..98825a66 100644 --- a/src/mail_view_model.rs +++ b/src/mail_view_model.rs @@ -1872,6 +1872,8 @@ mod tests { body_pending: true, sender_verification: String::new(), can_unsubscribe: false, + can_block: false, + sender_blocked: false, verification_code: None, account_uses_labels: false, first_attachment: None, diff --git a/src/main.rs b/src/main.rs index 4d39a48f..9d3cc26b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,6 +7,7 @@ mod app_runtime; mod attachment_controller; #[cfg(desktop)] mod autostart; +mod block_sender; mod browser; pub use browser::ExternalUrlOpener; mod calendar; @@ -4538,6 +4539,7 @@ pub fn run(platform: PlatformContext) -> Result<(), Box> app.set_startup_hydrated(true); app.set_startup_ready(true); mailto_links::open_pending_soon(&app); + block_sender::refresh(); app.invoke_product_changed(app.get_active_view()); app.global::().invoke_restore_active(); app.set_startup_failed(false); @@ -6093,6 +6095,7 @@ pub fn run(platform: PlatformContext) -> Result<(), Box> mailto_links::install(&app, composers); undo::install(&app, &state, &runtime); unsubscribe::install(&app, &state, &runtime, platform.external_urls.clone()); + block_sender::install(&app, &state, &runtime); #[cfg(target_os = "macos")] mailto_links::receive_from_macos(&app); notifications::ui::attach(&app, &state, &runtime, platform.notifications.clone()); diff --git a/src/startup.rs b/src/startup.rs index 33af2786..c13f0b2a 100644 --- a/src/startup.rs +++ b/src/startup.rs @@ -142,6 +142,8 @@ impl From for mail::MailMessage { sender_verification: message.sender_verification, // The banner waits for the message itself. can_unsubscribe: false, + can_block: false, + sender_blocked: false, verification_code: None, account_uses_labels: message.account_uses_labels, first_attachment: None, @@ -1270,6 +1272,8 @@ mod warm_start_tests { body_pending: false, sender_verification: "domain".into(), can_unsubscribe: false, + can_block: false, + sender_blocked: false, verification_code: Some("48291375".into()), account_uses_labels: true, first_attachment: Some(flectar_mail_core::models::AttachmentMeta { diff --git a/src/undo.rs b/src/undo.rs index de4a5ca9..7ca58481 100644 --- a/src/undo.rs +++ b/src/undo.rs @@ -34,6 +34,11 @@ enum Shown { Send { action_id: i64, draft_id: i64 }, /// The actions of one archive, move, deletion or change of marks. Gesture { action_ids: Vec }, + /// A sender just blocked, and the moves of their inbox mail to Spam. + Block { + address: String, + action_ids: Vec, + }, /// News with nothing to take back. Note, } @@ -136,6 +141,24 @@ pub(super) fn gesture(app: &AppWindow, action_ids: Vec, batch: UndoableBatc }); } +/// A sender was just blocked: tell of it, with Undo, which unblocks them +/// and puts their mail back. +pub(super) fn blocked(app: &AppWindow, address: String, action_ids: Vec) { + with_undo(|undo| { + let message = UiMessage::detail("Blocked {}.", &address); + undo.show( + app, + Shown::Block { + address, + action_ids, + }, + message, + "undo", + Some(GESTURE_NOTICE_FOR), + ); + }); +} + /// Tell of something done that cannot be taken back here, such as leaving /// a mailing list. pub(super) fn tell(app: &AppWindow, message: UiMessage) { @@ -255,6 +278,13 @@ impl Undo { }, ) => self.undo_send(&app, action_id, draft_id), ("undo", Shown::Gesture { action_ids }) => self.undo_gesture(&app, action_ids), + ( + "undo", + Shown::Block { + address, + action_ids, + }, + ) => self.undo_block(&app, address, action_ids), ("open-draft", Shown::Send { draft_id, .. }) => { self.hide_notice(); composer::reopen_draft(draft_id); @@ -329,6 +359,42 @@ impl Undo { } } + fn undo_block(self: &Rc, app: &AppWindow, address: String, action_ids: Vec) { + let Some(core) = self.state.borrow().core.clone() else { + return; + }; + let shown = Shown::Block { + address: address.clone(), + action_ids: action_ids.clone(), + }; + let unblocked = self.runtime.block_on(core.unblock_sender(&address)); + if unblocked.is_ok() { + crate::block_sender::unblocked(&address); + } + let result = match unblocked { + Err(error) => Err(error), + Ok(()) if action_ids.is_empty() => Ok(true), + Ok(()) => self.runtime.block_on(core.undo_actions(action_ids)), + }; + match result { + Ok(true) => self.hide_notice(), + Ok(false) => self.show( + app, + shown, + UiMessage::plain("This can no longer be undone."), + "", + Some(ANSWER_NOTICE_FOR), + ), + Err(error) => self.show( + app, + shown, + UiMessage::detail("Could not undo: {}", error), + "", + Some(ANSWER_NOTICE_FOR), + ), + } + } + /// A message left, or could not. fn finished(self: &Rc, action_id: i64, result: Result<(), String>) { let ended = { diff --git a/ui/app.slint b/ui/app.slint index 8ce24d19..68bfee94 100644 --- a/ui/app.slint +++ b/ui/app.slint @@ -12,6 +12,7 @@ export { SystemNotifications } from "system-notifications.slint"; export { Updates } from "updates.slint"; export { Notice } from "notice.slint"; export { Unsubscribe } from "unsubscribe.slint"; +export { BlockSender } from "block-sender.slint"; import { AppIcon, AppIconVariant } from "app-icon.slint"; import { WindowChrome, WindowControls, WindowDragArea } from "window-chrome.slint"; // Bundled once at compile time and used throughout the application chrome. @@ -42,6 +43,8 @@ import { NoticeToast } from "components/notice-toast.slint"; import { Notice } from "notice.slint"; import { UnsubscribeDialog } from "dialogs/unsubscribe-dialog.slint"; import { Unsubscribe } from "unsubscribe.slint"; +import { BlockSenderDialog } from "dialogs/block-sender-dialog.slint"; +import { BlockSender } from "block-sender.slint"; import { BoundComposer, ComposerUi } from "components/composer-ui.slint"; import { ComposerText } from "components/composer-fields.slint"; export { ComposerUi } from "components/composer-ui.slint"; @@ -592,6 +595,10 @@ export global I18n { if (key == "Could not unsubscribe: {}") { return @tr("Could not unsubscribe: {}", argument); } if (key == "Unsubscribed from {}.") { return @tr("Unsubscribed from {}.", argument); } if (key == "Unsubscribe request sent to {}.") { return @tr("Unsubscribe request sent to {}.", argument); } + if (key == "Blocked {}.") { return @tr("Blocked {}.", argument); } + if (key == "Unblocked {}.") { return @tr("Unblocked {}.", argument); } + if (key == "Could not block: {}") { return @tr("Could not block: {}", argument); } + if (key == "Could not unblock: {}") { return @tr("Could not unblock: {}", argument); } if (key == "Moved {} messages to the other account.") { return @tr("Moved one message to the other account." | "Moved {0} messages to the other account." % round(argument.to-float()), argument); } if (key == "Copied {} messages to the other account.") { return @tr("Copied one message to the other account." | "Copied {0} messages to the other account." % round(argument.to-float()), argument); } if (key == "Moved or copied {} messages to the other account.") { return @tr("Moved or copied one message to the other account." | "Moved or copied {0} messages to the other account." % round(argument.to-float()), argument); } @@ -2326,6 +2333,14 @@ export component AppWindow inherits Window { z: 16000; } + if BlockSender.stage != "" : BlockSenderDialog { + x: root.content-x; + y: root.content-y; + width: root.content-width; + height: root.content-height; + z: 16000; + } + if root.trash-delete-open : ConfirmationDialog { x: root.content-x; y: root.content-y; diff --git a/ui/block-sender.slint b/ui/block-sender.slint new file mode 100644 index 00000000..0acd3b7d --- /dev/null +++ b/ui/block-sender.slint @@ -0,0 +1,24 @@ +// Blocking the sender of the open message, whose mail then goes to Spam +// (src/block_sender.rs). +export global BlockSender { + // The open message has a sender who can be blocked. + in property available; + // Its sender is blocked already. + in property blocked; + // Where the dialog is: "" (closed), "confirm" or "working". + in property stage; + // Whom the dialog is about. + in property name; + in property address; + // How many of their messages are in an inbox now. + in property inbox-count; + // Every blocked address, for Settings. + in property <[string]> addresses; + // The menu: ask before blocking the open message's sender, or unblock + // them. + callback start(); + callback confirm(); + callback close(); + // Settings: stop blocking this address. + callback unblock(string); +} diff --git a/ui/dialogs/block-sender-dialog.slint b/ui/dialogs/block-sender-dialog.slint new file mode 100644 index 00000000..dba6ddfb --- /dev/null +++ b/ui/dialogs/block-sender-dialog.slint @@ -0,0 +1,136 @@ +import { VerticalBox, HorizontalBox } from "std-widgets.slint"; +import { AppTheme } from "../design-system.slint"; +import { Button } from "../components/button.slint"; +import { TypeScale } from "../typography.slint"; +import { BlockSender } from "../block-sender.slint"; + +// Asks before blocking the sender of the open message: their mail goes to +// Spam from then on, and what is in an inbox now moves there +// (src/block_sender.rs). +export component BlockSenderDialog inherits Rectangle { + private property narrow: panel.width < 360px; + private property working: BlockSender.stage == "working"; + private property title: @tr("Block {}?", BlockSender.name != "" ? BlockSender.name : BlockSender.address); + + visible: BlockSender.stage != ""; + background: #00000088; + z: 1000; + accessible-role: groupbox; + accessible-label: root.title; + + function cancel() { + if !root.working { + BlockSender.close(); + } + } + + changed visible => { + if self.visible { + dialog-focus.focus(); + } + } + + // Consume pointer input over the scrim. + TouchArea { } + + panel := Rectangle { + x: (parent.width - self.width) / 2; + y: (parent.height - self.height) / 2; + width: min(440px, parent.width - 32px); + height: max(172px, dialog-content.preferred-height); + border-radius: 12px; + border-width: 1px; + border-color: AppTheme.border; + background: AppTheme.surface; + drop-shadow-blur: 24px; + drop-shadow-offset-y: 8px; + drop-shadow-color: #00000055; + + dialog-focus := FocusScope { + key-pressed(event) => { + if event.text == Key.Escape { + root.cancel(); + return accept; + } + reject + } + + dialog-content := VerticalBox { + padding-top: 22px; + padding-right: 22px; + padding-bottom: 20px; + padding-left: 22px; + spacing: 12px; + + HorizontalBox { + height: max(root.narrow ? 56px : 42px, dialog-title.preferred-height + 16px); + padding: 0px; + spacing: 12px; + Rectangle { + width: 42px; + height: 42px; + border-radius: 21px; + background: AppTheme.accent-soft; + Image { + x: 11px; + y: 11px; + width: 20px; + height: 20px; + source: @image-url("../icons/lucide/outline/ban.svg"); + colorize: AppTheme.accent; + image-fit: contain; + accessible-role: none; + } + } + dialog-title := Text { + text: root.title; + color: AppTheme.title; + font-size: TypeScale.heading; + font-weight: 700; + vertical-alignment: center; + wrap: word-wrap; + } + } + + Text { + height: max(24px, self.preferred-height); + text: @tr("Future mail from {} will go to Spam.", BlockSender.address); + color: AppTheme.body; + font-size: TypeScale.secondary; + wrap: word-wrap; + } + if BlockSender.inbox-count > 0 : Text { + height: self.preferred-height; + text: @tr("Their message in your inbox moves there now." | "Their {n} messages in your inbox move there now." % BlockSender.inbox-count); + color: AppTheme.muted; + font-size: TypeScale.caption; + wrap: word-wrap; + } + Rectangle { vertical-stretch: 1; } + + // Wide panels put the buttons in a row, the main one last; + // narrow ones stack them, the main one first. + GridLayout { + spacing: 8px; + Button { + row: root.narrow ? 1 : 0; + col: 0; + height: 34px; + enabled: !root.working; + text: @tr("Cancel"); + clicked => { BlockSender.close(); } + } + Button { + row: 0; + col: root.narrow ? 0 : 1; + height: 34px; + primary: true; + enabled: !root.working; + text: root.working ? @tr("Blocking…") : @tr("Block"); + clicked => { BlockSender.confirm(); } + } + } + } + } + } +} diff --git a/ui/dialogs/settings-dialog.slint b/ui/dialogs/settings-dialog.slint index d9e33df0..46eb6d72 100644 --- a/ui/dialogs/settings-dialog.slint +++ b/ui/dialogs/settings-dialog.slint @@ -32,6 +32,7 @@ import { CompactPageHeader, WorkspaceSidebarSurface } from "../components/worksp import { TabSwitcherButton } from "../components/tab-overview.slint"; import { LocalMailUi } from "../local-mail.slint"; import { Numbers } from "../numbers.slint"; +import { BlockSender } from "../block-sender.slint"; // Use the same focusable controls in both account-card layouts. component AccountActions inherits HorizontalLayout { @@ -1900,6 +1901,53 @@ export component SettingsDialog inherits Rectangle { } } } + Rectangle { + height: max(112px, blocked-senders.preferred-height); + background: root.surface; + border-radius: 8px; + border-width: 1px; + border-color: root.border-subtle; + blocked-senders := VerticalBox { + padding: 18px; + spacing: 8px; + Text { text: @tr("Blocked senders"); color: root.heading; font-size: TypeScale.subtitle; font-weight: 700; wrap: word-wrap; } + Text { + height: self.preferred-height; + text: @tr("Their mail goes to Spam when Flectar Mail receives it. Block a sender from the menu of one of their messages."); + color: root.faint-text; + font-size: TypeScale.caption; + wrap: word-wrap; + } + if BlockSender.addresses.length == 0 : Text { + text: @tr("No one is blocked."); + color: root.secondary-text; + font-size: TypeScale.secondary; + wrap: word-wrap; + } + for address in BlockSender.addresses : HorizontalBox { + height: 36px; + // The buttons line up with the card's other buttons. + padding: 0px; + padding-right: 8px; + spacing: 8px; + Text { + text: address; + color: root.body-text; + font-size: TypeScale.secondary; + vertical-alignment: center; + overflow: elide; + horizontal-stretch: 1; + } + Button { + width: max(96px, self.content-width); + horizontal-stretch: 0; + text: @tr("Unblock"); + accessible-label: @tr("Unblock {}", address); + clicked => { BlockSender.unblock(address); } + } + } + } + } if root.sync_status != "" : CopyableDiagnostic { text: root.sync_status; text-color: root.secondary-text; diff --git a/ui/icons/lucide/outline/ban.svg b/ui/icons/lucide/outline/ban.svg new file mode 100644 index 00000000..d2206e43 --- /dev/null +++ b/ui/icons/lucide/outline/ban.svg @@ -0,0 +1,17 @@ + + + + + + diff --git a/ui/icons/lucide/sources.json b/ui/icons/lucide/sources.json index 7f36fc09..804052d2 100644 --- a/ui/icons/lucide/sources.json +++ b/ui/icons/lucide/sources.json @@ -9,6 +9,9 @@ "arrow-left.svg": { "source": "arrow-left" }, + "ban.svg": { + "source": "ban" + }, "bold.svg": { "source": "bold" }, @@ -230,6 +233,10 @@ "path": "sources/arrow-left.svg", "sha256": "bef90f9aa435042faf0b71d95e7f9da0f2dff2bb026cafaca2f506aee4c45c03" }, + "ban": { + "path": "sources/ban.svg", + "sha256": "7cdacf6d52ee1b4da0406b62bb738c9ff2c2acc98f097ff2916534887fcf280c" + }, "bell": { "path": "sources/bell.svg", "sha256": "5a53e47f042acc608da90edca964a918e656814dab4927c19051542c84df3fd0" diff --git a/ui/icons/lucide/sources/ban.svg b/ui/icons/lucide/sources/ban.svg new file mode 100644 index 00000000..1065d8ee --- /dev/null +++ b/ui/icons/lucide/sources/ban.svg @@ -0,0 +1,16 @@ + + + + + diff --git a/ui/views/mail-reading-pane.slint b/ui/views/mail-reading-pane.slint index b69b5216..ff617f9d 100644 --- a/ui/views/mail-reading-pane.slint +++ b/ui/views/mail-reading-pane.slint @@ -21,6 +21,7 @@ import { WindowChrome, WindowControlsClearance } from "../window-chrome.slint"; import { Shortcuts } from "../shortcuts.slint"; import { LocalMailUi } from "../local-mail.slint"; import { Unsubscribe } from "../unsubscribe.slint"; +import { BlockSender } from "../block-sender.slint"; component ReaderControl inherits ToolbarIconButton { tooltip-above: true; @@ -355,6 +356,7 @@ export component MailReadingPane inherits FocusScope { { id: "copy", title: @tr("Copy to…"), icon: @image-url("../icons/lucide/outline/copy.svg") }, { id: "unsubscribe", title: @tr("Unsubscribe…"), icon: @image-url("../icons/lucide/outline/mail-x.svg"), disabled: !Unsubscribe.available }, { id: "spam", title: @tr("Move to spam"), icon: @image-url("../icons/lucide/outline/alert.svg") }, + { id: "block", title: BlockSender.blocked ? @tr("Unblock sender") : @tr("Block sender…"), icon: @image-url("../icons/lucide/outline/ban.svg"), disabled: !BlockSender.available }, { id: root.trash_view ? "delete_permanently" : "trash", title: root.trash_view ? @tr("Delete permanently…") : @tr("Move to trash"), icon: @image-url("../icons/lucide/outline/trash.svg"), destructive: true }, ]; private property <[ActionMenuEntry]> message-action-menu-no-print: [ @@ -376,6 +378,7 @@ export component MailReadingPane inherits FocusScope { { id: "copy", title: @tr("Copy to…"), icon: @image-url("../icons/lucide/outline/copy.svg") }, { id: "unsubscribe", title: @tr("Unsubscribe…"), icon: @image-url("../icons/lucide/outline/mail-x.svg"), disabled: !Unsubscribe.available }, { id: "spam", title: @tr("Move to spam"), icon: @image-url("../icons/lucide/outline/alert.svg") }, + { id: "block", title: BlockSender.blocked ? @tr("Unblock sender") : @tr("Block sender…"), icon: @image-url("../icons/lucide/outline/ban.svg"), disabled: !BlockSender.available }, { id: root.trash_view ? "delete_permanently" : "trash", title: root.trash_view ? @tr("Delete permanently…") : @tr("Move to trash"), icon: @image-url("../icons/lucide/outline/trash.svg"), destructive: true }, ]; // Local mail has no archive or spam. @@ -1078,6 +1081,8 @@ export component MailReadingPane inherits FocusScope { AccountMailPreferences.read-message(); } else if action == "unsubscribe" { Unsubscribe.start(); + } else if action == "block" { + BlockSender.start(); } else if action == "print" { root.print_message(); } else if action == "browser" {