chore: Update translations
continuous-integration/drone/push Build is failing Details

This commit is contained in:
Kieran 2023-09-12 21:58:37 +00:00
parent 3c88a228aa
commit 35b6261e12
99 changed files with 257 additions and 130 deletions

View File

@ -1,4 +1,4 @@
<!DOCTYPE html>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />

View File

@ -1,4 +1,4 @@
<!DOCTYPE html>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />

View File

@ -38,7 +38,7 @@ export class GiftWrapCache extends RefreshFeedCache<UnwrappedGift> {
} catch (e) {
console.debug(e, v);
}
})
}),
)
)
.filter(a => a !== undefined)

View File

@ -26,7 +26,7 @@ export default function CashuNuts({ token }: { token: string }) {
e.stopPropagation();
const lnurl = profile?.lud16 ?? "";
const url = `https://redeem.cashu.me?token=${encodeURIComponent(token)}&lightning=${encodeURIComponent(
lnurl
lnurl,
)}&autopay=yes`;
window.open(url, "_blank");
}

View File

@ -58,7 +58,11 @@ export default function DM(props: DMProps) {
<div className={isMe ? "dm me" : "dm other"} ref={ref}>
<div>
{sender()}
{content ? <Text id={msg.id} content={content} tags={[]} creator={otherPubkey} /> : <FormattedMessage defaultMessage="Loading..." />}
{content ? (
<Text id={msg.id} content={content} tags={[]} creator={otherPubkey} />
) : (
<FormattedMessage defaultMessage="Loading..." />
)}
</div>
<div>
<NoteTime from={msg.created_at * 1000} fallback={formatMessage(messages.JustNow)} />

View File

@ -34,7 +34,7 @@ export default function FollowButton(props: FollowButtonProps) {
if (publisher) {
const ev = await publisher.contactList(
follows.item.filter(a => a !== pubkey),
relays.item
relays.item,
);
System.BroadcastEvent(ev);
}

View File

@ -261,9 +261,7 @@ export default function Nip5Service(props: Nip05ServiceProps) {
/>
&nbsp;@&nbsp;
<select value={domain} onChange={onDomainChange}>
{serviceConfig?.domains.map(a => (
<option key={a.name}>{a.name}</option>
))}
{serviceConfig?.domains.map(a => <option key={a.name}>{a.name}</option>)}
</select>
</div>
)}

View File

@ -135,7 +135,7 @@ export function NoteInner(props: NoteProps) {
{
[Reaction.Positive]: [] as TaggedNostrEvent[],
[Reaction.Negative]: [] as TaggedNostrEvent[],
}
},
);
return {
[Reaction.Positive]: dedupeByPubkey(result[Reaction.Positive]),
@ -150,7 +150,7 @@ export function NoteInner(props: NoteProps) {
...getReactions(related, ev.id, EventKind.TextNote).filter(e => e.tags.some(tagFilterOfTextRepost(e, ev.id))),
...getReactions(related, ev.id, EventKind.Repost),
]),
[related, ev]
[related, ev],
);
const zaps = useMemo(() => {
const sortedZaps = getReactions(related, ev.id, EventKind.ZapReceipt)
@ -241,7 +241,7 @@ export function NoteInner(props: NoteProps) {
function goToEvent(
e: React.MouseEvent,
eTarget: TaggedNostrEvent,
isTargetAllowed: boolean = e.target === e.currentTarget
isTargetAllowed: boolean = e.target === e.currentTarget,
) {
if (!isTargetAllowed || opt?.canClick === false) {
return;

View File

@ -2,7 +2,8 @@
border: 1px solid transparent;
border-radius: 12px;
box-shadow: 0px 0px 6px 1px rgba(182, 108, 156, 0.3);
background: linear-gradient(var(--gray-superdark), var(--gray-superdark)) padding-box,
background:
linear-gradient(var(--gray-superdark), var(--gray-superdark)) padding-box,
linear-gradient(90deg, #ef9644, #fd7c49, #ff5e58, #ff3b70, #ff088e, #eb00b1, #c31ed5, #7b41f6) border-box;
}

View File

@ -76,8 +76,8 @@ export function NoteCreator() {
setError(
formatMessage({
defaultMessage: "Invalid LNURL",
})
)
}),
),
);
return;
}
@ -256,9 +256,9 @@ export function NoteCreator() {
? false
: // otherwise return selectedCustomRelays with target relay added / removed
a.filter(el =>
el === r ? e.target.checked : !selectedCustomRelays || selectedCustomRelays.includes(el)
)
)
el === r ? e.target.checked : !selectedCustomRelays || selectedCustomRelays.includes(el),
),
),
)
}
/>

View File

@ -71,7 +71,7 @@ export default function NoteFooter(props: NoteFooterProps) {
},
{
captureEvent: true,
}
},
);
function hasReacted(emoji: string) {

View File

@ -51,15 +51,15 @@ export default function Poll(props: PollProps) {
},
{
amount,
}
)
},
),
);
}
setVoting(opt);
const r = Object.keys(relays.item);
const zap = await publisher.zap(amount * 1000, props.ev.pubkey, r, props.ev.id, undefined, eb =>
eb.tag(["poll_option", opt.toString()])
eb.tag(["poll_option", opt.toString()]),
);
const lnurl = props.ev.tags.find(a => a[0] === "zap")?.[1] || pollerProfile?.lud16 || pollerProfile?.lud06;
@ -72,7 +72,7 @@ export default function Poll(props: PollProps) {
throw new Error(
formatMessage({
defaultMessage: "Can't vote because LNURL service does not support zaps",
})
}),
);
}
@ -89,7 +89,7 @@ export default function Poll(props: PollProps) {
setError(
formatMessage({
defaultMessage: "Failed to send vote",
})
}),
);
}
} finally {
@ -117,10 +117,18 @@ export default function Poll(props: PollProps) {
}}
/>
</small>
<button type="button" onClick={() => setTallyBy(s => s !== "zaps" ? "zaps" : "pubkeys")}>
<FormattedMessage defaultMessage="Votes by {type}" values={{
type: tallyBy === "zaps" ? <FormattedMessage defaultMessage="zap" /> : <FormattedMessage defaultMessage="user" />
}} />
<button type="button" onClick={() => setTallyBy(s => (s !== "zaps" ? "zaps" : "pubkeys"))}>
<FormattedMessage
defaultMessage="Votes by {type}"
values={{
type:
tallyBy === "zaps" ? (
<FormattedMessage defaultMessage="zap" />
) : (
<FormattedMessage defaultMessage="user" />
),
}}
/>
</button>
</div>
<div className="poll-body">
@ -130,8 +138,10 @@ export default function Poll(props: PollProps) {
const zapsOnOption = props.zaps.filter(b => b.pollOption === opt);
const total = (() => {
switch (tallyBy) {
case "zaps": return zapsOnOption.reduce((acc, v) => (acc += v.amount), 0);
case "pubkeys": return new Set(zapsOnOption.map(a => unwrap(a.sender))).size;
case "zaps":
return zapsOnOption.reduce((acc, v) => (acc += v.amount), 0);
case "pubkeys":
return new Set(zapsOnOption.map(a => unwrap(a.sender))).size;
}
})();
const weight = totalVotes === 0 ? 0 : total / totalVotes;

View File

@ -34,7 +34,7 @@ export default function PubkeyList({ ev, className }: { ev: NostrEvent; classNam
pk,
Object.keys(login.relays.item),
undefined,
`Zap from ${hexToBech32("note", ev.id)}`
`Zap from ${hexToBech32("note", ev.id)}`,
);
const invoice = await svc.getInvoice(amtSend, undefined, zap);
if (invoice.pr) {

View File

@ -55,9 +55,9 @@ export function ReBroadcaster() {
? false
: // otherwise return selectedCustomRelays with target relay added / removed
a.filter(el =>
el === r ? e.target.checked : !selectedCustomRelays || selectedCustomRelays.includes(el)
)
)
el === r ? e.target.checked : !selectedCustomRelays || selectedCustomRelays.includes(el),
),
),
)
}
/>

View File

@ -60,7 +60,7 @@ const Reactions = ({ show, setShow, positive, negative, reposts, zaps }: Reactio
value: 3,
},
]
: []
: [],
);
const [tab, setTab] = useState(tabs[0]);

View File

@ -22,7 +22,7 @@ export default function Relay(props: RelayProps) {
const navigate = useNavigate();
const login = useLogin();
const relaySettings = unwrap(
login.relays.item[props.addr] ?? System.Sockets.find(a => a.address === props.addr)?.settings ?? {}
login.relays.item[props.addr] ?? System.Sockets.find(a => a.address === props.addr)?.settings ?? {},
);
const state = useRelayState(props.addr);
const name = useMemo(() => getRelayName(props.addr), [props.addr]);
@ -34,7 +34,7 @@ export default function Relay(props: RelayProps) {
...login.relays.item,
[props.addr]: o,
},
unixNowMs()
unixNowMs(),
);
}

View File

