tmp disable sw, add FormattedMessage ids via eslint
This commit is contained in:
@ -61,7 +61,7 @@ export default function DM(props: DMProps) {
|
||||
{content ? (
|
||||
<Text id={msg.id} content={content} tags={[]} creator={otherPubkey} />
|
||||
) : (
|
||||
<FormattedMessage defaultMessage="Loading..." />
|
||||
<FormattedMessage defaultMessage="Loading..." id="gjBiyj" />
|
||||
)}
|
||||
</div>
|
||||
<div>
|
||||
|
@ -22,7 +22,7 @@ export default function DmWindow({ id }: { id: string }) {
|
||||
{chat.participants.map(v => (
|
||||
<ProfileImage pubkey={v.id} showUsername={false} />
|
||||
))}
|
||||
{chat.title ?? <FormattedMessage defaultMessage="Secret Group Chat" />}
|
||||
{chat.title ?? <FormattedMessage defaultMessage="Secret Group Chat" id="+Vxixo" />}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
@ -107,7 +107,7 @@ export default function CashuNuts({ token }: { token: string }) {
|
||||
</defs>
|
||||
</svg>
|
||||
<FormattedMessage
|
||||
defaultMessage="<h1>{n}</h1> Cashu sats"
|
||||
defaultMessage="<h1>{n}</h1> Cashu sats" id="6/SF6e"
|
||||
values={{
|
||||
h1: c => <h1>{c}</h1>,
|
||||
n: <FormattedNumber value={amount} />,
|
||||
@ -116,7 +116,7 @@ export default function CashuNuts({ token }: { token: string }) {
|
||||
</div>
|
||||
<small className="xs w-max">
|
||||
<FormattedMessage
|
||||
defaultMessage="<b>Mint:</b> {url}"
|
||||
defaultMessage="<b>Mint:</b> {url}" id="zwb6LR"
|
||||
values={{
|
||||
b: c => <b>{c}</b>,
|
||||
url: new URL(cashu.token[0].mint).hostname,
|
||||
@ -129,7 +129,7 @@ export default function CashuNuts({ token }: { token: string }) {
|
||||
<Icon name="copy" />
|
||||
</button>
|
||||
<button onClick={e => redeemToken(e, token)}>
|
||||
<FormattedMessage defaultMessage="Redeem" description="Button: Redeem Cashu token" />
|
||||
<FormattedMessage defaultMessage="Redeem" id="XrSk2j" description="Button: Redeem Cashu token" />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -76,7 +76,7 @@ export default function Invoice(props: InvoiceProps) {
|
||||
{description && <p>{description}</p>}
|
||||
{isPaid ? (
|
||||
<div className="paid">
|
||||
<FormattedMessage defaultMessage="Paid" />
|
||||
<FormattedMessage defaultMessage="Paid" id="u/vOPu" />
|
||||
</div>
|
||||
) : (
|
||||
<button disabled={isExpired} type="button" onClick={payInvoice}>
|
||||
|
@ -10,7 +10,7 @@ const MagnetLink = ({ magnet }: MagnetLinkProps) => {
|
||||
return (
|
||||
<div className="note-invoice">
|
||||
<h4>
|
||||
<FormattedMessage defaultMessage="Magnet Link" />
|
||||
<FormattedMessage defaultMessage="Magnet Link" id="Gcn9NQ" />
|
||||
</h4>
|
||||
<a href={magnet.raw} rel="noreferrer">
|
||||
{magnet.dn ?? magnet.infoHash}
|
||||
|
@ -42,7 +42,7 @@ export default function PubkeyList({ ev, className }: { ev: NostrEvent; classNam
|
||||
Toastore.push({
|
||||
element: (
|
||||
<FormattedMessage
|
||||
defaultMessage="Sent {n} sats to {name}"
|
||||
defaultMessage="Sent {n} sats to {name}" id="Ig9/a1"
|
||||
values={{
|
||||
n: amtSend,
|
||||
name: getDisplayName(profile, pk),
|
||||
@ -70,7 +70,7 @@ export default function PubkeyList({ ev, className }: { ev: NostrEvent; classNam
|
||||
<>
|
||||
<AsyncButton className="mr5 secondary" onClick={() => zapAll()}>
|
||||
<FormattedMessage
|
||||
defaultMessage="Zap all {n} sats"
|
||||
defaultMessage="Zap all {n} sats" id="IVbtTS"
|
||||
values={{
|
||||
n: <FormattedNumber value={login.appData.item.preferences.defaultZapAmount * ids.length} />,
|
||||
}}
|
||||
|
@ -31,7 +31,7 @@ export default function ZapstrEmbed({ ev }: { ev: NostrEvent }) {
|
||||
</div>
|
||||
<Link to={`https://zapstr.live/?track=${link}`} target="_blank">
|
||||
<button>
|
||||
<FormattedMessage defaultMessage="Open on Zapstr" />
|
||||
<FormattedMessage defaultMessage="Open on Zapstr" id="Lu5/Bj" />
|
||||
</button>
|
||||
</Link>
|
||||
</>
|
||||
|
@ -10,7 +10,7 @@ const HiddenNote = ({ children }: { children: React.ReactNode }) => {
|
||||
<div className="card note hidden-note">
|
||||
<div className="header">
|
||||
<p>
|
||||
<FormattedMessage defaultMessage="This note has been muted" />
|
||||
<FormattedMessage defaultMessage="This note has been muted" id="qfmMQh" />
|
||||
</p>
|
||||
<button type="button" onClick={() => setShow(true)}>
|
||||
<FormattedMessage {...messages.Show} />
|
||||
|
@ -93,7 +93,7 @@ export function LongFormText(props: LongFormTextProps) {
|
||||
<div className="flex g8">
|
||||
<div>
|
||||
<FormattedMessage
|
||||
defaultMessage="{n} mins to read"
|
||||
defaultMessage="{n} mins to read" id="zm6qS1"
|
||||
values={{
|
||||
n: <FormattedNumber value={readTime().mins} />,
|
||||
}}
|
||||
@ -102,12 +102,12 @@ export function LongFormText(props: LongFormTextProps) {
|
||||
<div>‧</div>
|
||||
{!reading && (
|
||||
<div className="pointer" onClick={() => readArticle()}>
|
||||
<FormattedMessage defaultMessage="Listen to this article" />
|
||||
<FormattedMessage defaultMessage="Listen to this article" id="nihgfo" />
|
||||
</div>
|
||||
)}
|
||||
{reading && (
|
||||
<div className="pointer" onClick={() => stopReading()}>
|
||||
<FormattedMessage defaultMessage="Stop listening" />
|
||||
<FormattedMessage defaultMessage="Stop listening" id="U1aPPi" />
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
@ -26,14 +26,14 @@ export function NostrFileElement({ ev }: { ev: NostrEvent }) {
|
||||
|
||||
if (u && m) {
|
||||
return (
|
||||
<Reveal message={<FormattedMessage defaultMessage="Click to load content from {link}" values={{ link: u }} />}>
|
||||
<Reveal message={<FormattedMessage defaultMessage="Click to load content from {link}" id="lsNFM1" values={{ link: u }} />}>
|
||||
<MediaElement mime={m} url={u} sha256={x} magnet={magnet} blurHash={blurHash} />
|
||||
</Reveal>
|
||||
);
|
||||
} else {
|
||||
return (
|
||||
<b className="error">
|
||||
<FormattedMessage defaultMessage="Unknown file header: {name}" values={{ name: ev.content }} />
|
||||
<FormattedMessage defaultMessage="Unknown file header: {name}" id="PamNxw" values={{ name: ev.content }} />
|
||||
</b>
|
||||
);
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ export function NoteBroadcaster({
|
||||
return (
|
||||
<div className="flex flex-col g16">
|
||||
<h3>
|
||||
<FormattedMessage defaultMessage="Sending notes and other stuff" />
|
||||
<FormattedMessage defaultMessage="Sending notes and other stuff" id="ugyJnE" />
|
||||
</h3>
|
||||
{results
|
||||
.filter(a => a.message !== "Duplicate request")
|
||||
@ -91,7 +91,7 @@ export function NoteBroadcaster({
|
||||
onClick={() => retryPublish(r)}
|
||||
className="p4 br-compact flex items-center secondary"
|
||||
title={formatMessage({
|
||||
defaultMessage: "Retry publishing",
|
||||
defaultMessage: "Retry publishing", id: '9kSari',
|
||||
})}>
|
||||
<Icon name="refresh-ccw-01" />
|
||||
</AsyncButton>
|
||||
@ -99,7 +99,7 @@ export function NoteBroadcaster({
|
||||
onClick={() => removeRelayFromResult(r)}
|
||||
className="p4 br-compact flex items-center secondary"
|
||||
title={formatMessage({
|
||||
defaultMessage: "Remove from my relays",
|
||||
defaultMessage: "Remove from my relays", id: 'UJTWqI',
|
||||
})}>
|
||||
<Icon name="trash-01" className="trash-icon" />
|
||||
</AsyncButton>
|
||||
@ -109,7 +109,7 @@ export function NoteBroadcaster({
|
||||
))}
|
||||
<div className="flex-row g8">
|
||||
<button type="button" onClick={() => onClose()}>
|
||||
<FormattedMessage defaultMessage="Close" />
|
||||
<FormattedMessage defaultMessage="Close" id="rbrahO" />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -170,7 +170,7 @@ export function NoteContextMenu({ ev, ...props }: NosteContextMenuProps) {
|
||||
)}
|
||||
<MenuItem onClick={handleReBroadcastButtonClick}>
|
||||
<Icon name="relay" />
|
||||
<FormattedMessage defaultMessage="Broadcast Event" />
|
||||
<FormattedMessage defaultMessage="Broadcast Event" id="Gxcr08" />
|
||||
</MenuItem>
|
||||
{ev.pubkey !== login.publicKey && !login.readonly && (
|
||||
<MenuItem onClick={() => block(ev.pubkey)}>
|
||||
|
@ -52,7 +52,7 @@ export function NoteCreator() {
|
||||
throw new Error(
|
||||
formatMessage(
|
||||
{
|
||||
defaultMessage: "Failed to parse zap split: {input}",
|
||||
defaultMessage: "Failed to parse zap split: {input}", id: 'sZQzjQ',
|
||||
},
|
||||
{
|
||||
input: s.value,
|
||||
@ -69,7 +69,7 @@ export function NoteCreator() {
|
||||
throw new Error(
|
||||
formatMessage(
|
||||
{
|
||||
defaultMessage: "Failed to parse zap split: {input}",
|
||||
defaultMessage: "Failed to parse zap split: {input}", id: 'sZQzjQ',
|
||||
},
|
||||
{
|
||||
input: s.value,
|
||||
@ -81,7 +81,7 @@ export function NoteCreator() {
|
||||
throw new Error(
|
||||
formatMessage(
|
||||
{
|
||||
defaultMessage: "Invalid zap split: {input}",
|
||||
defaultMessage: "Invalid zap split: {input}", id: '8Y6bZQ',
|
||||
},
|
||||
{
|
||||
input: s.value,
|
||||
@ -258,12 +258,12 @@ export function NoteCreator() {
|
||||
return (
|
||||
<>
|
||||
<h4>
|
||||
<FormattedMessage defaultMessage="Poll Options" />
|
||||
<FormattedMessage defaultMessage="Poll Options" id="vhlWFg" />
|
||||
</h4>
|
||||
{note.pollOptions?.map((a, i) => (
|
||||
<div className="form-group w-max" key={`po-${i}`}>
|
||||
<div>
|
||||
<FormattedMessage defaultMessage="Option: {n}" values={{ n: i + 1 }} />
|
||||
<FormattedMessage defaultMessage="Option: {n}" id="mfe8RW" values={{ n: i + 1 }} />
|
||||
</div>
|
||||
<div>
|
||||
<input type="text" value={a} onChange={e => changePollOption(i, e.target.value)} />
|
||||
@ -353,24 +353,24 @@ export function NoteCreator() {
|
||||
<>
|
||||
<div>
|
||||
<h4>
|
||||
<FormattedMessage defaultMessage="Custom Relays" />
|
||||
<FormattedMessage defaultMessage="Custom Relays" id="EcZF24" />
|
||||
</h4>
|
||||
<p>
|
||||
<FormattedMessage defaultMessage="Send note to a subset of your write relays" />
|
||||
<FormattedMessage defaultMessage="Send note to a subset of your write relays" id="th5lxp" />
|
||||
</p>
|
||||
{renderRelayCustomisation()}
|
||||
</div>
|
||||
<div className="flex flex-col g8">
|
||||
<h4>
|
||||
<FormattedMessage defaultMessage="Zap Splits" />
|
||||
<FormattedMessage defaultMessage="Zap Splits" id="5CB6zB" />
|
||||
</h4>
|
||||
<FormattedMessage defaultMessage="Zaps on this note will be split to the following users." />
|
||||
<FormattedMessage defaultMessage="Zaps on this note will be split to the following users." id="LwYmVi" />
|
||||
<div className="flex flex-col g8">
|
||||
{[...(note.zapSplits ?? [])].map((v, i, arr) => (
|
||||
<div className="flex items-center g8">
|
||||
<div className="flex flex-col f-4 g4">
|
||||
<h4>
|
||||
<FormattedMessage defaultMessage="Recipient" />
|
||||
<FormattedMessage defaultMessage="Recipient" id="8Rkoyb" />
|
||||
</h4>
|
||||
<input
|
||||
type="text"
|
||||
@ -380,12 +380,12 @@ export function NoteCreator() {
|
||||
v => (v.zapSplits = arr.map((vv, ii) => (ii === i ? { ...vv, value: e.target.value } : vv))),
|
||||
)
|
||||
}
|
||||
placeholder={formatMessage({ defaultMessage: "npub / nprofile / nostr address" })}
|
||||
placeholder={formatMessage({ defaultMessage: "npub / nprofile / nostr address", id: 'WvGmZT' })}
|
||||
/>
|
||||
</div>
|
||||
<div className="flex flex-col f-1 g4">
|
||||
<h4>
|
||||
<FormattedMessage defaultMessage="Weight" />
|
||||
<FormattedMessage defaultMessage="Weight" id="zCb8fX" />
|
||||
</h4>
|
||||
<input
|
||||
type="number"
|
||||
@ -415,18 +415,18 @@ export function NoteCreator() {
|
||||
onClick={() =>
|
||||
note.update(v => (v.zapSplits = [...(v.zapSplits ?? []), { type: "pubkey", value: "", weight: 1 }]))
|
||||
}>
|
||||
<FormattedMessage defaultMessage="Add" />
|
||||
<FormattedMessage defaultMessage="Add" id="2/2yg+" />
|
||||
</button>
|
||||
</div>
|
||||
<span className="warning">
|
||||
<FormattedMessage defaultMessage="Not all clients support this, you may still receive some zaps as if zap splits was not configured" />
|
||||
<FormattedMessage defaultMessage="Not all clients support this, you may still receive some zaps as if zap splits was not configured" id="6bgpn+" />
|
||||
</span>
|
||||
</div>
|
||||
<div className="flex flex-col g8">
|
||||
<h4>
|
||||
<FormattedMessage defaultMessage="Sensitive Content" />
|
||||
<FormattedMessage defaultMessage="Sensitive Content" id="bQdA2k" />
|
||||
</h4>
|
||||
<FormattedMessage defaultMessage="Users must accept the content warning to show the content of your note." />
|
||||
<FormattedMessage defaultMessage="Users must accept the content warning to show the content of your note." id="UUPFlt" />
|
||||
<input
|
||||
className="w-max"
|
||||
type="text"
|
||||
@ -435,11 +435,11 @@ export function NoteCreator() {
|
||||
maxLength={50}
|
||||
minLength={1}
|
||||
placeholder={formatMessage({
|
||||
defaultMessage: "Reason",
|
||||
defaultMessage: "Reason", id: 'AkCxS/',
|
||||
})}
|
||||
/>
|
||||
<span className="warning">
|
||||
<FormattedMessage defaultMessage="Not all clients support this yet" />
|
||||
<FormattedMessage defaultMessage="Not all clients support this yet" id="gXgY3+" />
|
||||
</span>
|
||||
</div>
|
||||
</>
|
||||
@ -473,7 +473,7 @@ export function NoteCreator() {
|
||||
className={classNames("note-creator-icon", { active: note.advanced })}
|
||||
/>
|
||||
<span className="sm:inline hidden">
|
||||
<FormattedMessage defaultMessage="Preview" />
|
||||
<FormattedMessage defaultMessage="Preview" id="TJo5E6" />
|
||||
</span>
|
||||
<ToggleSwitch
|
||||
onClick={() => loadPreview()}
|
||||
@ -483,10 +483,10 @@ export function NoteCreator() {
|
||||
</div>
|
||||
<div className="flex g8">
|
||||
<button className="secondary" onClick={cancel}>
|
||||
<FormattedMessage defaultMessage="Cancel" />
|
||||
<FormattedMessage defaultMessage="Cancel" id="47FYwb" />
|
||||
</button>
|
||||
<AsyncButton onClick={onSubmit} className="primary">
|
||||
{note.replyTo ? <FormattedMessage defaultMessage="Reply" /> : <FormattedMessage defaultMessage="Send" />}
|
||||
{note.replyTo ? <FormattedMessage defaultMessage="Reply" id="9HU8vw" /> : <FormattedMessage defaultMessage="Send" id="9WRlF4" />}
|
||||
</AsyncButton>
|
||||
</div>
|
||||
</div>
|
||||
@ -536,7 +536,7 @@ export function NoteCreator() {
|
||||
{note.replyTo && (
|
||||
<>
|
||||
<h4>
|
||||
<FormattedMessage defaultMessage="Reply To" />
|
||||
<FormattedMessage defaultMessage="Reply To" id="8ED/4u" />
|
||||
</h4>
|
||||
<Note
|
||||
data={note.replyTo}
|
||||
@ -555,7 +555,7 @@ export function NoteCreator() {
|
||||
{note.quote && (
|
||||
<>
|
||||
<h4>
|
||||
<FormattedMessage defaultMessage="Quote Repost" />
|
||||
<FormattedMessage defaultMessage="Quote Repost" id="C7642/" />
|
||||
</h4>
|
||||
<Note
|
||||
data={note.quote}
|
||||
@ -597,13 +597,13 @@ export function NoteCreator() {
|
||||
value={note.hashTags}
|
||||
onChange={e => note.update(s => (s.hashTags = e))}
|
||||
placeHolder={formatMessage({
|
||||
defaultMessage: "Add up to 4 hashtags",
|
||||
defaultMessage: "Add up to 4 hashtags", id: 'AIgmDy',
|
||||
})}
|
||||
separators={["Enter", ","]}
|
||||
/>
|
||||
{note.hashTags.length > 4 && (
|
||||
<small className="warning">
|
||||
<FormattedMessage defaultMessage="Try to use less than 5 hashtags to stay on topic 🙏" />
|
||||
<FormattedMessage defaultMessage="Try to use less than 5 hashtags to stay on topic 🙏" id="d8gpCh" />
|
||||
</small>
|
||||
)}
|
||||
<TrendingHashTagsLine onClick={t => note.update(s => (s.hashTags = appendDedupe(s.hashTags, [t])))} />
|
||||
@ -652,7 +652,7 @@ function TrendingHashTagsLine(props: { onClick: (tag: string) => void }) {
|
||||
return (
|
||||
<div className="flex flex-col g4">
|
||||
<small>
|
||||
<FormattedMessage defaultMessage="Popular Hashtags" />
|
||||
<FormattedMessage defaultMessage="Popular Hashtags" id="ddd3JX" />
|
||||
</small>
|
||||
<div className="flex g4 flex-wrap">
|
||||
{hashtags.slice(0, 5).map(a => (
|
||||
|
@ -187,7 +187,7 @@ export default function NoteFooter(props: NoteFooterProps) {
|
||||
const pow = findTag(ev, "nonce") ? countLeadingZeros(ev.id) : undefined;
|
||||
if (pow) {
|
||||
return (
|
||||
<AsyncFooterIcon title={formatMessage({ defaultMessage: "Proof of Work" })} iconName="diamond" value={pow} />
|
||||
<AsyncFooterIcon title={formatMessage({ defaultMessage: "Proof of Work", id: 'grQ+mI' })} iconName="diamond" value={pow} />
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -199,7 +199,7 @@ export default function NoteFooter(props: NoteFooterProps) {
|
||||
<AsyncFooterIcon
|
||||
className={didZap ? "reacted text-nostr-orange" : "hover:text-nostr-orange"}
|
||||
{...longPress()}
|
||||
title={formatMessage({ defaultMessage: "Zap" })}
|
||||
title={formatMessage({ defaultMessage: "Zap", id: 'fBI91o' })}
|
||||
iconName={canFastZap ? "zapFast" : "zap"}
|
||||
value={zapTotal}
|
||||
onClick={e => fastZap(e)}
|
||||
@ -217,7 +217,7 @@ export default function NoteFooter(props: NoteFooterProps) {
|
||||
<AsyncFooterIcon
|
||||
className={hasReposted() ? "reacted text-nostr-blue" : "hover:text-nostr-blue"}
|
||||
iconName="repeat"
|
||||
title={formatMessage({ defaultMessage: "Repost" })}
|
||||
title={formatMessage({ defaultMessage: "Repost", id: 'JeoS4y' })}
|
||||
value={reposts.length}
|
||||
/>
|
||||
}
|
||||
@ -232,7 +232,7 @@ export default function NoteFooter(props: NoteFooterProps) {
|
||||
</div>
|
||||
<MenuItem onClick={() => repost()} disabled={hasReposted()}>
|
||||
<Icon name="repeat" />
|
||||
<FormattedMessage defaultMessage="Repost" />
|
||||
<FormattedMessage defaultMessage="Repost" id="JeoS4y" />
|
||||
</MenuItem>
|
||||
<MenuItem
|
||||
onClick={() =>
|
||||
@ -243,7 +243,7 @@ export default function NoteFooter(props: NoteFooterProps) {
|
||||
})
|
||||
}>
|
||||
<Icon name="edit" />
|
||||
<FormattedMessage defaultMessage="Quote Repost" />
|
||||
<FormattedMessage defaultMessage="Quote Repost" id="C7642/" />
|
||||
</MenuItem>
|
||||
</Menu>
|
||||
);
|
||||
@ -258,7 +258,7 @@ export default function NoteFooter(props: NoteFooterProps) {
|
||||
<AsyncFooterIcon
|
||||
className={reacted ? "reacted text-nostr-red" : "hover:text-nostr-red"}
|
||||
iconName={reacted ? "heart-solid" : "heart"}
|
||||
title={formatMessage({ defaultMessage: "Like" })}
|
||||
title={formatMessage({ defaultMessage: "Like", id: 'qtWLmt' })}
|
||||
value={positive.length}
|
||||
onClick={async () => {
|
||||
if (readonly) return;
|
||||
@ -274,7 +274,7 @@ export default function NoteFooter(props: NoteFooterProps) {
|
||||
<AsyncFooterIcon
|
||||
className={note.show ? "reacted text-nostr-purple" : "hover:text-nostr-purple"}
|
||||
iconName="reply"
|
||||
title={formatMessage({ defaultMessage: "Reply" })}
|
||||
title={formatMessage({ defaultMessage: "Reply", id: '9HU8vw' })}
|
||||
value={props.replies ?? 0}
|
||||
onClick={async () => handleReplyButtonClick()}
|
||||
/>
|
||||
|
@ -118,7 +118,7 @@ export function NoteInner(props: NoteProps) {
|
||||
message={
|
||||
<>
|
||||
<FormattedMessage
|
||||
defaultMessage="The author has marked this note as a <i>sensitive topic</i>"
|
||||
defaultMessage="The author has marked this note as a <i>sensitive topic</i>" id="StKzTE"
|
||||
values={{
|
||||
i: c => <i>{c}</i>,
|
||||
}}
|
||||
@ -127,7 +127,7 @@ export function NoteInner(props: NoteProps) {
|
||||
<>
|
||||
|
||||
<FormattedMessage
|
||||
defaultMessage="Reason: <i>{reason}</i>"
|
||||
defaultMessage="Reason: <i>{reason}</i>" id="6OSOXl"
|
||||
values={{
|
||||
i: c => <i>{c}</i>,
|
||||
reason: contentWarning[1],
|
||||
@ -136,7 +136,7 @@ export function NoteInner(props: NoteProps) {
|
||||
</>
|
||||
)}
|
||||
|
||||
<FormattedMessage defaultMessage="Click here to load anyway" />
|
||||
<FormattedMessage defaultMessage="Click here to load anyway" id="IoQq+a" />
|
||||
</>
|
||||
}>
|
||||
{innerContent}
|
||||
|
@ -79,7 +79,7 @@ export default function NoteReaction(props: NoteReactionProps) {
|
||||
<div className="flex g4">
|
||||
<Icon name="repeat" size={18} />
|
||||
<FormattedMessage
|
||||
defaultMessage="{name} reposted"
|
||||
defaultMessage="{name} reposted" id="+xliwN"
|
||||
values={{
|
||||
name: getDisplayName(profile, ev.pubkey),
|
||||
}}
|
||||
|
@ -51,7 +51,7 @@ export default function Poll(props: PollProps) {
|
||||
throw new Error(
|
||||
formatMessage(
|
||||
{
|
||||
defaultMessage: "Can't vote with {amount} sats, please set a different default zap amount",
|
||||
defaultMessage: "Can't vote with {amount} sats, please set a different default zap amount", id: 'NepkXH',
|
||||
},
|
||||
{
|
||||
amount,
|
||||
@ -75,7 +75,7 @@ export default function Poll(props: PollProps) {
|
||||
if (!svc.canZap) {
|
||||
throw new Error(
|
||||
formatMessage({
|
||||
defaultMessage: "Can't vote because LNURL service does not support zaps",
|
||||
defaultMessage: "Can't vote because LNURL service does not support zaps", id: 'fOksnD',
|
||||
}),
|
||||
);
|
||||
}
|
||||
@ -92,7 +92,7 @@ export default function Poll(props: PollProps) {
|
||||
} else {
|
||||
setError(
|
||||
formatMessage({
|
||||
defaultMessage: "Failed to send vote",
|
||||
defaultMessage: "Failed to send vote", id: 'g985Wp',
|
||||
}),
|
||||
);
|
||||
}
|
||||
@ -115,7 +115,7 @@ export default function Poll(props: PollProps) {
|
||||
<div className="flex justify-between p">
|
||||
<small>
|
||||
<FormattedMessage
|
||||
defaultMessage="You are voting with {amount} sats"
|
||||
defaultMessage="You are voting with {amount} sats" id="3qnJlS"
|
||||
values={{
|
||||
amount: formatShort(prefs.defaultZapAmount),
|
||||
}}
|
||||
@ -123,13 +123,13 @@ export default function Poll(props: PollProps) {
|
||||
</small>
|
||||
<button type="button" onClick={() => setTallyBy(s => (s !== "zaps" ? "zaps" : "pubkeys"))}>
|
||||
<FormattedMessage
|
||||
defaultMessage="Votes by {type}"
|
||||
defaultMessage="Votes by {type}" id="xIcAOU"
|
||||
values={{
|
||||
type:
|
||||
tallyBy === "zaps" ? (
|
||||
<FormattedMessage defaultMessage="zap" />
|
||||
<FormattedMessage defaultMessage="zap" id="5BVs2e" />
|
||||
) : (
|
||||
<FormattedMessage defaultMessage="user" />
|
||||
<FormattedMessage defaultMessage="user" id="sUNhQE" />
|
||||
),
|
||||
}}
|
||||
/>
|
||||
|
@ -105,7 +105,7 @@ const Reactions = ({ show, setShow, positive, negative, reposts, zaps }: Reactio
|
||||
pubkey={z.anonZap ? "" : z.sender}
|
||||
subHeader={<div title={z.content}>{z.content}</div>}
|
||||
link={z.anonZap ? "" : undefined}
|
||||
overrideUsername={z.anonZap ? formatMessage({ defaultMessage: "Anonymous" }) : undefined}
|
||||
overrideUsername={z.anonZap ? formatMessage({ defaultMessage: "Anonymous", id: 'LXxsbk' }) : undefined}
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
|
@ -57,7 +57,7 @@ export default function RevealMedia(props: RevealMediaProps) {
|
||||
<Reveal
|
||||
message={
|
||||
<FormattedMessage
|
||||
defaultMessage="You don't follow this person, click here to load media from <i>{link}</i>, or update <a><i>your preferences</i></a> to always load media from everybody."
|
||||
defaultMessage="You don't follow this person, click here to load media from <i>{link}</i>, or update <a><i>your preferences</i></a> to always load media from everybody." id="HhcAVH"
|
||||
values={{
|
||||
i: i => <i>{i}</i>,
|
||||
a: a => <Link to="/settings/preferences">{a}</Link>,
|
||||
|
@ -14,7 +14,7 @@ const ShowMore = ({ text, onClick, className = "" }: ShowMoreProps) => {
|
||||
return (
|
||||
<div className="show-more-container">
|
||||
<button className={classNames("show-more", className)} onClick={onClick}>
|
||||
{text || <FormattedMessage defaultMessage="Show More" />}
|
||||
{text || <FormattedMessage defaultMessage="Show More" id="O8Z8t9" />}
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
|
@ -303,11 +303,11 @@ export function Thread(props: { onBack?: () => void; disableSpotlight?: boolean
|
||||
}
|
||||
|
||||
const parentText = formatMessage({
|
||||
defaultMessage: "Parent",
|
||||
defaultMessage: "Parent", id: 'ADmfQT',
|
||||
description: "Link to parent note in thread",
|
||||
});
|
||||
const backText = formatMessage({
|
||||
defaultMessage: "Back",
|
||||
defaultMessage: "Back", id: 'jfV8Wr',
|
||||
description: "Navigate back button on threads view",
|
||||
});
|
||||
|
||||
|
@ -60,7 +60,7 @@ export const ZapsSummary = ({ zaps }: ZapsSummaryProps) => {
|
||||
<ProfileImage
|
||||
pubkey={anonZap ? "" : sender}
|
||||
showFollowDistance={false}
|
||||
overrideUsername={anonZap ? formatMessage({ defaultMessage: "Anonymous" }) : undefined}
|
||||
overrideUsername={anonZap ? formatMessage({ defaultMessage: "Anonymous", id: 'LXxsbk' }) : undefined}
|
||||
/>
|
||||
)}
|
||||
{restZaps.length > 0 ? (
|
||||
|
@ -84,7 +84,7 @@ const Timeline = (props: TimelineProps) => {
|
||||
{(props.loadMore === undefined || props.loadMore === true) && (
|
||||
<div className="flex items-center">
|
||||
<button type="button" onClick={() => feed.loadMore()}>
|
||||
<FormattedMessage defaultMessage="Load more" />
|
||||
<FormattedMessage defaultMessage="Load more" id="00LcfG" />
|
||||
</button>
|
||||
</div>
|
||||
)}
|
||||
|
@ -39,7 +39,7 @@ export function TimelineRenderer(props: TimelineRendererProps) {
|
||||
return <ProfileImage pubkey={p} showUsername={false} link={""} showFollowDistance={false} />;
|
||||
})}
|
||||
<FormattedMessage
|
||||
defaultMessage="{n} new {n, plural, =1 {note} other {notes}}"
|
||||
defaultMessage="{n} new {n, plural, =1 {note} other {notes}}" id="3t3kok"
|
||||
values={{ n: props.latest.length }}
|
||||
/>
|
||||
<Icon name="arrowUp" />
|
||||
@ -52,7 +52,7 @@ export function TimelineRenderer(props: TimelineRendererProps) {
|
||||
return <ProfileImage pubkey={p} showUsername={false} link={""} showFollowDistance={false} />;
|
||||
})}
|
||||
<FormattedMessage
|
||||
defaultMessage="{n} new {n, plural, =1 {note} other {notes}}"
|
||||
defaultMessage="{n} new {n, plural, =1 {note} other {notes}}" id="3t3kok"
|
||||
values={{ n: props.latest.length }}
|
||||
/>
|
||||
<Icon name="arrowUp" />
|
||||
|
@ -6,10 +6,10 @@ export default function AccountName({ name = "", link = true }) {
|
||||
return (
|
||||
<>
|
||||
<div>
|
||||
<FormattedMessage defaultMessage="Username" />: <b>{name}</b>
|
||||
<FormattedMessage defaultMessage="Username" id="JCIgkj" />: <b>{name}</b>
|
||||
</div>
|
||||
<div>
|
||||
<FormattedMessage defaultMessage="Short link" />:{" "}
|
||||
<FormattedMessage defaultMessage="Short link" id="rx1i0i" />:{" "}
|
||||
{link ? (
|
||||
<a
|
||||
href={`https://iris.to/${name}`}
|
||||
@ -24,7 +24,7 @@ export default function AccountName({ name = "", link = true }) {
|
||||
)}
|
||||
</div>
|
||||
<div>
|
||||
<FormattedMessage defaultMessage="Nostr address (nip05)" />: <b>{name}@iris.to</b>
|
||||
<FormattedMessage defaultMessage="Nostr address (nip05)" id="BjNwZW" />: <b>{name}@iris.to</b>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
|
@ -61,12 +61,12 @@ export default function ActiveAccount({ name = "", setAsPrimary = () => {} }) {
|
||||
return (
|
||||
<div>
|
||||
<div className="negative">
|
||||
<FormattedMessage defaultMessage="You have an active iris.to account" />:
|
||||
<FormattedMessage defaultMessage="You have an active iris.to account" id="UrKTqQ" />:
|
||||
<AccountName name={name} />
|
||||
</div>
|
||||
<p>
|
||||
<button type="button" onClick={onClick}>
|
||||
<FormattedMessage defaultMessage="Set as primary Nostr address (nip05)" />
|
||||
<FormattedMessage defaultMessage="Set as primary Nostr address (nip05)" id="MiMipu" />
|
||||
</button>
|
||||
</p>
|
||||
</div>
|
||||
|
@ -71,7 +71,7 @@ class IrisAccount extends Component<Props> {
|
||||
view = (
|
||||
<div>
|
||||
<p>
|
||||
<FormattedMessage defaultMessage="Register an Iris username" /> (iris.to/username)
|
||||
<FormattedMessage defaultMessage="Register an Iris username" id="kEZUR8" /> (iris.to/username)
|
||||
</p>
|
||||
<form onSubmit={e => this.showChallenge(e)}>
|
||||
<div className="flex g8">
|
||||
@ -83,14 +83,14 @@ class IrisAccount extends Component<Props> {
|
||||
onInput={e => this.onNewUserNameChange(e)}
|
||||
/>
|
||||
<button type="submit">
|
||||
<FormattedMessage defaultMessage="Register" />
|
||||
<FormattedMessage defaultMessage="Register" id="deEeEI" />
|
||||
</button>
|
||||
</div>
|
||||
<div>
|
||||
{this.state.newUserNameValid ? (
|
||||
<>
|
||||
<span className="success">
|
||||
<FormattedMessage defaultMessage="Username is available" />
|
||||
<FormattedMessage defaultMessage="Username is available" id="EcfIwB" />
|
||||
</span>
|
||||
<AccountName name={this.state.newUserName} link={false} />
|
||||
</>
|
||||
@ -106,7 +106,7 @@ class IrisAccount extends Component<Props> {
|
||||
return (
|
||||
<>
|
||||
<h3>
|
||||
<FormattedMessage defaultMessage="Iris.to account" />
|
||||
<FormattedMessage defaultMessage="Iris.to account" id="Mzizei" />
|
||||
</h3>
|
||||
{view}
|
||||
<p>
|
||||
|
@ -6,19 +6,19 @@ export default function ReservedAccount({ name = "", enableReserved = () => {},
|
||||
<div>
|
||||
<p className="success">
|
||||
<FormattedMessage
|
||||
defaultMessage="Username iris.to/<b>{name}</b> is reserved for you!"
|
||||
defaultMessage="Username iris.to/<b>{name}</b> is reserved for you!" id="Zff6lu"
|
||||
values={{ name, b: s => <b>{s}</b> }}
|
||||
/>
|
||||
</p>
|
||||
<AccountName name={name} link={false} />
|
||||
<p>
|
||||
<button className="btn btn-sm btn-primary" onClick={() => enableReserved()}>
|
||||
<FormattedMessage defaultMessage="Yes please" />
|
||||
<FormattedMessage defaultMessage="Yes please" id="VcwrfF" />
|
||||
</button>
|
||||
</p>
|
||||
<p>
|
||||
<button className="btn btn-sm btn-neutral" onClick={() => declineReserved()}>
|
||||
<FormattedMessage defaultMessage="No thanks" />
|
||||
<FormattedMessage defaultMessage="No thanks" id="c+JYNI" />
|
||||
</button>
|
||||
</p>
|
||||
</div>
|
||||
|
@ -19,7 +19,7 @@ export function LiveEvent({ ev }: { ev: NostrEvent }) {
|
||||
<div className="flex g4">
|
||||
<Icon name="signal-01" />
|
||||
<b className="uppercase">
|
||||
<FormattedMessage defaultMessage="Live" />
|
||||
<FormattedMessage defaultMessage="Live" id="Dn82AL" />
|
||||
</b>
|
||||
</div>
|
||||
);
|
||||
@ -27,7 +27,7 @@ export function LiveEvent({ ev }: { ev: NostrEvent }) {
|
||||
case "ended": {
|
||||
return (
|
||||
<b className="uppercase">
|
||||
<FormattedMessage defaultMessage="Ended" />
|
||||
<FormattedMessage defaultMessage="Ended" id="TP/cMX" />
|
||||
</b>
|
||||
);
|
||||
}
|
||||
@ -50,7 +50,7 @@ export function LiveEvent({ ev }: { ev: NostrEvent }) {
|
||||
return (
|
||||
<Link to={link} target="_blank">
|
||||
<button type="button">
|
||||
<FormattedMessage defaultMessage="Join Stream" />
|
||||
<FormattedMessage defaultMessage="Join Stream" id="GQPtfk" />
|
||||
</button>
|
||||
</Link>
|
||||
);
|
||||
@ -60,7 +60,7 @@ export function LiveEvent({ ev }: { ev: NostrEvent }) {
|
||||
return (
|
||||
<Link to={link} target="_blank">
|
||||
<button type="button">
|
||||
<FormattedMessage defaultMessage="Watch Replay" />
|
||||
<FormattedMessage defaultMessage="Watch Replay" id="6/hB3S" />
|
||||
</button>
|
||||
</Link>
|
||||
);
|
||||
|
@ -283,7 +283,7 @@ export default function Nip5Service(props: Nip05ServiceProps) {
|
||||
: startBuy(handle, domain)
|
||||
}>
|
||||
{props.forSubscription ? (
|
||||
<FormattedMessage defaultMessage="Claim Now" />
|
||||
<FormattedMessage defaultMessage="Claim Now" id="FdhSU2" />
|
||||
) : (
|
||||
<FormattedMessage {...messages.BuyNow} />
|
||||
)}
|
||||
|
@ -8,11 +8,11 @@ export function Offline({ onRetry, className }: { onRetry?: () => void | Promise
|
||||
<div className={classNames("flex items-center g8", className)}>
|
||||
<Icon name="wifi-off" className="error" />
|
||||
<div className="error">
|
||||
<FormattedMessage defaultMessage="Offline" />
|
||||
<FormattedMessage defaultMessage="Offline" id="7UOvbT" />
|
||||
</div>
|
||||
{onRetry && (
|
||||
<AsyncButton onClick={onRetry}>
|
||||
<FormattedMessage defaultMessage="Retry" />
|
||||
<FormattedMessage defaultMessage="Retry" id="62nsdy" />
|
||||
</AsyncButton>
|
||||
)}
|
||||
</div>
|
||||
|
@ -29,7 +29,7 @@ export function PinPrompt({
|
||||
if (pin.length < 4) {
|
||||
setError(
|
||||
formatMessage({
|
||||
defaultMessage: "Pin too short",
|
||||
defaultMessage: "Pin too short", id: 'LR1XjT',
|
||||
}),
|
||||
);
|
||||
return;
|
||||
@ -43,7 +43,7 @@ export function PinPrompt({
|
||||
if (e instanceof InvalidPinError) {
|
||||
setError(
|
||||
formatMessage({
|
||||
defaultMessage: "Incorrect pin",
|
||||
defaultMessage: "Incorrect pin", id: 'qz9fty',
|
||||
}),
|
||||
);
|
||||
} else if (e instanceof Error) {
|
||||
@ -65,7 +65,7 @@ export function PinPrompt({
|
||||
}}>
|
||||
<div className="flex flex-col g12">
|
||||
<h2>
|
||||
<FormattedMessage defaultMessage="Enter Pin" />
|
||||
<FormattedMessage defaultMessage="Enter Pin" id="KtsyO0" />
|
||||
</h2>
|
||||
{subTitle ? <div>{subTitle}</div> : null}
|
||||
<input
|
||||
@ -79,10 +79,10 @@ export function PinPrompt({
|
||||
{error && <b className="error">{error}</b>}
|
||||
<div className="flex g8">
|
||||
<button type="button" onClick={() => onCancel()}>
|
||||
<FormattedMessage defaultMessage="Cancel" />
|
||||
<FormattedMessage defaultMessage="Cancel" id="47FYwb" />
|
||||
</button>
|
||||
<AsyncButton ref={submitButtonRef} onClick={() => submitPin()} type="submit">
|
||||
<FormattedMessage defaultMessage="Submit" />
|
||||
<FormattedMessage defaultMessage="Submit" id="wSZR47" />
|
||||
</AsyncButton>
|
||||
</div>
|
||||
</div>
|
||||
@ -143,7 +143,7 @@ export function LoginUnlock() {
|
||||
subTitle={
|
||||
<p>
|
||||
<FormattedMessage
|
||||
defaultMessage="Enter a pin to encrypt your private key, you must enter this pin every time you open {site}."
|
||||
defaultMessage="Enter a pin to encrypt your private key, you must enter this pin every time you open {site}." id="SLZGPn"
|
||||
values={{
|
||||
site: CONFIG.appNameCapitalized,
|
||||
}}
|
||||
@ -161,7 +161,7 @@ export function LoginUnlock() {
|
||||
<PinPrompt
|
||||
subTitle={
|
||||
<p>
|
||||
<FormattedMessage defaultMessage="Enter pin to unlock your private key" />
|
||||
<FormattedMessage defaultMessage="Enter pin to unlock your private key" id="e7VmYP" />
|
||||
</p>
|
||||
}
|
||||
onResult={unlockSession}
|
||||
|
@ -24,7 +24,7 @@ export const ProxyImg = (props: ProxyImgProps) => {
|
||||
setBypass(true);
|
||||
}}>
|
||||
<FormattedMessage
|
||||
defaultMessage="Failed to proxy image from {host}, click here to load directly"
|
||||
defaultMessage="Failed to proxy image from {host}, click here to load directly" id="65BmHb"
|
||||
values={{
|
||||
host: getUrlHostname(props.src),
|
||||
}}
|
||||
|
@ -30,7 +30,7 @@ export function RootTabs({ base }: { base?: string }) {
|
||||
element: (
|
||||
<>
|
||||
<Icon name="user-v2" />
|
||||
<FormattedMessage defaultMessage="Following" />
|
||||
<FormattedMessage defaultMessage="Following" id="cPIKU2" />
|
||||
</>
|
||||
),
|
||||
},
|
||||
@ -41,7 +41,7 @@ export function RootTabs({ base }: { base?: string }) {
|
||||
element: (
|
||||
<>
|
||||
<Icon name="fire" />
|
||||
<FormattedMessage defaultMessage="Trending Notes" />
|
||||
<FormattedMessage defaultMessage="Trending Notes" id="Ix8l+B" />
|
||||
</>
|
||||
),
|
||||
},
|
||||
@ -52,7 +52,7 @@ export function RootTabs({ base }: { base?: string }) {
|
||||
element: (
|
||||
<>
|
||||
<Icon name="message-chat-circle" />
|
||||
<FormattedMessage defaultMessage="Conversations" />
|
||||
<FormattedMessage defaultMessage="Conversations" id="1udzha" />
|
||||
</>
|
||||
),
|
||||
},
|
||||
@ -63,7 +63,7 @@ export function RootTabs({ base }: { base?: string }) {
|
||||
element: (
|
||||
<>
|
||||
<Icon name="user-up" />
|
||||
<FormattedMessage defaultMessage="Trending People" />
|
||||
<FormattedMessage defaultMessage="Trending People" id="CVWeJ6" />
|
||||
</>
|
||||
),
|
||||
},
|
||||
@ -74,7 +74,7 @@ export function RootTabs({ base }: { base?: string }) {
|
||||
element: (
|
||||
<>
|
||||
<Icon name="thumbs-up" />
|
||||
<FormattedMessage defaultMessage="Suggested Follows" />
|
||||
<FormattedMessage defaultMessage="Suggested Follows" id="C8HhVE" />
|
||||
</>
|
||||
),
|
||||
},
|
||||
@ -85,7 +85,7 @@ export function RootTabs({ base }: { base?: string }) {
|
||||
element: (
|
||||
<>
|
||||
<Icon name="hash" />
|
||||
<FormattedMessage defaultMessage="Trending Hashtags" />
|
||||
<FormattedMessage defaultMessage="Trending Hashtags" id="XXm7jJ" />
|
||||
</>
|
||||
),
|
||||
},
|
||||
@ -96,7 +96,7 @@ export function RootTabs({ base }: { base?: string }) {
|
||||
element: (
|
||||
<>
|
||||
<Icon name="globe" />
|
||||
<FormattedMessage defaultMessage="Global" />
|
||||
<FormattedMessage defaultMessage="Global" id="EWyQH5" />
|
||||
</>
|
||||
),
|
||||
},
|
||||
@ -107,7 +107,7 @@ export function RootTabs({ base }: { base?: string }) {
|
||||
element: (
|
||||
<>
|
||||
<Icon name="hash" />
|
||||
<FormattedMessage defaultMessage="Topics" />
|
||||
<FormattedMessage defaultMessage="Topics" id="kc79d3" />
|
||||
</>
|
||||
),
|
||||
},
|
||||
|
@ -116,7 +116,7 @@ export default function SearchBox() {
|
||||
<div className="search relative">
|
||||
<input
|
||||
type="text"
|
||||
placeholder={formatMessage({ defaultMessage: "Search" })}
|
||||
placeholder={formatMessage({ defaultMessage: "Search", id: 'xmcVZ0' })}
|
||||
className="w-max"
|
||||
value={search}
|
||||
onChange={handleChange}
|
||||
@ -141,7 +141,7 @@ export default function SearchBox() {
|
||||
}`}
|
||||
onMouseEnter={() => setActiveIndex(0)}
|
||||
onClick={() => navigate(`/search/${encodeURIComponent(search)}`, { state: { forceRefresh: true } })}>
|
||||
<FormattedMessage defaultMessage="Search notes" />: <b>{search}</b>
|
||||
<FormattedMessage defaultMessage="Search notes" id="EJbFi7" />: <b>{search}</b>
|
||||
</div>
|
||||
{main?.slice(0, MAX_RESULTS).map((result, idx) => (
|
||||
<div
|
||||
|
@ -104,7 +104,7 @@ export default function SendSats(props: SendSatsProps) {
|
||||
<div className="flex items-center">
|
||||
<p className="flex g12">
|
||||
<Icon name="check" className="success" />
|
||||
{success?.description ?? <FormattedMessage defaultMessage="Paid" />}
|
||||
{success?.description ?? <FormattedMessage defaultMessage="Paid" id="u/vOPu" />}
|
||||
</p>
|
||||
{success.url && (
|
||||
<p>
|
||||
@ -123,9 +123,9 @@ export default function SendSats(props: SendSatsProps) {
|
||||
<>
|
||||
<h2>
|
||||
{zapper?.canZap() ? (
|
||||
<FormattedMessage defaultMessage="Send zap" />
|
||||
<FormattedMessage defaultMessage="Send zap" id="5ykRmX" />
|
||||
) : (
|
||||
<FormattedMessage defaultMessage="Send sats" />
|
||||
<FormattedMessage defaultMessage="Send sats" id="DKnriN" />
|
||||
)}
|
||||
</h2>
|
||||
</>
|
||||
@ -141,9 +141,9 @@ export default function SendSats(props: SendSatsProps) {
|
||||
{t.zap?.pubkey && <ProfileImage pubkey={t.zap.pubkey} showUsername={false} />}
|
||||
<h2>
|
||||
{zapper?.canZap() ? (
|
||||
<FormattedMessage defaultMessage="Send zap to {name}" values={values} />
|
||||
<FormattedMessage defaultMessage="Send zap to {name}" id="SMO+on" values={values} />
|
||||
) : (
|
||||
<FormattedMessage defaultMessage="Send sats to {name}" values={values} />
|
||||
<FormattedMessage defaultMessage="Send sats to {name}" id="JGrt9q" values={values} />
|
||||
)}
|
||||
</h2>
|
||||
</>
|
||||
@ -156,9 +156,9 @@ export default function SendSats(props: SendSatsProps) {
|
||||
<div className="flex flex-col g12">
|
||||
<h2>
|
||||
{zapper?.canZap() ? (
|
||||
<FormattedMessage defaultMessage="Send zap splits to" />
|
||||
<FormattedMessage defaultMessage="Send zap splits to" id="ZS+jRE" />
|
||||
) : (
|
||||
<FormattedMessage defaultMessage="Send sats splits to" />
|
||||
<FormattedMessage defaultMessage="Send sats splits to" id="uc0din" />
|
||||
)}
|
||||
</h2>
|
||||
<div className="flex g4 f-wrap">
|
||||
@ -330,7 +330,7 @@ function SendSatsInput(props: {
|
||||
<div className="flex flex-col g24">
|
||||
<div className="flex flex-col g8">
|
||||
<h3>
|
||||
<FormattedMessage defaultMessage="Zap amount in sats" />
|
||||
<FormattedMessage defaultMessage="Zap amount in sats" id="zcaOTs" />
|
||||
</h3>
|
||||
{renderAmounts()}
|
||||
{custom()}
|
||||
@ -348,7 +348,7 @@ function SendSatsInput(props: {
|
||||
{(amount ?? 0) > 0 && (
|
||||
<AsyncButton onClick={() => props.onNextStage(getValue())}>
|
||||
<Icon name="zap" />
|
||||
<FormattedMessage defaultMessage="Zap {n} sats" values={{ n: formatShort(amount) }} />
|
||||
<FormattedMessage defaultMessage="Zap {n} sats" id="8QDesP" values={{ n: formatShort(amount) }} />
|
||||
</AsyncButton>
|
||||
)}
|
||||
</div>
|
||||
@ -365,15 +365,15 @@ function SendSatsZapTypeSelector({ zapType, setZapType }: { zapType: ZapType; se
|
||||
return (
|
||||
<div className="flex flex-col g8">
|
||||
<h3>
|
||||
<FormattedMessage defaultMessage="Zap Type" />
|
||||
<FormattedMessage defaultMessage="Zap Type" id="+aZY2h" />
|
||||
</h3>
|
||||
<div className="flex g8">
|
||||
{!readonly && makeTab(ZapType.PublicZap, <FormattedMessage defaultMessage="Public" description="Public Zap" />)}
|
||||
{!readonly && makeTab(ZapType.PublicZap, <FormattedMessage defaultMessage="Public" id="/PCavi" description="Public Zap" />)}
|
||||
{/*makeTab(ZapType.PrivateZap, "Private")*/}
|
||||
{makeTab(ZapType.AnonZap, <FormattedMessage defaultMessage="Anon" description="Anonymous Zap" />)}
|
||||
{makeTab(ZapType.AnonZap, <FormattedMessage defaultMessage="Anon" id="wWLwvh" description="Anonymous Zap" />)}
|
||||
{makeTab(
|
||||
ZapType.NonZap,
|
||||
<FormattedMessage defaultMessage="Non-Zap" description="Non-Zap, Regular LN payment" />,
|
||||
<FormattedMessage defaultMessage="Non-Zap" id="AnLrRC" description="Non-Zap, Regular LN payment" />,
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
@ -396,7 +396,7 @@ function SendSatsInvoice(props: {
|
||||
<Copy text={v.pr} maxSize={26} className="items-center" />
|
||||
<a href={`lightning:${v.pr}`}>
|
||||
<button type="button">
|
||||
<FormattedMessage defaultMessage="Open Wallet" />
|
||||
<FormattedMessage defaultMessage="Open Wallet" id="HbefNb" />
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
|
@ -57,7 +57,7 @@ export default function SuggestedProfiles() {
|
||||
return (
|
||||
<>
|
||||
<div className="flex items-center justify-between bg-superdark p br">
|
||||
<FormattedMessage defaultMessage="Provider" />
|
||||
<FormattedMessage defaultMessage="Provider" id="xaj9Ba" />
|
||||
<select onChange={e => setProvider(Number(e.target.value))}>
|
||||
<option value={Provider.NostrBand}>nostr.band</option>
|
||||
{/*<option value={Provider.SemisolDev}>semisol.dev</option>*/}
|
||||
|
@ -42,7 +42,7 @@ export default function BadgeList({ badges }: { badges: TaggedNostrEvent[] }) {
|
||||
</div>
|
||||
<div className="reactions-header">
|
||||
<h2>
|
||||
<FormattedMessage defaultMessage="Badges" />
|
||||
<FormattedMessage defaultMessage="Badges" id="h8XMJL" />
|
||||
</h2>
|
||||
</div>
|
||||
<div className="body">
|
||||
@ -55,7 +55,7 @@ export default function BadgeList({ badges }: { badges: TaggedNostrEvent[] }) {
|
||||
<p>{description}</p>
|
||||
<p>
|
||||
<FormattedMessage
|
||||
defaultMessage="By: {author}"
|
||||
defaultMessage="By: {author}" id="RfhLwC"
|
||||
values={{ author: <Username pubkey={pubkey} onLinkVisit={() => setShowModal(false)} /> }}
|
||||
/>
|
||||
</p>
|
||||
|
@ -12,7 +12,7 @@ export function FollowingMark({ pubkey }: { pubkey: string }) {
|
||||
return (
|
||||
<span className="following flex g4">
|
||||
<Icon name="check" className="success" size={12} />
|
||||
<FormattedMessage defaultMessage="following" />
|
||||
<FormattedMessage defaultMessage="following" id="+tShPg" />
|
||||
</span>
|
||||
);
|
||||
}
|
||||
|
@ -1,103 +1,103 @@
|
||||
import { defineMessages } from "react-intl";
|
||||
|
||||
export default defineMessages({
|
||||
Cancel: { defaultMessage: "Cancel" },
|
||||
Reply: { defaultMessage: "Reply" },
|
||||
Send: { defaultMessage: "Send" },
|
||||
NotePlaceholder: { defaultMessage: "What's on your mind?" },
|
||||
Back: { defaultMessage: "Back" },
|
||||
Block: { defaultMessage: "Block" },
|
||||
Unblock: { defaultMessage: "Unblock" },
|
||||
MuteCount: { defaultMessage: "{n} muted" },
|
||||
Mute: { defaultMessage: "Mute" },
|
||||
MutedAuthor: { defaultMessage: "This author has been muted" },
|
||||
Others: { defaultMessage: ` & {n} {n, plural, =1 {other} other {others}}` },
|
||||
Show: { defaultMessage: "Show" },
|
||||
Delete: { defaultMessage: "Delete" },
|
||||
Deleted: { defaultMessage: "Deleted" },
|
||||
Unmute: { defaultMessage: "Unmute" },
|
||||
MuteAll: { defaultMessage: "Mute all" },
|
||||
BlockCount: { defaultMessage: "{n} blocked" },
|
||||
JustNow: { defaultMessage: "Just now" },
|
||||
Follow: { defaultMessage: "Follow" },
|
||||
FollowAll: { defaultMessage: "Follow all" },
|
||||
Unfollow: { defaultMessage: "Unfollow" },
|
||||
FollowerCount: { defaultMessage: "{n} followers" },
|
||||
FollowingCount: { defaultMessage: "Follows {n}" },
|
||||
FollowsYou: { defaultMessage: "follows you" },
|
||||
Invoice: { defaultMessage: "Lightning Invoice" },
|
||||
PayInvoice: { defaultMessage: "Pay Invoice" },
|
||||
Expired: { defaultMessage: "Expired" },
|
||||
Pay: { defaultMessage: "Pay" },
|
||||
Loading: { defaultMessage: "Loading..." },
|
||||
Logout: { defaultMessage: "Logout" },
|
||||
ShowMore: { defaultMessage: "Show more" },
|
||||
TranslateTo: { defaultMessage: "Translate to {lang}" },
|
||||
TranslatedFrom: { defaultMessage: "Translated from {lang}" },
|
||||
TranslationFailed: { defaultMessage: "Translation failed" },
|
||||
UnknownEventKind: { defaultMessage: "Unknown event kind: {kind}" },
|
||||
ConfirmDeletion: { defaultMessage: `Are you sure you want to delete {id}` },
|
||||
ConfirmRepost: { defaultMessage: `Are you sure you want to repost: {id}` },
|
||||
Reactions: { defaultMessage: "Reactions" },
|
||||
ReactionsCount: { defaultMessage: "Reactions ({n})" },
|
||||
Share: { defaultMessage: "Share" },
|
||||
CopyID: { defaultMessage: "Copy ID" },
|
||||
CopyJSON: { defaultMessage: "Copy Event JSON" },
|
||||
Dislike: { defaultMessage: "{n} Dislike" },
|
||||
DislikeAction: { defaultMessage: "Dislike" },
|
||||
Sats: { defaultMessage: `{n} {n, plural, =1 {sat} other {sats}}` },
|
||||
Zapped: { defaultMessage: "zapped" },
|
||||
OthersZapped: { defaultMessage: `{n, plural, =0 {} =1 {zapped} other {zapped}}` },
|
||||
Likes: { defaultMessage: "Likes ({n})" },
|
||||
Zaps: { defaultMessage: "Zaps ({n})" },
|
||||
Dislikes: { defaultMessage: "Dislikes ({n})" },
|
||||
Reposts: { defaultMessage: "Reposts ({n})" },
|
||||
NoteToSelf: { defaultMessage: "Note to Self" },
|
||||
Read: { defaultMessage: "Read" },
|
||||
Write: { defaultMessage: "Write" },
|
||||
Seconds: { defaultMessage: "{n} secs" },
|
||||
Milliseconds: { defaultMessage: "{n} ms" },
|
||||
ShowLatest: { defaultMessage: "Show latest {n} notes" },
|
||||
LNURLFail: { defaultMessage: "Failed to load LNURL service" },
|
||||
InvalidLNURL: { defaultMessage: "Invalid LNURL" },
|
||||
InvoiceFail: { defaultMessage: "Failed to load invoice" },
|
||||
Custom: { defaultMessage: "Custom" },
|
||||
Confirm: { defaultMessage: "Confirm" },
|
||||
Comment: { defaultMessage: "Comment" },
|
||||
SendZap: { defaultMessage: "Send zap" },
|
||||
ShowReplies: { defaultMessage: "Show replies" },
|
||||
TooShort: { defaultMessage: "name too short" },
|
||||
TooLong: { defaultMessage: "name too long" },
|
||||
Regex: { defaultMessage: "name has disallowed characters" },
|
||||
Registered: { defaultMessage: "name is registered" },
|
||||
Disallowed: { defaultMessage: "name is blocked" },
|
||||
DisalledLater: { defaultMessage: "name will be available later" },
|
||||
BuyNow: { defaultMessage: "Buy Now" },
|
||||
NotAvailable: { defaultMessage: "Not available:" },
|
||||
Buying: { defaultMessage: "Buying {item}" },
|
||||
OrderPaid: { defaultMessage: "Order Paid!" },
|
||||
NewNip: { defaultMessage: "Your new NIP-05 handle is:" },
|
||||
ActivateNow: { defaultMessage: "Activate Now" },
|
||||
AddToProfile: { defaultMessage: "Add to Profile" },
|
||||
AccountPage: { defaultMessage: "account page" },
|
||||
AccountSupport: { defaultMessage: "Account Support" },
|
||||
GoTo: { defaultMessage: "Go to" },
|
||||
FindMore: { defaultMessage: "Find out more info about {service} at {link}" },
|
||||
Cancel: { defaultMessage: "Cancel", id: '47FYwb' },
|
||||
Reply: { defaultMessage: "Reply", id: '9HU8vw' },
|
||||
Send: { defaultMessage: "Send", id: '9WRlF4' },
|
||||
NotePlaceholder: { defaultMessage: "What's on your mind?", id: 'flnGvv' },
|
||||
Back: { defaultMessage: "Back", id: 'cyR7Kh' },
|
||||
Block: { defaultMessage: "Block", id: 'Up5U7K' },
|
||||
Unblock: { defaultMessage: "Unblock", id: 'nDejmx' },
|
||||
MuteCount: { defaultMessage: "{n} muted", id: 'VlJkSk' },
|
||||
Mute: { defaultMessage: "Mute", id: 'x82IOl' },
|
||||
MutedAuthor: { defaultMessage: "This author has been muted", id: 'ASRK0S' },
|
||||
Others: { defaultMessage: ` & {n} {n, plural, =1 {other} other {others}}`, id: 'egib+2' },
|
||||
Show: { defaultMessage: "Show", id: 'K7AkdL' },
|
||||
Delete: { defaultMessage: "Delete", id: 'K3r6DQ' },
|
||||
Deleted: { defaultMessage: "Deleted", id: 'KQvWvD' },
|
||||
Unmute: { defaultMessage: "Unmute", id: 'W9355R' },
|
||||
MuteAll: { defaultMessage: "Mute all", id: 'cWx9t8' },
|
||||
BlockCount: { defaultMessage: "{n} blocked", id: 'nwZXeh' },
|
||||
JustNow: { defaultMessage: "Just now", id: 'bxv59V' },
|
||||
Follow: { defaultMessage: "Follow", id: 'ieGrWo' },
|
||||
FollowAll: { defaultMessage: "Follow all", id: 'mKAr6h' },
|
||||
Unfollow: { defaultMessage: "Unfollow", id: 'izWS4J' },
|
||||
FollowerCount: { defaultMessage: "{n} followers", id: 'o7e+nJ' },
|
||||
FollowingCount: { defaultMessage: "Follows {n}", id: '9SvQep' },
|
||||
FollowsYou: { defaultMessage: "follows you", id: 'FmXUJg' },
|
||||
Invoice: { defaultMessage: "Lightning Invoice", id: '9wO4wJ' },
|
||||
PayInvoice: { defaultMessage: "Pay Invoice", id: 'lvlPhZ' },
|
||||
Expired: { defaultMessage: "Expired", id: 'RahCRH' },
|
||||
Pay: { defaultMessage: "Pay", id: 'lD3+8a' },
|
||||
Loading: { defaultMessage: "Loading...", id: 'gjBiyj' },
|
||||
Logout: { defaultMessage: "Logout", id: 'C81/uG' },
|
||||
ShowMore: { defaultMessage: "Show more", id: 'aWpBzj' },
|
||||
TranslateTo: { defaultMessage: "Translate to {lang}", id: 'Ebl/B2' },
|
||||
TranslatedFrom: { defaultMessage: "Translated from {lang}", id: 'Cu/K85' },
|
||||
TranslationFailed: { defaultMessage: "Translation failed", id: 'qmJ8kD' },
|
||||
UnknownEventKind: { defaultMessage: "Unknown event kind: {kind}", id: 'KahimY' },
|
||||
ConfirmDeletion: { defaultMessage: `Are you sure you want to delete {id}`, id: 'RhDAoS' },
|
||||
ConfirmRepost: { defaultMessage: `Are you sure you want to repost: {id}`, id: '+D82kt' },
|
||||
Reactions: { defaultMessage: "Reactions", id: 'XgWvGA' },
|
||||
ReactionsCount: { defaultMessage: "Reactions ({n})", id: 'iCqGww' },
|
||||
Share: { defaultMessage: "Share", id: 'OKhRC6' },
|
||||
CopyID: { defaultMessage: "Copy ID", id: 'wtLjP6' },
|
||||
CopyJSON: { defaultMessage: "Copy Event JSON", id: 'P61BTu' },
|
||||
Dislike: { defaultMessage: "{n} Dislike", id: 'GspYR7' },
|
||||
DislikeAction: { defaultMessage: "Dislike", id: '4OB335' },
|
||||
Sats: { defaultMessage: `{n} {n, plural, =1 {sat} other {sats}}`, id: 'jA3OE/' },
|
||||
Zapped: { defaultMessage: "zapped", id: 'B6+XJy' },
|
||||
OthersZapped: { defaultMessage: `{n, plural, =0 {} =1 {zapped} other {zapped}}`, id: 'mKhgP9' },
|
||||
Likes: { defaultMessage: "Likes ({n})", id: '6ewQqw' },
|
||||
Zaps: { defaultMessage: "Zaps ({n})", id: 'JHEHCk' },
|
||||
Dislikes: { defaultMessage: "Dislikes ({n})", id: '2k0Cv+' },
|
||||
Reposts: { defaultMessage: "Reposts ({n})", id: '8/vBbP' },
|
||||
NoteToSelf: { defaultMessage: "Note to Self", id: '4rYCjn' },
|
||||
Read: { defaultMessage: "Read", id: 'filwqD' },
|
||||
Write: { defaultMessage: "Write", id: 'k2veDA' },
|
||||
Seconds: { defaultMessage: "{n} secs", id: '0yO7wF' },
|
||||
Milliseconds: { defaultMessage: "{n} ms", id: '/n5KSF' },
|
||||
ShowLatest: { defaultMessage: "Show latest {n} notes", id: 'DZzCem' },
|
||||
LNURLFail: { defaultMessage: "Failed to load LNURL service", id: 'zonsdq' },
|
||||
InvalidLNURL: { defaultMessage: "Invalid LNURL", id: '0jOEtS' },
|
||||
InvoiceFail: { defaultMessage: "Failed to load invoice", id: 'CHTbO3' },
|
||||
Custom: { defaultMessage: "Custom", id: 'Sjo1P4' },
|
||||
Confirm: { defaultMessage: "Confirm", id: 'N2IrpM' },
|
||||
Comment: { defaultMessage: "Comment", id: 'LgbKvU' },
|
||||
SendZap: { defaultMessage: "Send zap", id: '5ykRmX' },
|
||||
ShowReplies: { defaultMessage: "Show replies", id: 'hicxcO' },
|
||||
TooShort: { defaultMessage: "name too short", id: 'B4C47Y' },
|
||||
TooLong: { defaultMessage: "name too long", id: '8g2vyB' },
|
||||
Regex: { defaultMessage: "name has disallowed characters", id: '0mch2Y' },
|
||||
Registered: { defaultMessage: "name is registered", id: 'cuV2gK' },
|
||||
Disallowed: { defaultMessage: "name is blocked", id: 'wih7iJ' },
|
||||
DisalledLater: { defaultMessage: "name will be available later", id: 'HFls6j' },
|
||||
BuyNow: { defaultMessage: "Buy Now", id: 'lCILNz' },
|
||||
NotAvailable: { defaultMessage: "Not available:", id: 'MI2jkA' },
|
||||
Buying: { defaultMessage: "Buying {item}", id: 'MzRYWH' },
|
||||
OrderPaid: { defaultMessage: "Order Paid!", id: 'H6/kLh' },
|
||||
NewNip: { defaultMessage: "Your new NIP-05 handle is:", id: '4L2vUY' },
|
||||
ActivateNow: { defaultMessage: "Activate Now", id: 'ZKORll' },
|
||||
AddToProfile: { defaultMessage: "Add to Profile", id: 'qkvYUb' },
|
||||
AccountPage: { defaultMessage: "account page", id: 'lgg1KN' },
|
||||
AccountSupport: { defaultMessage: "Account Support", id: '/JE/X+' },
|
||||
GoTo: { defaultMessage: "Go to", id: 'xIoGG9' },
|
||||
FindMore: { defaultMessage: "Find out more info about {service} at {link}", id: 'wqyN/i' },
|
||||
SavePassword: {
|
||||
defaultMessage: "Please make sure to save the following password in order to manage your handle in the future",
|
||||
defaultMessage: "Please make sure to save the following password in order to manage your handle in the future", id: '+vIQlC',
|
||||
},
|
||||
Handle: { defaultMessage: "Handle" },
|
||||
Pin: { defaultMessage: "Pin" },
|
||||
Pinned: { defaultMessage: "Pinned" },
|
||||
Bookmark: { defaultMessage: "Bookmark" },
|
||||
Bookmarks: { defaultMessage: "Bookmarks" },
|
||||
BookmarksCount: { defaultMessage: "Bookmarks ({n})" },
|
||||
Bookmarked: { defaultMessage: "Saved" },
|
||||
All: { defaultMessage: "All" },
|
||||
ConfirmUnbookmark: { defaultMessage: "Are you sure you want to remove this note from bookmarks?" },
|
||||
ConfirmUnpin: { defaultMessage: "Are you sure you want to unpin this note?" },
|
||||
ReactionsLink: { defaultMessage: "{n} Reactions" },
|
||||
ReBroadcast: { defaultMessage: "Broadcast Again" },
|
||||
IrisUserNameLengthError: { defaultMessage: "Name must be between 1 and 32 characters" },
|
||||
IrisUserNameFormatError: { defaultMessage: "Username must only contain lowercase letters and numbers" },
|
||||
Handle: { defaultMessage: "Handle", id: 'iNWbVV' },
|
||||
Pin: { defaultMessage: "Pin", id: 'puLNUJ' },
|
||||
Pinned: { defaultMessage: "Pinned", id: 'fWZYP5' },
|
||||
Bookmark: { defaultMessage: "Bookmark", id: 'Rs4kCE' },
|
||||
Bookmarks: { defaultMessage: "Bookmarks", id: 'nGBrvw' },
|
||||
BookmarksCount: { defaultMessage: "Bookmarks ({n})", id: 'GL8aXW' },
|
||||
Bookmarked: { defaultMessage: "Saved", id: 'fsB/4p' },
|
||||
All: { defaultMessage: "All", id: 'zQvVDJ' },
|
||||
ConfirmUnbookmark: { defaultMessage: "Are you sure you want to remove this note from bookmarks?", id: '1Mo59U' },
|
||||
ConfirmUnpin: { defaultMessage: "Are you sure you want to unpin this note?", id: 'IEwZvs' },
|
||||
ReactionsLink: { defaultMessage: "{n} Reactions", id: 'jzgQ2z' },
|
||||
ReBroadcast: { defaultMessage: "Broadcast Again", id: 'c3g2hL' },
|
||||
IrisUserNameLengthError: { defaultMessage: "Name must be between 1 and 32 characters", id: '4MBtMa' },
|
||||
IrisUserNameFormatError: { defaultMessage: "Username must only contain lowercase letters and numbers", id: 'RSr2uB' },
|
||||
});
|
||||
|
Reference in New Issue
Block a user