Compare commits

...

37 Commits

Author SHA1 Message Date
Ian Lapham
0a736b5e62 feat: create donation banner (#3403)
* create donation banner

* update styling and copy

* only show banner on swap page

* dont use hard coded z index

* style updates
2022-03-02 17:48:12 -05:00
Jordan Frankfurt
b44eb8877c chore(widgets): export theme stuff from widget (#3409) 2022-03-02 14:20:55 -08:00
Zach Pomerantz
92e61fa34b fix: token balance reloading (#3408)
* fix: layout token balance on token select

* fix: do not clear block on window re-focus
2022-03-02 13:39:18 -08:00
Zach Pomerantz
ef62fd33b2 fix: error dialog transition (#3405) 2022-03-02 13:37:57 -08:00
Jordan Frankfurt
96a42f66d4 fix(widgets): disable interactions and don't show summary screen on unsupported networks (#3376)
* disable interactions and don't show summary screen on unsupported networks

* clear input values on unsupported network

* pr feedback

* pr feedback

* simpler active trade clearing

* rename some things
2022-03-02 13:45:31 -06:00
Crowdin Bot
c446f20d2f chore(i18n): synchronize translations from crowdin [skip ci] 2022-03-02 19:11:16 +00:00
Jordan Frankfurt
5a1ef8fb7d feat(widgets): support wrapping native assets (#3301)
* feat(widgets): support wrapping native assets

* integrate wrap with swapInfo, start a useWrapCallback hook

* add loading state

* add pending state to (un)wrap transactions

* final cleanup

* janky merge conflict fix--disregard! this will change

* fixed

* 💢

* pr feedback

* z's pr feedback

* pr feedback

* zzmp pr feedback

* zzmp pr feedback
2022-03-02 12:36:35 -06:00
Zach Pomerantz
2863971640 fix: routing tooltip sizing (#3391) 2022-03-02 08:54:15 -08:00
Crowdin Bot
dcaf10ec29 chore(i18n): synchronize translations from crowdin [skip ci] 2022-03-02 07:31:50 +00:00
Zach Pomerantz
bca5113569 fix: connect wallet button (#3324)
* fix: make dialog provider an isolate

* fix: use button for connect wallet

* chore: document esoteric changes
2022-03-01 14:32:54 -08:00
David Walsh
6779c1a024 Fix #3117 - Open networks menu upon hover (#3378) 2022-03-01 14:45:22 -05:00
Ori Pomerantz
f79ef12494 fix(icons): Updated one of the Optimism images (#3357) 2022-03-01 14:37:18 -05:00
dependabot[bot]
7bcda46934 chore(deps): bump url-parse from 1.5.3 to 1.5.10 (#3371)
Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.3 to 1.5.10.
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.5.3...1.5.10)

---
updated-dependencies:
- dependency-name: url-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-01 14:35:54 -05:00
dependabot[bot]
f4ba24cfd5 chore(deps): bump nanoid from 3.1.28 to 3.2.0 (#3173)
Bumps [nanoid](https://github.com/ai/nanoid) from 3.1.28 to 3.2.0.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.1.28...3.2.0)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-01 14:35:01 -05:00
Zach Pomerantz
59c6ab16dd fix: exports (#3379)
* fix: cjs in cra

* chore: wrap cjs for mjs

* chore: export cjs and esm

* chore: export chunks

* fix: correctly export locales

* chore: note exports compat

* fix: use cjs for common deps

* chore: bump to v0.0.20-beta

* chore: rm outdated comment
2022-03-01 11:32:55 -08:00
Ian Lapham
db17dcbf2c list update (#3389) 2022-03-01 14:05:13 -05:00
Moody Salem
1835de7f5f fix: the vote page could not render proposals without signature data
fixes https://github.com/Uniswap/interface/issues/3380
2022-02-28 18:16:24 -05:00
Crowdin Bot
00f158209c chore(i18n): synchronize translations from crowdin [skip ci] 2022-02-28 19:11:43 +00:00
Zach Pomerantz
2108ceedd5 chore: reduce token list block period (#3353) 2022-02-28 10:47:36 -08:00
Zach Pomerantz
ad080470da fix: use explicit value in Plural tag (#3363)
one is non-functional (I don't know why), but _1 seems to work 🤷
2022-02-28 10:41:15 -08:00
Moody Salem
fc34912b53 feat(swap): default 1 native to usdc on the swap page (#3347)
* feat(swap): default 1 eth to usdc on the swap page

* fix unit tests

* fix tests

* fix the issue better

* use the token list logo

* fix integration tests for swap and add one for eth/usdc

* address comments
2022-02-28 13:30:37 -05:00
jaclyn
c25d2b894c fix: update walletlink-connector to 6.2.13 (#3315)
* fix: update walletlink-connector to 6.2.12

* fix: update walletlink-connector to 6.2.13

Co-authored-by: Jaclyn Chan <jaclyn.chan@coinbase.com>
2022-02-28 11:13:36 -05:00
Moody Salem
83c99b8c04 chore: remove unused exports and unused integration test build env variable 2022-02-28 11:03:05 -05:00
Zach Pomerantz
ccdf1e7575 fix: convert to commonjs (#3373)
* chore: use fully specified path for non-main imports

* chore: convert to commonjs

- Pin @web3-react to exact cjs versions

* chore: bump to v0.0.18-beta

* chore: fix fonts.css comment

* fix: @ethersproject/providers version skew

* fix: @web3-react state typings
2022-02-28 07:52:22 -08:00
Crowdin Bot
c9faafee5e chore(i18n): synchronize translations from crowdin [skip ci] 2022-02-25 08:08:05 +00:00
Zach Pomerantz
26a44fb51b chore: bump to v0.0.15-beta (#3358) 2022-02-24 11:36:00 -08:00
Zach Pomerantz
1e16ac8449 fix: wrap Eip1193Bridge to fix outstanding bugs (#3355)
* fix: wrap Eip1193Bridge to fix outstanding bugs

* revert: widget height change
2022-02-24 11:20:09 -08:00
Crowdin Bot
5b5e76573d chore(i18n): synchronize translations from crowdin [skip ci] 2022-02-24 09:06:47 +00:00
Crowdin Bot
27cdbd0d5f chore(i18n): synchronize translations from crowdin [skip ci] 2022-02-23 23:06:39 +00:00
Zach Pomerantz
b2a30b9bf1 fix: style nits (#3352)
* fix: prefix output usdc with $

* fix: space in output estimate warning

* fix: reset slippage warnings

* fix: display link icon for etherscan
2022-02-23 14:56:49 -08:00
Zach Pomerantz
dfad7b89ab chore: nextjs compatibility (#3351)
* fix: esm/cjs exports

* fix: guard visibility state WebAPI

* fix: nextjs styled-components imports

* fix: add ethers' optional deps

* fix: document access in useHasFocus

* fix: suffix babel-plugin-macros config for commonjs

* chore: rollup sourcemaps

* chore: export fonts separately

* chore: mv redux to peer dep

* fix: run tests off cjs config

* fix: run cosmos off cjs config
2022-02-23 13:12:07 -08:00
Zach Pomerantz
4fe35ea42e fix: max on WebKit (#3349)
* chore: add walletconnect to cosmos

* fix: onClickMax for TokenInput

* chore: add setImmediate
2022-02-23 12:50:22 -08:00
Zach Pomerantz
0d852b6165 fix: apply user-select to widget, not to constituents (#3345) 2022-02-23 12:49:59 -08:00
Zach Pomerantz
8ac3b836bd fix: slippage input size (#3350) 2022-02-23 12:25:17 -08:00
Crowdin Bot
12bc5957b4 chore(i18n): synchronize translations from crowdin [skip ci] 2022-02-23 20:06:40 +00:00
Ian Lapham
a33187c33b feat: routing tooltip for widget (#3259)
* start file updates for routing tooltip

* start tooltip UI

* fix styling

* remove use of px and add header

* UI updates;

* update styles

* update file structure

* update routing components and type

* small code fixes

* fix broken sizing bug

* nit fixes
2022-02-23 14:22:21 -05:00
Zach Pomerantz
248bc07cf1 fix: lazily instantiate supported router providers (#3348)
* fix: iterate over enum values

* fix: lazily instantiate router providers
2022-02-23 10:46:29 -08:00
120 changed files with 3704 additions and 1266 deletions

View File

@@ -38,10 +38,10 @@ jobs:
run: yarn install --frozen-lockfile
- run: yarn cypress install
- run: yarn build
env:
CI: false
REACT_APP_NETWORK_URL: 'https://mainnet.infura.io/v3/4bf032f2d38a4ed6bb975b80d6340847'
REACT_APP_SERVICE_WORKER: false
- run: yarn test:e2e

1
.gitignore vendored
View File

@@ -19,6 +19,7 @@
# builds
/build
/cosmos-export
/dist
/dts

View File

@@ -4,7 +4,7 @@
],
"webpack": {
"configPath": "react-scripts/config/webpack.config",
"overridePath": "cosmos.override.js"
"overridePath": "cosmos.override.cjs"
},
"port": 5001
}
}

View File

@@ -2,16 +2,27 @@ describe('Swap', () => {
beforeEach(() => {
cy.visit('/swap')
})
it('starts with an ETH/USDC swap and quotes it', () => {
cy.get('#swap-currency-input .token-amount-input').should('have.value', '1')
cy.get('#swap-currency-input .token-symbol-container').should('contain.text', 'ETH')
cy.get('#swap-currency-output .token-amount-input').should('not.have.value', '')
cy.get('#swap-currency-output .token-symbol-container').should('contain.text', 'USDC')
})
it('can enter an amount into input', () => {
cy.get('#swap-currency-input .token-amount-input').type('0.001', { delay: 200 }).should('have.value', '0.001')
cy.get('#swap-currency-input .token-amount-input')
.clear()
.type('0.001', { delay: 200 })
.should('have.value', '0.001')
})
it('zero swap amount', () => {
cy.get('#swap-currency-input .token-amount-input').type('0.0', { delay: 200 }).should('have.value', '0.0')
cy.get('#swap-currency-input .token-amount-input').clear().type('0.0', { delay: 200 }).should('have.value', '0.0')
})
it('invalid swap amount', () => {
cy.get('#swap-currency-input .token-amount-input').type('\\', { delay: 200 }).should('have.value', '')
cy.get('#swap-currency-input .token-amount-input').clear().type('\\', { delay: 200 }).should('have.value', '')
})
it('can enter an amount into output', () => {

View File

@@ -1,15 +1,29 @@
{
"name": "@uniswap/widgets",
"version": "0.0.14-beta",
"version": "0.0.20-beta",
"description": "Uniswap Interface",
"homepage": ".",
"main": "dist/widgets.js",
"module": "dist/widgets.esm.js",
"types": "dist/widgets.d.ts",
"files": [
"lib",
"dist"
],
"type": "module",
"types": "dist/index.d.ts",
"main": "dist/cjs/index.cjs",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js",
"require": "./dist/cjs/index.cjs"
},
"./locales/*": {
"import": "./dist/locales/*.js",
"require": "./dist/cjs/locales/*.cjs"
},
"./fonts.css": {
"import": "./dist/fonts.css",
"require": "./dist/fonts.css"
}
},
"devDependencies": {
"@babel/plugin-transform-runtime": "^7.17.0",
"@babel/preset-env": "^7.16.11",
@@ -21,6 +35,9 @@
"@graphql-codegen/typescript-operations": "^1.18.2",
"@graphql-codegen/typescript-rtk-query": "^1.1.1",
"@lingui/cli": "^3.9.0",
"@lingui/core": "^3.9.0",
"@lingui/macro": "^3.9.0",
"@lingui/react": "^3.9.0",
"@metamask/jazzicon": "^2.0.0",
"@reach/dialog": "^0.10.3",
"@reach/portal": "^0.10.3",
@@ -71,13 +88,8 @@
"@uniswap/v2-periphery": "^1.1.0-beta.0",
"@uniswap/v3-core": "1.0.0",
"@uniswap/v3-periphery": "^1.1.1",
"web3-react-abstract-connector": "npm:@web3-react/abstract-connector@^6.0.7",
"web3-react-fortmatic-connector": "npm:@web3-react/fortmatic-connector@^6.0.9",
"web3-react-injected-connector": "npm:@web3-react/injected-connector@^6.0.7",
"web3-react-portis-connector": "npm:@web3-react/portis-connector@^6.0.9",
"web3-react-types": "npm:@web3-react/types@^6.0.7",
"web3-react-walletconnect-connector": "npm:@web3-react/walletconnect-connector@^7.0.2-alpha.0",
"web3-react-walletlink-connector": "npm:@web3-react/walletlink-connector@^6.2.11",
"@web3-react/metamask": "8.0.13-beta.0",
"@web3-react/walletconnect": "8.0.18-beta.0",
"array.prototype.flat": "^1.2.4",
"array.prototype.flatmap": "^1.2.4",
"babel-plugin-macros": "^3.1.0",
@@ -108,15 +120,18 @@
"react-ga": "^2.5.7",
"react-is": "^17.0.2",
"react-markdown": "^4.3.1",
"react-redux": "^7.2.2",
"react-router-dom": "^5.0.0",
"react-scripts": "^4.0.3",
"react-spring": "^8.0.27",
"react-use-gesture": "^6.0.14",
"redux": "^4.1.2",
"redux-localstorage-simple": "^2.3.1",
"rollup": "^2.63.0",
"rollup-plugin-copy": "^3.4.0",
"rollup-plugin-delete": "^2.0.0",
"rollup-plugin-dts": "^4.1.0",
"rollup-plugin-multi-input": "^1.3.1",
"rollup-plugin-node-externals": "^3.1.2",
"rollup-plugin-scss": "^3.0.0",
"rollup-plugin-typescript2": "^0.31.1",
@@ -130,6 +145,13 @@
"use-resize-observer": "^8.0.0",
"wcag-contrast": "^3.0.0",
"web-vitals": "^2.1.0",
"web3-react-abstract-connector": "npm:@web3-react/abstract-connector@^6.0.7",
"web3-react-fortmatic-connector": "npm:@web3-react/fortmatic-connector@^6.0.9",
"web3-react-injected-connector": "npm:@web3-react/injected-connector@^6.0.7",
"web3-react-portis-connector": "npm:@web3-react/portis-connector@^6.0.9",
"web3-react-types": "npm:@web3-react/types@^6.0.7",
"web3-react-walletconnect-connector": "npm:@web3-react/walletconnect-connector@^7.0.2-alpha.0",
"web3-react-walletlink-connector": "npm:@web3-react/walletlink-connector@^6.2.13",
"workbox-core": "^6.1.0",
"workbox-precaching": "^6.1.0",
"workbox-routing": "^6.1.0"
@@ -150,7 +172,7 @@
"prepublishOnly": "yarn widgets:build",
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=./custom-test-env.js",
"test": "react-scripts test --env=./custom-test-env.cjs",
"test:e2e": "start-server-and-test 'serve build -l 3000' http://localhost:3000 'cypress run --record'",
"widgets:start": "cosmos",
"widgets:build": "rollup --config --failAfterWarnings --configPlugin typescript2"
@@ -180,16 +202,13 @@
"@ethersproject/contracts": "^5.4.1",
"@ethersproject/experimental": "^5.4.0",
"@ethersproject/hash": "^5.4.0",
"@ethersproject/providers": "5.4.0",
"@ethersproject/providers": "^5.4.0",
"@ethersproject/solidity": "^5.4.0",
"@ethersproject/strings": "^5.4.0",
"@ethersproject/units": "^5.4.0",
"@ethersproject/wallet": "^5.4.0",
"@fontsource/ibm-plex-mono": "^4.5.1",
"@fontsource/inter": "^4.5.1",
"@lingui/core": "^3.9.0",
"@lingui/macro": "^3.9.0",
"@lingui/react": "^3.9.0",
"@popperjs/core": "^2.4.4",
"@reduxjs/toolkit": "^1.6.1",
"@uniswap/redux-multicall": "^1.0.0",
@@ -199,7 +218,11 @@
"@uniswap/token-lists": "^1.0.0-beta.27",
"@uniswap/v2-sdk": "^3.0.1",
"@uniswap/v3-sdk": "^3.8.2",
"web3-react-core": "npm:@web3-react/core@^6.0.9",
"@web3-react/core": "8.0.17-beta.0",
"@web3-react/eip1193": "8.0.12-beta.0",
"@web3-react/empty": "8.0.10-beta.0",
"@web3-react/types": "8.0.10-beta.0",
"@web3-react/url": "8.0.12-beta.0",
"ajv": "^6.12.3",
"cids": "^1.0.0",
"immer": "^9.0.6",
@@ -214,25 +237,26 @@
"popper-max-size-modifier": "^0.2.0",
"react-feather": "^2.0.8",
"react-popper": "^2.2.3",
"react-redux": "^7.2.2",
"react-virtualized-auto-sizer": "^1.0.2",
"react-window": "^1.8.5",
"rebass": "^4.0.7",
"redux": "^4.1.2",
"setimmediate": "^1.0.5",
"styled-components": "^5.3.0",
"tiny-invariant": "^1.2.0",
"wcag-contrast": "^3.0.0",
"@web3-react/core": "8.0.16-alpha.0",
"@web3-react/eip1193": "8.0.16-alpha.0",
"@web3-react/empty": "8.0.17-alpha.0",
"@web3-react/metamask": "8.0.16-alpha.0",
"@web3-react/types": "8.0.16-alpha.0",
"@web3-react/url": "8.0.17-alpha.0",
"web3-react-core": "npm:@web3-react/core@^6.0.9",
"wicg-inert": "^3.1.1"
},
"peerDependencies": {
"@babel/runtime": "^7.17.0",
"react": "^17.0.1",
"react-dom": "^17.0.1"
"react-dom": "^17.0.1",
"react-redux": "^7.2.2",
"redux": "^4.1.2"
},
"optionalDependencies": {
"bufferutil": "^4.0.6",
"encoding": "^0.1.13",
"utf-8-validate": "^5.0.8"
}
}

View File

@@ -17,6 +17,8 @@ import { RollupWarning } from 'rollup'
import copy from 'rollup-plugin-copy'
import del from 'rollup-plugin-delete'
import dts from 'rollup-plugin-dts'
// @ts-ignore // missing types
import multi from 'rollup-plugin-multi-input'
import externals from 'rollup-plugin-node-externals'
import sass from 'rollup-plugin-scss'
import { CompilerOptions } from 'typescript'
@@ -24,6 +26,8 @@ import { CompilerOptions } from 'typescript'
const REPLACEMENTS = {
'process.env.REACT_APP_IS_WIDGET': true,
'process.env.REACT_APP_LOCALES': '"./locales"',
// esm requires fully-specified paths:
'react/jsx-runtime': 'react/jsx-runtime.js',
}
const EXTENSIONS = ['.js', '.jsx', '.ts', '.tsx']
@@ -45,54 +49,85 @@ const aliases = Object.entries({ ...paths }).flatMap(([find, replacements]) => {
const plugins = [
// Dependency resolution
externals({ exclude: ['constants'], deps: true, peerDeps: true }), // marks builtins, dependencies, and peerDependencies external
resolve({ extensions: EXTENSIONS }), // resolves third-party modules within node_modules/
alias({ entries: aliases }), // resolves paths aliased through the tsconfig (babel does not use tsconfig path resolution)
// Source code transformation
replace({ ...REPLACEMENTS, preventAssignment: true }),
json(), // imports json; doing so type-checking allows the json to be type-checked
json(), // imports json as ES6; doing so enables type-checking and module resolution
]
const check = {
input: 'src/lib/index.tsx',
output: { file: 'dist/widgets.tsc' },
output: { file: 'dist/widgets.tsc', inlineDynamicImports: true },
external: isAsset,
plugins: [...plugins, typescript({ tsconfig: TS_CONFIG })],
plugins: [
externals({ exclude: ['constants'], deps: true, peerDeps: true }), // marks builtins, dependencies, and peerDependencies external
...plugins,
typescript({ tsconfig: TS_CONFIG }),
],
onwarn: squelchTranspilationWarnings, // this pipeline is only for typechecking and generating definitions
}
const type = {
input: 'dist/dts/lib/index.d.ts',
output: { file: 'dist/widgets.d.ts' },
output: { file: 'dist/index.d.ts' },
external: isAsset,
plugins: [
externals({ exclude: ['constants'], deps: true, peerDeps: true }),
dts({ compilerOptions: { baseUrl: 'dist/dts' } }),
process.env.ROLLUP_WATCH ? undefined : del({ hook: 'buildEnd', targets: ['dist/widgets.tsc', 'dist/dts'] }),
],
}
/**
* This exports scheme works for nextjs and for CRA5.
*
* It will also work for CRA4 if you use direct imports:
* instead of `import { SwapWidget } from '@uniswap/widgets'`,
* `import { SwapWidget } from '@uniswap/widgets/dist/index.js'`.
* I do not know why CRA4 does not seem to use exports for resolution.
*
* Note that chunks are enabled. This is so the tokenlist spec can be loaded async,
* to improve first load time (due to ajv). Locales are also in separate chunks.
*
* Lastly, note that JSON and lingui are bundled into the library, as neither are fully
* supported/compatible with ES Modules. Both _could_ be bundled only with esm, but this
* yields a less complex pipeline.
*/
const transpile = {
input: 'src/lib/index.tsx',
output: [
{
file: 'dist/widgets.js',
format: 'cjs',
dir: 'dist',
format: 'esm',
sourcemap: false,
},
{
file: 'dist/widgets.esm.js',
format: 'esm',
dir: 'dist/cjs',
entryFileNames: '[name].cjs',
chunkFileNames: '[name]-[hash].cjs',
format: 'cjs',
sourcemap: false,
},
],
plugins: [
externals({
exclude: [
'constants',
/@lingui\/(core|react)/, // @lingui incorrectly exports esm, so it must be bundled in
/\.json$/, // esm does not support JSON loading, so it must be bundled in
],
deps: true,
peerDeps: true,
}),
...plugins,
// Source code transformation
url({ include: ASSET_EXTENSIONS.map((extname) => '**/*' + extname) }), // imports assets as data URIs
url({ include: ASSET_EXTENSIONS.map((extname) => '**/*' + extname), limit: Infinity }), // imports assets as data URIs
svgr({ exportType: 'named', svgo: false }), // imports svgs as React components
sass({ insert: true }), // imports inlined sass styles
sass({ output: 'dist/fonts.css' }), // generates fonts.css
commonjs(), // transforms cjs dependencies into tree-shakeable ES modules
babel({
@@ -104,16 +139,30 @@ const transpile = {
'@babel/plugin-transform-runtime', // embeds the babel runtime for library distribution
],
}),
copy({
copyOnce: true,
targets: [{ src: 'src/locales/*.js', dest: 'dist/locales' }],
}),
],
onwarn: squelchTypeWarnings, // this pipeline is only for transpilation
}
const config = [check, type, transpile]
const locales = {
input: 'src/locales/*.js',
output: [
{
dir: 'dist',
format: 'esm',
sourcemap: false,
},
],
plugins: [
copy({
copyOnce: true,
targets: [{ src: 'src/locales/*.js', dest: 'dist/cjs/locales', rename: (name) => `${name}.cjs` }],
}),
commonjs(),
multi(),
],
}
const config = [check, type, transpile, locales]
export default config
function squelchTranspilationWarnings(warning: RollupWarning, warn: (warning: RollupWarning) => void) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

View File

@@ -1,16 +1,5 @@
<svg width="170" height="168" viewBox="0 0 170 168" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0)">
<path opacity="0.6" d="M85.05 168C132.022 168 170.1 130.105 170.1 83.3593C170.1 36.6135 0 36.6135 0 83.3593C0 130.105 38.0782 168 85.05 168Z" fill="#FF505F"/>
<path opacity="0.6" d="M85.05 168C132.022 168 170.1 130.105 170.1 83.3593C170.1 36.6135 0 36.6135 0 83.3593C0 130.105 38.0782 168 85.05 168Z" fill="#FF0320"/>
<path d="M85.05 0C132.022 0 170.1 37.8949 170.1 84.6407C170.1 131.386 0 131.386 0 84.6407C0 37.8949 38.0782 0 85.05 0Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M144.665 64.0394L112.444 12.3742L89.0263 78.9477L144.665 64.0394Z" fill="#FF4E65"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M143.777 64.215L112.444 12.3742L165.349 58.4347L143.777 64.215Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M144.551 63.613L142.479 124.467L88.912 78.5213L144.551 63.613Z" fill="#D0001A"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M143.663 63.7886L142.479 124.467L165.235 58.0083L143.663 63.7886Z" fill="#FF697B"/>
</g>
<defs>
<clipPath id="clip0">
<rect width="170" height="168" fill="white"/>
</clipPath>
</defs>
<svg width="500" height="500" viewBox="0 0 500 500" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="250" cy="250" r="250" fill="#FF0420"/>
<path d="M177.133 316.446C162.247 316.446 150.051 312.943 140.544 305.938C131.162 298.808 126.471 288.676 126.471 275.541C126.471 272.789 126.784 269.411 127.409 265.408C129.036 256.402 131.35 245.581 134.352 232.947C142.858 198.547 164.812 181.347 200.213 181.347C209.845 181.347 218.476 182.973 226.107 186.225C233.738 189.352 239.742 194.106 244.12 200.486C248.498 206.74 250.688 214.246 250.688 223.002C250.688 225.629 250.375 228.944 249.749 232.947C247.873 244.08 245.621 254.901 242.994 265.408C238.616 282.546 231.048 295.368 220.29 303.874C209.532 312.255 195.147 316.446 177.133 316.446ZM179.76 289.426C186.766 289.426 192.707 287.362 197.586 283.234C202.59 279.106 206.155 272.789 208.281 264.283C211.158 252.524 213.348 242.266 214.849 233.51C215.349 230.883 215.599 228.194 215.599 225.441C215.599 214.058 209.657 208.366 197.774 208.366C190.768 208.366 184.764 210.43 179.76 214.558C174.882 218.687 171.379 225.004 169.253 233.51C167.001 241.891 164.749 252.149 162.498 264.283C161.997 266.784 161.747 269.411 161.747 272.163C161.747 283.672 167.752 289.426 179.76 289.426Z" fill="white"/>
<path d="M259.303 314.57C257.927 314.57 256.863 314.132 256.113 313.256C255.487 312.255 255.3 311.13 255.55 309.879L281.444 187.914C281.694 186.538 282.382 185.412 283.508 184.536C284.634 183.661 285.822 183.223 287.073 183.223H336.985C350.87 183.223 362.003 186.1 370.384 191.854C378.891 197.609 383.144 205.927 383.144 216.81C383.144 219.937 382.769 223.19 382.018 226.567C378.891 240.953 372.574 251.586 363.067 258.466C353.685 265.346 340.8 268.786 324.413 268.786H299.082L290.451 309.879C290.2 311.255 289.512 312.38 288.387 313.256C287.261 314.132 286.072 314.57 284.822 314.57H259.303ZM325.727 242.892C330.98 242.892 335.546 241.453 339.424 238.576C343.427 235.699 346.054 231.571 347.305 226.192C347.68 224.065 347.868 222.189 347.868 220.563C347.868 216.935 346.805 214.183 344.678 212.307C342.551 210.305 338.924 209.305 333.795 209.305H311.278L304.148 242.892H325.727Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -51,6 +51,16 @@ const FlyoutHeader = styled.div`
font-weight: 400;
`
const FlyoutMenu = styled.div`
position: absolute;
top: 54px;
width: 272px;
z-index: 99;
padding-top: 10px;
@media screen and (min-width: ${MEDIA_WIDTHS.upToSmall}px) {
top: 40px;
}
`
const FlyoutMenuContents = styled.div`
align-items: flex-start;
background-color: ${({ theme }) => theme.bg0};
box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.01), 0px 4px 8px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04),
@@ -61,16 +71,9 @@ const FlyoutMenu = styled.div`
font-size: 16px;
overflow: auto;
padding: 16px;
position: absolute;
top: 64px;
width: 272px;
z-index: 99;
& > *:not(:last-child) {
margin-bottom: 12px;
}
@media screen and (min-width: ${MEDIA_WIDTHS.upToSmall}px) {
top: 50px;
}
`
const FlyoutRow = styled.div<{ active: boolean }>`
align-items: center;
@@ -305,21 +308,23 @@ export default function NetworkSelector() {
}
return (
<SelectorWrapper ref={node as any}>
<SelectorControls onClick={toggle} interactive>
<SelectorWrapper ref={node as any} onMouseEnter={toggle} onMouseLeave={toggle}>
<SelectorControls interactive>
<SelectorLogo interactive src={info.logoUrl} />
<SelectorLabel>{info.label}</SelectorLabel>
<StyledChevronDown />
</SelectorControls>
{open && (
<FlyoutMenu onMouseLeave={toggle}>
<FlyoutHeader>
<Trans>Select a network</Trans>
</FlyoutHeader>
<Row onSelectChain={handleChainSwitch} targetChain={SupportedChainId.MAINNET} />
<Row onSelectChain={handleChainSwitch} targetChain={SupportedChainId.POLYGON} />
<Row onSelectChain={handleChainSwitch} targetChain={SupportedChainId.OPTIMISM} />
<Row onSelectChain={handleChainSwitch} targetChain={SupportedChainId.ARBITRUM_ONE} />
<FlyoutMenu>
<FlyoutMenuContents>
<FlyoutHeader>
<Trans>Select a network</Trans>
</FlyoutHeader>
<Row onSelectChain={handleChainSwitch} targetChain={SupportedChainId.MAINNET} />
<Row onSelectChain={handleChainSwitch} targetChain={SupportedChainId.POLYGON} />
<Row onSelectChain={handleChainSwitch} targetChain={SupportedChainId.OPTIMISM} />
<Row onSelectChain={handleChainSwitch} targetChain={SupportedChainId.ARBITRUM_ONE} />
</FlyoutMenuContents>
</FlyoutMenu>
)}
</SelectorWrapper>

View File

@@ -0,0 +1,139 @@
import { Trans } from '@lingui/macro'
import FlagImage from 'assets/images/ukraine.png'
import { AutoColumn } from 'components/Column'
import { RowBetween, RowFixed } from 'components/Row'
import { X } from 'react-feather'
import ReactGA from 'react-ga'
import { useDarkModeManager, useShowDonationLink } from 'state/user/hooks'
import styled from 'styled-components/macro'
import { ExternalLink, ThemedText, Z_INDEX } from 'theme'
const darkGradient = `radial-gradient(87.53% 3032.45% at 5.16% 10.13%, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0) 100%),
linear-gradient(0deg, rgba(0, 91, 187, 0.35), rgba(0, 91, 187, 0.35)), #000000;`
const lightGradient = `radial-gradient(87.53% 3032.45% at 5.16% 10.13%, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0) 100%), linear-gradient(0deg, #CBE4FF, #CBE4FF), linear-gradient(0deg, rgba(255, 255, 255, 0.09), rgba(255, 255, 255, 0.09)), radial-gradient(100% 93.36% at 0% 6.64%, #8BC4FF 0%, #FFF5BF 100%);`
const Wrapper = styled(AutoColumn)<{ darkMode: boolean }>`
background: #edeef2;
position: fixed;
bottom: 40px;
border-radius: 12px;
padding: 18px;
max-width: 360px;
background: ${({ darkMode }) => (darkMode ? darkGradient : lightGradient)};
color: ${({ theme }) => theme.text1};
z-index: ${Z_INDEX.deprecated_content};
:hover {
opacity: 0.8;
}
& > * {
z-index: ${Z_INDEX.fixed};
}
overflow: hidden;
:before {
background-image: url(${FlagImage});
background-repeat: no-repeat;
overflow: hidden;
background-size: 300px;
content: '';
height: 1200px;
width: 400px;
opacity: 0.1;
position: absolute;
transform: rotate(25deg) translate(-140px, -60px);
width: 300px;
z-index: ${Z_INDEX.deprecated_zero};
}
${({ theme }) => theme.mediaWidth.upToSmall`
max-width: 100%;
`}
${({ theme }) => theme.mediaWidth.upToMedium`
position: relative;
bottom: unset;
`}
`
const WrappedCloseIcon = styled(X)`
stroke: ${({ theme }) => theme.text2};
z-index: ${Z_INDEX.tooltip};
:hover {
cursor: pointer;
opacity: 0.8;
}
`
export const StyledFlagImage = styled.div`
margin-right: 12px;
width: 18px;
height: 18px;
border-radius: 100%;
&:before,
&:after {
content: '';
width: 9px;
height: 18px;
}
&:before {
float: left;
border-top-left-radius: 9px;
border-bottom-left-radius: 9px;
background: #005bbb;
}
&:after {
float: right;
border-top-right-radius: 9px;
border-bottom-right-radius: 9px;
background: #ffd500;
}
transform: rotate(90deg);
`
const StyledLink = styled(ExternalLink)`
text-decoration: none !important;
`
export default function DonationLink() {
const [darkMode] = useDarkModeManager()
const [, setVisible] = useShowDonationLink()
return (
<Wrapper
gap="10px"
darkMode={darkMode}
as={StyledLink}
target="https://donate.uniswap.org/#/swap"
href="https://donate.uniswap.org/#/swap"
onClickCapture={() => {
ReactGA.event({
category: 'Donate',
action: 'Link to Ukraine site.',
})
}}
>
<RowBetween>
<RowFixed>
<StyledFlagImage />
<ThemedText.Body fontWeight={600} fontSize={'18px'}>
<Trans>Donate to Ukraine</Trans>
</ThemedText.Body>
</RowFixed>
<WrappedCloseIcon
onClick={(e) => {
e.preventDefault()
e.stopPropagation()
setVisible(false)
return false
}}
/>
</RowBetween>
<ThemedText.Body fontWeight={400} fontSize="12px" color="text2">
<Trans>Directly support the Ukrainian government by donating tokens.</Trans>
</ThemedText.Body>
</Wrapper>
)
}

View File

@@ -1,12 +1,14 @@
import { SupportedChainId } from 'constants/chains'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useLocation } from 'react-router-dom'
import styled from 'styled-components/macro'
import { MEDIA_WIDTHS } from 'theme'
import { useActivePopups } from '../../state/application/hooks'
import { useURLWarningVisible } from '../../state/user/hooks'
import { useShowDonationLink, useURLWarningVisible } from '../../state/user/hooks'
import { AutoColumn } from '../Column'
import ClaimPopup from './ClaimPopup'
import DonationLink from './DonationLink'
import PopupItem from './PopupItem'
const MobilePopupWrapper = styled.div<{ height: string | number }>`
@@ -14,11 +16,12 @@ const MobilePopupWrapper = styled.div<{ height: string | number }>`
max-width: 100%;
height: ${({ height }) => height};
margin: ${({ height }) => (height ? '0 auto;' : 0)};
margin-bottom: ${({ height }) => (height ? '20px' : 0)}};
margin-bottom: ${({ height }) => (height ? '20px' : 0)};
display: none;
${({ theme }) => theme.mediaWidth.upToSmall`
display: block;
padding-top: 20px;
`};
`
@@ -65,6 +68,11 @@ export default function Popups() {
const { chainId } = useActiveWeb3React()
const isNotOnMainnet = Boolean(chainId && chainId !== SupportedChainId.MAINNET)
const location = useLocation()
const isOnSwapPage = location.pathname.includes('swap')
const [donationVisible] = useShowDonationLink()
const showDonation = donationVisible && isOnSwapPage
return (
<>
<FixedPopupColumn gap="20px" extraPadding={urlWarningActive} xlPadding={isNotOnMainnet}>
@@ -72,9 +80,11 @@ export default function Popups() {
{activePopups.map((item) => (
<PopupItem key={item.key} content={item.content} popKey={item.key} removeAfterMs={item.removeAfterMs} />
))}
{showDonation ? <DonationLink /> : null}
</FixedPopupColumn>
<MobilePopupWrapper height={activePopups?.length > 0 ? 'fit-content' : 0}>
<MobilePopupWrapper height={activePopups?.length > 0 || showDonation ? 'fit-content' : 0}>
<MobilePopupInner>
{showDonation ? <DonationLink /> : null}
{activePopups // reverse so new items up front
.slice(0)
.reverse()

View File

@@ -19,7 +19,7 @@ import { PositionDetails } from 'types/position'
import { formatTickPrice } from 'utils/formatTickPrice'
import { unwrappedToken } from 'utils/unwrappedToken'
import { DAI, USDC, USDT, WBTC, WRAPPED_NATIVE_CURRENCY } from '../../constants/tokens'
import { DAI, USDC_MAINNET, USDT, WBTC, WRAPPED_NATIVE_CURRENCY } from '../../constants/tokens'
const LinkRow = styled(Link)`
align-items: center;
@@ -145,7 +145,7 @@ export function getPriceOrderingFromPositionForUI(position?: Position): {
const token1 = position.amount1.currency
// if token0 is a dollar-stable asset, set it as the quote token
const stables = [DAI, USDC, USDT]
const stables = [DAI, USDC_MAINNET, USDT]
if (stables.some((stable) => stable.equals(token0))) {
return {
priceLower: position.token0PriceUpper.invert(),

View File

@@ -1,7 +1,7 @@
import { Protocol } from '@uniswap/router-sdk'
import { Currency, Percent } from '@uniswap/sdk-core'
import { FeeAmount } from '@uniswap/v3-sdk'
import { DAI, USDC, WBTC } from 'constants/tokens'
import { DAI, USDC_MAINNET, WBTC } from 'constants/tokens'
import { render } from 'test-utils'
import RoutingDiagram, { RoutingDiagramEntry } from './RoutingDiagram'
@@ -10,16 +10,16 @@ const percent = (strings: TemplateStringsArray) => new Percent(parseInt(strings[
const singleRoute: RoutingDiagramEntry = {
percent: percent`100`,
path: [[USDC, DAI, FeeAmount.LOW]],
path: [[USDC_MAINNET, DAI, FeeAmount.LOW]],
protocol: Protocol.V3,
}
const multiRoute: RoutingDiagramEntry[] = [
{ percent: percent`75`, path: [[USDC, DAI, FeeAmount.LOWEST]], protocol: Protocol.V2 },
{ percent: percent`75`, path: [[USDC_MAINNET, DAI, FeeAmount.LOWEST]], protocol: Protocol.V2 },
{
percent: percent`25`,
path: [
[USDC, WBTC, FeeAmount.MEDIUM],
[USDC_MAINNET, WBTC, FeeAmount.MEDIUM],
[WBTC, DAI, FeeAmount.HIGH],
],
protocol: Protocol.V3,
@@ -47,16 +47,16 @@ jest.mock('hooks/useTokenInfoFromActiveList', () => ({
}))
it('renders when no routes are provided', () => {
const { asFragment } = render(<RoutingDiagram currencyIn={DAI} currencyOut={USDC} routes={[]} />)
const { asFragment } = render(<RoutingDiagram currencyIn={DAI} currencyOut={USDC_MAINNET} routes={[]} />)
expect(asFragment()).toMatchSnapshot()
})
it('renders single route', () => {
const { asFragment } = render(<RoutingDiagram currencyIn={USDC} currencyOut={DAI} routes={[singleRoute]} />)
const { asFragment } = render(<RoutingDiagram currencyIn={USDC_MAINNET} currencyOut={DAI} routes={[singleRoute]} />)
expect(asFragment()).toMatchSnapshot()
})
it('renders multi route', () => {
const { asFragment } = render(<RoutingDiagram currencyIn={USDC} currencyOut={DAI} routes={multiRoute} />)
const { asFragment } = render(<RoutingDiagram currencyIn={USDC_MAINNET} currencyOut={DAI} routes={multiRoute} />)
expect(asFragment()).toMatchSnapshot()
})

View File

@@ -1,12 +1,12 @@
import { Trans } from '@lingui/macro'
import { Protocol } from '@uniswap/router-sdk'
import { Currency, Percent } from '@uniswap/sdk-core'
import { Currency } from '@uniswap/sdk-core'
import { FeeAmount } from '@uniswap/v3-sdk'
import Badge from 'components/Badge'
import CurrencyLogo from 'components/CurrencyLogo'
import DoubleCurrencyLogo from 'components/DoubleLogo'
import Row, { AutoRow } from 'components/Row'
import { useTokenInfoFromActiveList } from 'hooks/useTokenInfoFromActiveList'
import { RoutingDiagramEntry } from 'lib/components/Swap/RoutingDiagram/utils'
import { Box } from 'rebass'
import styled from 'styled-components/macro'
import { ThemedText, Z_INDEX } from 'theme'
@@ -14,12 +14,6 @@ import { ThemedText, Z_INDEX } from 'theme'
import { ReactComponent as DotLine } from '../../assets/svg/dot_line.svg'
import { MouseoverTooltip } from '../Tooltip'
export interface RoutingDiagramEntry {
percent: Percent
path: [Currency, Currency, FeeAmount][]
protocol: Protocol
}
const Wrapper = styled(Box)`
align-items: center;
width: 100%;

View File

@@ -48,7 +48,7 @@ export function ImportToken(props: ImportProps) {
<RowBetween>
{onBack ? <ArrowLeft style={{ cursor: 'pointer' }} onClick={onBack} /> : <div />}
<ThemedText.MediumHeader>
<Plural value={tokens.length} one="Import token" other="Import tokens" />
<Plural value={tokens.length} _1="Import token" other="Import tokens" />
</ThemedText.MediumHeader>
{onDismiss ? <CloseIcon onClick={onDismiss} /> : <div />}
</RowBetween>

View File

@@ -1,15 +1,14 @@
import { Trans } from '@lingui/macro'
import { Trade } from '@uniswap/router-sdk'
import { Currency, Percent, TradeType } from '@uniswap/sdk-core'
import { Pair } from '@uniswap/v2-sdk'
import { Currency, TradeType } from '@uniswap/sdk-core'
import AnimatedDropdown from 'components/AnimatedDropdown'
import { AutoColumn } from 'components/Column'
import { LoadingRows } from 'components/Loader/styled'
import RoutingDiagram, { RoutingDiagramEntry } from 'components/RoutingDiagram/RoutingDiagram'
import RoutingDiagram from 'components/RoutingDiagram/RoutingDiagram'
import { AutoRow, RowBetween } from 'components/Row'
import { SUPPORTED_GAS_ESTIMATE_CHAIN_IDS } from 'constants/chains'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import useAutoRouterSupported from 'hooks/useAutoRouterSupported'
import { getTokenPath } from 'lib/components/Swap/RoutingDiagram/utils'
import { memo, useState } from 'react'
import { Plus } from 'react-feather'
import { InterfaceTrade } from 'state/routing/types'
@@ -39,8 +38,6 @@ const OpenCloseIcon = styled(Plus)<{ open?: boolean }>`
}
`
const V2_DEFAULT_FEE_TIER = 3000
interface SwapRouteProps extends React.HTMLAttributes<HTMLDivElement> {
trade: InterfaceTrade<Currency, Currency, TradeType>
syncing: boolean
@@ -109,35 +106,3 @@ export default memo(function SwapRoute({ trade, syncing, fixedOpen = false, ...r
</Wrapper>
)
})
function getTokenPath(trade: Trade<Currency, Currency, TradeType>): RoutingDiagramEntry[] {
return trade.swaps.map(({ route: { path: tokenPath, pools, protocol }, inputAmount, outputAmount }) => {
const portion =
trade.tradeType === TradeType.EXACT_INPUT
? inputAmount.divide(trade.inputAmount)
: outputAmount.divide(trade.outputAmount)
const percent = new Percent(portion.numerator, portion.denominator)
const path: RoutingDiagramEntry['path'] = []
for (let i = 0; i < pools.length; i++) {
const nextPool = pools[i]
const tokenIn = tokenPath[i]
const tokenOut = tokenPath[i + 1]
const entry: RoutingDiagramEntry['path'][0] = [
tokenIn,
tokenOut,
nextPool instanceof Pair ? V2_DEFAULT_FEE_TIER : nextPool.fee,
]
path.push(entry)
}
return {
percent,
path,
protocol,
}
})
}

View File

@@ -12,6 +12,8 @@ export const COMMON_CONTRACT_NAMES: Record<number, { [address: string]: string }
[TIMELOCK_ADDRESS[SupportedChainId.MAINNET]]: 'Timelock',
[GOVERNANCE_ALPHA_V0_ADDRESSES[SupportedChainId.MAINNET]]: 'Governance (V0)',
[GOVERNANCE_ALPHA_V1_ADDRESSES[SupportedChainId.MAINNET]]: 'Governance',
'0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e': 'ENS Registry',
'0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41': 'ENS Public Resolver',
},
}

View File

@@ -18,8 +18,8 @@ import {
sETH2,
SWISE,
TRIBE,
USDC,
USDC_ARBITRUM,
USDC_MAINNET,
USDC_OPTIMISM,
USDC_POLYGON,
USDT,
@@ -50,7 +50,13 @@ const WRAPPED_NATIVE_CURRENCIES_ONLY: ChainTokenList = Object.fromEntries(
// used to construct intermediary pairs for trading
export const BASES_TO_CHECK_TRADES_AGAINST: ChainTokenList = {
...WRAPPED_NATIVE_CURRENCIES_ONLY,
[SupportedChainId.MAINNET]: [...WRAPPED_NATIVE_CURRENCIES_ONLY[SupportedChainId.MAINNET], DAI, USDC, USDT, WBTC],
[SupportedChainId.MAINNET]: [
...WRAPPED_NATIVE_CURRENCIES_ONLY[SupportedChainId.MAINNET],
DAI,
USDC_MAINNET,
USDT,
WBTC,
],
[SupportedChainId.OPTIMISM]: [
...WRAPPED_NATIVE_CURRENCIES_ONLY[SupportedChainId.OPTIMISM],
DAI_OPTIMISM,
@@ -101,7 +107,7 @@ export const COMMON_BASES: ChainCurrencyList = {
[SupportedChainId.MAINNET]: [
nativeOnChain(SupportedChainId.MAINNET),
DAI,
USDC,
USDC_MAINNET,
USDT,
WBTC,
WRAPPED_NATIVE_CURRENCY[SupportedChainId.MAINNET],
@@ -154,7 +160,13 @@ export const COMMON_BASES: ChainCurrencyList = {
// used to construct the list of all pairs we consider by default in the frontend
export const BASES_TO_TRACK_LIQUIDITY_FOR: ChainTokenList = {
...WRAPPED_NATIVE_CURRENCIES_ONLY,
[SupportedChainId.MAINNET]: [...WRAPPED_NATIVE_CURRENCIES_ONLY[SupportedChainId.MAINNET], DAI, USDC, USDT, WBTC],
[SupportedChainId.MAINNET]: [
...WRAPPED_NATIVE_CURRENCIES_ONLY[SupportedChainId.MAINNET],
DAI,
USDC_MAINNET,
USDT,
WBTC,
],
}
export const PINNED_PAIRS: { readonly [chainId: number]: [Token, Token][] } = {
[SupportedChainId.MAINNET]: [
@@ -168,7 +180,7 @@ export const PINNED_PAIRS: { readonly [chainId: number]: [Token, Token][] } = {
'Compound USD Coin'
),
],
[USDC, USDT],
[USDC_MAINNET, USDT],
[DAI, USDT],
],
}

View File

@@ -1101,6 +1101,13 @@
"name": "BMEX",
"symbol": "BMEX",
"decimals": 18
},
{
"chainId": 1,
"address": "0x322A46E88fa3C78F9c9E3DBb0254b61664a06109",
"name": "Ukraine DAO",
"symbol": "Ukraine",
"decimals": 18
}
]
}

View File

@@ -1,8 +1,23 @@
import { Currency, Ether, NativeCurrency, Token, WETH9 } from '@uniswap/sdk-core'
import {
USDC_ARBITRUM,
USDC_ARBITRUM_RINKEBY,
USDC_GÖRLI,
USDC_KOVAN,
USDC_MAINNET,
USDC_OPTIMISM,
USDC_OPTIMISTIC_KOVAN,
USDC_POLYGON,
USDC_POLYGON_MUMBAI,
USDC_RINKEBY,
USDC_ROPSTEN,
} from '@uniswap/smart-order-router'
import { UNI_ADDRESS } from './addresses'
import { SupportedChainId } from './chains'
export { USDC_ARBITRUM, USDC_MAINNET, USDC_OPTIMISM, USDC_POLYGON }
export const AMPL = new Token(
SupportedChainId.MAINNET,
'0xD46bA6D942050d489DBd938a2C909A5d5039A161',
@@ -31,27 +46,19 @@ export const DAI_OPTIMISM = new Token(
'DAI',
'Dai stable coin'
)
export const USDC = new Token(
SupportedChainId.MAINNET,
'0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
6,
'USDC',
'USD//C'
)
export const USDC_ARBITRUM = new Token(
SupportedChainId.ARBITRUM_ONE,
'0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8',
6,
'USDC',
'USD//C'
)
export const USDC_POLYGON = new Token(
SupportedChainId.POLYGON,
'0x2791bca1f2de4661ed88a30c99a7a9449aa84174',
6,
'USDC',
'USD//C'
)
export const USDC: { [chainId in SupportedChainId]: Token } = {
[SupportedChainId.MAINNET]: USDC_MAINNET,
[SupportedChainId.ARBITRUM_ONE]: USDC_ARBITRUM,
[SupportedChainId.OPTIMISM]: USDC_OPTIMISM,
[SupportedChainId.ARBITRUM_RINKEBY]: USDC_ARBITRUM_RINKEBY,
[SupportedChainId.OPTIMISTIC_KOVAN]: USDC_OPTIMISTIC_KOVAN,
[SupportedChainId.POLYGON]: USDC_POLYGON,
[SupportedChainId.POLYGON_MUMBAI]: USDC_POLYGON_MUMBAI,
[SupportedChainId.GOERLI]: USDC_GÖRLI,
[SupportedChainId.RINKEBY]: USDC_RINKEBY,
[SupportedChainId.KOVAN]: USDC_KOVAN,
[SupportedChainId.ROPSTEN]: USDC_ROPSTEN,
}
export const DAI_POLYGON = new Token(
SupportedChainId.POLYGON,
'0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063',
@@ -73,13 +80,6 @@ export const WBTC_POLYGON = new Token(
'WBTC',
'Wrapped BTC'
)
export const USDC_OPTIMISM = new Token(
SupportedChainId.OPTIMISM,
'0x7F5c764cBc14f9669B88837ca1490cCa17c31607',
6,
'USDC',
'USD//C'
)
export const USDT = new Token(
SupportedChainId.MAINNET,
'0xdAC17F958D2ee523a2206206994597C13D831ec7',
@@ -296,3 +296,19 @@ export function nativeOnChain(chainId: number): NativeCurrency {
: ExtendedEther.onChain(chainId))
)
}
export const TOKEN_SHORTHANDS: { [shorthand: string]: { [chainId in SupportedChainId]?: string } } = {
USDC: {
[SupportedChainId.MAINNET]: USDC_MAINNET.address,
[SupportedChainId.ARBITRUM_ONE]: USDC_ARBITRUM.address,
[SupportedChainId.OPTIMISM]: USDC_OPTIMISM.address,
[SupportedChainId.ARBITRUM_RINKEBY]: USDC_ARBITRUM_RINKEBY.address,
[SupportedChainId.OPTIMISTIC_KOVAN]: USDC_OPTIMISTIC_KOVAN.address,
[SupportedChainId.POLYGON]: USDC_POLYGON.address,
[SupportedChainId.POLYGON_MUMBAI]: USDC_POLYGON_MUMBAI.address,
[SupportedChainId.GOERLI]: USDC_GÖRLI.address,
[SupportedChainId.RINKEBY]: USDC_RINKEBY.address,
[SupportedChainId.KOVAN]: USDC_KOVAN.address,
[SupportedChainId.ROPSTEN]: USDC_ROPSTEN.address,
},
}

View File

@@ -2,7 +2,7 @@ import { Currency, Token } from '@uniswap/sdk-core'
import { CHAIN_INFO } from 'constants/chainInfo'
import { L2_CHAIN_IDS, SupportedChainId, SupportedL2ChainId } from 'constants/chains'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useCurrencyFromMap, useTokenFromMap } from 'lib/hooks/useCurrency'
import { useCurrencyFromMap, useTokenFromMapOrNetwork } from 'lib/hooks/useCurrency'
import { getTokenFilter } from 'lib/hooks/useTokenList/filtering'
import { useMemo } from 'react'
@@ -159,7 +159,7 @@ export function useIsUserAddedToken(currency: Currency | undefined | null): bool
// otherwise returns the token
export function useToken(tokenAddress?: string | null): Token | null | undefined {
const tokens = useAllTokens()
return useTokenFromMap(tokens, tokenAddress)
return useTokenFromMapOrNetwork(tokens, tokenAddress)
}
export function useCurrency(currencyId?: string | null): Currency | null | undefined {

View File

@@ -1,6 +1,6 @@
import { renderHook } from '@testing-library/react-hooks'
import { CurrencyAmount, TradeType } from '@uniswap/sdk-core'
import { DAI, USDC } from 'constants/tokens'
import { DAI, USDC_MAINNET } from 'constants/tokens'
import { TradeState } from 'state/routing/types'
import { useRoutingAPITrade } from '../state/routing/useRoutingAPITrade'
@@ -10,7 +10,7 @@ import { useClientSideV3Trade } from './useClientSideV3Trade'
import useDebounce from './useDebounce'
import useIsWindowVisible from './useIsWindowVisible'
const USDCAmount = CurrencyAmount.fromRawAmount(USDC, '10000')
const USDCAmount = CurrencyAmount.fromRawAmount(USDC_MAINNET, '10000')
const DAIAmount = CurrencyAmount.fromRawAmount(DAI, '10000')
jest.mock('./useAutoRouterSupported')
@@ -126,10 +126,10 @@ describe('#useBestV3Trade ExactOut', () => {
expectRouterMock(TradeState.INVALID)
expectClientSideMock(TradeState.VALID)
const { result } = renderHook(() => useBestTrade(TradeType.EXACT_OUTPUT, DAIAmount, USDC))
const { result } = renderHook(() => useBestTrade(TradeType.EXACT_OUTPUT, DAIAmount, USDC_MAINNET))
expect(mockUseRoutingAPITrade).toHaveBeenCalledWith(TradeType.EXACT_OUTPUT, undefined, USDC)
expect(mockUseClientSideV3Trade).toHaveBeenCalledWith(TradeType.EXACT_OUTPUT, DAIAmount, USDC)
expect(mockUseRoutingAPITrade).toHaveBeenCalledWith(TradeType.EXACT_OUTPUT, undefined, USDC_MAINNET)
expect(mockUseClientSideV3Trade).toHaveBeenCalledWith(TradeType.EXACT_OUTPUT, DAIAmount, USDC_MAINNET)
expect(result.current).toEqual({ state: TradeState.VALID, trade: undefined })
})
@@ -138,17 +138,17 @@ describe('#useBestV3Trade ExactOut', () => {
expectRouterMock(TradeState.NO_ROUTE_FOUND)
expectClientSideMock(TradeState.VALID)
const { result } = renderHook(() => useBestTrade(TradeType.EXACT_OUTPUT, DAIAmount, USDC))
const { result } = renderHook(() => useBestTrade(TradeType.EXACT_OUTPUT, DAIAmount, USDC_MAINNET))
expect(mockUseRoutingAPITrade).toHaveBeenCalledWith(TradeType.EXACT_OUTPUT, undefined, USDC)
expect(mockUseClientSideV3Trade).toHaveBeenCalledWith(TradeType.EXACT_OUTPUT, DAIAmount, USDC)
expect(mockUseRoutingAPITrade).toHaveBeenCalledWith(TradeType.EXACT_OUTPUT, undefined, USDC_MAINNET)
expect(mockUseClientSideV3Trade).toHaveBeenCalledWith(TradeType.EXACT_OUTPUT, DAIAmount, USDC_MAINNET)
expect(result.current).toEqual({ state: TradeState.VALID, trade: undefined })
})
describe('when routing api is in non-error state', () => {
it('does not compute client side v3 trade if routing api is LOADING', () => {
expectRouterMock(TradeState.LOADING)
const { result } = renderHook(() => useBestTrade(TradeType.EXACT_OUTPUT, DAIAmount, USDC))
const { result } = renderHook(() => useBestTrade(TradeType.EXACT_OUTPUT, DAIAmount, USDC_MAINNET))
expect(mockUseClientSideV3Trade).toHaveBeenCalledWith(TradeType.EXACT_OUTPUT, undefined, undefined)
expect(result.current).toEqual({ state: TradeState.LOADING, trade: undefined })
@@ -157,7 +157,7 @@ describe('#useBestV3Trade ExactOut', () => {
it('does not compute client side v3 trade if routing api is VALID', () => {
expectRouterMock(TradeState.VALID)
const { result } = renderHook(() => useBestTrade(TradeType.EXACT_OUTPUT, DAIAmount, USDC))
const { result } = renderHook(() => useBestTrade(TradeType.EXACT_OUTPUT, DAIAmount, USDC_MAINNET))
expect(mockUseClientSideV3Trade).toHaveBeenCalledWith(TradeType.EXACT_OUTPUT, undefined, undefined)
expect(result.current).toEqual({ state: TradeState.VALID, trade: undefined })
@@ -166,7 +166,7 @@ describe('#useBestV3Trade ExactOut', () => {
it('does not compute client side v3 trade if routing api is SYNCING', () => {
expectRouterMock(TradeState.SYNCING)
const { result } = renderHook(() => useBestTrade(TradeType.EXACT_OUTPUT, DAIAmount, USDC))
const { result } = renderHook(() => useBestTrade(TradeType.EXACT_OUTPUT, DAIAmount, USDC_MAINNET))
expect(mockUseClientSideV3Trade).toHaveBeenCalledWith(TradeType.EXACT_OUTPUT, undefined, undefined)
expect(result.current).toEqual({ state: TradeState.SYNCING, trade: undefined })
@@ -178,7 +178,7 @@ describe('#useBestV3Trade ExactOut', () => {
expectRouterMock(TradeState.INVALID)
expectClientSideMock(TradeState.VALID)
renderHook(() => useBestTrade(TradeType.EXACT_OUTPUT, DAIAmount, USDC))
renderHook(() => useBestTrade(TradeType.EXACT_OUTPUT, DAIAmount, USDC_MAINNET))
expect(mockUseClientSideV3Trade).toHaveBeenCalledWith(TradeType.EXACT_OUTPUT, undefined, undefined)
})
@@ -187,9 +187,9 @@ describe('#useBestV3Trade ExactOut', () => {
expectRouterMock(TradeState.NO_ROUTE_FOUND)
expectClientSideMock(TradeState.VALID)
const { result } = renderHook(() => useBestTrade(TradeType.EXACT_OUTPUT, DAIAmount, USDC))
const { result } = renderHook(() => useBestTrade(TradeType.EXACT_OUTPUT, DAIAmount, USDC_MAINNET))
expect(mockUseClientSideV3Trade).toHaveBeenCalledWith(TradeType.EXACT_OUTPUT, DAIAmount, USDC)
expect(mockUseClientSideV3Trade).toHaveBeenCalledWith(TradeType.EXACT_OUTPUT, DAIAmount, USDC_MAINNET)
expect(result.current).toEqual({ state: TradeState.VALID, trade: undefined })
})
})

View File

@@ -1,7 +1,7 @@
import { Token } from '@uniswap/sdk-core'
import { SupportedChainId } from 'constants/chains'
import uriToHttp from 'lib/utils/uriToHttp'
import Vibrant from 'node-vibrant/lib/bundle'
import Vibrant from 'node-vibrant/lib/bundle.js'
import { shade } from 'polished'
import { useLayoutEffect, useState } from 'react'
import { WrappedTokenInfo } from 'state/lists/wrappedTokenInfo'

View File

@@ -10,7 +10,7 @@ import { useSingleCallResult } from 'lib/hooks/multicall'
import { useMemo, useState } from 'react'
import { SWAP_ROUTER_ADDRESSES, V3_ROUTER_ADDRESS } from '../constants/addresses'
import { DAI, UNI, USDC } from '../constants/tokens'
import { DAI, UNI, USDC_MAINNET } from '../constants/tokens'
import { useEIP2612Contract } from './useContract'
import useIsArgentWallet from './useIsArgentWallet'
@@ -36,7 +36,7 @@ const PERMITTABLE_TOKENS: {
}
} = {
1: {
[USDC.address]: { type: PermitType.AMOUNT, name: 'USD Coin', version: '2' },
[USDC_MAINNET.address]: { type: PermitType.AMOUNT, name: 'USD Coin', version: '2' },
[DAI.address]: { type: PermitType.ALLOWED, name: 'Dai Stablecoin', version: '1' },
[UNI[1].address]: { type: PermitType.AMOUNT, name: 'Uniswap' },
},

View File

@@ -1,9 +1,11 @@
import { useCallback, useEffect, useState } from 'react'
const VISIBILITY_STATE_SUPPORTED = 'visibilityState' in document
function isVisibilityStateSupported() {
return 'visibilityState' in document
}
function isWindowVisible() {
return !VISIBILITY_STATE_SUPPORTED || document.visibilityState !== 'hidden'
return !isVisibilityStateSupported() || document.visibilityState !== 'hidden'
}
/**
@@ -16,7 +18,7 @@ export default function useIsWindowVisible(): boolean {
}, [setFocused])
useEffect(() => {
if (!VISIBILITY_STATE_SUPPORTED) return undefined
if (!isVisibilityStateSupported()) return undefined
document.addEventListener('visibilitychange', listener)
return () => {

View File

@@ -4,14 +4,14 @@ import tryParseCurrencyAmount from 'lib/utils/tryParseCurrencyAmount'
import { useMemo } from 'react'
import { SupportedChainId } from '../constants/chains'
import { DAI_OPTIMISM, USDC, USDC_ARBITRUM, USDC_POLYGON } from '../constants/tokens'
import { DAI_OPTIMISM, USDC_ARBITRUM, USDC_MAINNET, USDC_POLYGON } from '../constants/tokens'
import { useBestV2Trade } from './useBestV2Trade'
import { useClientSideV3Trade } from './useClientSideV3Trade'
// Stablecoin amounts used when calculating spot price for a given currency.
// The amount is large enough to filter low liquidity pairs.
export const STABLECOIN_AMOUNT_OUT: { [chainId: number]: CurrencyAmount<Token> } = {
[SupportedChainId.MAINNET]: CurrencyAmount.fromRawAmount(USDC, 100_000e6),
[SupportedChainId.MAINNET]: CurrencyAmount.fromRawAmount(USDC_MAINNET, 100_000e6),
[SupportedChainId.ARBITRUM_ONE]: CurrencyAmount.fromRawAmount(USDC_ARBITRUM, 10_000e6),
[SupportedChainId.OPTIMISM]: CurrencyAmount.fromRawAmount(DAI_OPTIMISM, 10_000e18),
[SupportedChainId.POLYGON]: CurrencyAmount.fromRawAmount(USDC_POLYGON, 10_000e6),

View File

@@ -73,4 +73,3 @@ ReactDOM.render(
if (process.env.REACT_APP_SERVICE_WORKER !== 'false') {
serviceWorkerRegistration.register()
}
export { INFURA_NETWORK_URLS } from 'constants/infura'

View File

@@ -0,0 +1,10 @@
<svg width="23" height="20" viewBox="0 0 23 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="gradient" x1="0" y1="0" x2="1" y2="0" gradientTransform="rotate(95)">
<stop id="stop1" offset="0" stop-color="#2274E2"/>
<stop id="stop1" offset="0.5" stop-color="#2274E2"/>
<stop id="stop2" offset="1" stop-color="#3FB672" />
</linearGradient>
</defs>
<path d="M16 16C10 16 9 10 5 10M16 16C16 17.6569 17.3431 19 19 19C20.6569 19 22 17.6569 22 16C22 14.3431 20.6569 13 19 13C17.3431 13 16 14.3431 16 16ZM5 10C9 10 10 4 16 4M5 10H1.5M16 4C16 5.65685 17.3431 7 19 7C20.6569 7 22 5.65685 22 4C22 2.34315 20.6569 1 19 1C17.3431 1 16 2.34315 16 4Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="url(#gradient)" />
</svg>

After

Width:  |  Height:  |  Size: 780 B

View File

@@ -61,14 +61,13 @@ export interface Action {
children: ReactNode
}
export interface ActionButtonProps {
export interface BaseProps {
color?: Color
disabled?: boolean
action?: Action
onClick: () => void
children: ReactNode
}
export type ActionButtonProps = BaseProps & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, keyof BaseProps>
export default function ActionButton({ color = 'accent', disabled, action, onClick, children }: ActionButtonProps) {
const textColor = useMemo(() => (color === 'accent' && !disabled ? 'onAccent' : 'currentColor'), [color, disabled])
return (

View File

@@ -0,0 +1,11 @@
import styled, { Color } from 'lib/theme'
import Row from './Row'
const Badge = styled(Row)<{ borderRadius?: number; padding?: string; color?: Color }>`
background-color: ${({ theme, color = 'outline' }) => theme[color]};
border-radius: ${({ borderRadius }) => `${borderRadius ?? 0.5}em`};
padding: ${({ padding }) => padding ?? '0.25em 0.375em'};
`
export default Badge

View File

@@ -10,6 +10,7 @@ export const BaseButton = styled.button`
cursor: pointer;
font-size: inherit;
font-weight: inherit;
height: inherit;
line-height: inherit;
margin: 0;
padding: 0;

View File

@@ -40,7 +40,10 @@ export function Provider({ value, children }: ProviderProps) {
}
}, [active])
return (
<div ref={ref}>
<div
ref={ref}
style={{ isolation: 'isolate' }} // creates a new stacking context, preventing the dialog from intercepting non-dialog clicks
>
<Context.Provider value={context}>{children}</Context.Provider>
</div>
)

View File

@@ -12,6 +12,7 @@ import Rule from '../Rule'
const HeaderIcon = styled(LargeIcon)`
flex-grow: 1;
transition: height 0.25s, width 0.25s;
svg {
transition: height 0.25s, width 0.25s;
@@ -66,7 +67,7 @@ const ExpandoColumn = styled(Column)<{ open: boolean }>`
transition: flex-grow 0.25s;
${Column} {
height: 100%;
height: 6.825em;
padding: ${({ open }) => (open ? '0.5em 0' : 0)};
transition: padding 0.25s;

View File

@@ -1,12 +1,14 @@
import { SupportedChainId } from 'constants/chains'
import useActiveWeb3React from 'lib/hooks/useActiveWeb3React'
import { Link } from 'lib/icons'
import styled, { Color } from 'lib/theme'
import { ReactNode, useMemo } from 'react'
import { ExplorerDataType, getExplorerLink } from 'utils/getExplorerLink'
import ExternalLink from './ExternalLink'
import Row from './Row'
const Link = styled(ExternalLink)<{ color: Color }>`
const StyledExternalLink = styled(ExternalLink)<{ color: Color }>`
color: ${({ theme, color }) => theme[color]};
text-decoration: none;
`
@@ -25,8 +27,10 @@ export default function EtherscanLink({ data, type, color = 'currentColor', chil
[chainId, data, type]
)
return (
<Link href={url} color={color} target="_blank">
{children}
</Link>
<StyledExternalLink href={url} color={color} target="_blank">
<Row gap={0.25}>
{children} <Link />
</Row>
</StyledExternalLink>
)
}

View File

@@ -21,7 +21,9 @@ const PopoverContainer = styled.div<{ show: boolean }>`
`
const Reference = styled.div`
align-self: flex-start;
display: inline-block;
height: 1em;
`
const Arrow = styled.div`

View File

@@ -1,4 +1,5 @@
import { useLingui } from '@lingui/react'
import { Currency, CurrencyAmount } from '@uniswap/sdk-core'
import { useUSDCValue } from 'hooks/useUSDCPrice'
import { loadingOpacityCss } from 'lib/css/loading'
import {
@@ -45,12 +46,33 @@ export interface InputProps {
focused: boolean
}
interface UseFormattedFieldAmountArguments {
disabled: boolean
currencyAmount?: CurrencyAmount<Currency>
fieldAmount?: string
}
export function useFormattedFieldAmount({ disabled, currencyAmount, fieldAmount }: UseFormattedFieldAmountArguments) {
return useMemo(() => {
if (disabled) {
return ''
}
if (fieldAmount !== undefined) {
return fieldAmount
}
if (currencyAmount) {
return currencyAmount.toSignificant(6)
}
return ''
}, [disabled, currencyAmount, fieldAmount])
}
export default function Input({ disabled, focused }: InputProps) {
const { i18n } = useLingui()
const {
trade: { state: tradeState },
currencyBalances: { [Field.INPUT]: balance },
currencyAmounts: { [Field.INPUT]: swapInputCurrencyAmount },
trade: { state: tradeState },
tradeCurrencyAmounts: { [Field.INPUT]: swapInputCurrencyAmount },
} = useSwapInfo()
const inputUSDC = useUSDCValue(swapInputCurrencyAmount)
@@ -69,14 +91,10 @@ export default function Input({ disabled, focused }: InputProps) {
const mockApproved = true
// account for gas needed if using max on native token
const maxAmount = useMemo(() => maxAmountSpend(balance), [balance])
const onMax = useMemo(() => {
if (maxAmount?.greaterThan(0)) {
return () => updateSwapInputAmount(maxAmount.toExact())
}
return
}, [maxAmount, updateSwapInputAmount])
const max = useMemo(() => {
const maxAmount = maxAmountSpend(balance)
return maxAmount?.greaterThan(0) ? maxAmount.toExact() : undefined
}, [balance])
const balanceColor = useMemo(() => {
const insufficientBalance =
@@ -85,13 +103,19 @@ export default function Input({ disabled, focused }: InputProps) {
return insufficientBalance ? 'error' : undefined
}, [balance, inputCurrencyAmount, swapInputCurrencyAmount])
const amount = useFormattedFieldAmount({
disabled,
currencyAmount: inputCurrencyAmount,
fieldAmount: swapInputAmount,
})
return (
<InputColumn gap={0.5} approved={mockApproved}>
<TokenInput
currency={swapInputCurrency}
amount={(swapInputAmount !== undefined ? swapInputAmount : swapInputCurrencyAmount?.toSignificant(6)) ?? ''}
amount={amount}
max={max}
disabled={disabled}
onMax={onMax}
onChangeInput={updateSwapInputAmount}
onChangeCurrency={updateSwapInputCurrency}
loading={isLoading}

View File

@@ -16,7 +16,7 @@ import { getPriceImpactWarning } from 'utils/prices'
import Column from '../Column'
import Row from '../Row'
import { Balance, InputProps, LoadingRow } from './Input'
import { Balance, InputProps, LoadingRow, useFormattedFieldAmount } from './Input'
import TokenInput from './TokenInput'
export const colorAtom = atom<string | undefined>(undefined)
@@ -41,9 +41,9 @@ export default function Output({ disabled, focused, children }: PropsWithChildre
const { i18n } = useLingui()
const {
trade: { state: tradeState },
currencyBalances: { [Field.OUTPUT]: balance },
currencyAmounts: { [Field.INPUT]: inputCurrencyAmount, [Field.OUTPUT]: outputCurrencyAmount },
trade: { state: tradeState },
tradeCurrencyAmounts: { [Field.INPUT]: inputCurrencyAmount, [Field.OUTPUT]: outputCurrencyAmount },
} = useSwapInfo()
const [swapOutputAmount, updateSwapOutputAmount] = useSwapAmount(Field.OUTPUT)
@@ -78,6 +78,12 @@ export default function Output({ disabled, focused, children }: PropsWithChildre
)
}, [inputUSDC, outputUSDC])
const amount = useFormattedFieldAmount({
disabled,
currencyAmount: outputCurrencyAmount,
fieldAmount: swapOutputAmount,
})
return (
<DynamicThemeProvider color={color}>
<OutputColumn hasColor={hasColor} gap={0.5}>
@@ -88,7 +94,7 @@ export default function Output({ disabled, focused, children }: PropsWithChildre
</Row>
<TokenInput
currency={swapOutputCurrency}
amount={(swapOutputAmount !== undefined ? swapOutputAmount : outputCurrencyAmount?.toSignificant(6)) ?? ''}
amount={amount}
disabled={disabled}
onChangeInput={updateSwapOutputAmount}
onChangeCurrency={updateSwapOutputCurrency}
@@ -97,7 +103,7 @@ export default function Output({ disabled, focused, children }: PropsWithChildre
<ThemedText.Body2 color="secondary">
<Row>
<LoadingRow gap={0.5} $loading={isLoading}>
{outputUSDC?.toFixed(2)} {priceImpact}
{outputUSDC ? `$${outputUSDC.toFixed(2)}` : '-'} {priceImpact}
</LoadingRow>
{balance && (
<Balance focused={focused}>

View File

@@ -0,0 +1,143 @@
import { Plural, Trans } from '@lingui/macro'
import { Currency, TradeType } from '@uniswap/sdk-core'
import { FeeAmount } from '@uniswap/v3-sdk'
import { ReactComponent as DotLineImage } from 'assets/svg/dot_line.svg'
import Badge from 'lib/components/Badge'
import Column from 'lib/components/Column'
import Row from 'lib/components/Row'
import Rule from 'lib/components/Rule'
import TokenImg from 'lib/components/TokenImg'
import { AutoRouter } from 'lib/icons'
import styled, { Layer, ThemedText } from 'lib/theme'
import { useMemo } from 'react'
import { InterfaceTrade } from 'state/routing/types'
import { getTokenPath, RoutingDiagramEntry } from './utils'
const Wrapper = styled(Column)`
padding: 0.25em;
`
const RouteRow = styled(Row)`
grid-template-columns: 1em 1.15em 1fr 1em;
min-width: 430px;
`
const RouteDetailsContainer = styled(Row)`
padding: 0.1em 0.5em;
position: relative;
`
const DotsContainer = styled.div`
align-items: center;
display: flex;
opacity: 0.5;
position: absolute;
width: calc(100% - 1em);
z-index: ${Layer.UNDERLAYER};
`
const DotsContainerShort = styled(DotsContainer)`
overflow: hidden;
position: relative;
width: 71px;
`
const Dots = styled(DotLineImage)`
path {
stroke: ${({ theme }) => theme.secondary};
}
`
const DetailsRow = styled(Row)`
display: grid;
grid-template-columns: 4.8125em 1fr;
width: 100%;
`
const StyledAutoRouterLabel = styled(ThemedText.ButtonSmall)`
@supports (-webkit-background-clip: text) and (-webkit-text-fill-color: transparent) {
background-image: linear-gradient(90deg, #2172e5 0%, #54e521 163.16%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
`
function Pool({
originCurrency,
targetCurrency,
feeAmount,
}: {
originCurrency: Currency
targetCurrency: Currency
feeAmount: FeeAmount
}) {
return (
<Badge padding="0 4px" color="dialog">
<Badge gap={0.375}>
<Row>
<TokenImg token={originCurrency} />
<TokenImg token={targetCurrency} />
</Row>
<ThemedText.Subhead2>{feeAmount / 10_000}%</ThemedText.Subhead2>
</Badge>
</Badge>
)
}
export default function RoutingDiagram({ trade }: { trade: InterfaceTrade<Currency, Currency, TradeType> }) {
const routes: RoutingDiagramEntry[] = useMemo(() => getTokenPath(trade), [trade])
return (
<Wrapper gap={0.75}>
<Row justify="space-between">
<Row gap={0.25}>
<AutoRouter />
<StyledAutoRouterLabel color="primary" lineHeight={'16px'}>
<Trans>Auto Router</Trans>
</StyledAutoRouterLabel>
</Row>
<ThemedText.ButtonSmall>
<Plural value={routes.length} _1="Best route via 1 hop" other="Best route via # hops" />
</ThemedText.ButtonSmall>
</Row>
<Rule />
{routes.map((route, index) => (
<RouteRow key={index} align="center">
<TokenImg token={trade.inputAmount.currency} />
<DotsContainerShort>
<Dots />
</DotsContainerShort>
<RouteDetailsContainer justify="flex-start" flex>
<DotsContainer>
<Dots />
</DotsContainer>
<DetailsRow>
<Badge padding="0 4px" color="dialog">
<Badge gap={0.375}>
<ThemedText.ButtonSmall color="secondary">{route.percent.toSignificant(2)}%</ThemedText.ButtonSmall>
<Badge padding="0.125em" borderRadius={0.25} color="module">
<ThemedText.Badge color="secondary" fontSize={'0.5rem'}>
{route.protocol.toUpperCase()}
</ThemedText.Badge>
</Badge>
</Badge>
</Badge>
<Row justify="space-evenly" flex style={{ width: '100%' }}>
{route.path.map(([originCurrency, targetCurrency, feeAmount], index) => (
<Pool
key={index}
originCurrency={originCurrency}
targetCurrency={targetCurrency}
feeAmount={feeAmount}
/>
))}
</Row>
</DetailsRow>
</RouteDetailsContainer>
<TokenImg token={trade.outputAmount.currency} />
</RouteRow>
))}
</Wrapper>
)
}

View File

@@ -0,0 +1,43 @@
import { Protocol } from '@uniswap/router-sdk'
import { Currency, Percent, TradeType } from '@uniswap/sdk-core'
import { Pair } from '@uniswap/v2-sdk'
import { FeeAmount } from '@uniswap/v3-sdk'
import { InterfaceTrade } from 'state/routing/types'
export interface RoutingDiagramEntry {
percent: Percent
path: [Currency, Currency, FeeAmount][]
protocol: Protocol
}
const V2_DEFAULT_FEE_TIER = 3000
/**
* Loops through all routes on a trade and returns an array of diagram entries.
*/
export function getTokenPath(trade: InterfaceTrade<Currency, Currency, TradeType>): RoutingDiagramEntry[] {
return trade.swaps.map(({ route: { path: tokenPath, pools, protocol }, inputAmount, outputAmount }) => {
const portion =
trade.tradeType === TradeType.EXACT_INPUT
? inputAmount.divide(trade.inputAmount)
: outputAmount.divide(trade.outputAmount)
const percent = new Percent(portion.numerator, portion.denominator)
const path: RoutingDiagramEntry['path'] = []
for (let i = 0; i < pools.length; i++) {
const nextPool = pools[i]
const tokenIn = tokenPath[i]
const tokenOut = tokenPath[i + 1]
const entry: RoutingDiagramEntry['path'][0] = [
tokenIn,
tokenOut,
nextPool instanceof Pair ? V2_DEFAULT_FEE_TIER : nextPool.fee,
]
path.push(entry)
}
return {
percent,
path,
protocol,
}
})
}

View File

@@ -6,7 +6,7 @@ import { getSlippageWarning, toPercent } from 'lib/hooks/useAllowedSlippage'
import { AlertTriangle, Check, Icon, LargeIcon, XOctagon } from 'lib/icons'
import { autoSlippageAtom, maxSlippageAtom } from 'lib/state/settings'
import styled, { ThemedText } from 'lib/theme'
import { forwardRef, memo, ReactNode, useCallback, useMemo, useRef, useState } from 'react'
import { forwardRef, memo, ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react'
import { BaseButton, TextButton } from '../../Button'
import Column from '../../Column'
@@ -88,7 +88,6 @@ export default function MaxSlippageSelect() {
const [autoSlippage, setAutoSlippage] = useAtom(autoSlippageAtom)
const [maxSlippage, setMaxSlippage] = useAtom(maxSlippageAtom)
const maxSlippageInput = useMemo(() => maxSlippage?.toString() || '', [maxSlippage])
const [warning, setWarning] = useState<'warning' | 'error' | undefined>(getSlippageWarning(toPercent(maxSlippage)))
const option = useRef<HTMLButtonElement>(null)
const showTooltip = useTooltip(option.current)
@@ -96,20 +95,27 @@ export default function MaxSlippageSelect() {
const input = useRef<HTMLInputElement>(null)
const focus = useCallback(() => input.current?.focus(), [input])
const [warning, setWarning] = useState<'warning' | 'error' | undefined>(getSlippageWarning(toPercent(maxSlippage)))
useEffect(() => {
setWarning(getSlippageWarning(toPercent(maxSlippage)))
}, [maxSlippage])
const onInputSelect = useCallback(() => {
focus()
const percent = toPercent(maxSlippage)
const warning = getSlippageWarning(percent)
setAutoSlippage(!percent || warning === 'error')
}, [focus, maxSlippage, setAutoSlippage])
const processValue = useCallback(
(value: number | undefined) => {
const percent = toPercent(value)
const warning = getSlippageWarning(percent)
setWarning(warning)
setMaxSlippage(value)
setAutoSlippage(!percent || warning === 'error')
},
[setAutoSlippage, setMaxSlippage]
)
const onInputSelect = useCallback(() => {
focus()
processValue(maxSlippage)
}, [focus, maxSlippage, processValue])
return (
<Column gap={0.75}>
@@ -130,7 +136,7 @@ export default function MaxSlippageSelect() {
>
<Row color={warning === 'error' ? 'error' : undefined}>
<DecimalInput
size={Math.max(maxSlippageInput.length, 3)}
size={Math.max(maxSlippageInput.length, 4)}
value={maxSlippageInput}
onChange={(input) => processValue(+input)}
placeholder={placeholder}

View File

@@ -1,9 +1,10 @@
import { Trans } from '@lingui/macro'
import ErrorDialog, { StatusHeader } from 'lib/components/Error/ErrorDialog'
import EtherscanLink from 'lib/components/EtherscanLink'
import SwapSummary from 'lib/components/Swap/Summary'
import useInterval from 'lib/hooks/useInterval'
import { CheckCircle, Clock, Spinner } from 'lib/icons'
import { SwapTransactionInfo, Transaction } from 'lib/state/transactions'
import { SwapTransactionInfo, Transaction, TransactionType, WrapTransactionInfo } from 'lib/state/transactions'
import styled, { ThemedText } from 'lib/theme'
import ms from 'ms.macro'
import { useCallback, useMemo, useState } from 'react'
@@ -12,7 +13,6 @@ import { ExplorerDataType } from 'utils/getExplorerLink'
import ActionButton from '../../ActionButton'
import Column from '../../Column'
import Row from '../../Row'
import Summary from '../Summary'
const errorMessage = (
<Trans>
@@ -26,7 +26,9 @@ const TransactionRow = styled(Row)`
flex-direction: row-reverse;
`
function ElapsedTime({ tx }: { tx: Transaction<SwapTransactionInfo> }) {
type PendingTransaction = Transaction<SwapTransactionInfo | WrapTransactionInfo>
function ElapsedTime({ tx }: { tx: PendingTransaction }) {
const [elapsedMs, setElapsedMs] = useState(0)
useInterval(() => setElapsedMs(Date.now() - tx.addedTime), tx.receipt ? null : ms`1s`)
@@ -54,7 +56,7 @@ function ElapsedTime({ tx }: { tx: Transaction<SwapTransactionInfo> }) {
}
interface TransactionStatusProps {
tx: Transaction<SwapTransactionInfo>
tx: PendingTransaction
onClose: () => void
}
@@ -63,14 +65,24 @@ function TransactionStatus({ tx, onClose }: TransactionStatusProps) {
return tx.receipt?.status ? CheckCircle : Spinner
}, [tx.receipt?.status])
const heading = useMemo(() => {
return tx.receipt?.status ? <Trans>Transaction submitted</Trans> : <Trans>Transaction pending</Trans>
}, [tx.receipt?.status])
if (tx.info.type === TransactionType.SWAP) {
return tx.receipt?.status ? <Trans>Swap confirmed</Trans> : <Trans>Swap pending</Trans>
} else if (tx.info.type === TransactionType.WRAP) {
if (tx.info.unwrapped) {
return tx.receipt?.status ? <Trans>Unwrap confirmed</Trans> : <Trans>Unwrap pending</Trans>
}
return tx.receipt?.status ? <Trans>Wrap confirmed</Trans> : <Trans>Wrap pending</Trans>
}
return tx.receipt?.status ? <Trans>Transaction confirmed</Trans> : <Trans>Transaction pending</Trans>
}, [tx.info, tx.receipt?.status])
return (
<Column flex padded gap={0.75} align="stretch" style={{ height: '100%' }}>
<StatusHeader icon={Icon} iconColor={tx.receipt?.status ? 'success' : undefined}>
<ThemedText.Subhead1>{heading}</ThemedText.Subhead1>
<Summary input={tx.info.inputCurrencyAmount} output={tx.info.outputCurrencyAmount} />
{tx.info.type === TransactionType.SWAP ? (
<SwapSummary input={tx.info.inputCurrencyAmount} output={tx.info.outputCurrencyAmount} />
) : null}
</StatusHeader>
<TransactionRow flex>
<ThemedText.ButtonSmall>

View File

@@ -158,7 +158,7 @@ export function SummaryDialog({ trade, allowedSlippage, onConfirm }: SummaryDial
</Column>
</DetailsColumn>
<Estimate color="secondary">
<Trans>Output is estimated.</Trans>
<Trans>Output is estimated.</Trans>{' '}
{tradeType === TradeType.EXACT_INPUT && (
<Trans>
You will receive at least{' '}

View File

@@ -1,5 +1,5 @@
import { tokens } from '@uniswap/default-token-list'
import { DAI, USDC } from 'constants/tokens'
import { DAI, USDC_MAINNET } from 'constants/tokens'
import { useUpdateAtom } from 'jotai/utils'
import { useEffect } from 'react'
import { useSelect, useValue } from 'react-cosmos/fixture'
@@ -41,7 +41,7 @@ function Fixture() {
none: '',
Native: 'NATIVE',
DAI: DAI.address,
USDC: USDC.address,
USDC: USDC_MAINNET.address,
}
const addressOptions = Object.keys(optionsToAddressMap)
const [defaultInput] = useSelect('defaultInputAddress', {
@@ -71,6 +71,7 @@ function Fixture() {
defaultOutputAddress={optionsToAddressMap[defaultOutput]}
defaultOutputAmount={defaultOutputAmount}
tokenList={tokens}
onConnectWallet={() => console.log('onConnectWallet')} // this handler is included as a test of functionality, but only logs
/>
)
}

View File

@@ -2,6 +2,7 @@ import { Trans } from '@lingui/macro'
import { Token } from '@uniswap/sdk-core'
import { useERC20PermitFromTrade } from 'hooks/useERC20Permit'
import { useUpdateAtom } from 'jotai/utils'
import { WrapErrorText } from 'lib/components/Swap/WrapErrorText'
import { useSwapCurrencyAmount, useSwapInfo, useSwapTradeType } from 'lib/hooks/swap'
import useSwapApproval, {
ApprovalState,
@@ -9,11 +10,12 @@ import useSwapApproval, {
useSwapRouterAddress,
} from 'lib/hooks/swap/useSwapApproval'
import { useSwapCallback } from 'lib/hooks/swap/useSwapCallback'
import useWrapCallback, { WrapError, WrapType } from 'lib/hooks/swap/useWrapCallback'
import { useAddTransaction } from 'lib/hooks/transactions'
import { usePendingApproval } from 'lib/hooks/transactions'
import useActiveWeb3React from 'lib/hooks/useActiveWeb3React'
import useTransactionDeadline from 'lib/hooks/useTransactionDeadline'
import { Link, Spinner } from 'lib/icons'
import { Spinner } from 'lib/icons'
import { displayTxHashAtom, Field } from 'lib/state/swap'
import { TransactionType } from 'lib/state/transactions'
import { useTheme } from 'lib/theme'
@@ -24,7 +26,6 @@ import { ExplorerDataType } from 'utils/getExplorerLink'
import ActionButton, { ActionButtonProps } from '../ActionButton'
import Dialog from '../Dialog'
import EtherscanLink from '../EtherscanLink'
import Row from '../Row'
import { SummaryDialog } from './Summary'
interface SwapButtonProps {
@@ -41,12 +42,12 @@ export default function SwapButton({ disabled }: SwapButtonProps) {
const { tokenColorExtraction } = useTheme()
const {
trade,
allowedSlippage,
currencies: { [Field.INPUT]: inputCurrency },
currencyBalances: { [Field.INPUT]: inputCurrencyBalance },
currencyAmounts: { [Field.INPUT]: inputCurrencyAmount, [Field.OUTPUT]: outputCurrencyAmount },
feeOptions,
trade,
tradeCurrencyAmounts: { [Field.INPUT]: inputTradeCurrencyAmount, [Field.OUTPUT]: outputTradeCurrencyAmount },
} = useSwapInfo()
const tradeType = useSwapTradeType()
@@ -56,6 +57,11 @@ export default function SwapButton({ disabled }: SwapButtonProps) {
setActiveTrade((activeTrade) => activeTrade && trade.trade)
}, [trade])
// clear active trade on chain change
useEffect(() => {
setActiveTrade(undefined)
}, [chainId])
// TODO(zzmp): Return an optimized trade directly from useSwapInfo.
const optimizedTrade =
// Use trade.trade if there is no swap optimized trade. This occurs if approvals are still pending.
@@ -82,8 +88,13 @@ export default function SwapButton({ disabled }: SwapButtonProps) {
})
}, [addTransaction, getApproval])
const { type: wrapType, callback: wrapCallback, error: wrapError, loading: wrapLoading } = useWrapCallback()
const actionProps = useMemo((): Partial<ActionButtonProps> | undefined => {
if (disabled || wrapLoading) return { disabled: true }
if (!disabled && chainId) {
const hasSufficientInputForTrade =
inputTradeCurrencyAmount && inputCurrencyBalance && !inputCurrencyBalance.lessThan(inputTradeCurrencyAmount)
if (approval === ApprovalState.NOT_APPROVED) {
const currency = inputCurrency || approvalCurrencyAmount?.currency
invariant(currency)
@@ -100,11 +111,7 @@ export default function SwapButton({ disabled }: SwapButtonProps) {
action: {
message: (
<EtherscanLink type={ExplorerDataType.TRANSACTION} data={approvalHash}>
<Row gap={0.25}>
<Trans>
Approval pending <Link />
</Trans>
</Row>
<Trans>Approval pending</Trans>
</EtherscanLink>
),
icon: Spinner,
@@ -112,7 +119,7 @@ export default function SwapButton({ disabled }: SwapButtonProps) {
children: <Trans>Approve</Trans>,
},
}
} else if (inputCurrencyAmount && inputCurrencyBalance && !inputCurrencyBalance.lessThan(inputCurrencyAmount)) {
} else if (hasSufficientInputForTrade || (wrapType !== WrapType.NOT_APPLICABLE && !wrapError)) {
return {}
}
}
@@ -125,8 +132,11 @@ export default function SwapButton({ disabled }: SwapButtonProps) {
chainId,
disabled,
inputCurrency,
inputCurrencyAmount,
inputCurrencyBalance,
inputTradeCurrencyAmount,
wrapError,
wrapLoading,
wrapType,
])
const deadline = useTransactionDeadline()
@@ -149,13 +159,13 @@ export default function SwapButton({ disabled }: SwapButtonProps) {
swapCallback?.()
.then((response) => {
setDisplayTxHash(response.hash)
invariant(inputCurrencyAmount && outputCurrencyAmount)
invariant(inputTradeCurrencyAmount && outputTradeCurrencyAmount)
addTransaction({
response,
type: TransactionType.SWAP,
tradeType,
inputCurrencyAmount,
outputCurrencyAmount,
inputCurrencyAmount: inputTradeCurrencyAmount,
outputCurrencyAmount: outputTradeCurrencyAmount,
})
})
.catch((error) => {
@@ -165,19 +175,54 @@ export default function SwapButton({ disabled }: SwapButtonProps) {
.finally(() => {
setActiveTrade(undefined)
})
}, [addTransaction, inputCurrencyAmount, outputCurrencyAmount, setDisplayTxHash, swapCallback, tradeType])
}, [addTransaction, inputTradeCurrencyAmount, outputTradeCurrencyAmount, setDisplayTxHash, swapCallback, tradeType])
const ButtonText = useCallback(() => {
if (wrapError !== WrapError.NO_ERROR) {
return <WrapErrorText wrapError={wrapError} />
}
switch (wrapType) {
case WrapType.UNWRAP:
return <Trans>Unwrap</Trans>
case WrapType.WRAP:
return <Trans>Wrap</Trans>
case WrapType.NOT_APPLICABLE:
default:
return <Trans>Review swap</Trans>
}
}, [wrapError, wrapType])
const handleDialogClose = useCallback(() => {
setActiveTrade(undefined)
}, [])
const handleActionButtonClick = useCallback(async () => {
if (wrapType === WrapType.NOT_APPLICABLE) {
setActiveTrade(trade.trade)
} else {
const transaction = await wrapCallback()
addTransaction({
response: transaction,
type: TransactionType.WRAP,
unwrapped: wrapType === WrapType.UNWRAP,
currencyAmountRaw: transaction.value?.toString() ?? '0',
chainId,
})
setDisplayTxHash(transaction.hash)
}
}, [addTransaction, chainId, setDisplayTxHash, trade.trade, wrapCallback, wrapType])
return (
<>
<ActionButton
color={tokenColorExtraction ? 'interactive' : 'accent'}
onClick={() => setActiveTrade(trade.trade)}
onClick={handleActionButtonClick}
{...actionProps}
>
<Trans>Review swap</Trans>
<ButtonText />
</ActionButton>
{activeTrade && (
<Dialog color="dialog" onClose={() => setActiveTrade(undefined)}>
<Dialog color="dialog" onClose={handleDialogClose}>
<SummaryDialog trade={activeTrade} allowedSlippage={allowedSlippage} onConfirm={onConfirm} />
</Dialog>
)}

View File

@@ -1,8 +1,10 @@
import 'setimmediate'
import { Trans } from '@lingui/macro'
import { Currency } from '@uniswap/sdk-core'
import { loadingOpacityCss } from 'lib/css/loading'
import styled, { keyframes, ThemedText } from 'lib/theme'
import { FocusEvent, ReactNode, useCallback, useRef, useState } from 'react'
import { ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react'
import Button from '../Button'
import Column from '../Column'
@@ -50,8 +52,8 @@ const MaxButton = styled(Button)`
interface TokenInputProps {
currency?: Currency
amount: string
max?: string
disabled?: boolean
onMax?: () => void
onChangeInput: (input: string) => void
onChangeCurrency: (currency: Currency) => void
loading?: boolean
@@ -61,38 +63,49 @@ interface TokenInputProps {
export default function TokenInput({
currency,
amount,
max,
disabled,
onMax,
onChangeInput,
onChangeCurrency,
loading,
children,
}: TokenInputProps) {
const max = useRef<HTMLButtonElement>(null)
const [showMax, setShowMax] = useState(false)
const onFocus = useCallback(() => setShowMax(Boolean(onMax)), [onMax])
const onBlur = useCallback((e: FocusEvent) => {
if (e.relatedTarget !== max.current && e.relatedTarget !== input.current) {
setShowMax(false)
}
}, [])
const input = useRef<HTMLInputElement>(null)
const onSelect = useCallback(
(currency: Currency) => {
onChangeCurrency(currency)
setTimeout(() => input.current?.focus(), 0)
setImmediate(() => input.current?.focus())
},
[onChangeCurrency]
)
const maxButton = useRef<HTMLButtonElement>(null)
const hasMax = useMemo(() => Boolean(max && max !== amount), [max, amount])
const [showMax, setShowMax] = useState<boolean>(hasMax)
useEffect(() => setShowMax((hasMax && input.current?.contains(document.activeElement)) ?? false), [hasMax])
const onBlur = useCallback((e) => {
// Filters out clicks on input or maxButton, because onBlur fires before onClickMax.
if (!input.current?.contains(e.relatedTarget) && !maxButton.current?.contains(e.relatedTarget)) {
setShowMax(false)
}
}, [])
const onClickMax = useCallback(() => {
onChangeInput(max || '')
setShowMax(false)
setImmediate(() => {
input.current?.focus()
// Brings the start of the input into view. NB: This only works for clicks, not eg keyboard interactions.
input.current?.setSelectionRange(0, null)
})
}, [max, onChangeInput])
return (
<Column gap={0.25}>
<TokenInputRow gap={0.5} onBlur={onBlur}>
<ThemedText.H2>
<ValueInput
value={amount}
onFocus={onFocus}
onFocus={() => setShowMax(hasMax)}
onChange={onChangeInput}
disabled={disabled || !currency}
$loading={Boolean(loading)}
@@ -100,8 +113,9 @@ export default function TokenInput({
></ValueInput>
</ThemedText.H2>
{showMax && (
<MaxButton onClick={onMax} ref={max}>
<ThemedText.ButtonMedium>
<MaxButton onClick={onClickMax} ref={maxButton}>
{/* Without a tab index, Safari would not populate the FocusEvent.relatedTarget needed by onBlur. */}
<ThemedText.ButtonMedium tabIndex={-1}>
<Trans>Max</Trans>
</ThemedText.ButtonMedium>
</MaxButton>

View File

@@ -1,14 +1,16 @@
import { Trans } from '@lingui/macro'
import { Currency, TradeType } from '@uniswap/sdk-core'
import useUSDCPrice from 'hooks/useUSDCPrice'
import Tooltip from 'lib/components/Tooltip'
import { WrapType } from 'lib/hooks/swap/useWrapCallback'
import { AlertTriangle, Icon, Info, Spinner } from 'lib/icons'
import { ThemedText } from 'lib/theme'
import { ReactNode, useMemo, useState } from 'react'
import { ReactNode, useCallback, useMemo, useState } from 'react'
import { InterfaceTrade } from 'state/routing/types'
import { TextButton } from '../../Button'
import Row from '../../Row'
import RoutingTooltip from './RoutingTooltip'
import RoutingDiagram from '../RoutingDiagram'
interface CaptionProps {
icon?: Icon
@@ -27,22 +29,38 @@ function Caption({ icon: Icon = AlertTriangle, caption }: CaptionProps) {
export function ConnectWallet() {
return <Caption caption={<Trans>Connect wallet to swap</Trans>} />
}
export function UnsupportedNetwork() {
return <Caption caption={<Trans>Unsupported network - switch to another to trade.</Trans>} />
}
export function InsufficientBalance({ currency }: { currency: Currency }) {
return <Caption caption={<Trans>Insufficient {currency?.symbol} balance</Trans>} />
}
export function InsufficientLiquidity() {
return <Caption caption={<Trans>Insufficient liquidity in the pool for your trade</Trans>} />
}
export function Empty() {
return <Caption icon={Info} caption={<Trans>Enter an amount</Trans>} />
}
export function LoadingTrade() {
return <Caption icon={Spinner} caption={<Trans>Fetching best price</Trans>} />
}
export function WrapCurrency({ loading, wrapType }: { loading: boolean; wrapType: WrapType.UNWRAP | WrapType.WRAP }) {
const WrapText = useCallback(() => {
if (wrapType === WrapType.WRAP) {
return loading ? <Trans>Wrapping native currency.</Trans> : <Trans>Wrap native currency.</Trans>
}
return loading ? <Trans>Unwrapping native currency.</Trans> : <Trans>Unwrap native currency.</Trans>
}, [loading, wrapType])
return <Caption icon={Info} caption={<WrapText />} />
}
export function Trade({ trade }: { trade: InterfaceTrade<Currency, Currency, TradeType> }) {
const [flip, setFlip] = useState(true)
const { inputAmount, outputAmount, executionPrice } = trade
@@ -72,7 +90,9 @@ export function Trade({ trade }: { trade: InterfaceTrade<Currency, Currency, Tra
return (
<>
<RoutingTooltip />
<Tooltip placement="bottom" icon={Info}>
<RoutingDiagram trade={trade} />
</Tooltip>
<TextButton color="primary" onClick={() => setFlip(!flip)}>
{ratio}
</TextButton>

View File

@@ -1,14 +0,0 @@
import { Info } from 'lib/icons'
export default function RoutingTooltip() {
return <Info color="secondary" />
/* TODO(zzmp): Implement post-beta launch.
return (
<Tooltip icon={Info} placement="bottom">
<ThemeProvider>
<ThemedText.Subhead2>TODO: Routing Tooltip</ThemedText.Subhead2>
</ThemeProvider>
</Tooltip>
)
*/
}

View File

@@ -1,5 +1,6 @@
import { ALL_SUPPORTED_CHAIN_IDS } from 'constants/chains'
import { useIsAmountPopulated, useSwapInfo } from 'lib/hooks/swap'
import useWrapCallback, { WrapType } from 'lib/hooks/swap/useWrapCallback'
import useActiveWeb3React from 'lib/hooks/useActiveWeb3React'
import { largeIconCss } from 'lib/icons'
import { Field } from 'lib/state/swap'
@@ -25,7 +26,7 @@ export default function Toolbar({ disabled }: { disabled?: boolean }) {
} = useSwapInfo()
const isRouteLoading = state === TradeState.SYNCING || state === TradeState.LOADING
const isAmountPopulated = useIsAmountPopulated()
const { type: wrapType, loading: wrapLoading } = useWrapCallback()
const caption = useMemo(() => {
if (disabled) {
return <Caption.ConnectWallet />
@@ -36,6 +37,9 @@ export default function Toolbar({ disabled }: { disabled?: boolean }) {
}
if (inputCurrency && outputCurrency && isAmountPopulated) {
if (wrapType !== WrapType.NOT_APPLICABLE) {
return <Caption.WrapCurrency wrapType={wrapType} loading={wrapLoading} />
}
if (isRouteLoading) {
return <Caption.LoadingTrade />
}
@@ -51,7 +55,18 @@ export default function Toolbar({ disabled }: { disabled?: boolean }) {
}
return <Caption.Empty />
}, [balance, chainId, disabled, inputCurrency, isAmountPopulated, isRouteLoading, outputCurrency, trade])
}, [
balance,
chainId,
disabled,
inputCurrency,
isAmountPopulated,
isRouteLoading,
outputCurrency,
trade,
wrapLoading,
wrapType,
])
return (
<>

View File

@@ -0,0 +1,22 @@
import { Trans } from '@lingui/macro'
import { WrapError } from 'lib/hooks/swap/useWrapCallback'
import useNativeCurrency from 'lib/hooks/useNativeCurrency'
export function WrapErrorText({ wrapError }: { wrapError: WrapError }) {
const native = useNativeCurrency()
const wrapped = native?.wrapped
switch (wrapError) {
case WrapError.ENTER_NATIVE_AMOUNT:
return <Trans>Enter {native?.symbol} amount</Trans>
case WrapError.ENTER_WRAPPED_AMOUNT:
return <Trans>Enter {wrapped?.symbol} amount</Trans>
case WrapError.INSUFFICIENT_NATIVE_BALANCE:
return <Trans>Insufficient {native?.symbol} balance</Trans>
case WrapError.INSUFFICIENT_WRAPPED_BALANCE:
return <Trans>Insufficient {wrapped?.symbol} balance</Trans>
case WrapError.NO_ERROR:
default:
return null
}
}

View File

@@ -1,6 +1,5 @@
import { Trans } from '@lingui/macro'
import { TokenInfo } from '@uniswap/token-lists'
import { ALL_SUPPORTED_CHAIN_IDS } from 'constants/chains'
import { useAtom } from 'jotai'
import { SwapInfoUpdater } from 'lib/hooks/swap/useSwapInfo'
import useSyncConvenienceFee from 'lib/hooks/swap/useSyncConvenienceFee'
@@ -8,9 +7,10 @@ import useSyncSwapDefaults from 'lib/hooks/swap/useSyncSwapDefaults'
import { usePendingTransactions } from 'lib/hooks/transactions'
import useActiveWeb3React from 'lib/hooks/useActiveWeb3React'
import useHasFocus from 'lib/hooks/useHasFocus'
import useOnSupportedNetwork from 'lib/hooks/useOnSupportedNetwork'
import useTokenList, { useSyncTokenList } from 'lib/hooks/useTokenList'
import { displayTxHashAtom } from 'lib/state/swap'
import { SwapTransactionInfo, Transaction, TransactionType } from 'lib/state/transactions'
import { SwapTransactionInfo, Transaction, TransactionType, WrapTransactionInfo } from 'lib/state/transactions'
import { useMemo, useState } from 'react'
import Dialog from '../Dialog'
@@ -28,12 +28,18 @@ import Toolbar from './Toolbar'
export type DefaultAddress = string | { [chainId: number]: string | 'NATIVE' } | 'NATIVE'
function getSwapTx(txs: { [hash: string]: Transaction }, hash?: string): Transaction<SwapTransactionInfo> | undefined {
function getTransactionFromMap(
txs: { [hash: string]: Transaction },
hash?: string
): Transaction<SwapTransactionInfo | WrapTransactionInfo> | undefined {
if (hash) {
const tx = txs[hash]
if (tx?.info?.type === TransactionType.SWAP) {
return tx as Transaction<SwapTransactionInfo>
}
if (tx?.info?.type === TransactionType.WRAP) {
return tx as Transaction<WrapTransactionInfo>
}
}
return
}
@@ -54,35 +60,38 @@ export default function Swap(props: SwapProps) {
useSyncSwapDefaults(props)
useSyncConvenienceFee(props)
const { active, account, chainId } = useActiveWeb3React()
const { active, account } = useActiveWeb3React()
const [wrapper, setWrapper] = useState<HTMLDivElement | null>(null)
const [displayTxHash, setDisplayTxHash] = useAtom(displayTxHashAtom)
const pendingTxs = usePendingTransactions()
const displayTx = getSwapTx(pendingTxs, displayTxHash)
const displayTx = getTransactionFromMap(pendingTxs, displayTxHash)
const tokenList = useTokenList()
const onSupportedNetwork = useOnSupportedNetwork()
const isSwapSupported = useMemo(
() => Boolean(chainId && ALL_SUPPORTED_CHAIN_IDS.includes(chainId) && tokenList?.length),
[chainId, tokenList]
() => Boolean(active && onSupportedNetwork && tokenList?.length),
[active, onSupportedNetwork, tokenList?.length]
)
const focused = useHasFocus(wrapper)
const isInteractive = Boolean(active && onSupportedNetwork)
return (
<SwapPropValidator {...props}>
{isSwapSupported && <SwapInfoUpdater />}
<Header title={<Trans>Swap</Trans>}>
{active && <Wallet disabled={!account} onClick={props.onConnectWallet} />}
<Settings disabled={!active} />
<Settings disabled={!isInteractive} />
</Header>
<div ref={setWrapper}>
<BoundaryProvider value={wrapper}>
<Input disabled={!active} focused={focused} />
<ReverseButton disabled={!active} />
<Output disabled={!active} focused={focused}>
<Input disabled={!isInteractive} focused={focused} />
<ReverseButton disabled={!isInteractive} />
<Output disabled={!isInteractive} focused={focused}>
<Toolbar disabled={!active} />
<SwapButton disabled={!account} />
<SwapButton disabled={!isSwapSupported} />
</Output>
</BoundaryProvider>
</div>

View File

@@ -73,7 +73,6 @@ const TokenBalance = styled.div<{ isLoading: boolean }>`
background-color: ${({ theme, isLoading }) => isLoading && theme.secondary};
border-radius: 0.25em;
padding: 0.375em 0;
width: 1.5em;
`
function TokenOption({ index, value, style }: TokenOptionProps) {

View File

@@ -55,7 +55,7 @@ export function TokenSelectDialog({ value, onSelect }: TokenSelectDialogProps) {
// Give the balance-less tokens a small block period to avoid layout thrashing from re-sorting.
useEffect(() => {
if (!isLoaded) {
const timeout = setTimeout(() => setIsLoaded(true), 1500)
const timeout = setTimeout(() => setIsLoaded(true), 250)
return () => clearTimeout(timeout)
}
return

View File

@@ -1,7 +1,8 @@
import { Trans } from '@lingui/macro'
import { Wallet as WalletIcon } from 'lib/icons'
import styled, { ThemedText } from 'lib/theme'
import { ThemedText } from 'lib/theme'
import { TextButton } from './Button'
import Row from './Row'
interface WalletProps {
@@ -9,17 +10,15 @@ interface WalletProps {
onClick?: () => void
}
const ClickableRow = styled(Row)<{ onClick?: unknown }>`
cursor: ${({ onClick }) => onClick && 'pointer'};
`
export default function Wallet({ disabled, onClick }: WalletProps) {
return disabled ? (
<ThemedText.Caption color="secondary">
<ClickableRow gap={0.5} onClick={onClick}>
<WalletIcon />
<Trans>Connect your wallet</Trans>
</ClickableRow>
</ThemedText.Caption>
<TextButton disabled={!onClick} onClick={onClick} color="secondary" style={{ filter: 'none' }}>
<ThemedText.Caption>
<Row gap={0.5}>
<WalletIcon />
<Trans>Connect your wallet</Trans>
</Row>
</ThemedText.Caption>
</TextButton>
) : null
}

View File

@@ -1,10 +1,10 @@
import { initializeConnector, Web3ReactHooks } from '@web3-react/core'
import { initializeConnector } from '@web3-react/core'
import { EIP1193 } from '@web3-react/eip1193'
import { Actions, Connector, Provider as Eip1193Provider } from '@web3-react/types'
import { Url } from '@web3-react/url'
import { SetStateAction } from 'jotai'
import { RESET, useUpdateAtom } from 'jotai/utils'
import { injectedAtom, urlAtom } from 'lib/state/web3'
import { injectedAtom, urlAtom, Web3ReactState } from 'lib/state/web3'
import { ReactNode, useEffect } from 'react'
interface Web3ProviderProps {
@@ -16,12 +16,13 @@ interface Web3ProviderProps {
function useConnector<T extends { new (actions: Actions, initializer: I): Connector }, I>(
Connector: T,
initializer: I | undefined,
setContext: (update: typeof RESET | SetStateAction<[Connector, Web3ReactHooks]>) => void
setContext: (update: typeof RESET | SetStateAction<Web3ReactState>) => void
) {
return useEffect(() => {
if (initializer) {
const [connector, hooks] = initializeConnector((actions) => new Connector(actions, initializer))
setContext([connector, hooks])
const state = initializeConnector((actions) => new Connector(actions, initializer))
state[0].activate()
setContext(state)
} else {
setContext(RESET)
}

View File

@@ -1,5 +1,4 @@
import { Provider as EthersProvider } from '@ethersproject/abstract-provider'
import { Signer as EthersSigner } from '@ethersproject/abstract-signer'
import { Provider as Eip1193Provider } from '@web3-react/types'
import { DEFAULT_LOCALE, SupportedLocale } from 'constants/locales'
import { Provider as AtomProvider } from 'jotai'
@@ -35,12 +34,12 @@ const WidgetWrapper = styled.div<{ width?: number | string }>`
min-width: 300px;
padding: 0.25em;
position: relative;
user-select: none;
width: ${({ width }) => width && (isNaN(Number(width)) ? width : `${width}px`)};
* {
box-sizing: border-box;
font-family: ${({ theme }) => theme.fontFamily};
user-select: none;
@supports (font-variation-settings: normal) {
font-family: ${({ theme }) => theme.fontFamilyVariable};
@@ -94,7 +93,7 @@ function Updaters() {
export type WidgetProps = {
theme?: Theme
locale?: SupportedLocale
provider?: Eip1193Provider | EthersProvider | { provider: EthersProvider; signer: EthersSigner }
provider?: Eip1193Provider | EthersProvider
jsonRpcEndpoint?: string
width?: string | number
dialog?: HTMLElement | null

View File

@@ -1,14 +1,19 @@
import { initializeConnector } from '@web3-react/core'
import { MetaMask } from '@web3-react/metamask'
import { Connector } from '@web3-react/types'
import { WalletConnect } from '@web3-react/walletconnect'
import { SupportedChainId } from 'constants/chains'
import { INFURA_NETWORK_URLS } from 'constants/infura'
import { DEFAULT_LOCALE, SUPPORTED_LOCALES } from 'constants/locales'
import Widget from 'lib/components/Widget'
import { darkTheme, defaultTheme, lightTheme } from 'lib/theme'
import { ReactNode, useEffect, useMemo } from 'react'
import { ReactNode, useEffect, useState } from 'react'
import { useSelect, useValue } from 'react-cosmos/fixture'
export const [metaMask] = initializeConnector<MetaMask>((actions) => new MetaMask(actions))
const [metaMask] = initializeConnector<MetaMask>((actions) => new MetaMask(actions))
const [walletConnect] = initializeConnector<WalletConnect>(
(actions) => new WalletConnect(actions, { rpc: INFURA_NETWORK_URLS })
)
export default function Wrapper({ children }: { children: ReactNode }) {
const [width] = useValue('width', { defaultValue: 360 })
@@ -27,21 +32,40 @@ export default function Wrapper({ children }: { children: ReactNode }) {
options: [NO_JSON_RPC, ...Object.values(INFURA_NETWORK_URLS).sort()],
})
const NO_PROVIDER = 'None'
const NO_CONNECTOR = 'None'
const META_MASK = 'MetaMask'
const [providerType] = useSelect('Provider', {
defaultValue: NO_PROVIDER,
options: [NO_PROVIDER, META_MASK],
const WALLET_CONNECT = 'WalletConnect'
const [connectorType] = useSelect('Provider', {
defaultValue: NO_CONNECTOR,
options: [NO_CONNECTOR, META_MASK, WALLET_CONNECT],
})
const provider = useMemo(() => {
switch (providerType) {
case META_MASK:
metaMask.activate()
return metaMask.provider
default:
return undefined
const [connector, setConnector] = useState<Connector>()
useEffect(() => {
let stale = false
activateConnector(connectorType)
return () => {
stale = true
}
}, [providerType])
async function activateConnector(connectorType: 'None' | 'MetaMask' | 'WalletConnect') {
let connector: Connector
switch (connectorType) {
case META_MASK:
await metaMask.activate()
connector = metaMask
break
case WALLET_CONNECT:
await walletConnect.activate()
connector = walletConnect
}
if (!stale) {
setConnector((oldConnector) => {
oldConnector?.deactivate?.()
return connector
})
}
}
}, [connectorType])
return (
<Widget
@@ -49,7 +73,7 @@ export default function Wrapper({ children }: { children: ReactNode }) {
theme={theme}
locale={locale}
jsonRpcEndpoint={jsonRpcEndpoint === NO_JSON_RPC ? undefined : jsonRpcEndpoint}
provider={provider}
provider={connector?.provider}
>
{children}
</Widget>

View File

@@ -4,7 +4,9 @@ import JSBI from 'jsbi'
import { GetQuoteResult } from 'state/routing/types'
import { transformSwapRouteToGetQuoteResult } from 'utils/transformSwapRouteToGetQuoteResult'
export const AUTO_ROUTER_SUPPORTED_CHAINS: ChainId[] = Object.values(ChainId) as number[]
export const AUTO_ROUTER_SUPPORTED_CHAINS: ChainId[] = Object.values(ChainId).filter((chainId): chainId is ChainId =>
Number.isInteger(chainId)
)
async function getQuote(
{

View File

@@ -7,6 +7,7 @@ import { useEffect, useMemo, useState } from 'react'
import { GetQuoteResult, InterfaceTrade, TradeState } from 'state/routing/types'
import { computeRoutes, transformRoutesToTrade } from 'state/routing/utils'
import useWrapCallback, { WrapType } from '../swap/useWrapCallback'
import useActiveWeb3React from '../useActiveWeb3React'
import { getClientSideQuote } from './clientSideSmartOrderRouter'
import { useRoutingAPIArguments } from './useRoutingAPIArguments'
@@ -74,9 +75,13 @@ export default function useClientSideSmartOrderRouterTrade<TTradeType extends Tr
error?: unknown
}>({ error: undefined })
const config = useMemo(() => getConfig(chainId), [chainId])
const { type: wrapType } = useWrapCallback()
// When arguments update, make a new call to SOR for updated quote
useEffect(() => {
if (wrapType !== WrapType.NOT_APPLICABLE) {
return
}
setLoading(true)
if (isDebouncing) return
@@ -101,7 +106,7 @@ export default function useClientSideSmartOrderRouterTrade<TTradeType extends Tr
}
}
}
}, [queryArgs, params, config, isDebouncing])
}, [queryArgs, params, config, isDebouncing, wrapType])
const route = useMemo(
() => computeRoutes(currencyIn, currencyOut, tradeType, quoteResult),

View File

@@ -17,7 +17,7 @@ import { useBestTrade } from './useBestTrade'
interface SwapInfo {
currencies: { [field in Field]?: Currency }
currencyBalances: { [field in Field]?: CurrencyAmount<Currency> }
currencyAmounts: { [field in Field]?: CurrencyAmount<Currency> }
tradeCurrencyAmounts: { [field in Field]?: CurrencyAmount<Currency> }
trade: {
trade?: InterfaceTrade<Currency, Currency, TradeType>
state: TradeState
@@ -52,7 +52,7 @@ function useComputeSwapInfo(): SwapInfo {
useMemo(() => [inputCurrency ?? undefined, outputCurrency ?? undefined], [inputCurrency, outputCurrency])
)
const isExactIn: boolean = independentField === Field.INPUT
const isExactIn = independentField === Field.INPUT
const parsedAmount = useMemo(
() => tryParseCurrencyAmount(amount, (isExactIn ? inputCurrency : outputCurrency) ?? undefined),
[inputCurrency, isExactIn, outputCurrency, amount]
@@ -81,7 +81,7 @@ function useComputeSwapInfo(): SwapInfo {
[relevantTokenBalances]
)
const currencyAmounts = useMemo(
const tradeCurrencyAmounts = useMemo(
() => ({
[Field.INPUT]: trade.trade?.inputAmount,
[Field.OUTPUT]: trade.trade?.outputAmount,
@@ -129,21 +129,21 @@ function useComputeSwapInfo(): SwapInfo {
() => ({
currencies,
currencyBalances,
currencyAmounts,
inputError,
trade,
tradeCurrencyAmounts,
allowedSlippage,
feeOptions,
}),
[currencies, currencyBalances, currencyAmounts, inputError, trade, allowedSlippage, feeOptions]
[currencies, currencyBalances, inputError, trade, tradeCurrencyAmounts, allowedSlippage, feeOptions]
)
}
const swapInfoAtom = atom<SwapInfo>({
currencies: {},
currencyBalances: {},
currencyAmounts: {},
trade: { state: TradeState.INVALID },
tradeCurrencyAmounts: {},
allowedSlippage: new Percent(0),
feeOptions: undefined,
})

View File

@@ -0,0 +1,137 @@
import { ContractTransaction } from '@ethersproject/contracts'
import { useWETHContract } from 'hooks/useContract'
import { atom, useAtom } from 'jotai'
import { useAtomValue } from 'jotai/utils'
import { Field, swapAtom } from 'lib/state/swap'
import tryParseCurrencyAmount from 'lib/utils/tryParseCurrencyAmount'
import { useCallback, useEffect, useMemo } from 'react'
import { WRAPPED_NATIVE_CURRENCY } from '../../../constants/tokens'
import useActiveWeb3React from '../useActiveWeb3React'
import { useCurrencyBalances } from '../useCurrencyBalance'
export enum WrapType {
NOT_APPLICABLE,
WRAP,
UNWRAP,
}
interface UseWrapCallbackReturns {
callback: () => Promise<ContractTransaction>
error: WrapError
loading: boolean
type: WrapType
}
export enum WrapError {
NO_ERROR = 0, // must be equal to 0 so all other errors are truthy
ENTER_NATIVE_AMOUNT,
ENTER_WRAPPED_AMOUNT,
INSUFFICIENT_NATIVE_BALANCE,
INSUFFICIENT_WRAPPED_BALANCE,
}
interface WrapState {
loading: boolean
error: WrapError
}
const wrapState = atom<WrapState>({
loading: false,
error: WrapError.NO_ERROR,
})
export default function useWrapCallback(): UseWrapCallbackReturns {
const { account, chainId } = useActiveWeb3React()
const [{ loading, error }, setWrapState] = useAtom(wrapState)
const wrappedNativeCurrencyContract = useWETHContract()
const {
amount,
independentField,
[Field.INPUT]: inputCurrency,
[Field.OUTPUT]: outputCurrency,
} = useAtomValue(swapAtom)
const wrapType = useMemo(() => {
if (!inputCurrency || !outputCurrency || !chainId) {
return WrapType.NOT_APPLICABLE
}
const wrappedNativeCurrency = WRAPPED_NATIVE_CURRENCY[chainId]
if (inputCurrency.isNative && wrappedNativeCurrency.equals(outputCurrency)) {
return WrapType.WRAP
}
if (wrappedNativeCurrency.equals(inputCurrency) && outputCurrency.isNative) {
return WrapType.UNWRAP
}
return WrapType.NOT_APPLICABLE
}, [chainId, inputCurrency, outputCurrency])
const isExactIn = independentField === Field.INPUT
const parsedAmount = useMemo(
() => tryParseCurrencyAmount(amount, (isExactIn ? inputCurrency : outputCurrency) ?? undefined),
[inputCurrency, isExactIn, outputCurrency, amount]
)
const parsedAmountIn = isExactIn ? parsedAmount : undefined
const relevantTokenBalances = useCurrencyBalances(
account,
useMemo(() => [inputCurrency ?? undefined, outputCurrency ?? undefined], [inputCurrency, outputCurrency])
)
const currencyBalances = useMemo(
() => ({
[Field.INPUT]: relevantTokenBalances[0],
[Field.OUTPUT]: relevantTokenBalances[1],
}),
[relevantTokenBalances]
)
const hasInputAmount = Boolean(parsedAmount?.greaterThan('0'))
const sufficientBalance = parsedAmountIn && !currencyBalances[Field.INPUT]?.lessThan(parsedAmountIn)
useEffect(() => {
if (sufficientBalance) {
setWrapState((state) => ({ ...state, error: WrapError.NO_ERROR }))
} else if (wrapType === WrapType.WRAP) {
setWrapState((state) => ({
...state,
error: hasInputAmount ? WrapError.INSUFFICIENT_NATIVE_BALANCE : WrapError.ENTER_NATIVE_AMOUNT,
}))
} else if (wrapType === WrapType.UNWRAP) {
setWrapState((state) => ({
...state,
error: hasInputAmount ? WrapError.INSUFFICIENT_WRAPPED_BALANCE : WrapError.ENTER_WRAPPED_AMOUNT,
}))
}
}, [hasInputAmount, setWrapState, sufficientBalance, wrapType])
const callback = useCallback(async () => {
if (!parsedAmountIn) {
return Promise.reject('Must provide an input amount to wrap.')
}
if (wrapType === WrapType.NOT_APPLICABLE) {
return Promise.reject('Wrapping not applicable to this asset.')
}
if (!sufficientBalance) {
return Promise.reject('Insufficient balance to wrap desired amount.')
}
if (!wrappedNativeCurrencyContract) {
return Promise.reject('Wrap contract not found.')
}
setWrapState((state) => ({ ...state, loading: true }))
const result = await (wrapType === WrapType.WRAP
? wrappedNativeCurrencyContract.deposit({ value: `0x${parsedAmountIn.quotient.toString(16)}` })
: wrappedNativeCurrencyContract.withdraw(`0x${parsedAmountIn.quotient.toString(16)}`))
// resolve loading state after one confirmation
result.wait(1).finally(() => setWrapState((state) => ({ ...state, loading: false })))
return Promise.resolve(result)
}, [wrappedNativeCurrencyContract, sufficientBalance, parsedAmountIn, wrapType, setWrapState])
return useMemo(
() => ({
callback,
error,
loading,
type: wrapType,
}),
[callback, error, loading, wrapType]
)
}

View File

@@ -25,7 +25,8 @@ function useBlock() {
useEffect(() => {
if (library && chainId && windowVisible) {
setState({ chainId })
// If chainId hasn't changed, don't clear the block. This prevents re-fetching still valid data.
setState((state) => (state.chainId === chainId ? state : { chainId }))
library
.getBlockNumber()

View File

@@ -7,9 +7,10 @@ import { NEVER_RELOAD, useSingleCallResult } from 'lib/hooks/multicall'
import useNativeCurrency from 'lib/hooks/useNativeCurrency'
import { useMemo } from 'react'
import { TOKEN_SHORTHANDS } from '../../constants/tokens'
import { isAddress } from '../../utils'
import { useTokenMap } from './useTokenList'
import { TokenMap } from './useTokenList'
import { supportedChainId } from '../../utils/supportedChainId'
import { TokenMap, useTokenMap } from './useTokenList'
// parse a name or symbol from a token response
const BYTES32_REGEX = /^0x[a-fA-F0-9]{64}$/
@@ -28,35 +29,27 @@ function parseStringOrBytes32(str: string | undefined, bytes32: string | undefin
* Returns null if token is loading or null was passed.
* Returns undefined if tokenAddress is invalid or token does not exist.
*/
export function useTokenFromMap(tokens: TokenMap, tokenAddress?: string | null): Token | null | undefined {
export function useTokenFromNetwork(tokenAddress: string | null | undefined): Token | null | undefined {
const { chainId } = useActiveWeb3React()
const address = isAddress(tokenAddress)
const formattedAddress = isAddress(tokenAddress)
const tokenContract = useTokenContract(address ? address : undefined, false)
const tokenContractBytes32 = useBytes32TokenContract(address ? address : undefined, false)
const token: Token | undefined = address ? tokens[address] : undefined
const tokenContract = useTokenContract(formattedAddress ? formattedAddress : undefined, false)
const tokenContractBytes32 = useBytes32TokenContract(formattedAddress ? formattedAddress : undefined, false)
const tokenName = useSingleCallResult(token ? undefined : tokenContract, 'name', undefined, NEVER_RELOAD)
const tokenNameBytes32 = useSingleCallResult(
token ? undefined : tokenContractBytes32,
'name',
undefined,
NEVER_RELOAD
)
const symbol = useSingleCallResult(token ? undefined : tokenContract, 'symbol', undefined, NEVER_RELOAD)
const symbolBytes32 = useSingleCallResult(token ? undefined : tokenContractBytes32, 'symbol', undefined, NEVER_RELOAD)
const decimals = useSingleCallResult(token ? undefined : tokenContract, 'decimals', undefined, NEVER_RELOAD)
const tokenName = useSingleCallResult(tokenContract, 'name', undefined, NEVER_RELOAD)
const tokenNameBytes32 = useSingleCallResult(tokenContractBytes32, 'name', undefined, NEVER_RELOAD)
const symbol = useSingleCallResult(tokenContract, 'symbol', undefined, NEVER_RELOAD)
const symbolBytes32 = useSingleCallResult(tokenContractBytes32, 'symbol', undefined, NEVER_RELOAD)
const decimals = useSingleCallResult(tokenContract, 'decimals', undefined, NEVER_RELOAD)
return useMemo(() => {
if (token) return token
if (tokenAddress === null) return null
if (!chainId || !address) return undefined
if (typeof tokenAddress !== 'string' || !chainId || !formattedAddress) return undefined
if (decimals.loading || symbol.loading || tokenName.loading) return null
if (decimals.result) {
return new Token(
chainId,
address,
formattedAddress,
decimals.result[0],
parseStringOrBytes32(symbol.result?.[0], symbolBytes32.result?.[0], 'UNKNOWN'),
parseStringOrBytes32(tokenName.result?.[0], tokenNameBytes32.result?.[0], 'Unknown Token')
@@ -64,14 +57,13 @@ export function useTokenFromMap(tokens: TokenMap, tokenAddress?: string | null):
}
return undefined
}, [
address,
formattedAddress,
chainId,
decimals.loading,
decimals.result,
symbol.loading,
symbol.result,
symbolBytes32.result,
token,
tokenAddress,
tokenName.loading,
tokenName.result,
@@ -79,6 +71,20 @@ export function useTokenFromMap(tokens: TokenMap, tokenAddress?: string | null):
])
}
/**
* Returns a Token from the tokenAddress.
* Returns null if token is loading or null was passed.
* Returns undefined if tokenAddress is invalid or token does not exist.
*/
export function useTokenFromMapOrNetwork(tokens: TokenMap, tokenAddress?: string | null): Token | null | undefined {
const address = isAddress(tokenAddress)
const token: Token | undefined = address ? tokens[address] : undefined
const tokenFromNetwork = useTokenFromNetwork(token ? undefined : address ? address : undefined)
return tokenFromNetwork ?? token
}
/**
* Returns a Token from the tokenAddress.
* Returns null if token is loading or null was passed.
@@ -86,7 +92,7 @@ export function useTokenFromMap(tokens: TokenMap, tokenAddress?: string | null):
*/
export function useToken(tokenAddress?: string | null): Token | null | undefined {
const tokens = useTokenMap()
return useTokenFromMap(tokens, tokenAddress)
return useTokenFromMapOrNetwork(tokens, tokenAddress)
}
/**
@@ -96,8 +102,14 @@ export function useToken(tokenAddress?: string | null): Token | null | undefined
*/
export function useCurrencyFromMap(tokens: TokenMap, currencyId?: string | null): Currency | null | undefined {
const nativeCurrency = useNativeCurrency()
const { chainId } = useActiveWeb3React()
const isNative = Boolean(nativeCurrency && currencyId?.toUpperCase() === 'ETH')
const token = useTokenFromMap(tokens, isNative ? undefined : currencyId)
const shorthandMatchAddress = useMemo(() => {
const chain = supportedChainId(chainId)
return chain && currencyId ? TOKEN_SHORTHANDS[currencyId.toUpperCase()]?.[chain] : undefined
}, [chainId, currencyId])
const token = useTokenFromMapOrNetwork(tokens, isNative ? undefined : shorthandMatchAddress ?? currencyId)
if (currencyId === null || currencyId === undefined) return currencyId

View File

@@ -1,6 +1,6 @@
import { Currency } from '@uniswap/sdk-core'
import { useTheme } from 'lib/theme'
import Vibrant from 'node-vibrant/lib/bundle'
import Vibrant from 'node-vibrant/lib/bundle.js'
import { useEffect, useLayoutEffect, useState } from 'react'
import useCurrencyLogoURIs from './useCurrencyLogoURIs'

View File

@@ -1,8 +1,7 @@
import { Provider as EthersProvider } from '@ethersproject/abstract-provider'
import { Signer as EthersSigner } from '@ethersproject/abstract-signer'
import { VoidSigner } from '@ethersproject/abstract-signer'
import { Eip1193Bridge as ExperimentalEip1193Bridge } from '@ethersproject/experimental'
import { JsonRpcProvider } from '@ethersproject/providers'
import { JsonRpcProvider, JsonRpcSigner } from '@ethersproject/providers'
import { Provider as Eip1193Provider } from '@web3-react/types'
import { ZERO_ADDRESS } from 'constants/misc'
import { useMemo } from 'react'
@@ -17,32 +16,42 @@ class Eip1193Bridge extends ExperimentalEip1193Bridge {
const result = await this.provider.getNetwork()
return '0x' + result.chainId.toString(16)
}
case 'eth_sendTransaction': {
if (!this.signer) break
// TODO(zzmp): JsonRpcProvider filters from/gas fields from the params.
const req = JsonRpcProvider.hexlifyTransaction(params?.[0], { from: true, gas: true })
const tx = await this.signer.sendTransaction(req)
return tx.hash
}
default:
return super.send(method, params)
}
}
}
interface EthersSigningProvider extends EthersProvider {
getSigner(): JsonRpcSigner
}
export default function useEip1193Provider(
provider?: Eip1193Provider | EthersProvider | JsonRpcProvider | { provider: EthersProvider; signer: EthersSigner }
provider?: Eip1193Provider | EthersSigningProvider | EthersProvider
): Eip1193Provider | undefined {
return useMemo(() => {
if (provider) {
if (provider instanceof EthersProvider) {
// A JsonRpcProvider includes its own Signer, otherwise use a VoidSigner.
if (EthersProvider.isProvider(provider)) {
const signer = 'getSigner' in provider ? provider.getSigner() : null ?? voidSigner
return new Eip1193Bridge(signer, provider)
}
if ('provider' in provider && 'signer' in provider) {
return new Eip1193Bridge(provider.signer, provider.provider)
}
// See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1193.md.
if ('request' in provider && 'on' in provider && 'removeListener' in provider) {
return provider
} else if (EthersProvider.isProvider((provider as ExperimentalEip1193Bridge).provider)) {
/*
* Direct users to use our own wrapper to avoid any pitfalls:
* - Eip1193Bridge is experimental
* - signer is not straightforward
* - bugs out if chainId>8
*/
throw new Error('Eip1193Bridge is experimental: pass your ethers Provider directly')
}
}
return
return provider
}, [provider])
}

View File

@@ -1,7 +1,7 @@
import { useCallback, useEffect, useState } from 'react'
export default function useHasFocus(node: Node | null | undefined): boolean {
const [hasFocus, setHasFocus] = useState(node?.contains(document.activeElement) ?? false)
const [hasFocus, setHasFocus] = useState(node?.contains(document?.activeElement) ?? false)
const onFocus = useCallback(() => setHasFocus(true), [])
const onBlur = useCallback((e) => setHasFocus(node?.contains(e.relatedTarget) ?? false), [node])
useEffect(() => {

View File

@@ -0,0 +1,11 @@
import { ALL_SUPPORTED_CHAIN_IDS } from 'constants/chains'
import { useMemo } from 'react'
import useActiveWeb3React from './useActiveWeb3React'
function useOnSupportedNetwork() {
const { chainId } = useActiveWeb3React()
return useMemo(() => chainId && ALL_SUPPORTED_CHAIN_IDS.includes(chainId), [chainId])
}
export default useOnSupportedNetwork

View File

@@ -82,7 +82,8 @@ export async function dynamicActivate(locale: SupportedLocale) {
// see https://github.com/lingui/js-lingui/issues/388#issuecomment-497779030
const catalog =
locale === DEFAULT_LOCALE ? DEFAULT_CATALOG : await import(`${process.env.REACT_APP_LOCALES}/${locale}`)
i18n.load(locale, catalog.messages)
// Bundlers will either export it as default or as a named export named default.
i18n.load(locale, catalog.messages || catalog.default.messages)
i18n.activate(locale)
}

View File

@@ -1,3 +1,4 @@
import { ReactComponent as RouterIcon } from 'lib/assets/svg/auto_router.svg'
import { ReactComponent as CheckIcon } from 'lib/assets/svg/check.svg'
import { ReactComponent as ExpandoIcon } from 'lib/assets/svg/expando.svg'
import { ReactComponent as LogoIcon } from 'lib/assets/svg/logo.svg'
@@ -82,6 +83,7 @@ export const Clock = icon(ClockIcon)
export const HelpCircle = icon(HelpCircleIcon)
export const Info = icon(InfoIcon)
export const Link = icon(LinkIcon)
export const AutoRouter = icon(RouterIcon)
export const Settings = icon(SettingsIcon)
export const Slash = icon(SlashIcon)
export const Trash2 = icon(Trash2Icon)

View File

@@ -1,5 +1,7 @@
import Swap, { SwapProps } from './components/Swap'
import Widget, { WidgetProps } from './components/Widget'
export { darkTheme, lightTheme } from './theme'
export type { Theme } from './theme/theme'
export { SUPPORTED_LOCALES } from 'constants/locales'
type SwapWidgetProps = SwapProps & WidgetProps

View File

@@ -5,6 +5,7 @@ import { atomWithImmer } from 'jotai/immer'
export enum TransactionType {
APPROVAL,
SWAP,
WRAP,
}
interface BaseTransactionInfo {
@@ -37,7 +38,14 @@ export interface OutputSwapTransactionInfo extends SwapTransactionInfo {
maximumInputCurrencyAmount: string
}
export type TransactionInfo = ApprovalTransactionInfo | SwapTransactionInfo
export interface WrapTransactionInfo extends BaseTransactionInfo {
type: TransactionType.WRAP
unwrapped: boolean
currencyAmountRaw: string
chainId?: number
}
export type TransactionInfo = ApprovalTransactionInfo | SwapTransactionInfo | WrapTransactionInfo
export interface Transaction<T extends TransactionInfo = TransactionInfo> {
addedTime: number

View File

@@ -1,11 +1,11 @@
import { initializeConnector, Web3ReactHooks } from '@web3-react/core'
import { EMPTY } from '@web3-react/empty'
import { Connector } from '@web3-react/types'
import { Connector, Web3ReactStore } from '@web3-react/types'
import { atomWithDefault } from 'jotai/utils'
export type Web3ReactState = [Connector, Web3ReactHooks, Web3ReactStore]
const EMPTY_CONNECTOR = initializeConnector(() => EMPTY)
export type Web3ReactState = [Connector, Web3ReactHooks]
export const urlAtom = atomWithDefault<Web3ReactState>(() => EMPTY_CONNECTOR)
export const injectedAtom = atomWithDefault<Web3ReactState>(() => EMPTY_CONNECTOR)

View File

@@ -1,4 +1,5 @@
export enum Layer {
UNDERLAYER = -1,
OVERLAY = 100,
DIALOG = 1000,
TOOLTIP = 2000,

View File

@@ -1,5 +1,5 @@
/* eslint-disable no-restricted-imports */
import styled, {
import styledDefault, {
css as styledCss,
keyframes as styledKeyframes,
ThemedBaseStyledInterface,
@@ -11,8 +11,13 @@ import styled, {
import { ComputedTheme } from './theme'
export default styled as unknown as ThemedBaseStyledInterface<ComputedTheme>
export const css = styledCss as unknown as ThemedCssFunction<ComputedTheme>
export const keyframes = styledKeyframes
export const useTheme = useStyled as unknown as () => ComputedTheme
export const ThemedProvider = StyledProvider as unknown as ThemeProviderComponent<ComputedTheme>
// nextjs imports all of styled-components/macro instead of its default. Check for and resolve this at runtime.
const styled = (styledDefault instanceof Function
? styledDefault
: (styledDefault as { default: typeof styledDefault }).default) as unknown as ThemedBaseStyledInterface<ComputedTheme>
export default styled

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-11 04:07\n"
"PO-Revision-Date: 2022-03-02 19:10\n"
"Last-Translator: \n"
"Language: af_ZA\n"
"Language-Team: Afrikaans\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "'N Fout het voorgekom tydens die uitvoering van hierdie ruil. U moet dalk u glyverdraagsaamheid verhoog. As dit nie werk nie, kan daar 'n onversoenbaarheid wees met die teken wat u verhandel. Opmerking: fooi vir oordrag en herbasis-tokens is nie versoenbaar met Uniswap V3 nie."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "Goedkeuring hangende <0/>"
msgid "Approval pending"
msgstr "Goedkeuring hangende"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -288,6 +288,10 @@ msgstr "Minstens {0} {1} en {2} {3} sal aan u beursie terugbetaal word weens die
msgid "Auto"
msgstr "Outomaties"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "Outo-roeteerder"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "Auto Router API"
@@ -747,6 +751,8 @@ msgstr "Voer geldige tekenadres in"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "Voer {0} bedrag in"
@@ -959,6 +965,8 @@ msgstr "Onvoldoende likiditeit in die swembad vir jou handel"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1700,6 +1708,10 @@ msgstr "Ruil <0/> vir presies <1/>"
msgid "Swap Anyway"
msgstr "Ruil in elk geval"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "Ruil bevestig"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "Ruil besonderhede uit"
@@ -1713,6 +1725,10 @@ msgstr "Ruil presies <0/> vir <1/>"
msgid "Swap failed: {0}"
msgstr "Ruil misluk: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "Ruil hangende"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "Ruil opsomming"
@@ -1906,6 +1922,10 @@ msgstr "Transaksie ingedien"
msgid "Transaction completed in"
msgstr "Transaksie voltooi in"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "Transaksie is bevestig"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "Transaksie hangende"
msgid "Transaction rejected."
msgstr "Transaksie verwerp."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "Transaksie ingedien"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "Oordragtoken"
@@ -2044,6 +2060,7 @@ msgstr "Nie-ondersteunde netwerk - skakel oor na 'n ander om handel te dryf."
msgid "Untitled"
msgstr "Naamloos"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "Maak oop"
@@ -2052,6 +2069,22 @@ msgstr "Maak oop"
msgid "Unwrap <0/> to {0}"
msgstr "Pak <0/> tot {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "Ontwikkel bevestig"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "Ontwikkel inheemse geldeenheid."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "Ontwikkel hangende"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "Ontwikkel inheemse geldeenheid."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "Delegasie op te dateer"
@@ -2220,6 +2253,7 @@ msgstr "Onttrek {0} UNI-V2"
msgid "Withdrew UNI-V2!"
msgstr "UNI-V2 onttrek!"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "Draai toe"
@@ -2228,6 +2262,22 @@ msgstr "Draai toe"
msgid "Wrap <0/> to {0}"
msgstr "Wikkel <0/> tot {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "Wrap bevestig"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "Wikkel inheemse geldeenheid."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "Wikkel hangende"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "Omhul inheemse geldeenheid."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "via {0}"
msgid "via {0} token list"
msgstr "via {0} tekenlys"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {Beste roete via 1 hop} other {Beste roete via # hops}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {Invoer token} other {Voer tokens in}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {Voer teken in} other {Voer tekens in}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-11 04:07\n"
"PO-Revision-Date: 2022-03-02 19:10\n"
"Last-Translator: \n"
"Language: ar_SA\n"
"Language-Team: Arabic\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "حدث خطأ أثناء محاولة تنفيذ هذا التبادل. قد تحتاج إلى زيادة تحملك للانزلاق. إذا لم يفلح ذلك ، فقد يكون هناك عدم توافق مع الرمز الذي تتداوله. ملاحظة: رسوم النقل وإعادة الرموز المميزة غير متوافقة مع Uniswap V3."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "الموافقة معلقة <0/>"
msgid "Approval pending"
msgstr "في انتظار الموافقة"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -288,6 +288,10 @@ msgstr "سيتم استرداد {0} {1} و {2} {3} على الأقل إلى مح
msgid "Auto"
msgstr "تلقائي"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "جهاز التوجيه التلقائي"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "API جهاز التوجيه التلقائي"
@@ -747,6 +751,8 @@ msgstr "أدخل عنوان رمز صالح"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "أدخل مبلغ {0}"
@@ -959,6 +965,8 @@ msgstr "سيولة غير كافية في المجمع لتداولك"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1700,6 +1708,10 @@ msgstr "استبدل <0 /> بـ <1 /> بالضبط"
msgid "Swap Anyway"
msgstr "مبادلة على أي حال"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "تم تأكيد المبادلة"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "تفاصيل المبادلة"
@@ -1713,6 +1725,10 @@ msgstr "استبدل بالضبط <0 /> بـ <1 />"
msgid "Swap failed: {0}"
msgstr "فشل المبادلة: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "المبادلة معلقة"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "ملخص المبادلة"
@@ -1906,6 +1922,10 @@ msgstr "تم إرسال المعاملة"
msgid "Transaction completed in"
msgstr "اكتملت المعاملة في"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "تم تأكيد الصفقة"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "المعاملة معلقة"
msgid "Transaction rejected."
msgstr "الصفقة مرفوضة."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "تم إرسال المعاملة"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "رمز التحويل"
@@ -2044,6 +2060,7 @@ msgstr "شبكة غير مدعومة - قم بالتبديل إلى شبكة أ
msgid "Untitled"
msgstr "بدون عنوان"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "Unwrap"
@@ -2052,6 +2069,22 @@ msgstr "Unwrap"
msgid "Unwrap <0/> to {0}"
msgstr "قم بفك التفاف <0/> إلى {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "أكد Unwrap"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "فك العملة المحلية."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "فك التفاف معلق"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "فك التفاف العملة المحلية."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "تحديث التفويض"
@@ -2220,6 +2253,7 @@ msgstr "سحب {0} UNI-V2"
msgid "Withdrew UNI-V2!"
msgstr "سحب UNI-V2!"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "التفاف"
@@ -2228,6 +2262,22 @@ msgstr "التفاف"
msgid "Wrap <0/> to {0}"
msgstr "لف من <0/> إلى {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "أكد التفاف"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "لف العملة المحلية."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "التفاف معلق"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "التفاف العملة المحلية."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "عبر {0}"
msgid "via {0} token list"
msgstr "عبر قائمة الرموز {0}"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {أفضل طريق عبر قفزة واحدة} other {أفضل مسار عبر # قفزات}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {استيراد رمز} other {استيراد رموز}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {رمز الاستيراد} other {استيراد الرموز}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-11 04:07\n"
"PO-Revision-Date: 2022-03-02 19:11\n"
"Last-Translator: \n"
"Language: ca_ES\n"
"Language-Team: Catalan\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "S'ha produït un error en intentar executar aquest intercanvi. És possible que hàgiu d'augmentar la tolerància a la relliscada. Si això no funciona, és possible que hi hagi una incompatibilitat amb el testimoni que esteu negociant. Nota: els tokens de transferència i rebase no són compatibles amb Uniswap V3."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "Aprovació pendent <0/>"
msgid "Approval pending"
msgstr "Aprovació pendent"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -288,6 +288,10 @@ msgstr "Com a mínim {0} {1} i {2} {3} seran reemborsats a la cartera a causa de
msgid "Auto"
msgstr "Automàtic"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "Encaminador automàtic"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "Auto Router API"
@@ -747,6 +751,8 @@ msgstr "Introduïu una adreça de fitxa vàlida"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "Introduïu {0} import"
@@ -959,6 +965,8 @@ msgstr "Liquiditat insuficient al pool per al vostre comerç"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1700,6 +1708,10 @@ msgstr "Canvieu <0 /> per <1 /> exactament"
msgid "Swap Anyway"
msgstr "Intercanviar de totes maneres"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "Canvi confirmat"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "Intercanviar detalls"
@@ -1713,6 +1725,10 @@ msgstr "Canvieu exactament <0 /> per <1 />"
msgid "Swap failed: {0}"
msgstr "Ha fallat l'intercanvi: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "Canvi pendent"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "Resum d'intercanvi"
@@ -1906,6 +1922,10 @@ msgstr "Transacció enviada"
msgid "Transaction completed in"
msgstr "Transacció finalitzada el"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "Transacció confirmada"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "Transacció pendent"
msgid "Transaction rejected."
msgstr "S'ha rebutjat la transacció."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "Transacció enviada"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "Transferir el testimoni"
@@ -2044,6 +2060,7 @@ msgstr "Xarxa no compatible: canvieu a una altra per operar."
msgid "Untitled"
msgstr "Sense títol"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "Desembolicar"
@@ -2052,6 +2069,22 @@ msgstr "Desembolicar"
msgid "Unwrap <0/> to {0}"
msgstr "Desembolica de <0/> a {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "Desembolcall confirmat"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "Desembolica la moneda nativa."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "Desembolcall pendent"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "Desembolcall de la moneda nativa."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "Actualitza la delegació"
@@ -2220,6 +2253,7 @@ msgstr "Retirant {0} UNI-V2"
msgid "Withdrew UNI-V2!"
msgstr "Va retirar UNI-V2!"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "Embolicar"
@@ -2228,6 +2262,22 @@ msgstr "Embolicar"
msgid "Wrap <0/> to {0}"
msgstr "Embolcalla de <0/> a {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "Embolcall confirmat"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "Embolica la moneda nativa."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "Embolcall pendent"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "Embolcall de moneda nativa."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "mitjançant {0}"
msgid "via {0} token list"
msgstr "mitjançant la llista de tokens {0}"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {La millor ruta amb 1 salt} other {La millor ruta amb # hops}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {Importa el testimoni.} other {Importeu fitxes.}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {Fitxa d'importació} other {Importa fitxes}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-11 04:07\n"
"PO-Revision-Date: 2022-03-02 19:11\n"
"Last-Translator: \n"
"Language: cs_CZ\n"
"Language-Team: Czech\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "Při pokusu o provedení tohoto swapu došlo k chybě. Možná budete muset zvýšit toleranci skluzu. Pokud to nefunguje, může dojít k nekompatibilitě s tokenem, s nímž obchodujete. Poznámka: Poplatky za tokeny za převody a rebase nejsou kompatibilní s Uniswap V3."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "Čeká na schválení <0/>"
msgid "Approval pending"
msgstr "Čeká se na schválení"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -288,6 +288,10 @@ msgstr "Alespoň {0} {1} a {2} {3} budou kvůli vybranému cenovému rozpětí v
msgid "Auto"
msgstr "Automaticky"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "Auto Router"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "Auto Router API"
@@ -747,6 +751,8 @@ msgstr "Zadejte platnou adresu žetonu"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "Zadejte částku {0}"
@@ -959,6 +965,8 @@ msgstr "Nedostatečná likvidita v poolu pro váš obchod"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1700,6 +1708,10 @@ msgstr "Vyměňte <0/> za přesně <1/>"
msgid "Swap Anyway"
msgstr "Přesto prohodit"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "Výměna potvrzena"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "Vyměňte si detaily"
@@ -1713,6 +1725,10 @@ msgstr "Vyměňte přesně <0/> za <1/>"
msgid "Swap failed: {0}"
msgstr "Výměna se nezdařila: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "Čeká se na výměnu"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "Swap shrnutí"
@@ -1906,6 +1922,10 @@ msgstr "Transakce odeslána"
msgid "Transaction completed in"
msgstr "Transakce dokončena v"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "Transakce potvrzena"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "Transakce čeká na vyřízení"
msgid "Transaction rejected."
msgstr "Transakce zamítnuta."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "Transakce odeslána"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "Přenosový token"
@@ -2044,6 +2060,7 @@ msgstr "Nepodporovaná síť přepněte na jinou a obchodujte."
msgid "Untitled"
msgstr "Nepojmenovaná"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "Rozbalit"
@@ -2052,6 +2069,22 @@ msgstr "Rozbalit"
msgid "Unwrap <0/> to {0}"
msgstr "Rozbalte <0/> až {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "Rozbalení potvrzeno"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "Rozbalte nativní měnu."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "Rozbalení čeká na vyřízení"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "Rozbalení nativní měny."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "Aktualizovat delegaci"
@@ -2220,6 +2253,7 @@ msgstr "Výběr {0} UNI-V2"
msgid "Withdrew UNI-V2!"
msgstr "UNI-V2 vybráno!"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "Zalomit"
@@ -2228,6 +2262,22 @@ msgstr "Zalomit"
msgid "Wrap <0/> to {0}"
msgstr "Zabalit <0/> až {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "Zabalení potvrzeno"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "Zabalit nativní měnu."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "Čeká se na zabalení"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "Balení nativní měny."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "přes {0}"
msgid "via {0} token list"
msgstr "prostřednictvím seznamu žetonů {0}"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr ""
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {Importovat žeton} other {Importovat žetony}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr ""
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-11 04:07\n"
"PO-Revision-Date: 2022-03-02 19:11\n"
"Last-Translator: \n"
"Language: da_DK\n"
"Language-Team: Danish\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "Der opstod en fejl under forsøg på at udføre denne swap. Det kan være nødvendigt at øge din glidningstolerance. Hvis det ikke virker, kan der være en uforenelighed med det token, du handler. Bemærk: gebyr ved overførsel og rebase-tokens er inkompatibelt med Uniswap V3."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "Godkendelse afventer <0/>"
msgid "Approval pending"
msgstr "Godkendelse afventer"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -288,6 +288,10 @@ msgstr "Mindst {0} {1} og {2} {3} vil blive refunderet til din tegnebog på grun
msgid "Auto"
msgstr "Automatisk"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "Auto router"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "Auto Router API"
@@ -747,6 +751,8 @@ msgstr "Indtast gyldig tokenadresse"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "Indtast {0} beløb"
@@ -959,6 +965,8 @@ msgstr "Utilstrækkelig likviditet i puljen til din handel"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1700,6 +1708,10 @@ msgstr "Skift <0/> for nøjagtigt <1/>"
msgid "Swap Anyway"
msgstr "Ombyt alligevel"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "Bytte bekræftet"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "Byt detaljer"
@@ -1713,6 +1725,10 @@ msgstr "Skift nøjagtigt <0/> for <1/>"
msgid "Swap failed: {0}"
msgstr "Skift mislykkedes: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "Swap afventer"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "Swap oversigt"
@@ -1906,6 +1922,10 @@ msgstr "Transaktion indsendt"
msgid "Transaction completed in"
msgstr "Transaktion gennemført i"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "Transaktionen bekræftet"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "Transaktion afventer"
msgid "Transaction rejected."
msgstr "Transaktionen blev afvist."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "Transaktion indsendt"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "Overførselstoken"
@@ -2044,6 +2060,7 @@ msgstr "Ikke-understøttet netværk - skift til et andet for at handle."
msgid "Untitled"
msgstr "Unavngivet"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "Pak ud"
@@ -2052,6 +2069,22 @@ msgstr "Pak ud"
msgid "Unwrap <0/> to {0}"
msgstr "Pak <0/> til {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "Udpakning bekræftet"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "Pak den oprindelige valuta ud."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "Udpakning afventer"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "Udpakning af indfødt valuta."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "Opdater delegation"
@@ -2220,6 +2253,7 @@ msgstr "Udbetal {0} UNI-V2"
msgid "Withdrew UNI-V2!"
msgstr "Hæv UNI-V2!"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "Ombryd"
@@ -2228,6 +2262,22 @@ msgstr "Ombryd"
msgid "Wrap <0/> to {0}"
msgstr "Ombryd <0/> til {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "Indpakning bekræftet"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "Indpak den oprindelige valuta."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "Indpakning afventer"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "Indpakning af indfødt valuta."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "via {0}"
msgid "via {0} token list"
msgstr "via {0} token-liste"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {Bedste rute via 1 hop} other {Bedste rute via # hop}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {Importer token} other {Importer tokens}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {Importer token} other {Importer tokens}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-11 04:07\n"
"PO-Revision-Date: 2022-03-02 19:11\n"
"Last-Translator: \n"
"Language: de_DE\n"
"Language-Team: German\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "Beim Versuch, diesen Swap auszuführen, ist ein Fehler aufgetreten. Möglicherweise müssen Sie Ihre Schlupftoleranz erhöhen. Wenn dies nicht funktioniert, liegt möglicherweise eine Inkompatibilität mit dem Token vor, den Sie handeln. Hinweis: Gebühren für Transfer- und Rebase-Token sind nicht mit Uniswap V3 kompatibel."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "Genehmigung ausstehend <0/>"
msgid "Approval pending"
msgstr "Bestätigung ausstehend"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -288,6 +288,10 @@ msgstr "Mindestens {0} {1} und {2} {3} werden aufgrund des gewählten Preisberei
msgid "Auto"
msgstr "Autom."
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "Automatischer Router"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "Auto-Router-API"
@@ -747,6 +751,8 @@ msgstr "Gültige Token-Adresse eingeben"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "{0} Betrag eingeben"
@@ -959,6 +965,8 @@ msgstr "Unzureichende Liquidität im Pool für Ihren Handel"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1700,6 +1708,10 @@ msgstr "Tausche <0/> gegen genau <1/>"
msgid "Swap Anyway"
msgstr "Trotzdem tauschen"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "Tausch bestätigt"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "Swap-Details"
@@ -1713,6 +1725,10 @@ msgstr "Tausche genau <0/> gegen <1/>"
msgid "Swap failed: {0}"
msgstr "Tausch fehlgeschlagen: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "Tausch anstehend"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "Swap-Zusammenfassung"
@@ -1906,6 +1922,10 @@ msgstr "Transaktion gesendet"
msgid "Transaction completed in"
msgstr "Transaktion abgeschlossen in"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "Transaktion bestätigt"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "Transaktion ausstehend"
msgid "Transaction rejected."
msgstr "Transaktion abgelehnt."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "Transaktion übermittelt"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "Token übertragen"
@@ -2044,6 +2060,7 @@ msgstr "Nicht unterstütztes Netzwerk - Wechseln Sie zu einem anderen, um zu han
msgid "Untitled"
msgstr "Ohne Titel"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "Unwrap"
@@ -2052,6 +2069,22 @@ msgstr "Unwrap"
msgid "Unwrap <0/> to {0}"
msgstr "Auspacken <0/> bis {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "Auspacken bestätigt"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "Packen Sie die einheimische Währung aus."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "Auspacken steht an"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "Auspacken der einheimischen Währung."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "Delegation aktualisieren"
@@ -2220,6 +2253,7 @@ msgstr "Hebe {0} UNI-V2 ab"
msgid "Withdrew UNI-V2!"
msgstr "UNI-V2 abgehoben!"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "Wrap"
@@ -2228,6 +2262,22 @@ msgstr "Wrap"
msgid "Wrap <0/> to {0}"
msgstr "Wrap <0/> bis {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "Wrap bestätigt"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "Wickeln Sie die einheimische Währung ein."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "Umbruch ausstehend"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "Verpackung der einheimischen Währung."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "über {0}"
msgid "via {0} token list"
msgstr "über {0} Token-Liste"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {Beste Route über 1 Hop} other {Beste Route über # Hops}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {Token importieren} other {Token importieren}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {Token importieren} other {Token importieren}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-11 04:07\n"
"PO-Revision-Date: 2022-03-02 19:11\n"
"Last-Translator: \n"
"Language: el_GR\n"
"Language-Team: Greek\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "Παρουσιάστηκε σφάλμα κατά την προσπάθεια εκτέλεσης αυτής της ανταλλαγής. Ίσως χρειαστεί να αυξήσετε την ανοχή ολίσθησης. Εάν αυτό δεν λειτουργεί, μπορεί να υπάρχει ασυμβατότητα με το διακριτικό που διαπραγματεύεστε. Σημείωση: τα τέλη μεταφοράς και επαναφοράς δεν είναι συμβατά με το Uniswap V3."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "Η έγκριση εκκρεμεί <0/>"
msgid "Approval pending"
msgstr "Η έγκριση εκκρεμεί"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -288,6 +288,10 @@ msgstr "Τουλάχιστον {0} {1} και {2} {3} θα επιστραφού
msgid "Auto"
msgstr "Αυτόματο"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "Αυτόματος δρομολογητής"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "Auto Router API"
@@ -747,6 +751,8 @@ msgstr "Εισάγετε μια διεύθυνση έγκυρης μάρκας"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "Εισαγάγετε {0} ποσό"
@@ -959,6 +965,8 @@ msgstr "Ανεπαρκής ρευστότητα στο pool για τις συν
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1700,6 +1708,10 @@ msgstr "Αντικαταστήστε <0/> με ακριβώς <1/>"
msgid "Swap Anyway"
msgstr "Ανταλλάξτε ούτως ή άλλως"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "Η ανταλλαγή επιβεβαιώθηκε"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "Ανταλλαγή λεπτομερειών"
@@ -1713,6 +1725,10 @@ msgstr "Αντικαταστήστε ακριβώς <0/> με <1/>"
msgid "Swap failed: {0}"
msgstr "Η ανταλλαγή απέτυχε: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "Ανταλλαγή σε εκκρεμότητα"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "Περίληψη ανταλλαγής"
@@ -1906,6 +1922,10 @@ msgstr "Συναλλαγή Υποβλήθηκε"
msgid "Transaction completed in"
msgstr "Η συναλλαγή ολοκληρώθηκε στις"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "Η συναλλαγή επιβεβαιώθηκε"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "Συναλλαγή σε εκκρεμότητα"
msgid "Transaction rejected."
msgstr "Η συναλλαγή απορρίφθηκε."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "Η συναλλαγή υποβλήθηκε"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "Μεταφορά κουπονιού"
@@ -2044,6 +2060,7 @@ msgstr "Μη υποστηριζόμενο δίκτυο - μεταβείτε σε
msgid "Untitled"
msgstr "Χωρίς τίτλο"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "Αποκαλύπτω"
@@ -2052,6 +2069,22 @@ msgstr "Αποκαλύπτω"
msgid "Unwrap <0/> to {0}"
msgstr "Ξετυλίξτε <0/> προς {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "Το ξετύλιγμα επιβεβαιώθηκε"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "Ξετυλίξτε το εγγενές νόμισμα."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "Εκκρεμεί το ξετύλιγμα"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "Ξετυλίγοντας το εγγενές νόμισμα."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "Ενημέρωση Ανάθεσης"
@@ -2220,6 +2253,7 @@ msgstr "Ανάληψη {0} UNI-V2"
msgid "Withdrew UNI-V2!"
msgstr "Πραγματοποιήθηκε ανάληψη UNI-V2!"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "Καλύπτω"
@@ -2228,6 +2262,22 @@ msgstr "Καλύπτω"
msgid "Wrap <0/> to {0}"
msgstr "Τυλίξτε <0/> προς {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "Η αναδίπλωση επιβεβαιώθηκε"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "Τυλίξτε το εγγενές νόμισμα."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "Ανακύκλωση σε εκκρεμότητα"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "Αναδίπλωση εγγενούς νομίσματος."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "μέσω {0}"
msgid "via {0} token list"
msgstr "μέσω {0} λίστας μάρκας"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {Η καλύτερη διαδρομή μέσω 1 hop} other {Η καλύτερη διαδρομή μέσω # λυκίσκου}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {Εισαγωγή διακριτικού} other {Εισαγωγή διακριτικών}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {Εισαγωγή διακριτικού} other {Εισαγάγετε μάρκες}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-11 04:07\n"
"PO-Revision-Date: 2022-03-02 19:11\n"
"Last-Translator: \n"
"Language: es_ES\n"
"Language-Team: Spanish\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "Se produjo un error al intentar ejecutar este intercambio. Es posible que deba aumentar su tolerancia al deslizamiento. Si eso no funciona, puede haber una incompatibilidad con el token que está negociando. Nota: la tarifa de transferencia y los tokens de rebase son incompatibles con Uniswap V3."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "Aprobación pendiente <0/>"
msgid "Approval pending"
msgstr "Aprobación pendiente"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -288,6 +288,10 @@ msgstr "Al menos {0} {1} y {2} {3} serán reembolsados a su cartera debido al ra
msgid "Auto"
msgstr "Auto"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "Enrutador automático"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "API de enrutador automático"
@@ -747,6 +751,8 @@ msgstr "Introduzca una dirección de token válida"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "Ingrese {0} monto"
@@ -959,6 +965,8 @@ msgstr "Liquidez insuficiente en el grupo para su operación"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1700,6 +1708,10 @@ msgstr "Cambiar <0 /> por exactamente <1 />"
msgid "Swap Anyway"
msgstr "Intercambiar de todos modos"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "Intercambio confirmado"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "Intercambiar detalles"
@@ -1713,6 +1725,10 @@ msgstr "Cambiar exactamente <0 /> por <1 />"
msgid "Swap failed: {0}"
msgstr "Error de intercambio: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "Intercambio pendiente"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "Resumen de intercambio"
@@ -1906,6 +1922,10 @@ msgstr "Transacción enviada"
msgid "Transaction completed in"
msgstr "Transacción completada en"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "Transacción confirmada"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "Transacción pendiente"
msgid "Transaction rejected."
msgstr "Transacción rechazada."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "Transacción enviada"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "Token de transferencia"
@@ -2044,6 +2060,7 @@ msgstr "Red no admitida: cambie a otra para comerciar."
msgid "Untitled"
msgstr "Intitulado"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "Unwrap"
@@ -2052,6 +2069,22 @@ msgstr "Unwrap"
msgid "Unwrap <0/> to {0}"
msgstr "Desenvolver <0/> a {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "Desenvolver confirmado"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "Desenvuelva la moneda nativa."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "Desenvolver pendiente"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "Desenvolviendo la moneda nativa."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "Actualizar delegación"
@@ -2220,6 +2253,7 @@ msgstr "Retirando {0} UNI-V2"
msgid "Withdrew UNI-V2!"
msgstr "¡Retirado UNI-V2!"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "Envoltura"
@@ -2228,6 +2262,22 @@ msgstr "Envoltura"
msgid "Wrap <0/> to {0}"
msgstr "Envuelva <0/> a {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "Envoltura confirmada"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "Envuelva la moneda nativa."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "Envoltura pendiente"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "Envolviendo moneda nativa."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "vía {0}"
msgid "via {0} token list"
msgstr "a través de la lista de fichas {0}"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {¡La mejor ruta a través de 1 salto} other {¡La mejor ruta a través de #hops}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {Importar token} other {Importa tokens}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {Ficha de importación} other {¡Importar fichas}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-11 04:07\n"
"PO-Revision-Date: 2022-03-02 19:11\n"
"Last-Translator: \n"
"Language: fi_FI\n"
"Language-Team: Finnish\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "Tapahtui virhe yritettäessä suorittaa tämä vaihto. Saatat joutua lisäämään luistonsietokykyäsi. Jos se ei toimi, kaupankäynnin kohteena olevan tunnuksen kanssa saattaa olla ristiriita. Huomautus: siirto- ja uudelleentase-tunnusten maksu ei ole yhteensopiva Uniswap V3: n kanssa."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "Hyväksyntä odottaa <0/>"
msgid "Approval pending"
msgstr "Hyväksyntä odottaa"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -288,6 +288,10 @@ msgstr "Vähintään {0} {1} ja {2} {3} palautetaan lompakkoosi valitun hinta-al
msgid "Auto"
msgstr "Automaattinen"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "Automaattinen reititin"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "Auto Router API"
@@ -747,6 +751,8 @@ msgstr "Syötä kelvollinen rahakeosoite"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "Syötä {0} summa"
@@ -959,6 +965,8 @@ msgstr "Poolissa ei ole tarpeeksi likviditeettiä kauppaasi varten"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1700,6 +1708,10 @@ msgstr "Vaihda <0/> täsmälleen <1/>"
msgid "Swap Anyway"
msgstr "Vaihda silti"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "Vaihto varmistettu"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "Vaihda tiedot"
@@ -1713,6 +1725,10 @@ msgstr "Vaihda täsmälleen <0/> arvoon <1/>"
msgid "Swap failed: {0}"
msgstr "Vaihto epäonnistui: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "Vaihto vireillä"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "Yhteenveto vaihdosta"
@@ -1906,6 +1922,10 @@ msgstr "Tapahtuma lähetetty"
msgid "Transaction completed in"
msgstr "Kauppa suoritettu vuonna"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "Kauppa vahvistettu"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "Tapahtuma vireillä"
msgid "Transaction rejected."
msgstr "Tapahtuma hylätty."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "Tapahtuma lähetetty"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "Siirtotunnus"
@@ -2044,6 +2060,7 @@ msgstr "Ei tuettu verkko - vaihda toiseen käydäksesi kauppaa."
msgid "Untitled"
msgstr "Nimetön"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "Unwrap"
@@ -2052,6 +2069,22 @@ msgstr "Unwrap"
msgid "Unwrap <0/> to {0}"
msgstr "Pakkaus <0/> kohteeseen {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "Purkaminen vahvistettu"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "Pura kotivaluutta."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "Purkaminen odottaa"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "Kotimaan valuutan purkaminen."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "Päivitä delegointi"
@@ -2220,6 +2253,7 @@ msgstr "Vedetään pois {0} UNI-V2"
msgid "Withdrew UNI-V2!"
msgstr "UNI-V2 vedetty pois!"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "Wrap"
@@ -2228,6 +2262,22 @@ msgstr "Wrap"
msgid "Wrap <0/> to {0}"
msgstr "Wrap <0/> kohteeseen {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "Wrap vahvistettu"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "Kääri alkuperäinen valuutta."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "Wrap odottaa"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "Kotimaan valuutan kääriminen."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "kohteen {0} kautta"
msgid "via {0} token list"
msgstr "rahakeluettelon {0} kautta"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {Paras reitti yhden hypyn kautta} other {Paras reitti # hopin kautta}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {Tuo rahake} other {Tuo rahakkeita}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {Tuo tunnus} other {Tuo tunnuksia}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-11 04:07\n"
"PO-Revision-Date: 2022-03-02 19:11\n"
"Last-Translator: \n"
"Language: fr_FR\n"
"Language-Team: French\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "Une erreur s'est produite lors de la tentative d'exécution de cet échange. Vous devrez peut-être augmenter votre tolérance au slippage. Si cela ne fonctionne pas, il peut y avoir une incompatibilité avec le token que vous échangez. Remarque : les frais sur les token de transfert et de rebase sont incompatibles avec Uniswap V3."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "Approbation en attente <0/>"
msgid "Approval pending"
msgstr "En attente d'approbation"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -288,6 +288,10 @@ msgstr "Au moins {0} {1} et {2} {3} seront remboursés sur votre portefeuille en
msgid "Auto"
msgstr "Automatique"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "Routeur automatique"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "API de routeur automatique"
@@ -747,6 +751,8 @@ msgstr "Saisissez une adresse de jeton valide"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "Entrez {0} montant"
@@ -959,6 +965,8 @@ msgstr "Liquidité insuffisante dans le pool pour votre transaction"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1700,6 +1708,10 @@ msgstr "Remplacez <0/> par exactement <1/>"
msgid "Swap Anyway"
msgstr "Échanger quand même"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "Échange confirmé"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "Détails de l'échange"
@@ -1713,6 +1725,10 @@ msgstr "Remplacez exactement <0/> par <1/>"
msgid "Swap failed: {0}"
msgstr "Échec de l'échange : {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "Échange en attente"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "Résumé de l'échange"
@@ -1906,6 +1922,10 @@ msgstr "Transaction envoyée"
msgid "Transaction completed in"
msgstr "Transaction réalisée en"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "Transaction confirmée"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "Transaction en attente"
msgid "Transaction rejected."
msgstr "Transaction rejetée."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "Transaction soumise"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "Token de transfert"
@@ -2044,6 +2060,7 @@ msgstr "Réseau non pris en charge - passez à un autre pour échanger."
msgid "Untitled"
msgstr "Sans titre"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "Unwrap"
@@ -2052,6 +2069,22 @@ msgstr "Unwrap"
msgid "Unwrap <0/> to {0}"
msgstr "Déballer <0/> à {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "Déballage confirmé"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "Déballez la devise native."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "Déballer en attente"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "Déballage de la devise native."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "Mettre à jour la délégation"
@@ -2220,6 +2253,7 @@ msgstr "Retrait de {0} UNI-V2"
msgid "Withdrew UNI-V2!"
msgstr "Retrait de UNI-V2 !"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "Envelopper"
@@ -2228,6 +2262,22 @@ msgstr "Envelopper"
msgid "Wrap <0/> to {0}"
msgstr "Envelopper <0/> à {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "Emballage confirmé"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "Enveloppez la devise locale."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "Wrap en attente"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "Emballage de la monnaie locale."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "via {0}"
msgid "via {0} token list"
msgstr "via {0} liste de jetons"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {Meilleur itinéraire via 1 saut} other {Meilleur itinéraire via # sauts }}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {Jeton d'importation } other {Importez des jetons}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {Importer le jeton } other {Importez des jetons }}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-11 04:07\n"
"PO-Revision-Date: 2022-03-02 19:11\n"
"Last-Translator: \n"
"Language: he_IL\n"
"Language-Team: Hebrew\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "אירעה שגיאה בניסיון לבצע החלפה זו. יתכן שתצטרך להגביר את סובלנות ההחלקה שלך. אם זה לא עובד, ייתכן שיש אי התאמה לאסימון שאתה סוחר בו. הערה: עמלה על אסימון העברה וריבוס אינם תואמים ל- Uniswap V3."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "אישור בהמתנה <0/>"
msgid "Approval pending"
msgstr "מחכה לאישור"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -288,6 +288,10 @@ msgstr "לפחות {0} {1} ו {2} {3} יוחזרו לארנק שלך בגלל ט
msgid "Auto"
msgstr "אוטומטי"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "נתב אוטומטי"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "ממשק API של נתב אוטומטי"
@@ -747,6 +751,8 @@ msgstr "הזן כתובת אסימון חוקית"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "הזן סכום {0}"
@@ -959,6 +965,8 @@ msgstr "אין מספיק נזילות במאגר למסחר שלך"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1700,6 +1708,10 @@ msgstr "החלף את <0/> בדיוק ל <1/>"
msgid "Swap Anyway"
msgstr "החלף בכל מקרה"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "ההחלפה אושרה"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "החלף פרטים"
@@ -1713,6 +1725,10 @@ msgstr "החלף בדיוק <0/> עבור <1/>"
msgid "Swap failed: {0}"
msgstr "החלפה נכשלה: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "ההחלפה בהמתנה"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "סיכום החלפה"
@@ -1906,6 +1922,10 @@ msgstr "העסקה הוגשה"
msgid "Transaction completed in"
msgstr "העסקה הושלמה בשנת"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "העסקה אושרה"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "העסקה בהמתנה"
msgid "Transaction rejected."
msgstr "העסקה נדחתה."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "העסקה הוגשה"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "העברת אסימון"
@@ -2044,6 +2060,7 @@ msgstr "רשת לא נתמכת - עבור לרשת אחרת כדי לסחור."
msgid "Untitled"
msgstr "ללא כותרת"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "לְגוֹלֵל"
@@ -2052,6 +2069,22 @@ msgstr "לְגוֹלֵל"
msgid "Unwrap <0/> to {0}"
msgstr "פרק <0/> עד {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "אישור ביטול הגלישה"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "שחרר את המטבע המקומי."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "ביטול הגלישה בהמתנה"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "ביטול גלישת המטבע המקומי."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "עדכן משלחת"
@@ -2220,6 +2253,7 @@ msgstr "משיכת {0} UNI-V2"
msgid "Withdrew UNI-V2!"
msgstr "משך את UNI-V2!"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "לַעֲטוֹף"
@@ -2228,6 +2262,22 @@ msgstr "לַעֲטוֹף"
msgid "Wrap <0/> to {0}"
msgstr "עטוף <0/> ל {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "גלישה אושרה"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "עטוף מטבע מקומי."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "גלישה בהמתנה"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "עטיפת מטבע מקומי."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "דרך {0}"
msgid "via {0} token list"
msgstr "דרך רשימת אסימונים {0}"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {המסלול הטוב ביותר דרך 1 הופ} other {המסלול הטוב ביותר דרך # הופס}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {ייבוא אסימון} other {ייבא אסימונים}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {ייבוא אסימון} other {ייבוא אסימונים}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-11 04:07\n"
"PO-Revision-Date: 2022-03-02 19:11\n"
"Last-Translator: \n"
"Language: hu_HU\n"
"Language-Team: Hungarian\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "Hiba történt a csere végrehajtása során. Lehet, hogy növelnie kell a csúszási toleranciát. Ha ez nem működik, akkor összeférhetetlenség állhat fenn az Ön által forgalmazott tokennel. Megjegyzés: az átviteli és újrabázis tokenek díja nem kompatibilis az Uniswap V3 verzióval."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "Jóváhagyás függőben <0/>"
msgid "Approval pending"
msgstr "Kérelem folyamatban"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -288,6 +288,10 @@ msgstr "Legalább {0} {1} és {2} {3} visszatérítésre kerül a pénztárcáj
msgid "Auto"
msgstr "Auto"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "Auto Router"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "Auto Router API"
@@ -747,6 +751,8 @@ msgstr "Adja meg az érvényes token címet"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "Adjon meg {0} összeget"
@@ -960,6 +966,8 @@ msgstr "Nincs elegendő likviditás a poolban a kereskedéshez"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1701,6 +1709,10 @@ msgstr "Cserélje le a <0/> pontot <1/> értékre"
msgid "Swap Anyway"
msgstr "Swap mindenképp"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "A csere megerősítve"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "Cserélje ki a részleteket"
@@ -1714,6 +1726,10 @@ msgstr "Pontosan cserélje ki a <0/> értéket a <1/> értékre"
msgid "Swap failed: {0}"
msgstr "A csere nem sikerült: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "Csere függőben"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "Csere összefoglaló"
@@ -1907,6 +1923,10 @@ msgstr "Tranzakció benyújtva"
msgid "Transaction completed in"
msgstr "A tranzakció befejeződött"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "Az ügylet megerősítve"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1921,10 +1941,6 @@ msgstr "Tranzakció függőben"
msgid "Transaction rejected."
msgstr "A tranzakció elutasítva."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "Tranzakció elküldve"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "Transfer Token"
@@ -2045,6 +2061,7 @@ msgstr "Nem támogatott hálózat váltson másikra a kereskedéshez."
msgid "Untitled"
msgstr "Névtelen"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "Kicsomagolás"
@@ -2053,6 +2070,22 @@ msgstr "Kicsomagolás"
msgid "Unwrap <0/> to {0}"
msgstr "Kicsomagolás <0/> tól {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "Kibontás megerősítve"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "Bontsa ki a natív valutát."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "Felbontás függőben"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "A natív valuta kibontása."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "Delegálás frissítése"
@@ -2221,6 +2254,7 @@ msgstr "{0} UNI-V2 visszavonása"
msgid "Withdrew UNI-V2!"
msgstr "Visszavonta az UNI-V2-t!"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "Becsomagolás"
@@ -2229,6 +2263,22 @@ msgstr "Becsomagolás"
msgid "Wrap <0/> to {0}"
msgstr "Tekerje <0/> tól {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "Wrap megerősítve"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "Wrap natív valuta."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "Becsomagolás függőben"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "A natív valuta csomagolása."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2444,9 +2494,13 @@ msgstr "{0}-on keresztül"
msgid "via {0} token list"
msgstr "{0} token listán keresztül"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {A legjobb útvonal 1 ugrással} other {A legjobb útvonal # ugráson keresztül}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {Import token} other {Import tokenek}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {Import token} other {Import tokenek}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-11 04:07\n"
"PO-Revision-Date: 2022-03-02 19:11\n"
"Last-Translator: \n"
"Language: id_ID\n"
"Language-Team: Indonesian\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "Terjadi kesalahan saat mengeksekusi swap ini. Anda mungkin memerlukan peningkatan toleransi slip Anda. Jika tidak berhasil, kemungkinan token yang anda perdagangkan tidak cocok. Catatan: biaya transfer token rebase tidak cocok dengan Uniswap V3."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "Persetujuan tertunda <0/>"
msgid "Approval pending"
msgstr "Persetujuan Tertunda"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -288,6 +288,10 @@ msgstr "Setidaknya {0} {1} dan {2} {3} akan dikembalikan ke dompet Anda akibat r
msgid "Auto"
msgstr "Otomatis"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "Router Otomatis"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "API Router Otomatis"
@@ -747,6 +751,8 @@ msgstr "Masukkan alamat token yang valid"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "Masukkan {0} jumlah"
@@ -959,6 +965,8 @@ msgstr "Likuiditas tidak mencukupi di kumpulan untuk perdagangan Anda"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1700,6 +1708,10 @@ msgstr "Tukar <0/> dengan tepat <1/>"
msgid "Swap Anyway"
msgstr "Tukar Saja"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "Pertukaran dikonfirmasi"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "Pertukaran detail"
@@ -1713,6 +1725,10 @@ msgstr "Tukar persis <0/> untuk <1/>"
msgid "Swap failed: {0}"
msgstr "Tukar gagal: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "Tukar tertunda"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "Pertukaran ringkasan"
@@ -1906,6 +1922,10 @@ msgstr "Transaksi Dikirim"
msgid "Transaction completed in"
msgstr "Transaksi selesai pada"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "Transaksi dikonfirmasi"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "Transaksi tertunda"
msgid "Transaction rejected."
msgstr "Transaksi ditolak."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "Transaksi terkirim"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "Transfer Token"
@@ -2044,6 +2060,7 @@ msgstr "Jaringan tidak didukung - beralih ke yang lain untuk berdagang."
msgid "Untitled"
msgstr "Tanpa Judul"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "Membuka"
@@ -2052,6 +2069,22 @@ msgstr "Membuka"
msgid "Unwrap <0/> to {0}"
msgstr "Buka bungkus <0/> hingga {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "Buka bungkus dikonfirmasi"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "Buka bungkus mata uang asli."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "Buka bungkus tertunda"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "Membuka bungkus mata uang asli."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "Perbarui Delegasi"
@@ -2220,6 +2253,7 @@ msgstr "Menarik {0} UNI-V2"
msgid "Withdrew UNI-V2!"
msgstr "Menarik UNI-V2!"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "Wrap"
@@ -2228,6 +2262,22 @@ msgstr "Wrap"
msgid "Wrap <0/> to {0}"
msgstr "Bungkus <0/> hingga {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "Bungkus dikonfirmasi"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "Bungkus mata uang asli."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "Bungkus tertunda"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "Membungkus mata uang asli."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "melalui {0}"
msgid "via {0} token list"
msgstr "melalui {0} daftar token"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {Rute terbaik melalui 1 hop} other {Rute terbaik melalui # hop}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {Impor token} other {Impor token}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {Impor tanda} other {Impor token}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-11 04:07\n"
"PO-Revision-Date: 2022-03-02 19:11\n"
"Last-Translator: \n"
"Language: it_IT\n"
"Language-Team: Italian\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "Si è verificato un errore durante il tentativo di eseguire questo scambio. Potrebbe essere necessario aumentare la tolleranza allo slittamento. Se ciò non funziona, potrebbe esserci un'incompatibilità con il token che stai scambiando. Nota: la commissione sui token di trasferimento e rebase non è compatibile con Uniswap V3."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "In attesa di approvazione <0/>"
msgid "Approval pending"
msgstr "In attesa di approvazione"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -288,6 +288,10 @@ msgstr "Almeno {0} {1} e {2} {3} saranno rimborsati al tuo portafoglio a causa d
msgid "Auto"
msgstr "Automatico"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "Router automatico"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "API del router automatico"
@@ -747,6 +751,8 @@ msgstr "Inserisci un indirizzo di token valido"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "Inserisci {0} importo"
@@ -959,6 +965,8 @@ msgstr "Liquidità insufficiente nel pool per il tuo trade"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1700,6 +1708,10 @@ msgstr "Scambia <0/> con esattamente <1/>"
msgid "Swap Anyway"
msgstr "Scambia Comunque"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "Scambio confermato"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "Scambia i dettagli"
@@ -1713,6 +1725,10 @@ msgstr "Scambia esattamente <0/> con <1/>"
msgid "Swap failed: {0}"
msgstr "Scambio fallito: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "Scambio in attesa"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "Riepilogo scambio"
@@ -1906,6 +1922,10 @@ msgstr "Transazione Inviata"
msgid "Transaction completed in"
msgstr "Transazione completata in"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "Transazione confermata"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "Transazione in sospeso"
msgid "Transaction rejected."
msgstr "Transazione rifiutata."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "Transazione inviata"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "Token di trasferimento"
@@ -2044,6 +2060,7 @@ msgstr "Rete non supportata: passa a un'altra per fare trading."
msgid "Untitled"
msgstr "Senza titolo"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "Unwrap"
@@ -2052,6 +2069,22 @@ msgstr "Unwrap"
msgid "Unwrap <0/> to {0}"
msgstr "Scarta da <0/> a {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "Scarto confermato"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "Scartare la valuta nativa."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "Scartare in attesa"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "Scartare la valuta nativa."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "Aggiorna la delega"
@@ -2220,6 +2253,7 @@ msgstr "Ritiro {0} UNI-V2"
msgid "Withdrew UNI-V2!"
msgstr "UNI-V2 ritirato!"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "Avvolgi"
@@ -2228,6 +2262,22 @@ msgstr "Avvolgi"
msgid "Wrap <0/> to {0}"
msgstr "Avvolgi da <0/> a {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "Avvolgimento confermato"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "Avvolgi la valuta nativa."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "Avvolgimento in attesa"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "Avvolgimento della valuta nativa."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "via {0}"
msgid "via {0} token list"
msgstr "tramite {0} elenco token"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {Il miglior percorso con 1 salto} other {Il miglior percorso con # luppoli}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {Importa token} other {Importa token}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {Importa token} other {Importa token}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-18 00:12\n"
"PO-Revision-Date: 2022-03-02 19:11\n"
"Last-Translator: \n"
"Language: ja_JP\n"
"Language-Team: Japanese\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "スワップ実行時にエラーが発生しました。スリッページの許容範囲を広げる必要がある可能性があります。それでも上手くいかない場合、取引しているトークンとの互換性がない可能性があります。注転送時に手数料が発生するトークンおよびリベースするトークンは、UniswapV3と互換性がありません。"
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "承認待ち <0/>"
msgid "Approval pending"
msgstr "承認待ち"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -241,7 +241,7 @@ msgstr "{0} を承認する"
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approve {0} first"
msgstr "最初に {0} 承認する"
msgstr "最初に {0} 承認する"
#: src/pages/RemoveLiquidity/index.tsx
msgid "Approved"
@@ -269,7 +269,7 @@ msgstr "Arbitrumブリッジ"
#: src/components/DowntimeWarning/index.tsx
msgid "Arbitrum is in Beta and may experience downtime. During downtime, your position will not earn fees and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "Arbitrumはベータ版であり、ダウンタイムが発生する可能性があります。ダウンタイム中、あなたのポジションは手数料を獲得せず、流動性を取り除くことができなくなります。 <0>続きを読む。</0>"
msgstr "Arbitrumはベータ版であり、ダウンタイムが発生する可能性があります。ダウンタイム中、あなたのポジションは手数料を獲得せず、流動性を解除することができなくなります。 <0>続きを読む。</0>"
#: src/components/Settings/index.tsx
msgid "Are you sure?"
@@ -288,6 +288,10 @@ msgstr "少なくとも {0} の {1} と {2} の {3} は設定した価格範囲
msgid "Auto"
msgstr "自動"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "自動ルーター"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "自動ルーターAPI"
@@ -747,6 +751,8 @@ msgstr "有効なトークンアドレスを入力してください"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "{0} 金額を入力してください"
@@ -959,6 +965,8 @@ msgstr "あなたの取引のためのプールの不十分な流動性"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1064,7 +1072,7 @@ msgstr "読み込み中"
#: src/components/CurrencyInputPanel/index.tsx
msgid "MAX"
msgstr "MAX"
msgstr "最大"
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/V2.tsx
@@ -1500,7 +1508,7 @@ msgstr "ページを再読み込みする"
#: src/pages/RemoveLiquidity/V3.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Remove"
msgstr "除"
msgstr "除"
#: src/components/AccountDetails/TransactionSummary.tsx
msgid "Remove <0/> and <1/>"
@@ -1518,7 +1526,7 @@ msgstr "委任を削除"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Remove Liquidity"
msgstr "流動性を除"
msgstr "流動性を除"
#: src/components/SearchModal/ManageLists.tsx
msgid "Remove list"
@@ -1700,6 +1708,10 @@ msgstr "<0/> を <1/>にスワップ"
msgid "Swap Anyway"
msgstr "問題発生の可能性があるが、スワップする"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "スワップが確認されました"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "スワップの詳細"
@@ -1713,6 +1725,10 @@ msgstr "<0/>を<1/>にスワップ"
msgid "Swap failed: {0}"
msgstr "スワップに失敗しました: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "スワップ保留中"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "スワップの概要"
@@ -1906,6 +1922,10 @@ msgstr "取引が送信されました"
msgid "Transaction completed in"
msgstr "で完了した取引"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "取引が確認されました"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "保留中の取引"
msgid "Transaction rejected."
msgstr "取引が拒否されました"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "取引は送信されました"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "トークンを転送する"
@@ -2044,6 +2060,7 @@ msgstr "サポートされていないネットワーク-別のネットワー
msgid "Untitled"
msgstr "タイトル未設定"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "アンラップ"
@@ -2052,6 +2069,22 @@ msgstr "アンラップ"
msgid "Unwrap <0/> to {0}"
msgstr "<0/> から {0} にアンラップ"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "開封確認済み"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "自国通貨をアンラップします。"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "保留中のアンラップ"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "自国通貨の開封。"
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "委任を更新"
@@ -2197,7 +2230,7 @@ msgstr "引き出すと、コントラクトはあなたに代わって自動的
#: src/components/earn/UnstakingModal.tsx
msgid "When you withdraw, your UNI is claimed and your liquidity is removed from the mining pool."
msgstr "引き出すと、UNIが請求され、流動性はマイニングプールから除されます。"
msgstr "引き出すと、UNIが請求され、流動性はマイニングプールから除されます。"
#: src/components/earn/UnstakingModal.tsx
#: src/pages/Earn/Manage.tsx
@@ -2220,6 +2253,7 @@ msgstr "{0} UNI-V2を引き出し中"
msgid "Withdrew UNI-V2!"
msgstr "UNI-V2を引き出しました"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "ラップ"
@@ -2228,6 +2262,22 @@ msgstr "ラップ"
msgid "Wrap <0/> to {0}"
msgstr "<0/> から {0} にラップ"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "ラップが確認されました"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "自国通貨をラップします。"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "ラップ保留中"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "自国通貨のラッピング。"
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "{0} から"
msgid "via {0} token list"
msgstr "{0} トークンリストから"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {1ホップ経由のベストルート} other {#ホップ経由の最適ルート}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {トークンをインポート} other {トークンをインポート}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {トークンをインポートしてください} other {トークンをインポートしてください}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-11 04:07\n"
"PO-Revision-Date: 2022-03-02 19:11\n"
"Last-Translator: \n"
"Language: ko_KR\n"
"Language-Team: Korean\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "교환을 실행하는 중에 오류가 발생했습니다. 가격변동 허용치를 높여야 할 수도 있습니다. 그래도 작동하지 않으면 교환중인 토큰이 Uniswap과 호환되지 않는 것일 수 있습니다. 참고: 전송 수수료 및 리베이스 토큰은 Uniswap V3와 호환되지 않습니다."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "승인 대기 중 <0/>"
msgid "Approval pending"
msgstr "승인 대기 중"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -288,6 +288,10 @@ msgstr "선택한 가격 범위로 인해 최소 {0} {1} 및 {2} {3} 이 지갑
msgid "Auto"
msgstr "자동"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "자동 라우터"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "자동 라우터 API"
@@ -747,6 +751,8 @@ msgstr "유효한 토큰 주소를 입력하세요."
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "{0} 금액을 입력하세요"
@@ -959,6 +965,8 @@ msgstr "거래를 위한 풀의 유동성 부족"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1700,6 +1708,10 @@ msgstr "<0/>을 정확히 <1/>로 바꿉니다."
msgid "Swap Anyway"
msgstr "어쨌든 스왑"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "스왑 확인됨"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "세부정보 교환"
@@ -1713,6 +1725,10 @@ msgstr "<1/>에 대해 정확히 <0/> 스왑"
msgid "Swap failed: {0}"
msgstr "스왑 실패: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "스왑 보류"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "스왑 요약"
@@ -1906,6 +1922,10 @@ msgstr "제출된 거래"
msgid "Transaction completed in"
msgstr "거래 완료"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "거래 확인됨"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "거래 보류 중"
msgid "Transaction rejected."
msgstr "거래가 거부되었습니다."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "거래 제출"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "이전 토큰"
@@ -2044,6 +2060,7 @@ msgstr "지원되지 않는 네트워크 - 거래하려면 다른 네트워크
msgid "Untitled"
msgstr "제목 없음"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "언랩"
@@ -2052,6 +2069,22 @@ msgstr "언랩"
msgid "Unwrap <0/> to {0}"
msgstr "<0/> 에서 {0}풀기"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "포장 풀기 확인"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "기본 통화 포장을 풉니다."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "언래핑 보류"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "기본 통화 포장 풀기."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "위임 업데이트"
@@ -2220,6 +2253,7 @@ msgstr "{0} UNI-V2 인출"
msgid "Withdrew UNI-V2!"
msgstr "UNI-V2 인출!"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "랩"
@@ -2228,6 +2262,22 @@ msgstr "랩"
msgid "Wrap <0/> to {0}"
msgstr "<0/> 에서 {0}바꿈"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "랩 확인됨"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "기본 통화를 포장합니다."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "랩 대기 중"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "기본 통화 래핑."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "{0} 경유"
msgid "via {0} token list"
msgstr "{0} 토큰 목록을 통해"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {1 홉을 통한 최적의 경로} other {# 홉을 통한 최적의 경로}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {토큰 가져 오기} other {토큰 가져 오기}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {토큰 가져오기} other {토큰 가져오기}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-11 04:07\n"
"PO-Revision-Date: 2022-03-02 19:11\n"
"Last-Translator: \n"
"Language: nl_NL\n"
"Language-Team: Dutch\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "Er is een fout opgetreden bij het uitvoeren van deze swap. Mogelijk moet u uw sliptolerantie verhogen. Als dat niet werkt, is er mogelijk een incompatibiliteit met het token dat u verhandelt. Let op: kosten voor overdracht en rebase tokens zijn niet compatibel met Uniswap V3."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "Goedkeuring in behandeling <0/>"
msgid "Approval pending"
msgstr "In afwachting van goedkeuring"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -288,6 +288,10 @@ msgstr "Tenminste {0} {1} en {2} {3} zullen worden teruggestort naar uw portemon
msgid "Auto"
msgstr "Automatisch"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "Automatische router"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "Automatische router-API"
@@ -747,6 +751,8 @@ msgstr "Voer geldig tokenadres in"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "Voer {0} bedrag in"
@@ -959,6 +965,8 @@ msgstr "Onvoldoende liquiditeit in de pool voor uw transactie"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1700,6 +1708,10 @@ msgstr "Verwissel <0/> voor precies <1/>"
msgid "Swap Anyway"
msgstr "Toch wisselen"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "Ruil bevestigd"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "Ruil details"
@@ -1713,6 +1725,10 @@ msgstr "Wissel exact <0/> in voor <1/>"
msgid "Swap failed: {0}"
msgstr "Wissel mislukt: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "Ruil in behandeling"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "Overzicht omwisselen"
@@ -1906,6 +1922,10 @@ msgstr "Transactie verzonden"
msgid "Transaction completed in"
msgstr "Transactie voltooid in"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "Transactie bevestigd"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "Transactie in behandeling"
msgid "Transaction rejected."
msgstr "Transactie afgewezen."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "Transactie ingediend"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "Token overdragen"
@@ -2044,6 +2060,7 @@ msgstr "Niet-ondersteund netwerk - schakel over naar een ander om te handelen."
msgid "Untitled"
msgstr "Ongetiteld"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "Uitpakken"
@@ -2052,6 +2069,22 @@ msgstr "Uitpakken"
msgid "Unwrap <0/> to {0}"
msgstr "Uitpakken <0/> tot {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "Uitpakken bevestigd"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "Pak de oorspronkelijke valuta uit."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "In behandeling uitpakken"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "Inheemse valuta uitpakken."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "Werk delegatie bij"
@@ -2220,6 +2253,7 @@ msgstr "Opnemen van {0} UNI-V2"
msgid "Withdrew UNI-V2!"
msgstr "UNI-V2 opgenomen!"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "Omloop"
@@ -2228,6 +2262,22 @@ msgstr "Omloop"
msgid "Wrap <0/> to {0}"
msgstr "Wikkel <0/> tot {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "Omslag bevestigd"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "Verpak de eigen valuta."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "Wikkel in behandeling"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "Inpakken van inheemse valuta."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "via {0}"
msgid "via {0} token list"
msgstr "via {0} tokenlijst"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {Beste route via 1 hop} other {Beste route via # hop}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {Import token} other {Import tokens}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {Token importeren} other {Tokens importeren}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-11 04:07\n"
"PO-Revision-Date: 2022-03-02 19:11\n"
"Last-Translator: \n"
"Language: no_NO\n"
"Language-Team: Norwegian\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "Det oppstod en feil under forsøket på å utføre dette byttet. Det kan hende du må øke glidetoleransen. Hvis det ikke fungerer, kan det være en inkompatibilitet med symbolet du handler. Merk: gebyr ved overføring og rebase-tokens er inkompatibelt med Uniswap V3."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "Godkjenning venter <0/>"
msgid "Approval pending"
msgstr "Venter på godkjenning"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -288,6 +288,10 @@ msgstr "Minst {0} {1} og {2} {3} vil bli refundert til lommeboken på grunn av v
msgid "Auto"
msgstr "Auto"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "Auto-ruter"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "Auto Router API"
@@ -747,6 +751,8 @@ msgstr "Oppgi gyldig pollettadresse"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "Skriv inn {0} beløp"
@@ -959,6 +965,8 @@ msgstr "Utilstrekkelig likviditet i bassenget for handelen din"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1700,6 +1708,10 @@ msgstr "Bytt <0/> for nøyaktig <1/>"
msgid "Swap Anyway"
msgstr "Bytt uansett"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "Bytte bekreftet"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "Bytt detaljer"
@@ -1713,6 +1725,10 @@ msgstr "Bytt nøyaktig <0/> for <1/>"
msgid "Swap failed: {0}"
msgstr "Bytting mislyktes: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "Bytte venter"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "Bytte sammendrag"
@@ -1906,6 +1922,10 @@ msgstr "Transaksjon sendt"
msgid "Transaction completed in"
msgstr "Transaksjonen fullført i"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "Transaksjonen bekreftet"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "Transaksjonen venter"
msgid "Transaction rejected."
msgstr "Transaksjonen ble avvist."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "Transaksjonen er sendt inn"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "Overfør token"
@@ -2044,6 +2060,7 @@ msgstr "Ikke støttet nettverk - bytt til et annet for å handle."
msgid "Untitled"
msgstr "Uten navn"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "Pakk opp"
@@ -2052,6 +2069,22 @@ msgstr "Pakk opp"
msgid "Unwrap <0/> to {0}"
msgstr "Pakk ut <0/> til {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "Utpakking bekreftet"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "Pakk opp den opprinnelige valutaen."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "Utpakning venter"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "Utpakning av innfødt valuta."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "Oppdater delegasjon"
@@ -2220,6 +2253,7 @@ msgstr "Trekker tilbake {0} UNI-V2"
msgid "Withdrew UNI-V2!"
msgstr "Avsluttet UNI-V2!"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "Bryt"
@@ -2228,6 +2262,22 @@ msgstr "Bryt"
msgid "Wrap <0/> to {0}"
msgstr "Pakk <0/> til {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "Wrap bekreftet"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "Pakk inn innfødt valuta."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "Innpakning venter"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "Innpakning av innfødt valuta."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "via {0}"
msgid "via {0} token list"
msgstr "via {0} pollett-liste"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {Beste rute via 1 hopp} other {Beste rute via # hopp}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {Importer token} other {Importer tokens}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {Importer token} other {Importer tokens}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-11 04:07\n"
"PO-Revision-Date: 2022-03-02 19:11\n"
"Last-Translator: \n"
"Language: pl_PL\n"
"Language-Team: Polish\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "Wystąpił błąd podczas próby wykonania tej wymiany. Może być konieczne zwiększenie tolerancji na poślizg. Jeśli to nie zadziała, może występować niezgodność z tokenem, którym handlujesz. Uwaga: opłata za transfer i rebase tokeny są niezgodne z Uniswap V3."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "Oczekuje na zatwierdzenie <0/>"
msgid "Approval pending"
msgstr "Oczekuje na zatwierdzenie"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -288,6 +288,10 @@ msgstr "Co najmniej {0} {1} i {2} {3} zostaną zwrócone do twojego portfela z p
msgid "Auto"
msgstr "Auto"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "Automatyczny router"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "Interfejs API automatycznego routera"
@@ -747,6 +751,8 @@ msgstr "Wprowadź prawidłowy adres tokenu"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "Wpisz kwotę {0}"
@@ -959,6 +965,8 @@ msgstr "Niewystarczająca płynność w puli dla Twojej transakcji"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1700,6 +1708,10 @@ msgstr "Zamień <0/> na dokładnie <1/>"
msgid "Swap Anyway"
msgstr "Zamień mimo to"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "Zamiana potwierdzona"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "Zamień szczegóły"
@@ -1713,6 +1725,10 @@ msgstr "Zamień dokładnie <0/> na <1/>"
msgid "Swap failed: {0}"
msgstr "Zamiana nie powiodła się: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "Zamiana w toku"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "Podsumowanie wymiany"
@@ -1906,6 +1922,10 @@ msgstr "Transakcja przesłana"
msgid "Transaction completed in"
msgstr "Transakcja zakończona w"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "Transakcja potwierdzona"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "Transakcja w toku"
msgid "Transaction rejected."
msgstr "Transakcja odrzucona."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "Transakcja przesłana"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "Transfer tokena"
@@ -2044,6 +2060,7 @@ msgstr "Nieobsługiwana sieć - przełącz się na inną, aby handlować."
msgid "Untitled"
msgstr "Nieuprawny"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "Unwrap"
@@ -2052,6 +2069,22 @@ msgstr "Unwrap"
msgid "Unwrap <0/> to {0}"
msgstr "Rozpakuj od <0/> do {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "Potwierdzone rozpakowanie"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "Rozpakuj natywną walutę."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "Oczekiwanie na rozpakowanie"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "Rozpakowywanie rodzimej waluty."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "Zaktualizuj delegację"
@@ -2220,6 +2253,7 @@ msgstr "Wycofanie {0} UNI-V2"
msgid "Withdrew UNI-V2!"
msgstr "Wycofano UNI-V2!"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "Zawijanie"
@@ -2228,6 +2262,22 @@ msgstr "Zawijanie"
msgid "Wrap <0/> to {0}"
msgstr "Zawijaj od <0/> do {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "Zawinięcie potwierdzone"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "Zawijaj natywną walutę."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "Oczekiwanie na zawijanie"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "Pakowanie rodzimej waluty."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "przez {0}"
msgid "via {0} token list"
msgstr "przez {0} listy tokenów"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {Najlepsza trasa przez 1 przeskok} other {Najlepsza trasa przez # przeskoków}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {Importuj token} other {Importuj tokeny}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {Importuj token} other {Importuj tokeny}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-11 04:07\n"
"PO-Revision-Date: 2022-03-02 19:11\n"
"Last-Translator: \n"
"Language: pt_BR\n"
"Language-Team: Portuguese, Brazilian\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "Ocorreu um erro ao tentar executar esta troca. Pode ser necessário aumentar sua tolerância ao deslizamento. Se isso não funcionar, pode haver uma incompatibilidade com o token que você está negociando. Nota: a taxa de transferência e tokens de rebase são incompatíveis com Uniswap V3."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "Aprovação pendente <0/>"
msgid "Approval pending"
msgstr "Aprovação pendente"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -288,6 +288,10 @@ msgstr "Pelo menos {0} {1} e {2} {3} serão reembolsados na sua carteira, devido
msgid "Auto"
msgstr "Automático"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "Roteador automático"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "API Auto Router"
@@ -747,6 +751,8 @@ msgstr "Digite um endereço válido para os tokens"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "Insira o valor {0}"
@@ -959,6 +965,8 @@ msgstr "Liquidez insuficiente no pool para sua negociação"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1700,6 +1708,10 @@ msgstr "Troque <0 /> exatamente por <1 />"
msgid "Swap Anyway"
msgstr "Converter assim mesmo"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "Troca confirmada"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "Trocar detalhes"
@@ -1713,6 +1725,10 @@ msgstr "Troque exatamente <0 /> por <1 />"
msgid "Swap failed: {0}"
msgstr "A troca falhou: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "Troca pendente"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "Resumo da troca"
@@ -1906,6 +1922,10 @@ msgstr "Operação enviada"
msgid "Transaction completed in"
msgstr "Transação concluída em"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "Transação confirmada"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "Transação pendente"
msgid "Transaction rejected."
msgstr "Transação rejeitada."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "Transação enviada"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "Token de transferência"
@@ -2044,6 +2060,7 @@ msgstr "Rede não suportada - mude para outra para negociar."
msgid "Untitled"
msgstr "Sem título"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "Desacobertar"
@@ -2052,6 +2069,22 @@ msgstr "Desacobertar"
msgid "Unwrap <0/> to {0}"
msgstr "Desembrulhe <0/> a {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "Desembrulhar confirmado"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "Desembrulhe a moeda nativa."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "Desempacotar pendente"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "Desembrulhando moeda nativa."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "Atualizar Delegação"
@@ -2220,6 +2253,7 @@ msgstr "Sacar {0} UNI-V2"
msgid "Withdrew UNI-V2!"
msgstr "Sacou UNI-V2!"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "Cobrir"
@@ -2228,6 +2262,22 @@ msgstr "Cobrir"
msgid "Wrap <0/> to {0}"
msgstr "Wrap <0/> a {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "Envelopamento confirmado"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "Embrulhe a moeda nativa."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "Encerramento pendente"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "Embrulhar moeda nativa."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "por meio de {0}"
msgid "via {0} token list"
msgstr "por meio da lista de tokens {0}"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {Melhor rota via 1 hop} other {Melhor rota via # hops}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {Import token} other {Import tokens}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {Importar token} other {Importar fichas}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-11 04:07\n"
"PO-Revision-Date: 2022-03-02 19:11\n"
"Last-Translator: \n"
"Language: pt_PT\n"
"Language-Team: Portuguese\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "Ocorreu um erro ao tentar executar esta troca. Pode ser necessário aumentar sua tolerância ao deslizamento. Se isso não funcionar, pode haver uma incompatibilidade com o token que você está negociando. Nota: a taxa de transferência e tokens de rebase são incompatíveis com Uniswap V3."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "Aprovação pendente <0/>"
msgid "Approval pending"
msgstr "Aprovação pendente"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -288,6 +288,10 @@ msgstr "Pelo menos {0} {1} e {2} {3} serão reembolsados para a sua carteira dev
msgid "Auto"
msgstr "Automático"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "Roteador automático"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "API Auto Router"
@@ -747,6 +751,8 @@ msgstr "Insira um endereço de token válido"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "Insira o valor {0}"
@@ -959,6 +965,8 @@ msgstr "Liquidez insuficiente no pool para sua negociação"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1700,6 +1708,10 @@ msgstr "Troque <0 /> exatamente por <1 />"
msgid "Swap Anyway"
msgstr "Trocar mesmo assim"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "Troca confirmada"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "Trocar detalhes"
@@ -1713,6 +1725,10 @@ msgstr "Troque exatamente <0 /> por <1 />"
msgid "Swap failed: {0}"
msgstr "A troca falhou: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "Troca pendente"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "Resumo da troca"
@@ -1906,6 +1922,10 @@ msgstr "Transação Enviada"
msgid "Transaction completed in"
msgstr "Transação concluída em"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "Transação confirmada"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "Transação pendente"
msgid "Transaction rejected."
msgstr "Transação rejeitada."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "Transação enviada"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "Token de transferência"
@@ -2044,6 +2060,7 @@ msgstr "Rede não suportada - mude para outra para negociar."
msgid "Untitled"
msgstr "Sem título"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "Desembrulhar"
@@ -2052,6 +2069,22 @@ msgstr "Desembrulhar"
msgid "Unwrap <0/> to {0}"
msgstr "Desembrulhe <0/> a {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "Desembrulhar confirmado"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "Desembrulhe a moeda nativa."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "Desempacotar pendente"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "Desembrulhando moeda nativa."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "Atualizar Delegação"
@@ -2220,6 +2253,7 @@ msgstr "Retirando {0} UNI-V2"
msgid "Withdrew UNI-V2!"
msgstr "Levantou UNI-V2!"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "Embrulhar"
@@ -2228,6 +2262,22 @@ msgstr "Embrulhar"
msgid "Wrap <0/> to {0}"
msgstr "Wrap <0/> a {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "Envelopamento confirmado"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "Embrulhe a moeda nativa."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "Encerramento pendente"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "Embrulhar moeda nativa."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "através de {0}"
msgid "via {0} token list"
msgstr "através de {0} lista de token"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {Melhor rota via 1 hop} other {Melhor rota via # hops}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {Importar tokens} other {Importar token}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {Importar token} other {Importar fichas}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-11 04:07\n"
"PO-Revision-Date: 2022-03-02 19:11\n"
"Last-Translator: \n"
"Language: ro_RO\n"
"Language-Team: Romanian\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "A apărut o eroare la încercarea de a executa acest swap. Este posibil să fie nevoie să vă măriți toleranța la alunecare. Dacă acest lucru nu funcționează, poate exista o incompatibilitate cu jetonul pe care îl tranzacționați. Notă: taxa pentru jetoane de transfer și rebase sunt incompatibile cu Uniswap V3."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "Aprobare în așteptare <0/>"
msgid "Approval pending"
msgstr "În curs de aprobare"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -288,6 +288,10 @@ msgstr "Cel puțin {0} {1} și {2} {3} vor fi rambursați în portofelul tău da
msgid "Auto"
msgstr "Automat"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "Router automat"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "Auto Router API"
@@ -747,6 +751,8 @@ msgstr "Introdu o adresă valabilă a grupului"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "Introduceți {0} sumă"
@@ -959,6 +965,8 @@ msgstr "Lichiditate insuficientă în pool pentru tranzacția dvs"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1700,6 +1708,10 @@ msgstr "Schimbați <0 /> pentru exact <1 />"
msgid "Swap Anyway"
msgstr "Schimbă Oricum"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "Schimbarea a fost confirmată"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "Schimbați detalii"
@@ -1713,6 +1725,10 @@ msgstr "Schimbați exact <0 /> cu <1 />"
msgid "Swap failed: {0}"
msgstr "Schimbarea a eșuat: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "Schimb în așteptare"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "Rezumat schimb"
@@ -1906,6 +1922,10 @@ msgstr "Tranzacție Trimisă"
msgid "Transaction completed in"
msgstr "Tranzacție finalizată în"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "Tranzacție confirmată"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "Tranzacție în așteptare"
msgid "Transaction rejected."
msgstr "Tranzacția respinsă."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "Tranzacție trimisă"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "Jeton de transfer"
@@ -2044,6 +2060,7 @@ msgstr "Rețea neacceptată - comutați la alta pentru a tranzacționa."
msgid "Untitled"
msgstr "Fără titlu"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "Despachetează"
@@ -2052,6 +2069,22 @@ msgstr "Despachetează"
msgid "Unwrap <0/> to {0}"
msgstr "Desfaceți <0/> la {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "Desfacere confirmată"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "Desfaceți moneda nativă."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "Desfacere în așteptare"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "Desfacerea monedei native."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "Actualizează Delegarea"
@@ -2220,6 +2253,7 @@ msgstr "Retragere {0} UNI-V2"
msgid "Withdrew UNI-V2!"
msgstr "S-au retras UNI-V2!"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "Împachetează"
@@ -2228,6 +2262,22 @@ msgstr "Împachetează"
msgid "Wrap <0/> to {0}"
msgstr "Înfășurați <0/> la {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "Wrap confirmat"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "Încheiați moneda nativă."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "Wrap în așteptare"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "Încheierea monedei native."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "prin {0}"
msgid "via {0} token list"
msgstr "prin {0} lista de jetoane"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {Cel mai bun traseu printr-un hop} other {Cel mai bun traseu prin # hamei}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {Importă jetonul} other {Importă jetoane}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {Import token} other {Importați jetoane}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-12 15:07\n"
"PO-Revision-Date: 2022-03-02 19:11\n"
"Last-Translator: \n"
"Language: ru_RU\n"
"Language-Team: Russian\n"
@@ -217,8 +217,8 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "Произошла ошибка при попытке произвести этот обмен. Возможно, нужно увеличить допустимое проскальзывание. Если это не сработает, возможно, имеет место несовместимость с токеном, которым вы торгуете. Обратите внимание: токены с комиссией за перевод или изменяемой базой несовместимы с Uniswap V3."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgstr "Ожидается одобрение <0/>"
msgid "Approval pending"
msgstr "Ожидается подтверждение"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -288,6 +288,10 @@ msgstr "Не менее {0} {1} и {2} {3} будут возвращены на
msgid "Auto"
msgstr "Авто"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "Автомаршрутизатор"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "API автомаршрутизатора"
@@ -747,6 +751,8 @@ msgstr "Введите правильный адрес токена"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "Введите сумму в {0}"
@@ -959,6 +965,8 @@ msgstr "Недостаточно ликвидности в пуле для ва
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1700,6 +1708,10 @@ msgstr "Обменять <0/> на ровно <1/>"
msgid "Swap Anyway"
msgstr "Всё равно обменять"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "Обмен подтвержден"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "Подробности обмена"
@@ -1713,6 +1725,10 @@ msgstr "Обменять ровно <0/> на <1/>"
msgid "Swap failed: {0}"
msgstr "Обмен не удался: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "Ожидается обмен"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "Общая информация об обмене"
@@ -1906,6 +1922,10 @@ msgstr "Транзакция отправлена"
msgid "Transaction completed in"
msgstr "Транзакция завершена за"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "Транзакция подтверждена"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "Транзакция подтверждается"
msgid "Transaction rejected."
msgstr "Транзакция отклонена."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "Транзакция отправлена"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "Перевести токен"
@@ -2044,6 +2060,7 @@ msgstr "Сеть не поддерживается; переключитесь
msgid "Untitled"
msgstr "Без названия"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "Развернуть"
@@ -2052,6 +2069,22 @@ msgstr "Развернуть"
msgid "Unwrap <0/> to {0}"
msgstr "Развернуть <0/> в {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "Развернуть подтверждено"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "Развернуть нативную валюту."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "Развернуть в ожидании"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "Распаковка нативной валюты."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "Обновить делегирование"
@@ -2220,6 +2253,7 @@ msgstr "Вывод {0} UNI-V2"
msgid "Withdrew UNI-V2!"
msgstr "Вы вывели UNI-V2!"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "Завернуть"
@@ -2228,6 +2262,22 @@ msgstr "Завернуть"
msgid "Wrap <0/> to {0}"
msgstr "Завернуть <0/> в {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "Обертывание подтверждено"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "Оберните нативную валюту."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "Ожидание переноса"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "Накрутка нативной валюты."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "из {0}"
msgid "via {0} token list"
msgstr "из списка токенов {0}"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {Лучший маршрут через 1 прыжок} other {Лучший маршрут через #hops}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {Импортировать токен} other {Импортировать токены}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {Импортный токен} other {Импортируйте токены}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-02-17 15:11\n"
"PO-Revision-Date: 2022-03-02 19:11\n"
"Last-Translator: \n"
"Language: sl_SI\n"
"Language-Team: Slovenian\n"
@@ -217,7 +217,7 @@ msgid "An error occurred when trying to execute this swap. You may need to incre
msgstr "Pri poskusu izvedbe te zamenjave je prišlo do napake. Morda boste morali povečati toleranco do zdrsa. Če to ne deluje, je morda težava v nezdružljivosti z žetonom, s katerim trgujete. Pozor: žetoni s provizijami ob prenosu in uravnavani (rebase) žetoni niso združljivi z Uniswap V3."
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending <0/>"
msgid "Approval pending"
msgstr "Odobritev je v teku"
#: src/components/earn/StakingModal.tsx
@@ -288,6 +288,10 @@ msgstr "V vašo denarnico bo zaradi izbranega cenovnega razpona vrnjeno vsaj {0}
msgid "Auto"
msgstr "Samodejno"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "Auto Router"
msgstr "Samodejni iskalnik poti"
#: src/components/Settings/index.tsx
msgid "Auto Router API"
msgstr "API samodejnega iskalnika poti"
@@ -747,6 +751,8 @@ msgstr "Vnesite veljaven naslov žetona"
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
msgid "Enter {0} amount"
msgstr "Vnesite znesek {0}"
@@ -959,6 +965,8 @@ msgstr "Sklad ima prenizko likvidnost za ta posel."
#: src/hooks/useWrapCallback.tsx
#: src/hooks/useWrapCallback.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
@@ -1700,6 +1708,10 @@ msgstr "Menjaj <0/> za natanko <1/>"
msgid "Swap Anyway"
msgstr "Vseeno zamenjaj"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "Zamenjava potrjena"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
msgstr "Podrobnosti menjave"
@@ -1713,6 +1725,10 @@ msgstr "Menjaj natanko <0/> za <1/>"
msgid "Swap failed: {0}"
msgstr "Menjava je spodletela: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "Zamenjava v teku"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
msgstr "Povzetek menjave"
@@ -1906,6 +1922,10 @@ msgstr "Transakcija oddana"
msgid "Transaction completed in"
msgstr "Transakcija je bila zaključena v "
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "Transakcija potrjena"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
msgid "Transaction deadline"
@@ -1920,10 +1940,6 @@ msgstr "Transakcija v teku"
msgid "Transaction rejected."
msgstr "Transakcija zavrnjena."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction submitted"
msgstr "Transakcija oddana"
#: src/pages/CreateProposal/ProposalActionSelector.tsx
msgid "Transfer Token"
msgstr "Prenos žetona"
@@ -2044,6 +2060,7 @@ msgstr "To omrežje ni podprto za trgovanje preklopite na drugo omrežje."
msgid "Untitled"
msgstr "Brez naslova"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Unwrap"
msgstr "Odvij"
@@ -2052,6 +2069,22 @@ msgstr "Odvij"
msgid "Unwrap <0/> to {0}"
msgstr "Odvijte <0/> v {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "Razvijanje potrjeno"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
msgstr "Odvijte domačo valuto."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "Razvijanje čaka"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "Razvijanje domače valute."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
msgstr "Posodobi pooblastilo"
@@ -2220,6 +2253,7 @@ msgstr "Dvigujem {0} UNI-V2"
msgid "Withdrew UNI-V2!"
msgstr "UNI-V2 dvignjen!"
#: src/lib/components/Swap/SwapButton.tsx
#: src/pages/Swap/index.tsx
msgid "Wrap"
msgstr "Ovij"
@@ -2228,6 +2262,22 @@ msgstr "Ovij"
msgid "Wrap <0/> to {0}"
msgstr "Ovijte <0/> v {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "Zavijanje potrjeno"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "Zavijte domačo valuto."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "Zavijanje čaka"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "Zavijanje domače valute."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
@@ -2443,9 +2493,13 @@ msgstr "preko {0}"
msgid "via {0} token list"
msgstr "prek seznama žetonov {0}"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {Najboljša pot preko 1 skoka} other {Najboljša pot prek # skokov}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, one {Import token} other {Import tokens}}"
msgstr "{0, plural, one {Uvozi žeton} other {Uvozi žetone}}"
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {Uvozi žeton} other {Uvozi žetone}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx

Some files were not shown because too many files have changed in this diff Show More