diff --git a/src/components/status.jsx b/src/components/status.jsx index 74df201b..20aa1c99 100644 --- a/src/components/status.jsx +++ b/src/components/status.jsx @@ -1105,51 +1105,72 @@ function Status({ )} + {(isSizeLarge || + (!mediaFirst && + (enableTranslate || !language || differentLanguage))) && ( + + )} {!mediaFirst && (enableTranslate || !language || differentLanguage) && ( - <> - -
- {enableTranslate ? ( - setForceTranslate(true)} - > - - - Translate - - - ) : ( - - - - Translate - - - )} - {supportsTTS && ( - { - try { - const postText = getPostText(status); - if (postText) { - speak(postText, language); - } - } catch (error) { - console.error('Failed to speak text:', error); +
+ {enableTranslate ? ( + setForceTranslate(true)} + > + + + Translate + + + ) : ( + + + + Translate + + + )} + {supportsTTS && ( + { + try { + const postText = getPostText(status); + if (postText) { + speak(postText, language); } - }} - > - - - Speak - - - )} -
- + } catch (error) { + console.error('Failed to speak text:', error); + } + }} + > + + + Speak + +
+ )} +
+ )} + {isSizeLarge && ( + { + try { + const postText = getPostText(status); + navigator.clipboard.writeText(postText); + showToast(t`Post text copied`); + } catch (e) { + console.error(e); + showToast(t`Unable to copy post text`); + } + }} + > + + + Copy post text + + )} {((!isSizeLarge && sameInstance) || enableTranslate || diff --git a/src/locales/en.po b/src/locales/en.po index 86df01aa..c50b956e 100644 --- a/src/locales/en.po +++ b/src/locales/en.po @@ -111,11 +111,11 @@ msgstr "" #: src/components/compose.jsx:2772 #: src/components/media-alt-modal.jsx:46 #: src/components/media-modal.jsx:358 -#: src/components/status.jsx:1775 -#: src/components/status.jsx:1792 -#: src/components/status.jsx:1917 -#: src/components/status.jsx:2535 -#: src/components/status.jsx:2538 +#: src/components/status.jsx:1796 +#: src/components/status.jsx:1813 +#: src/components/status.jsx:1938 +#: src/components/status.jsx:2556 +#: src/components/status.jsx:2559 #: src/pages/account-statuses.jsx:523 #: src/pages/accounts.jsx:110 #: src/pages/hashtag.jsx:200 @@ -203,7 +203,7 @@ msgid "Original" msgstr "" #: src/components/account-info.jsx:926 -#: src/components/status.jsx:2319 +#: src/components/status.jsx:2340 #: src/pages/catchup.jsx:72 #: src/pages/catchup.jsx:1442 #: src/pages/catchup.jsx:2057 @@ -300,30 +300,30 @@ msgid "Add/Remove from Lists" msgstr "" #: src/components/account-info.jsx:1384 -#: src/components/status.jsx:1215 +#: src/components/status.jsx:1236 msgid "Link copied" msgstr "" #: src/components/account-info.jsx:1387 -#: src/components/status.jsx:1218 +#: src/components/status.jsx:1239 msgid "Unable to copy link" msgstr "" #: src/components/account-info.jsx:1393 #: src/components/shortcuts-settings.jsx:1059 -#: src/components/status.jsx:1224 -#: src/components/status.jsx:3306 +#: src/components/status.jsx:1245 +#: src/components/status.jsx:3327 msgid "Copy" msgstr "" #: src/components/account-info.jsx:1408 #: src/components/shortcuts-settings.jsx:1077 -#: src/components/status.jsx:1240 +#: src/components/status.jsx:1261 msgid "Sharing doesn't seem to work." msgstr "" #: src/components/account-info.jsx:1414 -#: src/components/status.jsx:1246 +#: src/components/status.jsx:1267 msgid "Share…" msgstr "" @@ -437,9 +437,9 @@ msgstr "" #: src/components/shortcuts-settings.jsx:230 #: src/components/shortcuts-settings.jsx:583 #: src/components/shortcuts-settings.jsx:783 -#: src/components/status.jsx:3030 -#: src/components/status.jsx:3270 -#: src/components/status.jsx:3779 +#: src/components/status.jsx:3051 +#: src/components/status.jsx:3291 +#: src/components/status.jsx:3800 #: src/pages/accounts.jsx:37 #: src/pages/catchup.jsx:1578 #: src/pages/filters.jsx:225 @@ -680,7 +680,7 @@ msgid "Attachment #{i} failed" msgstr "Attachment #{i} failed" #: src/components/compose.jsx:1211 -#: src/components/status.jsx:2105 +#: src/components/status.jsx:2126 #: src/components/timeline.jsx:993 msgid "Content warning" msgstr "" @@ -716,7 +716,7 @@ msgstr "" #: src/components/compose.jsx:1278 #: src/components/status.jsx:100 -#: src/components/status.jsx:1981 +#: src/components/status.jsx:2002 msgid "Private mention" msgstr "" @@ -754,9 +754,9 @@ msgstr "Schedule" #: src/components/compose.jsx:1664 #: src/components/keyboard-shortcuts-help.jsx:154 #: src/components/status.jsx:1008 -#: src/components/status.jsx:1755 -#: src/components/status.jsx:1756 -#: src/components/status.jsx:2439 +#: src/components/status.jsx:1776 +#: src/components/status.jsx:1777 +#: src/components/status.jsx:2460 msgid "Reply" msgstr "" @@ -978,7 +978,7 @@ msgstr "" #: src/components/drafts.jsx:128 #: src/components/list-add-edit.jsx:186 -#: src/components/status.jsx:1390 +#: src/components/status.jsx:1411 #: src/pages/filters.jsx:603 #: src/pages/scheduled-posts.jsx:367 msgid "Delete…" @@ -1188,9 +1188,9 @@ msgstr "" #: src/components/keyboard-shortcuts-help.jsx:175 #: src/components/status.jsx:1016 -#: src/components/status.jsx:2466 -#: src/components/status.jsx:2489 -#: src/components/status.jsx:2490 +#: src/components/status.jsx:2487 +#: src/components/status.jsx:2510 +#: src/components/status.jsx:2511 msgid "Boost" msgstr "" @@ -1200,8 +1200,8 @@ msgstr "" #: src/components/keyboard-shortcuts-help.jsx:183 #: src/components/status.jsx:1079 -#: src/components/status.jsx:2514 -#: src/components/status.jsx:2515 +#: src/components/status.jsx:2535 +#: src/components/status.jsx:2536 msgid "Bookmark" msgstr "" @@ -1260,14 +1260,14 @@ msgid "Media description" msgstr "" #: src/components/media-alt-modal.jsx:58 -#: src/components/status.jsx:1119 -#: src/components/status.jsx:1128 +#: src/components/status.jsx:1122 +#: src/components/status.jsx:1131 #: src/components/translation-block.jsx:215 msgid "Translate" msgstr "" #: src/components/media-alt-modal.jsx:69 -#: src/components/status.jsx:1147 +#: src/components/status.jsx:1150 msgid "Speak" msgstr "" @@ -1304,9 +1304,9 @@ msgid "Filtered: {filterTitleStr}" msgstr "" #: src/components/media-post.jsx:134 -#: src/components/status.jsx:3609 -#: src/components/status.jsx:3705 -#: src/components/status.jsx:3783 +#: src/components/status.jsx:3630 +#: src/components/status.jsx:3726 +#: src/components/status.jsx:3804 #: src/components/timeline.jsx:982 #: src/pages/catchup.jsx:76 #: src/pages/catchup.jsx:1876 @@ -1947,7 +1947,7 @@ msgid "Move down" msgstr "" #: src/components/shortcuts-settings.jsx:379 -#: src/components/status.jsx:1352 +#: src/components/status.jsx:1373 #: src/pages/list.jsx:171 msgid "Edit" msgstr "" @@ -2185,25 +2185,25 @@ msgstr "" #: src/components/status.jsx:1016 #: src/components/status.jsx:1056 -#: src/components/status.jsx:2466 -#: src/components/status.jsx:2489 +#: src/components/status.jsx:2487 +#: src/components/status.jsx:2510 msgid "Unboost" msgstr "" #: src/components/status.jsx:1032 -#: src/components/status.jsx:2481 +#: src/components/status.jsx:2502 msgid "Quote" msgstr "" #. placeholder {0}: username || acct #: src/components/status.jsx:1044 -#: src/components/status.jsx:1480 +#: src/components/status.jsx:1501 msgid "Unboosted @{0}'s post" msgstr "Unboosted @{0}'s post" #. placeholder {0}: username || acct #: src/components/status.jsx:1045 -#: src/components/status.jsx:1481 +#: src/components/status.jsx:1502 msgid "Boosted @{0}'s post" msgstr "Boosted @{0}'s post" @@ -2212,247 +2212,259 @@ msgid "Boost…" msgstr "" #: src/components/status.jsx:1069 -#: src/components/status.jsx:1765 -#: src/components/status.jsx:2502 +#: src/components/status.jsx:1786 +#: src/components/status.jsx:2523 msgid "Unlike" msgstr "" #: src/components/status.jsx:1070 -#: src/components/status.jsx:1765 -#: src/components/status.jsx:1766 -#: src/components/status.jsx:2502 -#: src/components/status.jsx:2503 +#: src/components/status.jsx:1786 +#: src/components/status.jsx:1787 +#: src/components/status.jsx:2523 +#: src/components/status.jsx:2524 msgid "Like" msgstr "" #: src/components/status.jsx:1079 -#: src/components/status.jsx:2514 +#: src/components/status.jsx:2535 msgid "Unbookmark" msgstr "" +#: src/components/status.jsx:1162 +msgid "Post text copied" +msgstr "Post text copied" + +#: src/components/status.jsx:1165 +msgid "Unable to copy post text" +msgstr "Unable to copy post text" + +#: src/components/status.jsx:1171 +msgid "Copy post text" +msgstr "Copy post text" + #. placeholder {0}: username || acct -#: src/components/status.jsx:1168 +#: src/components/status.jsx:1189 msgid "View post by <0>@{0}" msgstr "" -#: src/components/status.jsx:1189 +#: src/components/status.jsx:1210 msgid "Show Edit History" msgstr "" -#: src/components/status.jsx:1192 +#: src/components/status.jsx:1213 msgid "Edited: {editedDateText}" msgstr "" -#: src/components/status.jsx:1259 -#: src/components/status.jsx:3275 +#: src/components/status.jsx:1280 +#: src/components/status.jsx:3296 msgid "Embed post" msgstr "" -#: src/components/status.jsx:1273 +#: src/components/status.jsx:1294 msgid "Conversation unmuted" msgstr "" -#: src/components/status.jsx:1273 +#: src/components/status.jsx:1294 msgid "Conversation muted" msgstr "" -#: src/components/status.jsx:1279 +#: src/components/status.jsx:1300 msgid "Unable to unmute conversation" msgstr "" -#: src/components/status.jsx:1280 +#: src/components/status.jsx:1301 msgid "Unable to mute conversation" msgstr "" -#: src/components/status.jsx:1289 +#: src/components/status.jsx:1310 msgid "Unmute conversation" msgstr "" -#: src/components/status.jsx:1296 +#: src/components/status.jsx:1317 msgid "Mute conversation" msgstr "" -#: src/components/status.jsx:1312 +#: src/components/status.jsx:1333 msgid "Post unpinned from profile" msgstr "" -#: src/components/status.jsx:1313 +#: src/components/status.jsx:1334 msgid "Post pinned to profile" msgstr "" -#: src/components/status.jsx:1318 +#: src/components/status.jsx:1339 msgid "Unable to unpin post" msgstr "" -#: src/components/status.jsx:1318 +#: src/components/status.jsx:1339 msgid "Unable to pin post" msgstr "" -#: src/components/status.jsx:1327 +#: src/components/status.jsx:1348 msgid "Unpin from profile" msgstr "" -#: src/components/status.jsx:1334 +#: src/components/status.jsx:1355 msgid "Pin to profile" msgstr "" -#: src/components/status.jsx:1363 +#: src/components/status.jsx:1384 msgid "Delete this post?" msgstr "" -#: src/components/status.jsx:1379 +#: src/components/status.jsx:1400 msgid "Post deleted" msgstr "" -#: src/components/status.jsx:1382 +#: src/components/status.jsx:1403 msgid "Unable to delete post" msgstr "" -#: src/components/status.jsx:1410 +#: src/components/status.jsx:1431 msgid "Report post…" msgstr "" -#: src/components/status.jsx:1766 -#: src/components/status.jsx:1802 -#: src/components/status.jsx:2503 +#: src/components/status.jsx:1787 +#: src/components/status.jsx:1823 +#: src/components/status.jsx:2524 msgid "Liked" msgstr "" -#: src/components/status.jsx:1799 -#: src/components/status.jsx:2490 +#: src/components/status.jsx:1820 +#: src/components/status.jsx:2511 msgid "Boosted" msgstr "" -#: src/components/status.jsx:1809 -#: src/components/status.jsx:2515 +#: src/components/status.jsx:1830 +#: src/components/status.jsx:2536 msgid "Bookmarked" msgstr "" -#: src/components/status.jsx:1813 +#: src/components/status.jsx:1834 msgid "Pinned" msgstr "" -#: src/components/status.jsx:1859 -#: src/components/status.jsx:2327 +#: src/components/status.jsx:1880 +#: src/components/status.jsx:2348 msgid "Deleted" msgstr "" -#: src/components/status.jsx:1900 +#: src/components/status.jsx:1921 msgid "{repliesCount, plural, one {# reply} other {# replies}}" msgstr "" #. placeholder {0}: snapStates.statusThreadNumber[sKey] ? ` ${snapStates.statusThreadNumber[sKey]}/X` : '' -#: src/components/status.jsx:1990 +#: src/components/status.jsx:2011 msgid "Thread{0}" msgstr "" -#: src/components/status.jsx:2068 -#: src/components/status.jsx:2130 -#: src/components/status.jsx:2223 +#: src/components/status.jsx:2089 +#: src/components/status.jsx:2151 +#: src/components/status.jsx:2244 msgid "Show less" msgstr "" -#: src/components/status.jsx:2068 -#: src/components/status.jsx:2130 +#: src/components/status.jsx:2089 +#: src/components/status.jsx:2151 msgid "Show content" msgstr "" #. placeholder {0}: filterInfo.titlesStr #. placeholder {0}: filterInfo?.titlesStr -#: src/components/status.jsx:2219 +#: src/components/status.jsx:2240 #: src/pages/catchup.jsx:1875 msgid "Filtered: {0}" msgstr "Filtered: {0}" -#: src/components/status.jsx:2223 +#: src/components/status.jsx:2244 msgid "Show media" msgstr "" -#: src/components/status.jsx:2363 +#: src/components/status.jsx:2384 msgid "Edited" msgstr "" -#: src/components/status.jsx:2440 +#: src/components/status.jsx:2461 msgid "Comments" msgstr "" #. More from [Author] -#: src/components/status.jsx:2733 +#: src/components/status.jsx:2754 msgid "More from <0/>" msgstr "More from <0/>" -#: src/components/status.jsx:3035 +#: src/components/status.jsx:3056 msgid "Edit History" msgstr "" -#: src/components/status.jsx:3039 +#: src/components/status.jsx:3060 msgid "Failed to load history" msgstr "" -#: src/components/status.jsx:3044 +#: src/components/status.jsx:3065 #: src/pages/annual-report.jsx:45 msgid "Loading…" msgstr "" -#: src/components/status.jsx:3280 +#: src/components/status.jsx:3301 msgid "HTML Code" msgstr "" -#: src/components/status.jsx:3297 +#: src/components/status.jsx:3318 msgid "HTML code copied" msgstr "" -#: src/components/status.jsx:3300 +#: src/components/status.jsx:3321 msgid "Unable to copy HTML code" msgstr "" -#: src/components/status.jsx:3312 +#: src/components/status.jsx:3333 msgid "Media attachments:" msgstr "" -#: src/components/status.jsx:3334 +#: src/components/status.jsx:3355 msgid "Account Emojis:" msgstr "" -#: src/components/status.jsx:3365 -#: src/components/status.jsx:3410 +#: src/components/status.jsx:3386 +#: src/components/status.jsx:3431 msgid "static URL" msgstr "" -#: src/components/status.jsx:3379 +#: src/components/status.jsx:3400 msgid "Emojis:" msgstr "" -#: src/components/status.jsx:3424 +#: src/components/status.jsx:3445 msgid "Notes:" msgstr "" -#: src/components/status.jsx:3428 +#: src/components/status.jsx:3449 msgid "This is static, unstyled and scriptless. You may need to apply your own styles and edit as needed." msgstr "" -#: src/components/status.jsx:3434 +#: src/components/status.jsx:3455 msgid "Polls are not interactive, becomes a list with vote counts." msgstr "" -#: src/components/status.jsx:3439 +#: src/components/status.jsx:3460 msgid "Media attachments can be images, videos, audios or any file types." msgstr "" -#: src/components/status.jsx:3445 +#: src/components/status.jsx:3466 msgid "Post could be edited or deleted later." msgstr "" -#: src/components/status.jsx:3451 +#: src/components/status.jsx:3472 msgid "Preview" msgstr "" -#: src/components/status.jsx:3460 +#: src/components/status.jsx:3481 msgid "Note: This preview is lightly styled." msgstr "" #. [Name] [Visibility icon] boosted -#: src/components/status.jsx:3713 +#: src/components/status.jsx:3734 msgid "<0/> <1/> boosted" msgstr ""