@orderly.network/i18n 2.1.1 → 2.1.2-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -4
- package/dist/index.d.mts +47 -8
- package/dist/index.d.ts +47 -8
- package/dist/index.js +18 -17
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -3
- package/dist/index.mjs.map +1 -1
- package/dist/locale.csv +611 -611
- package/dist/locales/de.json +6 -6
- package/dist/locales/en.json +1 -1
- package/dist/locales/es.json +8 -8
- package/dist/locales/fr.json +7 -7
- package/dist/locales/id.json +612 -0
- package/dist/locales/it.json +612 -0
- package/dist/locales/ja.json +11 -11
- package/dist/locales/ko.json +8 -8
- package/dist/locales/nl.json +612 -0
- package/dist/locales/pl.json +612 -0
- package/dist/locales/pt.json +612 -0
- package/dist/locales/ru.json +612 -0
- package/dist/locales/tr.json +612 -0
- package/dist/locales/uk.json +612 -0
- package/dist/locales/vi.json +11 -11
- package/dist/locales/zh.json +11 -11
- package/package.json +5 -3
- package/script/generateMissingKeys.js +48 -0
- package/script/json-csv-converter.js +25 -0
- package/script/mergeJson.js +20 -7
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types.ts","../src/index.ts","../src/i18n.ts","../src/constant.ts","../src/locale/module/markets.ts","../src/locale/module/portfolio.ts","../src/locale/module/trading.ts","../src/locale/module/chart.ts","../src/locale/module/positions.ts","../src/locale/module/orders.ts","../src/locale/module/tpsl.ts","../src/locale/module/share.ts","../src/locale/module/orderEntry.ts","../src/locale/module/leverage.ts","../src/locale/module/scaffold.ts","../src/locale/module/tradingRewards.ts","../src/locale/module/tradingView.ts","../src/locale/module/connector.ts","../src/locale/module/transfer.ts","../src/locale/module/affiliate.ts","../src/locale/module/ui.ts","../src/locale/module/tradingLeaderboard.ts","../src/locale/en.ts","../src/provider.tsx","../src/context.ts","../src/backend.ts","../src/useTranslation.ts","../src/useLocaleCode.ts","../src/utils.ts"],"names":["default","createInstance","LanguageDetector","LocaleEnum","defaultLng","defaultNS","defaultLanguages","i18nLocalStorageKey","i18nCookieKey","markets","portfolio","trading","chart","positions","orders","tpsl","share","orderEntry","leverage","scaffold","tradingRewards","tradingView","connector","transfer","affiliate","ui","tradingLeaderboard","en","resources","languageDetector","i18n","i18n_default","useEffect","useRef","useState","I18nextProvider","createContext","useContext","LocaleContext","useLocaleContext","Backend","options","url","lang","ns","paths","promises","path","data","jsx","I18nProvider","props","children","rest","LocaleProvider","locale","resource","languages","setLanguages","backend","messages","lng","localCode","l","item","onLanguageBeforeChanged","onLanguageChanged","_useTranslation","I18nContext","useTranslation","context","useLocaleCode","loacaleCode","setLoacaleCode","handleLanguageChange","parseI18nLang","localeCodes","defaultLang","regex","match","matchLang","removeLangPrefix","pathname","localePath","getLocalePathFromPathname","generateLocalePath"],"mappings":"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","sourcesContent":["import \"i18next\";\nimport { defaultNS, LocaleEnum } from \"./constant\";\nimport { en } from \"./locale/en\";\n\nexport type LocaleCode = keyof typeof LocaleEnum | (string & {});\n\ntype ExtendLocaleMessages = Record<`extend.${string}`, string>;\n\nexport type LocaleMessages = typeof en & ExtendLocaleMessages;\n\nexport type Resources<T extends {} = {}> = {\n [key in LocaleCode]?: Partial<LocaleMessages & T>;\n};\n\n// https://www.i18next.com/overview/typescript#create-a-declaration-file\n// Enhance the input parameter intelliSense for the t function.\ndeclare module \"i18next\" {\n interface CustomTypeOptions {\n // custom namespace type, if you changed it\n // defaultNS: \"translation\";\n\n // custom resources type\n resources: {\n [defaultNS]: LocaleMessages;\n };\n }\n}\n","import \"./types\";\nexport * from \"react-i18next\";\nexport { default as i18next, createInstance } from \"i18next\";\nexport { default as i18n } from \"./i18n\";\nexport {\n I18nProvider,\n LocaleProvider,\n type I18nProviderProps,\n type LocaleProviderProps,\n} from \"./provider\";\nexport { useTranslation } from \"./useTranslation\";\nexport { useLocaleCode } from \"./useLocaleCode\";\nexport { useLocaleContext, type Language } from \"./context\";\nexport * from \"./types\";\nexport * from \"./constant\";\nexport * from \"./locale/en\";\nexport * from \"./utils\";\n","// import i18n from \"i18next\";\n// import { initReactI18next } from \"react-i18next\";\nimport { createInstance } from \"i18next\";\nimport LanguageDetector from \"i18next-browser-languagedetector\";\nimport {\n defaultLng,\n defaultNS,\n i18nCookieKey,\n i18nLocalStorageKey,\n} from \"./constant\";\nimport { en } from \"./locale/en\";\n\nexport const resources = {\n [defaultLng]: { [defaultNS]: en },\n};\n\nconst languageDetector = new LanguageDetector(null, {\n lookupLocalStorage: i18nLocalStorageKey,\n lookupCookie: i18nCookieKey,\n caches: [\"localStorage\", \"cookie\"],\n});\n\n// i18n\n// // passes i18n down to react-i18next\n// .use(initReactI18next)\n// .init({\n// // the translations\n// resources,\n// // language to use, more information here: https://www.i18next.com/overview/configuration-options#languages-namespaces-resources\n// // you can use the i18n.changeLanguage function to change the language manually: https://www.i18next.com/overview/api#changelanguage\n// // if you're using a language detector, do not define the lng option\n// lng: \"en\",\n// fallbackLng: \"en\",\n// interpolation: {\n// // react already safes from xss => https://www.i18next.com/translation-function/interpolation#unescape\n// escapeValue: false,\n// },\n// });\n\n// https://react.i18next.com/latest/i18nextprovider#when-to-use\nconst i18n = createInstance({\n // lng: defaultLng,\n fallbackLng: defaultLng,\n // debug: true,\n interpolation: {\n escapeValue: false,\n },\n resources,\n}).use(languageDetector);\n\ni18n.init();\n\nexport default i18n;\n","import { Language } from \"./context\";\n\nexport enum LocaleEnum {\n /** English */\n en = \"en\",\n /** Chinese */\n zh = \"zh\",\n /** Japanese */\n ja = \"ja\",\n /** Spanish */\n es = \"es\",\n /** Korean */\n ko = \"ko\",\n /** Vietnamese */\n vi = \"vi\",\n /** German */\n de = \"de\",\n /** French */\n fr = \"fr\",\n /** Dutch */\n // nl = \"nl\",\n /** Indonesian */\n // id = \"id\",\n}\n\nexport const defaultLng = LocaleEnum.en;\nexport const defaultNS = \"translation\";\n\nexport const defaultLanguages: Language[] = [\n { localCode: LocaleEnum.en, displayName: \"English\" },\n { localCode: LocaleEnum.zh, displayName: \"中文\" },\n { localCode: LocaleEnum.ja, displayName: \"日本語\" },\n { localCode: LocaleEnum.es, displayName: \"Español\" },\n { localCode: LocaleEnum.ko, displayName: \"한국어\" },\n { localCode: LocaleEnum.vi, displayName: \"Tiếng Việt\" },\n { localCode: LocaleEnum.de, displayName: \"Deutsch\" },\n { localCode: LocaleEnum.fr, displayName: \"Français\" },\n // { localCode: LocaleEnum.nl, displayName: \"Nederlands\" },\n // { localCode: LocaleEnum.id, displayName: \"Bahasa Indonesia\" },\n];\n\nexport const i18nLocalStorageKey = \"orderly_i18nLng\";\n\n// preferred-language\nexport const i18nCookieKey = \"orderly_i18nLng\";\n","export const markets = {\n \"markets.favorites\": \"Favorites\",\n \"markets.recent\": \"Recent\",\n \"markets.newListings\": \"New listings\",\n \"markets.allMarkets\": \"All markets\",\n\n \"markets.openInterest\": \"Open interest\",\n \"markets.openInterest.tooltip\": \"Total size of positions per side.\",\n\n \"markets.topGainers\": \"Top gainers\",\n \"markets.topLosers\": \"Top losers\",\n\n \"markets.search.placeholder\": \"Search market\",\n \"markets.dataList.favorites.empty\":\n \"Click on the <0/> icon next to a market to add it to your list.\",\n\n \"markets.dataList.column.8hFunding\": \"8h funding\",\n \"markets.dataList.column.moveTop\": \"Move to top\",\n\n \"markets.favorites.dropdown.title\": \"Select lists for\",\n \"markets.favorites.dropdown.addPlaceholder\": \"Add a new watchlist\",\n \"markets.favorites.tabs.maxList\": \"Maximum 10 groups in the favorite list\",\n \"markets.favorites.tabs.maxName\": \"List name cannot exceed 15 characters\",\n \"markets.favorites.tabs.delete.dialog.title\": \"Delete list\",\n \"markets.favorites.tabs.delete.dialog.description\":\n \"Are you sure you want to delete {{name}}?\",\n\n \"markets.column.market\": \"Market\",\n \"markets.column.24hChange\": \"24h change\",\n \"markets.column.24hVolume\": \"24h volume\",\n \"markets.column.market&Volume\": \"Market / Volume\",\n \"markets.column.price&Change\": \"Price / change\",\n \"markets.column.last\": \"Last\",\n \"markets.column.24hPercentage\": \"24h%\",\n\n \"markets.funding.comparison\": \"Comparison\",\n \"markets.funding.column.estFunding\": \"Est. funding\",\n \"markets.funding.column.lastFunding\": \"Last funding\",\n \"markets.funding.column.1dAvg\": \"1D avg.\",\n \"markets.funding.column.3dAvg\": \"3D avg.\",\n \"markets.funding.column.7dAvg\": \"7D avg.\",\n \"markets.funding.column.14dAvg\": \"14D avg.\",\n \"markets.funding.column.30dAvg\": \"30D avg.\",\n \"markets.funding.column.90dAvg\": \"90D avg.\",\n \"markets.funding.column.positiveRate\": \"Positive rate\",\n\n \"markets.symbolInfoBar.Mark\": \"Mark\",\n \"markets.symbolInfoBar.Mark.tooltip\":\n \"Price for the computation of unrealized PnL and liquidation.\",\n \"markets.symbolInfoBar.Index\": \"Index\",\n \"markets.symbolInfoBar.Index.tooltip\":\n \"Average of the last prices across other exchanges.\",\n \"markets.symbolInfoBar.24hVolume\": \"24h volume\",\n \"markets.symbolInfoBar.24hVolume.tooltip\":\n \"24 hour total trading volume on the Orderly Network.\",\n \"markets.symbolInfoBar.predFundingRate\": \"Pred. funding rate\",\n \"markets.symbolInfoBar.predFundingRate.tooltip\":\n \"Funding rates are payments between traders who are long and short. When positive, long positions pay short positions funding. When negative, short positions pay long positions.\",\n};\n\nexport type Markets = typeof markets;\n","export const portfolio = {\n \"portfolio.feeTier\": \"Fee tier\",\n \"portfolio.apiKeys\": \"API Keys\",\n \"portfolio.setting\": \"Setting\",\n\n \"portfolio.overview.availableWithdraw\": \"Available to withdraw\",\n\n \"portfolio.overview.performance\": \"Performance\",\n \"portfolio.overview.performance.roi\": \"{{period}} ROI\",\n \"portfolio.overview.performance.pnl\": \"{{period}} PnL\",\n \"portfolio.overview.performance.volume\": \"{{period}} Volume (USDC)\",\n \"portfolio.overview.performance.dailyPnl\": \"Daily PnL\",\n \"portfolio.overview.performance.cumulativePnl\": \"Cumulative PnL\",\n\n \"portfolio.overview.deposits&Withdrawals\": \"Deposits & Withdrawals\",\n \"portfolio.overview.distribution\": \"Distribution\",\n\n \"portfolio.overview.column.txId\": \"TxID\",\n \"portfolio.overview.column.funding&AnnualRate\": \"Funding rate / Annual rate\",\n \"portfolio.overview.column.paymentType\": \"Payment type\",\n \"portfolio.overview.column.paymentType.paid\": \"Paid\",\n \"portfolio.overview.column.paymentType.received\": \"Received\",\n \"portfolio.overview.column.fundingFee\": \"Funding fee\",\n\n \"portfolio.overview.distribution.type.referralCommission\":\n \"Referral commission\",\n \"portfolio.overview.distribution.type.refereeRebate\": \"Referee rebate\",\n \"portfolio.overview.distribution.type.brokerFee\": \"Broker fee\",\n\n \"portfolio.feeTier.updatedDailyBy\": \"Updated daily by\",\n \"portfolio.feeTier.header.yourTier\": \"Your tier\",\n \"portfolio.feeTier.header.30dVolume\": \"30D trading volume\",\n \"portfolio.feeTier.header.takerFeeRate\": \"Taker fee rate\",\n \"portfolio.feeTier.header.makerFeeRate\": \"Maker fee rate\",\n \"portfolio.feeTier.column.tier\": \"Tier\",\n \"portfolio.feeTier.column.30dVolume\": \"30 day volume\",\n \"portfolio.feeTier.column.30dVolume.above\": \"Above {{volume}}\",\n \"portfolio.feeTier.column.maker\": \"Maker\",\n \"portfolio.feeTier.column.taker\": \"Taker\",\n\n \"portfolio.apiKey.accountId\": \"Account ID\",\n \"portfolio.apiKey.accountId.copied\": \"Account id copied\",\n \"portfolio.apiKey.uid\": \"UID\",\n \"portfolio.apiKey.secretKey\": \"Secret key\",\n \"portfolio.apiKey.secretKey.copied\": \"Secret key copied\",\n\n \"portfolio.apiKey.ip\": \"IP\",\n \"portfolio.apiKey.permissions\": \"Permissions\",\n \"portfolio.apiKey.permissions.read\": \"Read\",\n \"portfolio.apiKey.permissions.trading\": \"Trading\",\n\n \"portfolio.apiKey.description\":\n \"Create API keys to suit your trading needs. For your security, don't share your API keys with anyone.\",\n \"portfolio.apiKey.readApiGuide\": \"Read API guide\",\n\n \"portfolio.apiKey.column.apiKey\": \"API key\",\n \"portfolio.apiKey.column.apiKey.copy\": \"API key copied\",\n \"portfolio.apiKey.column.permissionType\": \"Permission type\",\n \"portfolio.apiKey.column.restrictedIP\": \"Restricted IP\",\n \"portfolio.apiKey.column.restrictedIP.copy\": \"Restricted IP copied\",\n \"portfolio.apiKey.column.expirationDate\": \"Expiration date\",\n\n \"portfolio.apiKey.create.dialog.title\": \"Create API key\",\n\n \"portfolio.apiKey.create.connectWallet.tooltip\":\n \"Please connect wallet before create API key\",\n \"portfolio.apiKey.create.signIn.tooltip\":\n \"Please sign in before create API key\",\n \"portfolio.apiKey.create.enableTrading.tooltip\":\n \"Please enable trading before create API key\",\n \"portfolio.apiKey.create.wrongNetwork.tooltip\":\n \"Please switch to a supported network to create API key\",\n\n \"portfolio.apiKey.create.ipRestriction\": \"IP restriction (optional)\",\n \"portfolio.apiKey.create.ipRestriction.placeholder\":\n \"Add IP addresses, separated by commas.\",\n\n \"portfolio.apiKey.created.warning\":\n \"Please copy the API secret. Once you close this pop-up, the API secret will be encrypted.\",\n \"portfolio.apiKey.created.button.copyApiInfo\": \"Copy API info\",\n \"portfolio.apiKey.apiInfo.copied\": \"API info copied\",\n\n \"portfolio.apiKey.created\": \"API key created\",\n \"portfolio.apiKey.deleted\": \"API key deleted\",\n \"portfolio.apiKey.updated\": \"API key updated\",\n\n \"portfolio.apiKey.edit.dialog.title\": \"Edit API key\",\n \"portfolio.apiKey.delete.dialog.title\": \"Delete API key\",\n \"portfolio.apiKey.delete.dialog.description\":\n \"Delete your API key <0>{{apiKey}}</0>?\",\n\n \"portfolio.setting.systemUpgrade\": \"System upgrade\",\n \"portfolio.setting.cancelOpenOrders\":\n \"Cancel open orders during system upgrade\",\n \"portfolio.setting.cancelOpenOrders.description\":\n \"During the upgrade period, all open orders will be cancelled to manage your risk in case of high market volatility.\",\n};\n\nexport type Portfolio = typeof portfolio;\n","export const trading = {\n \"trading.layout\": \"Layout\",\n \"trading.layout.right\": \"Advanced (right)\",\n \"trading.layout.left\": \"Advanced (left)\",\n \"trading.orders.closeAll\": \"Close All\",\n \"trading.hideOtherSymbols\": \"Hide other symbols\",\n \"trading.history\": \"History\",\n\n \"trading.portfolioSettings\": \"Portfolio Settings\",\n \"trading.portfolioSettings.decimalPrecision\":\n \"Decimal Precision for PnL & Notional\",\n \"trading.portfolioSettings.unrealPnlPriceBasis\": \"Unrealized PnL Price Basis\",\n\n \"trading.orderBook\": \"Order book\",\n \"trading.lastTrades\": \"Last trades\",\n \"trading.orderBook.column.value\": \"Value\",\n\n \"trading.tabs.chart\": \"Chart\",\n \"trading.tabs.trades\": \"Trades\",\n \"trading.tabs.data\": \"Data\",\n\n \"trading.column.24High\": \"24h high\",\n \"trading.column.24Low\": \"24h low\",\n\n \"trading.orderBook.sum\": \"Sum\",\n \"trading.orderBook.markPrice.tooltip\":\n \"Obtained from a third-party oracle, the mark price is calculated as the median of three prices: the last price, the fair price based on the funding rate basis, and the fair price based on the order books.\",\n \"trading.orderBook.spreadRatio.tooltip\": \"Spread Ratio of the ask1 and bid1.\",\n\n \"trading.faucet.getTestUSDC\": \"Get test USDC\",\n \"trading.faucet.getTestUSDC.success\":\n \"{{quantity}} USDC will be added to your balance. Please note this may take up to 3 minutes. Please check back later.\",\n\n \"trading.asset.startTrading\": \"Start trading\",\n \"trading.asset.startTrading.description\":\n \"You can deposit assets from various networks\",\n\n \"trading.asset.myAssets\": \"My Assets\",\n\n \"trading.asset.freeCollateral\": \"Free collateral\",\n \"trading.asset.freeCollateral.tooltip\":\n \"Free collateral for placing new orders.\",\n \"trading.asset.freeCollateral.formula\":\n \"Free collateral = Total balance + Total unsettlement PnL - Total position initial margin\",\n\n \"trading.asset.marginRatio\": \"Margin ratio\",\n \"trading.asset.marginRatio.tooltip\":\n \"The margin ratio represents the proportion of collateral relative to the total position value.\",\n \"trading.asset.marginRatio.formula\":\n \"Account margin ratio = (Total collateral value / Total position notional) * 100%\",\n\n \"trading.asset.unsettledPnl\": \"Unsettled PnL\",\n \"trading.asset.free&TotalCollateral\": \"Free / Total Collateral\",\n \"trading.asset.availableBalance\": \"Available Balance\",\n\n \"trading.asset.maintenanceMarginRatio\": \"Maintenance margin ratio\",\n \"trading.asset.maintenanceMarginRatio.tooltip\":\n \"The minimum margin ratio required to protect your positions from being liquidated. If the Margin ratio falls below the Maintenance margin ratio, the account will be liquidated.\",\n \"trading.asset.maintenanceMarginRatio.formula\":\n \"Account maintenance margin ratio = Sum(Position notional * Symbol maintenance Margin Ratio) / Total position notional * 100%\",\n\n \"trading.riskRate\": \"Risk rate\",\n \"trading.riskRate.tooltip\":\n \"The Risk rate is used to assess the risk level of an account. When the Risk rate reaches 100%, the account will be liquidated\",\n \"trading.riskRate.formula\":\n \"Risk rate = Maintenance margin ratio / Margin ratio * 100%\",\n\n \"trading.asset&Margin\": \"Asset & Margin\",\n\n \"trading.fundingRate.predFundingRate\": \"Pred. funding rate\",\n};\n\nexport type Trading = typeof trading;\n","export const chart = {\n \"chart.now\": \"Now\",\n};\n\nexport type Chart = typeof chart;\n","export const positions = {\n \"positions.positionHistory\": \"Position history\",\n \"positions.liquidation\": \"Liquidation\",\n \"positions.closePosition\": \"Close Position\",\n\n \"positions.column.liqPrice\": \"Liq. price\",\n \"positions.column.liqPrice.tooltip\":\n \"Estimated price at which your position will be liquidated. Prices are estimated and depend on multiple factors across all positions.\",\n \"positions.column.unrealPnl.tooltip\":\n \"Current unrealized profit or loss on your open positions across all widgets calculated using Mark Price.\",\n \"positions.column.unrealPnl.priceBasis\": \"Unrealized PnL Price Basis\",\n \"positions.column.margin\": \"Margin\",\n \"positions.column.margin.tooltip\":\n \"The minimum equity to keep your position.\",\n \"positions.column.margin.formula\":\n \"Margin = Position size * Mark price * MMR\",\n \"positions.column.close\": \"Close\",\n\n \"positions.limitClose\": \"Limit close\",\n \"positions.limitClose.description\":\n \"You agree closing {{quantity}} {{base}} position at limit price.\",\n \"positions.marketClose\": \"Market close\",\n \"positions.marketClose.description\":\n \"You agree closing {{quantity}} {{base}} position at market price.\",\n\n \"positions.history.status.closed\": \"Closed\",\n \"positions.history.status.partialClosed\": \"Partially closed\",\n \"positions.history.type.adl\": \"Adl\",\n \"positions.history.type.liquidated\": \"Liquidated\",\n \"positions.history.liquidated.liquidationId\": \"Liquidation id\",\n \"positions.history.liquidated.liquidatorFee\": \"Liquidator fee\",\n \"positions.history.liquidated.insFundFee\": \"Ins. Fund fee\",\n\n \"positions.history.column.closed\": \"Closed\",\n \"positions.history.column.maxClosed\": \"Max closed\",\n \"positions.history.column.closed&maxClosed\": \"Closed / Max closed\",\n \"positions.history.column.netPnl\": \"Net PnL\",\n \"positions.history.column.timeOpened\": \"Time opened\",\n \"positions.history.column.timeClosed\": \"Time closed\",\n \"positions.history.column.updatedTime\": \"Updated time\",\n\n \"positions.history.netPnl.fundingFee\": \"Funding fee\",\n \"positions.history.netPnl.tradingFee\": \"Trading fee\",\n\n \"positions.Liquidation.column.liquidationId\": \"Liquidation id\",\n \"positions.Liquidation.column.insFundTransfer\": \"Ins. fund transfer\",\n \"positions.Liquidation.column.liquidationFee\": \"Liquidation fee\",\n};\n\nexport type Positions = typeof positions;\n","export const orders = {\n \"orders.orderHistory\": \"Order history\",\n\n \"orders.status.pending\": \"Pending\",\n \"orders.status.filled\": \"Filled\",\n \"orders.status.partialFilled\": \"Partial filled\",\n \"orders.status.canceled\": \"Canceled\",\n \"orders.status.rejected\": \"Rejected\",\n \"orders.status.incomplete\": \"Incomplete\",\n \"orders.status.completed\": \"Completed\",\n\n \"orders.status.opened.toast.title\": \"Order opened\",\n \"orders.status.filled.toast.title\": \"Order filled\",\n \"orders.status.canceled.toast.title\": \"Order canceled\",\n \"orders.status.rejected.toast.title\": \"Order rejected\",\n \"orders.status.replaced.toast.title\": \"Order edited\",\n\n \"orders.column.orderPrice\": \"Order price\",\n \"orders.column.fill&Quantity\": \"Filled / Quantity\",\n \"orders.column.triggerPrice\": \"Trigger price\",\n \"orders.column.orderTime\": \"Order time\",\n \"orders.column.hidden\": \"Hidden\",\n\n \"orders.editOrder\": \"Edit order\",\n \"order.edit.confirm.quantity\":\n \"You agree changing the quantity of {{base}}-PERP order to <0>{{value}}</0>.\",\n \"order.edit.confirm.price\":\n \"You agree changing the price of {{base}}-PERP order to <0>{{value}}</0>.\",\n \"order.edit.confirm.triggerPrice\":\n \"You agree changing the trigger price of {{base}}-PERP order to <0>{{value}}</0>.\",\n\n \"orders.cancelOrder\": \"Cancel order\",\n \"orders.cancelOrder.description\":\n \"Are you sure you want to cancel your pending order.\",\n\n \"orders.cancelAll\": \"Cancel all\",\n \"orders.pending.cancelAll\": \"Cancel all pending orders\",\n \"orders.pending.cancelAll.description\":\n \"Are you sure you want to cancel all of your pending orders?\",\n \"orders.tpsl.cancelAll\": \"Cancel all TP/SL orders\",\n \"orders.tpsl.cancelAll.description\":\n \"Are you sure you want to cancel all of your TP/SL orders?\",\n\n \"orders.price.greaterThan\": \"Price can not be greater than {{max}} USDC.\",\n \"orders.price.lessThan\": \"Price can not be less than {{min}} USDC.\",\n\n \"orders.quantity.lessThan\": \"Quantity should be less than {{quantity}}\",\n \"orders.quantity.lessThanPosition\":\n \"Quantity should be less than position quantity : {{quantity}}\",\n\n \"orders.history.renew\": \"Renew\",\n\n \"orders.download.tooltip\":\n \"The downloaded data will reflect only the applied filters (e.g., status, time, side, and pagination) and may not include all records.\",\n};\n\nexport type Orders = typeof orders;\n","export const tpsl = {\n \"tpsl.tp\": \"TP\",\n \"tpsl.sl\": \"SL\",\n \"tpsl.tpPrice\": \"TP Price\",\n \"tpsl.slPrice\": \"SL Price\",\n \"tpsl.tpPnl\": \"TP PnL\",\n \"tpsl.slPnl\": \"SL PnL\",\n \"tpsl.tpTrigger\": \"TP trigger\",\n \"tpsl.slTrigger\": \"SL trigger\",\n\n \"tpsl.pnl\": \"PnL\",\n \"tpsl.offset\": \"Offset\",\n\n \"tpsl.positionTpsl\": \"Position TP/SL\",\n \"tpsl.entirePosition\": \"Entire position\",\n \"tpsl.estPnl\": \"Est. PNL\",\n \"tpsl.takeProfit\": \"Take profit\",\n \"tpsl.stopLoss\": \"Stop loss\",\n\n \"tpsl.cancelOrder.description\":\n \"Are you sure you want to cancel this TP/SL order?\",\n \"tpsl.confirmOrder\": \"Confirm Order\",\n};\n\nexport type TPSL = typeof tpsl;\n","export const share = {\n \"share.pnl.sharePnl\": \"Share PnL\",\n \"share.pnl.share.long\": \"LONG\",\n \"share.pnl.share.short\": \"SHORT\",\n\n \"share.pnl.displayFormat\": \"PnL display format\",\n \"share.pnl.displayFormat.roi&Pnl\": \"ROI & PnL\",\n \"share.pnl.displayFormat.roi\": \"ROI\",\n \"share.pnl.displayFormat.pnl\": \"PnL\",\n\n \"share.pnl.optionalInfo\": \"Optional information to share\",\n \"share.pnl.optionalInfo.openPrice\": \"Open price\",\n \"share.pnl.optionalInfo.closePrice\": \"Close price\",\n \"share.pnl.optionalInfo.openTime\": \"Opened at\",\n \"share.pnl.optionalInfo.closeTime\": \"Closed at\",\n \"share.pnl.optionalInfo.message\": \"Your message\",\n \"share.pnl.optionalInfo.message.placeholder\": \"Max 25 characters\",\n \"share.pnl.optionalInfo.message.maxLength\":\n \"Maximum support of 25 characters\",\n\n \"share.pnl.image.copied\": \"Image copied\",\n \"share.pnl.copy.failed.description\":\n \"Browser version outdated, please update in order to copy image to clipboard.\",\n};\n\nexport type Share = typeof share;\n","export const orderEntry = {\n \"orderEntry.buyLong\": \"Buy / Long\",\n \"orderEntry.sellShort\": \"Sell / Short\",\n \"orderEntry.reduceOnly\": \"Reduce only\",\n\n \"orderEntry.orderType.limit\": \"Limit\",\n \"orderEntry.orderType.market\": \"Market\",\n \"orderEntry.orderType.limitOrder\": \"Limit order\",\n \"orderEntry.orderType.marketOrder\": \"Market order\",\n \"orderEntry.orderType.stopLimit\": \"Stop limit\",\n \"orderEntry.orderType.stopMarket\": \"Stop market\",\n \"orderEntry.orderType.postOnly\": \"Post only\",\n \"orderEntry.orderType.ioc\": \"IOC\",\n \"orderEntry.orderType.fok\": \"FOK\",\n\n \"orderEntry.bbo\": \"BBO\",\n \"orderEntry.bbo.counterparty1\": \"Counterparty 1\",\n \"orderEntry.bbo.counterparty5\": \"Counterparty 5\",\n \"orderEntry.bbo.queue1\": \"Queue 1\",\n \"orderEntry.bbo.queue5\": \"Queue 5\",\n \"orderEntry.bbo.disabled.tips\":\n \"BBO is not supported when TP/SL, Post-Only, IOC, or FOK is selected.\",\n\n \"orderEntry.estLiqPrice\": \"Est. liq. price\",\n\n \"orderEntry.disableOrderConfirm\": \"Disable order confirmation\",\n \"orderEntry.orderConfirm\": \"Order confirm\",\n \"orderEntry.hidden\": \"Hidden\",\n \"orderEntry.keepVisible\": \"Keep visible\",\n\n \"orderEntry.maxBuy\": \"Max buy\",\n \"orderEntry.maxSell\": \"Max sell\",\n\n \"orderEntry.tpMarkPrice\": \"TP price (Mark)\",\n \"orderEntry.slMarkPrice\": \"SL price (Mark)\",\n \"orderEntry.tpsl.trigger.description\":\n \"TP/SL triggers at the specified mark price and executes as a market order.\",\n \"orderEntry.estRoi\": \"Est.ROI\",\n \"orderEntry.estPnL\": \"Est.PnL\",\n\n \"orderEntry.tpsl.tips\":\n \"TP/SL triggers at the specified mark price and executes as a market order. By default, it applies to the entire position. Adjust settings in open positions for partial TP/SL.\",\n\n \"orderEntry.orderQuantity.error.required\": \"Quantity is required\",\n \"orderEntry.orderQuantity.error.min\":\n \"Quantity must be greater than {{value}}\",\n \"orderEntry.orderQuantity.error.max\": \"Quantity must be less than {{value}}\",\n\n \"orderEntry.orderPrice.error.required\": \"Price is required\",\n \"orderEntry.orderPrice.error.min\": \"Price must be greater than {{value}}\",\n \"orderEntry.orderPrice.error.max\": \"Price must be less than {{value}}\",\n\n \"orderEntry.triggerPrice.error.required\": \"Trigger price is required\",\n \"orderEntry.triggerPrice.error.min\":\n \"Trigger price must be greater than {{value}}\",\n \"orderEntry.triggerPrice.error.max\":\n \"Trigger price must be less than {{value}}\",\n\n \"orderEntry.tpTriggerPrice.error.min\":\n \"TP Price must be greater than {{value}}\",\n \"orderEntry.tpTriggerPrice.error.max\": \"TP Price must be less than {{value}}\",\n\n \"orderEntry.slTriggerPrice.error.min\":\n \"SL Price must be greater than {{value}}\",\n \"orderEntry.slTriggerPrice.error.max\": \"SL Price must be less than {{value}}\",\n\n \"orderEntry.total.error.min\":\n \"The order value should be greater or equal to {{value}} USDC\",\n};\n\nexport type OrderEntry = typeof orderEntry;\n","export const leverage = {\n \"leverage.maxAccountLeverage\": \"Max account leverage\",\n \"leverage.accountLeverage\": \"Account leverage\",\n \"leverage.currentLeverage\": \"Current leverage\",\n \"leverage.maxLeverage\": \"Max leverage\",\n \"leverage.updated\": \"Leverage updated\",\n};\n\nexport type Leverage = typeof leverage;\n","export const scaffold = {\n \"scaffold.footer.operational\": \"Operational\",\n \"scaffold.footer.joinCommunity\": \"Join our community\",\n \"scaffold.footer.poweredBy\": \"Powered by\",\n};\n\nexport type Scaffold = typeof scaffold;\n","export const tradingRewards = {\n \"tradingRewards.rewards\": \"Rewards\",\n\n \"tradingRewards.subtitle\": \"Trade with {{brokerName}} to earn esORDER.\",\n \"tradingRewards.learnMore\": \"Learn more here\",\n\n \"tradingRewards.myEstRewards\": \"My est. rewards\",\n \"tradingRewards.epoch\": \"Epoch\",\n \"tradingRewards.epochRewards\": \"Epoch rewards\",\n\n \"tradingRewards.otherOrderlyDex\": \"Other Orderly DEX\",\n \"tradingRewards.claim\": \"Claim\",\n \"tradingRewards.availableClaim\": \"Available to claim\",\n\n \"tradingRewards.stake\": \"Stake\",\n \"tradingRewards.booster\": \"Booster\",\n \"tradingRewards.stakeBooster\": \"Stake booster\",\n \"tradingRewards.avgStakedAmount\": \"Avg. staked amount\",\n\n \"tradingRewards.rewardHistory\": \"Reward history\",\n \"tradingRewards.rewardsEarned\": \"Rewards earned\",\n\n \"tradingRewards.rewardHistory.column.start&EndDate\": \"Start / End date\",\n \"tradingRewards.rewardHistory.column.startDate\": \"Start\",\n \"tradingRewards.rewardHistory.column.endDate\": \"End date\",\n};\n\nexport type TradingRewards = typeof tradingRewards;\n","export const tradingView = {\n \"tradingView.timeInterval.1m\": \"1m\",\n \"tradingView.timeInterval.3m\": \"3m\",\n \"tradingView.timeInterval.5m\": \"5m\",\n \"tradingView.timeInterval.15m\": \"15m\",\n \"tradingView.timeInterval.30m\": \"30m\",\n\n \"tradingView.timeInterval.1h\": \"1h\",\n \"tradingView.timeInterval.2h\": \"2h\",\n \"tradingView.timeInterval.4h\": \"4h\",\n \"tradingView.timeInterval.6h\": \"6h\",\n \"tradingView.timeInterval.12h\": \"12h\",\n\n \"tradingView.timeInterval.1d\": \"1D\",\n \"tradingView.timeInterval.3d\": \"3D\",\n \"tradingView.timeInterval.1w\": \"1W\",\n \"tradingView.timeInterval.1M\": \"1M\",\n\n \"tradingView.timeInterval.more\": \"More\",\n\n \"tradingView.lineType.bars\": \"Bars\",\n \"tradingView.lineType.candles\": \"Candles\",\n \"tradingView.lineType.hollowCandles\": \"Hollow candles\",\n \"tradingView.lineType.line\": \"Line\",\n \"tradingView.lineType.area\": \"Area\",\n \"tradingView.lineType.baseline\": \"Baseline\",\n\n \"tradingView.displayControl.buySell\": \"Buy/Sell\",\n \"tradingView.displayControl.limitOrders\": \"Limit orders\",\n \"tradingView.displayControl.stopOrders\": \"Stop orders\",\n\n \"tradingView.noScriptSrc\":\n \"Due to TradingView's policy, you will need to apply for your own license.\",\n \"tradingView.noScriptSrc.1\":\n \"1. Please apply for your TradingView Advanced Chart license <0>here</0>\",\n \"tradingView.noScriptSrc.2\":\n \"2. Follow the instructions on <0>orderly.network</0> to set up.\",\n};\n\nexport type TradingView = typeof tradingView;\n","export const connector = {\n \"connector.testnet\": \"Testnet\",\n \"connector.mainnet\": \"Mainnet\",\n\n \"connector.disconnect\": \"Disconnect\",\n \"connector.connectWallet\": \"Connect wallet\",\n \"connector.signIn\": \"Sign in\",\n \"connector.signIn.description\": \"Confirm you are the owner of this wallet\",\n \"connector.enableTrading\": \"Enable trading\",\n \"connector.enableTrading.description\":\n \"Enable secure access to our API for lightning fast trading\",\n\n \"connector.switchNetwork\": \"Switch Network\",\n \"connector.wrongNetwork\": \"Wrong network\",\n \"connector.wrongNetwork.tooltip\":\n \"Please switch to a supported network to continue.\",\n\n \"connector.expired\":\n \"Your previous access has expired, you will receive a signature request to enable trading. Signing is free and will not send a transaction.\",\n\n \"connector.rememberMe\": \"Remember me\",\n \"connector.rememberMe.description\":\n \"Toggle this option to skip these steps next time you want to trade.\",\n\n \"connector.referralCode.placeholder\": \"Referral code (Optional)\",\n \"connector.referralCode.invalid\":\n \"The referral_code must be 4 to 10 characters long, only accept upper case roman characters and numbers\",\n \"connector.referralCode.notExist\": \"This referral code does not exist.\",\n\n \"connector.somethingWentWrong\": \"Something went wrong\",\n \"connector.userRejected\": \"User rejected the request.\",\n\n \"connector.walletConnected\": \"Wallet connected\",\n \"connector.networkSwitched\": \"Network switched\",\n \"connector.switchChain.failed\": \"Switch chain failed\",\n\n \"connector.trade.connectWallet.tooltip\":\n \"Please connect wallet before starting to trade\",\n \"connector.trade.signIn.tooltip\": \"Please sign in before starting to trade\",\n \"connector.trade.enableTrading.tooltip\":\n \"Please enable trading before starting to trade\",\n\n \"connector.setUp.connectWallet.tooltip\":\n \"Please connect wallet before set up\",\n \"connector.setUp.signIn.tooltip\": \"Please sign in before set up\",\n \"connector.setUp.enableTrading.tooltip\":\n \"Please enable trading before set up\",\n\n \"connector.ledger.signMessageFailed\": \"Sign Message Failed\",\n \"connector.ledger.signMessageFailed.description\":\n \"Are you using Ledger Wallet?\",\n\n \"connector.privy.loginIn\": \"Login in\",\n \"connector.privy.logout\": \"Log out\",\n \"connector.privy.email\": \"Email\",\n \"connector.privy.google\": \"Google\",\n \"connector.privy.twitter\": \"X / Twitter\",\n \"connector.privy.myWallet\": \"My wallet\",\n \"connector.privy.addEvmWallet\": \"Add Evm wallet\",\n \"connector.privy.addSolanaWallet\": \"Add Solana wallet\",\n \"connector.privy.createEvmWallet\": \"Create Evm wallet\",\n \"connector.privy.createSolanaWallet\": \"Create Solana wallet\",\n \"connector.privy.termsOfUse\":\n \"By connecting your wallet, you acknowledge and agree to the <0>terms of use</0>.\",\n \"connector.privy.supportedEvmChain\": \"Supported Evm chain\",\n \"connector.privy.supportedSolanaChain\": \"Supported Solana chain\",\n \"connector.privy.noWallet\": \"No wallet\",\n \"connector.privy.noWallet.description\":\n \"Please create a wallet to proceed. Only you can access the private key. You can export the private key and import your wallet into another wallet client, such as MetaMask or Phantom, at any time.\",\n \"connector.privy.switchNetwork.tips\": \"Switch to {{chainName}} to continue.\",\n \"connector.privy.addEvmWallet.tips\": \"Connect an EVM-compatible wallet to continue using the EVM network.\",\n \"connector.privy.addSolanaWallet.tips\": \"Connect an Solana-compatible wallet to continue using the Solana network.\"\n};\n\nexport type Connector = typeof connector;\n","export const transfer = {\n \"transfer.network\": \"Network\",\n \"transfer.lowestFee\": \"lowest fee\",\n \"transfer.web3Wallet\": \"Your Web3 Wallet\",\n \"transfer.brokerAccount\": \"Your {{brokerName}} account\",\n \"transfer.quantity.invalid\": \"Please input a valid number\",\n\n \"transfer.insufficientBalance\": \"Insufficient balance\",\n \"transfer.insufficientAllowance\": \"Insufficient allowance\",\n \"transfer.rejectTransaction\": \"Rejected transaction\",\n\n \"transfer.deposit.approve.symbol\": \"Approve {{symbol}}\",\n \"transfer.deposit.approve.success\": \"Approve success\",\n \"transfer.deposit.approve.failed\": \"Approve failed\",\n \"transfer.deposit.increase.symbol\": \"Increase {{symbol}} authorized amount\",\n \"transfer.deposit.requested\": \"Deposit requested\",\n \"transfer.deposit.completed\": \"Deposit completed\",\n \"transfer.deposit.failed\": \"Deposit failed\",\n\n \"transfer.deposit.destinationGasFee\": \"Destination gas fee\",\n \"transfer.deposit.destinationGasFee.description\":\n \"Additional gas tokens are required to cover operations on the destination chain.\",\n\n \"transfer.withdraw.unsupported.chain\":\n \"Withdrawals are not supported on this chain. Please switch to any of the bridgeless networks.\",\n \"transfer.withdraw.unsupported.networkName\":\n \"Withdrawals are not supported on {{networkName}}. Please switch to any of the bridgeless networks.\",\n\n \"transfer.withdraw.crossChain.confirmWithdraw\": \"Confirm to withdraw\",\n \"transfer.withdraw.crossChain.recipientAddress\": \"Recipient address\",\n \"transfer.withdraw.crossChain.recipientNetwork\": \"Recipient network\",\n \"transfer.withdraw.crossChain.withdrawAmount\": \"Withdraw amount\",\n\n \"transfer.withdraw.crossChain.process\":\n \"Your cross-chain withdrawal is being processed...\",\n \"transfer.withdraw.crossChain.warning\":\n \"Withdrawals that require cross-chain rebalancing can't be cancelled or followed up with more withdrawals until they've been processed.\",\n \"transfer.withdraw.crossChain.vaultWarning\":\n \"Withdrawal exceeds the balance of the {{networkName}} vault ( {{chainVaultBalance}} USDC ). Cross-chain rebalancing fee will be charged for withdrawal to {{networkName}}.\",\n\n \"transfer.withdraw.minAmount.error\": \"quantity must large than {{minAmount}}\",\n\n \"transfer.withdraw.requested\": \"Withdraw requested\",\n \"transfer.withdraw.completed\": \"Withdraw completed\",\n \"transfer.withdraw.failed\": \"Withdraw failed\",\n};\n\nexport type Transfer = typeof transfer;\n","export const affiliate = {\n \"affiliate.referral\": \"Referral\",\n \"affiliate.trader\": \"Trader\",\n\n \"affiliate.enter\": \"Enter\",\n \"affiliate.statistics\": \"Statistics\",\n\n \"affiliate.connectWallet.tooltip\":\n \"Please connect your wallet to use this function\",\n\n \"affiliate.page.title\": \"Earn more as a <0>{{shortBrokerName}}</0> affiliate\",\n \"affiliate.page.subTitle\":\n \"Grow your brand | Get 40% commission | Unlock exclusive perks\",\n \"affiliate.page.learnMore\": \"Learn how it works\",\n\n \"affiliate.asAffiliate.title\": \"As an affiliate\",\n \"affiliate.asAffiliate.description\": \"Onboard traders to earn passive income\",\n \"affiliate.asAffiliate.button\": \"Become an affiliate\",\n\n \"affiliate.asTrader.title\": \"As a trader\",\n \"affiliate.asTrader.description\": \"Onboard traders to earn passive income\",\n \"affiliate.asTrader.button\": \"Enter code\",\n\n \"affiliate.referralCode\": \"Referral code\",\n \"affiliate.referralCode.dialog.title\": \"Bind a referral code\",\n \"affiliate.referralCode.dialog.description\":\n \"Bind a referral code to earn trading fee rebates.\",\n \"affiliate.referralCode.label\": \"Enter referral code\",\n \"affiliate.referralCode.bound\": \"Referral code bound\",\n \"affiliate.referralCode.notExist\": \"This referral code does not exist.\",\n\n \"affiliate.process.title\": \"Becoming an affiliate is easy\",\n \"affiliate.process.step1.title.title\": \"Apply\",\n \"affiliate.process.step1.description\": \"Fill out the application form\",\n \"affiliate.process.step2.title\": \"Share\",\n \"affiliate.process.step2.description\":\n \"Unlock your affiliate link and share it with your community\",\n \"affiliate.process.step3.title\": \"Earn\",\n \"affiliate.process.step3.description\":\n \"Get paid and receive special treatment 24/7, 365\",\n\n \"affiliate.summary\": \"Summary\",\n \"affiliate.summary.refereesTraded\": \"Referees that traded\",\n\n \"affiliate.referralLink\": \"Referral link\",\n \"affiliate.referralLink.earn\": \"Earn\",\n \"affiliate.referralLink.earn.tooltip\":\n \"{{brokerName}} net fee that deduct Orderly fee.\",\n \"affiliate.referralLink.share\": \"Share\",\n \"affiliate.referralLink.share.tooltip\":\n \"Your referees get <0>{{value}}</0> of their {{brokerName}} net fee\",\n\n \"affiliate.referralVol\": \"Referral vol.\",\n\n \"affiliate.referralCodes\": \"Referral codes\",\n \"affiliate.referralCodes.remaining\": \"Remaining referral codes\",\n \"affiliate.referralCodes.column.you&Referee\": \"You / Referee\",\n \"affiliate.referralCodes.column.traders\": \"Traders\",\n \"affiliate.referralCodes.column.referees&Traders\": \"Referees / Traders\",\n \"affiliate.referralCodes.copyLink\": \"Copy link\",\n\n \"affiliate.commission\": \"Commission\",\n \"affiliate.commission.30d\": \"30d commission\",\n \"affiliate.commission.column.activeUsers\": \"Referral active users\",\n\n \"affiliate.myReferees\": \"My referees\",\n \"affiliate.referees\": \"Referees\",\n \"affiliate.referees.column.refereeAddress\": \"Referee address\",\n \"affiliate.referees.column.totalCommission\": \"Total commission\",\n \"affiliate.referees.column.totalVol\": \"Total vol.\",\n \"affiliate.referees.column.invitationTime\": \"Invitation time\",\n\n \"affiliate.trader.yourReferrer\": \"Your referrer\",\n \"affiliate.trader.rebate\": \"Rebate\",\n \"affiliate.trader.rebates\": \"Rebates\",\n \"affiliate.trader.myRebates\": \"My rebates\",\n \"affiliate.trader.tradingVol\": \"Trading vol.\",\n};\n\nexport type Affiliate = typeof affiliate;\n","export const ui = {\n \"ui.pagination.morePages\": \"More pages\",\n \"ui.pagination.rowsPerPage\": \"Rows per page\",\n \"ui.picker.selectDate\": \"Select Date\",\n \"ui.empty.description\": \"No results found.\",\n};\n\nexport type UI = typeof ui;\n","export const tradingLeaderboard = {\n \"tradingLeaderboard.leaderboard\": \"Leaderboard\",\n \"tradingLeaderboard.campaigns\": \"Campaigns\",\n \"tradingLeaderboard.ongoing\": \"Ongoing\",\n \"tradingLeaderboard.past\": \"Past\",\n \"tradingLeaderboard.future\": \"Future\",\n \"tradingLeaderboard.learnMore\": \"Learn more\",\n \"tradingLeaderboard.tradeNow\": \"Trade now\",\n \"tradingLeaderboard.tradingVolume\": \"Trading volume\",\n \"tradingLeaderboard.rank\": \"Rank\",\n};\n\nexport type TradingLeaderboard = typeof tradingLeaderboard;\n","import { markets } from \"./module/markets\";\nimport { portfolio } from \"./module/portfolio\";\nimport { trading } from \"./module/trading\";\nimport { chart } from \"./module/chart\";\nimport { positions } from \"./module/positions\";\nimport { orders } from \"./module/orders\";\nimport { tpsl } from \"./module/tpsl\";\nimport { share } from \"./module/share\";\nimport { orderEntry } from \"./module/orderEntry\";\nimport { leverage } from \"./module/leverage\";\nimport { scaffold } from \"./module/scaffold\";\nimport { tradingRewards } from \"./module/tradingRewards\";\nimport { tradingView } from \"./module/tradingView\";\nimport { connector } from \"./module/connector\";\nimport { transfer } from \"./module/transfer\";\nimport { affiliate } from \"./module/affiliate\";\nimport { ui } from \"./module/ui\";\nimport { tradingLeaderboard } from \"./module/tradingLeaderboard\";\n\nexport const en = {\n \"common.cancel\": \"Cancel\",\n \"common.confirm\": \"Confirm\",\n \"common.ok\": \"OK\",\n \"common.yes\": \"Yes\",\n \"common.no\": \"No\",\n \"common.all\": \"All\",\n \"common.buy\": \"Buy\",\n \"common.sell\": \"Sell\",\n \"common.edit\": \"Edit\",\n \"common.save\": \"Save\",\n \"common.add\": \"Add\",\n \"common.delete\": \"Delete\",\n \"common.tips\": \"Tips\",\n \"common.max\": \"Max\",\n \"common.download\": \"Download\",\n \"common.copy\": \"Copy\",\n \"common.copy.failed\": \"Copy failed\",\n \"common.copy.copied\": \"Copied\",\n \"common.share\": \"Share\",\n \"common.export\": \"Export\",\n\n \"common.select.1d\": \"1D\",\n \"common.select.3d\": \"3D\",\n \"common.select.7d\": \"7D\",\n \"common.select.14d\": \"14D\",\n \"common.select.30d\": \"30D\",\n \"common.select.90d\": \"90D\",\n\n \"common.price\": \"Price\",\n \"common.quantity\": \"Quantity\",\n \"common.qty\": \"Qty\",\n \"common.status\": \"Status\",\n \"common.status.all\": \"All status\",\n\n \"common.date\": \"Date\",\n \"common.time\": \"Time\",\n \"common.volume\": \"Volume\",\n \"common.total\": \"Total\",\n \"common.symbol\": \"Symbol\",\n \"common.token\": \"Token\",\n \"common.amount\": \"Amount\",\n\n \"common.side\": \"Side\",\n \"common.side.all\": \"All sides\",\n \"common.type\": \"Type\",\n \"common.notional\": \"Notional\",\n \"common.fee\": \"Fee\",\n\n \"common.avgPrice\": \"Avg. price\",\n \"common.avgOpen\": \"Avg. open\",\n \"common.avgClose\": \"Avg. close\",\n \"common.trigger\": \"Trigger\",\n \"common.lastPrice\": \"Last price\",\n \"common.indexPrice\": \"Index price\",\n \"common.markPrice\": \"Mark price\",\n \"common.limitPrice\": \"Limit price\",\n \"common.marketPrice\": \"Market\",\n\n \"common.unrealizedPnl\": \"Unrealized PnL\",\n \"common.realizedPnl\": \"Realized PnL\",\n \"common.totalValue\": \"Total value\",\n \"common.address\": \"Address\",\n \"common.address.search.placeholder\": \"Search address\",\n \"common.available\": \"Available\",\n\n \"common.overview\": \"Overview\",\n \"common.funding\": \"Funding\",\n \"common.assets\": \"Assets\",\n \"common.countdown\": \"Countdown\",\n \"common.current\": \"Current\",\n \"common.account\": \"Account\",\n\n \"common.deposit\": \"Deposit\",\n \"common.withdraw\": \"Withdraw\",\n \"common.settle\": \"Settle\",\n \"common.markets\": \"Markets\",\n \"common.portfolio\": \"Portfolio\",\n \"common.positions\": \"Positions\",\n \"common.position\": \"Position\",\n \"common.orders\": \"Orders\",\n \"common.tpsl\": \"TP/SL\",\n \"common.leverage\": \"Leverage\",\n \"common.affiliate\": \"Affiliate\",\n \"common.tradingRewards\": \"Trading rewards\",\n \"common.trading\": \"Trading\",\n \"assetHistory.status.pending\": \"Pending\",\n \"assetHistory.status.confirm\": \"Confirm\",\n \"assetHistory.status.processing\": \"Processing\",\n \"assetHistory.status.completed\": \"Completed\",\n \"assetHistory.status.failed\": \"Failed\",\n \"assetHistory.status.pendingRebalance\": \"Pending rebalance\",\n\n /** linkDevice */\n \"linkDevice.createQRCode.loading.description\":\n \"Approve QR code with wallet...\",\n \"linkDevice.createQRCode.linkMobileDevice\": \"Link Mobile Device\",\n \"linkDevice.createQRCode.linkMobileDevice.description\":\n \"Open {{hostname}} on your mobile device and scan the QR code to link this wallet. For security, the QR code will expire in 60 seconds. <br/> The QR code allows mobile trading but does not enable withdrawals. Ensure you are not sharing your screen or any screenshots of the QR code.\",\n\n \"linkDevice.createQRCode.success.description\":\n \"Scan the QR code or paste the URL into another browser/<br/>device to continue.\",\n \"linkDevice.createQRCode.success.copyUrl\": \"Copy URL\",\n\n \"linkDevice.scanQRCode\": \"Scan QR Code\",\n \"linkDevice.scanQRCode.description\":\n \"Click the <0/> icon in the top right corner on desktop to generate a QR code to scan.\",\n \"linkDevice.scanQRCode.tooltip\": \"Link to Desktop via QR Code\",\n \"linkDevice.scanQRCode.connected.description\":\n \"You are connected via another device. This mode is for trading only. To switch networks, deposit or withdraw assets, please disconnect and reconnect your wallet on this device.\",\n\n /** settle */\n \"settle.settlePnl\": \"Settle PnL\",\n \"settle.settlePnl.warning\": \"Please settle your balance\",\n \"settle.settlePnl.description\":\n \"Are you sure you want to settle your PnL? <br/> Settlement will take up to 1 minute before you can withdraw your available balance.\",\n\n \"settle.unsettled\": \"Unsettled\",\n \"settle.unsettled.tooltip\":\n \"Unsettled balance can not be withdrawn. In order to withdraw, please settle your balance first.\",\n\n \"settle.settlement.requested\": \"Settlement requested\",\n \"settle.settlement.completed\": \"Settlement completed\",\n \"settle.settlement.failed\": \"Settlement failed\",\n \"settle.settlement.error\":\n \"Settlement is only allowed once every 10 minutes. Please try again later.\",\n\n \"languageSwitcher.language\": \"Language\",\n \"languageSwitcher.tips\":\n \"AI-generated translations may not be fully accurate.\",\n\n \"announcement.type.listing\": \"Listing\",\n \"announcement.type.maintenance\": \"Maintenance\",\n \"announcement.type.delisting\": \"Delisting\",\n\n \"maintenance.dialog.title\": \"System upgrade in progress\",\n \"maintenance.dialog.description\":\n \"Sorry, {{brokerName}} is temporarily unavailable due to a scheduled upgrade. The service is expected to be back by {{endDate}}.\",\n \"maintenance.tips.description\":\n \"{{brokerName}} will be temporarily unavailable for a scheduled upgrade from {{startDate}} to {{endDate}}.\",\n\n \"restrictedInfo.description.default\":\n \" You are accessing {{brokerName}} from an IP address ({{ip}}) associated with a restricted country.\",\n\n ...markets,\n ...portfolio,\n ...trading,\n ...chart,\n ...positions,\n ...orders,\n ...tpsl,\n ...share,\n ...orderEntry,\n ...leverage,\n ...scaffold,\n ...tradingRewards,\n ...tradingView,\n ...connector,\n ...transfer,\n ...affiliate,\n ...ui,\n ...tradingLeaderboard,\n};\n","import { FC, ReactNode, useEffect, useRef, useState } from \"react\";\nimport { I18nextProvider, type I18nextProviderProps } from \"react-i18next\";\nimport i18n from \"./i18n\";\nimport { Language, LocaleContext, LocaleContextState } from \"./context\";\nimport { defaultLanguages, defaultNS } from \"./constant\";\nimport { LocaleCode, Resources } from \"./types\";\nimport { Backend, BackendOptions } from \"./backend\";\n\nexport type I18nProviderProps = Partial<I18nextProviderProps>;\n\nexport const I18nProvider: FC<I18nProviderProps> = (props) => {\n const { children, ...rest } = props;\n return (\n // @ts-ignore\n <I18nextProvider {...rest}>{children}</I18nextProvider>\n );\n};\n\nexport type LocaleProviderProps = {\n children: ReactNode;\n locale?: LocaleCode;\n resource?: Record<string, string>;\n resources?: Resources;\n /**\n * supported languages, you can select supported languages from default languages\n */\n supportedLanguages?: LocaleCode[];\n /**\n * @deprecated use onLanguageChanged instead, will be removed in next patch version\n */\n onLocaleChange?: (locale: LocaleCode) => void;\n backend?: BackendOptions;\n} & Partial<LocaleContextState>;\n\nexport const LocaleProvider: FC<LocaleProviderProps> = (props) => {\n const { locale, resource, resources } = props;\n const [languages, setLanguages] = useState<Language[]>(defaultLanguages);\n const backend = useRef(new Backend(props.backend!));\n\n useEffect(() => {\n // init with resources\n if (resources) {\n Object.entries(resources).forEach(([locale, messages]) => {\n i18n.addResourceBundle(locale, defaultNS, messages, true, true);\n });\n return;\n }\n\n // init with locale and resource\n if (resource) {\n const lng = locale || i18n.language;\n i18n.addResourceBundle(lng, defaultNS, resource, true, true);\n }\n }, [locale, resource, resources]);\n\n useEffect(() => {\n // change language when locale changed\n if (locale && locale !== i18n.language) {\n i18n.changeLanguage(locale);\n }\n }, [locale]);\n\n useEffect(() => {\n if (Array.isArray(props.languages)) {\n setLanguages(props.languages);\n } else if (Array.isArray(props.supportedLanguages)) {\n setLanguages(\n props.supportedLanguages\n .map((localCode) =>\n defaultLanguages.find((l) => l.localCode === localCode)\n )\n .filter((item) => !!item)\n );\n }\n }, [props.supportedLanguages, props.languages]);\n\n useEffect(() => {\n // load language when refresh page\n backend.current.loadLanguage(i18n.language, defaultNS);\n }, [i18n.language]);\n\n const onLanguageBeforeChanged = async (lang: LocaleCode) => {\n await props.onLanguageBeforeChanged?.(lang);\n // load language when language before changed\n await backend.current.loadLanguage(lang, defaultNS);\n };\n\n const onLanguageChanged = async (lang: LocaleCode) => {\n props.onLanguageChanged?.(lang);\n props.onLocaleChange?.(lang);\n };\n\n return (\n <LocaleContext.Provider\n value={{ languages, onLanguageBeforeChanged, onLanguageChanged }}\n >\n {/* @ts-ignore */}\n <I18nextProvider i18n={i18n} defaultNS={defaultNS}>\n {props.children}\n </I18nextProvider>\n </LocaleContext.Provider>\n );\n};\n","import { createContext, useContext } from \"react\";\nimport { LocaleCode } from \"./types\";\n\nexport type Language = {\n localCode: LocaleCode;\n displayName: string;\n};\n\nexport type LocaleContextState = {\n /**\n * custom languages\n */\n languages: Language[];\n /**\n * called when language changed\n */\n onLanguageChanged: (lang: LocaleCode) => Promise<void>;\n /**\n * called before language changed\n */\n onLanguageBeforeChanged: (lang: LocaleCode) => Promise<void>;\n};\n\nexport const LocaleContext = createContext<LocaleContextState>({\n languages: [],\n onLanguageChanged: () => Promise.resolve(),\n onLanguageBeforeChanged: () => Promise.resolve(),\n});\n\nexport const useLocaleContext = () => {\n return useContext(LocaleContext);\n};\n","import i18n from \"./i18n\";\nimport { LocaleCode } from \"./types\";\n\nexport type BackendOptions = {\n loadPath: (lang: LocaleCode, ns: string) => string | string[];\n};\n\nexport class Backend {\n options: BackendOptions;\n cache: Set<string>;\n\n constructor(options: BackendOptions) {\n this.options = options;\n this.cache = new Set();\n }\n\n async fetchData(url: string) {\n try {\n const res = await fetch(url);\n const data = await res.json();\n return data;\n } catch (error) {\n console.error(`Failed to fetch data from ${url}:`, error);\n return {};\n }\n }\n\n async loadLanguage(lang: LocaleCode, ns: string) {\n if (typeof this.options?.loadPath !== \"function\") {\n return;\n }\n\n let paths = this.options.loadPath(lang, ns);\n\n if (typeof paths === \"string\") {\n paths = [paths];\n }\n\n if (!paths.length) {\n return;\n }\n\n // filter out the paths that have already been loaded\n const urls = paths.filter((path) => {\n const hasResourceBundle = i18n.hasResourceBundle(lang, ns);\n\n if (hasResourceBundle && this.cache.has(path)) {\n return false;\n }\n\n return true;\n });\n\n const promises = urls.map(async (url) => {\n const data = await this.fetchData(url);\n i18n.addResourceBundle(lang, ns, data, true, true);\n this.cache.add(url);\n });\n\n await Promise.all(promises);\n }\n}\n","import { useContext } from \"react\";\nimport { FlatNamespace, KeyPrefix } from \"i18next\";\nimport {\n FallbackNs,\n useTranslation as _useTranslation,\n UseTranslationOptions,\n I18nContext,\n} from \"react-i18next\";\nimport { type $Tuple } from \"react-i18next/helpers\";\nimport i18n from \"./i18n\";\n\nexport function useTranslation<\n Ns extends FlatNamespace | $Tuple<FlatNamespace> | undefined,\n KPrefix extends KeyPrefix<FallbackNs<Ns>> = undefined\n>(ns?: Ns, options?: UseTranslationOptions<KPrefix>) {\n // @ts-ignore\n const context = useContext(I18nContext);\n return _useTranslation(ns, { i18n: context?.i18n || i18n, ...options });\n}\n","import { useEffect, useState } from \"react\";\nimport i18n from \"./i18n\";\nimport { LocaleCode } from \"./types\";\n\nexport function useLocaleCode() {\n const [loacaleCode, setLoacaleCode] = useState<LocaleCode>(i18n.language);\n\n useEffect(() => {\n const handleLanguageChange = (lng: LocaleCode) => {\n setLoacaleCode(lng);\n };\n\n i18n.on(\"languageChanged\", handleLanguageChange);\n\n return () => {\n i18n.off(\"languageChanged\", handleLanguageChange);\n };\n }, [i18n]);\n\n return loacaleCode;\n}\n","import { LocaleEnum } from \"./constant\";\nimport { LocaleCode } from \"./types\";\n\n/**\n * transform browser language to you given i18n locale code\n * @param lang - browser language\n * @param localeCodes - locale codes to check\n * @param defaultLang - default locale code\n * @example\n * parseI18nLang('en-US') => 'en'\n * parseI18nLang('zh-CN') => 'zh'\n * parseI18nLang('zh-TW') => 'zh'\n * parseI18nLang('ja') => 'ja'\n * */\nexport function parseI18nLang(\n lang: string,\n localeCodes?: LocaleCode[],\n defaultLang?: LocaleCode\n) {\n console.log(\"Browser language\", lang);\n localeCodes = localeCodes || Object.values(LocaleEnum);\n defaultLang = defaultLang || LocaleEnum.en;\n\n const regex = /^([a-z]{2})/i;\n const match = lang.match(regex);\n\n if (!match) return defaultLang;\n\n const matchLang = match[1];\n\n if (localeCodes.includes(lang)) {\n return lang;\n }\n\n if (localeCodes.includes(matchLang)) {\n return matchLang;\n }\n\n return defaultLang;\n}\n\n/**\n * remove lang prefix from pathname\n * @param pathname - pathname to remove lang prefix\n * @param localeCodes - locale codes to check\n * @example\n * removeLangPrefix('/en/perp/PERP_ETH_USDC') => '/perp/PERP_ETH_USDC'\n * removeLangPrefix('/en/markets') => '/markets'\n * removeLangPrefix('/perp/PERP_ETH_USDC') => '/perp/PERP_ETH_USDC'\n * removeLangPrefix('/markets') => '/markets'\n */\nexport function removeLangPrefix(pathname: string, localeCodes?: string[]) {\n const localePath = getLocalePathFromPathname(pathname, localeCodes);\n\n return localePath\n ? pathname.replace(new RegExp(`^/${localePath}(?=/)`), \"\")\n : pathname;\n}\n\n/**\n * get locale path from pathname\n * @param pathname - pathname to get locale path\n * @param localeCodes - locale codes to check\n * @example\n * getLocalePathFromPathname('/en/perp/PERP_ETH_USDC') => 'en'\n * getLocalePathFromPathname('/perp/PERP_ETH_USDC') => null\n * getLocalePathFromPathname('/en/markets') => 'en'\n * getLocalePathFromPathname('/markets') => null\n */\nexport function getLocalePathFromPathname(\n pathname: string,\n localeCodes?: string[]\n) {\n const locale = pathname.split(\"/\")[1];\n localeCodes = localeCodes || Object.values(LocaleEnum);\n return localeCodes.includes(locale as LocaleEnum) ? locale : null;\n}\n\n/**\n * Generate path with locale\n * @param lang - language\n * @param path - path to generate\n * @param localeCodes - locale codes to check\n * @returns path with locale\n */\nexport function generateLocalePath(\n lang: string,\n path: string,\n localeCodes?: string[]\n) {\n localeCodes = localeCodes || Object.values(LocaleEnum);\n\n let localePath = getLocalePathFromPathname(path, localeCodes);\n\n // if path already has locale, return it\n if (localePath) {\n return path;\n }\n\n localePath = parseI18nLang(lang, localeCodes);\n\n // if path doesn't have locale, add it\n return `/${localePath}${path}`;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/types.ts","../src/index.ts","../src/i18n.ts","../src/constant.ts","../src/locale/module/markets.ts","../src/locale/module/portfolio.ts","../src/locale/module/trading.ts","../src/locale/module/chart.ts","../src/locale/module/positions.ts","../src/locale/module/orders.ts","../src/locale/module/tpsl.ts","../src/locale/module/share.ts","../src/locale/module/orderEntry.ts","../src/locale/module/leverage.ts","../src/locale/module/scaffold.ts","../src/locale/module/tradingRewards.ts","../src/locale/module/tradingView.ts","../src/locale/module/connector.ts","../src/locale/module/transfer.ts","../src/locale/module/affiliate.ts","../src/locale/module/ui.ts","../src/locale/module/tradingLeaderboard.ts","../src/locale/en.ts","../src/provider.tsx","../src/backend.ts","../src/context.ts","../src/utils.ts","../src/useTranslation.ts","../src/useLocaleCode.ts"],"names":["default","createInstance","LanguageDetector","LocaleEnum","defaultLanguages","defaultLng","defaultNS","i18nLocalStorageKey","i18nCookieKey","markets","portfolio","trading","chart","positions","orders","tpsl","share","orderEntry","leverage","scaffold","tradingRewards","tradingView","connector","transfer","affiliate","ui","tradingLeaderboard","en","resources","languageDetector","i18n","i18n_default","useEffect","useRef","useState","I18nextProvider","Backend","options","url","lang","ns","paths","promises","path","data","createContext","useContext","LocaleContext","useLocaleContext","parseI18nLang","localeCodes","defaultLang","regex","match","matchLang","removeLangPrefix","pathname","localePath","getLocalePathFromPathname","locale","generateLocalePath","jsx","I18nProvider","props","children","rest","LocaleProvider","resource","convertDetectedLanguage","languages","setLanguages","backend","messages","localCode","l","item","onLanguageBeforeChanged","onLanguageChanged","_useTranslation","I18nContext","useTranslation","context","useLocaleCode","loacaleCode","setLoacaleCode","handleLanguageChange","lng"],"mappings":"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","sourcesContent":["import \"i18next\";\nimport { defaultNS, LocaleEnum } from \"./constant\";\nimport { en } from \"./locale/en\";\n\nexport type LocaleCode = keyof typeof LocaleEnum | (string & {});\n\ntype ExtendLocaleMessages = Record<`extend.${string}`, string>;\n\nexport type LocaleMessages = typeof en & ExtendLocaleMessages;\n\nexport type Resources<T extends {} = {}> = {\n [key in LocaleCode]?: Partial<LocaleMessages & T>;\n};\n\n// https://www.i18next.com/overview/typescript#create-a-declaration-file\n// Enhance the input parameter intelliSense for the t function.\ndeclare module \"i18next\" {\n interface CustomTypeOptions {\n // custom namespace type, if you changed it\n // defaultNS: \"translation\";\n\n // custom resources type\n resources: {\n [defaultNS]: LocaleMessages;\n };\n }\n}\n","import \"./types\";\n\nexport * from \"react-i18next\";\nexport { default as i18next, createInstance } from \"i18next\";\nexport { default as i18n } from \"./i18n\";\nexport {\n I18nProvider,\n LocaleProvider,\n type I18nProviderProps,\n type LocaleProviderProps,\n} from \"./provider\";\nexport { useTranslation } from \"./useTranslation\";\nexport { useLocaleCode } from \"./useLocaleCode\";\nexport * from \"./context\";\nexport * from \"./types\";\nexport * from \"./constant\";\nexport * from \"./locale/en\";\nexport * from \"./utils\";\n","// import i18n from \"i18next\";\n// import { initReactI18next } from \"react-i18next\";\nimport { createInstance } from \"i18next\";\nimport LanguageDetector from \"i18next-browser-languagedetector\";\nimport {\n defaultLng,\n defaultNS,\n i18nCookieKey,\n i18nLocalStorageKey,\n} from \"./constant\";\nimport { en } from \"./locale/en\";\n\nexport const resources = {\n [defaultLng]: { [defaultNS]: en },\n};\n\nconst languageDetector = new LanguageDetector(null, {\n lookupLocalStorage: i18nLocalStorageKey,\n lookupCookie: i18nCookieKey,\n caches: [\"localStorage\", \"cookie\"],\n});\n\n// i18n\n// // passes i18n down to react-i18next\n// .use(initReactI18next)\n// .init({\n// // the translations\n// resources,\n// // language to use, more information here: https://www.i18next.com/overview/configuration-options#languages-namespaces-resources\n// // you can use the i18n.changeLanguage function to change the language manually: https://www.i18next.com/overview/api#changelanguage\n// // if you're using a language detector, do not define the lng option\n// lng: \"en\",\n// fallbackLng: \"en\",\n// interpolation: {\n// // react already safes from xss => https://www.i18next.com/translation-function/interpolation#unescape\n// escapeValue: false,\n// },\n// });\n\n// https://react.i18next.com/latest/i18nextprovider#when-to-use\nconst i18n = createInstance({\n // lng: defaultLng,\n fallbackLng: defaultLng,\n // debug: true,\n interpolation: {\n escapeValue: false,\n },\n resources,\n}).use(languageDetector);\n\ni18n.init();\n\nexport default i18n;\n","import { Language } from \"./context\";\n\nexport enum LocaleEnum {\n /** English */\n en = \"en\",\n /** Chinese */\n zh = \"zh\",\n /** Japanese */\n ja = \"ja\",\n /** Spanish */\n es = \"es\",\n /** Korean */\n ko = \"ko\",\n /** Vietnamese */\n vi = \"vi\",\n /** German */\n de = \"de\",\n /** French */\n fr = \"fr\",\n /** Russian */\n ru = \"ru\",\n /** Indonesian */\n id = \"id\",\n /** Turkish */\n tr = \"tr\",\n /** Italian */\n it = \"it\",\n /** Portuguese */\n pt = \"pt\",\n /** Ukrainian */\n uk = \"uk\",\n /** Polish */\n pl = \"pl\",\n /** Dutch */\n nl = \"nl\",\n}\n\nexport const defaultLanguages: Language[] = [\n { localCode: LocaleEnum.en, displayName: \"English\" }, // English\n { localCode: LocaleEnum.zh, displayName: \"中文\" }, // Chinese\n { localCode: LocaleEnum.ja, displayName: \"日本語\" }, // Japanese\n { localCode: LocaleEnum.es, displayName: \"Español\" }, // Spanish\n { localCode: LocaleEnum.ko, displayName: \"한국어\" }, // Korean\n { localCode: LocaleEnum.vi, displayName: \"Tiếng Việt\" }, // Vietnamese\n { localCode: LocaleEnum.de, displayName: \"Deutsch\" }, // German\n { localCode: LocaleEnum.fr, displayName: \"Français\" }, // French\n { localCode: LocaleEnum.ru, displayName: \"Русский\" }, // Russian\n { localCode: LocaleEnum.id, displayName: \"Bahasa Indonesia\" }, // Indonesian\n { localCode: LocaleEnum.tr, displayName: \"Türkçe\" }, // Turkish\n { localCode: LocaleEnum.it, displayName: \"Italiano\" }, // Italian\n { localCode: LocaleEnum.pt, displayName: \"Português\" }, // Portuguese\n { localCode: LocaleEnum.uk, displayName: \"Українська\" }, // Ukrainian\n { localCode: LocaleEnum.pl, displayName: \"Polski\" }, // Polish\n { localCode: LocaleEnum.nl, displayName: \"Nederlands\" }, // Dutch\n];\nexport const defaultLng = LocaleEnum.en;\nexport const defaultNS = \"translation\";\n\nexport const i18nLocalStorageKey = \"orderly_i18nLng\";\n\n// preferred-language\nexport const i18nCookieKey = \"orderly_i18nLng\";\n","export const markets = {\n \"markets.favorites\": \"Favorites\",\n \"markets.recent\": \"Recent\",\n \"markets.newListings\": \"New listings\",\n \"markets.allMarkets\": \"All markets\",\n\n \"markets.openInterest\": \"Open interest\",\n \"markets.openInterest.tooltip\": \"Total size of positions per side.\",\n\n \"markets.topGainers\": \"Top gainers\",\n \"markets.topLosers\": \"Top losers\",\n\n \"markets.search.placeholder\": \"Search market\",\n \"markets.dataList.favorites.empty\":\n \"Click on the <0/> icon next to a market to add it to your list.\",\n\n \"markets.dataList.column.8hFunding\": \"8h funding\",\n \"markets.dataList.column.moveTop\": \"Move to top\",\n\n \"markets.favorites.dropdown.title\": \"Select lists for\",\n \"markets.favorites.dropdown.addPlaceholder\": \"Add a new watchlist\",\n \"markets.favorites.tabs.maxList\": \"Maximum 10 groups in the favorite list\",\n \"markets.favorites.tabs.maxName\": \"List name cannot exceed 15 characters\",\n \"markets.favorites.tabs.delete.dialog.title\": \"Delete list\",\n \"markets.favorites.tabs.delete.dialog.description\":\n \"Are you sure you want to delete {{name}}?\",\n\n \"markets.column.market\": \"Market\",\n \"markets.column.24hChange\": \"24h change\",\n \"markets.column.24hVolume\": \"24h volume\",\n \"markets.column.market&Volume\": \"Market / Volume\",\n \"markets.column.price&Change\": \"Price / change\",\n \"markets.column.last\": \"Last\",\n \"markets.column.24hPercentage\": \"24h%\",\n\n \"markets.funding.comparison\": \"Comparison\",\n \"markets.funding.column.estFunding\": \"Est. funding\",\n \"markets.funding.column.lastFunding\": \"Last funding\",\n \"markets.funding.column.1dAvg\": \"1D avg.\",\n \"markets.funding.column.3dAvg\": \"3D avg.\",\n \"markets.funding.column.7dAvg\": \"7D avg.\",\n \"markets.funding.column.14dAvg\": \"14D avg.\",\n \"markets.funding.column.30dAvg\": \"30D avg.\",\n \"markets.funding.column.90dAvg\": \"90D avg.\",\n \"markets.funding.column.positiveRate\": \"Positive rate\",\n\n \"markets.symbolInfoBar.Mark\": \"Mark\",\n \"markets.symbolInfoBar.Mark.tooltip\":\n \"Price for the computation of unrealized PnL and liquidation.\",\n \"markets.symbolInfoBar.Index\": \"Index\",\n \"markets.symbolInfoBar.Index.tooltip\":\n \"Average of the last prices across other exchanges.\",\n \"markets.symbolInfoBar.24hVolume\": \"24h volume\",\n \"markets.symbolInfoBar.24hVolume.tooltip\":\n \"24 hour total trading volume on the Orderly Network.\",\n \"markets.symbolInfoBar.predFundingRate\": \"Pred. funding rate\",\n \"markets.symbolInfoBar.predFundingRate.tooltip\":\n \"Funding rates are payments between traders who are long and short. When positive, long positions pay short positions funding. When negative, short positions pay long positions.\",\n};\n\nexport type Markets = typeof markets;\n","export const portfolio = {\n \"portfolio.feeTier\": \"Fee tier\",\n \"portfolio.apiKeys\": \"API Keys\",\n \"portfolio.setting\": \"Setting\",\n\n \"portfolio.overview.availableWithdraw\": \"Available to withdraw\",\n\n \"portfolio.overview.performance\": \"Performance\",\n \"portfolio.overview.performance.roi\": \"{{period}} ROI\",\n \"portfolio.overview.performance.pnl\": \"{{period}} PnL\",\n \"portfolio.overview.performance.volume\": \"{{period}} Volume (USDC)\",\n \"portfolio.overview.performance.dailyPnl\": \"Daily PnL\",\n \"portfolio.overview.performance.cumulativePnl\": \"Cumulative PnL\",\n\n \"portfolio.overview.deposits&Withdrawals\": \"Deposits & Withdrawals\",\n \"portfolio.overview.distribution\": \"Distribution\",\n\n \"portfolio.overview.column.txId\": \"TxID\",\n \"portfolio.overview.column.funding&AnnualRate\": \"Funding rate / Annual rate\",\n \"portfolio.overview.column.paymentType\": \"Payment type\",\n \"portfolio.overview.column.paymentType.paid\": \"Paid\",\n \"portfolio.overview.column.paymentType.received\": \"Received\",\n \"portfolio.overview.column.fundingFee\": \"Funding fee\",\n\n \"portfolio.overview.distribution.type.referralCommission\":\n \"Referral commission\",\n \"portfolio.overview.distribution.type.refereeRebate\": \"Referee rebate\",\n \"portfolio.overview.distribution.type.brokerFee\": \"Broker fee\",\n\n \"portfolio.feeTier.updatedDailyBy\": \"Updated daily by\",\n \"portfolio.feeTier.header.yourTier\": \"Your tier\",\n \"portfolio.feeTier.header.30dVolume\": \"30D trading volume\",\n \"portfolio.feeTier.header.takerFeeRate\": \"Taker fee rate\",\n \"portfolio.feeTier.header.makerFeeRate\": \"Maker fee rate\",\n \"portfolio.feeTier.column.tier\": \"Tier\",\n \"portfolio.feeTier.column.30dVolume\": \"30 day volume\",\n \"portfolio.feeTier.column.30dVolume.above\": \"Above {{volume}}\",\n \"portfolio.feeTier.column.maker\": \"Maker\",\n \"portfolio.feeTier.column.taker\": \"Taker\",\n\n \"portfolio.apiKey.accountId\": \"Account ID\",\n \"portfolio.apiKey.accountId.copied\": \"Account id copied\",\n \"portfolio.apiKey.uid\": \"UID\",\n \"portfolio.apiKey.secretKey\": \"Secret key\",\n \"portfolio.apiKey.secretKey.copied\": \"Secret key copied\",\n\n \"portfolio.apiKey.ip\": \"IP\",\n \"portfolio.apiKey.permissions\": \"Permissions\",\n \"portfolio.apiKey.permissions.read\": \"Read\",\n \"portfolio.apiKey.permissions.trading\": \"Trading\",\n\n \"portfolio.apiKey.description\":\n \"Create API keys to suit your trading needs. For your security, don't share your API keys with anyone.\",\n \"portfolio.apiKey.readApiGuide\": \"Read API guide\",\n\n \"portfolio.apiKey.column.apiKey\": \"API key\",\n \"portfolio.apiKey.column.apiKey.copy\": \"API key copied\",\n \"portfolio.apiKey.column.permissionType\": \"Permission type\",\n \"portfolio.apiKey.column.restrictedIP\": \"Restricted IP\",\n \"portfolio.apiKey.column.restrictedIP.copy\": \"Restricted IP copied\",\n \"portfolio.apiKey.column.expirationDate\": \"Expiration date\",\n\n \"portfolio.apiKey.create.dialog.title\": \"Create API key\",\n\n \"portfolio.apiKey.create.connectWallet.tooltip\":\n \"Please connect wallet before create API key\",\n \"portfolio.apiKey.create.signIn.tooltip\":\n \"Please sign in before create API key\",\n \"portfolio.apiKey.create.enableTrading.tooltip\":\n \"Please enable trading before create API key\",\n \"portfolio.apiKey.create.wrongNetwork.tooltip\":\n \"Please switch to a supported network to create API key\",\n\n \"portfolio.apiKey.create.ipRestriction\": \"IP restriction (optional)\",\n \"portfolio.apiKey.create.ipRestriction.placeholder\":\n \"Add IP addresses, separated by commas.\",\n\n \"portfolio.apiKey.created.warning\":\n \"Please copy the API secret. Once you close this pop-up, the API secret will be encrypted.\",\n \"portfolio.apiKey.created.button.copyApiInfo\": \"Copy API info\",\n \"portfolio.apiKey.apiInfo.copied\": \"API info copied\",\n\n \"portfolio.apiKey.created\": \"API key created\",\n \"portfolio.apiKey.deleted\": \"API key deleted\",\n \"portfolio.apiKey.updated\": \"API key updated\",\n\n \"portfolio.apiKey.edit.dialog.title\": \"Edit API key\",\n \"portfolio.apiKey.delete.dialog.title\": \"Delete API key\",\n \"portfolio.apiKey.delete.dialog.description\":\n \"Delete your API key <0>{{apiKey}}</0>?\",\n\n \"portfolio.setting.systemUpgrade\": \"System upgrade\",\n \"portfolio.setting.cancelOpenOrders\":\n \"Cancel open orders during system upgrade\",\n \"portfolio.setting.cancelOpenOrders.description\":\n \"During the upgrade period, all open orders will be cancelled to manage your risk in case of high market volatility.\",\n};\n\nexport type Portfolio = typeof portfolio;\n","export const trading = {\n \"trading.layout\": \"Layout\",\n \"trading.layout.right\": \"Advanced (right)\",\n \"trading.layout.left\": \"Advanced (left)\",\n \"trading.orders.closeAll\": \"Close All\",\n \"trading.hideOtherSymbols\": \"Hide other symbols\",\n \"trading.history\": \"History\",\n\n \"trading.portfolioSettings\": \"Portfolio Settings\",\n \"trading.portfolioSettings.decimalPrecision\":\n \"Decimal Precision for PnL & Notional\",\n \"trading.portfolioSettings.unrealPnlPriceBasis\": \"Unrealized PnL Price Basis\",\n\n \"trading.orderBook\": \"Order book\",\n \"trading.lastTrades\": \"Last trades\",\n \"trading.orderBook.column.value\": \"Value\",\n\n \"trading.tabs.chart\": \"Chart\",\n \"trading.tabs.trades\": \"Trades\",\n \"trading.tabs.data\": \"Data\",\n\n \"trading.column.24High\": \"24h high\",\n \"trading.column.24Low\": \"24h low\",\n\n \"trading.orderBook.sum\": \"Sum\",\n \"trading.orderBook.markPrice.tooltip\":\n \"Obtained from a third-party oracle, the mark price is calculated as the median of three prices: the last price, the fair price based on the funding rate basis, and the fair price based on the order books.\",\n \"trading.orderBook.spreadRatio.tooltip\": \"Spread Ratio of the ask1 and bid1.\",\n\n \"trading.faucet.getTestUSDC\": \"Get test USDC\",\n \"trading.faucet.getTestUSDC.success\":\n \"{{quantity}} USDC will be added to your balance. Please note this may take up to 3 minutes. Please check back later.\",\n\n \"trading.asset.startTrading\": \"Start trading\",\n \"trading.asset.startTrading.description\":\n \"You can deposit assets from various networks\",\n\n \"trading.asset.myAssets\": \"My Assets\",\n\n \"trading.asset.freeCollateral\": \"Free collateral\",\n \"trading.asset.freeCollateral.tooltip\":\n \"Free collateral for placing new orders.\",\n \"trading.asset.freeCollateral.formula\":\n \"Free collateral = Total balance + Total unsettlement PnL - Total position initial margin\",\n\n \"trading.asset.marginRatio\": \"Margin ratio\",\n \"trading.asset.marginRatio.tooltip\":\n \"The margin ratio represents the proportion of collateral relative to the total position value.\",\n \"trading.asset.marginRatio.formula\":\n \"Account margin ratio = (Total collateral value / Total position notional) * 100%\",\n\n \"trading.asset.unsettledPnl\": \"Unsettled PnL\",\n \"trading.asset.free&TotalCollateral\": \"Free / Total Collateral\",\n \"trading.asset.availableBalance\": \"Available Balance\",\n\n \"trading.asset.maintenanceMarginRatio\": \"Maintenance margin ratio\",\n \"trading.asset.maintenanceMarginRatio.tooltip\":\n \"The minimum margin ratio required to protect your positions from being liquidated. If the Margin ratio falls below the Maintenance margin ratio, the account will be liquidated.\",\n \"trading.asset.maintenanceMarginRatio.formula\":\n \"Account maintenance margin ratio = Sum(Position notional * Symbol maintenance Margin Ratio) / Total position notional * 100%\",\n\n \"trading.riskRate\": \"Risk rate\",\n \"trading.riskRate.tooltip\":\n \"The Risk rate is used to assess the risk level of an account. When the Risk rate reaches 100%, the account will be liquidated\",\n \"trading.riskRate.formula\":\n \"Risk rate = Maintenance margin ratio / Margin ratio * 100%\",\n\n \"trading.asset&Margin\": \"Asset & Margin\",\n\n \"trading.fundingRate.predFundingRate\": \"Pred. funding rate\",\n};\n\nexport type Trading = typeof trading;\n","export const chart = {\n \"chart.now\": \"Now\",\n};\n\nexport type Chart = typeof chart;\n","export const positions = {\n \"positions.positionHistory\": \"Position history\",\n \"positions.liquidation\": \"Liquidation\",\n \"positions.closePosition\": \"Close Position\",\n\n \"positions.column.liqPrice\": \"Liq. price\",\n \"positions.column.liqPrice.tooltip\":\n \"Estimated price at which your position will be liquidated. Prices are estimated and depend on multiple factors across all positions.\",\n \"positions.column.unrealPnl.tooltip\":\n \"Current unrealized profit or loss on your open positions across all widgets calculated using Mark Price.\",\n \"positions.column.unrealPnl.priceBasis\": \"Unrealized PnL Price Basis\",\n \"positions.column.margin\": \"Margin\",\n \"positions.column.margin.tooltip\":\n \"The minimum equity to keep your position.\",\n \"positions.column.margin.formula\":\n \"Margin = Position size * Mark price * MMR\",\n \"positions.column.close\": \"Close\",\n\n \"positions.limitClose\": \"Limit close\",\n \"positions.limitClose.description\":\n \"You agree closing {{quantity}} {{base}} position at limit price.\",\n \"positions.marketClose\": \"Market close\",\n \"positions.marketClose.description\":\n \"You agree closing {{quantity}} {{base}} position at market price.\",\n\n \"positions.history.status.closed\": \"Closed\",\n \"positions.history.status.partialClosed\": \"Partially closed\",\n \"positions.history.type.adl\": \"Adl\",\n \"positions.history.type.liquidated\": \"Liquidated\",\n \"positions.history.liquidated.liquidationId\": \"Liquidation id\",\n \"positions.history.liquidated.liquidatorFee\": \"Liquidator fee\",\n \"positions.history.liquidated.insFundFee\": \"Ins. Fund fee\",\n\n \"positions.history.column.closed\": \"Closed\",\n \"positions.history.column.maxClosed\": \"Max closed\",\n \"positions.history.column.closed&maxClosed\": \"Closed / Max closed\",\n \"positions.history.column.netPnl\": \"Net PnL\",\n \"positions.history.column.timeOpened\": \"Time opened\",\n \"positions.history.column.timeClosed\": \"Time closed\",\n \"positions.history.column.updatedTime\": \"Updated time\",\n\n \"positions.history.netPnl.fundingFee\": \"Funding fee\",\n \"positions.history.netPnl.tradingFee\": \"Trading fee\",\n\n \"positions.Liquidation.column.liquidationId\": \"Liquidation id\",\n \"positions.Liquidation.column.insFundTransfer\": \"Ins. fund transfer\",\n \"positions.Liquidation.column.liquidationFee\": \"Liquidation fee\",\n};\n\nexport type Positions = typeof positions;\n","export const orders = {\n \"orders.orderHistory\": \"Order history\",\n\n \"orders.status.pending\": \"Pending\",\n \"orders.status.filled\": \"Filled\",\n \"orders.status.partialFilled\": \"Partial filled\",\n \"orders.status.canceled\": \"Canceled\",\n \"orders.status.rejected\": \"Rejected\",\n \"orders.status.incomplete\": \"Incomplete\",\n \"orders.status.completed\": \"Completed\",\n\n \"orders.status.opened.toast.title\": \"Order opened\",\n \"orders.status.filled.toast.title\": \"Order filled\",\n \"orders.status.canceled.toast.title\": \"Order canceled\",\n \"orders.status.rejected.toast.title\": \"Order rejected\",\n \"orders.status.replaced.toast.title\": \"Order edited\",\n\n \"orders.column.orderPrice\": \"Order price\",\n \"orders.column.fill&Quantity\": \"Filled / Quantity\",\n \"orders.column.triggerPrice\": \"Trigger price\",\n \"orders.column.orderTime\": \"Order time\",\n \"orders.column.hidden\": \"Hidden\",\n\n \"orders.editOrder\": \"Edit order\",\n \"order.edit.confirm.quantity\":\n \"You agree changing the quantity of {{base}}-PERP order to <0>{{value}}</0>.\",\n \"order.edit.confirm.price\":\n \"You agree changing the price of {{base}}-PERP order to <0>{{value}}</0>.\",\n \"order.edit.confirm.triggerPrice\":\n \"You agree changing the trigger price of {{base}}-PERP order to <0>{{value}}</0>.\",\n\n \"orders.cancelOrder\": \"Cancel order\",\n \"orders.cancelOrder.description\":\n \"Are you sure you want to cancel your pending order.\",\n\n \"orders.cancelAll\": \"Cancel all\",\n \"orders.pending.cancelAll\": \"Cancel all pending orders\",\n \"orders.pending.cancelAll.description\":\n \"Are you sure you want to cancel all of your pending orders?\",\n \"orders.tpsl.cancelAll\": \"Cancel all TP/SL orders\",\n \"orders.tpsl.cancelAll.description\":\n \"Are you sure you want to cancel all of your TP/SL orders?\",\n\n \"orders.price.greaterThan\": \"Price can not be greater than {{max}} USDC.\",\n \"orders.price.lessThan\": \"Price can not be less than {{min}} USDC.\",\n\n \"orders.quantity.lessThan\": \"Quantity should be less than {{quantity}}\",\n \"orders.quantity.lessThanPosition\":\n \"Quantity should be less than position quantity : {{quantity}}\",\n\n \"orders.history.renew\": \"Renew\",\n\n \"orders.download.tooltip\":\n \"The downloaded data will reflect only the applied filters (e.g., status, time, side, and pagination) and may not include all records.\",\n};\n\nexport type Orders = typeof orders;\n","export const tpsl = {\n \"tpsl.tp\": \"TP\",\n \"tpsl.sl\": \"SL\",\n \"tpsl.tpPrice\": \"TP Price\",\n \"tpsl.slPrice\": \"SL Price\",\n \"tpsl.tpPnl\": \"TP PnL\",\n \"tpsl.slPnl\": \"SL PnL\",\n \"tpsl.tpTrigger\": \"TP trigger\",\n \"tpsl.slTrigger\": \"SL trigger\",\n\n \"tpsl.pnl\": \"PnL\",\n \"tpsl.offset\": \"Offset\",\n\n \"tpsl.positionTpsl\": \"Position TP/SL\",\n \"tpsl.entirePosition\": \"Entire position\",\n \"tpsl.estPnl\": \"Est. PNL\",\n \"tpsl.takeProfit\": \"Take profit\",\n \"tpsl.stopLoss\": \"Stop loss\",\n\n \"tpsl.cancelOrder.description\":\n \"Are you sure you want to cancel this TP/SL order?\",\n \"tpsl.confirmOrder\": \"Confirm Order\",\n};\n\nexport type TPSL = typeof tpsl;\n","export const share = {\n \"share.pnl.sharePnl\": \"Share PnL\",\n \"share.pnl.share.long\": \"LONG\",\n \"share.pnl.share.short\": \"SHORT\",\n\n \"share.pnl.displayFormat\": \"PnL display format\",\n \"share.pnl.displayFormat.roi&Pnl\": \"ROI & PnL\",\n \"share.pnl.displayFormat.roi\": \"ROI\",\n \"share.pnl.displayFormat.pnl\": \"PnL\",\n\n \"share.pnl.optionalInfo\": \"Optional information to share\",\n \"share.pnl.optionalInfo.openPrice\": \"Open price\",\n \"share.pnl.optionalInfo.closePrice\": \"Close price\",\n \"share.pnl.optionalInfo.openTime\": \"Opened at\",\n \"share.pnl.optionalInfo.closeTime\": \"Closed at\",\n \"share.pnl.optionalInfo.message\": \"Your message\",\n \"share.pnl.optionalInfo.message.placeholder\": \"Max 25 characters\",\n \"share.pnl.optionalInfo.message.maxLength\":\n \"Maximum support of 25 characters\",\n\n \"share.pnl.image.copied\": \"Image copied\",\n \"share.pnl.copy.failed.description\":\n \"Browser version outdated, please update in order to copy image to clipboard.\",\n};\n\nexport type Share = typeof share;\n","export const orderEntry = {\n \"orderEntry.buyLong\": \"Buy / Long\",\n \"orderEntry.sellShort\": \"Sell / Short\",\n \"orderEntry.reduceOnly\": \"Reduce only\",\n\n \"orderEntry.orderType.limit\": \"Limit\",\n \"orderEntry.orderType.market\": \"Market\",\n \"orderEntry.orderType.limitOrder\": \"Limit order\",\n \"orderEntry.orderType.marketOrder\": \"Market order\",\n \"orderEntry.orderType.stopLimit\": \"Stop limit\",\n \"orderEntry.orderType.stopMarket\": \"Stop market\",\n \"orderEntry.orderType.postOnly\": \"Post only\",\n \"orderEntry.orderType.ioc\": \"IOC\",\n \"orderEntry.orderType.fok\": \"FOK\",\n\n \"orderEntry.bbo\": \"BBO\",\n \"orderEntry.bbo.counterparty1\": \"Counterparty 1\",\n \"orderEntry.bbo.counterparty5\": \"Counterparty 5\",\n \"orderEntry.bbo.queue1\": \"Queue 1\",\n \"orderEntry.bbo.queue5\": \"Queue 5\",\n \"orderEntry.bbo.disabled.tips\":\n \"BBO is not supported when TP/SL, Post-Only, IOC, or FOK is selected.\",\n\n \"orderEntry.estLiqPrice\": \"Est. liq. price\",\n\n \"orderEntry.disableOrderConfirm\": \"Disable order confirmation\",\n \"orderEntry.orderConfirm\": \"Order confirm\",\n \"orderEntry.hidden\": \"Hidden\",\n \"orderEntry.keepVisible\": \"Keep visible\",\n\n \"orderEntry.maxBuy\": \"Max buy\",\n \"orderEntry.maxSell\": \"Max sell\",\n\n \"orderEntry.tpMarkPrice\": \"TP price (Mark)\",\n \"orderEntry.slMarkPrice\": \"SL price (Mark)\",\n \"orderEntry.tpsl.trigger.description\":\n \"TP/SL triggers at the specified mark price and executes as a market order.\",\n \"orderEntry.estRoi\": \"Est.ROI\",\n \"orderEntry.estPnL\": \"Est.PnL\",\n\n \"orderEntry.tpsl.tips\":\n \"TP/SL triggers at the specified mark price and executes as a market order. By default, it applies to the entire position. Adjust settings in open positions for partial TP/SL.\",\n\n \"orderEntry.orderQuantity.error.required\": \"Quantity is required\",\n \"orderEntry.orderQuantity.error.min\":\n \"Quantity must be greater than {{value}}\",\n \"orderEntry.orderQuantity.error.max\": \"Quantity must be less than {{value}}\",\n\n \"orderEntry.orderPrice.error.required\": \"Price is required\",\n \"orderEntry.orderPrice.error.min\": \"Price must be greater than {{value}}\",\n \"orderEntry.orderPrice.error.max\": \"Price must be less than {{value}}\",\n\n \"orderEntry.triggerPrice.error.required\": \"Trigger price is required\",\n \"orderEntry.triggerPrice.error.min\":\n \"Trigger price must be greater than {{value}}\",\n \"orderEntry.triggerPrice.error.max\":\n \"Trigger price must be less than {{value}}\",\n\n \"orderEntry.tpTriggerPrice.error.min\":\n \"TP Price must be greater than {{value}}\",\n \"orderEntry.tpTriggerPrice.error.max\": \"TP Price must be less than {{value}}\",\n\n \"orderEntry.slTriggerPrice.error.min\":\n \"SL Price must be greater than {{value}}\",\n \"orderEntry.slTriggerPrice.error.max\": \"SL Price must be less than {{value}}\",\n\n \"orderEntry.total.error.min\":\n \"The order value should be greater or equal to {{value}} USDC\",\n};\n\nexport type OrderEntry = typeof orderEntry;\n","export const leverage = {\n \"leverage.maxAccountLeverage\": \"Max account leverage\",\n \"leverage.accountLeverage\": \"Account leverage\",\n \"leverage.currentLeverage\": \"Current leverage\",\n \"leverage.maxLeverage\": \"Max leverage\",\n \"leverage.updated\": \"Leverage updated\",\n};\n\nexport type Leverage = typeof leverage;\n","export const scaffold = {\n \"scaffold.footer.operational\": \"Operational\",\n \"scaffold.footer.joinCommunity\": \"Join our community\",\n \"scaffold.footer.poweredBy\": \"Powered by\",\n};\n\nexport type Scaffold = typeof scaffold;\n","export const tradingRewards = {\n \"tradingRewards.rewards\": \"Rewards\",\n\n \"tradingRewards.subtitle\": \"Trade with {{brokerName}} to earn esORDER.\",\n \"tradingRewards.learnMore\": \"Learn more here\",\n\n \"tradingRewards.myEstRewards\": \"My est. rewards\",\n \"tradingRewards.epoch\": \"Epoch\",\n \"tradingRewards.epochRewards\": \"Epoch rewards\",\n\n \"tradingRewards.otherOrderlyDex\": \"Other Orderly DEX\",\n \"tradingRewards.claim\": \"Claim\",\n \"tradingRewards.availableClaim\": \"Available to claim\",\n\n \"tradingRewards.stake\": \"Stake\",\n \"tradingRewards.booster\": \"Booster\",\n \"tradingRewards.stakeBooster\": \"Stake booster\",\n \"tradingRewards.avgStakedAmount\": \"Avg. staked amount\",\n\n \"tradingRewards.rewardHistory\": \"Reward history\",\n \"tradingRewards.rewardsEarned\": \"Rewards earned\",\n\n \"tradingRewards.rewardHistory.column.start&EndDate\": \"Start / End date\",\n \"tradingRewards.rewardHistory.column.startDate\": \"Start\",\n \"tradingRewards.rewardHistory.column.endDate\": \"End date\",\n};\n\nexport type TradingRewards = typeof tradingRewards;\n","export const tradingView = {\n \"tradingView.timeInterval.1m\": \"1m\",\n \"tradingView.timeInterval.3m\": \"3m\",\n \"tradingView.timeInterval.5m\": \"5m\",\n \"tradingView.timeInterval.15m\": \"15m\",\n \"tradingView.timeInterval.30m\": \"30m\",\n\n \"tradingView.timeInterval.1h\": \"1h\",\n \"tradingView.timeInterval.2h\": \"2h\",\n \"tradingView.timeInterval.4h\": \"4h\",\n \"tradingView.timeInterval.6h\": \"6h\",\n \"tradingView.timeInterval.12h\": \"12h\",\n\n \"tradingView.timeInterval.1d\": \"1D\",\n \"tradingView.timeInterval.3d\": \"3D\",\n \"tradingView.timeInterval.1w\": \"1W\",\n \"tradingView.timeInterval.1M\": \"1M\",\n\n \"tradingView.timeInterval.more\": \"More\",\n\n \"tradingView.lineType.bars\": \"Bars\",\n \"tradingView.lineType.candles\": \"Candles\",\n \"tradingView.lineType.hollowCandles\": \"Hollow candles\",\n \"tradingView.lineType.line\": \"Line\",\n \"tradingView.lineType.area\": \"Area\",\n \"tradingView.lineType.baseline\": \"Baseline\",\n\n \"tradingView.displayControl.buySell\": \"Buy/Sell\",\n \"tradingView.displayControl.limitOrders\": \"Limit orders\",\n \"tradingView.displayControl.stopOrders\": \"Stop orders\",\n\n \"tradingView.noScriptSrc\":\n \"Due to TradingView's policy, you will need to apply for your own license.\",\n \"tradingView.noScriptSrc.1\":\n \"1. Please apply for your TradingView Advanced Chart license <0>here</0>\",\n \"tradingView.noScriptSrc.2\":\n \"2. Follow the instructions on <0>orderly.network</0> to set up.\",\n};\n\nexport type TradingView = typeof tradingView;\n","export const connector = {\n \"connector.testnet\": \"Testnet\",\n \"connector.mainnet\": \"Mainnet\",\n\n \"connector.disconnect\": \"Disconnect\",\n \"connector.connectWallet\": \"Connect wallet\",\n \"connector.signIn\": \"Sign in\",\n \"connector.signIn.description\": \"Confirm you are the owner of this wallet\",\n \"connector.enableTrading\": \"Enable trading\",\n \"connector.enableTrading.description\":\n \"Enable secure access to our API for lightning fast trading\",\n\n \"connector.switchNetwork\": \"Switch Network\",\n \"connector.wrongNetwork\": \"Wrong network\",\n \"connector.wrongNetwork.tooltip\":\n \"Please switch to a supported network to continue.\",\n\n \"connector.expired\":\n \"Your previous access has expired, you will receive a signature request to enable trading. Signing is free and will not send a transaction.\",\n\n \"connector.rememberMe\": \"Remember me\",\n \"connector.rememberMe.description\":\n \"Toggle this option to skip these steps next time you want to trade.\",\n\n \"connector.referralCode.placeholder\": \"Referral code (Optional)\",\n \"connector.referralCode.invalid\":\n \"The referral_code must be 4 to 10 characters long, only accept upper case roman characters and numbers\",\n \"connector.referralCode.notExist\": \"This referral code does not exist.\",\n\n \"connector.somethingWentWrong\": \"Something went wrong\",\n \"connector.userRejected\": \"User rejected the request.\",\n\n \"connector.walletConnected\": \"Wallet connected\",\n \"connector.networkSwitched\": \"Network switched\",\n \"connector.switchChain.failed\": \"Switch chain failed\",\n\n \"connector.trade.connectWallet.tooltip\":\n \"Please connect wallet before starting to trade\",\n \"connector.trade.signIn.tooltip\": \"Please sign in before starting to trade\",\n \"connector.trade.enableTrading.tooltip\":\n \"Please enable trading before starting to trade\",\n\n \"connector.setUp.connectWallet.tooltip\":\n \"Please connect wallet before set up\",\n \"connector.setUp.signIn.tooltip\": \"Please sign in before set up\",\n \"connector.setUp.enableTrading.tooltip\":\n \"Please enable trading before set up\",\n\n \"connector.ledger.signMessageFailed\": \"Sign Message Failed\",\n \"connector.ledger.signMessageFailed.description\":\n \"Are you using Ledger Wallet?\",\n\n \"connector.privy.loginIn\": \"Login in\",\n \"connector.privy.logout\": \"Log out\",\n \"connector.privy.email\": \"Email\",\n \"connector.privy.google\": \"Google\",\n \"connector.privy.twitter\": \"X / Twitter\",\n \"connector.privy.myWallet\": \"My wallet\",\n \"connector.privy.addEvmWallet\": \"Add Evm wallet\",\n \"connector.privy.addSolanaWallet\": \"Add Solana wallet\",\n \"connector.privy.createEvmWallet\": \"Create Evm wallet\",\n \"connector.privy.createSolanaWallet\": \"Create Solana wallet\",\n \"connector.privy.termsOfUse\":\n \"By connecting your wallet, you acknowledge and agree to the <0>terms of use</0>.\",\n \"connector.privy.supportedEvmChain\": \"Supported Evm chain\",\n \"connector.privy.supportedSolanaChain\": \"Supported Solana chain\",\n \"connector.privy.noWallet\": \"No wallet\",\n \"connector.privy.noWallet.description\":\n \"Please create a wallet to proceed. Only you can access the private key. You can export the private key and import your wallet into another wallet client, such as MetaMask or Phantom, at any time.\",\n \"connector.privy.switchNetwork.tips\": \"Switch to {{chainName}} to continue.\",\n \"connector.privy.addEvmWallet.tips\": \"Connect an EVM-compatible wallet to continue using the EVM network.\",\n \"connector.privy.addSolanaWallet.tips\": \"Connect an Solana-compatible wallet to continue using the Solana network.\"\n};\n\nexport type Connector = typeof connector;\n","export const transfer = {\n \"transfer.network\": \"Network\",\n \"transfer.lowestFee\": \"lowest fee\",\n \"transfer.web3Wallet\": \"Your Web3 Wallet\",\n \"transfer.brokerAccount\": \"Your {{brokerName}} account\",\n \"transfer.quantity.invalid\": \"Please input a valid number\",\n\n \"transfer.insufficientBalance\": \"Insufficient balance\",\n \"transfer.insufficientAllowance\": \"Insufficient allowance\",\n \"transfer.rejectTransaction\": \"Rejected transaction\",\n\n \"transfer.deposit.approve.symbol\": \"Approve {{symbol}}\",\n \"transfer.deposit.approve.success\": \"Approve success\",\n \"transfer.deposit.approve.failed\": \"Approve failed\",\n \"transfer.deposit.increase.symbol\": \"Increase {{symbol}} authorized amount\",\n \"transfer.deposit.requested\": \"Deposit requested\",\n \"transfer.deposit.completed\": \"Deposit completed\",\n \"transfer.deposit.failed\": \"Deposit failed\",\n\n \"transfer.deposit.destinationGasFee\": \"Destination gas fee\",\n \"transfer.deposit.destinationGasFee.description\":\n \"Additional gas tokens are required to cover operations on the destination chain.\",\n\n \"transfer.withdraw.unsupported.chain\":\n \"Withdrawals are not supported on this chain. Please switch to any of the bridgeless networks.\",\n \"transfer.withdraw.unsupported.networkName\":\n \"Withdrawals are not supported on {{networkName}}. Please switch to any of the bridgeless networks.\",\n\n \"transfer.withdraw.crossChain.confirmWithdraw\": \"Confirm to withdraw\",\n \"transfer.withdraw.crossChain.recipientAddress\": \"Recipient address\",\n \"transfer.withdraw.crossChain.recipientNetwork\": \"Recipient network\",\n \"transfer.withdraw.crossChain.withdrawAmount\": \"Withdraw amount\",\n\n \"transfer.withdraw.crossChain.process\":\n \"Your cross-chain withdrawal is being processed...\",\n \"transfer.withdraw.crossChain.warning\":\n \"Withdrawals that require cross-chain rebalancing can't be cancelled or followed up with more withdrawals until they've been processed.\",\n \"transfer.withdraw.crossChain.vaultWarning\":\n \"Withdrawal exceeds the balance of the {{networkName}} vault ( {{chainVaultBalance}} USDC ). Cross-chain rebalancing fee will be charged for withdrawal to {{networkName}}.\",\n\n \"transfer.withdraw.minAmount.error\": \"quantity must large than {{minAmount}}\",\n\n \"transfer.withdraw.requested\": \"Withdraw requested\",\n \"transfer.withdraw.completed\": \"Withdraw completed\",\n \"transfer.withdraw.failed\": \"Withdraw failed\",\n};\n\nexport type Transfer = typeof transfer;\n","export const affiliate = {\n \"affiliate.referral\": \"Referral\",\n \"affiliate.trader\": \"Trader\",\n\n \"affiliate.enter\": \"Enter\",\n \"affiliate.statistics\": \"Statistics\",\n\n \"affiliate.connectWallet.tooltip\":\n \"Please connect your wallet to use this function\",\n\n \"affiliate.page.title\": \"Earn more as a <0>{{shortBrokerName}}</0> affiliate\",\n \"affiliate.page.subTitle\":\n \"Grow your brand | Get 40% commission | Unlock exclusive perks\",\n \"affiliate.page.learnMore\": \"Learn how it works\",\n\n \"affiliate.asAffiliate.title\": \"As an affiliate\",\n \"affiliate.asAffiliate.description\": \"Onboard traders to earn passive income\",\n \"affiliate.asAffiliate.button\": \"Become an affiliate\",\n\n \"affiliate.asTrader.title\": \"As a trader\",\n \"affiliate.asTrader.description\": \"Onboard traders to earn passive income\",\n \"affiliate.asTrader.button\": \"Enter code\",\n\n \"affiliate.referralCode\": \"Referral code\",\n \"affiliate.referralCode.dialog.title\": \"Bind a referral code\",\n \"affiliate.referralCode.dialog.description\":\n \"Bind a referral code to earn trading fee rebates.\",\n \"affiliate.referralCode.label\": \"Enter referral code\",\n \"affiliate.referralCode.bound\": \"Referral code bound\",\n \"affiliate.referralCode.notExist\": \"This referral code does not exist.\",\n\n \"affiliate.process.title\": \"Becoming an affiliate is easy\",\n \"affiliate.process.step1.title\": \"Apply\",\n \"affiliate.process.step1.description\": \"Fill out the application form\",\n \"affiliate.process.step2.title\": \"Share\",\n \"affiliate.process.step2.description\":\n \"Unlock your affiliate link and share it with your community\",\n \"affiliate.process.step3.title\": \"Earn\",\n \"affiliate.process.step3.description\":\n \"Get paid and receive special treatment 24/7, 365\",\n\n \"affiliate.summary\": \"Summary\",\n \"affiliate.summary.refereesTraded\": \"Referees that traded\",\n\n \"affiliate.referralLink\": \"Referral link\",\n \"affiliate.referralLink.earn\": \"Earn\",\n \"affiliate.referralLink.earn.tooltip\":\n \"{{brokerName}} net fee that deduct Orderly fee.\",\n \"affiliate.referralLink.share\": \"Share\",\n \"affiliate.referralLink.share.tooltip\":\n \"Your referees get <0>{{value}}</0> of their {{brokerName}} net fee\",\n\n \"affiliate.referralVol\": \"Referral vol.\",\n\n \"affiliate.referralCodes\": \"Referral codes\",\n \"affiliate.referralCodes.remaining\": \"Remaining referral codes\",\n \"affiliate.referralCodes.column.you&Referee\": \"You / Referee\",\n \"affiliate.referralCodes.column.traders\": \"Traders\",\n \"affiliate.referralCodes.column.referees&Traders\": \"Referees / Traders\",\n \"affiliate.referralCodes.copyLink\": \"Copy link\",\n\n \"affiliate.commission\": \"Commission\",\n \"affiliate.commission.30d\": \"30d commission\",\n \"affiliate.commission.column.activeUsers\": \"Referral active users\",\n\n \"affiliate.myReferees\": \"My referees\",\n \"affiliate.referees\": \"Referees\",\n \"affiliate.referees.column.refereeAddress\": \"Referee address\",\n \"affiliate.referees.column.totalCommission\": \"Total commission\",\n \"affiliate.referees.column.totalVol\": \"Total vol.\",\n \"affiliate.referees.column.invitationTime\": \"Invitation time\",\n\n \"affiliate.trader.yourReferrer\": \"Your referrer\",\n \"affiliate.trader.rebate\": \"Rebate\",\n \"affiliate.trader.rebates\": \"Rebates\",\n \"affiliate.trader.myRebates\": \"My rebates\",\n \"affiliate.trader.tradingVol\": \"Trading vol.\",\n};\n\nexport type Affiliate = typeof affiliate;\n","export const ui = {\n \"ui.pagination.morePages\": \"More pages\",\n \"ui.pagination.rowsPerPage\": \"Rows per page\",\n \"ui.picker.selectDate\": \"Select Date\",\n \"ui.empty.description\": \"No results found.\",\n};\n\nexport type UI = typeof ui;\n","export const tradingLeaderboard = {\n \"tradingLeaderboard.leaderboard\": \"Leaderboard\",\n \"tradingLeaderboard.campaigns\": \"Campaigns\",\n \"tradingLeaderboard.ongoing\": \"Ongoing\",\n \"tradingLeaderboard.past\": \"Past\",\n \"tradingLeaderboard.future\": \"Future\",\n \"tradingLeaderboard.learnMore\": \"Learn more\",\n \"tradingLeaderboard.tradeNow\": \"Trade now\",\n \"tradingLeaderboard.tradingVolume\": \"Trading volume\",\n \"tradingLeaderboard.rank\": \"Rank\",\n};\n\nexport type TradingLeaderboard = typeof tradingLeaderboard;\n","import { markets } from \"./module/markets\";\nimport { portfolio } from \"./module/portfolio\";\nimport { trading } from \"./module/trading\";\nimport { chart } from \"./module/chart\";\nimport { positions } from \"./module/positions\";\nimport { orders } from \"./module/orders\";\nimport { tpsl } from \"./module/tpsl\";\nimport { share } from \"./module/share\";\nimport { orderEntry } from \"./module/orderEntry\";\nimport { leverage } from \"./module/leverage\";\nimport { scaffold } from \"./module/scaffold\";\nimport { tradingRewards } from \"./module/tradingRewards\";\nimport { tradingView } from \"./module/tradingView\";\nimport { connector } from \"./module/connector\";\nimport { transfer } from \"./module/transfer\";\nimport { affiliate } from \"./module/affiliate\";\nimport { ui } from \"./module/ui\";\nimport { tradingLeaderboard } from \"./module/tradingLeaderboard\";\n\nexport const en = {\n \"common.cancel\": \"Cancel\",\n \"common.confirm\": \"Confirm\",\n \"common.ok\": \"OK\",\n \"common.yes\": \"Yes\",\n \"common.no\": \"No\",\n \"common.all\": \"All\",\n \"common.buy\": \"Buy\",\n \"common.sell\": \"Sell\",\n \"common.edit\": \"Edit\",\n \"common.save\": \"Save\",\n \"common.add\": \"Add\",\n \"common.delete\": \"Delete\",\n \"common.tips\": \"Tips\",\n \"common.max\": \"Max\",\n \"common.download\": \"Download\",\n \"common.copy\": \"Copy\",\n \"common.copy.failed\": \"Copy failed\",\n \"common.copy.copied\": \"Copied\",\n \"common.share\": \"Share\",\n \"common.export\": \"Export\",\n\n \"common.select.1d\": \"1D\",\n \"common.select.3d\": \"3D\",\n \"common.select.7d\": \"7D\",\n \"common.select.14d\": \"14D\",\n \"common.select.30d\": \"30D\",\n \"common.select.90d\": \"90D\",\n\n \"common.price\": \"Price\",\n \"common.quantity\": \"Quantity\",\n \"common.qty\": \"Qty\",\n \"common.status\": \"Status\",\n \"common.status.all\": \"All status\",\n\n \"common.date\": \"Date\",\n \"common.time\": \"Time\",\n \"common.volume\": \"Volume\",\n \"common.total\": \"Total\",\n \"common.symbol\": \"Symbol\",\n \"common.token\": \"Token\",\n \"common.amount\": \"Amount\",\n\n \"common.side\": \"Side\",\n \"common.side.all\": \"All sides\",\n \"common.type\": \"Type\",\n \"common.notional\": \"Notional\",\n \"common.fee\": \"Fee\",\n\n \"common.avgPrice\": \"Avg. price\",\n \"common.avgOpen\": \"Avg. open\",\n \"common.avgClose\": \"Avg. close\",\n \"common.trigger\": \"Trigger\",\n \"common.lastPrice\": \"Last price\",\n \"common.indexPrice\": \"Index price\",\n \"common.markPrice\": \"Mark price\",\n \"common.limitPrice\": \"Limit price\",\n \"common.marketPrice\": \"Market\",\n\n \"common.unrealizedPnl\": \"Unrealized PnL\",\n \"common.realizedPnl\": \"Realized PnL\",\n \"common.totalValue\": \"Total value\",\n \"common.address\": \"Address\",\n \"common.address.search.placeholder\": \"Search address\",\n \"common.available\": \"Available\",\n\n \"common.overview\": \"Overview\",\n \"common.funding\": \"Funding\",\n \"common.assets\": \"Assets\",\n \"common.countdown\": \"Countdown\",\n \"common.current\": \"Current\",\n \"common.account\": \"Account\",\n\n \"common.deposit\": \"Deposit\",\n \"common.withdraw\": \"Withdraw\",\n \"common.settle\": \"Settle\",\n \"common.markets\": \"Markets\",\n \"common.portfolio\": \"Portfolio\",\n \"common.positions\": \"Positions\",\n \"common.position\": \"Position\",\n \"common.orders\": \"Orders\",\n \"common.tpsl\": \"TP/SL\",\n \"common.leverage\": \"Leverage\",\n \"common.affiliate\": \"Affiliate\",\n \"common.tradingRewards\": \"Trading rewards\",\n \"common.trading\": \"Trading\",\n \"assetHistory.status.pending\": \"Pending\",\n \"assetHistory.status.confirm\": \"Confirm\",\n \"assetHistory.status.processing\": \"Processing\",\n \"assetHistory.status.completed\": \"Completed\",\n \"assetHistory.status.failed\": \"Failed\",\n \"assetHistory.status.pendingRebalance\": \"Pending rebalance\",\n\n /** linkDevice */\n \"linkDevice.createQRCode.loading.description\":\n \"Approve QR code with wallet...\",\n \"linkDevice.createQRCode.linkMobileDevice\": \"Link Mobile Device\",\n \"linkDevice.createQRCode.linkMobileDevice.description\":\n \"Open {{hostname}} on your mobile device and scan the QR code to link this wallet. For security, the QR code will expire in 60 seconds. <br/> The QR code allows mobile trading but does not enable withdrawals. Ensure you are not sharing your screen or any screenshots of the QR code.\",\n\n \"linkDevice.createQRCode.success.description\":\n \"Scan the QR code or paste the URL into another browser/<br/>device to continue.\",\n \"linkDevice.createQRCode.success.copyUrl\": \"Copy URL\",\n\n \"linkDevice.scanQRCode\": \"Scan QR Code\",\n \"linkDevice.scanQRCode.description\":\n \"Click the <0/> icon in the top right corner on desktop to generate a QR code to scan.\",\n \"linkDevice.scanQRCode.tooltip\": \"Link to Desktop via QR Code\",\n \"linkDevice.scanQRCode.connected.description\":\n \"You are connected via another device. This mode is for trading only. To switch networks, deposit or withdraw assets, please disconnect and reconnect your wallet on this device.\",\n\n /** settle */\n \"settle.settlePnl\": \"Settle PnL\",\n \"settle.settlePnl.warning\": \"Please settle your balance\",\n \"settle.settlePnl.description\":\n \"Are you sure you want to settle your PnL? <br/> Settlement will take up to 1 minute before you can withdraw your available balance.\",\n\n \"settle.unsettled\": \"Unsettled\",\n \"settle.unsettled.tooltip\":\n \"Unsettled balance can not be withdrawn. In order to withdraw, please settle your balance first.\",\n\n \"settle.settlement.requested\": \"Settlement requested\",\n \"settle.settlement.completed\": \"Settlement completed\",\n \"settle.settlement.failed\": \"Settlement failed\",\n \"settle.settlement.error\":\n \"Settlement is only allowed once every 10 minutes. Please try again later.\",\n\n \"languageSwitcher.language\": \"Language\",\n \"languageSwitcher.tips\":\n \"AI-generated translations may not be fully accurate.\",\n\n \"announcement.type.listing\": \"Listing\",\n \"announcement.type.maintenance\": \"Maintenance\",\n \"announcement.type.delisting\": \"Delisting\",\n\n \"maintenance.dialog.title\": \"System upgrade in progress\",\n \"maintenance.dialog.description\":\n \"Sorry, {{brokerName}} is temporarily unavailable due to a scheduled upgrade. The service is expected to be back by {{endDate}}.\",\n \"maintenance.tips.description\":\n \"{{brokerName}} will be temporarily unavailable for a scheduled upgrade from {{startDate}} to {{endDate}}.\",\n\n \"restrictedInfo.description.default\":\n \" You are accessing {{brokerName}} from an IP address ({{ip}}) associated with a restricted country.\",\n\n ...markets,\n ...portfolio,\n ...trading,\n ...chart,\n ...positions,\n ...orders,\n ...tpsl,\n ...share,\n ...orderEntry,\n ...leverage,\n ...scaffold,\n ...tradingRewards,\n ...tradingView,\n ...connector,\n ...transfer,\n ...affiliate,\n ...ui,\n ...tradingLeaderboard,\n};\n","import { FC, ReactNode, useEffect, useRef, useState } from \"react\";\nimport { I18nextProvider, type I18nextProviderProps } from \"react-i18next\";\nimport { Backend, BackendOptions } from \"./backend\";\nimport { defaultLanguages, defaultNS } from \"./constant\";\nimport { Language, LocaleContext, LocaleContextState } from \"./context\";\nimport i18n from \"./i18n\";\nimport { LocaleCode, Resources } from \"./types\";\nimport { parseI18nLang } from \"./utils\";\n\nexport type I18nProviderProps = Partial<I18nextProviderProps>;\n\nexport const I18nProvider: FC<I18nProviderProps> = (props) => {\n const { children, ...rest } = props;\n return (\n // @ts-ignore\n <I18nextProvider {...rest}>{children}</I18nextProvider>\n );\n};\n\nexport type LocaleProviderProps = {\n children: ReactNode;\n locale?: LocaleCode;\n resource?: Record<string, string>;\n resources?: Resources;\n /**\n * supported languages, you can select supported languages from default languages\n */\n supportedLanguages?: LocaleCode[];\n /**\n * @deprecated use onLanguageChanged instead, will be removed in next patch version\n */\n onLocaleChange?: (locale: LocaleCode) => void;\n /** optional conversion function to use to modify the detected language code */\n convertDetectedLanguage?: (lang: string) => LocaleCode;\n backend?: BackendOptions;\n} & Partial<LocaleContextState>;\n\nexport const LocaleProvider: FC<LocaleProviderProps> = (props) => {\n const { locale, resource, resources, convertDetectedLanguage } = props;\n const [languages, setLanguages] = useState<Language[]>(defaultLanguages);\n const backend = useRef(new Backend(props.backend!));\n\n useEffect(() => {\n // init with resources\n if (resources) {\n Object.entries(resources).forEach(([locale, messages]) => {\n i18n.addResourceBundle(locale, defaultNS, messages, true, true);\n });\n return;\n }\n\n // init with locale and resource\n if (resource && locale) {\n i18n.addResourceBundle(locale, defaultNS, resource, true, true);\n }\n }, [locale, resource, resources]);\n\n useEffect(() => {\n // change language when locale changed\n if (locale && locale !== i18n.language) {\n i18n.changeLanguage(locale);\n }\n }, [locale]);\n\n useEffect(() => {\n if (Array.isArray(props.languages)) {\n setLanguages(props.languages);\n } else if (Array.isArray(props.supportedLanguages)) {\n setLanguages(\n props.supportedLanguages\n .map((localCode) =>\n defaultLanguages.find((l) => l.localCode === localCode),\n )\n .filter((item) => !!item),\n );\n }\n }, [props.supportedLanguages, props.languages]);\n\n useEffect(() => {\n // init language when refresh page\n const initLanguage = async () => {\n const lang =\n typeof convertDetectedLanguage === \"function\"\n ? convertDetectedLanguage(i18n.language)\n : parseI18nLang(i18n.language);\n await backend.current.loadLanguage(lang, defaultNS);\n // if browser language is not a valid language, change language\n if (lang !== i18n.language) {\n await i18n.changeLanguage(lang);\n }\n };\n\n initLanguage();\n }, [i18n.language]);\n\n const onLanguageBeforeChanged = async (lang: LocaleCode) => {\n await props.onLanguageBeforeChanged?.(lang);\n // load language when language before changed\n await backend.current.loadLanguage(lang, defaultNS);\n };\n\n const onLanguageChanged = async (lang: LocaleCode) => {\n props.onLanguageChanged?.(lang);\n props.onLocaleChange?.(lang);\n };\n\n return (\n <LocaleContext.Provider\n value={{\n languages,\n onLanguageBeforeChanged,\n onLanguageChanged,\n popup: props.popup,\n }}\n >\n {/* @ts-ignore */}\n <I18nextProvider i18n={i18n} defaultNS={defaultNS}>\n {props.children}\n </I18nextProvider>\n </LocaleContext.Provider>\n );\n};\n","import i18n from \"./i18n\";\nimport { LocaleCode } from \"./types\";\n\nexport type BackendOptions = {\n loadPath: (lang: LocaleCode, ns: string) => string | string[];\n};\n\nexport class Backend {\n options: BackendOptions;\n cache: Set<string>;\n\n constructor(options: BackendOptions) {\n this.options = options;\n this.cache = new Set();\n }\n\n async fetchData(url: string) {\n try {\n const res = await fetch(url);\n const data = await res.json();\n return data;\n } catch (error) {\n console.error(`Failed to fetch data from ${url}:`, error);\n return {};\n }\n }\n\n async loadLanguage(lang: LocaleCode, ns: string) {\n if (typeof this.options?.loadPath !== \"function\") {\n return;\n }\n\n let paths = this.options.loadPath(lang, ns);\n\n if (typeof paths === \"string\") {\n paths = [paths];\n }\n\n if (!paths.length) {\n return;\n }\n\n // filter out the paths that have already been loaded\n const urls = paths.filter((path) => {\n const hasResourceBundle = i18n.hasResourceBundle(lang, ns);\n\n if (hasResourceBundle && this.cache.has(path)) {\n return false;\n }\n\n return true;\n });\n\n const promises = urls.map(async (url) => {\n const data = await this.fetchData(url);\n i18n.addResourceBundle(lang, ns, data, true, true);\n this.cache.add(url);\n });\n\n await Promise.all(promises);\n }\n}\n","import { createContext, useContext } from \"react\";\nimport { LocaleCode } from \"./types\";\n\nexport type Language = {\n localCode: LocaleCode;\n displayName: string;\n};\n\nexport type PopupMode = \"modal\" | \"dropdown\" | \"sheet\";\nexport type PopupProps = {\n /**\n * popup mode\n * - modal: show in a dialog\n * - dropdown: show in a dropdown menu\n * - sheet: show in a sheet (only for mobile)\n * @default modal\n */\n mode?: PopupMode;\n /** popup class name */\n className?: string;\n /** popup style */\n style?: React.CSSProperties;\n};\n\nexport type LocaleContextState = {\n /**\n * custom languages\n */\n languages: Language[];\n /**\n * called before language changed\n */\n onLanguageBeforeChanged: (lang: LocaleCode) => Promise<void>;\n /**\n * called when language changed\n */\n onLanguageChanged: (lang: LocaleCode) => Promise<void>;\n /**\n * popup options for language switcher\n */\n popup?: PopupProps;\n};\n\nexport const LocaleContext = createContext<LocaleContextState>({\n languages: [],\n onLanguageBeforeChanged: () => Promise.resolve(),\n onLanguageChanged: () => Promise.resolve(),\n});\n\nexport const useLocaleContext = () => {\n return useContext(LocaleContext);\n};\n","import { LocaleEnum } from \"./constant\";\nimport { LocaleCode } from \"./types\";\n\n/**\n * transform browser language to you given i18n locale codes\n * @param lang - browser language\n * @param localeCodes - locale codes to check\n * @param defaultLang - default locale code\n * @example\n * parseI18nLang('en-US') => 'en'\n * parseI18nLang('zh-CN') => 'zh'\n * parseI18nLang('zh-TW') => 'zh'\n * parseI18nLang('ja') => 'ja'\n * */\nexport function parseI18nLang(\n lang: string,\n localeCodes?: LocaleCode[],\n defaultLang?: LocaleCode\n) {\n localeCodes = localeCodes || Object.values(LocaleEnum);\n defaultLang = defaultLang || LocaleEnum.en;\n\n const regex = /^([a-z]{2})/i;\n const match = lang?.match(regex);\n\n if (!match) return defaultLang;\n\n const matchLang = match[1];\n\n if (localeCodes.includes(lang)) {\n return lang;\n }\n\n if (localeCodes.includes(matchLang)) {\n return matchLang;\n }\n\n return defaultLang;\n}\n\n/**\n * remove lang prefix from pathname\n * @param pathname - pathname to remove lang prefix\n * @param localeCodes - locale codes to check\n * @example\n * removeLangPrefix('/en/perp/PERP_ETH_USDC') => '/perp/PERP_ETH_USDC'\n * removeLangPrefix('/en/markets') => '/markets'\n * removeLangPrefix('/perp/PERP_ETH_USDC') => '/perp/PERP_ETH_USDC'\n * removeLangPrefix('/markets') => '/markets'\n */\nexport function removeLangPrefix(pathname: string, localeCodes?: string[]) {\n const localePath = getLocalePathFromPathname(pathname, localeCodes);\n\n return localePath\n ? pathname.replace(new RegExp(`^/${localePath}(?=/)`), \"\")\n : pathname;\n}\n\n/**\n * get locale path from pathname\n * @param pathname - pathname to get locale path\n * @param localeCodes - locale codes to check\n * @example\n * getLocalePathFromPathname('/en/perp/PERP_ETH_USDC') => 'en'\n * getLocalePathFromPathname('/perp/PERP_ETH_USDC') => null\n * getLocalePathFromPathname('/en/markets') => 'en'\n * getLocalePathFromPathname('/markets') => null\n */\nexport function getLocalePathFromPathname(\n pathname: string,\n localeCodes?: string[]\n) {\n const locale = pathname.split(\"/\")[1];\n localeCodes = localeCodes || Object.values(LocaleEnum);\n return localeCodes.includes(locale as LocaleEnum) ? locale : null;\n}\n\n/**\n * Generate path with locale\n * @param lang - language\n * @param path - path to generate\n * @param localeCodes - locale codes to check\n * @returns path with locale\n */\nexport function generateLocalePath(\n lang: string,\n path: string,\n localeCodes?: string[]\n) {\n localeCodes = localeCodes || Object.values(LocaleEnum);\n\n let localePath = getLocalePathFromPathname(path, localeCodes);\n\n // if path already has locale, return it\n if (localePath) {\n return path;\n }\n\n localePath = parseI18nLang(lang, localeCodes);\n\n // if path doesn't have locale, add it\n return `/${localePath}${path}`;\n}\n","import { useContext } from \"react\";\nimport { FlatNamespace, KeyPrefix } from \"i18next\";\nimport {\n FallbackNs,\n useTranslation as _useTranslation,\n UseTranslationOptions,\n I18nContext,\n} from \"react-i18next\";\nimport { type $Tuple } from \"react-i18next/helpers\";\nimport i18n from \"./i18n\";\n\nexport function useTranslation<\n Ns extends FlatNamespace | $Tuple<FlatNamespace> | undefined,\n KPrefix extends KeyPrefix<FallbackNs<Ns>> = undefined\n>(ns?: Ns, options?: UseTranslationOptions<KPrefix>) {\n // @ts-ignore\n const context = useContext(I18nContext);\n return _useTranslation(ns, { i18n: context?.i18n || i18n, ...options });\n}\n","import { useEffect, useState } from \"react\";\nimport i18n from \"./i18n\";\nimport { LocaleCode } from \"./types\";\n\nexport function useLocaleCode() {\n const [loacaleCode, setLoacaleCode] = useState<LocaleCode>(i18n.language);\n\n useEffect(() => {\n const handleLanguageChange = (lng: LocaleCode) => {\n setLoacaleCode(lng);\n };\n\n i18n.on(\"languageChanged\", handleLanguageChange);\n\n return () => {\n i18n.off(\"languageChanged\", handleLanguageChange);\n };\n }, [i18n]);\n\n return loacaleCode;\n}\n"]}
|