Hide inline quote RE when translating

Also cover other use-case like copying post text and TTS
pull/1289/head
Lim Chee Aun 2025-09-24 16:17:19 +08:00
rodzic a029554264
commit 62e8930fcb
2 zmienionych plików z 159 dodań i 143 usunięć

Wyświetl plik

@ -105,7 +105,7 @@ function getPollText(poll) {
.join('\n')}`;
}
function getPostText(status, opts) {
const { maskCustomEmojis, maskURLs } = opts || {};
const { maskCustomEmojis, maskURLs, hideInlineQuote } = opts || {};
const { spoilerText, poll, emojis } = status;
let { content } = status;
if (maskCustomEmojis && emojis?.length) {
@ -119,13 +119,22 @@ function getPostText(status, opts) {
(spoilerText ? `${spoilerText}\n\n` : '') +
getHTMLText(content, {
preProcess:
maskURLs &&
(maskURLs || hideInlineQuote) &&
((dom) => {
// Remove links that contains text that starts with https?://
for (const a of dom.querySelectorAll('a')) {
const text = a.innerText.trim();
if (/^https?:\/\//i.test(text)) {
a.replaceWith('«🔗»');
if (maskURLs) {
for (const a of dom.querySelectorAll('a')) {
const text = a.innerText.trim();
if (/^https?:\/\//i.test(text)) {
a.replaceWith('«🔗»');
}
}
}
// Hide inline quote
if (hideInlineQuote) {
const reContainer = dom.querySelector('.quote-inline');
if (reContainer) {
reContainer.remove();
}
}
}),
@ -1218,7 +1227,9 @@ function Status({
<MenuItem
onClick={() => {
try {
const postText = getPostText(status);
const postText = getPostText(status, {
hideInlineQuote: supportsNativeQuote,
});
if (postText) {
speak(postText, language);
}
@ -1239,7 +1250,9 @@ function Status({
<MenuItem
onClick={() => {
try {
const postText = getPostText(status);
const postText = getPostText(status, {
hideInlineQuote: supportsNativeQuote,
});
navigator.clipboard.writeText(postText);
showToast(t`Post text copied`);
} catch (e) {
@ -2411,6 +2424,9 @@ function Status({
text={getPostText(status, {
maskCustomEmojis: true,
maskURLs: true,
// Hide regardless of native quote support
// They are not useful in translation context
hideInlineQuote: true,
})}
/>
)}

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

@ -34,7 +34,7 @@ msgstr ""
#: src/components/account-block.jsx:173
#: src/components/account-info.jsx:675
#: src/components/status.jsx:548
#: src/components/status.jsx:557
msgid "Group"
msgstr ""
@ -115,11 +115,11 @@ msgstr ""
#: src/components/media-attachment.jsx:380
#: src/components/media-modal.jsx:363
#: src/components/related-actions.jsx:238
#: src/components/status.jsx:1983
#: src/components/status.jsx:2000
#: src/components/status.jsx:2136
#: src/components/status.jsx:2794
#: src/components/status.jsx:2797
#: src/components/status.jsx:1996
#: src/components/status.jsx:2013
#: src/components/status.jsx:2149
#: src/components/status.jsx:2810
#: src/components/status.jsx:2813
#: src/pages/account-statuses.jsx:539
#: src/pages/accounts.jsx:118
#: src/pages/hashtag.jsx:203
@ -224,7 +224,7 @@ msgid "Original"
msgstr ""
#: src/components/account-info.jsx:943
#: src/components/status.jsx:2545
#: src/components/status.jsx:2561
#: src/pages/catchup.jsx:70
#: src/pages/catchup.jsx:1446
#: src/pages/catchup.jsx:2059
@ -274,8 +274,8 @@ msgstr "View post stats"
#: src/components/shortcuts-settings.jsx:230
#: src/components/shortcuts-settings.jsx:583
#: src/components/shortcuts-settings.jsx:783
#: src/components/status.jsx:3029
#: src/components/status.jsx:3241
#: src/components/status.jsx:3045
#: src/components/status.jsx:3257
#: src/components/translated-bio-sheet.jsx:21
#: src/pages/accounts.jsx:45
#: src/pages/catchup.jsx:1582
@ -494,7 +494,7 @@ msgid "Attachment #{i} failed"
msgstr "Attachment #{i} failed"
#: src/components/compose.jsx:1370
#: src/components/status.jsx:2320
#: src/components/status.jsx:2333
#: src/components/timeline.jsx:1016
msgid "Content warning"
msgstr ""
@ -534,21 +534,21 @@ msgstr "Posting on <0/>"
#: src/components/compose.jsx:1818
#: src/components/quote-settings-sheet.jsx:73
#: src/components/status.jsx:293
#: src/components/status.jsx:302
#: src/pages/settings.jsx:375
msgid "Anyone can quote"
msgstr "Anyone can quote"
#: src/components/compose.jsx:1821
#: src/components/quote-settings-sheet.jsx:76
#: src/components/status.jsx:294
#: src/components/status.jsx:303
#: src/pages/settings.jsx:378
msgid "Your followers can quote"
msgstr "Your followers can quote"
#: src/components/compose.jsx:1824
#: src/components/quote-settings-sheet.jsx:79
#: src/components/status.jsx:295
#: src/components/status.jsx:304
#: src/pages/settings.jsx:381
msgid "Only you can quote"
msgstr "Only you can quote"
@ -573,7 +573,7 @@ msgid "Quiet public"
msgstr "Quiet public"
#: src/components/compose.jsx:1872
#: src/components/status.jsx:2200
#: src/components/status.jsx:2213
#: src/utils/visibility-text.jsx:8
msgid "Private mention"
msgstr ""
@ -584,10 +584,10 @@ msgstr "Schedule"
#: src/components/compose.jsx:1926
#: src/components/keyboard-shortcuts-help.jsx:155
#: src/components/status.jsx:1039
#: src/components/status.jsx:1963
#: src/components/status.jsx:1964
#: src/components/status.jsx:2664
#: src/components/status.jsx:1048
#: src/components/status.jsx:1976
#: src/components/status.jsx:1977
#: src/components/status.jsx:2680
msgid "Reply"
msgstr ""
@ -660,7 +660,7 @@ msgstr ""
#: src/components/drafts.jsx:126
#: src/components/list-add-edit.jsx:188
#: src/components/status.jsx:1507
#: src/components/status.jsx:1520
#: src/pages/filters.jsx:603
#: src/pages/scheduled-posts.jsx:368
msgid "Delete…"
@ -702,7 +702,7 @@ msgstr ""
#: src/components/drafts.jsx:270
#: src/components/keyboard-shortcuts-help.jsx:184
#: src/components/status.jsx:706
#: src/components/status.jsx:715
msgid "Quote"
msgstr ""
@ -975,9 +975,9 @@ msgid "<0>l</0> or <1>f</1>"
msgstr ""
#: src/components/keyboard-shortcuts-help.jsx:176
#: src/components/status.jsx:1047
#: src/components/status.jsx:2693
#: src/components/status.jsx:2748
#: src/components/status.jsx:1056
#: src/components/status.jsx:2709
#: src/components/status.jsx:2764
msgid "Boost"
msgstr ""
@ -986,9 +986,9 @@ msgid "<0>Shift</0> + <1>b</1>"
msgstr ""
#: src/components/keyboard-shortcuts-help.jsx:188
#: src/components/status.jsx:1149
#: src/components/status.jsx:2773
#: src/components/status.jsx:2774
#: src/components/status.jsx:1158
#: src/components/status.jsx:2789
#: src/components/status.jsx:2790
msgid "Bookmark"
msgstr ""
@ -1071,14 +1071,14 @@ msgid "Media description"
msgstr ""
#: src/components/media-alt-modal.jsx:67
#: src/components/status.jsx:1204
#: src/components/status.jsx:1213
#: src/components/status.jsx:1222
#: src/components/translation-block.jsx:239
msgid "Translate"
msgstr ""
#: src/components/media-alt-modal.jsx:78
#: src/components/status.jsx:1232
#: src/components/status.jsx:1243
msgid "Speak"
msgstr ""
@ -1205,8 +1205,8 @@ msgstr ""
#: src/components/media-post.jsx:133
#: src/components/status-compact.jsx:70
#: src/components/status.jsx:3167
#: src/components/status.jsx:3245
#: src/components/status.jsx:3183
#: src/components/status.jsx:3261
#: src/components/timeline.jsx:1005
#: src/pages/catchup.jsx:74
#: src/pages/catchup.jsx:1878
@ -1539,8 +1539,8 @@ msgid "[Unknown notification type: {type}]"
msgstr ""
#: src/components/notification.jsx:464
#: src/components/status.jsx:1163
#: src/components/status.jsx:1173
#: src/components/status.jsx:1172
#: src/components/status.jsx:1182
msgid "Boosted/Liked by…"
msgstr ""
@ -1566,19 +1566,19 @@ msgid "View #Wrapstodon"
msgstr "View #Wrapstodon"
#: src/components/notification.jsx:814
#: src/components/status.jsx:256
#: src/components/status.jsx:265
msgid "Read more →"
msgstr ""
#: src/components/open-link-sheet.jsx:30
#: src/components/related-actions.jsx:492
#: src/components/status.jsx:1318
#: src/components/status.jsx:1331
msgid "Link copied"
msgstr ""
#: src/components/open-link-sheet.jsx:33
#: src/components/related-actions.jsx:495
#: src/components/status.jsx:1321
#: src/components/status.jsx:1334
msgid "Unable to copy link"
msgstr ""
@ -1590,13 +1590,13 @@ msgstr "Open link?"
#: src/components/post-embed-modal.jsx:232
#: src/components/related-actions.jsx:501
#: src/components/shortcuts-settings.jsx:1059
#: src/components/status.jsx:1327
#: src/components/status.jsx:1340
msgid "Copy"
msgstr ""
#: src/components/open-link-sheet.jsx:82
#: src/components/related-actions.jsx:522
#: src/components/status.jsx:1349
#: src/components/status.jsx:1362
msgid "Share…"
msgstr ""
@ -1664,7 +1664,7 @@ msgid "Ending"
msgstr "Ending"
#: src/components/post-embed-modal.jsx:201
#: src/components/status.jsx:1362
#: src/components/status.jsx:1375
msgid "Embed post"
msgstr ""
@ -1897,7 +1897,7 @@ msgstr "Show featured profiles"
#: src/components/related-actions.jsx:516
#: src/components/shortcuts-settings.jsx:1077
#: src/components/status.jsx:1343
#: src/components/status.jsx:1356
msgid "Sharing doesn't seem to work."
msgstr ""
@ -2235,7 +2235,7 @@ msgid "Move down"
msgstr ""
#: src/components/shortcuts-settings.jsx:379
#: src/components/status.jsx:1469
#: src/components/status.jsx:1482
#: src/pages/list.jsx:195
msgid "Edit"
msgstr ""
@ -2434,323 +2434,323 @@ msgstr ""
msgid "Import/export settings from/to instance server (Very experimental)"
msgstr ""
#: src/components/status.jsx:285
#: src/components/status.jsx:294
msgid "Private posts cannot be quoted"
msgstr "Private posts cannot be quoted"
#: src/components/status.jsx:286
#: src/components/status.jsx:295
msgid "Request to quote"
msgstr "Request to quote"
#: src/components/status.jsx:287
#: src/components/status.jsx:296
msgid "Author will manually review"
msgstr "Author will manually review"
#: src/components/status.jsx:288
#: src/components/status.jsx:297
msgid "Only followers can quote this post"
msgstr "Only followers can quote this post"
#: src/components/status.jsx:289
#: src/components/status.jsx:298
msgid "You are not allowed to quote this post"
msgstr "You are not allowed to quote this post"
#: src/components/status.jsx:572
#: src/components/status.jsx:581
msgid "<0/> <1>boosted</1>"
msgstr "<0/> <1>boosted</1>"
#: src/components/status.jsx:677
#: src/components/status.jsx:686
msgid "Sorry, your current logged-in instance can't interact with this post from another instance."
msgstr ""
#. placeholder {0}: username || acct
#: src/components/status.jsx:871
#: src/components/status.jsx:880
msgid "Unliked @{0}'s post"
msgstr ""
#. placeholder {0}: username || acct
#: src/components/status.jsx:872
#: src/components/status.jsx:881
msgid "Liked @{0}'s post"
msgstr "Liked @{0}'s post"
#. placeholder {0}: username || acct
#: src/components/status.jsx:911
#: src/components/status.jsx:920
msgid "Unbookmarked @{0}'s post"
msgstr "Unbookmarked @{0}'s post"
#. placeholder {0}: username || acct
#: src/components/status.jsx:912
#: src/components/status.jsx:921
msgid "Bookmarked @{0}'s post"
msgstr "Bookmarked @{0}'s post"
#: src/components/status.jsx:1016
#: src/components/status.jsx:1025
msgid "Some media have no descriptions."
msgstr ""
#. placeholder {0}: rtf.format(-statusMonthsAgo, 'month')
#: src/components/status.jsx:1023
#: src/components/status.jsx:1032
msgid "Old post (<0>{0}</0>)"
msgstr ""
#: src/components/status.jsx:1047
#: src/components/status.jsx:1124
#: src/components/status.jsx:2693
#: src/components/status.jsx:2746
#: src/components/status.jsx:1056
#: src/components/status.jsx:1133
#: src/components/status.jsx:2709
#: src/components/status.jsx:2762
msgid "Unboost"
msgstr ""
#: src/components/status.jsx:1086
#: src/components/status.jsx:2731
#: src/components/status.jsx:1095
#: src/components/status.jsx:2747
msgid "Quote with link"
msgstr "Quote with link"
#. placeholder {0}: username || acct
#: src/components/status.jsx:1103
#: src/components/status.jsx:1648
#: src/components/status.jsx:1112
#: src/components/status.jsx:1661
msgid "Unboosted @{0}'s post"
msgstr "Unboosted @{0}'s post"
#. placeholder {0}: username || acct
#: src/components/status.jsx:1104
#: src/components/status.jsx:1649
#: src/components/status.jsx:1113
#: src/components/status.jsx:1662
msgid "Boosted @{0}'s post"
msgstr "Boosted @{0}'s post"
#: src/components/status.jsx:1126
#: src/components/status.jsx:2745
#: src/components/status.jsx:1135
#: src/components/status.jsx:2761
msgid "Boost/Quote…"
msgstr "Boost/Quote…"
#: src/components/status.jsx:1127
#: src/components/status.jsx:2745
#: src/components/status.jsx:1136
#: src/components/status.jsx:2761
msgid "Boost…"
msgstr ""
#: src/components/status.jsx:1139
#: src/components/status.jsx:1973
#: src/components/status.jsx:2761
#: src/components/status.jsx:1148
#: src/components/status.jsx:1986
#: src/components/status.jsx:2777
msgid "Unlike"
msgstr ""
#: src/components/status.jsx:1140
#: src/components/status.jsx:1973
#: src/components/status.jsx:1974
#: src/components/status.jsx:2761
#: src/components/status.jsx:2762
#: src/components/status.jsx:1149
#: src/components/status.jsx:1986
#: src/components/status.jsx:1987
#: src/components/status.jsx:2777
#: src/components/status.jsx:2778
msgid "Like"
msgstr ""
#: src/components/status.jsx:1149
#: src/components/status.jsx:2773
#: src/components/status.jsx:1158
#: src/components/status.jsx:2789
msgid "Unbookmark"
msgstr ""
#: src/components/status.jsx:1184
#: src/components/status.jsx:1193
msgid "View Quotes"
msgstr "View Quotes"
#: src/components/status.jsx:1244
#: src/components/status.jsx:1257
msgid "Post text copied"
msgstr "Post text copied"
#: src/components/status.jsx:1247
#: src/components/status.jsx:1260
msgid "Unable to copy post text"
msgstr "Unable to copy post text"
#: src/components/status.jsx:1253
#: src/components/status.jsx:1266
msgid "Copy post text"
msgstr "Copy post text"
#. placeholder {0}: username || acct
#: src/components/status.jsx:1271
#: src/components/status.jsx:1284
msgid "View post by <0>@{0}</0>"
msgstr ""
#: src/components/status.jsx:1292
#: src/components/status.jsx:1305
msgid "Show Edit History"
msgstr ""
#: src/components/status.jsx:1295
#: src/components/status.jsx:1308
msgid "Edited: {editedDateText}"
msgstr ""
#: src/components/status.jsx:1376
#: src/components/status.jsx:1389
msgid "Conversation unmuted"
msgstr ""
#: src/components/status.jsx:1376
#: src/components/status.jsx:1389
msgid "Conversation muted"
msgstr ""
#: src/components/status.jsx:1382
#: src/components/status.jsx:1395
msgid "Unable to unmute conversation"
msgstr ""
#: src/components/status.jsx:1383
#: src/components/status.jsx:1396
msgid "Unable to mute conversation"
msgstr ""
#: src/components/status.jsx:1392
#: src/components/status.jsx:1405
msgid "Unmute conversation"
msgstr ""
#: src/components/status.jsx:1399
#: src/components/status.jsx:1412
msgid "Mute conversation"
msgstr ""
#: src/components/status.jsx:1415
#: src/components/status.jsx:1428
msgid "Post unpinned from profile"
msgstr ""
#: src/components/status.jsx:1416
#: src/components/status.jsx:1429
msgid "Post pinned to profile"
msgstr ""
#: src/components/status.jsx:1421
#: src/components/status.jsx:1434
msgid "Unable to unpin post"
msgstr ""
#: src/components/status.jsx:1421
#: src/components/status.jsx:1434
msgid "Unable to pin post"
msgstr ""
#: src/components/status.jsx:1430
#: src/components/status.jsx:1443
msgid "Unpin from profile"
msgstr ""
#: src/components/status.jsx:1437
#: src/components/status.jsx:1450
msgid "Pin to profile"
msgstr ""
#: src/components/status.jsx:1450
#: src/components/status.jsx:1463
#: src/pages/settings.jsx:336
msgid "Quote settings"
msgstr "Quote settings"
#: src/components/status.jsx:1480
#: src/components/status.jsx:1493
msgid "Delete this post?"
msgstr ""
#: src/components/status.jsx:1496
#: src/components/status.jsx:1509
msgid "Post deleted"
msgstr ""
#: src/components/status.jsx:1499
#: src/components/status.jsx:1512
msgid "Unable to delete post"
msgstr ""
#. placeholder {0}: username || acct
#: src/components/status.jsx:1524
#: src/components/status.jsx:1537
msgid "Remove my post from <0>@{0}</0>'s post?"
msgstr "Remove my post from <0>@{0}</0>'s post?"
#: src/components/status.jsx:1545
#: src/components/status.jsx:1558
msgid "Quote removed"
msgstr "Quote removed"
#: src/components/status.jsx:1549
#: src/components/status.jsx:1562
msgid "Unable to remove quote"
msgstr "Unable to remove quote"
#: src/components/status.jsx:1555
#: src/components/status.jsx:1568
msgid "Remove quote…"
msgstr "Remove quote…"
#: src/components/status.jsx:1569
#: src/components/status.jsx:1582
msgid "Report post…"
msgstr ""
#: src/components/status.jsx:1974
#: src/components/status.jsx:2010
#: src/components/status.jsx:2762
#: src/components/status.jsx:1987
#: src/components/status.jsx:2023
#: src/components/status.jsx:2778
msgid "Liked"
msgstr ""
#: src/components/status.jsx:2007
#: src/components/status.jsx:2748
#: src/components/status.jsx:2020
#: src/components/status.jsx:2764
msgid "Boosted"
msgstr ""
#: src/components/status.jsx:2017
#: src/components/status.jsx:2774
#: src/components/status.jsx:2030
#: src/components/status.jsx:2790
msgid "Bookmarked"
msgstr ""
#: src/components/status.jsx:2021
#: src/components/status.jsx:2034
msgid "Pinned"
msgstr ""
#: src/components/status.jsx:2078
#: src/components/status.jsx:2553
#: src/components/status.jsx:2091
#: src/components/status.jsx:2569
msgid "Deleted"
msgstr ""
#: src/components/status.jsx:2119
#: src/components/status.jsx:2132
msgid "{repliesCount, plural, one {# reply} other {# replies}}"
msgstr ""
#: src/components/status.jsx:2283
#: src/components/status.jsx:2345
#: src/components/status.jsx:2448
#: src/components/status.jsx:2296
#: src/components/status.jsx:2358
#: src/components/status.jsx:2464
msgid "Show less"
msgstr ""
#: src/components/status.jsx:2283
#: src/components/status.jsx:2345
#: src/components/status.jsx:2296
#: src/components/status.jsx:2358
msgid "Show content"
msgstr ""
#. placeholder {0}: filterInfo.titlesStr
#. placeholder {0}: filterInfo?.titlesStr
#: src/components/status.jsx:2444
#: src/components/status.jsx:2460
#: src/pages/catchup.jsx:1877
msgid "Filtered: {0}"
msgstr "Filtered: {0}"
#: src/components/status.jsx:2448
#: src/components/status.jsx:2464
msgid "Show media"
msgstr ""
#: src/components/status.jsx:2588
#: src/components/status.jsx:2604
msgid "Edited"
msgstr ""
#: src/components/status.jsx:2665
#: src/components/status.jsx:2681
msgid "Comments"
msgstr ""
#: src/components/status.jsx:2914
#: src/components/status.jsx:2930
msgid "Post hidden by your filters"
msgstr "Post hidden by your filters"
#: src/components/status.jsx:2915
#: src/components/status.jsx:2931
msgid "Post pending"
msgstr "Post pending"
#: src/components/status.jsx:2916
#: src/components/status.jsx:2917
#: src/components/status.jsx:2918
#: src/components/status.jsx:2932
#: src/components/status.jsx:2933
#: src/components/status.jsx:2934
msgid "Post unavailable"
msgstr "Post unavailable"
#: src/components/status.jsx:2919
#: src/components/status.jsx:2935
msgid "Post removed by author"
msgstr "Post removed by author"
#: src/components/status.jsx:3034
#: src/components/status.jsx:3050
msgid "Edit History"
msgstr ""
#: src/components/status.jsx:3038
#: src/components/status.jsx:3054
msgid "Failed to load history"
msgstr ""
#: src/components/status.jsx:3043
#: src/components/status.jsx:3059
#: src/pages/annual-report.jsx:45
msgid "Loading…"
msgstr ""
#. [Name] [Visibility icon] boosted
#: src/components/status.jsx:3175
#: src/components/status.jsx:3191
msgid "<0/> <1/> boosted"
msgstr "<0/> <1/> boosted"