Merge pull request #1817 from RoboSats/coordinators-rating

Coordinators ratings WIP
This commit is contained in:
KoalaSat
2025-03-26 16:57:09 +00:00
committed by GitHub
26 changed files with 222 additions and 78 deletions

View File

@ -1,4 +1,4 @@
import React, { useContext, useState } from 'react'; import React, { useContext, useEffect, useState } from 'react';
import { useTranslation, Trans } from 'react-i18next'; import { useTranslation, Trans } from 'react-i18next';
import { import {
Grid, Grid,
@ -15,19 +15,21 @@ import {
} from '@mui/material'; } from '@mui/material';
import currencies from '../../../../static/assets/currencies.json'; import currencies from '../../../../static/assets/currencies.json';
import TradeSummary from '../TradeSummary'; import TradeSummary from '../TradeSummary';
import { Favorite, RocketLaunch, ContentCopy, Refresh } from '@mui/icons-material'; import { Favorite, RocketLaunch, ContentCopy, Refresh, Info } from '@mui/icons-material';
import { LoadingButton } from '@mui/lab'; import { LoadingButton } from '@mui/lab';
import { finalizeEvent, type Event } from 'nostr-tools';
import { type Order } from '../../../models'; import { type Order } from '../../../models';
import { systemClient } from '../../../services/System'; import { systemClient } from '../../../services/System';
import { import {
FederationContext, FederationContext,
type UseFederationStoreType, type UseFederationStoreType,
} from '../../../contexts/FederationContext'; } from '../../../contexts/FederationContext';
import { type UseAppStoreType, AppContext } from '../../../contexts/AppContext';
import { GarageContext, type UseGarageStoreType } from '../../../contexts/GarageContext';
interface SuccessfulPromptProps { interface SuccessfulPromptProps {
order: Order; order: Order;
ratePlatform: (rating: number) => void; rateUserPlatform: (rating: number) => void;
onClickStartAgain: () => void; onClickStartAgain: () => void;
onClickRenew: () => void; onClickRenew: () => void;
loadingRenew: boolean; loadingRenew: boolean;
@ -35,16 +37,48 @@ interface SuccessfulPromptProps {
export const SuccessfulPrompt = ({ export const SuccessfulPrompt = ({
order, order,
ratePlatform, rateUserPlatform,
onClickStartAgain, onClickStartAgain,
onClickRenew, onClickRenew,
loadingRenew, loadingRenew,
}: SuccessfulPromptProps): JSX.Element => { }: SuccessfulPromptProps): JSX.Element => {
const { t } = useTranslation(); const { t } = useTranslation();
const currencyCode: string = currencies[`${order.currency}`]; const currencyCode: string = currencies[`${order.currency}`];
const { settings } = useContext<UseAppStoreType>(AppContext);
const { federation } = useContext<UseFederationStoreType>(FederationContext); const { federation } = useContext<UseFederationStoreType>(FederationContext);
const { garage } = useContext<UseGarageStoreType>(GarageContext);
const [rating, setRating] = useState<number | undefined>(undefined); const [hostRating, setHostRating] = useState<number>();
const rateHostPlatform = function (): void {
if (!hostRating) return;
const slot = garage.getSlot();
const coordinatorPubKey = federation.getCoordinator(order.shortAlias)?.nostrHexPubkey;
if (!slot?.nostrPubKey || !slot.nostrSecKey || !coordinatorPubKey || !order.id) return;
const eventTemplate: Event = {
kind: 31986,
created_at: Math.floor(Date.now() / 1000),
tags: [
['d', `${order.shortAlias}:${order.id}`],
['p', coordinatorPubKey],
['rating', String(hostRating / 5)],
],
content: '',
pubkey: slot.nostrPubKey,
id: '',
sig: '',
};
const signedEvent = finalizeEvent(eventTemplate, slot.nostrSecKey);
federation.roboPool.sendEvent(signedEvent);
};
useEffect(() => {
rateHostPlatform();
}, [hostRating]);
return ( return (
<Grid <Grid
@ -57,8 +91,8 @@ export const SuccessfulPrompt = ({
> >
<Grid item xs={12}> <Grid item xs={12}>
<Typography variant='body2' align='center'> <Typography variant='body2' align='center'>
{t('What do you think your order host "{{coordinator}}"?', { {t('Rate your peer {{peer_nick}}', {
coordinator: federation.getCoordinator(order.shortAlias)?.longAlias, peer_nick: order.is_maker ? order.taker_nick : order.maker_nick,
})} })}
</Typography> </Typography>
</Grid> </Grid>
@ -69,12 +103,36 @@ export const SuccessfulPrompt = ({
size='large' size='large'
onChange={(e) => { onChange={(e) => {
const rate = e.target.value; const rate = e.target.value;
ratePlatform(rate); rateUserPlatform(rate);
setRating(rate);
}} }}
/> />
</Grid> </Grid>
{rating === 5 ? ( <Grid item xs={12}>
<Typography variant='body2' align='center'>
{t('Rate your host {{coordinator}}', {
coordinator: federation.getCoordinator(order.shortAlias)?.longAlias,
})}{' '}
<Typography variant='button' align='center'>
{t('BETA')}
</Typography>
<Tooltip title={t('You need to enable nostr to rate your coordinator.')}>
<Info sx={{ width: 15 }} />
</Tooltip>
</Typography>
</Grid>
<Grid item>
<Rating
disabled={settings.connection !== 'nostr'}
name='size-large'
defaultValue={0}
size='large'
onChange={(e) => {
const rate = e.target.value;
setHostRating(rate);
}}
/>
</Grid>
{hostRating ? (
<Grid item xs={12}> <Grid item xs={12}>
<div <div
style={{ style={{
@ -84,35 +142,44 @@ export const SuccessfulPrompt = ({
justifyContent: 'center', justifyContent: 'center',
}} }}
> >
<Typography variant='body2' align='center'> {hostRating === 5 ? (
<b>{t('Thank you! RoboSats loves you too')}</b> <>
</Typography> <Typography variant='body2' align='center'>
<Favorite color='error' /> <b>
</div> {t('Thank you! {{shortAlias}} loves you too', {
<Typography variant='body2' align='center'> shortAlias: federation.getCoordinator(order.shortAlias)?.longAlias,
{t( })}
'RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!', </b>
</Typography>
<Favorite color='error' />
</>
) : (
<Typography variant='body2' align='center'>
<b>{t('Thank you for using Robosats!')}</b>
</Typography>
)} )}
</Typography> </div>
</Grid> {hostRating === 5 ? (
) : rating !== undefined ? ( <Typography variant='body2' align='center'>
<Grid> {t(
<Typography variant='body2' align='center'> 'RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!',
<b>{t('Thank you for using Robosats!')}</b> )}
</Typography> </Typography>
<Typography variant='body2' align='center'> ) : (
<Trans i18nKey='let_us_know_hot_to_improve'> <Typography variant='body2' align='center'>
Let us know how the platform could improve ( <Trans i18nKey='let_us_know_hot_to_improve'>
<Link target='_blank' href='https://t.me/robosats'> Let us know how the platform could improve (
Telegram <Link target='_blank' href='https://t.me/robosats'>
</Link> Telegram
{' / '} </Link>
<Link target='_blank' href='https://github.com/RoboSats/robosats/issues'> {' / '}
Github <Link target='_blank' href='https://github.com/RoboSats/robosats/issues'>
</Link> Github
) </Link>
</Trans> )
</Typography> </Trans>
</Typography>
)}
</Grid> </Grid>
) : ( ) : (
<></> <></>

View File

@ -1,7 +1,6 @@
import React, { useState, useEffect, useContext } from 'react'; import React, { useState, useEffect, useContext } from 'react';
import { Box, Divider, Grid } from '@mui/material'; import { Box, Divider, Grid } from '@mui/material';
import { getWebln, pn } from '../../utils'; import { getWebln, pn } from '../../utils';
import { import {
ConfirmCancelDialog, ConfirmCancelDialog,
ConfirmCollabCancelDialog, ConfirmCollabCancelDialog,
@ -309,7 +308,7 @@ const TradeBox = ({ currentOrder, onStartAgain }: TradeBoxProps): JSX.Element =>
} }
}; };
const ratePlatform = function (rating: number): void { const rateUserPlatform = function (rating: number): void {
submitAction({ action: 'rate_platform', rating }); submitAction({ action: 'rate_platform', rating });
}; };
@ -617,7 +616,7 @@ const TradeBox = ({ currentOrder, onStartAgain }: TradeBoxProps): JSX.Element =>
return ( return (
<SuccessfulPrompt <SuccessfulPrompt
order={order} order={order}
ratePlatform={ratePlatform} rateUserPlatform={rateUserPlatform}
onClickStartAgain={onStartAgain} onClickStartAgain={onStartAgain}
loadingRenew={loadingButtons.renewOrder} loadingRenew={loadingButtons.renewOrder}
onClickRenew={() => { onClickRenew={() => {
@ -641,7 +640,7 @@ const TradeBox = ({ currentOrder, onStartAgain }: TradeBoxProps): JSX.Element =>
return ( return (
<SuccessfulPrompt <SuccessfulPrompt
order={order} order={order}
ratePlatform={ratePlatform} rateUserPlatform={rateUserPlatform}
onClickStartAgain={onStartAgain} onClickStartAgain={onStartAgain}
loadingRenew={loadingButtons.renewOrder} loadingRenew={loadingButtons.renewOrder}
onClickRenew={() => { onClickRenew={() => {
@ -680,7 +679,7 @@ const TradeBox = ({ currentOrder, onStartAgain }: TradeBoxProps): JSX.Element =>
return ( return (
<SuccessfulPrompt <SuccessfulPrompt
order={order} order={order}
ratePlatform={ratePlatform} rateUserPlatform={rateUserPlatform}
onClickStartAgain={onStartAgain} onClickStartAgain={onStartAgain}
loadingRenew={loadingButtons.renewOrder} loadingRenew={loadingButtons.renewOrder}
onClickRenew={() => { onClickRenew={() => {

View File

@ -138,6 +138,7 @@ export class Coordinator {
this.testnet = value.testnet; this.testnet = value.testnet;
this.mainnetNodesPubkeys = value.mainnetNodesPubkeys; this.mainnetNodesPubkeys = value.mainnetNodesPubkeys;
this.testnetNodesPubkeys = value.testnetNodesPubkeys; this.testnetNodesPubkeys = value.testnetNodesPubkeys;
this.nostrHexPubkey = value.nostrHexPubkey;
this.url = ''; this.url = '';
this.basePath = ''; this.basePath = '';
@ -163,6 +164,7 @@ export class Coordinator {
public testnetNodesPubkeys: string[] | undefined; public testnetNodesPubkeys: string[] | undefined;
public url: string; public url: string;
public basePath: string; public basePath: string;
public nostrHexPubkey: string;
// These properties are fetched from coordinator API // These properties are fetched from coordinator API
public book: Record<string, PublicOrder> = {}; public book: Record<string, PublicOrder> = {};

View File

@ -10,6 +10,7 @@ class Robot {
public token?: string; public token?: string;
public pubKey?: string; public pubKey?: string;
public encPrivKey?: string; public encPrivKey?: string;
public nostrPubKey?: string;
public stealthInvoices: boolean = true; public stealthInvoices: boolean = true;
public activeOrderId?: number; public activeOrderId?: number;
public lastOrderId?: number; public lastOrderId?: number;
@ -34,9 +35,11 @@ class Robot {
const tokenSHA256 = this.tokenSHA256 ?? ''; const tokenSHA256 = this.tokenSHA256 ?? '';
const encPrivKey = this.encPrivKey ?? ''; const encPrivKey = this.encPrivKey ?? '';
const pubKey = this.pubKey ?? ''; const pubKey = this.pubKey ?? '';
const nostrPubKey = this.nostrPubKey ?? '';
return { return {
tokenSHA256, tokenSHA256,
nostrPubKey,
keys: { keys: {
pubKey: pubKey.split('\n').join('\\'), pubKey: pubKey.split('\n').join('\\'),
encPrivKey: encPrivKey.split('\n').join('\\'), encPrivKey: encPrivKey.split('\n').join('\\'),

View File

@ -1,10 +1,13 @@
import { sha256 } from 'js-sha256'; import { sha256 } from 'js-sha256';
import { sha256 as sha256Hash } from '@noble/hashes/sha256';
import { Robot, Order, type Federation } from '.'; import { Robot, Order, type Federation } from '.';
import { roboidentitiesClient } from '../services/Roboidentities/Web'; import { roboidentitiesClient } from '../services/Roboidentities/Web';
import { hexToBase91, validateTokenEntropy } from '../utils'; import { hexToBase91, validateTokenEntropy } from '../utils';
import { getPublicKey } from 'nostr-tools';
export interface AuthHeaders { export interface AuthHeaders {
tokenSHA256: string; tokenSHA256: string;
nostrPubKey: string;
keys: { keys: {
pubKey: string; pubKey: string;
encPrivKey: string; encPrivKey: string;
@ -33,6 +36,11 @@ class Slot {
const { hasEnoughEntropy, bitsEntropy, shannonEntropy } = validateTokenEntropy(token); const { hasEnoughEntropy, bitsEntropy, shannonEntropy } = validateTokenEntropy(token);
const tokenSHA256 = hexToBase91(sha256(token)); const tokenSHA256 = hexToBase91(sha256(token));
const nostrHash = sha256Hash(this.token);
this.nostrSecKey = new Uint8Array(nostrHash);
const nostrPubKey = getPublicKey(this.nostrSecKey);
this.nostrPubKey = nostrPubKey;
this.robots = shortAliases.reduce((acc: Record<string, Robot>, shortAlias: string) => { this.robots = shortAliases.reduce((acc: Record<string, Robot>, shortAlias: string) => {
acc[shortAlias] = new Robot({ acc[shortAlias] = new Robot({
...robotAttributes, ...robotAttributes,
@ -41,6 +49,7 @@ class Slot {
bitsEntropy, bitsEntropy,
shannonEntropy, shannonEntropy,
tokenSHA256, tokenSHA256,
nostrPubKey,
}); });
this.updateSlotFromRobot(acc[shortAlias]); this.updateSlotFromRobot(acc[shortAlias]);
return acc; return acc;
@ -57,6 +66,8 @@ class Slot {
activeOrder: Order | null = null; activeOrder: Order | null = null;
lastOrder: Order | null = null; lastOrder: Order | null = null;
copiedToken: boolean; copiedToken: boolean;
nostrSecKey?: Uint8Array;
nostrPubKey?: string;
onSlotUpdate: () => void; onSlotUpdate: () => void;

View File

@ -130,6 +130,12 @@ class RoboPool {
this.sendMessage(JSON.stringify(requestPending)); this.sendMessage(JSON.stringify(requestPending));
this.sendMessage(JSON.stringify(requestSuccess)); this.sendMessage(JSON.stringify(requestSuccess));
}; };
sendEvent = (event: Event): void => {
const message = ['EVENT', event];
this.sendMessage(JSON.stringify(message));
};
} }
export default RoboPool; export default RoboPool;

View File

@ -17,6 +17,7 @@ class ApiNativeClient implements ApiClient {
...headers, ...headers,
...{ ...{
Authorization: `Token ${auth.tokenSHA256}`, Authorization: `Token ${auth.tokenSHA256}`,
Nostr: auth.nostrPubKey,
}, },
}; };
} else if (auth?.keys != null) { } else if (auth?.keys != null) {
@ -24,6 +25,7 @@ class ApiNativeClient implements ApiClient {
...headers, ...headers,
...{ ...{
Authorization: `Token ${auth.tokenSHA256} | Public ${auth.keys.pubKey} | Private ${auth.keys.encPrivKey}`, Authorization: `Token ${auth.tokenSHA256} | Public ${auth.keys.pubKey} | Private ${auth.keys.encPrivKey}`,
Nostr: auth.nostrPubKey,
}, },
}; };
} }

View File

@ -13,6 +13,7 @@ class ApiWebClient implements ApiClient {
...headers, ...headers,
...{ ...{
Authorization: `Token ${auth.tokenSHA256}`, Authorization: `Token ${auth.tokenSHA256}`,
Nostr: auth.nostrPubKey,
}, },
}; };
} else if (auth?.keys != null) { } else if (auth?.keys != null) {
@ -20,6 +21,7 @@ class ApiWebClient implements ApiClient {
...headers, ...headers,
...{ ...{
Authorization: `Token ${auth.tokenSHA256} | Public ${auth.keys.pubKey} | Private ${auth.keys.encPrivKey}`, Authorization: `Token ${auth.tokenSHA256} | Public ${auth.keys.pubKey} | Private ${auth.keys.encPrivKey}`,
Nostr: auth.nostrPubKey,
}, },
}; };
} }

View File

@ -3,6 +3,7 @@ import ApiNativeClient from './ApiNativeClient';
export interface Auth { export interface Auth {
tokenSHA256: string; tokenSHA256: string;
nostrPubKey: string;
keys?: { pubKey: string; encPrivKey: string }; keys?: { pubKey: string; encPrivKey: string };
} }

View File

@ -675,13 +675,16 @@
"#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx", "#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx",
"RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats està intentant pagar la teva factura de Lightning. Recorda que els nodes Lightning han d'estar en línia per rebre pagaments.", "RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats està intentant pagar la teva factura de Lightning. Recorda que els nodes Lightning han d'estar en línia per rebre pagaments.",
"#82": "Phrases in components/TradeBox/Prompts/Successful.tsx", "#82": "Phrases in components/TradeBox/Prompts/Successful.tsx",
"BETA": "BETA",
"Rate your host {{coordinator}}": "Rate your host {{coordinator}}",
"Rate your peer {{peer_nick}}": "Rate your peer {{peer_nick}}",
"Renew": "Renovar", "Renew": "Renovar",
"RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats millora amb més usuaris i liquiditat. Ensenya-li RoboSats a un amic bitcoiner!", "RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats millora amb més usuaris i liquiditat. Ensenya-li RoboSats a un amic bitcoiner!",
"Sending coins to": "Enviant monedes a", "Sending coins to": "Enviant monedes a",
"Start Again": "Començar de nou", "Start Again": "Començar de nou",
"Thank you for using Robosats!": "Gràcies per fer servir RoboSats!", "Thank you for using Robosats!": "Gràcies per fer servir RoboSats!",
"Thank you! RoboSats loves you too": "Gràcies! RoboSats també t'estima", "Thank you! {{shortAlias}} loves you too": "Thank you! {{shortAlias}} loves you too",
"What do you think your order host \"{{coordinator}}\"?": "Què en penses del teu amfitrió \"{{coordinator}}\"?", "You need to enable nostr to rate your coordinator.": "You need to enable nostr to rate your coordinator.",
"Your TXID": "El teu TXID", "Your TXID": "El teu TXID",
"#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx", "#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx",
"Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Si us plau, espera a que el prenedor bloquegi la seva fiança. Si no ho fa a temps, l'ordre serà pública de nou.", "Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Si us plau, espera a que el prenedor bloquegi la seva fiança. Si no ho fa a temps, l'ordre serà pública de nou.",

View File

@ -675,13 +675,16 @@
"#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx", "#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx",
"RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats se snaží zaplatit tvůj lightning invoice. Nezapomeň, že lightning nody musí být online, aby mohl přijímat platby.", "RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats se snaží zaplatit tvůj lightning invoice. Nezapomeň, že lightning nody musí být online, aby mohl přijímat platby.",
"#82": "Phrases in components/TradeBox/Prompts/Successful.tsx", "#82": "Phrases in components/TradeBox/Prompts/Successful.tsx",
"BETA": "BETA",
"Rate your host {{coordinator}}": "Rate your host {{coordinator}}",
"Rate your peer {{peer_nick}}": "Rate your peer {{peer_nick}}",
"Renew": "Renew", "Renew": "Renew",
"RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats bude lepší s větší likviditou a uživateli. Pověz svým přátelům o Robosats!", "RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats bude lepší s větší likviditou a uživateli. Pověz svým přátelům o Robosats!",
"Sending coins to": "Sending coins to", "Sending coins to": "Sending coins to",
"Start Again": "Začít znovu", "Start Again": "Začít znovu",
"Thank you for using Robosats!": "Děkujeme, že používáš Robosats!", "Thank you for using Robosats!": "Děkujeme, že používáš Robosats!",
"Thank you! RoboSats loves you too": "Thank you! RoboSats loves you too", "Thank you! {{shortAlias}} loves you too": "Thank you! {{shortAlias}} loves you too",
"What do you think your order host \"{{coordinator}}\"?": "What do you think your order host \"{{coordinator}}\"?", "You need to enable nostr to rate your coordinator.": "You need to enable nostr to rate your coordinator.",
"Your TXID": "Tvé TXID", "Your TXID": "Tvé TXID",
"#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx", "#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx",
"Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Vyčkej, až příjemce uzamkne kauci. Pokud příjemce neuzamkne kauci včas, nabídka se znovu zveřejní.", "Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Vyčkej, až příjemce uzamkne kauci. Pokud příjemce neuzamkne kauci včas, nabídka se znovu zveřejní.",

View File

@ -675,13 +675,16 @@
"#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx", "#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx",
"RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats versucht deine Lightning-Invoice zu bezahlen. Denk daran, dass deine Lightning-Node erreichbar sein muss, um die Zahlung zu erhalten.", "RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats versucht deine Lightning-Invoice zu bezahlen. Denk daran, dass deine Lightning-Node erreichbar sein muss, um die Zahlung zu erhalten.",
"#82": "Phrases in components/TradeBox/Prompts/Successful.tsx", "#82": "Phrases in components/TradeBox/Prompts/Successful.tsx",
"BETA": "BETA",
"Rate your host {{coordinator}}": "Rate your host {{coordinator}}",
"Rate your peer {{peer_nick}}": "Rate your peer {{peer_nick}}",
"Renew": "Renew", "Renew": "Renew",
"RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats wird noch besser mit mehr Nutzern und Liquidität. Erzähl einem Bitcoin-Freund von uns!", "RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats wird noch besser mit mehr Nutzern und Liquidität. Erzähl einem Bitcoin-Freund von uns!",
"Sending coins to": "Sending coins to", "Sending coins to": "Sending coins to",
"Start Again": "Nochmal", "Start Again": "Nochmal",
"Thank you for using Robosats!": "Danke, dass du Robosats benutzt hast!", "Thank you for using Robosats!": "Danke, dass du Robosats benutzt hast!",
"Thank you! RoboSats loves you too": "Thank you! RoboSats loves you too", "Thank you! {{shortAlias}} loves you too": "Thank you! {{shortAlias}} loves you too",
"What do you think your order host \"{{coordinator}}\"?": "What do you think your order host \"{{coordinator}}\"?", "You need to enable nostr to rate your coordinator.": "You need to enable nostr to rate your coordinator.",
"Your TXID": "Your TXID", "Your TXID": "Your TXID",
"#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx", "#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx",
"Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Bitte warte auf den Taker, um eine Kaution zu sperren. Wenn der Taker nicht rechtzeitig eine Kaution sperrt, wird die Order erneut veröffentlicht.", "Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Bitte warte auf den Taker, um eine Kaution zu sperren. Wenn der Taker nicht rechtzeitig eine Kaution sperrt, wird die Order erneut veröffentlicht.",

View File

@ -675,13 +675,16 @@
"#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx", "#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx",
"RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.", "RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.",
"#82": "Phrases in components/TradeBox/Prompts/Successful.tsx", "#82": "Phrases in components/TradeBox/Prompts/Successful.tsx",
"BETA": "BETA",
"Rate your host {{coordinator}}": "Rate your host {{coordinator}}",
"Rate your peer {{peer_nick}}": "Rate your peer {{peer_nick}}",
"Renew": "Renew", "Renew": "Renew",
"RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!", "RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!",
"Sending coins to": "Sending coins to", "Sending coins to": "Sending coins to",
"Start Again": "Start Again", "Start Again": "Start Again",
"Thank you for using Robosats!": "Thank you for using Robosats!", "Thank you for using Robosats!": "Thank you for using Robosats!",
"Thank you! RoboSats loves you too": "Thank you! RoboSats loves you too", "Thank you! {{shortAlias}} loves you too": "Thank you! {{shortAlias}} loves you too",
"What do you think your order host \"{{coordinator}}\"?": "What do you think your order host \"{{coordinator}}\"?", "You need to enable nostr to rate your coordinator.": "You need to enable nostr to rate your coordinator.",
"Your TXID": "Your TXID", "Your TXID": "Your TXID",
"#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx", "#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx",
"Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.", "Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.",

View File

@ -675,13 +675,16 @@
"#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx", "#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx",
"RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats está intentando pagar tu factura de Lightning. Recuerda que los nodos Lightning deben estar en línea para recibir pagos.", "RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats está intentando pagar tu factura de Lightning. Recuerda que los nodos Lightning deben estar en línea para recibir pagos.",
"#82": "Phrases in components/TradeBox/Prompts/Successful.tsx", "#82": "Phrases in components/TradeBox/Prompts/Successful.tsx",
"BETA": "BETA",
"Rate your host {{coordinator}}": "Rate your host {{coordinator}}",
"Rate your peer {{peer_nick}}": "Rate your peer {{peer_nick}}",
"Renew": "Renovar", "Renew": "Renovar",
"RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats mejora con más liquidez y usuarios. ¡Háblale a un amigo bitcoiner sobre RoboSats!", "RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats mejora con más liquidez y usuarios. ¡Háblale a un amigo bitcoiner sobre RoboSats!",
"Sending coins to": "Sending coins to", "Sending coins to": "Sending coins to",
"Start Again": "Empezar de nuevo", "Start Again": "Empezar de nuevo",
"Thank you for using Robosats!": "¡Gracias por usar RoboSats!", "Thank you for using Robosats!": "¡Gracias por usar RoboSats!",
"Thank you! RoboSats loves you too": "¡Gracias! RoboSats también te quiere", "Thank you! {{shortAlias}} loves you too": "Thank you! {{shortAlias}} loves you too",
"What do you think your order host \"{{coordinator}}\"?": "What do you think your order host \"{{coordinator}}\"?", "You need to enable nostr to rate your coordinator.": "You need to enable nostr to rate your coordinator.",
"Your TXID": "Tu TXID", "Your TXID": "Tu TXID",
"#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx", "#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx",
"Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Por favor, espera a que el tomador bloquee su fianza. Si no lo hace a tiempo, la orden volverá a publicarse.", "Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Por favor, espera a que el tomador bloquee su fianza. Si no lo hace a tiempo, la orden volverá a publicarse.",

View File

@ -675,13 +675,16 @@
"#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx", "#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx",
"RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats zure Lightning faktura ordaintzen saiatzen ari da. Gogoratu lightning nodoak online egon behar direla ordainketak jaso ahal izateko.", "RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats zure Lightning faktura ordaintzen saiatzen ari da. Gogoratu lightning nodoak online egon behar direla ordainketak jaso ahal izateko.",
"#82": "Phrases in components/TradeBox/Prompts/Successful.tsx", "#82": "Phrases in components/TradeBox/Prompts/Successful.tsx",
"BETA": "BETA",
"Rate your host {{coordinator}}": "Rate your host {{coordinator}}",
"Rate your peer {{peer_nick}}": "Rate your peer {{peer_nick}}",
"Renew": "Renew", "Renew": "Renew",
"RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats hobetu egiten da likidezia eta erabiltzaile gehiagorekin. Aipatu Robosats lagun bitcoiner bati!", "RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats hobetu egiten da likidezia eta erabiltzaile gehiagorekin. Aipatu Robosats lagun bitcoiner bati!",
"Sending coins to": "Sending coins to", "Sending coins to": "Sending coins to",
"Start Again": "Berriz Hasi", "Start Again": "Berriz Hasi",
"Thank you for using Robosats!": "Mila esker Robosats erabiltzeagatik!", "Thank you for using Robosats!": "Mila esker Robosats erabiltzeagatik!",
"Thank you! RoboSats loves you too": "Thank you! RoboSats loves you too", "Thank you! {{shortAlias}} loves you too": "Thank you! {{shortAlias}} loves you too",
"What do you think your order host \"{{coordinator}}\"?": "What do you think your order host \"{{coordinator}}\"?", "You need to enable nostr to rate your coordinator.": "You need to enable nostr to rate your coordinator.",
"Your TXID": "Zure TXID", "Your TXID": "Zure TXID",
"#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx", "#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx",
"Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Mesedez itxaron hartzaileak fidantza blokeatu harte. Hartzaileak fidantza garaiz blokeatzen ez badu, eskaera berriz publikatuko da.", "Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Mesedez itxaron hartzaileak fidantza blokeatu harte. Hartzaileak fidantza garaiz blokeatzen ez badu, eskaera berriz publikatuko da.",

View File

@ -675,13 +675,16 @@
"#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx", "#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx",
"RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats tente de payer votre facture lightning. Rappelez-vous que les nœuds lightning doivent être en ligne pour recevoir des paiements.", "RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats tente de payer votre facture lightning. Rappelez-vous que les nœuds lightning doivent être en ligne pour recevoir des paiements.",
"#82": "Phrases in components/TradeBox/Prompts/Successful.tsx", "#82": "Phrases in components/TradeBox/Prompts/Successful.tsx",
"BETA": "BETA",
"Rate your host {{coordinator}}": "Rate your host {{coordinator}}",
"Rate your peer {{peer_nick}}": "Rate your peer {{peer_nick}}",
"Renew": "Renouveler", "Renew": "Renouveler",
"RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats s'améliore avec plus de liquidité et d'utilisateurs. Parlez de Robosats à un ami bitcoiner!", "RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats s'améliore avec plus de liquidité et d'utilisateurs. Parlez de Robosats à un ami bitcoiner!",
"Sending coins to": "Envoi coins à", "Sending coins to": "Envoi coins à",
"Start Again": "Recommencer", "Start Again": "Recommencer",
"Thank you for using Robosats!": "Merci d'utiliser Robosats!", "Thank you for using Robosats!": "Merci d'utiliser Robosats!",
"Thank you! RoboSats loves you too": "Merci ! RoboSats vous aime aussi", "Thank you! {{shortAlias}} loves you too": "Thank you! {{shortAlias}} loves you too",
"What do you think your order host \"{{coordinator}}\"?": "What do you think your order host \"{{coordinator}}\"?", "You need to enable nostr to rate your coordinator.": "You need to enable nostr to rate your coordinator.",
"Your TXID": "Votre TXID", "Your TXID": "Votre TXID",
"#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx", "#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx",
"Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Veuillez attendre que le preneur verrouille une caution. Si le preneur ne verrouille pas la caution à temps, l'ordre sera rendue publique à nouveau", "Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Veuillez attendre que le preneur verrouille une caution. Si le preneur ne verrouille pas la caution à temps, l'ordre sera rendue publique à nouveau",

View File

@ -675,13 +675,16 @@
"#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx", "#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx",
"RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats sta provando a pagare la tua fattura lightning. Ricorda che i nodi lightning devono essere online per ricevere pagamenti.", "RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats sta provando a pagare la tua fattura lightning. Ricorda che i nodi lightning devono essere online per ricevere pagamenti.",
"#82": "Phrases in components/TradeBox/Prompts/Successful.tsx", "#82": "Phrases in components/TradeBox/Prompts/Successful.tsx",
"BETA": "BETA",
"Rate your host {{coordinator}}": "Rate your host {{coordinator}}",
"Rate your peer {{peer_nick}}": "Rate your peer {{peer_nick}}",
"Renew": "Rinnova", "Renew": "Rinnova",
"RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats migliora se ha più liquidità ed utenti. Parla di Robosats ai tuoi amici bitcoiner!", "RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats migliora se ha più liquidità ed utenti. Parla di Robosats ai tuoi amici bitcoiner!",
"Sending coins to": "Invio monete a", "Sending coins to": "Invio monete a",
"Start Again": "Ricomincia", "Start Again": "Ricomincia",
"Thank you for using Robosats!": "Grazie per aver usato Robosats!", "Thank you for using Robosats!": "Grazie per aver usato Robosats!",
"Thank you! RoboSats loves you too": "Grazie! Anche RoboSats ti ama", "Thank you! {{shortAlias}} loves you too": "Thank you! {{shortAlias}} loves you too",
"What do you think your order host \"{{coordinator}}\"?": "What do you think your order host \"{{coordinator}}\"?", "You need to enable nostr to rate your coordinator.": "You need to enable nostr to rate your coordinator.",
"Your TXID": "Il tuo TXID", "Your TXID": "Il tuo TXID",
"#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx", "#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx",
"Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Per favore, attendi che l'acquirente blocchi una cauzione. Se l'acquirente non blocca una cauzione in tempo, l'ordine verrà reso nuovamente pubblico.", "Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Per favore, attendi che l'acquirente blocchi una cauzione. Se l'acquirente non blocca una cauzione in tempo, l'ordine verrà reso nuovamente pubblico.",

View File

@ -675,13 +675,16 @@
"#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx", "#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx",
"RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSatsはあなたのライトニングインボイスを支払おうとしています。支払いを受け取るには、ライトニングードがオンラインである必要があることを忘れないでください。", "RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSatsはあなたのライトニングインボイスを支払おうとしています。支払いを受け取るには、ライトニングードがオンラインである必要があることを忘れないでください。",
"#82": "Phrases in components/TradeBox/Prompts/Successful.tsx", "#82": "Phrases in components/TradeBox/Prompts/Successful.tsx",
"BETA": "BETA",
"Rate your host {{coordinator}}": "Rate your host {{coordinator}}",
"Rate your peer {{peer_nick}}": "Rate your peer {{peer_nick}}",
"Renew": "更新する", "Renew": "更新する",
"RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSatsはより多くの流動性とユーザーでより良くなります。ビットコイナーのお友達にRoboSatsについて話してください", "RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSatsはより多くの流動性とユーザーでより良くなります。ビットコイナーのお友達にRoboSatsについて話してください",
"Sending coins to": "コインを送信する先", "Sending coins to": "コインを送信する先",
"Start Again": "最初からやり直す", "Start Again": "最初からやり直す",
"Thank you for using Robosats!": "Robosatsをご利用いただきありがとうございます", "Thank you for using Robosats!": "Robosatsをご利用いただきありがとうございます",
"Thank you! RoboSats loves you too": "ありがとうございます! RoboSatsもあなたを愛しています", "Thank you! {{shortAlias}} loves you too": "Thank you! {{shortAlias}} loves you too",
"What do you think your order host \"{{coordinator}}\"?": "What do you think your order host \"{{coordinator}}\"?", "You need to enable nostr to rate your coordinator.": "You need to enable nostr to rate your coordinator.",
"Your TXID": "あなたのTXID", "Your TXID": "あなたのTXID",
"#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx", "#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx",
"Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "テイカーが担保金をロックするまでお待ちください。タイムリミット内に担保金がロックされない場合、オーダーは再度公開されます。", "Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "テイカーが担保金をロックするまでお待ちください。タイムリミット内に担保金がロックされない場合、オーダーは再度公開されます。",

View File

@ -675,13 +675,16 @@
"#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx", "#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx",
"RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats próbuje zapłacić fakturę za błyskawicę. Pamiętaj, że węzły pioruna muszą być online, aby otrzymywać płatności.", "RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats próbuje zapłacić fakturę za błyskawicę. Pamiętaj, że węzły pioruna muszą być online, aby otrzymywać płatności.",
"#82": "Phrases in components/TradeBox/Prompts/Successful.tsx", "#82": "Phrases in components/TradeBox/Prompts/Successful.tsx",
"BETA": "BETA",
"Rate your host {{coordinator}}": "Rate your host {{coordinator}}",
"Rate your peer {{peer_nick}}": "Rate your peer {{peer_nick}}",
"Renew": "Renew", "Renew": "Renew",
"RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats staje się lepszy dzięki większej płynności i użytkownikom. Powiedz znajomemu bitcoinerowi o Robosats!", "RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats staje się lepszy dzięki większej płynności i użytkownikom. Powiedz znajomemu bitcoinerowi o Robosats!",
"Sending coins to": "Sending coins to", "Sending coins to": "Sending coins to",
"Start Again": "Zacznij jeszcze raz", "Start Again": "Zacznij jeszcze raz",
"Thank you for using Robosats!": "Dziękujemy za korzystanie z Robosatów!", "Thank you for using Robosats!": "Dziękujemy za korzystanie z Robosatów!",
"Thank you! RoboSats loves you too": "Thank you! RoboSats loves you too", "Thank you! {{shortAlias}} loves you too": "Thank you! {{shortAlias}} loves you too",
"What do you think your order host \"{{coordinator}}\"?": "What do you think your order host \"{{coordinator}}\"?", "You need to enable nostr to rate your coordinator.": "You need to enable nostr to rate your coordinator.",
"Your TXID": "Your TXID", "Your TXID": "Your TXID",
"#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx", "#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx",
"Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Poczekaj, aż przyjmujący zablokuje obligację. Jeśli przyjmujący nie zablokuje obligacji na czas, zlecenie zostanie ponownie upublicznione.", "Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Poczekaj, aż przyjmujący zablokuje obligację. Jeśli przyjmujący nie zablokuje obligacji na czas, zlecenie zostanie ponownie upublicznione.",

View File

@ -675,13 +675,16 @@
"#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx", "#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx",
"RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats está tentando pagar sua lightning invoice. Lembre-se de que os nós lightning devem estar online para receber pagamentos.", "RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats está tentando pagar sua lightning invoice. Lembre-se de que os nós lightning devem estar online para receber pagamentos.",
"#82": "Phrases in components/TradeBox/Prompts/Successful.tsx", "#82": "Phrases in components/TradeBox/Prompts/Successful.tsx",
"BETA": "BETA",
"Rate your host {{coordinator}}": "Rate your host {{coordinator}}",
"Rate your peer {{peer_nick}}": "Rate your peer {{peer_nick}}",
"Renew": "Renew", "Renew": "Renew",
"RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats fica melhor com mais liquidez e usuários. Conte a um amigo bitcoiner sobre Robosats!", "RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats fica melhor com mais liquidez e usuários. Conte a um amigo bitcoiner sobre Robosats!",
"Sending coins to": "Enviando moedas para", "Sending coins to": "Enviando moedas para",
"Start Again": "Comece de novo", "Start Again": "Comece de novo",
"Thank you for using Robosats!": "Obrigado por usar Robosats!", "Thank you for using Robosats!": "Obrigado por usar Robosats!",
"Thank you! RoboSats loves you too": "Obriagdo! RoboSats também te ama", "Thank you! {{shortAlias}} loves you too": "Thank you! {{shortAlias}} loves you too",
"What do you think your order host \"{{coordinator}}\"?": "What do you think your order host \"{{coordinator}}\"?", "You need to enable nostr to rate your coordinator.": "You need to enable nostr to rate your coordinator.",
"Your TXID": "Sua TXID", "Your TXID": "Sua TXID",
"#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx", "#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx",
"Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Por favor, espere que o tomador bloqueie uma fiança. Se o tomador não fechar um vínculo a tempo, a ordem será tornada pública novamente.", "Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Por favor, espere que o tomador bloqueie uma fiança. Se o tomador não fechar um vínculo a tempo, a ordem será tornada pública novamente.",

View File

@ -675,13 +675,16 @@
"#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx", "#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx",
"RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats пытается оплатить Ваш Lightning инвойс. Помните, что ноды Lightning должны быть подключены к сети, чтобы получать платежи.", "RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats пытается оплатить Ваш Lightning инвойс. Помните, что ноды Lightning должны быть подключены к сети, чтобы получать платежи.",
"#82": "Phrases in components/TradeBox/Prompts/Successful.tsx", "#82": "Phrases in components/TradeBox/Prompts/Successful.tsx",
"BETA": "BETA",
"Rate your host {{coordinator}}": "Rate your host {{coordinator}}",
"Rate your peer {{peer_nick}}": "Rate your peer {{peer_nick}}",
"Renew": "Renew", "Renew": "Renew",
"RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats становится лучше с большей ликвидностью и пользователями. Расскажите другу-биткойнеру о Robosat!", "RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats становится лучше с большей ликвидностью и пользователями. Расскажите другу-биткойнеру о Robosat!",
"Sending coins to": "Отправка монет на", "Sending coins to": "Отправка монет на",
"Start Again": "Начать Снова", "Start Again": "Начать Снова",
"Thank you for using Robosats!": "Спасибо за использование Robosats!", "Thank you for using Robosats!": "Спасибо за использование Robosats!",
"Thank you! RoboSats loves you too": "Спасибо! RoboSats тоже Вас любит", "Thank you! {{shortAlias}} loves you too": "Thank you! {{shortAlias}} loves you too",
"What do you think your order host \"{{coordinator}}\"?": "What do you think your order host \"{{coordinator}}\"?", "You need to enable nostr to rate your coordinator.": "You need to enable nostr to rate your coordinator.",
"Your TXID": "Ваш TXID", "Your TXID": "Ваш TXID",
"#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx", "#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx",
"Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Пожалуйста, подождите, пока тейкер заблокирует залог. Если тейкер не заблокирует залог вовремя, ордер будет снова опубликован", "Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Пожалуйста, подождите, пока тейкер заблокирует залог. Если тейкер не заблокирует залог вовремя, ордер будет снова опубликован",

View File

@ -675,13 +675,16 @@
"#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx", "#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx",
"RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats försöker betala din lightning-faktura. Kom ihåg att lightning-noder måste vara online för att kunna mottaga betalningar.", "RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats försöker betala din lightning-faktura. Kom ihåg att lightning-noder måste vara online för att kunna mottaga betalningar.",
"#82": "Phrases in components/TradeBox/Prompts/Successful.tsx", "#82": "Phrases in components/TradeBox/Prompts/Successful.tsx",
"BETA": "BETA",
"Rate your host {{coordinator}}": "Rate your host {{coordinator}}",
"Rate your peer {{peer_nick}}": "Rate your peer {{peer_nick}}",
"Renew": "Renew", "Renew": "Renew",
"RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats blir bättre med mer likviditet och fler användare. Berätta om RoboSats för en Bitcoiner-vän!", "RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats blir bättre med mer likviditet och fler användare. Berätta om RoboSats för en Bitcoiner-vän!",
"Sending coins to": "Sending coins to", "Sending coins to": "Sending coins to",
"Start Again": "Börja om", "Start Again": "Börja om",
"Thank you for using Robosats!": "Tack för att du använder RoboSats!", "Thank you for using Robosats!": "Tack för att du använder RoboSats!",
"Thank you! RoboSats loves you too": "Thank you! RoboSats loves you too", "Thank you! {{shortAlias}} loves you too": "Thank you! {{shortAlias}} loves you too",
"What do you think your order host \"{{coordinator}}\"?": "What do you think your order host \"{{coordinator}}\"?", "You need to enable nostr to rate your coordinator.": "You need to enable nostr to rate your coordinator.",
"Your TXID": "Ditt TXID", "Your TXID": "Ditt TXID",
"#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx", "#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx",
"Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Var god vänta på att takern låser sin obligation. Om den inte gör det i tid kommer ordern att göras publik igen.", "Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Var god vänta på att takern låser sin obligation. Om den inte gör det i tid kommer ordern att göras publik igen.",

View File

@ -675,13 +675,16 @@
"#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx", "#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx",
"RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats inajaribu kulipa ankara yako ya umeme. Kumbuka kuwa nodi za umeme lazima ziwe mtandaoni ili kupokea malipo.", "RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats inajaribu kulipa ankara yako ya umeme. Kumbuka kuwa nodi za umeme lazima ziwe mtandaoni ili kupokea malipo.",
"#82": "Phrases in components/TradeBox/Prompts/Successful.tsx", "#82": "Phrases in components/TradeBox/Prompts/Successful.tsx",
"BETA": "BETA",
"Rate your host {{coordinator}}": "Rate your host {{coordinator}}",
"Rate your peer {{peer_nick}}": "Rate your peer {{peer_nick}}",
"Renew": "Renew", "Renew": "Renew",
"RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats inaboreshwa na utoshelevu zaidi na watumiaji. Mwambie rafiki yako wa Bitcoin kuhusu RoboSats!", "RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats inaboreshwa na utoshelevu zaidi na watumiaji. Mwambie rafiki yako wa Bitcoin kuhusu RoboSats!",
"Sending coins to": "Inatuma sarafu kwa", "Sending coins to": "Inatuma sarafu kwa",
"Start Again": "Anza Tena", "Start Again": "Anza Tena",
"Thank you for using Robosats!": "Asante kwa kutumia Robosats!", "Thank you for using Robosats!": "Asante kwa kutumia Robosats!",
"Thank you! RoboSats loves you too": "Asante! RoboSats pia inakupenda", "Thank you! {{shortAlias}} loves you too": "Thank you! {{shortAlias}} loves you too",
"What do you think your order host \"{{coordinator}}\"?": "What do you think your order host \"{{coordinator}}\"?", "You need to enable nostr to rate your coordinator.": "You need to enable nostr to rate your coordinator.",
"Your TXID": "Kitambulisho chako cha TX", "Your TXID": "Kitambulisho chako cha TX",
"#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx", "#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx",
"Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Tafadhali subiri mpokeaji aweke dhamana. Ikiwa mpokeaji hataweka dhamana kwa wakati, agizo litatangazwa tena kwa umma.", "Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "Tafadhali subiri mpokeaji aweke dhamana. Ikiwa mpokeaji hataweka dhamana kwa wakati, agizo litatangazwa tena kwa umma.",

View File

@ -675,13 +675,16 @@
"#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx", "#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx",
"RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats กำลังจ่ายเหรียญให้ lightning invoice ของท่าน lightning nodes จะต้องออนไลน์เพื่อรับเหรียญ", "RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats กำลังจ่ายเหรียญให้ lightning invoice ของท่าน lightning nodes จะต้องออนไลน์เพื่อรับเหรียญ",
"#82": "Phrases in components/TradeBox/Prompts/Successful.tsx", "#82": "Phrases in components/TradeBox/Prompts/Successful.tsx",
"BETA": "BETA",
"Rate your host {{coordinator}}": "Rate your host {{coordinator}}",
"Rate your peer {{peer_nick}}": "Rate your peer {{peer_nick}}",
"Renew": "Renew", "Renew": "Renew",
"RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats จะดีขึ้นเมื่อมีสภาพคล่องและผู้ใช้งานมากขึ้น ช่วยกันชวนเพื่อนของคุณมาใช้ Robosats!", "RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats จะดีขึ้นเมื่อมีสภาพคล่องและผู้ใช้งานมากขึ้น ช่วยกันชวนเพื่อนของคุณมาใช้ Robosats!",
"Sending coins to": "Sending coins to", "Sending coins to": "Sending coins to",
"Start Again": "Start Again", "Start Again": "Start Again",
"Thank you for using Robosats!": "ขอบคุณที่ใช้งาน Robosats!", "Thank you for using Robosats!": "ขอบคุณที่ใช้งาน Robosats!",
"Thank you! RoboSats loves you too": "Thank you! RoboSats loves you too", "Thank you! {{shortAlias}} loves you too": "Thank you! {{shortAlias}} loves you too",
"What do you think your order host \"{{coordinator}}\"?": "What do you think your order host \"{{coordinator}}\"?", "You need to enable nostr to rate your coordinator.": "You need to enable nostr to rate your coordinator.",
"Your TXID": "TXID ของคุณ", "Your TXID": "TXID ของคุณ",
"#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx", "#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx",
"Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "โปรดรอคู่ค้าทำการกักกันเหรียญใน bond ถ้าเขากักกันเหรียญไม่ทันในเวลาที่กำหนด รายการจะถูกประำกาศใหม่", "Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "โปรดรอคู่ค้าทำการกักกันเหรียญใน bond ถ้าเขากักกันเหรียญไม่ทันในเวลาที่กำหนด รายการจะถูกประำกาศใหม่",

View File

@ -675,13 +675,16 @@
"#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx", "#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx",
"RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats 正在尝试支付你的闪电发票。请注意,闪电节点必须在线才能接收付款。", "RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats 正在尝试支付你的闪电发票。请注意,闪电节点必须在线才能接收付款。",
"#82": "Phrases in components/TradeBox/Prompts/Successful.tsx", "#82": "Phrases in components/TradeBox/Prompts/Successful.tsx",
"BETA": "BETA",
"Rate your host {{coordinator}}": "Rate your host {{coordinator}}",
"Rate your peer {{peer_nick}}": "Rate your peer {{peer_nick}}",
"Renew": "延续", "Renew": "延续",
"RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats 会随着更多的流动性和更高的用户数量而变得更好。把 RoboSats 推荐给你的比特币朋友吧!", "RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats 会随着更多的流动性和更高的用户数量而变得更好。把 RoboSats 推荐给你的比特币朋友吧!",
"Sending coins to": "将比特币发送到", "Sending coins to": "将比特币发送到",
"Start Again": "重新开始", "Start Again": "重新开始",
"Thank you for using Robosats!": "感谢你使用 Robosats", "Thank you for using Robosats!": "感谢你使用 Robosats",
"Thank you! RoboSats loves you too": "谢谢RoboSats 也爱你", "Thank you! {{shortAlias}} loves you too": "Thank you! {{shortAlias}} loves you too",
"What do you think your order host \"{{coordinator}}\"?": "What do you think your order host \"{{coordinator}}\"?", "You need to enable nostr to rate your coordinator.": "You need to enable nostr to rate your coordinator.",
"Your TXID": "你的 TXID", "Your TXID": "你的 TXID",
"#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx", "#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx",
"Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "请等待吃单方锁定保证金。如果吃单方没有及时锁定保证金,订单将再次公开。", "Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "请等待吃单方锁定保证金。如果吃单方没有及时锁定保证金,订单将再次公开。",

View File

@ -675,13 +675,16 @@
"#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx", "#81": "Phrases in components/TradeBox/Prompts/SendingSats.tsx",
"RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats 正在嘗試支付你的閃電發票。請注意,閃電節點必須在線才能接收付款。", "RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.": "RoboSats 正在嘗試支付你的閃電發票。請注意,閃電節點必須在線才能接收付款。",
"#82": "Phrases in components/TradeBox/Prompts/Successful.tsx", "#82": "Phrases in components/TradeBox/Prompts/Successful.tsx",
"BETA": "BETA",
"Rate your host {{coordinator}}": "Rate your host {{coordinator}}",
"Rate your peer {{peer_nick}}": "Rate your peer {{peer_nick}}",
"Renew": "延續", "Renew": "延續",
"RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats 會隨著更多的流動性和更高的用戶数量而變得更好。把 RoboSats 推薦給你的比特幣朋友吧!", "RoboSats gets better with more liquidity and users. Tell a bitcoiner friend about Robosats!": "RoboSats 會隨著更多的流動性和更高的用戶数量而變得更好。把 RoboSats 推薦給你的比特幣朋友吧!",
"Sending coins to": "將比特幣發送到", "Sending coins to": "將比特幣發送到",
"Start Again": "重新開始", "Start Again": "重新開始",
"Thank you for using Robosats!": "感謝你使用 Robosats!", "Thank you for using Robosats!": "感謝你使用 Robosats!",
"Thank you! RoboSats loves you too": "謝謝RoboSats 也愛你", "Thank you! {{shortAlias}} loves you too": "Thank you! {{shortAlias}} loves you too",
"What do you think your order host \"{{coordinator}}\"?": "What do you think your order host \"{{coordinator}}\"?", "You need to enable nostr to rate your coordinator.": "You need to enable nostr to rate your coordinator.",
"Your TXID": "你的 TXID", "Your TXID": "你的 TXID",
"#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx", "#83": "Phrases in components/TradeBox/Prompts/TakerFound.tsx",
"Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "請等待吃單方鎖定保證金。如果吃單方沒有及時鎖定保證金,訂單將再次公開。", "Please wait for the taker to lock a bond. If the taker does not lock a bond in time, the order will be made public again.": "請等待吃單方鎖定保證金。如果吃單方沒有及時鎖定保證金,訂單將再次公開。",