@ -285,7 +285,7 @@ export default function SendSats(props: SendSatsProps) {
{makeTab(ZapType.AnonZap, <FormattedMessage defaultMessage="Anon" description="Anonymous Zap" />)}
{makeTab(
ZapType.NonZap,
<FormattedMessage defaultMessage="Non-Zap" description="Non-Zap, Regular LN payment" />
<FormattedMessage defaultMessage="Non-Zap" description="Non-Zap, Regular LN payment" />,
)}
</div>
</>

View File

@ -243,7 +243,7 @@ export default function Thread() {
if (t?.root?.key === "a" && t?.root?.value) {
const parsed = t.root.value.split(":");
replyTo = thread.data?.find(
a => a.kind === Number(parsed[0]) && a.pubkey === parsed[1] && findTag(a, "d") === parsed[2]
a => a.kind === Number(parsed[0]) && a.pubkey === parsed[1] && findTag(a, "d") === parsed[2],
)?.id;
}
if (replyTo) {
@ -264,7 +264,7 @@ export default function Thread() {
thread.data?.find(
ne =>
ne.id === currentId ||
(link.type === NostrPrefix.Address && findTag(ne, "d") === currentId && ne.pubkey === link.author)
(link.type === NostrPrefix.Address && findTag(ne, "d") === currentId && ne.pubkey === link.author),
) ?? (location.state && "sig" in location.state ? (location.state as TaggedNostrEvent) : undefined);
if (currentNote) {
const currentThread = EventExt.extractThread(currentNote);
@ -280,7 +280,7 @@ export default function Thread() {
if (replyTo.key === "a" && replyTo.value) {
const parsed = replyTo.value.split(":");
return thread.data?.find(
a => a.kind === Number(parsed[0]) && a.pubkey === parsed[1] && findTag(a, "d") === parsed[2]
a => a.kind === Number(parsed[0]) && a.pubkey === parsed[1] && findTag(a, "d") === parsed[2],
);
}
if (replyTo.value) {
@ -348,7 +348,7 @@ export default function Thread() {
notes={replies}
related={getAllReactions(
thread.data,
replies.map(a => a.id)
replies.map(a => a.id),
)}
chains={chains}
onNavigate={navigateThread}

View File

@ -47,7 +47,7 @@ const Timeline = (props: TimelineProps) => {
?.filter(a => (props.postsOnly ? !a.tags.some(b => b[0] === "e") : true))
.filter(a => props.ignoreModeration || !isMuted(a.pubkey));
},
[props.postsOnly, muted, props.ignoreModeration]
[props.postsOnly, muted, props.ignoreModeration],
);
const mainFeed = useMemo(() => {
@ -60,7 +60,7 @@ const Timeline = (props: TimelineProps) => {
(id: u256) => {
return (feed.related ?? []).filter(a => findTag(a, "e") === id);
},
[feed.related]
[feed.related],
);
const liveStreams = useMemo(() => {
return (feed.main ?? []).filter(a => a.kind === EventKind.LiveEvent && findTag(a, "status") === "live");

View File

@ -28,11 +28,11 @@ const TimelineFollows = (props: TimelineFollowsProps) => {
const [latest, setLatest] = useState(unixNow());
const feed = useSyncExternalStore(
cb => FollowsFeed.hook(cb, "*"),
() => FollowsFeed.snapshot()
() => FollowsFeed.snapshot(),
);
const reactions = useReactions(
"follows-feed-reactions",
feed.map(a => a.id)
feed.map(a => a.id),
);
const system = useContext(SnortContext);
const login = useLogin();
@ -48,7 +48,7 @@ const TimelineFollows = (props: TimelineFollowsProps) => {
?.filter(a => (props.postsOnly ? !a.tags.some(b => b[0] === "e") : true))
.filter(a => !isMuted(a.pubkey) && login.follows.item.includes(a.pubkey));
},
[props.postsOnly, muted, login.follows.timestamp]
[props.postsOnly, muted, login.follows.timestamp],
);
const mainFeed = useMemo(() => {
@ -63,7 +63,7 @@ const TimelineFollows = (props: TimelineFollowsProps) => {
(id: u256) => {
return (reactions?.data ?? []).filter(a => findTag(a, "e") === id);
},
[reactions]
[reactions],
);
const liveStreams = useMemo(() => {

View File

@ -17,7 +17,7 @@ export default function ZapstrEmbed({ ev }: { ev: NostrEvent }) {
ev.tags.find(a => a[0] === "d")?.[1] ?? "",
undefined,
ev.kind,
ev.pubkey
ev.pubkey,
);
return (
<>

View File

@ -23,7 +23,7 @@ export default function useProfileBadges(pubkey?: HexKey) {
if (profileBadges.data) {
return chunks(
profileBadges.data.tags.filter(t => t[0] === "a" || t[0] === "e"),
2
2,
).reduce((acc, [a, e]) => {
return {
...acc,
@ -44,7 +44,7 @@ export default function useProfileBadges(pubkey?: HexKey) {
}
return acc;
},
{ pubkeys: [], ds: [] } as BadgeAwards
{ pubkeys: [], ds: [] } as BadgeAwards,
) as BadgeAwards;
}, [profile]);
@ -77,7 +77,7 @@ export default function useProfileBadges(pubkey?: HexKey) {
})
.filter(
({ award, badge }) =>
badge && award.pubkey === badge.pubkey && award.tags.find(t => t[0] === "p" && t[1] === pubkey)
badge && award.pubkey === badge.pubkey && award.tags.find(t => t[0] === "p" && t[1] === pubkey),
)
.map(({ badge }) => unwrap(badge));
}

View File

@ -13,7 +13,7 @@ export function useReactions(subId: string, ids: Array<string>, others?: (rb: Re
.kinds(
pref.enableReactions
? [EventKind.Reaction, EventKind.Repost, EventKind.ZapReceipt]
: [EventKind.ZapReceipt, EventKind.Repost]
: [EventKind.ZapReceipt, EventKind.Repost],
)
.tag("e", ids);
}

View File

@ -14,7 +14,7 @@ export default function useFollowersFeed(pubkey?: HexKey) {
const followers = useMemo(() => {
const contactLists = followersFeed.data?.filter(
a => a.kind === EventKind.ContactList && a.tags.some(b => b[0] === "p" && b[1] === pubkey)
a => a.kind === EventKind.ContactList && a.tags.some(b => b[0] === "p" && b[1] === pubkey),
);
return [...new Set(contactLists?.map(a => a.pubkey))];
}, [followersFeed, pubkey]);

View File

@ -85,7 +85,7 @@ export default function useLoginFeed() {
Nip4Chats.onEvent(loginFeed.data);
const subs = loginFeed.data.filter(
a => a.kind === EventKind.SnortSubscriptions && a.pubkey === bech32ToHex(SnortPubKey)
a => a.kind === EventKind.SnortSubscriptions && a.pubkey === bech32ToHex(SnortPubKey),
);
Promise.all(
subs.map(async a => {
@ -97,7 +97,7 @@ export default function useLoginFeed() {
...ex,
} as SubscriptionEvent;
}
})
}),
).then(a => addSubscription(login, ...a.filter(a => a !== undefined).map(unwrap)));
}
}, [loginFeed, publisher]);
@ -106,7 +106,7 @@ export default function useLoginFeed() {
useEffect(() => {
if (loginFeed.data) {
const replies = loginFeed.data.filter(
a => a.kind === EventKind.TextNote && !isMuted(a.pubkey) && a.created_at > readNotifications
a => a.kind === EventKind.TextNote && !isMuted(a.pubkey) && a.created_at > readNotifications,
);
replies.forEach(async nx => {
const n = await makeNotification(nx);

View File

@ -35,11 +35,11 @@ export default function useThreadFeed(link: NostrLink) {
.kinds(
pref.enableReactions
? [EventKind.Reaction, EventKind.TextNote, EventKind.Repost, EventKind.ZapReceipt]
: [EventKind.TextNote, EventKind.ZapReceipt, EventKind.Repost]
: [EventKind.TextNote, EventKind.ZapReceipt, EventKind.Repost],
)
.tag(
"e",
allEvents.map(a => a.id)
allEvents.map(a => a.id),
);
}
if (trackingATags.length > 0) {
@ -50,7 +50,7 @@ export default function useThreadFeed(link: NostrLink) {
.authors(parsed.map(a => a[1]))
.tag(
"d",
parsed.map(a => a[2])
parsed.map(a => a[2]),
);
sub.withFilter().tag("a", trackingATags);
}
@ -85,7 +85,7 @@ export default function useThreadFeed(link: NostrLink) {
id: b[1],
relay: b[2],
};
})
}),
)
.flat();
const eTagsMissing = eTags.filter(a => !mainNotes.some(b => b.id === a.id));

View File

@ -43,7 +43,7 @@ export default function useTimelineFeed(subject: TimelineSubject, options: Timel
.kinds(
subject.type === "profile_keyword"
? [EventKind.SetMetadata]
: [EventKind.TextNote, EventKind.Repost, EventKind.Polls]
: [EventKind.TextNote, EventKind.Repost, EventKind.Polls],
);
if (subject.relay) {
@ -149,7 +149,7 @@ export default function useTimelineFeed(subject: TimelineSubject, options: Timel
.map(a => unwrap(a)[1]);
const repostsByKind1 = main.data
.filter(
a => (a.kind === EventKind.Repost || a.kind === EventKind.TextNote) && a.tags.some(tagFilterOfTextRepost(a))
a => (a.kind === EventKind.Repost || a.kind === EventKind.TextNote) && a.tags.some(tagFilterOfTextRepost(a)),
)
.map(a => a.tags.find(tagFilterOfTextRepost(a)))
.filter(a => a)

View File

@ -21,7 +21,7 @@ export default function useImgProxy() {
const result = hmacSha256(
utils.hexToBytes(unwrap(settings).key),
utils.hexToBytes(unwrap(settings).salt),
te.encode(u)
te.encode(u),
);
return urlSafe(base64.encode(result));
}

View File

@ -15,7 +15,7 @@ export function useInteractionCache(pubkey?: HexKey, event?: u256) {
const data =
useSyncExternalStore(
c => InteractionCache.hook(c, id),
() => InteractionCache.snapshot().find(a => a.id === id)
() => InteractionCache.snapshot().find(a => a.id === id),
) || EmptyInteraction;
return {
data: data,

View File

@ -4,6 +4,6 @@ import { useSyncExternalStore } from "react";
export default function useLogin() {
return useSyncExternalStore(
s => LoginStore.hook(s),
() => LoginStore.snapshot()
() => LoginStore.snapshot(),
);
}

View File

@ -96,7 +96,7 @@ export class MultiAccountStore extends ExternalStore<LoginSession> {
type: LoginSessionType,
relays?: Record<string, RelaySettings>,
remoteSignerRelays?: Array<string>,
privateKey?: string
privateKey?: string,
) {
if (this.#accounts.has(key)) {
throw new Error("Already logged in with this pubkey");

View File

@ -97,7 +97,7 @@ export class ServiceProvider {
path: string,
method?: "GET" | string,
body?: unknown,
headers?: { [key: string]: string }
headers?: { [key: string]: string },
): Promise<T | ServiceError> {
try {
const rsp = await fetch(`${this.url}${path}`, {

View File

@ -54,7 +54,7 @@ export default class SnortServiceProvider extends ServiceProvider {
path: string,
method?: "GET" | string,
body?: unknown,
headers?: { [key: string]: string }
headers?: { [key: string]: string },
): Promise<T | ServiceError> {
const auth = await this.#publisher.generic(eb => {
eb.kind(EventKind.HttpAuthentication);

View File

@ -25,7 +25,7 @@ const ErrorPage = () => {
{JSON.stringify(
error instanceof Error ? { name: error.name, message: error.message, stack: error.stack } : error,
undefined,
" "
" ",
)}
</pre>
}

View File

@ -89,7 +89,7 @@ export default function Layout() {
useEffect(() => {
const osTheme = window.matchMedia("(prefers-color-scheme: light)");
setTheme(
preferences.theme === "system" && osTheme.matches ? "light" : preferences.theme === "light" ? "light" : "dark"
preferences.theme === "system" && osTheme.matches ? "light" : preferences.theme === "light" ? "light" : "dark",
);
osTheme.onchange = e => {
@ -174,7 +174,7 @@ const AccountHeader = () => {
const hasNotifications = useMemo(
() => latestNotification > readNotifications,
[latestNotification, readNotifications]
[latestNotification, readNotifications],
);
const unreadDms = useMemo(() => (publicKey ? 0 : 0), [publicKey]);

View File

@ -22,7 +22,7 @@ import { delay } from "SnortUtils";
declare global {
interface Window {
plausible?: (tag: string) => void
plausible?: (tag: string) => void;
}
}
@ -61,7 +61,7 @@ const Artwork: Array<ArtworkEntry> = [
export async function getNip05PubKey(addr: string): Promise<string> {
const [username, domain] = addr.split("@");
const rsp = await fetch(
`https://${domain}/.well-known/nostr.json?name=${encodeURIComponent(username.toLocaleLowerCase())}`
`https://${domain}/.well-known/nostr.json?name=${encodeURIComponent(username.toLocaleLowerCase())}`,
);
if (rsp.ok) {
const data = await rsp.json();
@ -109,7 +109,7 @@ export default function LoginPage() {
setError(
formatMessage({
defaultMessage: "Unknown login error",
})
}),
);
}
console.error(e);
@ -118,7 +118,7 @@ export default function LoginPage() {
async function makeRandomKey() {
await generateNewLogin();
window.plausible?.("Generate Account")
window.plausible?.("Generate Account");
navigate("/new");
}

View File

@ -75,7 +75,7 @@ export default function NotificationsPage() {
const notifications = useSyncExternalStore(
c => Notifications.hook(c, "*"),
() => Notifications.snapshot()
() => Notifications.snapshot(),
);
const timeKey = (ev: NostrEvent) => {
@ -119,7 +119,7 @@ function NotificationGroup({ evs }: { evs: Array<TaggedNostrEvent> }) {
return zap.anonZap ? "anon" : zap.sender ?? a.pubkey;
}
return a.pubkey;
})
}),
);
const firstPubkey = pubkeys[0];
const firstPubkeyProfile = useUserProfile(inView ? (firstPubkey === "anon" ? "" : firstPubkey) : "");
@ -213,7 +213,7 @@ function NotificationGroup({ evs }: { evs: Array<TaggedNostrEvent> }) {
pubkeys.length - 1,
firstPubkey === "anon"
? formatMessage({ defaultMessage: "Anon" })
: getDisplayName(firstPubkeyProfile, firstPubkey)
: getDisplayName(firstPubkeyProfile, firstPubkey),
)}
</div>
)}

View File

@ -221,7 +221,7 @@ export default function ProfilePage() {
} as { [key: string]: Tab };
const [tab, setTab] = useState<Tab>(ProfileTab.Notes);
const optionalTabs = [ProfileTab.Zaps, ProfileTab.Relays, ProfileTab.Bookmarks, ProfileTab.Muted].filter(a =>
unwrap(a)
unwrap(a),
) as Tab[];
const horizontalScroll = useHorizontalScroll();
@ -433,7 +433,7 @@ export default function ProfilePage() {
type: TLVEntryType.Author,
length: 64,
value: id,
})}`
})}`,
)
}>
<Icon name="envelope" size={16} />

View File

@ -73,7 +73,7 @@ export default function ZapPoolPage() {
const login = useLogin();
const zapPool = useSyncExternalStore(
c => ZapPoolController.hook(c),
() => ZapPoolController.snapshot()
() => ZapPoolController.snapshot(),
);
const { wallet } = useWallet();

View File

@ -27,7 +27,7 @@ export default function AccountsPage() {
setError(
formatMessage({
defaultMessage: "Unknown login error",
})
}),
);
}
console.error(e);

View File

@ -29,7 +29,7 @@ export default function LNForwardAddress({ handle }: { handle: ManageHandle }) {
setError(
formatMessage({
defaultMessage: "Invalid LNURL",
})
}),
);
return;
}

View File

@ -39,7 +39,7 @@ const ConnectCashu = () => {
setError(
formatMessage({
defaultMessage: "Unknown error",
})
}),
);
}
}

View File

@ -32,7 +32,7 @@ const ConnectLNC = () => {
setError(
formatMessage({
defaultMessage: "Unknown error",
})
}),
);
}
}

View File

@ -37,7 +37,7 @@ const ConnectLNDHub = () => {
setError(
formatMessage({
defaultMessage: "Unknown error",
})
}),
);
}
}

View File

@ -37,7 +37,7 @@ const ConnectNostrWallet = () => {
setError(
formatMessage({
defaultMessage: "Unknown error",
})
}),
);
}
}

View File

@ -88,7 +88,7 @@ export default class SnortApi {
path: string,
method?: "GET" | string,
body?: { [key: string]: string },
headers?: { [key: string]: string }
headers?: { [key: string]: string },
): Promise<T> {
if (!this.#publisher) {
throw new Error("Publisher not set");
@ -110,7 +110,7 @@ export default class SnortApi {
path: string,
method?: "GET" | string,
body?: { [key: string]: string },
headers?: { [key: string]: string }
headers?: { [key: string]: string },
): Promise<T> {
const rsp = await fetch(`${this.#url}${path}`, {
method: method,

View File

@ -50,7 +50,7 @@ export async function openFile(): Promise<File | undefined> {
}
}, 300);
},
{ once: true }
{ once: true },
);
});
}
@ -209,7 +209,7 @@ export function dedupeByPubkey(events: TaggedNostrEvent[]) {
list: [...list, ev],
};
},
{ list: [], seen: new Set([]) }
{ list: [], seen: new Set([]) },
);
return deduped.list as TaggedNostrEvent[];
}
@ -226,7 +226,7 @@ export function dedupeById<T extends { id: string }>(events: Array<T>) {
list: [...list, ev],
};
},
{ list: [], seen: new Set([]) }
{ list: [], seen: new Set([]) },
);
return deduped.list as Array<T>;
}
@ -487,7 +487,7 @@ export function kvToObject<T>(o: string, sep?: string) {
return [match[1], match[2]];
}
return [];
})
}),
) as T;
}

