Add "Copy post text" menu

pull/1124/head
Lim Chee Aun 2025-04-18 18:17:51 +08:00
rodzic b9fcd4d054
commit e45b4a84c6
2 zmienionych plików z 183 dodań i 150 usunięć

Wyświetl plik

@ -1105,9 +1105,12 @@ function Status({
</MenuItem> </MenuItem>
</> </>
)} )}
{!mediaFirst && (enableTranslate || !language || differentLanguage) && ( {(isSizeLarge ||
<> (!mediaFirst &&
(enableTranslate || !language || differentLanguage))) && (
<MenuDivider /> <MenuDivider />
)}
{!mediaFirst && (enableTranslate || !language || differentLanguage) && (
<div class={supportsTTS ? 'menu-horizontal' : ''}> <div class={supportsTTS ? 'menu-horizontal' : ''}>
{enableTranslate ? ( {enableTranslate ? (
<MenuItem <MenuItem
@ -1149,7 +1152,25 @@ function Status({
</MenuItem> </MenuItem>
)} )}
</div> </div>
</> )}
{isSizeLarge && (
<MenuItem
onClick={() => {
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`);
}
}}
>
<Icon icon="clipboard" />
<span>
<Trans>Copy post text</Trans>
</span>
</MenuItem>
)} )}
{((!isSizeLarge && sameInstance) || {((!isSizeLarge && sameInstance) ||
enableTranslate || enableTranslate ||

226
src/locales/en.po wygenerowano
Wyświetl plik

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