chore: Update translations

This commit is contained in:
Kieran 2023-12-07 17:59:28 +00:00
parent da75e6e2ff
commit 7600d93983
39 changed files with 1312 additions and 351 deletions

View File

@ -29,7 +29,11 @@ export default function AsyncButton(props: AsyncButtonProps) {
}
return (
<button disabled={loading || props.disabled} {...props} onClick={handle} className={classNames("px-3 py-2 bg-gray-2 rounded-full", props.className)}>
<button
disabled={loading || props.disabled}
{...props}
onClick={handle}
className={classNames("px-3 py-2 bg-gray-2 rounded-full", props.className)}>
<span style={{ visibility: loading ? "hidden" : "visible" }}>{props.children}</span>
{loading && (
<span className="spinner-wrapper">

View File

@ -3,18 +3,21 @@ import { HTMLProps, useState } from "react";
import classNames from "classnames";
import { getPlaceholder } from "@/utils";
type AvatarProps = HTMLProps<HTMLImageElement> & { size?: number, pubkey: string, user?: MetadataCache };
type AvatarProps = HTMLProps<HTMLImageElement> & { size?: number; pubkey: string; user?: MetadataCache };
export function Avatar({ pubkey, size, user, ...props }: AvatarProps) {
const [failed, setFailed] = useState(false);
const src = user?.picture && !failed ? user.picture : getPlaceholder(pubkey);
return <img
{...props}
className={classNames("aspect-square rounded-full bg-gray-1", props.className)}
alt={user?.name || user?.pubkey}
src={src}
onError={() => setFailed(true)}
style={{
width: `${size ?? 40}px`,
height: `${size ?? 40}px`
}} />;
return (
<img
{...props}
className={classNames("aspect-square rounded-full bg-gray-1", props.className)}
alt={user?.name || user?.pubkey}
src={src}
onError={() => setFailed(true)}
style={{
width: `${size ?? 40}px`,
height: `${size ?? 40}px`,
}}
/>
);
}

View File

@ -177,15 +177,15 @@ export function ChatMessage({
style={
isTablet
? {
display: showZapDialog || isHovering ? "flex" : "none",
}
display: showZapDialog || isHovering ? "flex" : "none",
}
: {
position: "fixed",
top: topOffset ? topOffset - 12 : 0,
left: leftOffset ? leftOffset - 32 : 0,
opacity: showZapDialog || isHovering ? 1 : 0,
pointerEvents: showZapDialog || isHovering ? "auto" : "none",
}
position: "fixed",
top: topOffset ? topOffset - 12 : 0,
left: leftOffset ? leftOffset - 32 : 0,
opacity: showZapDialog || isHovering ? 1 : 0,
pointerEvents: showZapDialog || isHovering ? "auto" : "none",
}
}>
{zapTarget && (
<SendZapsDialog

View File

@ -91,8 +91,7 @@ export function LiveChat({
if (ends) {
extra.push({ kind: -2, created_at: Number(ends) } as TaggedNostrEvent);
}
return [...feed.messages, ...feed.reactions, ...awards, ...extra]
.sort((a, b) => b.created_at - a.created_at);
return [...feed.messages, ...feed.reactions, ...awards, ...extra].sort((a, b) => b.created_at - a.created_at);
}, [feed.messages, feed.reactions, awards]);
const filteredEvents = useMemo(() => {
@ -130,10 +129,15 @@ export function LiveChat({
switch (a.kind) {
case -1:
case -2: {
return <b className="border px-3 py-2 text-center border-gray-2 rounded-xl bg-primary uppercase">
{a.kind === -1 ? <FormattedMessage defaultMessage="Stream Started" id="5tM0VD" />
: <FormattedMessage defaultMessage="Stream Ended" id="jkAQj5" />}
</b>;
return (
<b className="border px-3 py-2 text-center border-gray-2 rounded-xl bg-primary uppercase">
{a.kind === -1 ? (
<FormattedMessage defaultMessage="Stream Started" id="5tM0VD" />
) : (
<FormattedMessage defaultMessage="Stream Ended" id="jkAQj5" />
)}
</b>
);
}
case EventKind.BadgeAward: {
return <BadgeAward ev={a} />;
@ -195,12 +199,12 @@ export function ChatZap({ zap }: { zap: ParsedZap }) {
defaultMessage="<s>{person}</s> zapped <s>{amount}</s> sats"
id="q+zTWM"
values={{
s: (c) => <span className="text-zap">{c}</span>,
s: c => <span className="text-zap">{c}</span>,
person: (
<Profile
pubkey={zap.anonZap ? "anon" : zap.sender ?? ""}
options={{
showAvatar: !zap.anonZap
showAvatar: !zap.anonZap,
}}
/>
),
@ -213,7 +217,7 @@ export function ChatZap({ zap }: { zap: ParsedZap }) {
);
}
export function ChatRaid({ link, ev }: { link: NostrLink, ev: TaggedNostrEvent }) {
export function ChatRaid({ link, ev }: { link: NostrLink; ev: TaggedNostrEvent }) {
const from = ev.tags.find(a => a[0] === "a" && a[3] === "root");
const to = ev.tags.find(a => a[0] === "a" && a[3] === "mention");
const isRaiding = link.toEventTag()?.at(1) === from?.at(1);
@ -222,15 +226,29 @@ export function ChatRaid({ link, ev }: { link: NostrLink, ev: TaggedNostrEvent }
const otherProfile = useUserProfile(getHost(otherEvent));
if (isRaiding) {
return <Link to={`/${otherLink.encode()}`} className="px-3 py-2 text-center rounded-xl bg-primary uppercase pointer font-bold">
<FormattedMessage defaultMessage="Raiding {name}" id="j/jueq" values={{
name: otherProfile?.name
}} />
</Link>;
return (
<Link
to={`/${otherLink.encode()}`}
className="px-3 py-2 text-center rounded-xl bg-primary uppercase pointer font-bold">
<FormattedMessage
defaultMessage="Raiding {name}"
id="j/jueq"
values={{
name: otherProfile?.name,
}}
/>
</Link>
);
}
return <div className="px-3 py-2 text-center rounded-xl bg-primary uppercase pointer font-bold">
<FormattedMessage defaultMessage="Raid from {name}" id="69hmpj" values={{
name: otherProfile?.name
}} />
</div>;
}
return (
<div className="px-3 py-2 text-center rounded-xl bg-primary uppercase pointer font-bold">
<FormattedMessage
defaultMessage="Raid from {name}"
id="69hmpj"
values={{
name: otherProfile?.name,
}}
/>
</div>
);
}

View File

@ -20,7 +20,13 @@ type VideoPlayerProps = {
muted?: boolean;
} & HTMLProps<HTMLVideoElement>;
export default function LiveVideoPlayer({ stream, status: pStatus, poster, muted: pMuted, ...props }: VideoPlayerProps) {
export default function LiveVideoPlayer({
stream,
status: pStatus,
poster,
muted: pMuted,
...props
}: VideoPlayerProps) {
const video = useRef<HTMLVideoElement>(null);
const hlsObj = useRef<Hls>(null);
const streamCached = useMemo(() => stream, [stream]);
@ -219,7 +225,15 @@ export default function LiveVideoPlayer({ stream, status: pStatus, poster, muted
<FormattedMessage defaultMessage="Offline" id="7UOvbT" />
</div>
)}
<video {...props} className={classNames("z-10", props.className)} ref={video} autoPlay={true} poster={poster} src={src} playsInline={true} />
<video
{...props}
className={classNames("z-10", props.className)}
ref={video}
autoPlay={true}
poster={poster}
src={src}
playsInline={true}
/>
</div>
);
}

View File

@ -43,7 +43,7 @@ export function Profile({
options?: ProfileOptions;
linkToProfile?: boolean;
avatarSize?: number;
gap?: number
gap?: number;
}) {
const { inView, ref } = useInView({ triggerOnce: true });
const pLoaded = useUserProfile(inView ? pubkey : undefined);
@ -54,7 +54,7 @@ export function Profile({
<>
{showAvatar && <Avatar user={pLoaded} pubkey={pubkey} className={avatarClassname} size={avatarSize ?? 24} />}
{icon}
{showName && <span>{isAnon ? (options?.overrideName ?? "Anon") : getName(pubkey, pLoaded)}</span>}
{showName && <span>{isAnon ? options?.overrideName ?? "Anon" : getName(pubkey, pLoaded)}</span>}
</>
);

View File

@ -10,67 +10,74 @@ import AsyncButton from "./async-button";
import { SnortContext } from "@snort/system-react";
import { LIVE_STREAM_RAID } from "@/const";
export function DashboardRaidMenu({ link, onClose }: { link: NostrLink, onClose: () => void }) {
const system = useContext(SnortContext);
const login = useLogin();
const { live } = useStreamsFeed();
const [raiding, setRaiding] = useState("");
const [msg, setMsg] = useState("");
export function DashboardRaidMenu({ link, onClose }: { link: NostrLink; onClose: () => void }) {
const system = useContext(SnortContext);
const login = useLogin();
const { live } = useStreamsFeed();
const [raiding, setRaiding] = useState("");
const [msg, setMsg] = useState("");
const mutedHosts = new Set(getTagValues(login?.muted.tags ?? [], "p"));
const livePubkeys = dedupe(live.map(a => getHost(a))).filter(a => !mutedHosts.has(a));
const mutedHosts = new Set(getTagValues(login?.muted.tags ?? [], "p"));
const livePubkeys = dedupe(live.map(a => getHost(a))).filter(a => !mutedHosts.has(a));
async function raid() {
if (login) {
const ev = await login.publisher().generic(eb => {
return eb.kind(LIVE_STREAM_RAID)
.tag(unwrap(link.toEventTag("root")))
.tag(unwrap(parseNostrLink(raiding).toEventTag("mention")))
.content(msg);
});
async function raid() {
if (login) {
const ev = await login.publisher().generic(eb => {
return eb
.kind(LIVE_STREAM_RAID)
.tag(unwrap(link.toEventTag("root")))
.tag(unwrap(parseNostrLink(raiding).toEventTag("mention")))
.content(msg);
});
await system.BroadcastEvent(ev);
onClose();
}
await system.BroadcastEvent(ev);
onClose();
}
}
return <div className="flex flex-col gap-4 p-6">
<h2>
<FormattedMessage defaultMessage="Start Raid" id="MTHO1W" />
</h2>
<div className="flex flex-col gap-1">
<p className="text-gray-3 uppercase font-semibold text-sm">
<FormattedMessage defaultMessage="Live now" id="+sdKx8" />
</p>
<div className="flex gap-2 flex-wrap">
{livePubkeys.map(a => <div className="border border-gray-1 rounded-full px-4 py-2 bg-gray-2 pointer" onClick={() => {
const liveEvent = live.find(b => getHost(b) === a);
if (liveEvent) {
setRaiding(NostrLink.fromEvent(liveEvent).encode());
}
}}>
<Profile pubkey={a} options={{ showAvatar: false }} linkToProfile={false} />
</div>)}
return (
<div className="flex flex-col gap-4 p-6">
<h2>
<FormattedMessage defaultMessage="Start Raid" id="MTHO1W" />
</h2>
<div className="flex flex-col gap-1">
<p className="text-gray-3 uppercase font-semibold text-sm">
<FormattedMessage defaultMessage="Live now" id="+sdKx8" />
</p>
<div className="flex gap-2 flex-wrap">
{livePubkeys.map(a => (
<div
className="border border-gray-1 rounded-full px-4 py-2 bg-gray-2 pointer"
onClick={() => {
const liveEvent = live.find(b => getHost(b) === a);
if (liveEvent) {
setRaiding(NostrLink.fromEvent(liveEvent).encode());
}
}}>
<Profile pubkey={a} options={{ showAvatar: false }} linkToProfile={false} />
</div>
))}
</div>
<div className="flex flex-col gap-1">
<p className="text-gray-3 uppercase font-semibold text-sm">
<FormattedMessage defaultMessage="Raid target" id="Zse7yG" />
</p>
<div className="paper">
<input type="text" placeholder="naddr.." value={raiding} onChange={e => setRaiding(e.target.value)} />
</div>
</div>
<div className="flex flex-col gap-1">
<p className="text-gray-3 uppercase font-semibold text-sm">
<FormattedMessage defaultMessage="Raid target" id="Zse7yG" />
</p>
<div className="paper">
<input type="text" placeholder="naddr.." value={raiding} onChange={e => setRaiding(e.target.value)} />
</div>
<div className="flex flex-col gap-1">
<p className="text-gray-3 uppercase font-semibold text-sm">
<FormattedMessage defaultMessage="Raid Message" id="RS6smY" />
</p>
<div className="paper">
<input type="text" value={msg} onChange={e => setMsg(e.target.value)} />
</div>
</div>
<div className="flex flex-col gap-1">
<p className="text-gray-3 uppercase font-semibold text-sm">
<FormattedMessage defaultMessage="Raid Message" id="RS6smY" />
</p>
<div className="paper">
<input type="text" value={msg} onChange={e => setMsg(e.target.value)} />
</div>
<AsyncButton className="btn btn-primary" onClick={raid}>
<FormattedMessage defaultMessage="Raid!" id="aqjZxs" />
</AsyncButton>
</div>
<AsyncButton className="btn btn-primary" onClick={raid}>
<FormattedMessage defaultMessage="Raid!" id="aqjZxs" />
</AsyncButton>
</div>
}
);
}

View File

@ -7,7 +7,13 @@ type StatePillProps = { state: StreamState } & HTMLProps<HTMLSpanElement>;
export function StatePill({ state, ...props }: StatePillProps) {
return (
<span {...props} className={classNames("uppercase font-white pill", state === StreamState.Live ? "bg-primary" : "bg-gray-1", props.className)}>
<span
{...props}
className={classNames(
"uppercase font-white pill",
state === StreamState.Live ? "bg-primary" : "bg-gray-1",
props.className
)}>
{state}
</span>
);

View File

@ -41,7 +41,11 @@ export function Text({ content, tags, eventComponent }: TextProps) {
}
}
}
return <span className="text"><HyperText link={f.content}>{f.content}</HyperText></span>;
return (
<span className="text">
<HyperText link={f.content}>{f.content}</HyperText>
</span>
);
}
case "mention":
return <Mention pubkey={f.content} />;

View File

@ -4,7 +4,9 @@ import { ZapperRow } from "./zapper-row";
export function TopZappers({ zaps, limit }: { zaps: ParsedZap[]; limit?: number }) {
const zappers = useTopZappers(zaps);
return zappers.slice(0, limit ?? 10).map(({ pubkey, total }) => <div className="border rounded-full px-2 py-1 border-gray-1 grow-0 shrink-0 basis-auto font-bold">
<ZapperRow pubkey={pubkey} total={total} key={pubkey} showName={false} />
</div>);
return zappers.slice(0, limit ?? 10).map(({ pubkey, total }) => (
<div className="border rounded-full px-2 py-1 border-gray-1 grow-0 shrink-0 basis-auto font-bold">
<ZapperRow pubkey={pubkey} total={total} key={pubkey} showName={false} />
</div>
));
}

View File

@ -29,7 +29,11 @@ export function VideoTile({
const link = encodeTLV(NostrPrefix.Address, id, undefined, ev.kind, ev.pubkey);
return (
<div className="video-tile-container">
<Link to={`/${link}`} className={`video-tile${(contentWarning && !isContentWarningAccepted()) ? " nsfw" : ""}`} ref={ref} state={ev}>
<Link
to={`/${link}`}
className={`video-tile${contentWarning && !isContentWarningAccepted() ? " nsfw" : ""}`}
ref={ref}
state={ev}>
<div
style={{
backgroundImage: `url(${inView ? ((image?.length ?? 0) > 0 ? image : "/zap-stream.svg") : ""})`,
@ -38,7 +42,11 @@ export function VideoTile({
{showStatus && <StatePill state={status as StreamState} />}
{participants && (
<span className="pill viewers bg-gray-1">
<FormattedMessage defaultMessage="{n} viewers" id="3adEeb" values={{ n: formatSats(Number(participants)) }} />
<FormattedMessage
defaultMessage="{n} viewers"
id="3adEeb"
values={{ n: formatSats(Number(participants)) }}
/>
</span>
)}
</span>

View File

@ -3,17 +3,20 @@ import { Icon } from "./icon";
import { Profile } from "./profile";
import { FormattedMessage } from "react-intl";
export function ZapperRow({ pubkey, total, showName }: { pubkey: string; total: number, showName?: boolean }) {
return (
<div className="flex gap-1 justify-between items-center">
{pubkey === "anon" ? <span>
<FormattedMessage defaultMessage="Anon" id="bfvyfs" />
</span> :
<Profile pubkey={pubkey} options={{ showName }} />}
<div className="flex items-center gap-2">
<Icon name="zap-filled" className="text-zap" />
<span>{formatSats(total)}</span>
</div>
</div>
);
}
export function ZapperRow({ pubkey, total, showName }: { pubkey: string; total: number; showName?: boolean }) {
return (
<div className="flex gap-1 justify-between items-center">
{pubkey === "anon" ? (
<span>
<FormattedMessage defaultMessage="Anon" id="bfvyfs" />
</span>
) : (
<Profile pubkey={pubkey} options={{ showName }} />
)}
<div className="flex items-center gap-2">
<Icon name="zap-filled" className="text-zap" />
<span>{formatSats(total)}</span>
</div>
</div>
);
}

View File

@ -102,9 +102,11 @@ const router = createBrowserRouter([
},
{
path: "/dashboard",
element: <Suspense>
<DashboardPage />
</Suspense>,
element: (
<Suspense>
<DashboardPage />
</Suspense>
),
},
{
path: "*",

View File

@ -19,135 +19,171 @@ import * as Dialog from "@radix-ui/react-dialog";
import { DashboardRaidMenu } from "@/element/raid-menu";
export default function DashboardPage() {
const login = useLogin();
if (!login) return;
const login = useLogin();
if (!login) return;
return <DashboardForLink link={new NostrLink(NostrPrefix.PublicKey, login.pubkey)} />
return <DashboardForLink link={new NostrLink(NostrPrefix.PublicKey, login.pubkey)} />;
}
function DashboardForLink({ link }: { link: NostrLink }) {
const streamEvent = useCurrentStreamFeed(link, true);
const streamLink = streamEvent ? NostrLink.fromEvent(streamEvent) : undefined;
const { stream, status, image, participants } = extractStreamInfo(streamEvent);
const [maxParticipants, setMaxParticipants] = useState(0);
useEffect(() => {
if (participants) {
setMaxParticipants(v => v < Number(participants) ? Number(participants) : v);
}
}, [participants]);
if (!streamLink) return;
const streamEvent = useCurrentStreamFeed(link, true);
const streamLink = streamEvent ? NostrLink.fromEvent(streamEvent) : undefined;
const { stream, status, image, participants } = extractStreamInfo(streamEvent);
const [maxParticipants, setMaxParticipants] = useState(0);
useEffect(() => {
if (participants) {
setMaxParticipants(v => (v < Number(participants) ? Number(participants) : v));
}
}, [participants]);
if (!streamLink) return;
return <div className="grid grid-cols-3 gap-2 full-page-height">
<div className="h-inhreit flex gap-4 flex-col">
<DashboardCard className="flex flex-col gap-4">
<h3>
<FormattedMessage defaultMessage="Stream" id="uYw2LD" />
</h3>
<LiveVideoPlayer stream={stream} status={status} poster={image} muted={true} className="w-full" />
<div className="flex gap-4">
<DashboardStatsCard name={<FormattedMessage defaultMessage="Stream Time" id="miQKuZ" />} value={<StreamTimer ev={streamEvent} />} />
<DashboardStatsCard name={<FormattedMessage defaultMessage="Viewers" id="37mth/" />} value={participants} />
<DashboardStatsCard name={<FormattedMessage defaultMessage="Highest Viewers" id="jctiUc" />} value={maxParticipants} />
</div>
<DashboardRaidButton link={streamLink} />
</DashboardCard>
<DashboardCard className="flex flex-col gap-4">
<h3>
<FormattedMessage defaultMessage="Chat Users" id="RtYNX5" />
</h3>
<div className="h-[calc(100%-4rem)] overflow-y-scroll">
<DashboardChatList link={streamLink} />
</div>
</DashboardCard>
</div >
<div className="h-inhreit flex gap-4 flex-col">
<DashboardZapColumn link={streamLink} />
</div>
<LiveChat link={streamLink} ev={streamEvent} />
</div >
return (
<div className="grid grid-cols-3 gap-2 full-page-height">
<div className="h-inhreit flex gap-4 flex-col">
<DashboardCard className="flex flex-col gap-4">
<h3>
<FormattedMessage defaultMessage="Stream" id="uYw2LD" />
</h3>
<LiveVideoPlayer stream={stream} status={status} poster={image} muted={true} className="w-full" />
<div className="flex gap-4">
<DashboardStatsCard
name={<FormattedMessage defaultMessage="Stream Time" id="miQKuZ" />}
value={<StreamTimer ev={streamEvent} />}
/>
<DashboardStatsCard name={<FormattedMessage defaultMessage="Viewers" id="37mth/" />} value={participants} />
<DashboardStatsCard
name={<FormattedMessage defaultMessage="Highest Viewers" id="jctiUc" />}
value={maxParticipants}
/>
</div>
<DashboardRaidButton link={streamLink} />
</DashboardCard>
<DashboardCard className="flex flex-col gap-4">
<h3>
<FormattedMessage defaultMessage="Chat Users" id="RtYNX5" />
</h3>
<div className="h-[calc(100%-4rem)] overflow-y-scroll">
<DashboardChatList link={streamLink} />
</div>
</DashboardCard>
</div>
<div className="h-inhreit flex gap-4 flex-col">
<DashboardZapColumn link={streamLink} />
</div>
<LiveChat link={streamLink} ev={streamEvent} />
</div>
);
}
function DashboardCard(props: HTMLProps<HTMLDivElement>) {
return <div {...props} className={classNames("px-4 py-6 rounded-3xl border border-gray-1", props.className)}>
{props.children}
return (
<div {...props} className={classNames("px-4 py-6 rounded-3xl border border-gray-1", props.className)}>
{props.children}
</div>
);
}
function DashboardStatsCard({ name, value, ...props }: { name: ReactNode, value: ReactNode } & Omit<HTMLProps<HTMLDivElement>, "children" | "name" | "value">) {
return <div {...props} className={classNames("flex-1 bg-gray-1 flex flex-col gap-1 px-4 py-2 rounded-xl", props.className)}>
<div className="text-gray-3 font-medium">
{name}
</div>
<div>
{value}
</div>
function DashboardStatsCard({
name,
value,
...props
}: { name: ReactNode; value: ReactNode } & Omit<HTMLProps<HTMLDivElement>, "children" | "name" | "value">) {
return (
<div
{...props}
className={classNames("flex-1 bg-gray-1 flex flex-col gap-1 px-4 py-2 rounded-xl", props.className)}>
<div className="text-gray-3 font-medium">{name}</div>
<div>{value}</div>
</div>
);
}
function DashboardChatList({ link }: { link: NostrLink }) {
const feed = useLiveChatFeed(link);
const feed = useLiveChatFeed(link);
const pubkeys = useMemo(() => {
return dedupe(feed.messages.map(a => a.pubkey));
}, [feed]);
const pubkeys = useMemo(() => {
return dedupe(feed.messages.map(a => a.pubkey));
}, [feed]);
return pubkeys.map(a => <div className="flex justify-between items-center px-4 py-2 border-b border-gray-1">
<Profile pubkey={a} avatarSize={32} gap={4} />
<div className="flex gap-2">
<MuteButton pubkey={a} />
<AsyncButton onClick={() => { }} className="font-bold">
<FormattedMessage defaultMessage="Zap" id="fBI91o" />
</AsyncButton>
</div>
</div>)
return pubkeys.map(a => (
<div className="flex justify-between items-center px-4 py-2 border-b border-gray-1">
<Profile pubkey={a} avatarSize={32} gap={4} />
<div className="flex gap-2">
<MuteButton pubkey={a} />
<AsyncButton onClick={() => {}} className="font-bold">
<FormattedMessage defaultMessage="Zap" id="fBI91o" />
</AsyncButton>
</div>
</div>
));
}
function DashboardZapColumn({ link }: { link: NostrLink }) {
const feed = useLiveChatFeed(link);
const reactions = useEventReactions(link, feed.reactions);
const feed = useLiveChatFeed(link);
const reactions = useEventReactions(link, feed.reactions);
const sortedZaps = useMemo(() => reactions.zaps.sort((a, b) => b.created_at > a.created_at ? 1 : -1), [reactions.zaps]);
const latestZap = sortedZaps.at(0);
return <DashboardCard className="h-inhreit flex flex-col gap-4">
<h3>
<FormattedMessage defaultMessage="Zaps" id="OEW7yJ" />
</h3>
<div className="h-inhreit flex flex-col gap-2 overflow-y-scroll">
{latestZap && <DashboardHighlightZap zap={latestZap} />}
{sortedZaps.slice(1).map(a => <ChatZap zap={a} />)}
</div>
const sortedZaps = useMemo(
() => reactions.zaps.sort((a, b) => (b.created_at > a.created_at ? 1 : -1)),
[reactions.zaps]
);
const latestZap = sortedZaps.at(0);
return (
<DashboardCard className="h-inhreit flex flex-col gap-4">
<h3>
<FormattedMessage defaultMessage="Zaps" id="OEW7yJ" />
</h3>
<div className="h-inhreit flex flex-col gap-2 overflow-y-scroll">
{latestZap && <DashboardHighlightZap zap={latestZap} />}
{sortedZaps.slice(1).map(a => (
<ChatZap zap={a} />
))}
</div>
</DashboardCard>
);
}
function DashboardHighlightZap({ zap }: { zap: ParsedZap }) {
return <div className="px-4 py-6 bg-gray-1 flex flex-col gap-4 rounded-xl animate-flash">
<div className="flex justify-between items-center text-zap text-2xl font-semibold">
<Profile pubkey={zap.sender ?? "anon"} options={{
showAvatar: false
}} />
<span>
<FormattedMessage defaultMessage="{n} sats" id="CsCUYo" values={{
n: <FormattedNumber value={zap.amount} />
}} />
</span>
return (
<div className="px-4 py-6 bg-gray-1 flex flex-col gap-4 rounded-xl animate-flash">
<div className="flex justify-between items-center text-zap text-2xl font-semibold">
<Profile
pubkey={zap.sender ?? "anon"}
options={{
showAvatar: false,
}}
/>
<span>
<FormattedMessage
defaultMessage="{n} sats"
id="CsCUYo"
values={{
n: <FormattedNumber value={zap.amount} />,
}}
/>
</span>
</div>
{zap.content && (
<div className="text-2xl">
<Text content={zap.content} tags={[]} />
</div>
{zap.content && <div className="text-2xl">
<Text content={zap.content} tags={[]} />
</div>}
</div>;
)}
</div>
);
}
function DashboardRaidButton({ link }: { link: NostrLink }) {
const [show, setShow] = useState(false);
return <Dialog.Root open={show} onOpenChange={setShow}>
<AsyncButton className="btn btn-primary" onClick={() => setShow(true)}>
<FormattedMessage defaultMessage="Raid" id="4iBdw1" />
</AsyncButton>
<Dialog.Portal>
<Dialog.Overlay className="dialog-overlay" />
<Dialog.Content className="dialog-content">
<DashboardRaidMenu link={link} onClose={() => setShow(false)} />
</Dialog.Content>
</Dialog.Portal>
const [show, setShow] = useState(false);
return (
<Dialog.Root open={show} onOpenChange={setShow}>
<AsyncButton className="btn btn-primary" onClick={() => setShow(true)}>
<FormattedMessage defaultMessage="Raid" id="4iBdw1" />
</AsyncButton>
<Dialog.Portal>
<Dialog.Overlay className="dialog-overlay" />
<Dialog.Content className="dialog-content">
<DashboardRaidMenu link={link} onClose={() => setShow(false)} />
</Dialog.Content>
</Dialog.Portal>
</Dialog.Root>
);
}

View File

@ -1,4 +1,3 @@
.tabs-list {
flex-shrink: 0;
display: flex;

View File

@ -21,7 +21,6 @@ import { StatePill } from "@/element/state-pill";
import { Avatar } from "@/element/avatar";
import { ZapperRow } from "@/element/zapper-row";
function TopZappers({ zaps }: { zaps: ParsedZap[] }) {
const zappers = useTopZappers(zaps);
return (
@ -131,20 +130,22 @@ export function ProfilePage() {
}
function ProfileStreamList({ streams }: { streams: Array<TaggedNostrEvent> }) {
return <div className="flex gap-3 flex-wrap justify-center">
{streams.map(ev => (
<div key={ev.id} className="flex flex-col gap-1 sm:w-64 w-full">
<VideoTile ev={ev} showAuthor={false} showStatus={false} />
<span className="text-neutral-500">
<FormattedMessage
defaultMessage="Streamed on {date}"
id="cvAsEh"
values={{
date: new Date(ev.created_at * 1000).toLocaleDateString(),
}}
/>
</span>
</div>
))}
</div>;
}
return (
<div className="flex gap-3 flex-wrap justify-center">
{streams.map(ev => (
<div key={ev.id} className="flex flex-col gap-1 sm:w-64 w-full">
<VideoTile ev={ev} showAuthor={false} showStatus={false} />
<span className="text-neutral-500">
<FormattedMessage
defaultMessage="Streamed on {date}"
id="cvAsEh"
values={{
date: new Date(ev.created_at * 1000).toLocaleDateString(),
}}
/>
</span>
</div>
))}
</div>
);
}

View File

@ -118,10 +118,19 @@ export function StreamPage({ link, evPreload }: { evPreload?: NostrEvent; link:
const ev = useCurrentStreamFeed(link, true, evPreload);
const host = getHost(ev);
const evLink = ev ? NostrLink.fromEvent(ev) : undefined;
const { title, summary, image, status, tags, contentWarning, stream, recording, goal: goalTag } = extractStreamInfo(ev);
const {
title,
summary,
image,
status,
tags,
contentWarning,
stream,
recording,
goal: goalTag,
} = extractStreamInfo(ev);
const goal = useZapGoal(goalTag);
if (contentWarning && !isContentWarningAccepted()) {
return <ContentWarningOverlay />;
}
@ -145,9 +154,14 @@ export function StreamPage({ link, evPreload }: { evPreload?: NostrEvent; link:
<ProfileInfo ev={ev} goal={goal} />
<StreamCards host={host} />
</div>
<LiveChat link={evLink ?? link} ev={ev} goal={goal} options={{
canWrite: status === StreamState.Live
}} />
<LiveChat
link={evLink ?? link}
ev={ev}
goal={goal}
options={{
canWrite: status === StreamState.Live,
}}
/>
</div>
);
}

View File

@ -5,6 +5,9 @@
"+AcVD+": {
"defaultMessage": "No emails, just awesomeness!"
},
"+sdKx8": {
"defaultMessage": "Live now"
},
"+vVZ/G": {
"defaultMessage": "Connect"
},
@ -38,6 +41,9 @@
"2/2yg+": {
"defaultMessage": "Add"
},
"37mth/": {
"defaultMessage": "Viewers"
},
"3HwrQo": {
"defaultMessage": "Zap!"
},
@ -50,6 +56,9 @@
"47FYwb": {
"defaultMessage": "Cancel"
},
"4iBdw1": {
"defaultMessage": "Raid"
},
"4l69eO": {
"defaultMessage": "Hmm, your lightning address looks wrong"
},
@ -68,6 +77,12 @@
"5kx+2v": {
"defaultMessage": "Server Url"
},
"5tM0VD": {
"defaultMessage": "Stream Started"
},
"69hmpj": {
"defaultMessage": "Raid from {name}"
},
"6Z2pvJ": {
"defaultMessage": "Stream Providers"
},
@ -89,9 +104,6 @@
"9a9+ww": {
"defaultMessage": "Title"
},
"AIHaPH": {
"defaultMessage": "{person} zapped {amount} sats"
},
"Atr2p4": {
"defaultMessage": "NSFW Content"
},
@ -188,6 +200,9 @@
"LknBsU": {
"defaultMessage": "Stream Key"
},
"MTHO1W": {
"defaultMessage": "Start Raid"
},
"My6HwN": {
"defaultMessage": "Ok, it's safe"
},
@ -230,12 +245,18 @@
"RJOmzk": {
"defaultMessage": "I have read and agree with {provider}''s {terms}."
},
"RS6smY": {
"defaultMessage": "Raid Message"
},
"RXQdxR": {
"defaultMessage": "Please login to write messages!"
},
"RrCui3": {
"defaultMessage": "Summary"
},
"RtYNX5": {
"defaultMessage": "Chat Users"
},
"TP/cMX": {
"defaultMessage": "Ended"
},
@ -276,9 +297,18 @@
"ZmqxZs": {
"defaultMessage": "You can change this later"
},
"Zse7yG": {
"defaultMessage": "Raid target"
},
"acrOoz": {
"defaultMessage": "Continue"
},
"aqjZxs": {
"defaultMessage": "Raid!"
},
"bfvyfs": {
"defaultMessage": "Anon"
},
"cPIKU2": {
"defaultMessage": "Following"
},
@ -333,9 +363,18 @@
"izWS4J": {
"defaultMessage": "Unfollow"
},
"j/jueq": {
"defaultMessage": "Raiding {name}"
},
"jctiUc": {
"defaultMessage": "Highest Viewers"
},
"jgOqxt": {
"defaultMessage": "Widgets"
},
"jkAQj5": {
"defaultMessage": "Stream Ended"
},
"jr4+vD": {
"defaultMessage": "Markdown"
},
@ -354,6 +393,9 @@
"ljmS5P": {
"defaultMessage": "Endpoint"
},
"miQKuZ": {
"defaultMessage": "Stream Time"
},
"mnJYBQ": {
"defaultMessage": "Voice"
},
@ -378,8 +420,8 @@
"oZrFyI": {
"defaultMessage": "Stream type should be HLS"
},
"pO/lPX": {
"defaultMessage": "Scheduled for {date}"
"q+zTWM": {
"defaultMessage": "<s>{person}</s> zapped <s>{amount}</s> sats"
},
"r2Jjms": {
"defaultMessage": "Log In"

View File

@ -5,6 +5,9 @@
"+AcVD+": {
"defaultMessage": "Без имейли, просто страхотно!"
},
"+sdKx8": {
"defaultMessage": "Live now"
},
"+vVZ/G": {
"defaultMessage": "Свързване"
},
@ -38,6 +41,9 @@
"2/2yg+": {
"defaultMessage": "Добави"
},
"37mth/": {
"defaultMessage": "Viewers"
},
"3HwrQo": {
"defaultMessage": "Зап!"
},
@ -50,6 +56,9 @@
"47FYwb": {
"defaultMessage": "Отказ"
},
"4iBdw1": {
"defaultMessage": "Raid"
},
"4l69eO": {
"defaultMessage": "Хмм, твоят лайтнинг адрес изглежда грешен"
},
@ -68,6 +77,12 @@
"5kx+2v": {
"defaultMessage": "Url адрес на сървъра"
},
"5tM0VD": {
"defaultMessage": "Stream Started"
},
"69hmpj": {
"defaultMessage": "Raid from {name}"
},
"6Z2pvJ": {
"defaultMessage": "Стрийм доставчици"
},
@ -89,9 +104,6 @@
"9a9+ww": {
"defaultMessage": "Заглавие"
},
"AIHaPH": {
"defaultMessage": "{човек} запнат {количество} сатс"
},
"Atr2p4": {
"defaultMessage": "NSFW Съдържание"
},
@ -188,6 +200,9 @@
"LknBsU": {
"defaultMessage": "Стрийм ключ"
},
"MTHO1W": {
"defaultMessage": "Start Raid"
},
"My6HwN": {
"defaultMessage": "Ок, безопасно е"
},
@ -230,12 +245,18 @@
"RJOmzk": {
"defaultMessage": "Прочетох и се съгласявам със {доставчика} и неговите {общи условия}."
},
"RS6smY": {
"defaultMessage": "Raid Message"
},
"RXQdxR": {
"defaultMessage": "Моля влезте в профила си за да може да пишете съобщения!"
},
"RrCui3": {
"defaultMessage": "Обобщение"
},
"RtYNX5": {
"defaultMessage": "Chat Users"
},
"TP/cMX": {
"defaultMessage": "Приключено"
},
@ -276,9 +297,18 @@
"ZmqxZs": {
"defaultMessage": "Можете да промените това по-късно"
},
"Zse7yG": {
"defaultMessage": "Raid target"
},
"acrOoz": {
"defaultMessage": "Продължаване"
},
"aqjZxs": {
"defaultMessage": "Raid!"
},
"bfvyfs": {
"defaultMessage": "Anon"
},
"cPIKU2": {
"defaultMessage": "Последвани"
},
@ -333,9 +363,18 @@
"izWS4J": {
"defaultMessage": "Прекратете следенето"
},
"j/jueq": {
"defaultMessage": "Raiding {name}"
},
"jctiUc": {
"defaultMessage": "Highest Viewers"
},
"jgOqxt": {
"defaultMessage": "Widgets"
},
"jkAQj5": {
"defaultMessage": "Stream Ended"
},
"jr4+vD": {
"defaultMessage": "Намаление"
},
@ -354,6 +393,9 @@
"ljmS5P": {
"defaultMessage": "Крайна точка"
},
"miQKuZ": {
"defaultMessage": "Stream Time"
},
"mnJYBQ": {
"defaultMessage": "Глас"
},
@ -378,8 +420,8 @@
"oZrFyI": {
"defaultMessage": "Стрийм тип трябва да бъде HLS"
},
"pO/lPX": {
"defaultMessage": "Планирано за {дата}"
"q+zTWM": {
"defaultMessage": "<s>{person}</s> zapped <s>{amount}</s> sats"
},
"r2Jjms": {
"defaultMessage": "Вход"

View File

@ -5,6 +5,9 @@
"+AcVD+": {
"defaultMessage": "কোনো ইমেইল নয়, কেবল বিস্ময়!"
},
"+sdKx8": {
"defaultMessage": "Live now"
},
"+vVZ/G": {
"defaultMessage": "সংযুক্ত হোন"
},
@ -38,6 +41,9 @@
"2/2yg+": {
"defaultMessage": "যুক্ত করুন"
},
"37mth/": {
"defaultMessage": "Viewers"
},
"3HwrQo": {
"defaultMessage": "জ্যাপ!"
},
@ -50,6 +56,9 @@
"47FYwb": {
"defaultMessage": "বাতিল করুন"
},
"4iBdw1": {
"defaultMessage": "Raid"
},
"4l69eO": {
"defaultMessage": "হুম, আপনার বিজলি ঠিকানাটি সঠিক নয়"
},
@ -68,6 +77,12 @@
"5kx+2v": {
"defaultMessage": "সার্ভারের Url"
},
"5tM0VD": {
"defaultMessage": "Stream Started"
},
"69hmpj": {
"defaultMessage": "Raid from {name}"
},
"6Z2pvJ": {
"defaultMessage": "স্ট্রিম প্রদানকারীরা"
},
@ -89,9 +104,6 @@
"9a9+ww": {
"defaultMessage": "শিরোনাম"
},
"AIHaPH": {
"defaultMessage": "{person} {amount} পরিমাণ স্যাট জ্যাপ করেছেন"
},
"Atr2p4": {
"defaultMessage": "NSFW আধেয়"
},
@ -188,6 +200,9 @@
"LknBsU": {
"defaultMessage": "চাবি স্ট্রিম করুন"
},
"MTHO1W": {
"defaultMessage": "Start Raid"
},
"My6HwN": {
"defaultMessage": "ঠিক আছে, এটা নিরাপদ"
},
@ -230,12 +245,18 @@
"RJOmzk": {
"defaultMessage": "আমি {provider} এর {terms} পড়েছি এবং এর সাথে সহমত প্রকাশ করছি।"
},
"RS6smY": {
"defaultMessage": "Raid Message"
},
"RXQdxR": {
"defaultMessage": "মেসেজ দিতে লগইন করুন!"
},
"RrCui3": {
"defaultMessage": "সারসংক্ষেপ"
},
"RtYNX5": {
"defaultMessage": "Chat Users"
},
"TP/cMX": {
"defaultMessage": "শেষ হয়েছে"
},
@ -276,9 +297,18 @@
"ZmqxZs": {
"defaultMessage": "আপনি এটি পরে পরিবর্তন করতে পারবেন"
},
"Zse7yG": {
"defaultMessage": "Raid target"
},
"acrOoz": {
"defaultMessage": "চালিয়ে যান"
},
"aqjZxs": {
"defaultMessage": "Raid!"
},
"bfvyfs": {
"defaultMessage": "Anon"
},
"cPIKU2": {
"defaultMessage": "অনুসরণ করা হচ্ছে"
},
@ -333,9 +363,18 @@
"izWS4J": {
"defaultMessage": "আনফলো করুন"
},
"j/jueq": {
"defaultMessage": "Raiding {name}"
},
"jctiUc": {
"defaultMessage": "Highest Viewers"
},
"jgOqxt": {
"defaultMessage": "Widgets"
},
"jkAQj5": {
"defaultMessage": "Stream Ended"
},
"jr4+vD": {
"defaultMessage": "মার্কডাউন"
},
@ -354,6 +393,9 @@
"ljmS5P": {
"defaultMessage": "শেষপ্রান্ত"
},
"miQKuZ": {
"defaultMessage": "Stream Time"
},
"mnJYBQ": {
"defaultMessage": "কণ্ঠস্বর"
},
@ -378,8 +420,8 @@
"oZrFyI": {
"defaultMessage": "স্ট্রিমের ধরন HLS হওয়া উচিত"
},
"pO/lPX": {
"defaultMessage": "{date} তারিখের জন্য নির্ধারিত"
"q+zTWM": {
"defaultMessage": "<s>{person}</s> zapped <s>{amount}</s> sats"
},
"r2Jjms": {
"defaultMessage": "লগ ইন করুন"

View File

@ -5,6 +5,9 @@
"+AcVD+": {
"defaultMessage": "Ingen e-mails, bare fantastiskhed!"
},
"+sdKx8": {
"defaultMessage": "Live now"
},
"+vVZ/G": {
"defaultMessage": "Forbind"
},
@ -38,6 +41,9 @@
"2/2yg+": {
"defaultMessage": "Tilføj"
},
"37mth/": {
"defaultMessage": "Viewers"
},
"3HwrQo": {
"defaultMessage": "Zap!"
},
@ -50,6 +56,9 @@
"47FYwb": {
"defaultMessage": "Annuller"
},
"4iBdw1": {
"defaultMessage": "Raid"
},
"4l69eO": {
"defaultMessage": "Hmm, din lynadresse ser forkert ud"
},
@ -68,6 +77,12 @@
"5kx+2v": {
"defaultMessage": "Server-URL"
},
"5tM0VD": {
"defaultMessage": "Stream Started"
},
"69hmpj": {
"defaultMessage": "Raid from {name}"
},
"6Z2pvJ": {
"defaultMessage": "Strømudbydere"
},
@ -89,9 +104,6 @@
"9a9+ww": {
"defaultMessage": "Titel"
},
"AIHaPH": {
"defaultMessage": "{person} zappet {amount} sats"
},
"Atr2p4": {
"defaultMessage": "NSFW-indhold"
},
@ -188,6 +200,9 @@
"LknBsU": {
"defaultMessage": "Stream-nøgle"
},
"MTHO1W": {
"defaultMessage": "Start Raid"
},
"My6HwN": {
"defaultMessage": "Okay, det er sikkert"
},
@ -230,12 +245,18 @@
"RJOmzk": {
"defaultMessage": "Jeg har læst og er enig i {provider}' s {terms}."
},
"RS6smY": {
"defaultMessage": "Raid Message"
},
"RXQdxR": {
"defaultMessage": "Log ind for at skrive beskeder!"
},
"RrCui3": {
"defaultMessage": "Resumé"
},
"RtYNX5": {
"defaultMessage": "Chat Users"
},
"TP/cMX": {
"defaultMessage": "Afsluttet"
},
@ -276,9 +297,18 @@
"ZmqxZs": {
"defaultMessage": "Du kan ændre dette senere"
},
"Zse7yG": {
"defaultMessage": "Raid target"
},
"acrOoz": {
"defaultMessage": "Fortsæt"
},
"aqjZxs": {
"defaultMessage": "Raid!"
},
"bfvyfs": {
"defaultMessage": "Anon"
},
"cPIKU2": {
"defaultMessage": "Følgende"
},
@ -333,9 +363,18 @@
"izWS4J": {
"defaultMessage": "Følg ikke"
},
"j/jueq": {
"defaultMessage": "Raiding {name}"
},
"jctiUc": {
"defaultMessage": "Highest Viewers"
},
"jgOqxt": {
"defaultMessage": "Widgets"
},
"jkAQj5": {
"defaultMessage": "Stream Ended"
},
"jr4+vD": {
"defaultMessage": "Markdown"
},
@ -354,6 +393,9 @@
"ljmS5P": {
"defaultMessage": "Slutpunkt"
},
"miQKuZ": {
"defaultMessage": "Stream Time"
},
"mnJYBQ": {
"defaultMessage": "Stemme"
},
@ -378,8 +420,8 @@
"oZrFyI": {
"defaultMessage": "Stream-typen skal være HLS"
},
"pO/lPX": {
"defaultMessage": "Planlagt til {date}"
"q+zTWM": {
"defaultMessage": "<s>{person}</s> zapped <s>{amount}</s> sats"
},
"r2Jjms": {
"defaultMessage": "Log ind"

View File

@ -5,6 +5,9 @@
"+AcVD+": {
"defaultMessage": "Keine E-Mails, nur Großartigkeit!"
},
"+sdKx8": {
"defaultMessage": "Live now"
},
"+vVZ/G": {
"defaultMessage": "Verbinden"
},
@ -38,6 +41,9 @@
"2/2yg+": {
"defaultMessage": "Hinzufügen"
},
"37mth/": {
"defaultMessage": "Viewers"
},
"3HwrQo": {
"defaultMessage": "Zap!"
},
@ -50,6 +56,9 @@
"47FYwb": {
"defaultMessage": "Abbrechen"
},
"4iBdw1": {
"defaultMessage": "Raid"
},
"4l69eO": {
"defaultMessage": "Hmm, deine Lightning-Adresse sieht falsch aus"
},
@ -68,6 +77,12 @@
"5kx+2v": {
"defaultMessage": "Server-URL"
},
"5tM0VD": {
"defaultMessage": "Stream Started"
},
"69hmpj": {
"defaultMessage": "Raid from {name}"
},
"6Z2pvJ": {
"defaultMessage": "Stream-Anbieter"
},
@ -89,9 +104,6 @@
"9a9+ww": {
"defaultMessage": "Titel"
},
"AIHaPH": {
"defaultMessage": "{person} zappt {amount} sats"
},
"Atr2p4": {
"defaultMessage": "NSFW Inhalt"
},
@ -165,7 +177,7 @@
"defaultMessage": "ODER"
},
"J/+m9y": {
"defaultMessage": "Streamdauer {duration} min"
"defaultMessage": "Streamdauer {duration} Min."
},
"JEsxDw": {
"defaultMessage": "Hochladen..."
@ -188,6 +200,9 @@
"LknBsU": {
"defaultMessage": "Stream-Schlüssel"
},
"MTHO1W": {
"defaultMessage": "Start Raid"
},
"My6HwN": {
"defaultMessage": "Ok, er ist gesichert"
},
@ -230,12 +245,18 @@
"RJOmzk": {
"defaultMessage": "Ich habe die {terms} von {provider} gelesen und bin damit einverstanden."
},
"RS6smY": {
"defaultMessage": "Raid Message"
},
"RXQdxR": {
"defaultMessage": "Bitte melde dich an, um Nachrichten zu schreiben!"
},
"RrCui3": {
"defaultMessage": "Zusammenfassung"
},
"RtYNX5": {
"defaultMessage": "Chat Users"
},
"TP/cMX": {
"defaultMessage": "Beendet"
},
@ -255,7 +276,7 @@
"defaultMessage": "Verbergen"
},
"W9355R": {
"defaultMessage": "Stummschaltung aufheben"
"defaultMessage": "Entstummen"
},
"X2PZ7D": {
"defaultMessage": "Ziel erstellen"
@ -276,9 +297,18 @@
"ZmqxZs": {
"defaultMessage": "Sie können das später ändern"
},
"Zse7yG": {
"defaultMessage": "Raid target"
},
"acrOoz": {
"defaultMessage": "Weiter"
},
"aqjZxs": {
"defaultMessage": "Raid!"
},
"bfvyfs": {
"defaultMessage": "Anon"
},
"cPIKU2": {
"defaultMessage": "Folge ich"
},
@ -333,9 +363,18 @@
"izWS4J": {
"defaultMessage": "Entfolgen"
},
"j/jueq": {
"defaultMessage": "Raiding {name}"
},
"jctiUc": {
"defaultMessage": "Highest Viewers"
},
"jgOqxt": {
"defaultMessage": "Widgets"
},
"jkAQj5": {
"defaultMessage": "Stream Ended"
},
"jr4+vD": {
"defaultMessage": "Markdown"
},
@ -354,6 +393,9 @@
"ljmS5P": {
"defaultMessage": "Endpunkt"
},
"miQKuZ": {
"defaultMessage": "Stream Time"
},
"mnJYBQ": {
"defaultMessage": "Stimme"
},
@ -378,8 +420,8 @@
"oZrFyI": {
"defaultMessage": "Stream Typ sollte HLS sein"
},
"pO/lPX": {
"defaultMessage": "Geplant am {date}"
"q+zTWM": {
"defaultMessage": "<s>{person}</s> zapped <s>{amount}</s> sats"
},
"r2Jjms": {
"defaultMessage": "Anmelden"

View File

@ -166,4 +166,4 @@
"y867Vs": "Volume",
"yzKwBQ": "eg. nsec1xyz",
"zVDHAu": "Zap Alert"
}
}

View File

@ -5,6 +5,9 @@
"+AcVD+": {
"defaultMessage": "Sin correos electrónicos, ¡sólo genialidad!"
},
"+sdKx8": {
"defaultMessage": "Live now"
},
"+vVZ/G": {
"defaultMessage": "Conectar"
},
@ -38,6 +41,9 @@
"2/2yg+": {
"defaultMessage": "Agregar"
},
"37mth/": {
"defaultMessage": "Viewers"
},
"3HwrQo": {
"defaultMessage": "Zap!"
},
@ -50,6 +56,9 @@
"47FYwb": {
"defaultMessage": "Cancelar"
},
"4iBdw1": {
"defaultMessage": "Raid"
},
"4l69eO": {
"defaultMessage": "Hmm, tu dirección de rayos parece incorrecta"
},
@ -68,6 +77,12 @@
"5kx+2v": {
"defaultMessage": "Url del servidor"
},
"5tM0VD": {
"defaultMessage": "Stream Started"
},
"69hmpj": {
"defaultMessage": "Raid from {name}"
},
"6Z2pvJ": {
"defaultMessage": "Proveedores de transmisión"
},
@ -89,9 +104,6 @@
"9a9+ww": {
"defaultMessage": "Título"
},
"AIHaPH": {
"defaultMessage": "{person} zapearon {amount} sats"
},
"Atr2p4": {
"defaultMessage": "Contenido NSFW -No Apto Para el Trabajo-"
},
@ -188,6 +200,9 @@
"LknBsU": {
"defaultMessage": "Clave de transmisión"
},
"MTHO1W": {
"defaultMessage": "Start Raid"
},
"My6HwN": {
"defaultMessage": "Ok, es seguro"
},
@ -230,12 +245,18 @@
"RJOmzk": {
"defaultMessage": "He leído y estoy de acuerdo con los {terms} del {provider}."
},
"RS6smY": {
"defaultMessage": "Raid Message"
},
"RXQdxR": {
"defaultMessage": "¡Por favor, inicia sesión para escribir mensajes!"
},
"RrCui3": {
"defaultMessage": "Resumen"
},
"RtYNX5": {
"defaultMessage": "Chat Users"
},
"TP/cMX": {
"defaultMessage": "Finalizado"
},
@ -276,9 +297,18 @@
"ZmqxZs": {
"defaultMessage": "Podrás cambiar esto más tarde"
},
"Zse7yG": {
"defaultMessage": "Raid target"
},
"acrOoz": {
"defaultMessage": "Continuar"
},
"aqjZxs": {
"defaultMessage": "Raid!"
},
"bfvyfs": {
"defaultMessage": "Anon"
},
"cPIKU2": {
"defaultMessage": "Siguiendo"
},
@ -333,9 +363,18 @@
"izWS4J": {
"defaultMessage": "Dejar de seguir"
},
"j/jueq": {
"defaultMessage": "Raiding {name}"
},
"jctiUc": {
"defaultMessage": "Highest Viewers"
},
"jgOqxt": {
"defaultMessage": "Widgets"
},
"jkAQj5": {
"defaultMessage": "Stream Ended"
},
"jr4+vD": {
"defaultMessage": "Markdown"
},
@ -354,6 +393,9 @@
"ljmS5P": {
"defaultMessage": "Extremo"
},
"miQKuZ": {
"defaultMessage": "Stream Time"
},
"mnJYBQ": {
"defaultMessage": "Voz"
},
@ -378,8 +420,8 @@
"oZrFyI": {
"defaultMessage": "El tipo de la transmisión debe ser HLS"
},
"pO/lPX": {
"defaultMessage": "Programada para el {date}"
"q+zTWM": {
"defaultMessage": "<s>{person}</s> zapped <s>{amount}</s> sats"
},
"r2Jjms": {
"defaultMessage": "Iniciar sesión"

View File

@ -5,6 +5,9 @@
"+AcVD+": {
"defaultMessage": "No emails, just awesomeness!"
},
"+sdKx8": {
"defaultMessage": "Live now"
},
"+vVZ/G": {
"defaultMessage": "اتصال"
},
@ -38,6 +41,9 @@
"2/2yg+": {
"defaultMessage": "افزودن"
},
"37mth/": {
"defaultMessage": "Viewers"
},
"3HwrQo": {
"defaultMessage": "زَپ!"
},
@ -50,6 +56,9 @@
"47FYwb": {
"defaultMessage": "لغو"
},
"4iBdw1": {
"defaultMessage": "Raid"
},
"4l69eO": {
"defaultMessage": "Hmm, your lightning address looks wrong"
},
@ -68,6 +77,12 @@
"5kx+2v": {
"defaultMessage": "آدرس سرور"
},
"5tM0VD": {
"defaultMessage": "Stream Started"
},
"69hmpj": {
"defaultMessage": "Raid from {name}"
},
"6Z2pvJ": {
"defaultMessage": "ارائه دهندگان پخش زنده"
},
@ -89,9 +104,6 @@
"9a9+ww": {
"defaultMessage": "عنوان"
},
"AIHaPH": {
"defaultMessage": "{person} {amount} ساتوشی زپ زد"
},
"Atr2p4": {
"defaultMessage": "محتوای نامناسب برای کودکان و محل کار"
},
@ -188,6 +200,9 @@
"LknBsU": {
"defaultMessage": "کلید پخش زنده"
},
"MTHO1W": {
"defaultMessage": "Start Raid"
},
"My6HwN": {
"defaultMessage": "باشه، امن است"
},
@ -230,12 +245,18 @@
"RJOmzk": {
"defaultMessage": "من {terms} {provider} را خوانده و با آن موافقم."
},
"RS6smY": {
"defaultMessage": "Raid Message"
},
"RXQdxR": {
"defaultMessage": "لطفا برای نوشتن پیام وارد شوید!"
},
"RrCui3": {
"defaultMessage": "چکیده"
},
"RtYNX5": {
"defaultMessage": "Chat Users"
},
"TP/cMX": {
"defaultMessage": "به پایان رسید"
},
@ -276,9 +297,18 @@
"ZmqxZs": {
"defaultMessage": "بعدا می توانید این را تغییر دهید"
},
"Zse7yG": {
"defaultMessage": "Raid target"
},
"acrOoz": {
"defaultMessage": "ادامه"
},
"aqjZxs": {
"defaultMessage": "Raid!"
},
"bfvyfs": {
"defaultMessage": "Anon"
},
"cPIKU2": {
"defaultMessage": "بعدی"
},
@ -333,9 +363,18 @@
"izWS4J": {
"defaultMessage": "لغو دنبال کردن"
},
"j/jueq": {
"defaultMessage": "Raiding {name}"
},
"jctiUc": {
"defaultMessage": "Highest Viewers"
},
"jgOqxt": {
"defaultMessage": "Widgets"
},
"jkAQj5": {
"defaultMessage": "Stream Ended"
},
"jr4+vD": {
"defaultMessage": "مارک‌داون"
},
@ -354,6 +393,9 @@
"ljmS5P": {
"defaultMessage": "نقطه انتها"
},
"miQKuZ": {
"defaultMessage": "Stream Time"
},
"mnJYBQ": {
"defaultMessage": "Voice"
},
@ -378,8 +420,8 @@
"oZrFyI": {
"defaultMessage": "نوع پخش باید HLS باشد"
},
"pO/lPX": {
"defaultMessage": "زمان‌بندی شده برای {date}"
"q+zTWM": {
"defaultMessage": "<s>{person}</s> zapped <s>{amount}</s> sats"
},
"r2Jjms": {
"defaultMessage": "Log In"

View File

@ -5,6 +5,9 @@
"+AcVD+": {
"defaultMessage": "Ei sähköposteja, pelkästään mahtavuutta!"
},
"+sdKx8": {
"defaultMessage": "Live now"
},
"+vVZ/G": {
"defaultMessage": "Yhdistä"
},
@ -38,6 +41,9 @@
"2/2yg+": {
"defaultMessage": "Lisää"
},
"37mth/": {
"defaultMessage": "Viewers"
},
"3HwrQo": {
"defaultMessage": "Zap!"
},
@ -50,6 +56,9 @@
"47FYwb": {
"defaultMessage": "Peruuta"
},
"4iBdw1": {
"defaultMessage": "Raid"
},
"4l69eO": {
"defaultMessage": "Hmm, lightning-oitteesi näyttää väärältä"
},
@ -68,6 +77,12 @@
"5kx+2v": {
"defaultMessage": "Palvelimen URL"
},
"5tM0VD": {
"defaultMessage": "Stream Started"
},
"69hmpj": {
"defaultMessage": "Raid from {name}"
},
"6Z2pvJ": {
"defaultMessage": "Streamaustarjoajat"
},
@ -89,9 +104,6 @@
"9a9+ww": {
"defaultMessage": "Otsikko"
},
"AIHaPH": {
"defaultMessage": "{person} zappasi {amount} satsia"
},
"Atr2p4": {
"defaultMessage": "NSFW-sisältöä"
},
@ -188,6 +200,9 @@
"LknBsU": {
"defaultMessage": "Streamin avain"
},
"MTHO1W": {
"defaultMessage": "Start Raid"
},
"My6HwN": {
"defaultMessage": "Ok, se on turvassa"
},
@ -230,12 +245,18 @@
"RJOmzk": {
"defaultMessage": "Olen lukenut ja hyväksynyt {provider}:n {terms}."
},
"RS6smY": {
"defaultMessage": "Raid Message"
},
"RXQdxR": {
"defaultMessage": "Kirjaudu sisään kirjoittaaksesi viestejä!"
},
"RrCui3": {
"defaultMessage": "Yhteenveto"
},
"RtYNX5": {
"defaultMessage": "Chat Users"
},
"TP/cMX": {
"defaultMessage": "Päättynyt"
},
@ -276,9 +297,18 @@
"ZmqxZs": {
"defaultMessage": "Voit muuttaa tätä myöhemmin"
},
"Zse7yG": {
"defaultMessage": "Raid target"
},
"acrOoz": {
"defaultMessage": "Jatka"
},
"aqjZxs": {
"defaultMessage": "Raid!"
},
"bfvyfs": {
"defaultMessage": "Anon"
},
"cPIKU2": {
"defaultMessage": "Seuraa"
},
@ -333,9 +363,18 @@
"izWS4J": {
"defaultMessage": "Älä seuraa"
},
"j/jueq": {
"defaultMessage": "Raiding {name}"
},
"jctiUc": {
"defaultMessage": "Highest Viewers"
},
"jgOqxt": {
"defaultMessage": "Widgets"
},
"jkAQj5": {
"defaultMessage": "Stream Ended"
},
"jr4+vD": {
"defaultMessage": "Markdown"
},
@ -354,6 +393,9 @@
"ljmS5P": {
"defaultMessage": "Loppupiste"
},
"miQKuZ": {
"defaultMessage": "Stream Time"
},
"mnJYBQ": {
"defaultMessage": "Ääni"
},
@ -378,8 +420,8 @@
"oZrFyI": {
"defaultMessage": "Streamin tyyppi tulisi olla HLS"
},
"pO/lPX": {
"defaultMessage": "Ajoitettu {date}"
"q+zTWM": {
"defaultMessage": "<s>{person}</s> zapped <s>{amount}</s> sats"
},
"r2Jjms": {
"defaultMessage": "Kirjaudu sisään"

View File

@ -5,6 +5,9 @@
"+AcVD+": {
"defaultMessage": "Pas d'e-mails, juste génial!"
},
"+sdKx8": {
"defaultMessage": "Live now"
},
"+vVZ/G": {
"defaultMessage": "Se connecter"
},
@ -38,6 +41,9 @@
"2/2yg+": {
"defaultMessage": "Ajouter"
},
"37mth/": {
"defaultMessage": "Viewers"
},
"3HwrQo": {
"defaultMessage": "Zap !"
},
@ -50,6 +56,9 @@
"47FYwb": {
"defaultMessage": "Annuler"
},
"4iBdw1": {
"defaultMessage": "Raid"
},
"4l69eO": {
"defaultMessage": "Hmm, votre adresse lightning semble incorrecte"
},
@ -68,6 +77,12 @@
"5kx+2v": {
"defaultMessage": "Url du serveur"
},
"5tM0VD": {
"defaultMessage": "Stream Started"
},
"69hmpj": {
"defaultMessage": "Raid from {name}"
},
"6Z2pvJ": {
"defaultMessage": "Fournisseurs de Stream"
},
@ -89,9 +104,6 @@
"9a9+ww": {
"defaultMessage": "Titre"
},
"AIHaPH": {
"defaultMessage": "{person} a zappé {amount} sats"
},
"Atr2p4": {
"defaultMessage": "Contenu NSFW"
},
@ -188,6 +200,9 @@
"LknBsU": {
"defaultMessage": "Clé de stream"
},
"MTHO1W": {
"defaultMessage": "Start Raid"
},
"My6HwN": {
"defaultMessage": "Ok, c'est sûr"
},
@ -230,12 +245,18 @@
"RJOmzk": {
"defaultMessage": "J'ai lu et j'accepte les {terms} de {provider}."
},
"RS6smY": {
"defaultMessage": "Raid Message"
},
"RXQdxR": {
"defaultMessage": "Veuillez vous connecter pour écrire des messages !"
},
"RrCui3": {
"defaultMessage": "Résumé"
},
"RtYNX5": {
"defaultMessage": "Chat Users"
},
"TP/cMX": {
"defaultMessage": "Terminé"
},
@ -276,9 +297,18 @@
"ZmqxZs": {
"defaultMessage": "Vous pourrez modifier cela ultérieurement"
},
"Zse7yG": {
"defaultMessage": "Raid target"
},
"acrOoz": {
"defaultMessage": "Continuer"
},
"aqjZxs": {
"defaultMessage": "Raid!"
},
"bfvyfs": {
"defaultMessage": "Anon"
},
"cPIKU2": {
"defaultMessage": "Abonnements"
},
@ -333,9 +363,18 @@
"izWS4J": {
"defaultMessage": "Ne plus suivre"
},
"j/jueq": {
"defaultMessage": "Raiding {name}"
},
"jctiUc": {
"defaultMessage": "Highest Viewers"
},
"jgOqxt": {
"defaultMessage": "Widgets"
},
"jkAQj5": {
"defaultMessage": "Stream Ended"
},
"jr4+vD": {
"defaultMessage": "Markdown"
},
@ -354,6 +393,9 @@
"ljmS5P": {
"defaultMessage": "Point darrivée"
},
"miQKuZ": {
"defaultMessage": "Stream Time"
},
"mnJYBQ": {
"defaultMessage": "Voix"
},
@ -378,8 +420,8 @@
"oZrFyI": {
"defaultMessage": "Le type de stream doit être HLS"
},
"pO/lPX": {
"defaultMessage": "Prévu pour le {date}"
"q+zTWM": {
"defaultMessage": "<s>{person}</s> zapped <s>{amount}</s> sats"
},
"r2Jjms": {
"defaultMessage": "Se connecter"

View File

@ -5,6 +5,9 @@
"+AcVD+": {
"defaultMessage": "Nincs szükség E-mailre, csak élvezd!"
},
"+sdKx8": {
"defaultMessage": "Live now"
},
"+vVZ/G": {
"defaultMessage": "Csatlakozás"
},
@ -38,6 +41,9 @@
"2/2yg+": {
"defaultMessage": "Hozzáad"
},
"37mth/": {
"defaultMessage": "Viewers"
},
"3HwrQo": {
"defaultMessage": "Zap!"
},
@ -50,6 +56,9 @@
"47FYwb": {
"defaultMessage": "Mégse"
},
"4iBdw1": {
"defaultMessage": "Raid"
},
"4l69eO": {
"defaultMessage": "Hmm, a LN címed rossznak tűnik"
},
@ -68,6 +77,12 @@
"5kx+2v": {
"defaultMessage": "Kiszolgáló URL-címe"
},
"5tM0VD": {
"defaultMessage": "Stream Started"
},
"69hmpj": {
"defaultMessage": "Raid from {name}"
},
"6Z2pvJ": {
"defaultMessage": "Streamszolgáltatók"
},
@ -89,9 +104,6 @@
"9a9+ww": {
"defaultMessage": "Cím"
},
"AIHaPH": {
"defaultMessage": "{person} zap-elt {amount} sats"
},
"Atr2p4": {
"defaultMessage": "Kifogásolható tartalom"
},
@ -188,6 +200,9 @@
"LknBsU": {
"defaultMessage": "Stream kulcs"
},
"MTHO1W": {
"defaultMessage": "Start Raid"
},
"My6HwN": {
"defaultMessage": "Ok, biztonságos"
},
@ -230,12 +245,18 @@
"RJOmzk": {
"defaultMessage": "Elolvastam és egyetértek a {provider} {terms}."
},
"RS6smY": {
"defaultMessage": "Raid Message"
},
"RXQdxR": {
"defaultMessage": "Üzenetek írásához kérjük jelentkezz be!"
},
"RrCui3": {
"defaultMessage": "Összegzés"
},
"RtYNX5": {
"defaultMessage": "Chat Users"
},
"TP/cMX": {
"defaultMessage": "Befejezve"
},
@ -276,9 +297,18 @@
"ZmqxZs": {
"defaultMessage": "Ezt később megváltoztathatod"
},
"Zse7yG": {
"defaultMessage": "Raid target"
},
"acrOoz": {
"defaultMessage": "Folytatás"
},
"aqjZxs": {
"defaultMessage": "Raid!"
},
"bfvyfs": {
"defaultMessage": "Anon"
},
"cPIKU2": {
"defaultMessage": "Követek"
},
@ -333,9 +363,18 @@
"izWS4J": {
"defaultMessage": "Követés visszavonása"
},
"j/jueq": {
"defaultMessage": "Raiding {name}"
},
"jctiUc": {
"defaultMessage": "Highest Viewers"
},
"jgOqxt": {
"defaultMessage": "Widgets"
},
"jkAQj5": {
"defaultMessage": "Stream Ended"
},
"jr4+vD": {
"defaultMessage": "Árleszállítás"
},
@ -354,6 +393,9 @@
"ljmS5P": {
"defaultMessage": "Végpont"
},
"miQKuZ": {
"defaultMessage": "Stream Time"
},
"mnJYBQ": {
"defaultMessage": "Hang"
},
@ -378,8 +420,8 @@
"oZrFyI": {
"defaultMessage": "A stream típusának HLS-nek kell lennie"
},
"pO/lPX": {
"defaultMessage": "Ütemezett: {date}"
"q+zTWM": {
"defaultMessage": "<s>{person}</s> zapped <s>{amount}</s> sats"
},
"r2Jjms": {
"defaultMessage": "Bejelentkezés"

View File

@ -5,6 +5,9 @@
"+AcVD+": {
"defaultMessage": "Niente emails, solo bellezza!"
},
"+sdKx8": {
"defaultMessage": "Live now"
},
"+vVZ/G": {
"defaultMessage": "Connetti"
},
@ -38,6 +41,9 @@
"2/2yg+": {
"defaultMessage": "Aggiungi"
},
"37mth/": {
"defaultMessage": "Viewers"
},
"3HwrQo": {
"defaultMessage": "Zap!"
},
@ -50,6 +56,9 @@
"47FYwb": {
"defaultMessage": "Elimina"
},
"4iBdw1": {
"defaultMessage": "Raid"
},
"4l69eO": {
"defaultMessage": "Hmm, il tuo indirizzo lightning sembra non essere corretto"
},
@ -68,6 +77,12 @@
"5kx+2v": {
"defaultMessage": "Url del server"
},
"5tM0VD": {
"defaultMessage": "Stream Started"
},
"69hmpj": {
"defaultMessage": "Raid from {name}"
},
"6Z2pvJ": {
"defaultMessage": "Stream Providers"
},
@ -89,9 +104,6 @@
"9a9+ww": {
"defaultMessage": "Titolo"
},
"AIHaPH": {
"defaultMessage": "{person} ha effettuato uno zap di {amount} sats"
},
"Atr2p4": {
"defaultMessage": "Contenuto NSFW"
},
@ -188,6 +200,9 @@
"LknBsU": {
"defaultMessage": "Chiave di flusso"
},
"MTHO1W": {
"defaultMessage": "Start Raid"
},
"My6HwN": {
"defaultMessage": "Ok, è sicuro"
},
@ -230,12 +245,18 @@
"RJOmzk": {
"defaultMessage": "Ho letto e sono d'accordo con {provider}''s {terms}."
},
"RS6smY": {
"defaultMessage": "Raid Message"
},
"RXQdxR": {
"defaultMessage": "Effettuare il login per scrivere i messaggi!"
},
"RrCui3": {
"defaultMessage": "Sintesi"
},
"RtYNX5": {
"defaultMessage": "Chat Users"
},
"TP/cMX": {
"defaultMessage": "Terminato"
},
@ -276,9 +297,18 @@
"ZmqxZs": {
"defaultMessage": "È possibile modificarlo in seguito"
},
"Zse7yG": {
"defaultMessage": "Raid target"
},
"acrOoz": {
"defaultMessage": "Continua"
},
"aqjZxs": {
"defaultMessage": "Raid!"
},
"bfvyfs": {
"defaultMessage": "Anon"
},
"cPIKU2": {
"defaultMessage": "Di seguito"
},
@ -333,9 +363,18 @@
"izWS4J": {
"defaultMessage": "Non seguire"
},
"j/jueq": {
"defaultMessage": "Raiding {name}"
},
"jctiUc": {
"defaultMessage": "Highest Viewers"
},
"jgOqxt": {
"defaultMessage": "Widgets"
},
"jkAQj5": {
"defaultMessage": "Stream Ended"
},
"jr4+vD": {
"defaultMessage": "Markdown"
},
@ -354,6 +393,9 @@
"ljmS5P": {
"defaultMessage": "Punto finale"
},
"miQKuZ": {
"defaultMessage": "Stream Time"
},
"mnJYBQ": {
"defaultMessage": "Voce"
},
@ -378,8 +420,8 @@
"oZrFyI": {
"defaultMessage": "Il tipo di flusso dovrebbe essere HLS"
},
"pO/lPX": {
"defaultMessage": "Programmato per {date}"
"q+zTWM": {
"defaultMessage": "<s>{person}</s> zapped <s>{amount}</s> sats"
},
"r2Jjms": {
"defaultMessage": "Accedi"

View File

@ -5,6 +5,9 @@
"+AcVD+": {
"defaultMessage": "メールもない!"
},
"+sdKx8": {
"defaultMessage": "Live now"
},
"+vVZ/G": {
"defaultMessage": "接続"
},
@ -38,6 +41,9 @@
"2/2yg+": {
"defaultMessage": "追加"
},
"37mth/": {
"defaultMessage": "Viewers"
},
"3HwrQo": {
"defaultMessage": "ザップ!"
},
@ -50,6 +56,9 @@
"47FYwb": {
"defaultMessage": "キャンセル"
},
"4iBdw1": {
"defaultMessage": "Raid"
},
"4l69eO": {
"defaultMessage": "うーん、あなたのライトニングアドレスは間違っているようだ"
},
@ -68,6 +77,12 @@
"5kx+2v": {
"defaultMessage": "サーバー URL"
},
"5tM0VD": {
"defaultMessage": "Stream Started"
},
"69hmpj": {
"defaultMessage": "Raid from {name}"
},
"6Z2pvJ": {
"defaultMessage": "配信の提供元"
},
@ -89,9 +104,6 @@
"9a9+ww": {
"defaultMessage": "タイトル"
},
"AIHaPH": {
"defaultMessage": "{person} が {amount} sats をザップしました"
},
"Atr2p4": {
"defaultMessage": "不適切な内容"
},
@ -188,6 +200,9 @@
"LknBsU": {
"defaultMessage": "配信キー"
},
"MTHO1W": {
"defaultMessage": "Start Raid"
},
"My6HwN": {
"defaultMessage": "はい、大丈夫です"
},
@ -230,12 +245,18 @@
"RJOmzk": {
"defaultMessage": "{provider} の {terms} を読み、同意します。"
},
"RS6smY": {
"defaultMessage": "Raid Message"
},
"RXQdxR": {
"defaultMessage": "メッセージを書き込むにはログインしてください!"
},
"RrCui3": {
"defaultMessage": "概要"
},
"RtYNX5": {
"defaultMessage": "Chat Users"
},
"TP/cMX": {
"defaultMessage": "終了しました"
},
@ -276,9 +297,18 @@
"ZmqxZs": {
"defaultMessage": "これはあとで変更することができます"
},
"Zse7yG": {
"defaultMessage": "Raid target"
},
"acrOoz": {
"defaultMessage": "続ける"
},
"aqjZxs": {
"defaultMessage": "Raid!"
},
"bfvyfs": {
"defaultMessage": "Anon"
},
"cPIKU2": {
"defaultMessage": "フォロー中"
},
@ -333,9 +363,18 @@
"izWS4J": {
"defaultMessage": "フォロー解除"
},
"j/jueq": {
"defaultMessage": "Raiding {name}"
},
"jctiUc": {
"defaultMessage": "Highest Viewers"
},
"jgOqxt": {
"defaultMessage": "Widgets"
},
"jkAQj5": {
"defaultMessage": "Stream Ended"
},
"jr4+vD": {
"defaultMessage": "マークダウン"
},
@ -354,6 +393,9 @@
"ljmS5P": {
"defaultMessage": "エンドポイント"
},
"miQKuZ": {
"defaultMessage": "Stream Time"
},
"mnJYBQ": {
"defaultMessage": "声"
},
@ -378,8 +420,8 @@
"oZrFyI": {
"defaultMessage": "配信タイプはHLSでなければなりません"
},
"pO/lPX": {
"defaultMessage": "配信予定:{date}"
"q+zTWM": {
"defaultMessage": "<s>{person}</s> zapped <s>{amount}</s> sats"
},
"r2Jjms": {
"defaultMessage": "ログイン"

View File

@ -5,6 +5,9 @@
"+AcVD+": {
"defaultMessage": "Geen e-mails, gewoon geweldig!"
},
"+sdKx8": {
"defaultMessage": "Live now"
},
"+vVZ/G": {
"defaultMessage": "Verbinden"
},
@ -38,6 +41,9 @@
"2/2yg+": {
"defaultMessage": "Toevoegen"
},
"37mth/": {
"defaultMessage": "Viewers"
},
"3HwrQo": {
"defaultMessage": "Zap!"
},
@ -50,6 +56,9 @@
"47FYwb": {
"defaultMessage": "Annuleer"
},
"4iBdw1": {
"defaultMessage": "Raid"
},
"4l69eO": {
"defaultMessage": "Hmm, je bliksemadres ziet er verkeerd uit"
},
@ -68,6 +77,12 @@
"5kx+2v": {
"defaultMessage": "Url van server"
},
"5tM0VD": {
"defaultMessage": "Stream Started"
},
"69hmpj": {
"defaultMessage": "Raid from {name}"
},
"6Z2pvJ": {
"defaultMessage": "Stream Providers"
},
@ -89,9 +104,6 @@
"9a9+ww": {
"defaultMessage": "Titel"
},
"AIHaPH": {
"defaultMessage": "{person} zapped {amount} sats"
},
"Atr2p4": {
"defaultMessage": "NSFW-inhoud"
},
@ -188,6 +200,9 @@
"LknBsU": {
"defaultMessage": "Stream Sleutel"
},
"MTHO1W": {
"defaultMessage": "Start Raid"
},
"My6HwN": {
"defaultMessage": "Oké, het is veilig"
},
@ -230,12 +245,18 @@
"RJOmzk": {
"defaultMessage": "Ik heb {provider}'s {terms} gelezen en ga hiermee akkoord."
},
"RS6smY": {
"defaultMessage": "Raid Message"
},
"RXQdxR": {
"defaultMessage": "Log in om berichten te schrijven!"
},
"RrCui3": {
"defaultMessage": "Overzicht"
},
"RtYNX5": {
"defaultMessage": "Chat Users"
},
"TP/cMX": {
"defaultMessage": "Beëindigd"
},
@ -276,9 +297,18 @@
"ZmqxZs": {
"defaultMessage": "U kunt dit later wijzigen"
},
"Zse7yG": {
"defaultMessage": "Raid target"
},
"acrOoz": {
"defaultMessage": "Hervatten"
},
"aqjZxs": {
"defaultMessage": "Raid!"
},
"bfvyfs": {
"defaultMessage": "Anon"
},
"cPIKU2": {
"defaultMessage": "Volgend"
},
@ -333,9 +363,18 @@
"izWS4J": {
"defaultMessage": "Ontvolgen"
},
"j/jueq": {
"defaultMessage": "Raiding {name}"
},
"jctiUc": {
"defaultMessage": "Highest Viewers"
},
"jgOqxt": {
"defaultMessage": "Widgets"
},
"jkAQj5": {
"defaultMessage": "Stream Ended"
},
"jr4+vD": {
"defaultMessage": "Markdown"
},
@ -354,6 +393,9 @@
"ljmS5P": {
"defaultMessage": "Eindpunt"
},
"miQKuZ": {
"defaultMessage": "Stream Time"
},
"mnJYBQ": {
"defaultMessage": "Stem"
},
@ -378,8 +420,8 @@
"oZrFyI": {
"defaultMessage": "Stream type moet HLS zijn"
},
"pO/lPX": {
"defaultMessage": "Gepland voor {date}"
"q+zTWM": {
"defaultMessage": "<s>{person}</s> zapped <s>{amount}</s> sats"
},
"r2Jjms": {
"defaultMessage": "Aanmelden"

View File

@ -5,6 +5,9 @@
"+AcVD+": {
"defaultMessage": "Sem e-mails, só coisas incríveis!"
},
"+sdKx8": {
"defaultMessage": "Live now"
},
"+vVZ/G": {
"defaultMessage": "Conectar"
},
@ -38,6 +41,9 @@
"2/2yg+": {
"defaultMessage": "Adicionar"
},
"37mth/": {
"defaultMessage": "Viewers"
},
"3HwrQo": {
"defaultMessage": "Zap!"
},
@ -50,6 +56,9 @@
"47FYwb": {
"defaultMessage": "Cancelar"
},
"4iBdw1": {
"defaultMessage": "Raid"
},
"4l69eO": {
"defaultMessage": "Hmm, seu endereço lightning parece errado"
},
@ -68,6 +77,12 @@
"5kx+2v": {
"defaultMessage": "Url do Servidor"
},
"5tM0VD": {
"defaultMessage": "Stream Started"
},
"69hmpj": {
"defaultMessage": "Raid from {name}"
},
"6Z2pvJ": {
"defaultMessage": "Provedores de Transmissão"
},
@ -89,9 +104,6 @@
"9a9+ww": {
"defaultMessage": "Título"
},
"AIHaPH": {
"defaultMessage": "{person} zapeou {amount} sats"
},
"Atr2p4": {
"defaultMessage": "Conteúdo NSFW"
},
@ -188,6 +200,9 @@
"LknBsU": {
"defaultMessage": "Chave de Transmissão"
},
"MTHO1W": {
"defaultMessage": "Start Raid"
},
"My6HwN": {
"defaultMessage": "Ok, está seguro"
},
@ -230,12 +245,18 @@
"RJOmzk": {
"defaultMessage": "Eu li e concordo com {provider} {terms}."
},
"RS6smY": {
"defaultMessage": "Raid Message"
},
"RXQdxR": {
"defaultMessage": "Por favor, faça login para escrever mensagens!"
},
"RrCui3": {
"defaultMessage": "Resumo"
},
"RtYNX5": {
"defaultMessage": "Chat Users"
},
"TP/cMX": {
"defaultMessage": "Encerrado"
},
@ -276,9 +297,18 @@
"ZmqxZs": {
"defaultMessage": "Você pode alterar isto mais tarde"
},
"Zse7yG": {
"defaultMessage": "Raid target"
},
"acrOoz": {
"defaultMessage": "Continuar"
},
"aqjZxs": {
"defaultMessage": "Raid!"
},
"bfvyfs": {
"defaultMessage": "Anon"
},
"cPIKU2": {
"defaultMessage": "Seguindo"
},
@ -333,9 +363,18 @@
"izWS4J": {
"defaultMessage": "Deixar de seguir"
},
"j/jueq": {
"defaultMessage": "Raiding {name}"
},
"jctiUc": {
"defaultMessage": "Highest Viewers"
},
"jgOqxt": {
"defaultMessage": "Widgets"
},
"jkAQj5": {
"defaultMessage": "Stream Ended"
},
"jr4+vD": {
"defaultMessage": "Formatação (markdown)"
},
@ -354,6 +393,9 @@
"ljmS5P": {
"defaultMessage": "Ponto final"
},
"miQKuZ": {
"defaultMessage": "Stream Time"
},
"mnJYBQ": {
"defaultMessage": "Voz"
},
@ -378,8 +420,8 @@
"oZrFyI": {
"defaultMessage": "O tipo de transmissão deve ser HLS"
},
"pO/lPX": {
"defaultMessage": "Agendado para {date}"
"q+zTWM": {
"defaultMessage": "<s>{person}</s> zapped <s>{amount}</s> sats"
},
"r2Jjms": {
"defaultMessage": "Entrar"

View File

@ -5,6 +5,9 @@
"+AcVD+": {
"defaultMessage": "В ящике нет ни одного письма, только величие!"
},
"+sdKx8": {
"defaultMessage": "Live now"
},
"+vVZ/G": {
"defaultMessage": "Подключить"
},
@ -38,6 +41,9 @@
"2/2yg+": {
"defaultMessage": "Добавить"
},
"37mth/": {
"defaultMessage": "Viewers"
},
"3HwrQo": {
"defaultMessage": "Зап!"
},
@ -50,6 +56,9 @@
"47FYwb": {
"defaultMessage": "Отменить"
},
"4iBdw1": {
"defaultMessage": "Raid"
},
"4l69eO": {
"defaultMessage": "Хм, похоже вы ввели неверный лайтнинг-адрес"
},
@ -68,6 +77,12 @@
"5kx+2v": {
"defaultMessage": "URL сервера"
},
"5tM0VD": {
"defaultMessage": "Stream Started"
},
"69hmpj": {
"defaultMessage": "Raid from {name}"
},
"6Z2pvJ": {
"defaultMessage": "Стрим-провайдеры"
},
@ -89,9 +104,6 @@
"9a9+ww": {
"defaultMessage": "Название"
},
"AIHaPH": {
"defaultMessage": "{person} запнул {amount} сат"
},
"Atr2p4": {
"defaultMessage": "NSFW контент"
},
@ -188,6 +200,9 @@
"LknBsU": {
"defaultMessage": "Ключ стрима"
},
"MTHO1W": {
"defaultMessage": "Start Raid"
},
"My6HwN": {
"defaultMessage": "Ок, безопасно"
},
@ -230,12 +245,18 @@
"RJOmzk": {
"defaultMessage": "Я прочитал и согласен с {provider} {terms}."
},
"RS6smY": {
"defaultMessage": "Raid Message"
},
"RXQdxR": {
"defaultMessage": "Пожалуйста, войдите, чтобы писать сообщения!"
},
"RrCui3": {
"defaultMessage": "Краткое описание"
},
"RtYNX5": {
"defaultMessage": "Chat Users"
},
"TP/cMX": {
"defaultMessage": "Завершено"
},
@ -276,9 +297,18 @@
"ZmqxZs": {
"defaultMessage": "Вы сможете изменить эту настройку позже"
},
"Zse7yG": {
"defaultMessage": "Raid target"
},
"acrOoz": {
"defaultMessage": "Продолжить"
},
"aqjZxs": {
"defaultMessage": "Raid!"
},
"bfvyfs": {
"defaultMessage": "Anon"
},
"cPIKU2": {
"defaultMessage": "Подписки"
},
@ -333,9 +363,18 @@
"izWS4J": {
"defaultMessage": "Отписаться"
},
"j/jueq": {
"defaultMessage": "Raiding {name}"
},
"jctiUc": {
"defaultMessage": "Highest Viewers"
},
"jgOqxt": {
"defaultMessage": "Widgets"
},
"jkAQj5": {
"defaultMessage": "Stream Ended"
},
"jr4+vD": {
"defaultMessage": "Markdown"
},
@ -354,6 +393,9 @@
"ljmS5P": {
"defaultMessage": "Endpoint"
},
"miQKuZ": {
"defaultMessage": "Stream Time"
},
"mnJYBQ": {
"defaultMessage": "Голос"
},
@ -378,8 +420,8 @@
"oZrFyI": {
"defaultMessage": "Тип потока должен быть HLS"
},
"pO/lPX": {
"defaultMessage": "Запланировано на {date}"
"q+zTWM": {
"defaultMessage": "<s>{person}</s> zapped <s>{amount}</s> sats"
},
"r2Jjms": {
"defaultMessage": "Войти"

View File

@ -5,6 +5,9 @@
"+AcVD+": {
"defaultMessage": "Inga e-post, bara fantastiskt!"
},
"+sdKx8": {
"defaultMessage": "Live now"
},
"+vVZ/G": {
"defaultMessage": "Anslut"
},
@ -38,6 +41,9 @@
"2/2yg+": {
"defaultMessage": "Lägg till"
},
"37mth/": {
"defaultMessage": "Viewers"
},
"3HwrQo": {
"defaultMessage": "Zap!"
},
@ -50,6 +56,9 @@
"47FYwb": {
"defaultMessage": "Avbryt"
},
"4iBdw1": {
"defaultMessage": "Raid"
},
"4l69eO": {
"defaultMessage": "Hmm, din lightning adress ser fel ut"
},
@ -68,6 +77,12 @@
"5kx+2v": {
"defaultMessage": "Server Url"
},
"5tM0VD": {
"defaultMessage": "Stream Started"
},
"69hmpj": {
"defaultMessage": "Raid from {name}"
},
"6Z2pvJ": {
"defaultMessage": "Stream Leverantörer"
},
@ -89,9 +104,6 @@
"9a9+ww": {
"defaultMessage": "Titel"
},
"AIHaPH": {
"defaultMessage": "{person} zapped {amount} sats"
},
"Atr2p4": {
"defaultMessage": "NSFW-innehåll"
},
@ -188,6 +200,9 @@
"LknBsU": {
"defaultMessage": "Stream nyckel"
},
"MTHO1W": {
"defaultMessage": "Start Raid"
},
"My6HwN": {
"defaultMessage": "Ok, det är säkert"
},
@ -230,12 +245,18 @@
"RJOmzk": {
"defaultMessage": "Jag har läst och godkänner {provider}'s {terms}."
},
"RS6smY": {
"defaultMessage": "Raid Message"
},
"RXQdxR": {
"defaultMessage": "Vänligen logga in för att skriva meddelanden!"
},
"RrCui3": {
"defaultMessage": "Summering"
},
"RtYNX5": {
"defaultMessage": "Chat Users"
},
"TP/cMX": {
"defaultMessage": "Avslutade"
},
@ -276,9 +297,18 @@
"ZmqxZs": {
"defaultMessage": "Du kan ändra detta senare"
},
"Zse7yG": {
"defaultMessage": "Raid target"
},
"acrOoz": {
"defaultMessage": "Fortsätt"
},
"aqjZxs": {
"defaultMessage": "Raid!"
},
"bfvyfs": {
"defaultMessage": "Anon"
},
"cPIKU2": {
"defaultMessage": "Följer"
},
@ -333,9 +363,18 @@
"izWS4J": {
"defaultMessage": "Sluta följa"
},
"j/jueq": {
"defaultMessage": "Raiding {name}"
},
"jctiUc": {
"defaultMessage": "Highest Viewers"
},
"jgOqxt": {
"defaultMessage": "Widgets"
},
"jkAQj5": {
"defaultMessage": "Stream Ended"
},
"jr4+vD": {
"defaultMessage": "Markdown"
},
@ -354,6 +393,9 @@
"ljmS5P": {
"defaultMessage": "Slutpunkt"
},
"miQKuZ": {
"defaultMessage": "Stream Time"
},
"mnJYBQ": {
"defaultMessage": "Röst"
},
@ -378,8 +420,8 @@
"oZrFyI": {
"defaultMessage": "Stream typ bör vara HLS"
},
"pO/lPX": {
"defaultMessage": "Schemalagd för {date}"
"q+zTWM": {
"defaultMessage": "<s>{person}</s> zapped <s>{amount}</s> sats"
},
"r2Jjms": {
"defaultMessage": "Logga In"

View File

@ -5,6 +5,9 @@
"+AcVD+": {
"defaultMessage": "Hakuna barua pepe, uzuri tu!"
},
"+sdKx8": {
"defaultMessage": "Live now"
},
"+vVZ/G": {
"defaultMessage": "Unganisha"
},
@ -38,6 +41,9 @@
"2/2yg+": {
"defaultMessage": "Ongeza"
},
"37mth/": {
"defaultMessage": "Viewers"
},
"3HwrQo": {
"defaultMessage": "Zap!"
},
@ -50,6 +56,9 @@
"47FYwb": {
"defaultMessage": "Ghairi"
},
"4iBdw1": {
"defaultMessage": "Raid"
},
"4l69eO": {
"defaultMessage": "Hmm, anwani yako ya umeme inaonekana si sahihi"
},
@ -68,6 +77,12 @@
"5kx+2v": {
"defaultMessage": "Url ya seva"
},
"5tM0VD": {
"defaultMessage": "Stream Started"
},
"69hmpj": {
"defaultMessage": "Raid from {name}"
},
"6Z2pvJ": {
"defaultMessage": "Watoa huduma za mkondo"
},
@ -89,9 +104,6 @@
"9a9+ww": {
"defaultMessage": "Kichwa"
},
"AIHaPH": {
"defaultMessage": "{person} amezap {amount} sats"
},
"Atr2p4": {
"defaultMessage": "Maudhui ya NSFW"
},
@ -188,6 +200,9 @@
"LknBsU": {
"defaultMessage": "Ufunguo wa Kutiririsha"
},
"MTHO1W": {
"defaultMessage": "Start Raid"
},
"My6HwN": {
"defaultMessage": "Sawa, ni salama"
},
@ -230,12 +245,18 @@
"RJOmzk": {
"defaultMessage": "Nimesoma na kukubaliana na {terms} ya {provider}."
},
"RS6smY": {
"defaultMessage": "Raid Message"
},
"RXQdxR": {
"defaultMessage": "Tafadhali ingia ili kuandika ujumbe!"
},
"RrCui3": {
"defaultMessage": "Muhtasari"
},
"RtYNX5": {
"defaultMessage": "Chat Users"
},
"TP/cMX": {
"defaultMessage": "Imeisha"
},
@ -276,9 +297,18 @@
"ZmqxZs": {
"defaultMessage": "Unaweza kubadilisha hii baadaye"
},
"Zse7yG": {
"defaultMessage": "Raid target"
},
"acrOoz": {
"defaultMessage": "Endelea"
},
"aqjZxs": {
"defaultMessage": "Raid!"
},
"bfvyfs": {
"defaultMessage": "Anon"
},
"cPIKU2": {
"defaultMessage": "Kufuatia"
},
@ -333,9 +363,18 @@
"izWS4J": {
"defaultMessage": "Acha kufuata"
},
"j/jueq": {
"defaultMessage": "Raiding {name}"
},
"jctiUc": {
"defaultMessage": "Highest Viewers"
},
"jgOqxt": {
"defaultMessage": "Widgets"
},
"jkAQj5": {
"defaultMessage": "Stream Ended"
},
"jr4+vD": {
"defaultMessage": "Alama"
},
@ -354,6 +393,9 @@
"ljmS5P": {
"defaultMessage": "Mwisho"
},
"miQKuZ": {
"defaultMessage": "Stream Time"
},
"mnJYBQ": {
"defaultMessage": "Sauti"
},
@ -378,8 +420,8 @@
"oZrFyI": {
"defaultMessage": "Aina ya mtiririko inapaswa kuwa HLS"
},
"pO/lPX": {
"defaultMessage": "Imeratibiwa tarehe {date}"
"q+zTWM": {
"defaultMessage": "<s>{person}</s> zapped <s>{amount}</s> sats"
},
"r2Jjms": {
"defaultMessage": "Ingia"

View File

@ -5,6 +5,9 @@
"+AcVD+": {
"defaultMessage": "No emails, just awesomeness!"
},
"+sdKx8": {
"defaultMessage": "Live now"
},
"+vVZ/G": {
"defaultMessage": "เชื่อมต่อ"
},
@ -38,6 +41,9 @@
"2/2yg+": {
"defaultMessage": "เพิ่ม"
},
"37mth/": {
"defaultMessage": "Viewers"
},
"3HwrQo": {
"defaultMessage": "Zaps!"
},
@ -50,6 +56,9 @@
"47FYwb": {
"defaultMessage": "ยกเลิก"
},
"4iBdw1": {
"defaultMessage": "Raid"
},
"4l69eO": {
"defaultMessage": "Hmm, your lightning address looks wrong"
},
@ -68,6 +77,12 @@
"5kx+2v": {
"defaultMessage": "ที่อยู่ของเซิร์ฟเวอร์"
},
"5tM0VD": {
"defaultMessage": "Stream Started"
},
"69hmpj": {
"defaultMessage": "Raid from {name}"
},
"6Z2pvJ": {
"defaultMessage": "เริ่มถ่ายทอดสด"
},
@ -89,9 +104,6 @@
"9a9+ww": {
"defaultMessage": "หัวข้อ"
},
"AIHaPH": {
"defaultMessage": "{person} ส่ง Zap ให้ {amount} ⚡"
},
"Atr2p4": {
"defaultMessage": "เนื้อหาที่ไม่เหมาะสม"
},
@ -188,6 +200,9 @@
"LknBsU": {
"defaultMessage": "Stream Key"
},
"MTHO1W": {
"defaultMessage": "Start Raid"
},
"My6HwN": {
"defaultMessage": "ฉันจัดเก็บรหัสไว้ดีแล้ว"
},
@ -230,12 +245,18 @@
"RJOmzk": {
"defaultMessage": "ฉันได้อ่าน {terms} เรียบร้อยและ เห็นด้วยกับ {provider} ในข้อกำหนดและเงื่อนไขการใช้เว็บไซต์หรือการใช้แอปพลิเคชัน"
},
"RS6smY": {
"defaultMessage": "Raid Message"
},
"RXQdxR": {
"defaultMessage": "โปรดเข้าสู่ระบบ เพื่อร่วมส่งข้อความ"
},
"RrCui3": {
"defaultMessage": "ภาพรวม"
},
"RtYNX5": {
"defaultMessage": "Chat Users"
},
"TP/cMX": {
"defaultMessage": "Ended"
},
@ -276,9 +297,18 @@
"ZmqxZs": {
"defaultMessage": "คุณยังสามารถเปลี่ยนได้ในภายหลัง"
},
"Zse7yG": {
"defaultMessage": "Raid target"
},
"acrOoz": {
"defaultMessage": "ดำเนินการต่อ"
},
"aqjZxs": {
"defaultMessage": "Raid!"
},
"bfvyfs": {
"defaultMessage": "Anon"
},
"cPIKU2": {
"defaultMessage": "Following"
},
@ -333,9 +363,18 @@
"izWS4J": {
"defaultMessage": "เลิกติดตาม"
},
"j/jueq": {
"defaultMessage": "Raiding {name}"
},
"jctiUc": {
"defaultMessage": "Highest Viewers"
},
"jgOqxt": {
"defaultMessage": "Widgets"
},
"jkAQj5": {
"defaultMessage": "Stream Ended"
},
"jr4+vD": {
"defaultMessage": "Markdown"
},
@ -354,6 +393,9 @@
"ljmS5P": {
"defaultMessage": "Endpoint"
},
"miQKuZ": {
"defaultMessage": "Stream Time"
},
"mnJYBQ": {
"defaultMessage": "Voice"
},
@ -378,8 +420,8 @@
"oZrFyI": {
"defaultMessage": "Stream type should be HLS"
},
"pO/lPX": {
"defaultMessage": "จะมีการถ่ายทอดสดเวลา {date}"
"q+zTWM": {
"defaultMessage": "<s>{person}</s> zapped <s>{amount}</s> sats"
},
"r2Jjms": {
"defaultMessage": "Log In"

View File

@ -5,6 +5,9 @@
"+AcVD+": {
"defaultMessage": "没有电子邮件,只是最棒!"
},
"+sdKx8": {
"defaultMessage": "Live now"
},
"+vVZ/G": {
"defaultMessage": "连接"
},
@ -38,6 +41,9 @@
"2/2yg+": {
"defaultMessage": "添加"
},
"37mth/": {
"defaultMessage": "Viewers"
},
"3HwrQo": {
"defaultMessage": "打闪!"
},
@ -50,6 +56,9 @@
"47FYwb": {
"defaultMessage": "取消"
},
"4iBdw1": {
"defaultMessage": "Raid"
},
"4l69eO": {
"defaultMessage": "嗯,看起来你的闪电地址不对"
},
@ -68,6 +77,12 @@
"5kx+2v": {
"defaultMessage": "服务器 URL"
},
"5tM0VD": {
"defaultMessage": "Stream Started"
},
"69hmpj": {
"defaultMessage": "Raid from {name}"
},
"6Z2pvJ": {
"defaultMessage": "直播流來源"
},
@ -89,9 +104,6 @@
"9a9+ww": {
"defaultMessage": "标题"
},
"AIHaPH": {
"defaultMessage": "{person}已打闪{amount}聪"
},
"Atr2p4": {
"defaultMessage": "NSFW 内容"
},
@ -188,6 +200,9 @@
"LknBsU": {
"defaultMessage": "直播流密钥"
},
"MTHO1W": {
"defaultMessage": "Start Raid"
},
"My6HwN": {
"defaultMessage": "好,是安全的"
},
@ -230,12 +245,18 @@
"RJOmzk": {
"defaultMessage": "我已阅读并同意{provider}的{terms}。"
},
"RS6smY": {
"defaultMessage": "Raid Message"
},
"RXQdxR": {
"defaultMessage": "请登录以撰写消息!"
},
"RrCui3": {
"defaultMessage": "概要"
},
"RtYNX5": {
"defaultMessage": "Chat Users"
},
"TP/cMX": {
"defaultMessage": "已结束"
},
@ -276,9 +297,18 @@
"ZmqxZs": {
"defaultMessage": "你可以稍后更改它"
},
"Zse7yG": {
"defaultMessage": "Raid target"
},
"acrOoz": {
"defaultMessage": "继续"
},
"aqjZxs": {
"defaultMessage": "Raid!"
},
"bfvyfs": {
"defaultMessage": "Anon"
},
"cPIKU2": {
"defaultMessage": "已关注"
},
@ -333,9 +363,18 @@
"izWS4J": {
"defaultMessage": "取消关注"
},
"j/jueq": {
"defaultMessage": "Raiding {name}"
},
"jctiUc": {
"defaultMessage": "Highest Viewers"
},
"jgOqxt": {
"defaultMessage": "Widgets"
},
"jkAQj5": {
"defaultMessage": "Stream Ended"
},
"jr4+vD": {
"defaultMessage": "Markdown"
},
@ -354,6 +393,9 @@
"ljmS5P": {
"defaultMessage": "端点"
},
"miQKuZ": {
"defaultMessage": "Stream Time"
},
"mnJYBQ": {
"defaultMessage": "语音"
},
@ -378,8 +420,8 @@
"oZrFyI": {
"defaultMessage": "直播流类型应该是 HLS"
},
"pO/lPX": {
"defaultMessage": "预定于{date}"
"q+zTWM": {
"defaultMessage": "<s>{person}</s> zapped <s>{amount}</s> sats"
},
"r2Jjms": {
"defaultMessage": "登录"

View File

@ -5,6 +5,9 @@
"+AcVD+": {
"defaultMessage": "沒有電子郵件,只有最棒!"
},
"+sdKx8": {
"defaultMessage": "Live now"
},
"+vVZ/G": {
"defaultMessage": "連接"
},
@ -38,6 +41,9 @@
"2/2yg+": {
"defaultMessage": "添加"
},
"37mth/": {
"defaultMessage": "Viewers"
},
"3HwrQo": {
"defaultMessage": "打閃!"
},
@ -50,6 +56,9 @@
"47FYwb": {
"defaultMessage": "取消"
},
"4iBdw1": {
"defaultMessage": "Raid"
},
"4l69eO": {
"defaultMessage": "嗯,看起來你的閃電地址不對"
},
@ -68,6 +77,12 @@
"5kx+2v": {
"defaultMessage": "伺服器 URL"
},
"5tM0VD": {
"defaultMessage": "Stream Started"
},
"69hmpj": {
"defaultMessage": "Raid from {name}"
},
"6Z2pvJ": {
"defaultMessage": "直播流來源"
},
@ -89,9 +104,6 @@
"9a9+ww": {
"defaultMessage": "標題"
},
"AIHaPH": {
"defaultMessage": "{person}已打閃{amount}聰"
},
"Atr2p4": {
"defaultMessage": "NSFW 内容"
},
@ -188,6 +200,9 @@
"LknBsU": {
"defaultMessage": "直播流密鑰"
},
"MTHO1W": {
"defaultMessage": "Start Raid"
},
"My6HwN": {
"defaultMessage": "好,是安全的"
},
@ -230,12 +245,18 @@
"RJOmzk": {
"defaultMessage": "我已閱讀並同意{provider}的{terms}。"
},
"RS6smY": {
"defaultMessage": "Raid Message"
},
"RXQdxR": {
"defaultMessage": "請登錄以撰寫消息!"
},
"RrCui3": {
"defaultMessage": "概要"
},
"RtYNX5": {
"defaultMessage": "Chat Users"
},
"TP/cMX": {
"defaultMessage": "已結束"
},
@ -276,9 +297,18 @@
"ZmqxZs": {
"defaultMessage": "你可以稍後更改它"
},
"Zse7yG": {
"defaultMessage": "Raid target"
},
"acrOoz": {
"defaultMessage": "繼續"
},
"aqjZxs": {
"defaultMessage": "Raid!"
},
"bfvyfs": {
"defaultMessage": "Anon"
},
"cPIKU2": {
"defaultMessage": "已關注"
},
@ -333,9 +363,18 @@
"izWS4J": {
"defaultMessage": "取消關注"
},
"j/jueq": {
"defaultMessage": "Raiding {name}"
},
"jctiUc": {
"defaultMessage": "Highest Viewers"
},
"jgOqxt": {
"defaultMessage": "Widgets"
},
"jkAQj5": {
"defaultMessage": "Stream Ended"
},
"jr4+vD": {
"defaultMessage": "Markdown"
},
@ -354,6 +393,9 @@
"ljmS5P": {
"defaultMessage": "端點"
},
"miQKuZ": {
"defaultMessage": "Stream Time"
},
"mnJYBQ": {
"defaultMessage": "語音"
},
@ -378,8 +420,8 @@
"oZrFyI": {
"defaultMessage": "直播流類型應該是 HLS"
},
"pO/lPX": {
"defaultMessage": "預定於{date}"
"q+zTWM": {
"defaultMessage": "<s>{person}</s> zapped <s>{amount}</s> sats"
},
"r2Jjms": {
"defaultMessage": "登錄"

View File

@ -13,7 +13,7 @@ module.exports = {
},
animation: {
"ping-once": "ping 1s cubic-bezier(0, 0, 0.2, 1);",
flash: "pulse 0.5s 6 linear;"
flash: "pulse 0.5s 6 linear;",
},
},
},