update translations, add names arg to ButtonGroup
This commit is contained in:
parent
715c8fd26f
commit
070cfd710c
|
@ -6,6 +6,7 @@ interface ButtonGroupProps {
|
|||
onChange: (x) => void
|
||||
unit?: string
|
||||
values: Array<string>
|
||||
names?: Array<string>
|
||||
}
|
||||
|
||||
const ButtonGroup: FunctionComponent<ButtonGroupProps> = ({
|
||||
|
@ -14,6 +15,7 @@ const ButtonGroup: FunctionComponent<ButtonGroupProps> = ({
|
|||
unit,
|
||||
values,
|
||||
onChange,
|
||||
names,
|
||||
}) => {
|
||||
return (
|
||||
<div className="bg-th-bkg-3 rounded-md">
|
||||
|
@ -44,8 +46,7 @@ const ButtonGroup: FunctionComponent<ButtonGroupProps> = ({
|
|||
width: `${100 / values.length}%`,
|
||||
}}
|
||||
>
|
||||
{v}
|
||||
{unit}
|
||||
{names ? (unit ? names[i] + unit : names[i]) : unit ? v + unit : v}
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
|
|
|
@ -395,7 +395,7 @@ const SwapTokenInfo: FunctionComponent<SwapTokenInfoProps> = ({
|
|||
<Disclosure.Panel>
|
||||
<div className="border border-th-bkg-4 border-t-0 p-3 rounded-b-md">
|
||||
<div className="font-bold m-1 mt-0 pb-2 text-th-fgd-1 text-base">
|
||||
Market Data
|
||||
{t('market-data')}
|
||||
</div>
|
||||
<div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-2 xl:grid-cols-3 grid-flow-row">
|
||||
{inputTokenInfo.market_cap_rank ? (
|
||||
|
@ -539,7 +539,7 @@ const SwapTokenInfo: FunctionComponent<SwapTokenInfoProps> = ({
|
|||
{topHolders?.inputHolders ? (
|
||||
<div className="pt-4">
|
||||
<div className="font-bold m-1 pb-3 text-th-fgd-1 text-base">
|
||||
Top 10 Holders
|
||||
{t('swap:top-ten')}
|
||||
</div>
|
||||
{topHolders.inputHolders.map((holder) => (
|
||||
<a
|
||||
|
@ -646,7 +646,7 @@ const SwapTokenInfo: FunctionComponent<SwapTokenInfoProps> = ({
|
|||
<Disclosure.Panel>
|
||||
<div className="border border-th-bkg-4 border-t-0 p-3 rounded-b-md">
|
||||
<div className="font-bold m-1 mt-0 pb-2 text-th-fgd-1 text-base">
|
||||
Market Data
|
||||
{t('market-data')}
|
||||
</div>
|
||||
<div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-2 xl:grid-cols-3 grid-flow-row">
|
||||
{outputTokenInfo.market_cap_rank ? (
|
||||
|
@ -790,7 +790,7 @@ const SwapTokenInfo: FunctionComponent<SwapTokenInfoProps> = ({
|
|||
{topHolders?.outputHolders ? (
|
||||
<div className="pt-4">
|
||||
<div className="font-bold m-1 pb-3 text-th-fgd-1 text-base">
|
||||
Top 10 Holders
|
||||
{t('swap:top-ten')}
|
||||
</div>
|
||||
{topHolders.outputHolders.map((holder) => (
|
||||
<a
|
||||
|
|
|
@ -9,18 +9,24 @@ import { numberCompacter, numberFormatter } from './SwapTokenInfo'
|
|||
import Button, { IconButton } from './Button'
|
||||
import Input from './Input'
|
||||
import { SearchIcon, XIcon } from '@heroicons/react/outline'
|
||||
import { useTranslation } from 'next-i18next'
|
||||
|
||||
const filterByVals = ['change-percent', '24h-volume']
|
||||
const timeFrameVals = ['24h', '7d', '30d']
|
||||
const insightTypeVals = ['best', 'worst']
|
||||
|
||||
dayjs.extend(relativeTime)
|
||||
|
||||
const SwapTokenInsights = ({ formState, jupiterTokens, setOutputToken }) => {
|
||||
const [tokenInsights, setTokenInsights] = useState([])
|
||||
const [filteredTokenInsights, setFilteredTokenInsights] = useState([])
|
||||
const [insightType, setInsightType] = useState('Best')
|
||||
const [filterBy, setFilterBy] = useState('Change %')
|
||||
const [timeframe, setTimeframe] = useState('24h')
|
||||
const [insightType, setInsightType] = useState(insightTypeVals[0])
|
||||
const [filterBy, setFilterBy] = useState(filterByVals[0])
|
||||
const [timeframe, setTimeframe] = useState(timeFrameVals[0])
|
||||
const [textFilter, setTextFilter] = useState('')
|
||||
const [showSearch, setShowSearch] = useState(false)
|
||||
const [loading, setLoading] = useState(false)
|
||||
const { t } = useTranslation(['common', 'swap'])
|
||||
|
||||
const getTokenInsights = async () => {
|
||||
setLoading(true)
|
||||
|
@ -36,11 +42,12 @@ const SwapTokenInsights = ({ formState, jupiterTokens, setOutputToken }) => {
|
|||
}
|
||||
|
||||
useEffect(() => {
|
||||
if (filterBy === 'Change %' && textFilter === '') {
|
||||
if (filterBy === filterByVals[0] && textFilter === '') {
|
||||
//filter by 'change %'
|
||||
setFilteredTokenInsights(
|
||||
tokenInsights
|
||||
.sort((a, b) =>
|
||||
insightType === 'Best'
|
||||
insightType === insightTypeVals[0] //insight type 'best'
|
||||
? b[`price_change_percentage_${timeframe}_in_currency`] -
|
||||
a[`price_change_percentage_${timeframe}_in_currency`]
|
||||
: a[`price_change_percentage_${timeframe}_in_currency`] -
|
||||
|
@ -49,11 +56,12 @@ const SwapTokenInsights = ({ formState, jupiterTokens, setOutputToken }) => {
|
|||
.slice(0, 10)
|
||||
)
|
||||
}
|
||||
if (filterBy === '24h Volume' && textFilter === '') {
|
||||
if (filterBy === filterByVals[1] && textFilter === '') {
|
||||
//filter by 24h vol
|
||||
setFilteredTokenInsights(
|
||||
tokenInsights
|
||||
.sort((a, b) =>
|
||||
insightType === 'Best'
|
||||
insightType === insightTypeVals[0] //insight type 'best'
|
||||
? b.total_volume - a.total_volume
|
||||
: a.total_volume - b.total_volume
|
||||
)
|
||||
|
@ -91,17 +99,18 @@ const SwapTokenInsights = ({ formState, jupiterTokens, setOutputToken }) => {
|
|||
activeValue={filterBy}
|
||||
className="h-10"
|
||||
onChange={(t) => setFilterBy(t)}
|
||||
values={['Change %', '24h Volume']}
|
||||
values={filterByVals}
|
||||
names={filterByVals.map((val) => t(`swap:${val}`))}
|
||||
/>
|
||||
</div>
|
||||
<div className="flex space-x-2">
|
||||
{filterBy === 'Change %' ? (
|
||||
{filterBy === filterByVals[0] ? ( //filter by change %
|
||||
<div className="w-36">
|
||||
<ButtonGroup
|
||||
activeValue={timeframe}
|
||||
className="h-10"
|
||||
onChange={(t) => setTimeframe(t)}
|
||||
values={['24h', '7d', '30d']}
|
||||
values={timeFrameVals}
|
||||
/>
|
||||
</div>
|
||||
) : null}
|
||||
|
@ -110,7 +119,8 @@ const SwapTokenInsights = ({ formState, jupiterTokens, setOutputToken }) => {
|
|||
activeValue={insightType}
|
||||
className="h-10"
|
||||
onChange={(t) => setInsightType(t)}
|
||||
values={['Best', 'Worst']}
|
||||
values={insightTypeVals}
|
||||
names={insightTypeVals.map((val) => t(`swap:${val}`))}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -167,12 +177,12 @@ const SwapTokenInsights = ({ formState, jupiterTokens, setOutputToken }) => {
|
|||
<div className="flex items-center space-x-3">
|
||||
<div
|
||||
className={`min-w-[48px] text-xs ${
|
||||
timeframe === '24h'
|
||||
timeframe === timeFrameVals[0] //timeframe 24h
|
||||
? insight.price_change_percentage_24h_in_currency >=
|
||||
0
|
||||
? 'text-th-green'
|
||||
: 'text-th-red'
|
||||
: timeframe === '7d'
|
||||
: timeframe === timeFrameVals[1] //timeframe 7d
|
||||
? insight.price_change_percentage_7d_in_currency >=
|
||||
0
|
||||
? 'text-th-green'
|
||||
|
@ -183,13 +193,13 @@ const SwapTokenInsights = ({ formState, jupiterTokens, setOutputToken }) => {
|
|||
: 'text-th-red'
|
||||
}`}
|
||||
>
|
||||
{timeframe === '24h'
|
||||
{timeframe === timeFrameVals[0] //timeframe 24h
|
||||
? insight.price_change_percentage_24h_in_currency
|
||||
? `${insight.price_change_percentage_24h_in_currency.toFixed(
|
||||
1
|
||||
)}%`
|
||||
: '?'
|
||||
: timeframe === '7d'
|
||||
: timeframe === timeFrameVals[1] //timeframe 7d
|
||||
? insight.price_change_percentage_7d_in_currency
|
||||
? `${insight.price_change_percentage_7d_in_currency.toFixed(
|
||||
1
|
||||
|
@ -225,7 +235,9 @@ const SwapTokenInsights = ({ formState, jupiterTokens, setOutputToken }) => {
|
|||
</div>
|
||||
<div className="flex items-center pl-2 space-x-3 text-right text-xs">
|
||||
<div>
|
||||
<div className="mb-[4px] text-th-fgd-4">Price</div>
|
||||
<div className="mb-[4px] text-th-fgd-4">
|
||||
{t('price')}
|
||||
</div>
|
||||
<div className="text-th-fgd-3">
|
||||
$
|
||||
{insight.current_price.toLocaleString(undefined, {
|
||||
|
@ -236,7 +248,9 @@ const SwapTokenInsights = ({ formState, jupiterTokens, setOutputToken }) => {
|
|||
</div>
|
||||
<div className="border-l border-th-bkg-4" />
|
||||
<div>
|
||||
<div className="mb-[4px] text-th-fgd-4">24h Vol</div>
|
||||
<div className="mb-[4px] text-th-fgd-4">
|
||||
{t('swap:24h-vol')}
|
||||
</div>
|
||||
<div className="text-th-fgd-3">
|
||||
{insight.total_volume > 0
|
||||
? `$${numberCompacter.format(
|
||||
|
@ -263,7 +277,7 @@ const SwapTokenInsights = ({ formState, jupiterTokens, setOutputToken }) => {
|
|||
})
|
||||
}
|
||||
>
|
||||
Buy
|
||||
{t('buy')}
|
||||
</Button>
|
||||
</div>
|
||||
<Disclosure.Panel className="bg-th-bkg-2 border-b border-th-bkg-4 px-2 pb-2">
|
||||
|
@ -271,7 +285,7 @@ const SwapTokenInsights = ({ formState, jupiterTokens, setOutputToken }) => {
|
|||
{insight.market_cap_rank ? (
|
||||
<div className="border border-th-bkg-4 m-1 p-3 rounded-md">
|
||||
<div className="text-th-fgd-3 text-xs">
|
||||
Market Cap Rank
|
||||
{t('swap:market-cap-rank')}
|
||||
</div>
|
||||
<div className="font-bold text-th-fgd-1">
|
||||
#{insight.market_cap_rank}
|
||||
|
@ -281,7 +295,7 @@ const SwapTokenInsights = ({ formState, jupiterTokens, setOutputToken }) => {
|
|||
{insight?.market_cap && insight?.market_cap !== 0 ? (
|
||||
<div className="border border-th-bkg-4 m-1 p-3 rounded-md">
|
||||
<div className="text-th-fgd-3 text-xs">
|
||||
Market Cap
|
||||
{t('swap:market-cap')}
|
||||
</div>
|
||||
<div className="font-bold text-th-fgd-1">
|
||||
${numberCompacter.format(insight.market_cap)}
|
||||
|
@ -291,14 +305,15 @@ const SwapTokenInsights = ({ formState, jupiterTokens, setOutputToken }) => {
|
|||
{insight?.circulating_supply ? (
|
||||
<div className="border border-th-bkg-4 m-1 p-3 rounded-md">
|
||||
<div className="text-th-fgd-3 text-xs">
|
||||
Token Supply
|
||||
{t('swap:token-supply')}
|
||||
</div>
|
||||
<div className="font-bold text-th-fgd-1">
|
||||
{numberCompacter.format(insight.circulating_supply)}
|
||||
</div>
|
||||
{insight?.max_supply ? (
|
||||
<div className="text-th-fgd-2 text-xs">
|
||||
Max Supply:{' '}
|
||||
{t('swap:max-supply')}
|
||||
{': '}
|
||||
{numberCompacter.format(insight.max_supply)}
|
||||
</div>
|
||||
) : null}
|
||||
|
@ -307,7 +322,7 @@ const SwapTokenInsights = ({ formState, jupiterTokens, setOutputToken }) => {
|
|||
{insight?.ath ? (
|
||||
<div className="border border-th-bkg-4 m-1 p-3 rounded-md">
|
||||
<div className="text-th-fgd-3 text-xs">
|
||||
All-Time High
|
||||
{t('swap:ath')}
|
||||
</div>
|
||||
<div className="flex">
|
||||
<div className="font-bold text-th-fgd-1">
|
||||
|
@ -335,7 +350,7 @@ const SwapTokenInsights = ({ formState, jupiterTokens, setOutputToken }) => {
|
|||
{insight?.atl ? (
|
||||
<div className="border border-th-bkg-4 m-1 p-3 rounded-md">
|
||||
<div className="text-th-fgd-3 text-xs">
|
||||
All-Time Low
|
||||
{t('swap:atl')}
|
||||
</div>
|
||||
<div className="flex">
|
||||
<div className="font-bold text-th-fgd-1">
|
||||
|
@ -377,7 +392,7 @@ const SwapTokenInsights = ({ formState, jupiterTokens, setOutputToken }) => {
|
|||
})
|
||||
}
|
||||
>
|
||||
Buy
|
||||
{t('buy')}
|
||||
</Button>
|
||||
</Disclosure.Panel>
|
||||
</>
|
||||
|
@ -387,13 +402,13 @@ const SwapTokenInsights = ({ formState, jupiterTokens, setOutputToken }) => {
|
|||
})
|
||||
) : (
|
||||
<div className="bg-th-bkg-3 mt-3 p-4 rounded-md text-center text-th-fgd-3">
|
||||
No tokens found...
|
||||
{t('swap:no-tokens-found')}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
) : (
|
||||
<div className="bg-th-bkg-3 mt-3 p-4 rounded-md text-center text-th-fgd-3">
|
||||
Market insights are not available
|
||||
{t('swap:insights-not-available')}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -51,7 +51,7 @@ const Tabs: FunctionComponent<TabsProps> = ({
|
|||
`}
|
||||
style={{ width: `${100 / tabs.length}%`, maxWidth: '176px' }}
|
||||
>
|
||||
{t(tabName.toLowerCase().replace(' ', '-'))}
|
||||
{t(tabName.toLowerCase().replace(/\s/g, '-'))}
|
||||
{tabCount && tabCount.count > 0 ? (
|
||||
<Count count={tabCount.count} />
|
||||
) : null}
|
||||
|
|
|
@ -263,7 +263,7 @@ const TradeHistoryTable = ({ numTrades }: { numTrades?: number }) => {
|
|||
<Td className="!py-2 ">
|
||||
{formatUsdValue(trade.value)}
|
||||
</Td>
|
||||
<Td className="!py-2 ">{trade.liquidity}</Td>
|
||||
<Td className="!py-2 ">{t(trade.liquidity.toLowerCase())}</Td>
|
||||
<Td className="!py-2 ">
|
||||
{formatUsdValue(trade.feeCost)}
|
||||
</Td>
|
||||
|
@ -286,7 +286,7 @@ const TradeHistoryTable = ({ numTrades }: { numTrades?: number }) => {
|
|||
: trade.taker
|
||||
}`}
|
||||
>
|
||||
View Counterparty
|
||||
{t('view-counterparty')}
|
||||
</a>
|
||||
) : null}
|
||||
</Td>
|
||||
|
|
|
@ -13,13 +13,13 @@ import {
|
|||
import FloatingElement from '../FloatingElement'
|
||||
|
||||
export default function TradeForm() {
|
||||
const [showAdvancedFrom, setShowAdvancedForm] = useState(true)
|
||||
const [showAdvancedForm, setShowAdvancedForm] = useState(true)
|
||||
const marketConfig = useMangoStore((s) => s.selectedMarket.config)
|
||||
const mangoGroup = useMangoStore((s) => s.selectedMangoGroup.current)
|
||||
const connected = useMangoStore((s) => s.wallet.connected)
|
||||
|
||||
const handleFormChange = () => {
|
||||
setShowAdvancedForm(!showAdvancedFrom)
|
||||
setShowAdvancedForm(!showAdvancedForm)
|
||||
}
|
||||
|
||||
const initLeverage = useMemo(() => {
|
||||
|
@ -33,8 +33,8 @@ export default function TradeForm() {
|
|||
|
||||
return (
|
||||
<FlipCard>
|
||||
<FlipCardInner flip={showAdvancedFrom}>
|
||||
{showAdvancedFrom ? (
|
||||
<FlipCardInner flip={showAdvancedForm}>
|
||||
{showAdvancedForm ? (
|
||||
<FlipCardFront>
|
||||
<FloatingElement className="h-full px-1 py-0 md:px-4 md:py-4 fadein-floating-element">
|
||||
{/* <div className={`${!connected ? 'filter blur-sm' : ''}`}> */}
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
"add-name": "Add Name",
|
||||
"alert-health": "Alert when health is below",
|
||||
"alert-info": "Email when health <= {{health}}%",
|
||||
"alerts": "Alerts",
|
||||
"alerts-disclaimer": "Do not rely solely on alerts to protect your account. We can't guarantee they will be delivered.",
|
||||
"alerts-max": "You've reached the maximum number of active alerts.",
|
||||
"all-assets": "All Assets",
|
||||
|
@ -189,6 +190,7 @@
|
|||
"low": "Low",
|
||||
"maint-health": "Maint Health",
|
||||
"make-trade": "Make a trade",
|
||||
"maker": "Maker",
|
||||
"maker-fee": "Maker Fee",
|
||||
"mango": "Mango",
|
||||
"mango-accounts": "Mango Accounts",
|
||||
|
@ -255,8 +257,8 @@
|
|||
"orderbook": "Orderbook",
|
||||
"orderbook-animation": "Orderbook Animation",
|
||||
"orders": "Orders",
|
||||
"performance-insights": "Performance Insights",
|
||||
"performance": "Performance",
|
||||
"performance-insights": "Performance Insights",
|
||||
"period-progress": "Period Progress",
|
||||
"perp": "Perp",
|
||||
"perp-fees": "Mango Perp Fees",
|
||||
|
@ -288,8 +290,8 @@
|
|||
"recent": "Recent",
|
||||
"recent-trades": "Recent Trades",
|
||||
"redeem-failure": "Error redeeming MNGO",
|
||||
"redeem-pnl": "Redeem PNL",
|
||||
"redeem-success": "Successfully redeemed MNGO",
|
||||
"redeem-pnl": "Redeem PnL",
|
||||
"refresh": "Refresh",
|
||||
"refresh-data": "Refresh Data",
|
||||
"repay": "Repay",
|
||||
|
@ -332,6 +334,7 @@
|
|||
"swap": "Swap",
|
||||
"take-profit": "Take Profit",
|
||||
"take-profit-limit": "Take Profit Limit",
|
||||
"taker": "Taker",
|
||||
"taker-fee": "Taker Fee",
|
||||
"target-period-length": "Target Period Length",
|
||||
"themes-tip-desc": "Mango, Dark or Light (if you're that way inclined).",
|
||||
|
@ -394,6 +397,7 @@
|
|||
"v3-welcome": "Welcome to Mango",
|
||||
"value": "Value",
|
||||
"view-all-trades": "View all trades in the Account page",
|
||||
"view-counterparty": "View Counterparty",
|
||||
"view-transaction": "View Transaction",
|
||||
"wallet": "Wallet",
|
||||
"wallet-connected": "Wallet connected",
|
||||
|
|
|
@ -1,11 +1,15 @@
|
|||
{
|
||||
"24h-vol": "24h Vol",
|
||||
"24h-volume": "24h Volume",
|
||||
"ata-deposit": "Deposit",
|
||||
"ata-deposit-details": "{{cost}} SOL for {{count}} ATA Account",
|
||||
"ata-deposit-details_plural": "{{cost}} SOL for {{count}} ATA Accounts",
|
||||
"ath": "All-Time High",
|
||||
"atl": "All-Time Low",
|
||||
"bal": "Bal:",
|
||||
"best": "Best",
|
||||
"best-swap": "Best Swap",
|
||||
"change-percent": "Change %",
|
||||
"chart-not-available": "Chart not available",
|
||||
"cheaper": "cheaper than",
|
||||
"fees-paid-to": "Fees paid to {{feeRecipient}}",
|
||||
|
@ -14,6 +18,7 @@
|
|||
"got-it": "Got It",
|
||||
"heres-how": "Here's how",
|
||||
"input-info-unavailable": "Input token information is not available.",
|
||||
"insights-not-available": "Market insights are not available",
|
||||
"jupiter-error": "Error in Jupiter – Try changing your input",
|
||||
"market-cap": "Market Cap",
|
||||
"market-cap-rank": "Market Cap Rank",
|
||||
|
@ -21,6 +26,7 @@
|
|||
"minimum-received": "Minimum Received",
|
||||
"more-expensive": "more expensive than",
|
||||
"need-ata-account": "You need to have an Associated Token Account.",
|
||||
"no-tokens-found": "No tokens found...",
|
||||
"other-routes": "{{numberOfRoutes}} other routes",
|
||||
"output-info-unavailable": "Output token information is not available.",
|
||||
"pay": "Pay",
|
||||
|
@ -42,8 +48,10 @@
|
|||
"swapping": "Swapping...",
|
||||
"to": "to",
|
||||
"token-supply": "Token Supply",
|
||||
"top-ten": "Top 10 Holders",
|
||||
"transaction-fee": "Transaction Fee",
|
||||
"unavailable": "Unavailable",
|
||||
"worst": "Worst",
|
||||
"you-pay": "You pay",
|
||||
"you-receive": "You receive"
|
||||
}
|
|
@ -23,6 +23,7 @@
|
|||
"add-name": "Añadir nombre",
|
||||
"alert-health": "Alert when health is below",
|
||||
"alert-info": "Email when health <= {{health}}%",
|
||||
"alerts": "Alerts",
|
||||
"alerts-disclaimer": "Do not rely solely on alerts to protect your account. We can't guarantee they will be delivered.",
|
||||
"alerts-max": "You've reached the maximum number of active alerts.",
|
||||
"all-assets": "Todos los activos",
|
||||
|
@ -189,6 +190,7 @@
|
|||
"low": "Bajo",
|
||||
"maint-health": "Salud de mantenimiento",
|
||||
"make-trade": "Hacer un trato",
|
||||
"maker": "Maker",
|
||||
"maker-fee": "orden límite",
|
||||
"mango": "Mango",
|
||||
"mango-accounts": "Cuentas Mango",
|
||||
|
@ -255,6 +257,7 @@
|
|||
"orderbook": "libro de ordenes",
|
||||
"orderbook-animation": "Animación del libro de ordenes",
|
||||
"orders": "ordenes",
|
||||
"performance": "Performance",
|
||||
"performance-insights": "Performance Insights",
|
||||
"period-progress": "Period Progress",
|
||||
"perp": "perpetuo",
|
||||
|
@ -287,8 +290,8 @@
|
|||
"recent": "Reciente",
|
||||
"recent-trades": "Operaciones recientes",
|
||||
"redeem-failure": "Error al canjear MNGO",
|
||||
"redeem-success": "MNGO canjeado con éxito",
|
||||
"redeem-pnl": "Resolver",
|
||||
"redeem-success": "MNGO canjeado con éxito",
|
||||
"refresh": "Actualizar",
|
||||
"refresh-data": "Actualizar datos",
|
||||
"repay": "Pagar",
|
||||
|
@ -331,6 +334,7 @@
|
|||
"swap": "Swap",
|
||||
"take-profit": "Tomar ganancias",
|
||||
"take-profit-limit": "Tomar el límite de ganancias",
|
||||
"taker": "Taker",
|
||||
"taker-fee": "Orden mercado",
|
||||
"target-period-length": "Target Period Length",
|
||||
"themes-tip-desc": "Mango, Dark o Light (si te gusta eso).",
|
||||
|
@ -393,6 +397,7 @@
|
|||
"v3-welcome": "Bienvenido a Mango V3",
|
||||
"value": "Valor",
|
||||
"view-all-trades": "Ver todas las operaciones en la página de la cuenta",
|
||||
"view-counterparty": "View Counterparty",
|
||||
"view-transaction": "View Transaction",
|
||||
"wallet": "Wallet",
|
||||
"wallet-connected": "Wallet connected",
|
||||
|
@ -406,7 +411,5 @@
|
|||
"you-must-leave-enough-sol": "You must leave enough SOL in your wallet to pay for the transaction",
|
||||
"your-account": "Su cuenta",
|
||||
"your-assets": "Sus activos",
|
||||
"your-borrows": "Sus préstamos",
|
||||
|
||||
"performance": "Performance"
|
||||
"your-borrows": "Sus préstamos"
|
||||
}
|
|
@ -1,11 +1,15 @@
|
|||
{
|
||||
"24h-vol": "24h Vol",
|
||||
"24h-volume": "24h Volume",
|
||||
"ata-deposit": "Deposit",
|
||||
"ata-deposit-details": "{{cost}} SOL for {{count}} ATA Account",
|
||||
"ata-deposit-details_plural": "{{cost}} SOL for {{count}} ATA Accounts",
|
||||
"ath": "All-Time High",
|
||||
"atl": "All-Time Low",
|
||||
"bal": "Bal:",
|
||||
"best": "Best",
|
||||
"best-swap": "Best Swap",
|
||||
"change-percent": "Change %",
|
||||
"chart-not-available": "Chart not available",
|
||||
"cheaper": "cheaper than",
|
||||
"fees-paid-to": "Fees paid to {{feeRecipient}}",
|
||||
|
@ -14,6 +18,7 @@
|
|||
"got-it": "Got It",
|
||||
"heres-how": "Here's how",
|
||||
"input-info-unavailable": "Input token information is not available.",
|
||||
"insights-not-available": "Market insights are not available",
|
||||
"jupiter-error": "Error in Jupiter – try changing your input",
|
||||
"market-cap": "Market Cap",
|
||||
"market-cap-rank": "Market Cap Rank",
|
||||
|
@ -21,6 +26,7 @@
|
|||
"minimum-received": "Minimum Received",
|
||||
"more-expensive": "more expensive than",
|
||||
"need-ata-account": "You need to have an Associated Token Account.",
|
||||
"no-tokens-found": "No tokens found...",
|
||||
"other-routes": "{{numberOfRoutes}} other routes",
|
||||
"output-info-unavailable": "Output token information is not available.",
|
||||
"pay": "Pay",
|
||||
|
@ -42,8 +48,10 @@
|
|||
"swapping": "Swapping...",
|
||||
"to": "to",
|
||||
"token-supply": "Token Supply",
|
||||
"top-ten": "Top 10 Holders",
|
||||
"transaction-fee": "Transaction Fee",
|
||||
"unavailable": "Unavailable",
|
||||
"worst": "Worst",
|
||||
"you-pay": "You pay",
|
||||
"you-receive": "You receive"
|
||||
}
|
|
@ -4,7 +4,7 @@
|
|||
"accept": "接受",
|
||||
"accept-terms": "我明白并接受使用此平台的风险",
|
||||
"account": "帐户",
|
||||
"account-address-warning": "Do not send tokens directly to your account address.",
|
||||
"account-address-warning": "千万不要将币种直接传送至帐户地址。",
|
||||
"account-details-tip-desc": "当您进行首次存款时,我们将为您设置一个Mango账户。您的钱包中至少需要0.0035 SOL才能支付创建帐户的押金。",
|
||||
"account-details-tip-title": "帐户细节",
|
||||
"account-equity": "帐户余额",
|
||||
|
@ -21,10 +21,11 @@
|
|||
"active-alerts": "活动警报",
|
||||
"add-more-sol": "为了避免交易出错请给被连结的钱包多存入一点SOL。",
|
||||
"add-name": "加标签",
|
||||
"alert-health": "Alert when health is below",
|
||||
"alerts": "警报",
|
||||
"alert-health": "健康度低于此度发警报",
|
||||
"alert-info": "健康度在{{health}}%以下时发电子邮件",
|
||||
"alerts-disclaimer": "请别全靠警报来保护资产。我们无法保证会准时发出。",
|
||||
"alerts-max": "You've reached the maximum number of active alerts.",
|
||||
"alerts-max": "您以达到活动警报数量限制。",
|
||||
"all-assets": "所有资产",
|
||||
"amount": "数量",
|
||||
"approximate-time": "大概时间",
|
||||
|
@ -130,9 +131,9 @@
|
|||
"est-slippage": "预计下滑",
|
||||
"estimated-liq-price": "预计清算价格",
|
||||
"explorer": "浏览器",
|
||||
"export-data": "Export CSV",
|
||||
"export-data-empty": "No data to export",
|
||||
"export-data-success": "CSV exported successfully",
|
||||
"export-data": "导出CSV",
|
||||
"export-data-empty": "无资料可导出",
|
||||
"export-data-success": "CSV导出成功",
|
||||
"fee": "费率",
|
||||
"fee-discount": "费率折扣",
|
||||
"first-deposit-desc": "创建Mango帐户最少需要0.035 SOL。",
|
||||
|
@ -143,7 +144,7 @@
|
|||
"health-check": "帐户健康检查",
|
||||
"health-ratio": "健康比率",
|
||||
"hide-all": "在导航栏中隐藏全部",
|
||||
"hide-dust": "Hide dust",
|
||||
"hide-dust": "隐藏尘土",
|
||||
"high": "高",
|
||||
"history": "历史",
|
||||
"history-empty": "没有历史",
|
||||
|
@ -189,6 +190,7 @@
|
|||
"low": "低",
|
||||
"maint-health": "维持健康度",
|
||||
"make-trade": "下订单",
|
||||
"maker": "挂单者",
|
||||
"maker-fee": "挂单费率",
|
||||
"mango": "Mango",
|
||||
"mango-accounts": "Mango帐户",
|
||||
|
@ -223,8 +225,8 @@
|
|||
"name-your-account": "给帐户标签",
|
||||
"net": "净",
|
||||
"net-balance": "净余额",
|
||||
"net-interest-value": "Net Interest Value",
|
||||
"net-interest-value-desc": "Calculated at the time it was earned/paid. This might be useful at tax time.",
|
||||
"net-interest-value": "利息净价值",
|
||||
"net-interest-value-desc": "利息是以获取/付出时价值来计算的。纳税时这也许会有用。",
|
||||
"new": "新子帐户",
|
||||
"new-account": "新子帐户",
|
||||
"new-alert": "创建警报",
|
||||
|
@ -255,8 +257,8 @@
|
|||
"orderbook": "订单簿",
|
||||
"orderbook-animation": "订单动画",
|
||||
"orders": "订单",
|
||||
"performance-insights": "Performance Insights",
|
||||
"performance": "表现",
|
||||
"performance-insights": "表现分析",
|
||||
"period-progress": "期间进度",
|
||||
"perp": "Perp",
|
||||
"perp-fees": "Mango永续合约费率",
|
||||
|
@ -332,6 +334,7 @@
|
|||
"swap": "换币",
|
||||
"take-profit": "止盈",
|
||||
"take-profit-limit": "限价止盈",
|
||||
"taker": "吃单者",
|
||||
"taker-fee": "吃单费率",
|
||||
"target-period-length": "目标期间长度",
|
||||
"themes-tip-desc": "Mango,黑暗或明亮(看您偏向)。",
|
||||
|
@ -382,7 +385,7 @@
|
|||
"type": "类型",
|
||||
"unrealized-pnl": "未实现盈亏",
|
||||
"unsettled": "未结清",
|
||||
"unsettled-balance": "未结清余额",
|
||||
"unsettled-balance": "未实现盈亏",
|
||||
"unsettled-balances": "未结清余额",
|
||||
"unsettled-positions": "未结清持仓",
|
||||
"use-explorer-one": "使用",
|
||||
|
@ -394,6 +397,7 @@
|
|||
"v3-welcome": "欢迎到Mango V3",
|
||||
"value": "价值",
|
||||
"view-all-trades": "在帐户页面查看所以交易",
|
||||
"view-counterparty": "查看交易对方",
|
||||
"view-transaction": "查看交易",
|
||||
"wallet": "钱包",
|
||||
"wallet-connected": "已连结钱包",
|
||||
|
|
|
@ -1,11 +1,15 @@
|
|||
{
|
||||
"24h-vol": "24h成交量",
|
||||
"24h-volume": "24h成交量",
|
||||
"ata-deposit": "押金",
|
||||
"ata-deposit-details": "{{cost}} SOL为 {{count}} ATA帐户",
|
||||
"ata-deposit-details_plural": "{{cost}} SOL为 {{count}} ATA帐户",
|
||||
"ath": "历史高价",
|
||||
"atl": "历史低价",
|
||||
"bal": "余额:",
|
||||
"best": "最佳",
|
||||
"best-swap": "最佳换币",
|
||||
"change-percent": "变动%",
|
||||
"chart-not-available": "无法显示图表",
|
||||
"cheaper": "低于",
|
||||
"fees-paid-to": "费用缴给{{feeRecipient}}",
|
||||
|
@ -14,6 +18,7 @@
|
|||
"got-it": "明白",
|
||||
"heres-how": "了解更多",
|
||||
"input-info-unavailable": "获取付出币种资料时出错",
|
||||
"insights-not-available": "获取时市场分析出错",
|
||||
"jupiter-error": "Jupiter出错,请更改输入",
|
||||
"market-cap": "总市值",
|
||||
"market-cap-rank": "总市值排名",
|
||||
|
@ -21,6 +26,7 @@
|
|||
"minimum-received": "最好获得",
|
||||
"more-expensive": "高于",
|
||||
"need-ata-account": "您必有一个关联币种帐户(ATA)。",
|
||||
"no-tokens-found": "找不到币种...",
|
||||
"other-routes": "{{numberOfRoutes}}条其他路线",
|
||||
"output-info-unavailable": "获取收到币种资料时出错",
|
||||
"pay": "付出",
|
||||
|
@ -42,8 +48,10 @@
|
|||
"swapping": "正在交易...",
|
||||
"to": "到",
|
||||
"token-supply": "流通供应量",
|
||||
"top-ten": "前十名持有者",
|
||||
"transaction-fee": "交易费用",
|
||||
"unavailable": "无资料",
|
||||
"worst": "最差",
|
||||
"you-pay": "您付出",
|
||||
"you-receive": "您收到"
|
||||
}
|
|
@ -4,7 +4,7 @@
|
|||
"accept": "接受",
|
||||
"accept-terms": "我明白並接受使用此平台的風險",
|
||||
"account": "帳戶",
|
||||
"account-address-warning": "Do not send tokens directly to your account address.",
|
||||
"account-address-warning": "千萬不要將幣種直接傳送至帳戶地址。",
|
||||
"account-details-tip-desc": "當您進行首次存款時,我們將為您設置一個Mango賬戶。您的錢包中至少需要0.0035 SOL才能支付創建帳戶的押金。",
|
||||
"account-details-tip-title": "帳戶細節",
|
||||
"account-equity": "帳戶餘額",
|
||||
|
@ -21,10 +21,11 @@
|
|||
"active-alerts": "活動警報",
|
||||
"add-more-sol": "為了避免交易出錯請給被連結的錢包多存入一點SOL。",
|
||||
"add-name": "加標籤",
|
||||
"alert-health": "Alert when health is below",
|
||||
"alerts": "警報",
|
||||
"alert-health": "健康度低於此度發警報",
|
||||
"alert-info": "健康度在{{health}}%以下時發電子郵件",
|
||||
"alerts-disclaimer": "請別全靠警報來保護資產。我們無法保證會準時發出。",
|
||||
"alerts-max": "You've reached the maximum number of active alerts.",
|
||||
"alerts-max": "您以達到活動警報數量限制。",
|
||||
"all-assets": "所有資產",
|
||||
"amount": "數量",
|
||||
"approximate-time": "大概時間",
|
||||
|
@ -130,9 +131,9 @@
|
|||
"est-slippage": "預計下滑",
|
||||
"estimated-liq-price": "預計清算價格",
|
||||
"explorer": "瀏覽器",
|
||||
"export-data": "Export CSV",
|
||||
"export-data-empty": "No data to export",
|
||||
"export-data-success": "CSV exported successfully",
|
||||
"export-data": "導出CSV",
|
||||
"export-data-empty": "無資料可導出",
|
||||
"export-data-success": "CSV導出成功",
|
||||
"fee": "費率",
|
||||
"fee-discount": "費率折扣",
|
||||
"first-deposit-desc": "創建Mango帳戶最少需要0.035 SOL。",
|
||||
|
@ -143,7 +144,7 @@
|
|||
"health-check": "帳戶健康檢查",
|
||||
"health-ratio": "健康比率",
|
||||
"hide-all": "在導航欄中隱藏全部",
|
||||
"hide-dust": "Hide dust",
|
||||
"hide-dust": "隱藏塵土",
|
||||
"high": "高",
|
||||
"history": "歷史",
|
||||
"history-empty": "沒有歷史",
|
||||
|
@ -189,6 +190,7 @@
|
|||
"low": "低",
|
||||
"maint-health": "維持健康度",
|
||||
"make-trade": "下訂單",
|
||||
"maker": "掛單者",
|
||||
"maker-fee": "掛單費率",
|
||||
"mango": "Mango",
|
||||
"mango-accounts": "Mango帳戶",
|
||||
|
@ -196,7 +198,7 @@
|
|||
"margin-available": "可用保證金",
|
||||
"market": "市場",
|
||||
"market-close": "市價平倉",
|
||||
"market-data": "Market Data",
|
||||
"market-data": "市場現況",
|
||||
"market-details": "市場細節",
|
||||
"market-order": "市價",
|
||||
"markets": "市場",
|
||||
|
@ -223,8 +225,8 @@
|
|||
"name-your-account": "給帳戶標籤",
|
||||
"net": "淨",
|
||||
"net-balance": "淨餘額",
|
||||
"net-interest-value": "Net Interest Value",
|
||||
"net-interest-value-desc": "Calculated at the time it was earned/paid. This might be useful at tax time.",
|
||||
"net-interest-value": "利息淨價值",
|
||||
"net-interest-value-desc": "利息是以獲取/付出時價值來計算的。納稅時這也許會有用。",
|
||||
"new": "新子帳戶",
|
||||
"new-account": "新子帳戶",
|
||||
"new-alert": "創建警報",
|
||||
|
@ -255,8 +257,8 @@
|
|||
"orderbook": "掛單簿",
|
||||
"orderbook-animation": "訂單動畫",
|
||||
"orders": "訂單",
|
||||
"performance-insights": "Performance Insights",
|
||||
"performance": "表現",
|
||||
"performance-insights": "表現分析",
|
||||
"period-progress": "期間進度",
|
||||
"perp": "Perp",
|
||||
"perp-fees": "Mango永續合約費率",
|
||||
|
@ -265,9 +267,9 @@
|
|||
"perp-positions-tip-title": "永續合約當前持倉細節",
|
||||
"perpetual-futures": "永續合約",
|
||||
"perps": "永續合約",
|
||||
"pnl-error": "結清盈虧出錯了",
|
||||
"pnl-help": "結清會更新USDC餘額來處理尚未結清的盈虧量。",
|
||||
"pnl-success": "已結清盈虧",
|
||||
"pnl-error": "實現盈虧出錯了",
|
||||
"pnl-help": "實現會更新USDC餘額來處理尚未實現的盈虧。",
|
||||
"pnl-success": "實現盈虧成功",
|
||||
"portfolio": "資產組合",
|
||||
"position": "當前持倉",
|
||||
"position-size": "當前持倉數量",
|
||||
|
@ -288,7 +290,7 @@
|
|||
"recent": "最近",
|
||||
"recent-trades": "最近成交",
|
||||
"redeem-failure": "收穫MNGO獎勵出錯了",
|
||||
"redeem-pnl": "結清",
|
||||
"redeem-pnl": "實現盈虧",
|
||||
"redeem-success": "已收穫MNGO獎勵了",
|
||||
"refresh": "更新",
|
||||
"refresh-data": "更新資料",
|
||||
|
@ -332,6 +334,7 @@
|
|||
"swap": "換幣",
|
||||
"take-profit": "止盈",
|
||||
"take-profit-limit": "限價止盈",
|
||||
"taker": "吃單者",
|
||||
"taker-fee": "吃單費率",
|
||||
"target-period-length": "目標期間長度",
|
||||
"themes-tip-desc": "Mango,黑暗或明亮(看您偏向)。",
|
||||
|
@ -382,7 +385,7 @@
|
|||
"type": "類型",
|
||||
"unrealized-pnl": "未實現盈虧",
|
||||
"unsettled": "未結清",
|
||||
"unsettled-balance": "未結清餘額",
|
||||
"unsettled-balance": "未實現盈虧",
|
||||
"unsettled-balances": "未結清餘額",
|
||||
"unsettled-positions": "未結清持倉",
|
||||
"use-explorer-one": "使用",
|
||||
|
@ -394,6 +397,7 @@
|
|||
"v3-welcome": "歡迎到Mango V3",
|
||||
"value": "價值",
|
||||
"view-all-trades": "在帳戶頁面查看所以交易",
|
||||
"view-counterparty": "查看交易對方",
|
||||
"view-transaction": "查看交易",
|
||||
"wallet": "錢包",
|
||||
"wallet-connected": "已連結錢包",
|
||||
|
|
|
@ -1,11 +1,15 @@
|
|||
{
|
||||
"24h-vol": "24h成交量",
|
||||
"24h-volume": "24h成交量",
|
||||
"ata-deposit": "押金",
|
||||
"ata-deposit-details": "{{cost}} SOL為 {{count}} ATA帳戶",
|
||||
"ata-deposit-details_plural": "{{cost}} SOL為 {{count}} ATA帳戶",
|
||||
"ath": "歷史高價",
|
||||
"atl": "歷史低價",
|
||||
"bal": "餘額:",
|
||||
"best": "最佳",
|
||||
"best-swap": "最佳換幣",
|
||||
"change-percent": "變動%",
|
||||
"chart-not-available": "無法顯示圖表",
|
||||
"cheaper": "低於",
|
||||
"fees-paid-to": "費用繳給{{feeRecipient}}",
|
||||
|
@ -14,6 +18,7 @@
|
|||
"got-it": "明白",
|
||||
"heres-how": "了解更多",
|
||||
"input-info-unavailable": "獲取付出幣種資料時出錯",
|
||||
"insights-not-available": "獲取時市場分析出錯",
|
||||
"jupiter-error": "Jupiter出錯,請更改輸入",
|
||||
"market-cap": "總市值",
|
||||
"market-cap-rank": "總市值排名",
|
||||
|
@ -21,6 +26,7 @@
|
|||
"minimum-received": "最好獲得",
|
||||
"more-expensive": "高於",
|
||||
"need-ata-account": "您必有一個關聯幣種帳戶(ATA)。",
|
||||
"no-tokens-found": "找不到幣種...",
|
||||
"other-routes": "{{numberOfRoutes}}條其他路線",
|
||||
"output-info-unavailable": "獲取收到幣種資料時出錯",
|
||||
"pay": "付出",
|
||||
|
@ -42,8 +48,10 @@
|
|||
"swapping": "正在換幣...",
|
||||
"to": "到",
|
||||
"token-supply": "流通供應量",
|
||||
"top-ten": "前十名持有者",
|
||||
"transaction-fee": "交易費用",
|
||||
"unavailable": "無資料",
|
||||
"worst": "最差",
|
||||
"you-pay": "您付出",
|
||||
"you-receive": "您收到"
|
||||
}
|
Loading…
Reference in New Issue