Enhance clarity for swaps (#382)

* Improve clarity of swap orders

* Add descriptive send/receive amounts for swaps on Maker Page

* Add descriptive send/receive amounts for swaps on OrderDetails

* Collect new phrases

* Small fixes
This commit is contained in:
Reckless_Satoshi 2023-03-09 20:10:49 +00:00 committed by GitHub
parent c3183c73af
commit b6129bb46f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
26 changed files with 408 additions and 174 deletions

View File

@ -1,4 +1,4 @@
import React, { useContext, useState } from 'react';
import React, { useContext, useMemo, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { useHistory } from 'react-router-dom';
import { Grid, Paper, Collapse, Typography } from '@mui/material';
@ -32,17 +32,23 @@ const MakerPage = (): JSX.Element => {
const [showMatches, setShowMatches] = useState<boolean>(false);
const [openNoRobot, setOpenNoRobot] = useState<boolean>(false);
const matches = filterOrders({
orders: book.orders,
baseFilter: { currency: fav.currency === 0 ? 1 : fav.currency, type: fav.type, mode: fav.mode },
paymentMethods: maker.paymentMethods,
amountFilter: {
amount: maker.amount,
minAmount: maker.minAmount,
maxAmount: maker.maxAmount,
threshold: 0.7,
},
});
const matches = useMemo(() => {
return filterOrders({
orders: book.orders,
baseFilter: {
currency: fav.currency === 0 ? 1 : fav.currency,
type: fav.type,
mode: fav.mode,
},
paymentMethods: maker.paymentMethods,
amountFilter: {
amount: maker.amount,
minAmount: maker.minAmount,
maxAmount: maker.maxAmount,
threshold: 0.7,
},
});
}, [book.orders, fav, maker.amount, maker.minAmount, maker.maxAmount]);
const onViewOrder = function () {
setOrder(undefined);

View File

@ -16,6 +16,7 @@ interface OrderPageProps {
const OrderPage = ({ locationOrderId }: OrderPageProps): JSX.Element => {
const {
windowSize,
info,
order,
robot,
settings,
@ -103,7 +104,7 @@ const OrderPage = ({ locationOrderId }: OrderPageProps): JSX.Element => {
order={order}
setOrder={setOrder}
baseUrl={baseUrl}
setPage={setPage}
info={info}
hasRobot={robot.avatarLoaded}
/>
</Paper>
@ -156,7 +157,7 @@ const OrderPage = ({ locationOrderId }: OrderPageProps): JSX.Element => {
order={order}
setOrder={setOrder}
baseUrl={baseUrl}
setPage={setPage}
info={info}
hasRobot={robot.avatarLoaded}
/>
</div>
@ -188,7 +189,7 @@ const OrderPage = ({ locationOrderId }: OrderPageProps): JSX.Element => {
order={order}
setOrder={setOrder}
baseUrl={baseUrl}
setPage={setPage}
info={info}
hasRobot={robot.avatarLoaded}
/>
</Paper>

View File

@ -5,7 +5,6 @@ import { Page } from '../../basic/NavBar';
interface ConfirmationDialogProps {
open: boolean;
onClose: () => void;
setPage: (state: Page) => void;
onClickDone: () => void;
hasRobot: boolean;
}
@ -14,7 +13,6 @@ const ConfirmationDialog = ({
open,
onClose,
hasRobot,
setPage,
onClickDone,
}: ConfirmationDialogProps): JSX.Element => {
return hasRobot ? (
@ -25,7 +23,7 @@ const ConfirmationDialog = ({
onClickDone={onClickDone}
/>
) : (
<NoRobotDialog open={open} onClose={onClose} setPage={setPage} />
<NoRobotDialog open={open} onClose={onClose} />
);
};

View File

@ -1,4 +1,4 @@
import React from 'react';
import React, { useContext } from 'react';
import { useTranslation } from 'react-i18next';
import {
Dialog,
@ -9,15 +9,15 @@ import {
Button,
} from '@mui/material';
import { useHistory } from 'react-router-dom';
import { Page } from '../../basic/NavBar';
import { AppContext, AppContextProps } from '../../contexts/AppContext';
interface Props {
open: boolean;
onClose: () => void;
setPage: (state: Page) => void;
}
const NoRobotDialog = ({ open, onClose, setPage }: Props): JSX.Element => {
const NoRobotDialog = ({ open, onClose }: Props): JSX.Element => {
const { setPage } = useContext<AppContextProps>(AppContext);
const { t } = useTranslation();
const history = useHistory();

View File

@ -1,4 +1,4 @@
import React, { useContext, useEffect, useState } from 'react';
import React, { useContext, useMemo, useState } from 'react';
import { useTranslation } from 'react-i18next';
import {
InputAdornment,
@ -25,7 +25,7 @@ import {
IconButton,
} from '@mui/material';
import { LimitList, Maker, Favorites, defaultMaker } from '../../models';
import { LimitList, defaultMaker } from '../../models';
import { LocalizationProvider, TimePicker } from '@mui/x-date-pickers';
import DateFnsUtils from '@date-io/date-fns';
@ -36,7 +36,7 @@ import { FlagWithProps } from '../Icons';
import AutocompletePayments from './AutocompletePayments';
import AmountRange from './AmountRange';
import currencyDict from '../../../static/assets/currencies.json';
import { amountToString, pn } from '../../utils';
import { amountToString, computeSats, pn } from '../../utils';
import { SelfImprovement, Lock, HourglassTop, DeleteSweep, Edit } from '@mui/icons-material';
import { LoadingButton } from '@mui/lab';
@ -63,7 +63,7 @@ const MakerForm = ({
onOrderCreated = () => null,
hasRobot = true,
}: MakerFormProps): JSX.Element => {
const { fav, setFav, limits, fetchLimits, maker, setMaker, setPage, baseUrl } =
const { fav, setFav, limits, info, maker, setMaker, setPage, baseUrl } =
useContext<AppContextProps>(AppContext);
const { t } = useTranslation();
@ -81,23 +81,6 @@ const MakerForm = ({
const minRangeAmountMultiple = 1.6;
const amountSafeThresholds = [1.03, 0.98];
useEffect(() => {
setCurrencyCode(currencyDict[fav.currency == 0 ? 1 : fav.currency]);
if (Object.keys(limits.list).length === 0) {
fetchLimits().then((data) => {
updateAmountLimits(data, fav.currency, maker.premium);
updateCurrentPrice(data, fav.currency, maker.premium);
updateSatoshisLimits(data);
});
} else {
updateAmountLimits(limits.list, fav.currency, maker.premium);
updateCurrentPrice(limits.list, fav.currency, maker.premium);
updateSatoshisLimits(limits.list);
fetchLimits();
}
}, []);
const updateAmountLimits = function (limitList: LimitList, currency: number, premium: number) {
const index = currency == 0 ? 1 : currency;
let minAmountLimit: number = limitList[index].min_amount * (1 + premium / 100);
@ -175,7 +158,7 @@ const MakerForm = ({
};
const handlePremiumChange = function (e: object) {
const max = 999;
const max = fav.mode === 'fiat' ? 999 : 99;
const min = -100;
const newPremium = Math.floor(e.target.value * Math.pow(10, 2)) / Math.pow(10, 2);
let premium: number = newPremium;
@ -299,23 +282,23 @@ const MakerForm = ({
}
};
const minAmountError = function () {
const minAmountError = useMemo(() => {
return (
maker.minAmount < amountLimits[0] * 0.99 ||
maker.maxAmount < maker.minAmount ||
maker.minAmount < maker.maxAmount / (maxRangeAmountMultiple + 0.15) ||
maker.minAmount * (minRangeAmountMultiple - 0.1) > maker.maxAmount
);
};
}, [maker.minAmount, maker.maxAmount, amountLimits]);
const maxAmountError = function () {
const maxAmountError = useMemo(() => {
return (
maker.maxAmount > amountLimits[1] * 1.01 ||
maker.maxAmount < maker.minAmount ||
maker.minAmount < maker.maxAmount / (maxRangeAmountMultiple + 0.15) ||
maker.minAmount * (minRangeAmountMultiple - 0.1) > maker.maxAmount
);
};
}, [maker.minAmount, maker.maxAmount, amountLimits]);
const resetRange = function (advancedOptions: boolean) {
const index = fav.currency === 0 ? 1 : fav.currency;
@ -368,19 +351,51 @@ const MakerForm = ({
});
};
const disableSubmit = function () {
const amountLabel = useMemo(() => {
const defaultRoutingBudget = 0.001;
let label = t('Amount');
let helper = '';
let swapSats = 0;
if (fav.mode === 'swap') {
if (fav.type === 1) {
swapSats = computeSats({
amount: Number(maker.amount),
premium: Number(maker.premium),
fee: -info.maker_fee,
routingBudget: defaultRoutingBudget,
});
label = t('Onchain amount to send (BTC)');
helper = t('You receive approx {{swapSats}} LN Sats (fees might vary)', {
swapSats,
});
} else if (fav.type === 0) {
swapSats = computeSats({
amount: Number(maker.amount),
premium: Number(maker.premium),
fee: info.maker_fee,
});
label = t('Onchain amount to receive (BTC)');
helper = t('You send approx {{swapSats}} LN Sats (fees might vary)', {
swapSats,
});
}
}
return { label, helper, swapSats };
}, [fav, maker.amount, maker.premium, info]);
const disableSubmit = useMemo(() => {
return (
fav.type == null ||
(maker.amount != '' &&
!maker.advancedOptions &&
(maker.amount < amountLimits[0] || maker.amount > amountLimits[1])) ||
(maker.amount == null && (!maker.advancedOptions || limits.loading)) ||
(maker.advancedOptions && (minAmountError() || maxAmountError())) ||
(maker.advancedOptions && (minAmountError || maxAmountError)) ||
(maker.amount <= 0 && !maker.advancedOptions) ||
(maker.isExplicit && (maker.badSatoshisText != '' || maker.satoshis == '')) ||
(!maker.isExplicit && maker.badPremiumText != '')
);
};
}, [maker, amountLimits, limits, fav.type]);
const clearMaker = function () {
setFav({ ...fav, type: null });
@ -393,7 +408,7 @@ const MakerForm = ({
component='h2'
variant='subtitle2'
align='center'
color={disableSubmit() ? 'text.secondary' : 'text.primary'}
color={disableSubmit ? 'text.secondary' : 'text.primary'}
>
{fav.type == null
? t(fav.mode === 'fiat' ? 'Order for ' : 'Swap of ')
@ -553,7 +568,7 @@ const MakerForm = ({
</Grid>
</Grid>
<Grid item>
<Grid item sx={{ width: '100%' }}>
<Collapse in={maker.advancedOptions}>
<AmountRange
minAmount={maker.minAmount}
@ -563,8 +578,8 @@ const MakerForm = ({
handleCurrencyChange={handleCurrencyChange}
amountLimits={amountLimits}
maxAmount={maker.maxAmount}
minAmountError={minAmountError()}
maxAmountError={maxAmountError()}
minAmountError={minAmountError}
maxAmountError={maxAmountError}
handleMinAmountChange={handleMinAmountChange}
handleMaxAmountChange={handleMaxAmountChange}
/>
@ -572,7 +587,7 @@ const MakerForm = ({
<Collapse in={!maker.advancedOptions}>
<Grid item>
<Grid container alignItems='stretch' style={{ display: 'flex' }}>
<Grid item xs={6}>
<Grid item xs={fav.mode === 'fiat' ? 6 : 12}>
<Tooltip
placement='top'
enterTouchDelay={500}
@ -603,7 +618,7 @@ const MakerForm = ({
})
: null
}
label={t('Amount')}
label={amountLabel.label}
required={true}
value={maker.amount}
type='number'
@ -618,29 +633,41 @@ const MakerForm = ({
onChange={(e) => setMaker({ ...maker, amount: e.target.value })}
/>
</Tooltip>
{fav.mode === 'swap' && maker.amount != '' ? (
<FormHelperText sx={{ textAlign: 'center' }}>
{amountLabel.helper}
</FormHelperText>
) : null}
</Grid>
<Grid item xs={6}>
<Select
fullWidth
sx={{ backgroundColor: theme.palette.background.paper, borderRadius: '4px' }}
required={true}
inputProps={{
style: { textAlign: 'center' },
}}
value={fav.currency == 0 ? 1 : fav.currency}
onChange={(e) => handleCurrencyChange(e.target.value)}
>
{Object.entries(currencyDict).map(([key, value]) => (
<MenuItem key={key} value={parseInt(key)}>
<div style={{ display: 'flex', alignItems: 'center', flexWrap: 'wrap' }}>
<FlagWithProps code={value} />
{' ' + value}
</div>
</MenuItem>
))}
</Select>
</Grid>
{fav.mode === 'fiat' ? (
<Grid item xs={6}>
<Select
fullWidth
sx={{
backgroundColor: theme.palette.background.paper,
borderRadius: '4px',
}}
required={true}
inputProps={{
style: { textAlign: 'center' },
}}
value={fav.currency == 0 ? 1 : fav.currency}
onChange={(e) => handleCurrencyChange(e.target.value)}
>
{Object.entries(currencyDict).map(([key, value]) => (
<MenuItem key={key} value={parseInt(key)}>
<div
style={{ display: 'flex', alignItems: 'center', flexWrap: 'wrap' }}
>
<FlagWithProps code={value} />
{' ' + value}
</div>
</MenuItem>
))}
</Select>
</Grid>
) : null}
</Grid>
</Grid>
</Collapse>
@ -914,7 +941,7 @@ const MakerForm = ({
<Grid container direction='row' justifyItems='center' alignItems='center' spacing={1}>
<Grid item>
{/* conditions to disable the make button */}
{disableSubmit() ? (
{disableSubmit ? (
<Tooltip enterTouchDelay={0} title={t('You must fill the form correctly')}>
<div>
<Button disabled color='primary' variant='contained'>

View File

@ -1,4 +1,4 @@
import React, { useState } from 'react';
import React, { useState, useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import {
Dialog,
@ -30,7 +30,6 @@ interface TakeButtonProps {
setOrder: (state: Order) => void;
baseUrl: string;
hasRobot: boolean;
setPage: (state: Page) => void;
}
interface OpenDialogsProps {
@ -39,13 +38,7 @@ interface OpenDialogsProps {
}
const closeAll = { inactiveMaker: false, confirmation: false };
const TakeButton = ({
order,
setOrder,
baseUrl,
setPage,
hasRobot,
}: TakeButtonProps): JSX.Element => {
const TakeButton = ({ order, setOrder, baseUrl, hasRobot }: TakeButtonProps): JSX.Element => {
const { t } = useTranslation();
const theme = useTheme();
@ -103,7 +96,7 @@ const TakeButton = ({
}
};
const amountHelperText = function () {
const amountHelperText = useMemo(() => {
const amount = order.currency == 1000 ? Number(takeAmount) / 100000000 : Number(takeAmount);
if (amount < Number(order.min_amount) && takeAmount != '') {
return t('Too low');
@ -112,7 +105,7 @@ const TakeButton = ({
} else {
return null;
}
};
}, [order, takeAmount]);
const onTakeOrderClicked = function () {
if (order.maker_status == 'Inactive') {
@ -122,7 +115,7 @@ const TakeButton = ({
}
};
const invalidTakeAmount = function () {
const invalidTakeAmount = useMemo(() => {
const amount = order.currency == 1000 ? Number(takeAmount) / 100000000 : Number(takeAmount);
return (
amount < Number(order.min_amount) ||
@ -130,7 +123,7 @@ const TakeButton = ({
takeAmount == '' ||
takeAmount == null
);
};
}, [takeAmount, order]);
const takeOrderButton = function () {
if (order.has_range) {
@ -157,8 +150,8 @@ const TakeButton = ({
title={t('Enter amount of fiat to exchange for bitcoin')}
>
<TextField
error={takeAmount === '' ? false : invalidTakeAmount()}
helperText={amountHelperText()}
error={takeAmount === '' ? false : invalidTakeAmount}
helperText={amountHelperText}
label={t('Amount {{currencyCode}}', { currencyCode })}
size='small'
type='number'
@ -176,7 +169,7 @@ const TakeButton = ({
<Grid item>
<div
style={{
display: invalidTakeAmount() ? '' : 'none',
display: invalidTakeAmount ? '' : 'none',
}}
>
<Tooltip
@ -201,7 +194,7 @@ const TakeButton = ({
</div>
<div
style={{
display: invalidTakeAmount() ? 'none' : '',
display: invalidTakeAmount ? 'none' : '',
}}
>
<LoadingButton
@ -276,7 +269,6 @@ const TakeButton = ({
<ConfirmationDialog
open={open.confirmation}
onClose={() => setOpen({ ...open, confirmation: false })}
setPage={setPage}
onClickDone={() => {
takeOrder();
setLoadingTake(true);

View File

@ -1,4 +1,4 @@
import React from 'react';
import React, { useState, useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import {
List,
@ -13,6 +13,7 @@ import {
Collapse,
useTheme,
Typography,
IconButton,
} from '@mui/material';
import Countdown, { CountdownRenderProps, zeroPad } from 'react-countdown';
@ -26,37 +27,39 @@ import {
Payments,
Article,
HourglassTop,
ExpandLess,
ExpandMore,
} from '@mui/icons-material';
import { PaymentStringAsIcons } from '../../components/PaymentMethods';
import { FlagWithProps } from '../Icons';
import { FlagWithProps, SendReceiveIcon } from '../Icons';
import LinearDeterminate from './LinearDeterminate';
import { Order } from '../../models';
import { statusBadgeColor, pn, amountToString } from '../../utils';
import { Page } from '../../basic/NavBar';
import { Order, Info } from '../../models';
import { statusBadgeColor, pn, amountToString, computeSats } from '../../utils';
import TakeButton from './TakeButton';
interface OrderDetailsProps {
order: Order;
setOrder: (state: Order) => void;
info: Info;
baseUrl: string;
hasRobot: boolean;
setPage: (state: Page) => void;
}
const OrderDetails = ({
order,
info,
setOrder,
baseUrl,
setPage,
hasRobot,
}: OrderDetailsProps): JSX.Element => {
const { t } = useTranslation();
const theme = useTheme();
const currencyCode: string = currencies[`${order.currency}`];
const [showSwapDetails, setShowSwapDetails] = useState<boolean>(false);
const AmountString = function () {
const amountString = useMemo(() => {
// precision to 8 decimal if currency is BTC otherwise 4 decimals
if (order.currency == 1000) {
return (
@ -75,7 +78,7 @@ const OrderDetails = ({
order.max_amount,
);
}
};
}, [order.currency, order.amount, order.min_amount, order.max_amount, order.has_range]);
// Countdown Renderer callback with condition
const countdownRenderer = function ({
@ -138,6 +141,71 @@ const OrderDetails = ({
}
};
const swap = useMemo(() => {
let send: string = '';
let receive: string = '';
let swapSats: string = '';
const isSwapIn = (order.type == 0 && order.is_maker) || (order.type == 1 && !order.is_maker);
const tradeFee = order.is_maker ? info.maker_fee : info.taker_fee;
const defaultRoutingBudget = 0.001;
if (order.currency === 1000) {
if (isSwapIn) {
if (order.amount) {
swapSats = computeSats({
amount: order.amount,
premium: order.premium,
fee: -tradeFee,
routingBudget: defaultRoutingBudget,
});
} else {
const swapMin = computeSats({
amount: Number(order.min_amount),
premium: order.premium,
fee: -tradeFee,
routingBudget: defaultRoutingBudget,
});
const swapMax = computeSats({
amount: Number(order.max_amount),
premium: order.premium,
fee: -tradeFee,
routingBudget: defaultRoutingBudget,
});
swapSats = `${swapMin}-${swapMax}`;
}
send = t('You send via {{method}} {{amount}}', {
amount: amountString,
method: order.payment_method,
});
receive = t('You receive via Lightning {{amount}} Sats (routing budget may vary)', {
amount: swapSats,
});
} else {
if (order.amount) {
swapSats = computeSats({ amount: order.amount, premium: order.premium, fee: tradeFee });
} else {
const swapMin = computeSats({
amount: order.min_amount,
premium: order.premium,
fee: tradeFee,
});
const swapMax = computeSats({
amount: order.max_amount,
premium: order.premium,
fee: tradeFee,
});
swapSats = `${swapMin}-${swapMax}`;
}
send = t('You send via Lightning {{amount}} Sats', { amount: swapSats });
receive = t('You receive via {{method}} {{amount}}', {
amount: amountString,
method: order.payment_method,
});
}
}
return { send, receive, isSwapIn };
}, [order.currency, order.amount, order.has_range]);
return (
<Grid container spacing={0}>
<Grid item xs={12}>
@ -185,7 +253,6 @@ const OrderDetails = ({
</ListItemAvatar>
</ListItem>
</Collapse>
<Divider>
<Chip label={t('Order Details')} />
</Divider>
@ -216,10 +283,42 @@ const OrderDetails = ({
</div>
</ListItemIcon>
<ListItemText
primary={AmountString()}
secondary={order.amount && !order.has_range ? 'Amount' : 'Amount Range'}
primary={amountString}
secondary={order.amount ? 'Amount' : 'Amount Range'}
/>
<ListItemIcon>
<IconButton onClick={() => setShowSwapDetails(!showSwapDetails)}>
{showSwapDetails ? <ExpandLess /> : <ExpandMore color='primary' />}
</IconButton>
</ListItemIcon>
</ListItem>
{order.currency === 1000 ? (
<Collapse in={showSwapDetails}>
<List dense={true} sx={{ position: 'relative', bottom: '0.5em' }}>
<ListItem>
<ListItemIcon sx={{ position: 'relative', left: '0.3em' }}>
<SendReceiveIcon
sx={{ transform: 'scaleX(-1)', width: '0.9em', opacity: 0.7 }}
color='secondary'
/>
</ListItemIcon>
<Typography variant='body2'>{swap.send}</Typography>
</ListItem>
<ListItem>
<ListItemIcon sx={{ position: 'relative', left: '0.3em' }}>
<SendReceiveIcon
sx={{ left: '0.1em', width: '0.9em', opacity: 0.7 }}
color='primary'
/>
</ListItemIcon>
<Typography variant='body2'>{swap.receive}</Typography>
</ListItem>
</List>
</Collapse>
) : null}
<Divider />
<ListItem>
@ -327,13 +426,7 @@ const OrderDetails = ({
{!order.is_participant ? (
<Grid item xs={12}>
<TakeButton
order={order}
setOrder={setOrder}
baseUrl={baseUrl}
setPage={setPage}
hasRobot={hasRobot}
/>
<TakeButton order={order} setOrder={setOrder} baseUrl={baseUrl} hasRobot={hasRobot} />
</Grid>
) : (
<></>

View File

@ -43,7 +43,7 @@ export const WebLNDialog = ({
/>
{isBuyer
? t('Invoice not received, please check your WebLN wallet.')
: t('Payment not received, please check your WebLN wallet.')}
: t('Amount not yet locked, please check your WebLN wallet.')}
</>
) : (
<>

View File

@ -198,33 +198,6 @@ export const LightningPayoutForm = ({
.finally(() => setLoadingLnproxy(false));
};
// const fetchLnproxy = function () {
// setLoadingLnproxy(true);
// fetch(
// lnproxyUrl() +
// `/api/${lightning.lnproxyInvoice.toLocaleLowerCase()}${
// lightning.lnproxyBudgetSats > 0
// ? `?routing_msat=${lightning.lnproxyBudgetSats * 1000}`
// : ''
// }`,
// )
// .then((response) => response.text())
// .then((text) => {
// if (text.includes('lnproxy error')) {
// setLightning({ ...lightning, badLnproxy: text });
// } else {
// const invoice = text.replace('\n', '');
// setLightning({ ...lightning, invoice, badLnproxy: '' });
// }
// })
// .catch(() => {
// setLightning({ ...lightning, badLnproxy: 'Lnproxy server uncaught error' });
// })
// .finally(() => {
// setLoadingLnproxy(false);
// });
// };
const handleAdvancedOptions = function (checked: boolean) {
if (checked) {
setLightning({

View File

@ -0,0 +1,23 @@
import { pn } from './prettyNumbers';
interface computeSatsProps {
amount: number;
premium: number;
fee: number;
routingBudget?: number;
rate?: number;
}
const computeSats = ({
amount,
premium,
fee,
routingBudget = 0,
rate = 1,
}: computeSatsProps): string | undefined => {
let rateWithPremium = rate + premium / 100;
let sats = (amount / rateWithPremium) * 100000000;
sats = sats * (1 + fee) * (1 - routingBudget);
return pn(Math.round(sats));
};
export default computeSats;

View File

@ -9,3 +9,4 @@ export { default as saveAsJson } from './saveFile';
export { default as statusBadgeColor } from './statusBadgeColor';
export { genBase62Token, tokenStrength } from './token';
export { default as getWebln } from './webln';
export { default as computeSats } from './computeSats';

View File

@ -94,6 +94,10 @@
"The order has expired": "L'ordre ha expirat",
"Penalty lifted, good to go!": "Sanció revocada, som-hi!",
"You cannot take an order yet! Wait {{timeMin}}m {{timeSec}}s": "Encara no pots prendre cap ordre! Espera {{timeMin}}m {{timeSec}}s",
"You send via {{method}} {{amount}}": "You send via {{method}} {{amount}}",
"You receive via Lightning {{amount}} Sats (routing budget may vary)": "You receive via Lightning {{amount}} Sats (routing budget may vary)",
"You send via Lightning {{amount}} Sats": "You send via Lightning {{amount}} Sats",
"You receive via {{method}} {{amount}}": "You receive via {{method}} {{amount}}",
"Order maker": "Creador",
"Order taker": "Prenedor",
"Order Details": "Detalls",
@ -258,6 +262,11 @@
"Must be more than {{min}}%": "Ha de ser més del {{min}}%",
"Must be less than {{maxSats}": "Ha de ser menys de {{maxSats}}",
"Must be more than {{minSats}}": "Ha de ser més de {{minSats}}",
"Amount": "Suma",
"Onchain amount to send (BTC)": "Onchain amount to send (BTC)",
"You receive approx {{swapSats}} LN Sats (fees might vary)": "You receive approx {{swapSats}} LN Sats (fees might vary)",
"Onchain amount to receive (BTC)": "Onchain amount to receive (BTC)",
"You send approx {{swapSats}} LN Sats (fees might vary)": "You send approx {{swapSats}} LN Sats (fees might vary)",
" of {{satoshis}} Satoshis": " de {{satoshis}} Sats",
" at a {{premium}}% premium": " amb una prima del {{premium}}%",
" at a {{discount}}% discount": " amb descompte del {{discount}}%",
@ -274,7 +283,6 @@
"Amount of BTC to swap for LN Sats": "Quantitat de BTC a canviar per LN Sats",
"Must be more than {{minAmount}}": "Ha de ser més de {{minAmount}}",
"Must be less than {{maxAmount}}": "Ha de ser menys de {{maxAmount}}",
"Amount": "Suma",
"Must be shorter than 65 characters": "Ha de tenir menys de 65 caràcters",
"Swap Destination(s)": "Destí(ns) del Swap",
"Fiat Payment Method(s)": "Mètode(s) de Pagament Fiat",
@ -438,7 +446,7 @@
"#47": "Phrases in components/TradeBox/Dialogs/WebLN.tsx",
"WebLN": "WebLN",
"Invoice not received, please check your WebLN wallet.": "No s'ha rebut la factura, fes un cop d'ull a la teva wallet WebLN.",
"Payment not received, please check your WebLN wallet.": "No s'ha rebut el pagament, fes un cop d'ull a la teva wallet WebLN.",
"Amount not yet locked, please check your WebLN wallet.": "Amount not yet locked, please check your WebLN wallet.",
"You can close now your WebLN wallet popup.": "Ara pots tancar el popup de la teva wallet WebLN.",
"#48": "Phrases in components/TradeBox/Dialogs/ConfirmDispute.tsx",
"Do you want to open a dispute?": "Vols obrir una disputa?",

View File

@ -94,6 +94,10 @@
"The order has expired": "Nabídka vypršela",
"Penalty lifted, good to go!": "Pokuta zrušena, lze pokračovat!",
"You cannot take an order yet! Wait {{timeMin}}m {{timeSec}}s": "Nabídku nemůžeš zatím příjmout! Počkej {{timeMin}}m {{timeSec}}s",
"You send via {{method}} {{amount}}": "You send via {{method}} {{amount}}",
"You receive via Lightning {{amount}} Sats (routing budget may vary)": "You receive via Lightning {{amount}} Sats (routing budget may vary)",
"You send via Lightning {{amount}} Sats": "You send via Lightning {{amount}} Sats",
"You receive via {{method}} {{amount}}": "You receive via {{method}} {{amount}}",
"Order maker": "Tvůrce nabídky",
"Order taker": "Příjemce nabídky",
"Order Details": "Detaily nabídky",
@ -258,6 +262,11 @@
"Must be more than {{min}}%": "Musí být více než {{min}}%",
"Must be less than {{maxSats}": "Musí být méně než {{maxSats}}",
"Must be more than {{minSats}}": "Musí být více než {{minSats}}",
"Amount": "Částka",
"Onchain amount to send (BTC)": "Onchain amount to send (BTC)",
"You receive approx {{swapSats}} LN Sats (fees might vary)": "You receive approx {{swapSats}} LN Sats (fees might vary)",
"Onchain amount to receive (BTC)": "Onchain amount to receive (BTC)",
"You send approx {{swapSats}} LN Sats (fees might vary)": "You send approx {{swapSats}} LN Sats (fees might vary)",
" of {{satoshis}} Satoshis": " {{satoshis}} Satoshi",
" at a {{premium}}% premium": " za {{premium}}% přirážku",
" at a {{discount}}% discount": " za {{discount}}% slevu",
@ -274,7 +283,6 @@
"Amount of BTC to swap for LN Sats": "Amount of BTC to swap for LN Sats",
"Must be more than {{minAmount}}": "Must be more than {{minAmount}}",
"Must be less than {{maxAmount}}": "Must be less than {{maxAmount}}",
"Amount": "Částka",
"Must be shorter than 65 characters": "Maximálně 65 znaků",
"Swap Destination(s)": "Swap adresa",
"Fiat Payment Method(s)": "Možnosti fiat plateb",
@ -438,7 +446,7 @@
"#47": "Phrases in components/TradeBox/Dialogs/WebLN.tsx",
"WebLN": "WebLN",
"Invoice not received, please check your WebLN wallet.": "Invoice not received, please check your WebLN wallet.",
"Payment not received, please check your WebLN wallet.": "Payment not received, please check your WebLN wallet.",
"Amount not yet locked, please check your WebLN wallet.": "Amount not yet locked, please check your WebLN wallet.",
"You can close now your WebLN wallet popup.": "You can close now your WebLN wallet popup.",
"#48": "Phrases in components/TradeBox/Dialogs/ConfirmDispute.tsx",
"Do you want to open a dispute?": "Chceš otevřít spor?",

View File

@ -94,6 +94,10 @@
"The order has expired": "Die Order ist abgelaufen",
"Penalty lifted, good to go!": "Die Strafe ist aufgehoben, es kann losgehen!",
"You cannot take an order yet! Wait {{timeMin}}m {{timeSec}}s": "Du kannst noch keine Order annehmen! Warte {{timeMin}}m {{timeSec}}s",
"You send via {{method}} {{amount}}": "You send via {{method}} {{amount}}",
"You receive via Lightning {{amount}} Sats (routing budget may vary)": "You receive via Lightning {{amount}} Sats (routing budget may vary)",
"You send via Lightning {{amount}} Sats": "You send via Lightning {{amount}} Sats",
"You receive via {{method}} {{amount}}": "You receive via {{method}} {{amount}}",
"Order maker": "Order-Maker",
"Order taker": "Order-Taker",
"Order Details": "Order-Details",
@ -258,6 +262,11 @@
"Must be more than {{min}}%": "Muss mehr sein als {{min}}%",
"Must be less than {{maxSats}": "Muss weniger sein als {{maxSats}}",
"Must be more than {{minSats}}": "Muss mehr sein als {{minSats}}",
"Amount": "Menge",
"Onchain amount to send (BTC)": "Onchain amount to send (BTC)",
"You receive approx {{swapSats}} LN Sats (fees might vary)": "You receive approx {{swapSats}} LN Sats (fees might vary)",
"Onchain amount to receive (BTC)": "Onchain amount to receive (BTC)",
"You send approx {{swapSats}} LN Sats (fees might vary)": "You send approx {{swapSats}} LN Sats (fees might vary)",
" of {{satoshis}} Satoshis": " für {{satoshis}} Satoshis",
" at a {{premium}}% premium": " mit einem {{premium}}% Aufschlag",
" at a {{discount}}% discount": " mit einem {{discount}}% Rabatt",
@ -274,7 +283,6 @@
"Amount of BTC to swap for LN Sats": "Amount of BTC to swap for LN Sats",
"Must be more than {{minAmount}}": "Must be more than {{minAmount}}",
"Must be less than {{maxAmount}}": "Must be less than {{maxAmount}}",
"Amount": "Menge",
"Must be shorter than 65 characters": "Muss kürzer als 65 Zeichen sein",
"Swap Destination(s)": "austausch Ziel(e)",
"Fiat Payment Method(s)": "Fiat Zahlungsmethode(n)",
@ -438,7 +446,7 @@
"#47": "Phrases in components/TradeBox/Dialogs/WebLN.tsx",
"WebLN": "WebLN",
"Invoice not received, please check your WebLN wallet.": "Invoice not received, please check your WebLN wallet.",
"Payment not received, please check your WebLN wallet.": "Payment not received, please check your WebLN wallet.",
"Amount not yet locked, please check your WebLN wallet.": "Amount not yet locked, please check your WebLN wallet.",
"You can close now your WebLN wallet popup.": "You can close now your WebLN wallet popup.",
"#48": "Phrases in components/TradeBox/Dialogs/ConfirmDispute.tsx",
"Do you want to open a dispute?": "Möchtest du einen Fall eröffnen?",

View File

@ -94,6 +94,10 @@
"The order has expired": "The order has expired",
"Penalty lifted, good to go!": "Penalty lifted, good to go!",
"You cannot take an order yet! Wait {{timeMin}}m {{timeSec}}s": "You cannot take an order yet! Wait {{timeMin}}m {{timeSec}}s",
"You send via {{method}} {{amount}}": "You send via {{method}} {{amount}}",
"You receive via Lightning {{amount}} Sats (routing budget may vary)": "You receive via Lightning {{amount}} Sats (routing budget may vary)",
"You send via Lightning {{amount}} Sats": "You send via Lightning {{amount}} Sats",
"You receive via {{method}} {{amount}}": "You receive via {{method}} {{amount}}",
"Order maker": "Order maker",
"Order taker": "Order taker",
"Order Details": "Order Details",
@ -258,6 +262,11 @@
"Must be more than {{min}}%": "Must be more than {{min}}%",
"Must be less than {{maxSats}": "Must be less than {{maxSats}}",
"Must be more than {{minSats}}": "Must be more than {{minSats}}",
"Amount": "Amount",
"Onchain amount to send (BTC)": "Onchain amount to send (BTC)",
"You receive approx {{swapSats}} LN Sats (fees might vary)": "You receive approx {{swapSats}} LN Sats (fees might vary)",
"Onchain amount to receive (BTC)": "Onchain amount to receive (BTC)",
"You send approx {{swapSats}} LN Sats (fees might vary)": "You send approx {{swapSats}} LN Sats (fees might vary)",
" of {{satoshis}} Satoshis": " of {{satoshis}} Satoshis",
" at a {{premium}}% premium": " at a {{premium}}% premium",
" at a {{discount}}% discount": " at a {{discount}}% discount",
@ -274,7 +283,6 @@
"Amount of BTC to swap for LN Sats": "Amount of BTC to swap for LN Sats",
"Must be more than {{minAmount}}": "Must be more than {{minAmount}}",
"Must be less than {{maxAmount}}": "Must be less than {{maxAmount}}",
"Amount": "Amount",
"Must be shorter than 65 characters": "Must be shorter than 65 characters",
"Swap Destination(s)": "Swap Destination(s)",
"Fiat Payment Method(s)": "Fiat Payment Method(s)",
@ -438,7 +446,7 @@
"#47": "Phrases in components/TradeBox/Dialogs/WebLN.tsx",
"WebLN": "WebLN",
"Invoice not received, please check your WebLN wallet.": "Invoice not received, please check your WebLN wallet.",
"Payment not received, please check your WebLN wallet.": "Payment not received, please check your WebLN wallet.",
"Amount not yet locked, please check your WebLN wallet.": "Amount not yet locked, please check your WebLN wallet.",
"You can close now your WebLN wallet popup.": "You can close now your WebLN wallet popup.",
"#48": "Phrases in components/TradeBox/Dialogs/ConfirmDispute.tsx",
"Do you want to open a dispute?": "Do you want to open a dispute?",

View File

@ -94,6 +94,10 @@
"The order has expired": "La orden ha expirado",
"Penalty lifted, good to go!": "Sanción revocada, ¡vamos!",
"You cannot take an order yet! Wait {{timeMin}}m {{timeSec}}s": "¡No puedes tomar una orden aún! Espera {{timeMin}}m {{timeSec}}s",
"You send via {{method}} {{amount}}": "You send via {{method}} {{amount}}",
"You receive via Lightning {{amount}} Sats (routing budget may vary)": "You receive via Lightning {{amount}} Sats (routing budget may vary)",
"You send via Lightning {{amount}} Sats": "You send via Lightning {{amount}} Sats",
"You receive via {{method}} {{amount}}": "You receive via {{method}} {{amount}}",
"Order maker": "Creador",
"Order taker": "Tomador",
"Order Details": "Detalles",
@ -258,6 +262,11 @@
"Must be more than {{min}}%": "Debe ser más del {{min}}%",
"Must be less than {{maxSats}": "Debe ser menos de {{maxSats}}",
"Must be more than {{minSats}}": "Debe ser más de {{minSats}}",
"Amount": "Monto",
"Onchain amount to send (BTC)": "Onchain amount to send (BTC)",
"You receive approx {{swapSats}} LN Sats (fees might vary)": "You receive approx {{swapSats}} LN Sats (fees might vary)",
"Onchain amount to receive (BTC)": "Onchain amount to receive (BTC)",
"You send approx {{swapSats}} LN Sats (fees might vary)": "You send approx {{swapSats}} LN Sats (fees might vary)",
" of {{satoshis}} Satoshis": " de {{satoshis}} Sats",
" at a {{premium}}% premium": " con una prima del {{premium}}%",
" at a {{discount}}% discount": " con descuento del {{discount}}%",
@ -274,7 +283,6 @@
"Amount of BTC to swap for LN Sats": "Amount of BTC to swap for LN Sats",
"Must be more than {{minAmount}}": "Must be more than {{minAmount}}",
"Must be less than {{maxAmount}}": "Must be less than {{maxAmount}}",
"Amount": "Monto",
"Must be shorter than 65 characters": "Debe tener menos de 65 caracteres",
"Swap Destination(s)": "Destino(s) del swap",
"Fiat Payment Method(s)": "Método(s) de pago en fiat",
@ -438,7 +446,7 @@
"#47": "Phrases in components/TradeBox/Dialogs/WebLN.tsx",
"WebLN": "WebLN",
"Invoice not received, please check your WebLN wallet.": "No se ha recibido la factura, echa un vistazo a tu wallet WebLN.",
"Payment not received, please check your WebLN wallet.": "No se ha recibido el pago, echa un vistazo a tu wallet WebLN.",
"Amount not yet locked, please check your WebLN wallet.": "Amount not yet locked, please check your WebLN wallet.",
"You can close now your WebLN wallet popup.": "Ahora puedes cerrar el popup de tu wallet WebLN.",
"#48": "Phrases in components/TradeBox/Dialogs/ConfirmDispute.tsx",
"Do you want to open a dispute?": "¿Quieres abrir una disputa?",

View File

@ -94,6 +94,10 @@
"The order has expired": "Eskaera iraungi da",
"Penalty lifted, good to go!": "Zigorra kendu da, prest!",
"You cannot take an order yet! Wait {{timeMin}}m {{timeSec}}s": "Oraindik ezin duzu eskaerarik hartu! Itxaron{{timeMin}}m {{timeSec}}s",
"You send via {{method}} {{amount}}": "You send via {{method}} {{amount}}",
"You receive via Lightning {{amount}} Sats (routing budget may vary)": "You receive via Lightning {{amount}} Sats (routing budget may vary)",
"You send via Lightning {{amount}} Sats": "You send via Lightning {{amount}} Sats",
"You receive via {{method}} {{amount}}": "You receive via {{method}} {{amount}}",
"Order maker": "Eskaera egile",
"Order taker": "Eskaera hartzaile",
"Order Details": "Xehetasunak",
@ -258,6 +262,11 @@
"Must be more than {{min}}%": "%{{min}} baino gehiago izan behar da",
"Must be less than {{maxSats}": "{{maxSats}} baino gutxiago izan behar da",
"Must be more than {{minSats}}": "{{minSats}} baino gehiago izan behar da",
"Amount": "Kopurua",
"Onchain amount to send (BTC)": "Onchain amount to send (BTC)",
"You receive approx {{swapSats}} LN Sats (fees might vary)": "You receive approx {{swapSats}} LN Sats (fees might vary)",
"Onchain amount to receive (BTC)": "Onchain amount to receive (BTC)",
"You send approx {{swapSats}} LN Sats (fees might vary)": "You send approx {{swapSats}} LN Sats (fees might vary)",
" of {{satoshis}} Satoshis": " {{satoshis}} Satoshirentzat",
" at a {{premium}}% premium": " %{{premium}}-ko primarekin",
" at a {{discount}}% discount": " %{{discount}}-ko deskontuarekin",
@ -274,7 +283,6 @@
"Amount of BTC to swap for LN Sats": "Amount of BTC to swap for LN Sats",
"Must be more than {{minAmount}}": "Must be more than {{minAmount}}",
"Must be less than {{maxAmount}}": "Must be less than {{maxAmount}}",
"Amount": "Kopurua",
"Must be shorter than 65 characters": "65 karaktere baino gutxiago izan behar ditu",
"Swap Destination(s)": "Trukearen Norakoa(k)",
"Fiat Payment Method(s)": "Fiat Ordainketa Modua(k)",
@ -438,7 +446,7 @@
"#47": "Phrases in components/TradeBox/Dialogs/WebLN.tsx",
"WebLN": "WebLN",
"Invoice not received, please check your WebLN wallet.": "Faktura ez da jaso, mesedez begiratu zure WebLN kartera.",
"Payment not received, please check your WebLN wallet.": "Ordainketa ez da jaso, mesedez begiratu zure WebLN kartera.",
"Amount not yet locked, please check your WebLN wallet.": "Amount not yet locked, please check your WebLN wallet.",
"You can close now your WebLN wallet popup.": "You can close now your WebLN wallet popup.",
"#48": "Phrases in components/TradeBox/Dialogs/ConfirmDispute.tsx",
"Do you want to open a dispute?": "Eztabaida bat ireki nahi duzu?",

View File

@ -94,6 +94,10 @@
"The order has expired": "L'ordre a expiré",
"Penalty lifted, good to go!": "Pénalité levée, vous pouvez y aller!",
"You cannot take an order yet! Wait {{timeMin}}m {{timeSec}}s": "Vous ne pouvez pas encore prendre un ordre! Attendez {{timeMin}}m {{timeSec}}s",
"You send via {{method}} {{amount}}": "You send via {{method}} {{amount}}",
"You receive via Lightning {{amount}} Sats (routing budget may vary)": "You receive via Lightning {{amount}} Sats (routing budget may vary)",
"You send via Lightning {{amount}} Sats": "You send via Lightning {{amount}} Sats",
"You receive via {{method}} {{amount}}": "You receive via {{method}} {{amount}}",
"Order maker": "Createur d'ordre",
"Order taker": "Preneur d'ordre",
"Order Details": "Détails de l'ordre",
@ -258,6 +262,11 @@
"Must be more than {{min}}%": "Doit être plus que {{min}}%",
"Must be less than {{maxSats}": "Doit être moins que {{maxSats}}",
"Must be more than {{minSats}}": "Doit être plus que {{minSats}}",
"Amount": "Montant",
"Onchain amount to send (BTC)": "Onchain amount to send (BTC)",
"You receive approx {{swapSats}} LN Sats (fees might vary)": "You receive approx {{swapSats}} LN Sats (fees might vary)",
"Onchain amount to receive (BTC)": "Onchain amount to receive (BTC)",
"You send approx {{swapSats}} LN Sats (fees might vary)": "You send approx {{swapSats}} LN Sats (fees might vary)",
" of {{satoshis}} Satoshis": " de {{satoshis}} Satoshis",
" at a {{premium}}% premium": " à une prime de {{premium}}%",
" at a {{discount}}% discount": " à une remise de {{discount}}%",
@ -274,7 +283,6 @@
"Amount of BTC to swap for LN Sats": "Amount of BTC to swap for LN Sats",
"Must be more than {{minAmount}}": "Must be more than {{minAmount}}",
"Must be less than {{maxAmount}}": "Must be less than {{maxAmount}}",
"Amount": "Montant",
"Must be shorter than 65 characters": "Doit être plus court que 65 caractères",
"Swap Destination(s)": "Destination(s) de l'échange",
"Fiat Payment Method(s)": "Mode(s) de paiement Fiat",
@ -438,7 +446,7 @@
"#47": "Phrases in components/TradeBox/Dialogs/WebLN.tsx",
"WebLN": "WebLN",
"Invoice not received, please check your WebLN wallet.": "Invoice not received, please check your WebLN wallet.",
"Payment not received, please check your WebLN wallet.": "Payment not received, please check your WebLN wallet.",
"Amount not yet locked, please check your WebLN wallet.": "Amount not yet locked, please check your WebLN wallet.",
"You can close now your WebLN wallet popup.": "You can close now your WebLN wallet popup.",
"#48": "Phrases in components/TradeBox/Dialogs/ConfirmDispute.tsx",
"Do you want to open a dispute?": "Voulez-vous ouvrir un litige?",

View File

@ -94,6 +94,10 @@
"The order has expired": "L'ordine è scaduto",
"Penalty lifted, good to go!": "Penalità rimossa, partiamo!",
"You cannot take an order yet! Wait {{timeMin}}m {{timeSec}}s": "Non puoi ancora accettare un ordine! Aspetta {{timeMin}}m {{timeSec}}s",
"You send via {{method}} {{amount}}": "You send via {{method}} {{amount}}",
"You receive via Lightning {{amount}} Sats (routing budget may vary)": "You receive via Lightning {{amount}} Sats (routing budget may vary)",
"You send via Lightning {{amount}} Sats": "You send via Lightning {{amount}} Sats",
"You receive via {{method}} {{amount}}": "You receive via {{method}} {{amount}}",
"Order maker": "Offerente",
"Order taker": "Acquirente",
"Order Details": "Dettagli",
@ -258,6 +262,11 @@
"Must be more than {{min}}%": "Dev'essere maggiore del {{min}}%",
"Must be less than {{maxSats}": "Dev'essere inferiore al {{maxSats}}",
"Must be more than {{minSats}}": "Dev'essere maggiore del {{minSats}}",
"Amount": "Quantità",
"Onchain amount to send (BTC)": "Onchain amount to send (BTC)",
"You receive approx {{swapSats}} LN Sats (fees might vary)": "You receive approx {{swapSats}} LN Sats (fees might vary)",
"Onchain amount to receive (BTC)": "Onchain amount to receive (BTC)",
"You send approx {{swapSats}} LN Sats (fees might vary)": "You send approx {{swapSats}} LN Sats (fees might vary)",
" of {{satoshis}} Satoshis": " di {{satoshis}} Sats",
" at a {{premium}}% premium": " con un premio del {{premium}}%",
" at a {{discount}}% discount": " con uno sconto del {{discount}}%",
@ -274,7 +283,6 @@
"Amount of BTC to swap for LN Sats": "Amount of BTC to swap for LN Sats",
"Must be more than {{minAmount}}": "Must be more than {{minAmount}}",
"Must be less than {{maxAmount}}": "Must be less than {{maxAmount}}",
"Amount": "Quantità",
"Must be shorter than 65 characters": "Deve essere meno di 65 caratteri",
"Swap Destination(s)": "Destinazione dello/degli Swap",
"Fiat Payment Method(s)": "Metodo(i) di pagamento fiat",
@ -438,7 +446,7 @@
"#47": "Phrases in components/TradeBox/Dialogs/WebLN.tsx",
"WebLN": "WebLN",
"Invoice not received, please check your WebLN wallet.": "Invoice not received, please check your WebLN wallet.",
"Payment not received, please check your WebLN wallet.": "Payment not received, please check your WebLN wallet.",
"Amount not yet locked, please check your WebLN wallet.": "Amount not yet locked, please check your WebLN wallet.",
"You can close now your WebLN wallet popup.": "You can close now your WebLN wallet popup.",
"#48": "Phrases in components/TradeBox/Dialogs/ConfirmDispute.tsx",
"Do you want to open a dispute?": "Vuoi aprire una disputa?",

View File

@ -94,6 +94,10 @@
"The order has expired": "Zamówienie wygasło",
"Penalty lifted, good to go!": "Kara zniesiona, gotowe!",
"You cannot take an order yet! Wait {{timeMin}}m {{timeSec}}s": "Nie możesz jeszcze przyjąć zamówienia! Czekać {{timeMin}}m {{timeSec}}s",
"You send via {{method}} {{amount}}": "You send via {{method}} {{amount}}",
"You receive via Lightning {{amount}} Sats (routing budget may vary)": "You receive via Lightning {{amount}} Sats (routing budget may vary)",
"You send via Lightning {{amount}} Sats": "You send via Lightning {{amount}} Sats",
"You receive via {{method}} {{amount}}": "You receive via {{method}} {{amount}}",
"Order maker": "Ekspres zamówienia",
"Order taker": "Przyjmujący zamówienia",
"Order Details": "Szczegóły zamówienia",
@ -258,6 +262,11 @@
"Must be more than {{min}}%": "To musi być więcej niż {{min}}%",
"Must be less than {{maxSats}": "To musi być mniej niż {{maxSats}}",
"Must be more than {{minSats}}": "To musi być więcej niż {{minSats}}",
"Amount": "Ilość",
"Onchain amount to send (BTC)": "Onchain amount to send (BTC)",
"You receive approx {{swapSats}} LN Sats (fees might vary)": "You receive approx {{swapSats}} LN Sats (fees might vary)",
"Onchain amount to receive (BTC)": "Onchain amount to receive (BTC)",
"You send approx {{swapSats}} LN Sats (fees might vary)": "You send approx {{swapSats}} LN Sats (fees might vary)",
" of {{satoshis}} Satoshis": " z {{satoshis}} Satoshis",
" at a {{premium}}% premium": " o godz {{premium}}% premia",
" at a {{discount}}% discount": " o godz {{discount}}% zniżka",
@ -274,7 +283,6 @@
"Amount of BTC to swap for LN Sats": "Amount of BTC to swap for LN Sats",
"Must be more than {{minAmount}}": "Must be more than {{minAmount}}",
"Must be less than {{maxAmount}}": "Must be less than {{maxAmount}}",
"Amount": "Ilość",
"Must be shorter than 65 characters": "Musi być krótszy niż 65 znaków",
"Swap Destination(s)": "Swap miejsce/miejsca docelowe",
"Fiat Payment Method(s)": "Fiat Metoda/Metody płatności",
@ -438,7 +446,7 @@
"#47": "Phrases in components/TradeBox/Dialogs/WebLN.tsx",
"WebLN": "WebLN",
"Invoice not received, please check your WebLN wallet.": "Invoice not received, please check your WebLN wallet.",
"Payment not received, please check your WebLN wallet.": "Payment not received, please check your WebLN wallet.",
"Amount not yet locked, please check your WebLN wallet.": "Amount not yet locked, please check your WebLN wallet.",
"You can close now your WebLN wallet popup.": "You can close now your WebLN wallet popup.",
"#48": "Phrases in components/TradeBox/Dialogs/ConfirmDispute.tsx",
"Do you want to open a dispute?": "Chcesz otworzyć spór?",

View File

@ -94,6 +94,10 @@
"The order has expired": "A ordem expirou",
"Penalty lifted, good to go!": "Penalidade levantada, pronto!",
"You cannot take an order yet! Wait {{timeMin}}m {{timeSec}}s": "Você ainda não pode fazer um pedido! Espere {{timeMin}}m {{timeSec}}s",
"You send via {{method}} {{amount}}": "You send via {{method}} {{amount}}",
"You receive via Lightning {{amount}} Sats (routing budget may vary)": "You receive via Lightning {{amount}} Sats (routing budget may vary)",
"You send via Lightning {{amount}} Sats": "You send via Lightning {{amount}} Sats",
"You receive via {{method}} {{amount}}": "You receive via {{method}} {{amount}}",
"Order maker": "Criar ordem",
"Order taker": "Tomar ordem",
"Order Details": "Detalhes da ordem",
@ -258,6 +262,11 @@
"Must be more than {{min}}%": "Deve ser superior a {{min}}%",
"Must be less than {{maxSats}": "Deve ser inferior a {{maxSats}}",
"Must be more than {{minSats}}": "Deve ser superior a {{minSats}}",
"Amount": "Quantidade",
"Onchain amount to send (BTC)": "Onchain amount to send (BTC)",
"You receive approx {{swapSats}} LN Sats (fees might vary)": "You receive approx {{swapSats}} LN Sats (fees might vary)",
"Onchain amount to receive (BTC)": "Onchain amount to receive (BTC)",
"You send approx {{swapSats}} LN Sats (fees might vary)": "You send approx {{swapSats}} LN Sats (fees might vary)",
" of {{satoshis}} Satoshis": " de {{satoshis}} Satoshis",
" at a {{premium}}% premium": " com um prêmio de {{premium}}%",
" at a {{discount}}% discount": " com um desconto de {{discount}}%",
@ -274,7 +283,6 @@
"Amount of BTC to swap for LN Sats": "Amount of BTC to swap for LN Sats",
"Must be more than {{minAmount}}": "Must be more than {{minAmount}}",
"Must be less than {{maxAmount}}": "Must be less than {{maxAmount}}",
"Amount": "Quantidade",
"Must be shorter than 65 characters": "Deve ter menos de 65 caracteres",
"Swap Destination(s)": "Trocar Destino(s)",
"Fiat Payment Method(s)": "Forma(s) de Pagamento Fiat",
@ -438,7 +446,7 @@
"#47": "Phrases in components/TradeBox/Dialogs/WebLN.tsx",
"WebLN": "WebLN",
"Invoice not received, please check your WebLN wallet.": "Invoice not received, please check your WebLN wallet.",
"Payment not received, please check your WebLN wallet.": "Payment not received, please check your WebLN wallet.",
"Amount not yet locked, please check your WebLN wallet.": "Amount not yet locked, please check your WebLN wallet.",
"You can close now your WebLN wallet popup.": "You can close now your WebLN wallet popup.",
"#48": "Phrases in components/TradeBox/Dialogs/ConfirmDispute.tsx",
"Do you want to open a dispute?": "Quer abrir uma disputa?",

View File

@ -94,6 +94,10 @@
"The order has expired": "Срок действия ордера истёк",
"Penalty lifted, good to go!": "Пенальти сняты, поехали!",
"You cannot take an order yet! Wait {{timeMin}}m {{timeSec}}s": "Вы ещё не можете взять ордер! Подождите {{timeMin}}м {{timeSec}}с",
"You send via {{method}} {{amount}}": "You send via {{method}} {{amount}}",
"You receive via Lightning {{amount}} Sats (routing budget may vary)": "You receive via Lightning {{amount}} Sats (routing budget may vary)",
"You send via Lightning {{amount}} Sats": "You send via Lightning {{amount}} Sats",
"You receive via {{method}} {{amount}}": "You receive via {{method}} {{amount}}",
"Order maker": "Мейкер ордера",
"Order taker": "Тейкер ордера",
"Order Details": "Детали ордера",
@ -258,6 +262,11 @@
"Must be more than {{min}}%": "Должно быть больше чем {{min}}%",
"Must be less than {{maxSats}": "Должно быть меньше чем {{maxSats}}",
"Must be more than {{minSats}}": "Должно быть больше чем {{minSats}}",
"Amount": "Сумма",
"Onchain amount to send (BTC)": "Onchain amount to send (BTC)",
"You receive approx {{swapSats}} LN Sats (fees might vary)": "You receive approx {{swapSats}} LN Sats (fees might vary)",
"Onchain amount to receive (BTC)": "Onchain amount to receive (BTC)",
"You send approx {{swapSats}} LN Sats (fees might vary)": "You send approx {{swapSats}} LN Sats (fees might vary)",
" of {{satoshis}} Satoshis": " {{satoshis}} Сатоши",
" at a {{premium}}% premium": " с наценкой {{premium}}%",
" at a {{discount}}% discount": " со скидкой {{discount}}%",
@ -274,7 +283,6 @@
"Amount of BTC to swap for LN Sats": "Amount of BTC to swap for LN Sats",
"Must be more than {{minAmount}}": "Must be more than {{minAmount}}",
"Must be less than {{maxAmount}}": "Must be less than {{maxAmount}}",
"Amount": "Сумма",
"Must be shorter than 65 characters": "Должно быть короче 65и символов",
"Swap Destination(s)": "Поменять место(а) назначения",
"Fiat Payment Method(s)": "Способ(ы) оплаты",
@ -438,7 +446,7 @@
"#47": "Phrases in components/TradeBox/Dialogs/WebLN.tsx",
"WebLN": "WebLN",
"Invoice not received, please check your WebLN wallet.": "Платёж не получен. Пожалуйста, проверьте Ваш WebLN Кошелёк.",
"Payment not received, please check your WebLN wallet.": "Платёж не получен. Пожалуйста, проверьте Ваш WebLN Кошелёк.",
"Amount not yet locked, please check your WebLN wallet.": "Amount not yet locked, please check your WebLN wallet.",
"You can close now your WebLN wallet popup.": "Вы можете закрыть всплывающее окно WebLN Кошелька",
"#48": "Phrases in components/TradeBox/Dialogs/ConfirmDispute.tsx",
"Do you want to open a dispute?": "Хотите ли Вы открыть диспут?",

View File

@ -94,6 +94,10 @@
"The order has expired": "Ordern har förfallit",
"Penalty lifted, good to go!": "Straff upphävt, bara att köra!",
"You cannot take an order yet! Wait {{timeMin}}m {{timeSec}}s": "Du kan inte ta en order ännu! Vänta {{timeMin}}m {{timeSec}}s",
"You send via {{method}} {{amount}}": "You send via {{method}} {{amount}}",
"You receive via Lightning {{amount}} Sats (routing budget may vary)": "You receive via Lightning {{amount}} Sats (routing budget may vary)",
"You send via Lightning {{amount}} Sats": "You send via Lightning {{amount}} Sats",
"You receive via {{method}} {{amount}}": "You receive via {{method}} {{amount}}",
"Order maker": "Ordermaker",
"Order taker": "Ordertaker",
"Order Details": "Orderdetaljer",
@ -258,6 +262,11 @@
"Must be more than {{min}}%": "Måste vara mer än {{min}}%",
"Must be less than {{maxSats}": "Måste vara mindre än {{maxSats}}",
"Must be more than {{minSats}}": "Måste vara mer än {{minSats}}",
"Amount": "Summa",
"Onchain amount to send (BTC)": "Onchain amount to send (BTC)",
"You receive approx {{swapSats}} LN Sats (fees might vary)": "You receive approx {{swapSats}} LN Sats (fees might vary)",
"Onchain amount to receive (BTC)": "Onchain amount to receive (BTC)",
"You send approx {{swapSats}} LN Sats (fees might vary)": "You send approx {{swapSats}} LN Sats (fees might vary)",
" of {{satoshis}} Satoshis": " för {{satoshis}} sats",
" at a {{premium}}% premium": " med en premium på {{premium}}%",
" at a {{discount}}% discount": " med en rabatt på {{discount}}%",
@ -274,7 +283,6 @@
"Amount of BTC to swap for LN Sats": "Amount of BTC to swap for LN Sats",
"Must be more than {{minAmount}}": "Must be more than {{minAmount}}",
"Must be less than {{maxAmount}}": "Must be less than {{maxAmount}}",
"Amount": "Summa",
"Must be shorter than 65 characters": "Måste vara kortare än 65 tecken",
"Swap Destination(s)": "Byt destination(er)",
"Fiat Payment Method(s)": "Betalningmetod(er) med fiat",
@ -438,7 +446,7 @@
"#47": "Phrases in components/TradeBox/Dialogs/WebLN.tsx",
"WebLN": "WebLN",
"Invoice not received, please check your WebLN wallet.": "Invoice not received, please check your WebLN wallet.",
"Payment not received, please check your WebLN wallet.": "Payment not received, please check your WebLN wallet.",
"Amount not yet locked, please check your WebLN wallet.": "Amount not yet locked, please check your WebLN wallet.",
"You can close now your WebLN wallet popup.": "You can close now your WebLN wallet popup.",
"#48": "Phrases in components/TradeBox/Dialogs/ConfirmDispute.tsx",
"Do you want to open a dispute?": "Vill du öppna en dispyt?",

View File

@ -94,6 +94,10 @@
"The order has expired": "รายการหมดอายุแล้ว",
"Penalty lifted, good to go!": "สามารถซื้อขายได้แล้ว!",
"You cannot take an order yet! Wait {{timeMin}}m {{timeSec}}s": "คุณยังไม่สามารถดำเนินรายการได้! รออีก {{timeMin}} นาที {{timeSec}} วินาที",
"You send via {{method}} {{amount}}": "You send via {{method}} {{amount}}",
"You receive via Lightning {{amount}} Sats (routing budget may vary)": "You receive via Lightning {{amount}} Sats (routing budget may vary)",
"You send via Lightning {{amount}} Sats": "You send via Lightning {{amount}} Sats",
"You receive via {{method}} {{amount}}": "You receive via {{method}} {{amount}}",
"Order maker": "maker ของรายการ",
"Order taker": "taker ของรายการ",
"Order Details": "รายละเอียดรายการ",
@ -258,6 +262,11 @@
"Must be more than {{min}}%": "ต้องมากกว่า {{min}}%",
"Must be less than {{maxSats}": "ต้องน้อยกว่า {{maxSats}}",
"Must be more than {{minSats}}": "ต้องมากกว่า {{minSats}}",
"Amount": "จำนวน",
"Onchain amount to send (BTC)": "Onchain amount to send (BTC)",
"You receive approx {{swapSats}} LN Sats (fees might vary)": "You receive approx {{swapSats}} LN Sats (fees might vary)",
"Onchain amount to receive (BTC)": "Onchain amount to receive (BTC)",
"You send approx {{swapSats}} LN Sats (fees might vary)": "You send approx {{swapSats}} LN Sats (fees might vary)",
" of {{satoshis}} Satoshis": " เป็น Satoshis จำนวน {{satoshis}} Sats",
" at a {{premium}}% premium": " ในราคาแพงกว่าตลาด {{premium}}% ",
" at a {{discount}}% discount": " ในราคาถูกกว่าตลาด {{discount}}% ",
@ -274,7 +283,6 @@
"Amount of BTC to swap for LN Sats": "Amount of BTC to swap for LN Sats",
"Must be more than {{minAmount}}": "Must be more than {{minAmount}}",
"Must be less than {{maxAmount}}": "Must be less than {{maxAmount}}",
"Amount": "จำนวน",
"Must be shorter than 65 characters": "ต้องสั้นกว่า 65 ตัวอักษร",
"Swap Destination(s)": "Swap Destination(s)",
"Fiat Payment Method(s)": "วิธีการชำระเงินเฟียต",
@ -438,7 +446,7 @@
"#47": "Phrases in components/TradeBox/Dialogs/WebLN.tsx",
"WebLN": "WebLN",
"Invoice not received, please check your WebLN wallet.": "Invoice not received, please check your WebLN wallet.",
"Payment not received, please check your WebLN wallet.": "Payment not received, please check your WebLN wallet.",
"Amount not yet locked, please check your WebLN wallet.": "Amount not yet locked, please check your WebLN wallet.",
"You can close now your WebLN wallet popup.": "You can close now your WebLN wallet popup.",
"#48": "Phrases in components/TradeBox/Dialogs/ConfirmDispute.tsx",
"Do you want to open a dispute?": "ต้องการร้องเรียนหรือไม่?",

View File

@ -94,6 +94,10 @@
"The order has expired": "订单已到期",
"Penalty lifted, good to go!": "罚单已解除,没问题了!",
"You cannot take an order yet! Wait {{timeMin}}m {{timeSec}}s": "你暂时还不能吃单!请等{{timeMin}}分 {{timeSec}}秒",
"You send via {{method}} {{amount}}": "You send via {{method}} {{amount}}",
"You receive via Lightning {{amount}} Sats (routing budget may vary)": "You receive via Lightning {{amount}} Sats (routing budget may vary)",
"You send via Lightning {{amount}} Sats": "You send via Lightning {{amount}} Sats",
"You receive via {{method}} {{amount}}": "You receive via {{method}} {{amount}}",
"Order maker": "订单挂单方",
"Order taker": "订单吃单方",
"Order Details": "订单详情",
@ -258,6 +262,11 @@
"Must be more than {{min}}%": "必须多于 {{min}}%",
"Must be less than {{maxSats}": "必须少于 {{maxSats}}",
"Must be more than {{minSats}}": "必须多于 {{minSats}}",
"Amount": "金额",
"Onchain amount to send (BTC)": "Onchain amount to send (BTC)",
"You receive approx {{swapSats}} LN Sats (fees might vary)": "You receive approx {{swapSats}} LN Sats (fees might vary)",
"Onchain amount to receive (BTC)": "Onchain amount to receive (BTC)",
"You send approx {{swapSats}} LN Sats (fees might vary)": "You send approx {{swapSats}} LN Sats (fees might vary)",
" of {{satoshis}} Satoshis": "{{satoshis}} 聪",
" at a {{premium}}% premium": " 于 {{premium}}% 溢价",
" at a {{discount}}% discount": " 于 {{discount}}% 折扣",
@ -274,7 +283,6 @@
"Amount of BTC to swap for LN Sats": "Amount of BTC to swap for LN Sats",
"Must be more than {{minAmount}}": "Must be more than {{minAmount}}",
"Must be less than {{maxAmount}}": "Must be less than {{maxAmount}}",
"Amount": "金额",
"Must be shorter than 65 characters": "必须少于65个字符",
"Swap Destination(s)": "交换目的地",
"Fiat Payment Method(s)": "法币付款方法",
@ -438,7 +446,7 @@
"#47": "Phrases in components/TradeBox/Dialogs/WebLN.tsx",
"WebLN": "WebLN",
"Invoice not received, please check your WebLN wallet.": "没有收到发票,请查看你的 WebLN 钱包。",
"Payment not received, please check your WebLN wallet.": "没有收到付款,请查看你的 WebLN 钱包。",
"Amount not yet locked, please check your WebLN wallet.": "Amount not yet locked, please check your WebLN wallet.",
"You can close now your WebLN wallet popup.": "You can close now your WebLN wallet popup.",
"#48": "Phrases in components/TradeBox/Dialogs/ConfirmDispute.tsx",
"Do you want to open a dispute?": "你想开始争议吗?",

View File

@ -94,6 +94,10 @@
"The order has expired": "訂單已到期",
"Penalty lifted, good to go!": "罰單已解除, 沒問題了!",
"You cannot take an order yet! Wait {{timeMin}}m {{timeSec}}s": "你暫時還不能吃單!請等{{timeMin}}分 {{timeSec}}秒",
"You send via {{method}} {{amount}}": "You send via {{method}} {{amount}}",
"You receive via Lightning {{amount}} Sats (routing budget may vary)": "You receive via Lightning {{amount}} Sats (routing budget may vary)",
"You send via Lightning {{amount}} Sats": "You send via Lightning {{amount}} Sats",
"You receive via {{method}} {{amount}}": "You receive via {{method}} {{amount}}",
"Order maker": "訂單掛單方",
"Order taker": "訂單吃單方",
"Order Details": "訂單詳情",
@ -258,6 +262,11 @@
"Must be more than {{min}}%": "必須多於 {{min}}%",
"Must be less than {{maxSats}": "必須少於 {{maxSats}}",
"Must be more than {{minSats}}": "必須多於 {{minSats}}",
"Amount": "金額",
"Onchain amount to send (BTC)": "Onchain amount to send (BTC)",
"You receive approx {{swapSats}} LN Sats (fees might vary)": "You receive approx {{swapSats}} LN Sats (fees might vary)",
"Onchain amount to receive (BTC)": "Onchain amount to receive (BTC)",
"You send approx {{swapSats}} LN Sats (fees might vary)": "You send approx {{swapSats}} LN Sats (fees might vary)",
" of {{satoshis}} Satoshis": "{{satoshis}} 聰",
" at a {{premium}}% premium": " 於 {{premium}}% 溢價",
" at a {{discount}}% discount": " 於 {{discount}}% 折扣",
@ -274,7 +283,6 @@
"Amount of BTC to swap for LN Sats": "Amount of BTC to swap for LN Sats",
"Must be more than {{minAmount}}": "Must be more than {{minAmount}}",
"Must be less than {{maxAmount}}": "Must be less than {{maxAmount}}",
"Amount": "金額",
"Must be shorter than 65 characters": "必須少於65個字符",
"Swap Destination(s)": "交換目的地",
"Fiat Payment Method(s)": "法幣付款方法",
@ -438,7 +446,7 @@
"#47": "Phrases in components/TradeBox/Dialogs/WebLN.tsx",
"WebLN": "WebLN",
"Invoice not received, please check your WebLN wallet.": "沒有收到發票,請查看你的 WebLN 錢包。",
"Payment not received, please check your WebLN wallet.": "沒有收到付款,請查看你的 WebLN 錢包。",
"Amount not yet locked, please check your WebLN wallet.": "Amount not yet locked, please check your WebLN wallet.",
"You can close now your WebLN wallet popup.": "You can close now your WebLN wallet popup.",
"#48": "Phrases in components/TradeBox/Dialogs/ConfirmDispute.tsx",
"Do you want to open a dispute?": "你想開始爭議嗎?",