View File

@ -39,7 +39,7 @@ export const Toastore = new ToasterSlots();
export default function Toaster() {
const toast = useSyncExternalStore(
c => Toastore.hook(c),
() => Toastore.snapshot()
() => Toastore.snapshot(),
);
return (

View File

@ -12,7 +12,7 @@ import { magnetURIDecode } from "SnortUtils";
export default async function VoidCatUpload(
file: File | Blob,
filename: string,
publisher?: EventPublisher
publisher?: EventPublisher,
): Promise<UploadResult> {
const api = new VoidApi(VoidCatHost);
const uploader = api.getUploader(file);

View File

@ -57,6 +57,6 @@ export interface NutStashBackup {
mints: [
{
mintURL: string;
}
},
];
}

View File

@ -126,7 +126,7 @@ export class LNCWallet implements LNWallet {
err => {
this.#log(err);
reject(err);
}
},
);
});
}

View File

@ -182,7 +182,7 @@ export class NostrConnectWallet implements LNWallet {
],
() => {
// ignored
}
},
);
await this.#conn.SendAsync(evCommand);
return await new Promise<T>((resolve, reject) => {

View File

@ -84,7 +84,7 @@ export class WebLNWallet implements LNWallet {
await window.webln?.makeInvoice({
amount: req.amount,
defaultMemo: req.memo,
})
}),
);
if (rsp) {
const invoice = prToWalletInvoice(rsp.paymentRequest);

View File

@ -248,7 +248,7 @@ window.document.addEventListener("close", () => {
export function useWallet() {
const wallet = useSyncExternalStore<WalletStoreSnapshot>(
h => Wallets.hook(h),
() => Wallets.snapshot()
() => Wallets.snapshot(),
);
useEffect(() => {
if (wallet.wallet?.isReady() === false && wallet.wallet.canAutoLogin()) {

View File

@ -54,7 +54,7 @@ class ZapPool extends ExternalStore<Array<ZapPoolRecipient>> {
Toastore.push({
element: `Sent ${amtSend.toLocaleString()} sats to ${getDisplayName(
profile,
x.pubkey
x.pubkey,
)} from your zap pool`,
expire: unixNow() + 10,
icon: "zap",

View File

@ -51,7 +51,7 @@ const testGetDiff = (q: QueryOptimizer) => {
kinds: [1, 2, 3, 4, 5],
authors: randomPubkeys,
},
]
],
);
};
const testFlatMerge = (q: QueryOptimizer) => {
@ -59,7 +59,7 @@ const testFlatMerge = (q: QueryOptimizer) => {
q.expandFilter({
kinds: [1, 6, 7, 6969],
authors: randomPubkeys,
})
}),
);
};
const testCompress = (q: QueryOptimizer) => {

View File

@ -116,7 +116,7 @@ export function createChatLink(type: ChatType, ...params: Array<string>) {
type: TLVEntryType.Author,
length: params[0].length,
value: params[0],
} as TLVEntry
} as TLVEntry,
)}`;
}
case ChatType.PrivateDirectMessage: {
@ -127,7 +127,7 @@ export function createChatLink(type: ChatType, ...params: Array<string>) {
type: TLVEntryType.Author,
length: params[0].length,
value: params[0],
} as TLVEntry
} as TLVEntry,
)}`;
}
case ChatType.PrivateGroupChat: {
@ -139,8 +139,8 @@ export function createChatLink(type: ChatType, ...params: Array<string>) {
type: TLVEntryType.Author,
length: a.length,
value: a,
} as TLVEntry)
)
}) as TLVEntry,
),
)}`;
}
}
@ -161,14 +161,14 @@ export function useNip4Chat() {
const { publicKey } = useLogin();
return useSyncExternalStore(
c => Nip4Chats.hook(c),
() => Nip4Chats.snapshot(publicKey)
() => Nip4Chats.snapshot(publicKey),
);
}
export function useNip29Chat() {
return useSyncExternalStore(
c => Nip29Chats.hook(c),
() => Nip29Chats.snapshot()
() => Nip29Chats.snapshot(),
);
}
@ -176,7 +176,7 @@ export function useNip24Chat() {
const { publicKey } = useLogin();
return useSyncExternalStore(
c => Nip24Chats.hook(c),
() => Nip24Chats.snapshot(publicKey)
() => Nip24Chats.snapshot(publicKey),
);
}

View File

@ -39,8 +39,8 @@ export class Nip24ChatSystem extends ExternalStore<Array<Chat>> implements ChatS
value: v,
type: TLVEntryType.Author,
length: v.length,
} as TLVEntry)
)
}) as TLVEntry,
),
);
};
return dedupe(messages.map(a => chatId(a))).map(a => {
@ -72,7 +72,7 @@ export class Nip24ChatSystem extends ExternalStore<Array<Chat>> implements ChatS
} as {
t: number;
title: string | undefined;
}
},
);
return {
type: ChatType.PrivateDirectMessage,

View File

@ -46,12 +46,12 @@ export class Nip29ChatSystem extends ExternalStore<Array<Chat>> implements ChatS
.map(a => a.tags.find(b => b[0] === "g"))
.filter(a => a !== undefined)
.map(a => unwrap(a))
.map(a => `${a[2]}${a[1]}`)
.map(a => `${a[2]}${a[1]}`),
);
return groups.map(g => {
const [relay, channel] = g.split("/", 2);
const messages = allMessages.filter(
a => `${a.tags.find(b => b[0] === "g")?.[2]}${a.tags.find(b => b[0] === "g")?.[1]}` === g
a => `${a.tags.find(b => b[0] === "g")?.[2]}${a.tags.find(b => b[0] === "g")?.[1]}` === g,
);
const lastRead = lastReadInChat(g);
return {

View File

@ -34,7 +34,7 @@ export class Nip4ChatSystem extends ExternalStore<Array<Chat>> implements ChatSy
const dms = this.#cache.snapshot();
const dmSince = dms.reduce(
(acc, v) => (v.created_at > acc && v.kind === EventKind.DirectMessage ? (acc = v.created_at) : acc),
0
0,
);
this.#log("Loading DMS since %s", new Date(dmSince * 1000));
@ -49,12 +49,15 @@ export class Nip4ChatSystem extends ExternalStore<Array<Chat>> implements ChatSy
listChats(pk: string): Chat[] {
const myDms = this.#nip4Events();
const chats = myDms.reduce((acc, v) => {
const chatId = inChatWith(v, pk);
acc[chatId] ??= [];
acc[chatId].push(v);
return acc;
}, {} as Record<string, Array<NostrEvent>>);
const chats = myDms.reduce(
(acc, v) => {
const chatId = inChatWith(v, pk);
acc[chatId] ??= [];
acc[chatId].push(v);
return acc;
},
{} as Record<string, Array<NostrEvent>>,
);
return [...Object.entries(chats)].map(([k, v]) => Nip4ChatSystem.createChatObj(k, v));
}

View File

@ -212,5 +212,5 @@ root.render(
</SnortContext.Provider>
</IntlProvider>
</Provider>
</StrictMode>
</StrictMode>,
);

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs is one of the first NIP-05 providers in the space and offers a good collection of domains at reasonable prices",
"4Z3t5i": "Use imgproxy to compress images",
"4rYCjn": "Note to Self",
"5BVs2e": "zap",
"5JcXdV": "Create Account",
"5oTnfy": "Buy Handle",
"5rOdPG": "Once you setup your key manager extension and generated a key, you can follow our new users flow to setup your profile and help you find some interesting people on Nostr to follow.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} days",
"rrfdTe": "This is the same technology which is used by Bitcoin and has been proven to be extremely secure.",
"rudscU": "Failed to load follows, please try again later",
"sUNhQE": "user",
"sWnYKw": "Snort is designed to have a similar experience to Twitter.",
"svOoEH": "Name-squatting and impersonation is not allowed. Snort and our partners reserve the right to terminate your handle (not your account - nobody can take that away) for violating this rule.",
"tOdNiY": "Dark",
@ -422,6 +424,7 @@
"x/Fx2P": "Fund the services that you use by splitting a portion of all your zaps into a pool of funds!",
"x/q8d5": "This note has been marked as sensitive, click here to reveal",
"x82IOl": "Mute",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Go to",
"xJ9n2N": "Your public key",
"xKflGN": "{username}''s Follows on Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs هي من أوائل مزودي NIP-05 وتقدم مجموعة من المعرفات بأسعار معقولة",
"4Z3t5i": "استخدم imgproxy لضغط الصور",
"4rYCjn": "ملاحظة خاصة",
"5BVs2e": "zap",
"5JcXdV": "Create Account",
"5oTnfy": "شراء معرف",
"5rOdPG": "بمجرد إعداد ملحق مدير المفاتيح الخاص بك وإنشاء مفتاح، يمكنك المضي لإعداد ملفك الشخصي وسنساعدك في العثور على بعض الحسابات التي قد تثير اهتمامك على نوستر.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} أيام",
"rrfdTe": "هذه نفس التقنية التي تستخدم في البتكوين وثبت أنها آمنة للغاية.",
"rudscU": "فشل تحميل ما يلي ، يرجى المحاولة مرة أخرى في وقت لاحق",
"sUNhQE": "user",
"sWnYKw": "تم تصميم سنورت للحصول على تجربة مماثلة لتويتر.",
"svOoEH": "غير مسموح بانتحال الأسماء والشخصيات. يحتفظ سنورت وشركاؤنا بالحق في الغاء معرّف التوثيق الخاص بك (وليس حسابك - لا يمكن لأحد أن يفعل ذلك) لانتهاك هذه القاعدة.",
"tOdNiY": "داكن",
@ -422,6 +424,7 @@
"x/Fx2P": "Fund the services that you use by splitting a portion of all your zaps into a pool of funds!",
"x/q8d5": "تم وضع علامة على هذه الملاحظة على أنها حساسة، انقر هنا للعرض",
"x82IOl": "كتم",
"xIcAOU": "Votes by {type}",
"xIoGG9": "اذهب إلى",
"xJ9n2N": "مفتاحك العام",
"xKflGN": "يتابع {username} على نوستر",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs məkanda ilk NIP-05 provayderlərindən biridir və münasib qiymətlərlə yaxşı domen kolleksiyası təklif edir",
"4Z3t5i": "Şəkilləri sıxmaq üçün imgproxy istifadə edin",
"4rYCjn": "Özünə Qeyd",
"5BVs2e": "zap",
"5JcXdV": "Hesab yaradın",
"5oTnfy": "Buy Handle",
"5rOdPG": "Açar menecer artırmanızı quraşdırdıqdan və açar yaratdıqdan sonra profilinizi qurmaq və izləmək üçün Nostr-da bəzi maraqlı insanları tapmaqda sizə kömək etmək üçün yeni istifadəçilər axınımızı izləyə bilərsiniz.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} days",
"rrfdTe": "This is the same technology which is used by Bitcoin and has been proven to be extremely secure.",
"rudscU": "Failed to load follows, please try again later",
"sUNhQE": "user",
"sWnYKw": "Snort is designed to have a similar experience to Twitter.",
"svOoEH": "Name-squatting and impersonation is not allowed. Snort and our partners reserve the right to terminate your handle (not your account - nobody can take that away) for violating this rule.",
"tOdNiY": "Dark",
@ -422,6 +424,7 @@
"x/Fx2P": "Bütün zaplarınızın bir hissəsini vəsait hovuzuna bölməklə istifadə etdiyiniz xidmətləri maliyyələşdirin!",
"x/q8d5": "Bu qeyd həssas olaraq qeyd edilib, aşkar etmək üçün bura klikləyin",
"x82IOl": "Səssiz",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Get",
"xJ9n2N": "Sizin açıq açarınız",
"xKflGN": "{username}'nin Nostr-da İzləmələri",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs is one of the first NIP-05 providers in the space and offers a good collection of domains at reasonable prices",
"4Z3t5i": "Use imgproxy to compress images",
"4rYCjn": "Note to Self",
"5BVs2e": "zap",
"5JcXdV": "Create Account",
"5oTnfy": "Buy Handle",
"5rOdPG": "Once you setup your key manager extension and generated a key, you can follow our new users flow to setup your profile and help you find some interesting people on Nostr to follow.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} days",
"rrfdTe": "This is the same technology which is used by Bitcoin and has been proven to be extremely secure.",
"rudscU": "Failed to load follows, please try again later",
"sUNhQE": "user",
"sWnYKw": "Snort is designed to have a similar experience to Twitter.",
"svOoEH": "Name-squatting and impersonation is not allowed. Snort and our partners reserve the right to terminate your handle (not your account - nobody can take that away) for violating this rule.",
"tOdNiY": "Dark",
@ -422,6 +424,7 @@
"x/Fx2P": "Fund the services that you use by splitting a portion of all your zaps into a pool of funds!",
"x/q8d5": "This note has been marked as sensitive, click here to reveal",
"x82IOl": "Mute",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Go to",
"xJ9n2N": "Your public key",
"xKflGN": "{username}''s Follows on Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs is one of the first NIP-05 providers in the space and offers a good collection of domains at reasonable prices",
"4Z3t5i": "Use imgproxy to compress images",
"4rYCjn": "Note to Self",
"5BVs2e": "zap",
"5JcXdV": "Create Account",
"5oTnfy": "Buy Handle",
"5rOdPG": "Once you setup your key manager extension and generated a key, you can follow our new users flow to setup your profile and help you find some interesting people on Nostr to follow.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} days",
"rrfdTe": "This is the same technology which is used by Bitcoin and has been proven to be extremely secure.",
"rudscU": "Failed to load follows, please try again later",
"sUNhQE": "user",
"sWnYKw": "Snort is designed to have a similar experience to Twitter.",
"svOoEH": "Name-squatting and impersonation is not allowed. Snort and our partners reserve the right to terminate your handle (not your account - nobody can take that away) for violating this rule.",
"tOdNiY": "Dark",
@ -422,6 +424,7 @@
"x/Fx2P": "Fund the services that you use by splitting a portion of all your zaps into a pool of funds!",
"x/q8d5": "This note has been marked as sensitive, click here to reveal",
"x82IOl": "Mute",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Go to",
"xJ9n2N": "Your public key",
"xKflGN": "{username}''s Follows on Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs is one of the first NIP-05 providers in the space and offers a good collection of domains at reasonable prices",
"4Z3t5i": "Use imgproxy to compress images",
"4rYCjn": "Note to Self",
"5BVs2e": "zap",
"5JcXdV": "Create Account",
"5oTnfy": "Buy Handle",
"5rOdPG": "Once you setup your key manager extension and generated a key, you can follow our new users flow to setup your profile and help you find some interesting people on Nostr to follow.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} days",
"rrfdTe": "This is the same technology which is used by Bitcoin and has been proven to be extremely secure.",
"rudscU": "Failed to load follows, please try again later",
"sUNhQE": "user",
"sWnYKw": "Snort is designed to have a similar experience to Twitter.",
"svOoEH": "Name-squatting and impersonation is not allowed. Snort and our partners reserve the right to terminate your handle (not your account - nobody can take that away) for violating this rule.",
"tOdNiY": "Dark",
@ -422,6 +424,7 @@
"x/Fx2P": "Fund the services that you use by splitting a portion of all your zaps into a pool of funds!",
"x/q8d5": "This note has been marked as sensitive, click here to reveal",
"x82IOl": "Mute",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Go to",
"xJ9n2N": "Your public key",
"xKflGN": "{username}''s Follows on Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs ist einer der ersten NIP-05 Anbieter und bietet eine gute Auswahl von Domains zu fairen Preisen",
"4Z3t5i": "Verwende imgproxy um Bilder zu komprimieren",
"4rYCjn": "Notiz an mich selbst",
"5BVs2e": "zap",
"5JcXdV": "Konto erstellen",
"5oTnfy": "Handle kaufen",
"5rOdPG": "Sobald du deine Erweiterung für die Schlüsselverwaltung eingerichtet und einen Schlüssel generiert hast, kannst du unserem Prozess für neue Benutzer folgen, um dein Profil einzurichten und einige interessante Leute auf Nostr zu finden, denen du folgen kannst.",
@ -63,7 +64,7 @@
"7+Domh": "Notes",
"7BX/yC": "Konto wechseln",
"7hp70g": "NIP-05",
"7xzTiH": "{action} zu {target}",
"7xzTiH": "{action} an {target}",
"8/vBbP": "Reposts ({n})",
"89q5wc": "Reposts bestätigen",
"8QDesP": "Zap {n} sats",
@ -82,7 +83,7 @@
"Adk34V": "Profil erstellen",
"Ai8VHU": "Unbegrenzte Note Speicherung auf Snort Relais",
"AkCxS/": "Grund",
"AnLrRC": "Ohne Zap",
"AnLrRC": "Nicht-Zap",
"AyGauy": "Anmelden",
"B4C47Y": "Name ist zu kurz",
"B6+XJy": "hat gezappt",
@ -167,7 +168,7 @@
"KoFlZg": "Mint-URL eingeben",
"LF5kYT": "Weitere Verbindungen",
"LXxsbk": "Anonym",
"LgbKvU": "Kommentieren",
"LgbKvU": "Kommentar",
"Lu5/Bj": "In Zapstr öffnen",
"Lw+I+J": "{n,plural,=0{{name} zappte} other{{name} & {n} andere zappten}}",
"M3Oirc": "Debug Menüs",
@ -349,7 +350,7 @@
"lsNFM1": "Klicken, um Inhalt von {link} zu laden",
"lvlPhZ": "Lightning Zahlungsanforderung bezahlen",
"mErPop": "Es sieht so aus, als hättest du keine, checke {link} um eine zu kaufen!",
"mH91FY": "Jeder Mitwirkende erhält einen Anteil aller Spenden und NIP-05-Bestellungen. Die Aufteilung können Sie unten sehen",
"mH91FY": "Jeder Mitwirkende erhält einen Anteil aller Spenden und NIP-05-Bestellungen. Die Aufteilung kannst du unten sehen",
"mKAr6h": "Allen folgen",
"mKh2HS": "Datei-Upload-Dienst",
"mKhgP9": "{n,plural,=0{} =1{hat gezappt} other{haben gezappt}}",
@ -374,7 +375,7 @@
"p4N05H": "Hochladen",
"p85Uwy": "Aktive Abonnements",
"pI+77w": "Herunterladbare Backups von Snort Relais",
"puLNUJ": "Pin",
"puLNUJ": "Anheften",
"pzTOmv": "Follower",
"qD9EUF": "E-Mail <> DM Brücke für deine Snort Nostr-Adresse",
"qDwvZ4": "Unbekannter Fehler",
@ -392,6 +393,7 @@
"rmdsT4": "{n} Tage",
"rrfdTe": "Dies ist die gleiche Technologie, die auch von Bitcoin verwendet wird, und sich als äußerst sicher erwiesen hat.",
"rudscU": "Abonnements konnten nicht geladen werden, bitte versuchen Sie es später erneut",
"sUNhQE": "user",
"sWnYKw": "Snort wurde darauf konzipiert ein Twitter ähnliches Erlebnis zu bieten.",
"svOoEH": "Namens-Squatting und Impersonation sind nicht erlaubt. Snort und unsere Partner behalten sich das Recht vor, bei einem Verstoß gegen diese Regel dein Handle zu löschen (nicht dein Konto - das kann dir niemand wegnehmen).",
"tOdNiY": "Dunkel",
@ -422,6 +424,7 @@
"x/Fx2P": "Unterstütze die von dir genutzten Dienste, indem du einen Teil deiner Zaps in einen Spendenpool einzahlst!",
"x/q8d5": "Dieser Beitrag wurde als sensibel markiert, klicken Sie hier um den Inhalt zu zeigen",
"x82IOl": "Stummschalten",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Gehe zu",
"xJ9n2N": "Dein öffentlicher Schlüssel",
"xKflGN": "{username}''s folgt auf Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs is one of the first NIP-05 providers in the space and offers a good collection of domains at reasonable prices",
"4Z3t5i": "Use imgproxy to compress images",
"4rYCjn": "Note to Self",
"5BVs2e": "zap",
"5JcXdV": "Create Account",
"5oTnfy": "Buy Handle",
"5rOdPG": "Once you setup your key manager extension and generated a key, you can follow our new users flow to setup your profile and help you find some interesting people on Nostr to follow.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} days",
"rrfdTe": "This is the same technology which is used by Bitcoin and has been proven to be extremely secure.",
"rudscU": "Failed to load follows, please try again later",
"sUNhQE": "user",
"sWnYKw": "Snort is designed to have a similar experience to Twitter.",
"svOoEH": "Name-squatting and impersonation is not allowed. Snort and our partners reserve the right to terminate your handle (not your account - nobody can take that away) for violating this rule.",
"tOdNiY": "Dark",
@ -422,6 +424,7 @@
"x/Fx2P": "Fund the services that you use by splitting a portion of all your zaps into a pool of funds!",
"x/q8d5": "This note has been marked as sensitive, click here to reveal",
"x82IOl": "Mute",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Go to",
"xJ9n2N": "Your public key",
"xKflGN": "{username}''s Follows on Nostr",

View File

@ -443,4 +443,4 @@
"zjJZBd": "You're ready!",
"zonsdq": "Failed to load LNURL service",
"zvCDao": "Automatically show latest notes"
}
}

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plbes es uno de los primeros proveedores de NIP-05 y ofrece una buena colección de dominios a precios razonables.",
"4Z3t5i": "Usar imgproxy para comprimir imágenes",
"4rYCjn": "Mensajes guardados",
"5BVs2e": "zap",
"5JcXdV": "Crear una cuenta",
"5oTnfy": "Comprar Handle",
"5rOdPG": "Una vez configurada la extensión del gestor de claves y generada una clave, puedes seguir nuestro flujo de nuevos usuarios para configurar tu perfil y ayudarte a encontrar gente interesante en Nostr.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} días",
"rrfdTe": "Esta es la misma tecnología que usa Bitcoin y ha demostrado ser extremadamente segura.",
"rudscU": "Error al cargar seguidos, inténtalo más tarde",
"sUNhQE": "user",
"sWnYKw": "Snort está diseñado para tener una experience similar a Twitter.",
"svOoEH": "Ocupar nombres y hacerse pasar por terceros no está permitido. Snort y nuestros socios se reservan el derecho de terminar tu identificador (no tu cuenta, nadie te la puede arrebatar) si violas ésta norma.",
"tOdNiY": "Oscuro",
@ -422,6 +424,7 @@
"x/Fx2P": "Fund the services that you use by splitting a portion of all your zaps into a pool of funds!",
"x/q8d5": "Esta nota ha sido marcada como sensible, haz clic aquí para revelarla",
"x82IOl": "Silenciar",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Ir a",
"xJ9n2N": "Tu clave pública",
"xKflGN": "Seguidos de {username} en Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs یکی از اولین فراهم کنندگان NIP-05 در این محیط است و مجموعه خوبی از دامین ها را با قیمت مناسب ارائه می کند",
"4Z3t5i": "از imgproxy برای فشرده سازی تصویر استفاده کنید",
"4rYCjn": "یادداشت برای خود",
"5BVs2e": "zap",
"5JcXdV": "ساخت حساب کاربری",
"5oTnfy": "خرید شناسه",
"5rOdPG": "هنگامی که افزونه مدیریت کلید خود را راه‌اندازی کنید و یک کلید بسازید،می توانید روند کاربر جدید را پی بگیرید تا نمایه خود را راه بیندازید، و نیز به شما کمک می کند تا افراد مورد علاقه تان را در ناستر برای دنبال کردن بیابید.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} روز",
"rrfdTe": "این همان تکنولوژی است که در بیتکوین استفاده شده و اثبات شده که به شدت امن است.",
"rudscU": "بارگیری دنبال شوندگان انجام نشد ، لطفاً بعداً دوباره امتحان کنید",
"sUNhQE": "user",
"sWnYKw": "اسنورت طوری طراحی شده تا تجربه مشابه توییتر ارائه دهد.",
"svOoEH": "جعل نام و جعل هویت مجاز نیست. در صورت سرپیچی، اسنورت و شرکا حق دارند شناسه کاربریتان را لغو کنند (نه حساب کاربریتان - هیچ کس نمیتواند آن را از شما بگیرد).",
"tOdNiY": "تاریک",
@ -422,6 +424,7 @@
"x/Fx2P": "با تقسیم بخشی از زپ های خود و اختصاص آن به استخر زپ، خدماتی را که استفاده می کنید تامین مالی نمایید!",
"x/q8d5": "این یادداشت به عنوان حساس علامت گذاری شده است، اینجا کلیک کنید تا آشکار شود",
"x82IOl": "بيصدا",
"xIcAOU": "Votes by {type}",
"xIoGG9": "برو به",
"xJ9n2N": "کلید عمومی شما",
"xKflGN": "دنبال شوندگان {username} در ناستر",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs on yksi ensimmäisistä NIP-05-tarjoajista alalla ja tarjoaa kohtuuhintaisia verkkotunnuksia",
"4Z3t5i": "Käytä imgproxya pakataksesi kuvat",
"4rYCjn": "Muistiinpano itselle",
"5BVs2e": "zap",
"5JcXdV": "Luo tili",
"5oTnfy": "Osta käyttäjätunnus",
"5rOdPG": "Kun olet määrittänyt avainhallintaohjelman ja generoinut avaimen, voit seurata uusille käyttäjille tarkoitettua opasta määrittääksesi profiilisi ja löytääksesi kiinnostavia henkilöitä seurattavaksi Nostrissa.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} päivää",
"rrfdTe": "Tämä käyttää samaa teknologiaa kuin Bitcoin ja on osoittautunut erittäin turvalliseksi.",
"rudscU": "Seurannan lataaminen epäonnistui, yritä myöhemmin uudelleen",
"sUNhQE": "user",
"sWnYKw": "Snort on suunniteltu tarjoamaan Twitterin kaltainen käyttökokemus",
"svOoEH": "Nimien hamstraus ja identiteettivarkaus eivät ole sallittua. Snort ja kumppanimme pidättävät oikeuden lopettaa käyttäjätunnuksesi (ei tiliäsi - sitä kukaan ei voi ottaa pois) tämän säännön rikkomisesta.",
"tOdNiY": "Tumma",
@ -422,6 +424,7 @@
"x/Fx2P": "Tue käyttämiesi palveluiden kehitystä jakamalla osa zapeistasi rahastoon!",
"x/q8d5": "Tämä viesti on merkitty arkaluontoiseksi, napsauta tästä nähdäksesi sisällön",
"x82IOl": "Mykistä",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Siirry",
"xJ9n2N": "Julkinen avaimesi",
"xKflGN": "{username}''n seuranta Nostrissa",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs est l'un des premiers fournisseurs NIP-05 dans l'espace et offre une bonne collection de domaines à des prix raisonnables",
"4Z3t5i": "Utiliser imgproxy pour compresser les images",
"4rYCjn": "Note à Soi-même",
"5BVs2e": "zap",
"5JcXdV": "Créer un compte",
"5oTnfy": "Acheter Identifiant",
"5rOdPG": "Une fois que vous avez configuré votre extension de gestionnaire de clés et généré une clé, vous pouvez suivre notre flux d'utilisateurs pour configurer votre profil et vous aider à trouver des personnes intéressantes à suivre sur Nostr.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} jours",
"rrfdTe": "Il s&#39;agit de la même technologie que celle utilisée par Bitcoin et qui s&#39;est avérée extrêmement sécurisée.",
"rudscU": "Échec du chargement des suivis, veuillez réessayer plus tard",
"sUNhQE": "user",
"sWnYKw": "Snort est conçu pour avoir une expérience similaire à Twitter.",
"svOoEH": "Le squattage de noms et l&#39;usurpation d&#39;identité ne sont pas autorisés. Snort et nos partenaires se réservent le droit de résilier votre identifiant (pas votre compte - personne ne peut le retirer) pour avoir enfreint cette règle.",
"tOdNiY": "Sombre",
@ -422,6 +424,7 @@
"x/Fx2P": "Financez les services que vous utilisez en fractionnant une partie de tous vos zaps en un ensemble de fonds !",
"x/q8d5": "Cette note a été marquée comme sensible, cliquez ici pour la révéler",
"x82IOl": "Mode Sourdine",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Aller à",
"xJ9n2N": "Votre clé publique",
"xKflGN": "{username}&#39;&#39; suit sur Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs is one of the first NIP-05 providers in the space and offers a good collection of domains at reasonable prices",
"4Z3t5i": "Use imgproxy to compress images",
"4rYCjn": "Note to Self",
"5BVs2e": "zap",
"5JcXdV": "Create Account",
"5oTnfy": "Buy Handle",
"5rOdPG": "Once you setup your key manager extension and generated a key, you can follow our new users flow to setup your profile and help you find some interesting people on Nostr to follow.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} days",
"rrfdTe": "This is the same technology which is used by Bitcoin and has been proven to be extremely secure.",
"rudscU": "Failed to load follows, please try again later",
"sUNhQE": "user",
"sWnYKw": "Snort is designed to have a similar experience to Twitter.",
"svOoEH": "Name-squatting and impersonation is not allowed. Snort and our partners reserve the right to terminate your handle (not your account - nobody can take that away) for violating this rule.",
"tOdNiY": "Dark",
@ -422,6 +424,7 @@
"x/Fx2P": "Fund the services that you use by splitting a portion of all your zaps into a pool of funds!",
"x/q8d5": "This note has been marked as sensitive, click here to reveal",
"x82IOl": "Mute",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Go to",
"xJ9n2N": "Your public key",
"xKflGN": "{username}''s Follows on Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs je jedan od prvih NIP-05 pružatelja usluge u svemiru i nudi široku kolekciju domena po razumnim cijenama",
"4Z3t5i": "Koristi imgproxy za komprimiranje slika",
"4rYCjn": "Bilješka sebi",
"5BVs2e": "zap",
"5JcXdV": "Kreiraj Račun",
"5oTnfy": "Kupi Nadimak",
"5rOdPG": "Jednom kad postavite ekstenziju za upravljanje ključevima i izgenerirate svoj ključ, možete zapratiti naš predložak za nove korisnike kako biste postavili svoj profil i kako bismo Vam pomogli pronaći zanimljive ljude na Nostr-u za praćenje.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} dana",
"rrfdTe": "Ovo je ista tehnologija koja je korištena od strane Bitcoina te je dokazana kao iznimno sigurna.",
"rudscU": "Učitavanje pratitelja neuspješno, molimo pokušajte ponovno kasnije",
"sUNhQE": "user",
"sWnYKw": "Snort je dizajniran kako bi pružio slično iskustvo kao i Twitter.",
"svOoEH": "Nije dopušteno lažno predstavljanje i imitiranje. Snort i naši partneri zadržavaju pravo ukinuti vaš nadimak (ne Vaš račun - nitko Vam to ne može oduzeti) zbog kršenja ovog pravila.",
"tOdNiY": "Tamno",
@ -422,6 +424,7 @@
"x/Fx2P": "Fund the services that you use by splitting a portion of all your zaps into a pool of funds!",
"x/q8d5": "Ova bilješka označena je kao osjetljiva, kliknite ovdje da je otkrijete",
"x82IOl": "Utišaj",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Idi na",
"xJ9n2N": "Vaš javni ključ",
"xKflGN": "{username}'ova praćenja na Nostr-u",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "A Nostr Plebs-ék az egyik legelső megfelelő feltételekkel és árakkal NIP-05 azonosítást biztosító szolgáltató",
"4Z3t5i": "Az imgproxy használata a képek tömörítéséhez",
"4rYCjn": "Jegyzet magamnak",
"5BVs2e": "zap",
"5JcXdV": "Fiók létrehozása",
"5oTnfy": "Azonosító vásárlása",
"5rOdPG": "Miután beállítottad a kulcskezelő bővítményt és egy kulcsot létrehoztál, folytathatod az új felhasználói folyamatunkat, hogy profilodat beállítsd. Segítségével a Nostr-án néhány érdekes személyt megtalálhatsz, akiket ezekután egy kattintással követni is tudsz.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} napok",
"rrfdTe": "Ez a technológia ugyanaz, mint amivel a tökéletes biztonságát a Bitcoin is sikeresen bizonyította.",
"rudscU": "Hiba a követők betöltésénél, kérlek próbáld később",
"sUNhQE": "user",
"sWnYKw": "Snort úgy lett tervezve, hogy hasonló élményt nyújtson mint a Twitter.",
"svOoEH": "Az engedély nélküli névfoglalás vagy megszemélyesítés nem engedélyezett. A szabályok megszegéséért, a Snort és partnerei fenntartják maguknak a jogot, hogy azonnal töröljék az azonosítót (nem a fiókot, mert azt nem lehet).",
"tOdNiY": "Sötét",
@ -422,6 +424,7 @@
"x/Fx2P": "Finanszírozza az Ön által használt szolgáltatásokat úgy, hogy az összes zaps-ek egy részét egy támogatói gyűjtőbe osztja fel!",
"x/q8d5": "Ez a bejegyzés érzékenynek lett minősítve, a megjelenítéshez kattints ide",
"x82IOl": "Némítás",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Menj ide",
"xJ9n2N": "A te publikus kulcsod",
"xKflGN": "{username} a Nostr-án követ",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs adalah salah satu penyedia NIP-05 pertama di ruang ini dan menawarkan koleksi domain yang bagus dengan harga terjangkau",
"4Z3t5i": "Gunakan imgproxy untuk mengkompresi gambar",
"4rYCjn": "Catatan untuk diri sendiri",
"5BVs2e": "zap",
"5JcXdV": "Create Account",
"5oTnfy": "Buy Handle",
"5rOdPG": "Once you setup your key manager extension and generated a key, you can follow our new users flow to setup your profile and help you find some interesting people on Nostr to follow.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} days",
"rrfdTe": "Ini adalah teknologi yang sama yang digunakan oleh Bitcoin dan telah terbukti sangat aman.",
"rudscU": "Gagal memuat yang diikuti, harap coba lagi nanti",
"sUNhQE": "user",
"sWnYKw": "Snort dirancang untuk memiliki pengalaman yang mirip dengan Twitter.",
"svOoEH": "Penyerobotan nama dan peniruan identitas tidak diperbolehkan. Snort dan mitra kami berhak menghentikan pegangan Anda (bukan akun Anda - tidak ada yang dapat mengambilnya) karena melanggar peraturan ini.",
"tOdNiY": "Gelap",
@ -422,6 +424,7 @@
"x/Fx2P": "Fund the services that you use by splitting a portion of all your zaps into a pool of funds!",
"x/q8d5": "This note has been marked as sensitive, click here to reveal",
"x82IOl": "Bisukan",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Pergi ke",
"xJ9n2N": "kunci publik Anda",
"xKflGN": "Yang diikuti {username} di Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs è uno dei primi provider NIP-05 e offre una grande collezione di domini a prezzi ragionevoli",
"4Z3t5i": "Utilizza imgproxy per comprimere le immagini",
"4rYCjn": "Note personali",
"5BVs2e": "zap",
"5JcXdV": "Crea Account",
"5oTnfy": "Acquista Handle",
"5rOdPG": "Dopo aver configurato l'estensione per la gestione delle chiavi e generata una chiave, puoi seguire il nostro percorso per nuovi utenti per configurare il tuo profilo. Ti aiuterà a trovare persone interessanti da seguire su Nostr.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} giorni",
"rrfdTe": "Questa è la stessa tecnologia che viene utilizzata dai Bitcoin, ed è stata dimostrata essere estremamente sicura.",
"rudscU": "Salvataggio non riuscito. Riprova più tardi",
"sUNhQE": "user",
"sWnYKw": "Snort è stato progettato per avere un'esperienza simile a Twitter.",
"svOoEH": "Non è consentito lo squatting e l'impersonazione. Snort e i nostri partner si riservano il diritto di terminare il tuo handle (non il tuo account - nessuno può toccarlo) per aver violato questa regola.",
"tOdNiY": "Scuro",
@ -422,6 +424,7 @@
"x/Fx2P": "Fund the services that you use by splitting a portion of all your zaps into a pool of funds!",
"x/q8d5": "Questa nota è stata contrassegnata come sensibile, clicca qui per rivelarla",
"x82IOl": "Silenzia",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Vai a",
"xJ9n2N": "La tua chiave pubblica",
"xKflGN": "Seguito da {username} su Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebsは宇宙で最初のNIP-05プロバイダのひとつで、豊富なドメインをリーズナブルな価格で提供します",
"4Z3t5i": "imgproxyを使って画像を圧縮します",
"4rYCjn": "自分用メモ",
"5BVs2e": "zap",
"5JcXdV": "アカウントを作成する",
"5oTnfy": "ハンドルを購入する",
"5rOdPG": "キーマネージャー拡張機能をセットアップして鍵を生成したら、新しいユーザーフローに従ってプロフィールを設定し、Nostrにいる興味深い人を見つけることができます。",
@ -392,6 +393,7 @@
"rmdsT4": "{n}日",
"rrfdTe": "これはビットコインで使われているのと同じ技術で、非常に安全であることが証明されています。",
"rudscU": "フォローの読み込みに失敗しました。後でやり直してください",
"sUNhQE": "user",
"sWnYKw": "SnortはTwitterに似た体験ができるようにデザインされています。",
"svOoEH": "サイバースクワッティングとなりすましは禁止されています。ルールに抵触した場合、Snortとパートナーはハンドルを停止する権利を保有します。(アカウントではありません。それは誰にも取り上げることはできません。)",
"tOdNiY": "ダーク",
@ -422,6 +424,7 @@
"x/Fx2P": "利用しているサービスへ支援するため、自分のザップの一部をプールに集めましょう!",
"x/q8d5": "この投稿はセンシティブとしてマークされています。ここをクリックして表示します",
"x82IOl": "ミュート",
"xIcAOU": "Votes by {type}",
"xIoGG9": "開く:",
"xJ9n2N": "公開鍵",
"xKflGN": "{username}のNostrでのフォロー",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs is one of the first NIP-05 providers in the space and offers a good collection of domains at reasonable prices",
"4Z3t5i": "Use imgproxy to compress images",
"4rYCjn": "Note to Self",
"5BVs2e": "zap",
"5JcXdV": "Create Account",
"5oTnfy": "Buy Handle",
"5rOdPG": "Once you setup your key manager extension and generated a key, you can follow our new users flow to setup your profile and help you find some interesting people on Nostr to follow.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} days",
"rrfdTe": "This is the same technology which is used by Bitcoin and has been proven to be extremely secure.",
"rudscU": "Failed to load follows, please try again later",
"sUNhQE": "user",
"sWnYKw": "Snort is designed to have a similar experience to Twitter.",
"svOoEH": "Name-squatting and impersonation is not allowed. Snort and our partners reserve the right to terminate your handle (not your account - nobody can take that away) for violating this rule.",
"tOdNiY": "Dark",
@ -422,6 +424,7 @@
"x/Fx2P": "Fund the services that you use by splitting a portion of all your zaps into a pool of funds!",
"x/q8d5": "This note has been marked as sensitive, click here to reveal",
"x82IOl": "Mute",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Go to",
"xJ9n2N": "Your public key",
"xKflGN": "{username}''s Follows on Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "NostrPlebs is een van de eerste Nostr NIP-05 providers en biedt een goede verzameling domeinen aan tegen redelijke prijzen",
"4Z3t5i": "Gebruik imgproxy om foto's te comprimeren",
"4rYCjn": "Notitie aan mijzelf",
"5BVs2e": "zap",
"5JcXdV": "Account aanmaken",
"5oTnfy": "Koop Account-Naam",
"5rOdPG": "Zodra je de key manager extensie hebt geïnstalleerd en een key hebt gegenereerd kunt u onze Nieuwe Account Flow gebruiken om uw profiel in te stellen en interessante Nostr accounts vinden om te volgen.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} dagen",
"rrfdTe": "Dit is dezelfde technologie die door het Bitcoin netwerk wordt gebruikt en waarvan veiligheid is bewezen.",
"rudscU": "Fout bij het laden van de volgers, probeer het later opnieuw",
"sUNhQE": "user",
"sWnYKw": "Snort is ontworpen om een soortgelijke ervaring als Twitter te hebben.",
"svOoEH": "Naam-squatting en imitatie is niet aangeraden. Snort en onze partners behouden zich het recht om uw Nostr adres identifier te beëindigen (lees: enkel de geldigheid van uw identifier, dus niet uw account - niemand kan deze wegnemen) voor het schenden van deze regel.",
"tOdNiY": "Donker thema",
@ -422,6 +424,7 @@
"x/Fx2P": "Ondersteun diensten die je gebruikt door een deel van je zaps in een pot geld te splitsen!",
"x/q8d5": "Deze notitie is gemarkeerd als gevoelig, klik hier om te onthullen",
"x82IOl": "Dempen",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Ga naar",
"xJ9n2N": "Uw publieke sleutel",
"xKflGN": "{username}'s Volglijst op Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs is one of the first NIP-05 providers in the space and offers a good collection of domains at reasonable prices",
"4Z3t5i": "Use imgproxy to compress images",
"4rYCjn": "Note to Self",
"5BVs2e": "zap",
"5JcXdV": "Create Account",
"5oTnfy": "Buy Handle",
"5rOdPG": "Once you setup your key manager extension and generated a key, you can follow our new users flow to setup your profile and help you find some interesting people on Nostr to follow.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} days",
"rrfdTe": "This is the same technology which is used by Bitcoin and has been proven to be extremely secure.",
"rudscU": "Failed to load follows, please try again later",
"sUNhQE": "user",
"sWnYKw": "Snort is designed to have a similar experience to Twitter.",
"svOoEH": "Name-squatting and impersonation is not allowed. Snort and our partners reserve the right to terminate your handle (not your account - nobody can take that away) for violating this rule.",
"tOdNiY": "Dark",
@ -422,6 +424,7 @@
"x/Fx2P": "Fund the services that you use by splitting a portion of all your zaps into a pool of funds!",
"x/q8d5": "This note has been marked as sensitive, click here to reveal",
"x82IOl": "Mute",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Go to",
"xJ9n2N": "Your public key",
"xKflGN": "{username}''s Follows on Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs is one of the first NIP-05 providers in the space and offers a good collection of domains at reasonable prices",
"4Z3t5i": "Use imgproxy to compress images",
"4rYCjn": "Note to Self",
"5BVs2e": "zap",
"5JcXdV": "Create Account",
"5oTnfy": "Buy Handle",
"5rOdPG": "Once you setup your key manager extension and generated a key, you can follow our new users flow to setup your profile and help you find some interesting people on Nostr to follow.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} days",
"rrfdTe": "This is the same technology which is used by Bitcoin and has been proven to be extremely secure.",
"rudscU": "Failed to load follows, please try again later",
"sUNhQE": "user",
"sWnYKw": "Snort is designed to have a similar experience to Twitter.",
"svOoEH": "Name-squatting and impersonation is not allowed. Snort and our partners reserve the right to terminate your handle (not your account - nobody can take that away) for violating this rule.",
"tOdNiY": "Dark",
@ -422,6 +424,7 @@
"x/Fx2P": "Fund the services that you use by splitting a portion of all your zaps into a pool of funds!",
"x/q8d5": "This note has been marked as sensitive, click here to reveal",
"x82IOl": "Mute",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Go to",
"xJ9n2N": "Your public key",
"xKflGN": "{username}''s Follows on Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs is one of the first NIP-05 providers in the space and offers a good collection of domains at reasonable prices",
"4Z3t5i": "Use imgproxy to compress images",
"4rYCjn": "Note to Self",
"5BVs2e": "zap",
"5JcXdV": "Create Account",
"5oTnfy": "Buy Handle",
"5rOdPG": "Once you setup your key manager extension and generated a key, you can follow our new users flow to setup your profile and help you find some interesting people on Nostr to follow.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} days",
"rrfdTe": "This is the same technology which is used by Bitcoin and has been proven to be extremely secure.",
"rudscU": "Failed to load follows, please try again later",
"sUNhQE": "user",
"sWnYKw": "Snort is designed to have a similar experience to Twitter.",
"svOoEH": "Name-squatting and impersonation is not allowed. Snort and our partners reserve the right to terminate your handle (not your account - nobody can take that away) for violating this rule.",
"tOdNiY": "Dark",
@ -422,6 +424,7 @@
"x/Fx2P": "Fund the services that you use by splitting a portion of all your zaps into a pool of funds!",
"x/q8d5": "This note has been marked as sensitive, click here to reveal",
"x82IOl": "Mute",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Go to",
"xJ9n2N": "Your public key",
"xKflGN": "{username}''s Follows on Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs é um dos primeiros provedores NIP-05 e oferece uma boa coleção de domínios a preços razoáveis",
"4Z3t5i": "Usar imgproxy para comprimir imagens",
"4rYCjn": "Nota pessoal",
"5BVs2e": "zap",
"5JcXdV": "Criar conta",
"5oTnfy": "Comprar Identificador",
"5rOdPG": "Após configurar sua extensão para gerenciamento de chaves e gerar uma chave, você poderá acompanhar o nosso novo fluxo de usuários para configurar seu perfil e encontrar algumas pessoas interessantes no Nostr para seguir.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} dia(s)",
"rrfdTe": "Essa é a mesma tecnologia que é usada pelo Bitcoin e provou ser extremamente segura.",
"rudscU": "Falha ao carregar, por favor, tente novamente mais tarde",
"sUNhQE": "user",
"sWnYKw": "O Snort foi projetado para ter uma experiência parecida com o Twitter.",
"svOoEH": "Práticas como Name-Squatting e assunção de identidade alheia não são permitidas. O Snort e nossos parceiros reservam-se o direito de encerrar seu identificador por violar tais regras.",
"tOdNiY": "Noturno",
@ -422,6 +424,7 @@
"x/Fx2P": "Financie os serviços que você utiliza dividindo uma parte de todos os seus zaps em uma reserva de fundos!",
"x/q8d5": "Essa nota foi marcada como sensível, clique aqui para vê-la",
"x82IOl": "Silenciar",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Ir para",
"xJ9n2N": "Sua chave pública",
"xKflGN": "{username} segue no Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs is one of the first NIP-05 providers in the space and offers a good collection of domains at reasonable prices",
"4Z3t5i": "Use imgproxy to compress images",
"4rYCjn": "Note to Self",
"5BVs2e": "zap",
"5JcXdV": "Create Account",
"5oTnfy": "Buy Handle",
"5rOdPG": "Once you setup your key manager extension and generated a key, you can follow our new users flow to setup your profile and help you find some interesting people on Nostr to follow.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} days",
"rrfdTe": "This is the same technology which is used by Bitcoin and has been proven to be extremely secure.",
"rudscU": "Failed to load follows, please try again later",
"sUNhQE": "user",
"sWnYKw": "Snort is designed to have a similar experience to Twitter.",
"svOoEH": "Name-squatting and impersonation is not allowed. Snort and our partners reserve the right to terminate your handle (not your account - nobody can take that away) for violating this rule.",
"tOdNiY": "Dark",
@ -422,6 +424,7 @@
"x/Fx2P": "Fund the services that you use by splitting a portion of all your zaps into a pool of funds!",
"x/q8d5": "This note has been marked as sensitive, click here to reveal",
"x82IOl": "Mute",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Go to",
"xJ9n2N": "Your public key",
"xKflGN": "{username}''s Follows on Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs is one of the first NIP-05 providers in the space and offers a good collection of domains at reasonable prices",
"4Z3t5i": "Use imgproxy to compress images",
"4rYCjn": "Note to Self",
"5BVs2e": "zap",
"5JcXdV": "Create Account",
"5oTnfy": "Buy Handle",
"5rOdPG": "Once you setup your key manager extension and generated a key, you can follow our new users flow to setup your profile and help you find some interesting people on Nostr to follow.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} days",
"rrfdTe": "This is the same technology which is used by Bitcoin and has been proven to be extremely secure.",
"rudscU": "Failed to load follows, please try again later",
"sUNhQE": "user",
"sWnYKw": "Snort is designed to have a similar experience to Twitter.",
"svOoEH": "Name-squatting and impersonation is not allowed. Snort and our partners reserve the right to terminate your handle (not your account - nobody can take that away) for violating this rule.",
"tOdNiY": "Dark",
@ -422,6 +424,7 @@
"x/Fx2P": "Fund the services that you use by splitting a portion of all your zaps into a pool of funds!",
"x/q8d5": "This note has been marked as sensitive, click here to reveal",
"x82IOl": "Mute",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Go to",
"xJ9n2N": "Your public key",
"xKflGN": "{username}''s Follows on Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs является одним из первых сервисов NIP-05 и предлагает хорошую коллекцию доменов по приемлемым ценам",
"4Z3t5i": "Использовать imgproxy для сжатия изображений",
"4rYCjn": "Заметка самому себе",
"5BVs2e": "zap",
"5JcXdV": "Создать аккаунт",
"5oTnfy": "Приобрести хэндл",
"5rOdPG": "После того как Вы настроили расширение для управления ключами и сгенерировали ключ, Вы можете последовать нашему гиду для новичков, чтобы настроить свой профиль и найти интересных людей, заслуживающих подписки на Nostr.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} дней",
"rrfdTe": "Это та же технология, которая используется Биткоином и доказала свою исключительную безопасность.",
"rudscU": "Не удалось загрузить подписки, повторите попытку позже",
"sUNhQE": "user",
"sWnYKw": "Snort разработан таким образом, чтобы работать аналогично Twitter.",
"svOoEH": "Присвоение имен и выдача себя за других пользователей не допускается. Snort и наши партнеры оставляют за собой право удалить Вашу учетную запись (не аккаунт - его никто не может отнять) за нарушение этого правила.",
"tOdNiY": "Тёмная",
@ -422,6 +424,7 @@
"x/Fx2P": "Fund the services that you use by splitting a portion of all your zaps into a pool of funds!",
"x/q8d5": "Эта заметка была помечена как деликатная, нажмите здесь, чтобы раскрыть ее",
"x82IOl": "Заглушить",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Перейти",
"xJ9n2N": "Ваш публичный ключ",
"xKflGN": "Подписки {username} на Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs is one of the first NIP-05 providers in the space and offers a good collection of domains at reasonable prices",
"4Z3t5i": "Use imgproxy to compress images",
"4rYCjn": "Note to Self",
"5BVs2e": "zap",
"5JcXdV": "Create Account",
"5oTnfy": "Buy Handle",
"5rOdPG": "Once you setup your key manager extension and generated a key, you can follow our new users flow to setup your profile and help you find some interesting people on Nostr to follow.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} days",
"rrfdTe": "This is the same technology which is used by Bitcoin and has been proven to be extremely secure.",
"rudscU": "Failed to load follows, please try again later",
"sUNhQE": "user",
"sWnYKw": "Snort is designed to have a similar experience to Twitter.",
"svOoEH": "Name-squatting and impersonation is not allowed. Snort and our partners reserve the right to terminate your handle (not your account - nobody can take that away) for violating this rule.",
"tOdNiY": "Dark",
@ -422,6 +424,7 @@
"x/Fx2P": "Fund the services that you use by splitting a portion of all your zaps into a pool of funds!",
"x/q8d5": "This note has been marked as sensitive, click here to reveal",
"x82IOl": "Mute",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Go to",
"xJ9n2N": "Your public key",
"xKflGN": "{username}''s Follows on Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs är en av de första NIP-05 leverantörerna och erbjuder en bra samling domäner till rimliga priser",
"4Z3t5i": "Använd imgproxy för att komprimera bilder",
"4rYCjn": "Anteckning till mig själv",
"5BVs2e": "zap",
"5JcXdV": "Skapa konto",
"5oTnfy": "Köp Namn",
"5rOdPG": "När du har konfigurerat din nyckelmanagers tillägg och genererat en nyckel, du kan följa vårat nya användarflöde för att ställa in din profil och hjälpa dig att hitta några intressanta personer på Nostr att följa.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} dagar",
"rrfdTe": "Detta är samma teknik som används av Bitcoin och har visat sig vara extremt säker.",
"rudscU": "Det gick inte att ladda följande, försök igen senare",
"sUNhQE": "user",
"sWnYKw": "Snort är utformat för att ha en liknande upplevelse som Twitter.",
"svOoEH": "Namnslåss och personifiering är inte tillåtet. Snort och våra partners förbehåller sig rätten att avsluta ditt handle (inte ditt konto - ingen kan ta bort det) för att du bryter mot denna regel.",
"tOdNiY": "Mörkt",
@ -422,6 +424,7 @@
"x/Fx2P": "Finansiera de tjänster som du använder genom att dela upp en del av alla dina zaps i en pool med pengar!",
"x/q8d5": "Denna anteckning har markerats som känslig, klicka här för att visa",
"x82IOl": "Tysta",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Gå till",
"xJ9n2N": "Din publika nyckel",
"xKflGN": "{username}'s Följer på Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs ni mmoja wa watoa huduma wa kwanza wa NIP-05 kwenye nafasi na inatoa mkusanyiko mzuri wa vikoa kwa bei nzuri",
"4Z3t5i": "Tumia imgproxy kubana picha",
"4rYCjn": "Kumbuka mwenyewe",
"5BVs2e": "zap",
"5JcXdV": "Tengeneza akaunti",
"5oTnfy": "Nunua Tambulisho",
"5rOdPG": "Mara tu unapoweka kiendelezi cha kidhibiti chako cha ufunguo na kuunda ufunguo, unaweza kufuata mtiririko wa watumiaji wetu wapya ili kusanidi wasifu wako na kukusaidia kupata watu wanaovutia kwenye Nostr wa kufuata.",
@ -392,6 +393,7 @@
"rmdsT4": "siku {n}",
"rrfdTe": "Hii ni teknolojia sawa ambayo hutumiwa na Bitcoin na imethibitishwa kuwa salama sana.",
"rudscU": "Imeshindwa kupakia wafuasi, tafadhali jaribu tena baadaye",
"sUNhQE": "user",
"sWnYKw": "Snort imeundwa ili kuwa na matumizi sawa na Twitter.",
"svOoEH": "Kuchuchumaa majina na uigaji hakuruhusiwi. Koroma na washirika wetu wana haki ya kusitisha mpini wako (sio akaunti yako - hakuna mtu anayeweza kuuondoa) kwa kukiuka sheria hii.",
"tOdNiY": "Giza",
@ -422,6 +424,7 @@
"x/Fx2P": "Fundisha huduma unazotumia kwa kugawanya sehemu ya zap zako zote kwenye kundi la fedha!",
"x/q8d5": "Dokezo hili limetiwa alama kuwa nyeti, bofya hapa ili kufichua",
"x82IOl": "Nyamazisha",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Enda kwa",
"xJ9n2N": "Ufunguo wako wa umma",
"xKflGN": "{username}''s Inafuata kwenye Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs முதல் NIP-05 வழங்குநர்களில் ஒன்றாகும். மேலும், இது நியாயமான விலையில் டொமைன்களின் நல்ல தொகுப்பை வழங்குகிறது",
"4Z3t5i": "படங்களை சுருக்க imgproxy உபயோகிக்கவும்",
"4rYCjn": "சுய குறிப்பு",
"5BVs2e": "zap",
"5JcXdV": "கணக்கை உருவாக்கு",
"5oTnfy": "பயனர் பெயரை வாங்கவும்",
"5rOdPG": "உங்கள் சாவி மேலாளர் நீட்டிப்பை அமைத்து, ஒரு சாவியை உருவாக்கியதும், உங்கள் சுயவிவரத்தை அமைப்பதற்கு, எங்கள் 'புதிய பயனர்களின் ஓட்டத்தை' நீங்கள் பின்பற்றலாம். பிறகு, நீங்கள் பின்தொடருவதற்கு நாஸ்டரில் சுவாரஸ்யமான சிலரைக் கண்டறியலாம்.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} நாட்கள்",
"rrfdTe": "பிட்காயினால் பயன்படுத்தப்படும் அதே தொழில்நுட்பம் இது மிகவும் பாதுகாப்பானது என்று நிரூபிக்கப்பட்டுள்ளது.",
"rudscU": "பித்தொடர்வுகளை ஏற்றுவதில் தோல்வி, பிறகு முயற்சிக்கவும்",
"sUNhQE": "user",
"sWnYKw": "ட்விட்டரைப் போன்ற அனுபவத்தைப் பெறும் வகையில் ஸ்நார்ட் வடிவமைக்கப்பட்டுள்ளது.",
"svOoEH": "பெயர் குந்துதல் மற்றும் ஆள்மாறாட்டம் அனுமதிக்கப்படாது. இந்த விதியை மீறியதற்காக உங்கள் பயனர் அடையாளத்தை(உங்கள் கணக்கு அல்ல - அதை யாரும் எடுத்துச் செல்ல முடியாது) துண்டிக்கும் உரிமையை ஸ்நார்ட் மற்றும் எங்கள் கூட்டாளர்களுக்கு உள்ளது.",
"tOdNiY": "இருள்",
@ -422,6 +424,7 @@
"x/Fx2P": "நீங்கள் பயன்படுத்தும் சேவைக்குக் நன்கொடை அளிக்கலாம் - உங்கள் zap-களின் ஒரு பகுதியை நிதியத்தில் சேர்ப்பதன் வழியாக!",
"x/q8d5": "இந்தக் குறிப்பு உணர்திறன் வாய்ந்ததாகக் குறிக்கப்பட்டுள்ளது, வெளிப்படுத்த இங்கே கிளிக் செய்யவும்",
"x82IOl": "ஒலியடக்கு",
"xIcAOU": "Votes by {type}",
"xIoGG9": "செல்",
"xJ9n2N": "உங்கள் பொது சாவி",
"xKflGN": "நாஸ்டர் இல் {username} ஐப் பின்தொடர்வோர்",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs เป็นหนึ่งในผู้ให้บริการ NIP-05 รายแรก ๆ ในพื้นที่นี้ และเสนอชุดโดเมนที่ดีในราคาที่สมเหตุสมผล",
"4Z3t5i": "ใช้ imgproxy เพื่อบีบอัดรูปภาพ",
"4rYCjn": "หมายเหตุถึงตนเอง",
"5BVs2e": "zap",
"5JcXdV": "สร้างบัญชี",
"5oTnfy": "รหัสการซื้อ",
"5rOdPG": "เมื่อคุณตั้งค่า extension ตัวจัดการ key และสร้าง key แล้ว คุณสามารถติดตามผู้ใช้ใหม่ของเราเพื่อตั้งค่าโปรไฟล์ของคุณและช่วยคุณค้นหาคนที่น่าสนใจบน Nostr เพื่อติดตาม",
@ -392,6 +393,7 @@
"rmdsT4": "{n} days",
"rrfdTe": "นี่คือเทคโนโลยีเดียวกันกับที่บิตคอยน์ใช้และได้รับการพิสูจน์แล้วว่าปลอดภัยอย่างยิ่ง",
"rudscU": "ไม่สามารถโหลดผู้ที่คุณติดตามได้ โปรดลองอีกครั้งภายหลัง",
"sUNhQE": "user",
"sWnYKw": "Snort ได้รับการออกแบบให้มีประสบการณ์คล้ายกับ Twitter",
"svOoEH": "ไม่อนุญาติให้มีการตั้งชื่อตัดหน้าหรือการปลอมเป็นคนอื่น Snort และพันธมิตรของเราขอสงวนสิทธิ์ในการยกเลิกการเข้าถึงของคุณ (ไม่ใช่บัญชีของคุณ - ไม่มีใครสามารถเอาสิ่งนั้นออกไปได้) สำหรับการละเมิดกฎนี้",
"tOdNiY": "มืด",
@ -422,6 +424,7 @@
"x/Fx2P": "จัดหาเงินทุนให้กับบริการที่คุณใช้โดยแบ่งส่วนของ zaps ทั้งหมดของคุณออกเป็นกองทุน!",
"x/q8d5": "โน้ตนี้นี้ถูกทำเครื่องหมายว่าละเอียดอ่อน คลิกที่นี่เพื่อเปิด",
"x82IOl": "ปิดการมองเห็น",
"xIcAOU": "Votes by {type}",
"xIoGG9": "ไปยัง",
"xJ9n2N": "Public key ของคุณ",
"xKflGN": "ติดตาม {username}''s ได้ที่ Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs is one of the first NIP-05 providers in the space and offers a good collection of domains at reasonable prices",
"4Z3t5i": "Use imgproxy to compress images",
"4rYCjn": "Note to Self",
"5BVs2e": "zap",
"5JcXdV": "Create Account",
"5oTnfy": "Buy Handle",
"5rOdPG": "Once you setup your key manager extension and generated a key, you can follow our new users flow to setup your profile and help you find some interesting people on Nostr to follow.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} days",
"rrfdTe": "This is the same technology which is used by Bitcoin and has been proven to be extremely secure.",
"rudscU": "Failed to load follows, please try again later",
"sUNhQE": "user",
"sWnYKw": "Snort is designed to have a similar experience to Twitter.",
"svOoEH": "Name-squatting and impersonation is not allowed. Snort and our partners reserve the right to terminate your handle (not your account - nobody can take that away) for violating this rule.",
"tOdNiY": "Dark",
@ -422,6 +424,7 @@
"x/Fx2P": "Fund the services that you use by splitting a portion of all your zaps into a pool of funds!",
"x/q8d5": "This note has been marked as sensitive, click here to reveal",
"x82IOl": "Mute",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Go to",
"xJ9n2N": "Your public key",
"xKflGN": "{username}''s Follows on Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs is one of the first NIP-05 providers in the space and offers a good collection of domains at reasonable prices",
"4Z3t5i": "Use imgproxy to compress images",
"4rYCjn": "Note to Self",
"5BVs2e": "zap",
"5JcXdV": "Create Account",
"5oTnfy": "Buy Handle",
"5rOdPG": "Once you setup your key manager extension and generated a key, you can follow our new users flow to setup your profile and help you find some interesting people on Nostr to follow.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} days",
"rrfdTe": "This is the same technology which is used by Bitcoin and has been proven to be extremely secure.",
"rudscU": "Failed to load follows, please try again later",
"sUNhQE": "user",
"sWnYKw": "Snort is designed to have a similar experience to Twitter.",
"svOoEH": "Name-squatting and impersonation is not allowed. Snort and our partners reserve the right to terminate your handle (not your account - nobody can take that away) for violating this rule.",
"tOdNiY": "Dark",
@ -422,6 +424,7 @@
"x/Fx2P": "Fund the services that you use by splitting a portion of all your zaps into a pool of funds!",
"x/q8d5": "This note has been marked as sensitive, click here to reveal",
"x82IOl": "Mute",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Go to",
"xJ9n2N": "Your public key",
"xKflGN": "{username}''s Follows on Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs is one of the first NIP-05 providers in the space and offers a good collection of domains at reasonable prices",
"4Z3t5i": "Use imgproxy to compress images",
"4rYCjn": "Note to Self",
"5BVs2e": "zap",
"5JcXdV": "Create Account",
"5oTnfy": "Buy Handle",
"5rOdPG": "Once you setup your key manager extension and generated a key, you can follow our new users flow to setup your profile and help you find some interesting people on Nostr to follow.",
@ -392,6 +393,7 @@
"rmdsT4": "{n} days",
"rrfdTe": "This is the same technology which is used by Bitcoin and has been proven to be extremely secure.",
"rudscU": "Failed to load follows, please try again later",
"sUNhQE": "user",
"sWnYKw": "Snort is designed to have a similar experience to Twitter.",
"svOoEH": "Name-squatting and impersonation is not allowed. Snort and our partners reserve the right to terminate your handle (not your account - nobody can take that away) for violating this rule.",
"tOdNiY": "Dark",
@ -422,6 +424,7 @@
"x/Fx2P": "Fund the services that you use by splitting a portion of all your zaps into a pool of funds!",
"x/q8d5": "This note has been marked as sensitive, click here to reveal",
"x82IOl": "Mute",
"xIcAOU": "Votes by {type}",
"xIoGG9": "Go to",
"xJ9n2N": "Your public key",
"xKflGN": "{username}''s Follows on Nostr",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs 是该领域首批 NIP-05 提供商之一,以合理的价格提供大量域名",
"4Z3t5i": "使用 imgproxy 压缩图片",
"4rYCjn": "自用笔记",
"5BVs2e": "zap",
"5JcXdV": "创建帐户",
"5oTnfy": "购买代号",
"5rOdPG": "一旦你设置了你的密钥管理器扩展程序并生成了密钥, 你就可以使用我们的新用户流程来设置你的个人档案,并帮助你在 Nostr 找到一些有趣的人关注。",
@ -392,6 +393,7 @@
"rmdsT4": "{n} 天",
"rrfdTe": "这与比特币使用的技术相同,并已被证明非常安全。",
"rudscU": "加载关注失败,请稍后重试",
"sUNhQE": "user",
"sWnYKw": "Snort 旨在提供类似推特的体验。",
"svOoEH": "不允许抢注和冒充。 Snort 和我们的合作伙伴保留因违反此规则而终止你的代号(不是你的帐户 - 没有人可以拿走它)的权利。",
"tOdNiY": "深色",
@ -422,6 +424,7 @@
"x/Fx2P": "将部分打闪分配到资金库来资助你使用的服务!",
"x/q8d5": "此条笔记已标记为敏感内容,点击此处显示",
"x82IOl": "静音",
"xIcAOU": "Votes by {type}",
"xIoGG9": "前往",
"xJ9n2N": "你的公钥",
"xKflGN": "{username} 在 Nostr 上的关注",

View File

@ -50,6 +50,7 @@
"4Vmpt4": "Nostr Plebs 是該領域首批 NIP-05 供應商之一,以合理的價格提供大量域名",
"4Z3t5i": "使用 imgproxy 壓縮圖片",
"4rYCjn": "自用筆記",
"5BVs2e": "zap",
"5JcXdV": "創建帳戶",
"5oTnfy": "購買代號",
"5rOdPG": "一旦你設置了你的密鑰管理器擴展程序並生成了密鑰,你就可以使用我們的新用戶流程來設置你的個人檔案,並幫助你在 nostr 上找到一些有趣的人關注。",
@ -392,6 +393,7 @@
"rmdsT4": "{n}天",
"rrfdTe": "這與比特幣使用的技術系統,並已被證明非常安全。",
"rudscU": "加載關注失敗,請稍候重試",
"sUNhQE": "user",
"sWnYKw": "Snort 旨在提供類似推特的體驗。",
"svOoEH": "不允許搶註和冒充。Snort 和我們的合作夥伴保留因違反此規則而終止你的代號(不是你的帳戶 - 沒有人可以拿走它)的權利。",
"tOdNiY": "深色",
@ -422,6 +424,7 @@
"x/Fx2P": "將部份打閃分配到資金庫來資助你使用的服務!",
"x/q8d5": "此條筆記被標記為敏感內容,點擊此處顯示",
"x82IOl": "静音",
"xIcAOU": "Votes by {type}",
"xIoGG9": "前往",
"xJ9n2N": "你的公鑰",
"xKflGN": "{username} 在 nostr 的關注",