update translations, add names arg to ButtonGroup

This commit is contained in:
rjpeterson 2022-01-27 16:13:07 -06:00
parent 715c8fd26f
commit 070cfd710c
14 changed files with 136 additions and 73 deletions

View File

@ -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>

View File

@ -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

View File

@ -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>
)
}

View File

@ -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}

View File

@ -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>

View File

@ -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' : ''}`}> */}

View File

@ -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",

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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": "已连结钱包",

View File

@ -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": "您收到"
}

View File

@ -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": "已連結錢包",

View File

@ -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": "您收到"
}