Compare commits

...

85 Commits

Author SHA1 Message Date
Moody Salem
ec5da7ec8f fix: update walletconnect for deep links and scalability (#2215) 2021-08-18 12:26:00 -05:00
Crowdin Bot
ff10346b06 chore(i18n): synchronize translations from crowdin [skip ci] 2021-08-17 11:04:45 +00:00
Crowdin Bot
f15522a47c chore(i18n): synchronize translations from crowdin [skip ci] 2021-08-17 00:09:22 +00:00
Crowdin Bot
67b66235ba chore(i18n): synchronize translations from crowdin [skip ci] 2021-08-16 23:05:26 +00:00
Zach Pomerantz
7153908935 chore: fix SEO and accessibility nits for Lighthouse (#2212)
* refactor: index.html

* chore: preconnect to GA

* chore(SEO): add meta content

* chore(SEO): add alt to ethereum logo

* chore(accessibility): add aria-labels to menus

* chore(accessibility): mark AppBody as main

* chore(accessibility): update nav link ids

* chore(accessibility): set html.lang to match i18n locale

* chore(refactor): mv html.lang to useEffect
2021-08-16 18:30:52 -04:00
Crowdin Bot
4541e37388 chore(i18n): synchronize translations from crowdin [skip ci] 2021-08-16 13:18:27 +00:00
Crowdin Bot
3bbcdcb8ae chore(i18n): synchronize translations from crowdin [skip ci] 2021-08-13 22:05:18 +00:00
Zach Pomerantz
2daee152ef chore(i18n): do not compile i18n messages (#2211) 2021-08-13 14:03:14 -07:00
Zach Pomerantz
9af7e0e0c3 chore(i18n): touch en-US to prevent lingui from adding a creation date (#2210)
Fixes #2198. Touching en-US.po before extracting messages prevents lingui from adding a creation date, maintaining deterministic builds and IPFS hashes.
2021-08-13 14:02:59 -07:00
Noah Zinsmeister
757741c3df fix: use @walletconnect/ethereum-provider instead of @walletconnect/web3-provider (#2175)
* use @walletconnect/ethereum-provider

* bump to support client-side disconnect
2021-08-13 10:01:56 -05:00
Moody Salem
a3aa6647e7 chore: set default_bump to false per https://github.com/mathieudutour/github-tag-action/issues/85 2021-08-11 10:19:37 -05:00
Moody Salem
f463df97bf fix: do not construct routes with the same pool twice (#2196) 2021-08-11 10:15:53 -05:00
Ian Lapham
99a282b7b4 update blocked address list (#2182)
Co-authored-by: Ian Lapham <ianlapham@Ians-MacBook-Pro.local>
2021-08-10 10:30:54 -04:00
Moody Salem
5a3165358f fix: #isTradeBetter should check that output currencies are equal (#2177)
* fix: isTradeBetter should check that input/output are equal

* fix the fix
2021-08-10 09:25:43 -05:00
Moody Salem
26e334c78f fix: proposal descriptions should be pulled from the right governor (#2176) 2021-08-10 08:53:22 -05:00
Justin Domingue
bd8192c81e update chinese simplified and traditional display names (#2180) 2021-08-10 09:05:17 -04:00
Justin Domingue
ff6bd38992 add ReactGA event for full range (#2181) 2021-08-10 09:05:05 -04:00
Justin Domingue
a48b7ce702 fix: avoid running BestV3Trade when tokens are the same (#2172)
* avoid running BestV3Trade when tokens are the same

* flipped condition
2021-08-09 10:38:23 -04:00
Crowdin Bot
fc08d1fc6a chore(i18n): synchronize translations from crowdin [skip ci] 2021-08-06 20:05:37 +00:00
Ian Lapham
b416603ff4 update unsupported list (#2143)
Co-authored-by: Ian Lapham <ianlapham@Ians-MacBook-Pro.local>
2021-08-05 20:52:17 -04:00
Justin Domingue
c4dc26e1b2 fix: rename weth9 to weth (#2133)
* update @uniswap/sdk-core and @uniswap/v3-sdk

* reorder
2021-08-05 14:43:02 -04:00
Justin Domingue
adfe7225a8 upgrade to walletconnect 1.5.2 (#2134) 2021-08-04 08:49:46 -04:00
dependabot[bot]
13e347ee02 chore(deps): bump tar from 6.1.0 to 6.1.4 (#2132)
Bumps [tar](https://github.com/npm/node-tar) from 6.1.0 to 6.1.4.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-tar/compare/v6.1.0...v6.1.4)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-04 08:40:22 -04:00
Crowdin Bot
b527bfbeea chore(i18n): synchronize translations from crowdin [skip ci] 2021-08-03 12:05:13 +00:00
Crowdin Bot
a25df00ef6 chore(i18n): synchronize translations from crowdin [skip ci] 2021-08-03 08:05:04 +00:00
Crowdin Bot
2446a6e88b chore(i18n): synchronize translations from crowdin [skip ci] 2021-08-03 07:04:40 +00:00
Crowdin Bot
3b3bf14e8a chore(i18n): synchronize translations from crowdin [skip ci] 2021-08-02 19:04:33 +00:00
Crowdin Bot
017e79f7ae chore(i18n): synchronize translations from crowdin [skip ci] 2021-08-02 17:09:09 +00:00
Crowdin Bot
804fe8f5ee chore(i18n): synchronize translations from crowdin [skip ci] 2021-08-02 15:05:55 +00:00
Jordan Frankfurt
bf01b0d342 fix: optimism link and some copy changes (#2126)
* fix: optimism link

* fix: (un)planned downtime copy changes
2021-08-02 10:50:46 -04:00
Crowdin Bot
f46f73f35f chore(i18n): synchronize translations from crowdin [skip ci] 2021-08-02 06:05:04 +00:00
Crowdin Bot
cad3575247 chore(i18n): synchronize translations from crowdin [skip ci] 2021-08-02 03:10:20 +00:00
Crowdin Bot
17aa9fcdb0 chore(i18n): synchronize translations from crowdin [skip ci] 2021-07-31 12:05:49 +00:00
Crowdin Bot
087745d7c6 chore(i18n): synchronize translations from crowdin [skip ci] 2021-07-31 08:05:54 +00:00
Lint Action
20e6ca6fd5 Fix code style issues with ESLint 2021-07-30 22:06:48 +00:00
Justin Domingue
d51b7e779b update full range documentation link 2021-07-30 15:05:43 -07:00
Matthew Quinn
cfd0412d78 fix: center import pool text V2 (#2122)
* fix: center import pool text V2

* fix: updated based on feedback

Co-authored-by: Matthew Quinn <matthew.quinn@libertymutual.com>
2021-07-30 14:39:46 -04:00
Matthew Quinn
50afef03cb fix: update mobile header to fix overflow (#2125)
Co-authored-by: Matthew Quinn <matthew.quinn@libertymutual.com>
2021-07-30 14:38:40 -04:00
Crowdin Bot
43b6e7abf4 chore(i18n): synchronize translations from crowdin [skip ci] 2021-07-30 05:04:40 +00:00
Moody Salem
64b9df8710 fix: upgrade ethers to allow constructing transaction data compatible with eip-1559 (#2121)
* fix: upgrade ethers to allow constructing transaction data compatible with eip-1559

* bump the experimental provider
2021-07-29 17:46:35 -05:00
Crowdin Bot
d75271484a chore(i18n): synchronize translations from crowdin [skip ci] 2021-07-29 21:04:53 +00:00
Justin Domingue
952cc98df3 fix: add support for full range positions in add liquidity (#2090)
* remove arbitrary range buttons and move full range button

* better align full range to deposit

* support dragging range when in full range

* hack to support full range brushing

* restore zoom levels

* adjusted for mocks

* fix styling

* simplify type

* restore rate toggle change

* fix lower bound by looking at isSorted

* better align bottoms

* add reset button for full range positions

* only flip when not at limit

* fix +/- buttons in range selector

* add help link
2021-07-29 13:47:03 -07:00
Crowdin Bot
9b7637e012 chore(i18n): synchronize translations from crowdin [skip ci] 2021-07-29 19:04:45 +00:00
Jordan Frankfurt
a7f599127b add link (#2113) 2021-07-29 14:16:47 -04:00
Jordan Frankfurt
676890d89c fix(L2): update downtime warning copy (#2114) 2021-07-29 14:16:09 -04:00
Lint Action
beb1bf3bdc Fix code style issues with ESLint 2021-07-29 17:26:43 +00:00
Justin Domingue
631c202c49 document useQueryCacheInvalidator
explains why `chainId` is pulled directly from the store.
2021-07-29 10:25:29 -07:00
Moody Salem
491c9b4fd3 fix: upgrade walletconnect to 1.5.1 (#2120)
* upgrade walletconnect to 1.5.0

* bump again
2021-07-28 13:48:10 -05:00
Crowdin Bot
dcaed9094e chore(i18n): synchronize translations from crowdin [skip ci] 2021-07-28 11:04:43 +00:00
Jeffrey Lin
8996ba6e38 fix: toggle liquidity position when toggling rates (#2117)
If field A and field B are already populated, chances are the user wants
them to remain the same and only wants to invert the price range
selector.

The conversion isn't exact, but should be preferable to the previous
behavior.
2021-07-27 16:57:52 -07:00
Crowdin Bot
c8570e5427 chore(i18n): synchronize translations from crowdin [skip ci] 2021-07-27 20:04:39 +00:00
Ian Lapham
2806f6513a feat: use modal for txn confirmation on l2 (#2055)
* use modal for txn confirmation on l2

* update with error state

* remove 1 translation

* dedicated L2 component

* update styling on to be less jumpy

* add success animation to modal

* revert regular submitted content

* remove useless hook in popups

* remove import

Co-authored-by: Ian Lapham <ian_lapham@alumni.brown.edu>
2021-07-27 15:55:47 -04:00
Noah Zinsmeister
422c703e71 Revert "feat(uma): uma call option routing (#1385)"
This reverts commit 89d484d882.
2021-07-26 14:19:29 -04:00
Noah Zinsmeister
506493e8ab Revert "feat(routing): support mirror protocol routing as additional bases (#1375)"
This reverts commit 3198129af2.
2021-07-26 13:51:53 -04:00
Justin Domingue
8dfd143208 test: set up component snapshot testing (#2102)
* set up snapshot testing

* improvements

* add tests for TextInput as an example

* Fix code style issues with ESLint

* add comment to custom-test-env file

* only set up needed providers

* include style rules in snapshots

* disable redux storage warning

* added setupTests to avoid boilerplate

Co-authored-by: Lint Action <lint-action@samuelmeuli.com>
2021-07-26 10:41:08 -07:00
Moody Salem
718003b6f2 fix: prevent error if user selects ETH and WETH in add liquidity (#2112)
* fix: prevent error if user selects ETH and WETH in add liquidity

fixes https://github.com/Uniswap/uniswap-interface/issues/1763

* linting error

* revert changes to Tokens.ts
2021-07-26 11:08:15 -05:00
Moody Salem
80b3aa9e61 fix: remove html ids and unnecessary keys from the menu 2021-07-26 07:34:11 -05:00
Ian Lapham
4078390a48 update unsupported and broken lists (#2100) 2021-07-23 18:05:14 -04:00
Justin Domingue
e07599ef0f fix: better support decimal overflow (#2075)
* better support decimal overflow

* improve tests

* explicitly define num digits in toSignificant

* add tests for 0 decimals

* undo change to tryParseAmount and instead compute price without relying on parse

* remove console log and add test

* removed comment

* addressed pr feedback

* improve parsing logic

* addressed pr feedback
2021-07-23 11:11:30 -07:00
Ian Lapham
311bdc19b3 add UniH to unsupported list (#2097) 2021-07-23 13:46:05 -04:00
Moody Salem
a6342d40f1 feat: support connecting to a gnosis safe (#2096)
* feat: support connecting to a gnosis safe

* add the manifest.json attributes required by gnosis safe

* remove background fill

* copy

* only try injected provider if not active after trying safe
2021-07-23 12:04:18 -05:00
Moody Salem
3686506f2a perf: remove extra spread operators from the combine maps function 2021-07-23 09:27:23 -05:00
Moody Salem
634d010d92 perf: list to token map function was doing too many reduces (#2095) 2021-07-23 09:16:56 -05:00
Moody Salem
979f29ad62 chore: copy edit on CONTRIBUTING.md 2021-07-22 16:14:55 -05:00
Justin Domingue
4d3ed5d6ba feat: routing api integration (#2080)
* initial routing api integration

* add routing api slice

* display route in dialog

* addressed pr feedback

* switch to `get`

* renamed useRouterTradeExactIn to useRouter

* moving few files to later iteration

* removed unnecessary `as`

* switch to polling

* add todo for blocknumber freshness

* remove account-slippage-deadline
2021-07-21 15:08:35 -07:00
Moody Salem
ea79fbc2e0 chore: add blurb about release process (#2061)
* chore: add blurb about release process

* additional standard

* how to collect feedback
2021-07-20 16:10:58 -05:00
Jordan Frankfurt
4d19122bd2 set 5 min deadline on swaps and hide UI on L2 (#2081) 2021-07-20 12:41:49 -04:00
Moody Salem
13d7d2c992 fix(swap): double max gas for quoting a v3 swap for large trades 2021-07-19 19:00:52 -05:00
Brendan Weinstein
02cf33e115 Update WalletLink and @web3-react/walletlink-connector (#2079) 2021-07-19 14:52:11 -07:00
Justin Domingue
1f62cdf7a2 fix: invert selected range on RateToggle instead of clearing inputs (#2078) 2021-07-19 11:22:46 -07:00
Crowdin Bot
701e8fe116 chore(i18n): synchronize translations from crowdin [skip ci] 2021-07-19 13:09:18 +00:00
Crowdin Bot
3207e6026e chore(i18n): synchronize translations from crowdin [skip ci] 2021-07-19 10:05:27 +00:00
Justin Domingue
b0d93dbc0e increase zoom out range (#2076) 2021-07-16 19:14:39 -07:00
Justin Domingue
975a5e3434 remove unused dependencies (#2074) 2021-07-16 15:03:19 -07:00
Ian Lapham
07f52f02ff feat: only block on app url, mobile UI tweaks (#2073)
* start iframe ui updates

* replace hook with constant

* add origin check for blocked lists

* remove origin check for local unsupported list

* remove redundant retun

* remove iframe check

* undo local change
2021-07-16 15:28:19 -04:00
Crowdin Bot
5f112611c8 chore(i18n): synchronize translations from crowdin [skip ci] 2021-07-16 18:22:45 +00:00
Justin Domingue
1d82a4c71e fix: set language using url param in language dropdown (#2063)
* set language using url param in language dropdown

* refactor common code into a hook

* add hook

* address pr feedback
2021-07-16 10:56:33 -07:00
Justin Domingue
6004c4be3e fix: change panning cursor to col-resize (#2071)
* change panning cursor to col-resize

* revert to grabby, and support grabbing
2021-07-16 10:49:27 -07:00
Justin Domingue
a00432c1c3 fix: remove chart clamping and show indicator when handle is off screen (#2064)
* initial off screen indicator

* adjust offscreen indicator

* add off screen handle indicator

* hide reset until we get a better behavior

* add svg.tsx
2021-07-15 16:31:06 -07:00
Crowdin Bot
a184afa41e chore(i18n): synchronize translations from crowdin [skip ci] 2021-07-15 22:05:15 +00:00
Crowdin Bot
49fd256e79 chore(i18n): synchronize translations from crowdin [skip ci] 2021-07-15 17:09:03 +00:00
Crowdin Bot
c006edf696 chore(i18n): synchronize translations from crowdin [skip ci] 2021-07-15 16:05:00 +00:00
Moody Salem
b16dd2a930 chore: add one more unit test for ALL_SUPPORTED_CHAIN_IDS 2021-07-15 10:04:43 -05:00
Moody Salem
08a8f669e8 fix: all supported chain ids should not include the string keys of the enum 2021-07-15 09:59:26 -05:00
Justin Domingue
95d91c8528 fix: add language selector in top-level menu (#2057)
* initial language selector

* set > icon opacity for consistency

* always reset menu to main on close

* always reset menu on menu open
2021-07-15 07:46:05 -07:00
100 changed files with 4610 additions and 1724 deletions

View File

@@ -23,6 +23,7 @@ jobs:
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
release_branches: .*
default_bump: false
create_release:
name: Create Release

View File

@@ -1,3 +1,4 @@
# Contributing
Thank you for your interest in contributing to the Uniswap interface! 🦄
@@ -23,6 +24,7 @@ makes large architectural changes, consider following all the standards.
- Have at least one engineer approve of large code refactorings
- At least manually test small code changes, prefer automated tests
- Thoroughly unit test when code is not obviously correct
- If something breaks, add automated tests so it doesn't break again
- Add integration tests for new pages or flows
- Verify that all CI checks pass before merging
- Have at least one product manager or designer approve of significant UX changes
@@ -42,6 +44,20 @@ The following points should help guide your development:
- Accessibility: anyone can use the interface
- The interface should be responsive, small and run well on low performance devices (majority of swaps on mobile!)
## Release process
Releases are cut automatically from the `main` branch Monday-Thursday in the morning according to the [release workflow](./.github/workflows/release.yaml).
Fix pull requests should be merged whenever ready and tested.
If a fix is urgently needed in production, releases can be manually triggered on [GitHub](https://github.com/Uniswap/uniswap-interface/actions/workflows/release.yaml)
after the fix is merged into `main`.
Features should not be merged into `main` until they are ready for users.
When building larger features or collaborating with other developers, create a new branch from `main` to track its development.
Use the automatic Vercel preview for sharing the feature to collect feedback.
When the feature is ready for review, create a new pull request from the feature branch into `main` and request reviews from
the appropriate UX reviewers (PMs or designers).
## Finding a first issue
Start with issues with the label
@@ -49,13 +65,11 @@ Start with issues with the label
# Translations
Help Uniswap reach a global audience!
Uniswap uses [Crowdin](https://crowdin.com/project/uniswap-interface) for managing translations.
[This workflow](./.github/workflows/crowdin.yaml) uploads new strings for translation to the Crowdin project whenever code using the [lingui translation macros](https://lingui.js.org/ref/macro.html) is merged into `main`.
Uniswap uses [Crowdin](https://crowdin.com/project/uniswap-interface)
for managing translations. Whenever a new string is added to the project,
it gets uploaded to Crowdin for translation by [this workflow](./.github/workflows/crowdin.yaml).
Every hour, translations are synced from Crowdin to the repository in [this other workflow](./.github/workflows/crowdin-sync.yaml).
Every hour, translations are synced back down from Crowdin to the repository in [this other workflow](./.github/workflows/crowdin-sync.yaml).
We sync to the repository on a schedule, rather than download translations at build time, so that builds are always reproducible.
You can contribute by joining Crowdin to proofread existing translations [here](https://crowdin.com/project/uniswap-interface/invite?d=93i5n413q403t4g473p443o4c3t2g3s21343u2c3n403l4b3v2735353i4g4k4l4g453j4g4o4j4e4k4b323l4a3h463s4g453q443m4e3t2b303s2a35353l403o443v293e303k4g4n4r4g483i4g4r4j4e4o473i5n4a3t463t4o4)

16
custom-test-env.js Normal file
View File

@@ -0,0 +1,16 @@
// Custom test environment to provide `TextEncoder`/`TextDecoder`
// eslint-disable-next-line @typescript-eslint/no-var-requires
const Environment = require('jest-environment-jsdom')
module.exports = class CustomTestEnvironment extends Environment {
async setup() {
await super.setup()
if (typeof this.global.TextEncoder === 'undefined') {
// eslint-disable-next-line @typescript-eslint/no-var-requires
const { TextEncoder, TextDecoder } = require('util')
this.global.TextEncoder = TextEncoder
this.global.TextDecoder = TextDecoder
}
}
}

View File

@@ -4,7 +4,8 @@
"homepage": ".",
"private": true,
"devDependencies": {
"@ethersproject/experimental": "^5.2.0",
"@ethersproject/experimental": "^5.4.0",
"@gnosis.pm/safe-apps-web3-react": "^0.6.0",
"@graphql-codegen/cli": "1.21.5",
"@graphql-codegen/typescript": "1.22.3",
"@graphql-codegen/typescript-operations": "^1.18.2",
@@ -18,7 +19,9 @@
"@reach/dialog": "^0.10.3",
"@reach/portal": "^0.10.3",
"@react-hook/window-scroll": "^1.3.0",
"@reduxjs/toolkit": "^1.6.0",
"@reduxjs/toolkit": "^1.6.1",
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^12.0.0",
"@typechain/ethers-v5": "^7.0.0",
"@types/d3": "^6.7.1",
"@types/jest": "^25.2.1",
@@ -26,7 +29,6 @@
"@types/lingui__macro": "^2.7.4",
"@types/lingui__react": "^2.8.3",
"@types/lodash.flatmap": "^4.5.6",
"@types/lodash.inrange": "^3.3.6",
"@types/luxon": "^1.24.4",
"@types/ms.macro": "^2.0.0",
"@types/multicodec": "^1.0.0",
@@ -49,19 +51,20 @@
"@uniswap/governance": "^1.0.2",
"@uniswap/liquidity-staker": "^1.0.2",
"@uniswap/merkle-distributor": "1.0.1",
"@uniswap/sdk-core": "^3.0.1",
"@uniswap/token-lists": "^1.0.0-beta.25",
"@uniswap/v2-core": "1.0.0",
"@uniswap/v2-periphery": "^1.1.0-beta.0",
"@uniswap/v2-sdk": "^3.0.0-alpha.2",
"@uniswap/v3-core": "1.0.0",
"@uniswap/v3-periphery": "^1.1.1",
"@uniswap/v3-sdk": "^3.2.1",
"@uniswap/v3-sdk": "^3.3.0",
"@web3-react/core": "^6.0.9",
"@web3-react/fortmatic-connector": "^6.0.9",
"@web3-react/injected-connector": "^6.0.7",
"@web3-react/portis-connector": "^6.0.9",
"@web3-react/walletconnect-connector": "^6.2.0",
"@web3-react/walletlink-connector": "^6.2.0",
"@web3-react/walletconnect-connector": "^7.0.2-alpha.0",
"@web3-react/walletlink-connector": "^6.2.3",
"ajv": "^6.12.3",
"cids": "^1.0.0",
"copy-to-clipboard": "^3.2.0",
@@ -73,13 +76,12 @@
"eslint-plugin-prettier": "^3.1.3",
"eslint-plugin-react": "^7.19.0",
"eslint-plugin-react-hooks": "^4.0.0",
"ethers": "^5.2.0",
"ethers": "^5.4.0",
"graphql": "^15.5.0",
"graphql-request": "^3.4.0",
"inter-ui": "^3.13.1",
"lightweight-charts": "^3.3.0",
"jest-styled-components": "^7.0.5",
"lodash.flatmap": "^4.5.0",
"lodash.inrange": "^3.3.6",
"luxon": "^1.25.0",
"ms.macro": "^2.0.0",
"multicodec": "^3.0.1",
@@ -123,21 +125,21 @@
"workbox-strategies": "^6.1.0"
},
"resolutions": {
"@walletconnect/web3-provider": "1.5.0-rc.5"
"@walletconnect/ethereum-provider": "1.6.2"
},
"scripts": {
"compile-contract-types": "yarn compile-external-abi-types && yarn compile-v3-contract-types",
"compile-external-abi-types": "typechain --target ethers-v5 --out-dir src/abis/types './src/abis/**/*.json'",
"compile-v3-contract-types": "typechain --target ethers-v5 --out-dir src/types/v3 './node_modules/@uniswap/?(v3-core|v3-periphery)/artifacts/contracts/**/*.json'",
"build": "yarn compile-contract-types && yarn graphql:generate && yarn i18n:extract && yarn i18n:compile && react-scripts build",
"build": "yarn compile-contract-types && yarn graphql:generate && yarn i18n:extract && react-scripts build",
"i18n:extract": "lingui extract --locale en-US",
"i18n:compile": "lingui compile",
"integration-test": "start-server-and-test 'serve build -l 3000' http://localhost:3000 'cypress run --record'",
"graphql:generate": "graphql-codegen --config codegen.yml",
"postinstall": "yarn compile-contract-types",
"start": "yarn compile-contract-types && react-scripts start",
"test": "react-scripts test --env=jsdom",
"prestart": "yarn graphql:generate && touch src/locales/en-US.po"
"test": "react-scripts test --env=./custom-test-env.js",
"prei18n:extract": "touch src/locales/en-US.po",
"prestart": "yarn graphql:generate && yarn prei18n:extract"
},
"eslintConfig": {
"extends": "react-app",

View File

@@ -0,0 +1,11 @@
<svg width="257" height="256" viewBox="0 0 257 256" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M96.4347 60.2768C94.3434 59.9524 94.2552 59.9143 95.2394 59.7631C97.1254 59.473 101.579 59.8683 104.648 60.5981C111.812 62.3011 118.331 66.6637 125.29 74.4117L127.139 76.4701L129.784 76.0449C140.926 74.2544 152.26 75.6774 161.741 80.057C164.349 81.2619 168.461 83.6603 168.975 84.2766C169.138 84.473 169.439 85.7374 169.642 87.0866C170.347 91.7544 169.994 95.3323 168.567 98.0046C167.79 99.4588 167.746 99.9197 168.268 101.164C168.686 102.157 169.848 102.892 170.999 102.891C173.355 102.888 175.891 99.0791 177.066 93.78L177.532 91.6751L178.457 92.7224C183.528 98.4681 187.512 106.304 188.196 111.881L188.374 113.336L187.522 112.014C186.054 109.739 184.58 108.19 182.693 106.941C179.29 104.69 175.693 103.923 166.164 103.421C157.559 102.968 152.689 102.233 147.859 100.658C139.643 97.9792 135.501 94.4114 125.74 81.6059C121.405 75.918 118.726 72.7711 116.06 70.2368C110.004 64.4784 104.053 61.4584 96.4347 60.2768Z" fill="#FF007A"/>
<path d="M170.916 72.9763C171.132 69.1649 171.649 66.651 172.688 64.3552C173.099 63.4465 173.485 62.7027 173.544 62.7027C173.604 62.7027 173.425 63.3735 173.147 64.1931C172.391 66.4212 172.267 69.4687 172.788 73.0144C173.448 77.5132 173.824 78.1623 178.579 83.022C180.809 85.3014 183.403 88.1762 184.344 89.4105L186.054 91.6547L184.344 90.0508C182.253 88.0895 177.444 84.2644 176.381 83.7176C175.669 83.3509 175.563 83.3573 175.124 83.7946C174.719 84.1975 174.634 84.803 174.577 87.6654C174.49 92.1267 173.882 94.9901 172.414 97.8533C171.621 99.4019 171.495 99.0714 172.214 97.3235C172.75 96.0184 172.805 95.4446 172.801 91.1259C172.792 82.4485 171.762 80.3624 165.721 76.7887C164.19 75.8834 161.668 74.5778 160.117 73.8872C158.565 73.1965 157.333 72.595 157.378 72.5501C157.549 72.3798 163.441 74.0995 165.812 75.0117C169.339 76.3686 169.922 76.5444 170.35 76.3807C170.637 76.271 170.776 75.4347 170.916 72.9763Z" fill="#FF007A"/>
<path d="M100.497 87.8209C96.2514 81.9758 93.6246 73.0138 94.1933 66.3144L94.3691 64.2413L95.3355 64.4176C97.1504 64.7486 100.28 65.9133 101.745 66.8033C105.766 69.2453 107.506 72.4605 109.277 80.7164C109.796 83.1346 110.477 85.8712 110.79 86.7976C111.294 88.2889 113.199 91.7721 114.748 94.0343C115.864 95.6636 115.123 96.4356 112.657 96.213C108.89 95.873 103.788 92.3519 100.497 87.8209Z" fill="#FF007A"/>
<path d="M165.766 131.323C145.925 123.335 138.937 116.4 138.937 104.7C138.937 102.979 138.996 101.57 139.068 101.57C139.14 101.57 139.908 102.138 140.774 102.833C144.797 106.06 149.303 107.438 161.776 109.258C169.115 110.328 173.245 111.193 177.056 112.457C189.166 116.473 196.658 124.624 198.445 135.725C198.964 138.951 198.66 145 197.818 148.188C197.153 150.706 195.125 155.245 194.588 155.419C194.439 155.468 194.292 154.896 194.254 154.118C194.05 149.95 191.943 145.891 188.406 142.851C184.383 139.395 178.979 136.643 165.766 131.323Z" fill="#FF007A"/>
<path d="M151.837 134.642C151.588 133.163 151.157 131.273 150.879 130.444L150.372 128.935L151.313 129.991C152.614 131.451 153.642 133.32 154.514 135.81C155.179 137.71 155.254 138.275 155.249 141.362C155.244 144.393 155.161 145.029 154.546 146.739C153.578 149.436 152.376 151.348 150.359 153.4C146.735 157.089 142.075 159.131 135.351 159.978C134.182 160.125 130.775 160.373 127.78 160.529C120.232 160.922 115.264 161.733 110.801 163.3C110.159 163.525 109.586 163.662 109.528 163.604C109.347 163.425 112.386 161.613 114.897 160.404C118.436 158.699 121.96 157.768 129.854 156.454C133.754 155.804 137.781 155.016 138.804 154.702C148.461 151.741 153.426 144.1 151.837 134.642Z" fill="#FF007A"/>
<path d="M160.932 150.795C158.296 145.128 157.691 139.657 159.135 134.554C159.289 134.009 159.538 133.562 159.687 133.562C159.837 133.562 160.459 133.899 161.07 134.31C162.284 135.127 164.721 136.505 171.212 140.044C179.311 144.46 183.929 147.879 187.07 151.786C189.82 155.208 191.522 159.104 192.341 163.856C192.805 166.548 192.533 173.024 191.843 175.735C189.665 184.281 184.604 190.993 177.385 194.911C176.327 195.484 175.377 195.955 175.275 195.958C175.172 195.96 175.557 194.98 176.131 193.78C178.56 188.703 178.836 183.765 177 178.269C175.876 174.904 173.584 170.797 168.956 163.857C163.575 155.788 162.256 153.641 160.932 150.795Z" fill="#FF007A"/>
<path d="M86.4067 181.371C93.7696 175.154 102.931 170.738 111.276 169.382C114.872 168.798 120.864 169.03 124.194 169.882C129.532 171.248 134.307 174.308 136.791 177.954C139.218 181.517 140.259 184.622 141.343 191.53C141.771 194.255 142.236 196.992 142.377 197.611C143.191 201.192 144.775 204.054 146.739 205.491C149.857 207.773 155.227 207.915 160.509 205.855C161.405 205.505 162.184 205.263 162.238 205.318C162.43 205.508 159.77 207.288 157.894 208.226C155.369 209.487 153.361 209.975 150.693 209.975C145.855 209.975 141.839 207.514 138.487 202.495C137.828 201.508 136.346 198.55 135.193 195.922C131.655 187.851 129.907 185.393 125.799 182.702C122.223 180.361 117.612 179.941 114.143 181.642C109.586 183.876 108.315 189.699 111.579 193.39C112.876 194.856 115.295 196.121 117.273 196.367C120.973 196.828 124.153 194.013 124.153 190.277C124.153 187.851 123.221 186.467 120.873 185.407C117.668 183.961 114.222 185.652 114.238 188.663C114.245 189.947 114.805 190.754 116.092 191.336C116.918 191.71 116.937 191.74 116.263 191.6C113.322 190.99 112.633 187.444 114.998 185.09C117.837 182.264 123.709 183.511 125.725 187.368C126.572 188.988 126.67 192.215 125.932 194.164C124.279 198.525 119.46 200.819 114.571 199.571C111.243 198.721 109.887 197.801 105.874 193.667C98.9012 186.484 96.1941 185.092 86.141 183.523L84.2146 183.222L86.4067 181.371Z" fill="#FF007A"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M33.8241 20.4645C57.1114 48.7285 93.0139 92.734 94.7963 95.1977C96.2679 97.232 95.7141 99.0609 93.1929 100.494C91.7909 101.291 88.9084 102.099 87.4652 102.099C85.8329 102.099 83.9939 101.313 82.6548 100.042C81.7084 99.1447 77.8882 93.4402 69.0694 79.7566C62.3216 69.2863 56.6747 60.6007 56.5206 60.4553C56.1644 60.119 56.1705 60.1303 68.3813 81.9787C76.0487 95.6979 78.6371 100.548 78.6371 101.197C78.6371 102.516 78.2771 103.21 76.6495 105.025C73.9363 108.052 72.7235 111.453 71.8479 118.492C70.8664 126.382 68.1064 131.955 60.4577 141.494C55.9803 147.078 55.2477 148.102 54.118 150.352C52.695 153.187 52.3037 154.774 52.1451 158.353C51.9775 162.137 52.3039 164.581 53.46 168.199C54.4721 171.366 55.5285 173.458 58.2292 177.641C60.5599 181.251 61.9019 183.933 61.9019 184.983C61.9019 185.818 62.0613 185.819 65.6729 185.003C74.316 183.052 81.3341 179.619 85.2812 175.412C87.724 172.808 88.2975 171.371 88.3161 167.802C88.3283 165.469 88.2462 164.98 87.6153 163.637C86.5884 161.452 84.7188 159.635 80.5983 156.818C75.1992 153.127 72.8932 150.156 72.2562 146.07C71.7337 142.717 72.3399 140.351 75.3267 134.091C78.4182 127.612 79.1843 124.85 79.7025 118.319C80.0372 114.1 80.5008 112.435 81.7131 111.1C82.9776 109.707 84.1158 109.235 87.245 108.808C92.3466 108.111 95.5951 106.791 98.2652 104.33C100.582 102.196 101.551 100.139 101.7 97.0427L101.813 94.6959L100.518 93.1867C95.8304 87.7209 30.6848 16.168 30.3963 16.168C30.3347 16.168 31.8773 18.1015 33.8241 20.4645ZM64.5333 162.634C65.5932 160.757 65.0301 158.344 63.2572 157.166C61.5821 156.052 58.9799 156.576 58.9799 158.028C58.9799 158.471 59.2248 158.793 59.7768 159.077C60.7063 159.555 60.7738 160.093 60.0425 161.192C59.3019 162.306 59.3616 163.284 60.2111 163.949C61.5802 165.021 63.5183 164.432 64.5333 162.634Z" fill="#FF007A"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M105.032 110.039C102.637 110.774 100.309 113.312 99.5884 115.974C99.1487 117.598 99.3982 120.446 100.057 121.325C101.121 122.746 102.149 123.12 104.935 123.101C110.389 123.063 115.131 120.724 115.682 117.799C116.134 115.402 114.051 112.08 111.183 110.622C109.703 109.87 106.555 109.571 105.032 110.039ZM111.408 115.024C112.249 113.829 111.881 112.537 110.451 111.664C107.726 110 103.607 111.377 103.607 113.95C103.607 115.231 105.755 116.629 107.724 116.629C109.035 116.629 110.829 115.847 111.408 115.024Z" fill="#FF007A"/>
</svg>

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

@@ -2,6 +2,14 @@
<html translate="no">
<head>
<meta charset="utf-8" />
<title>Uniswap Interface</title>
<meta name="description" content="Uniswap Interface" />
<!--
%PUBLIC_URL% will be replaced with the URL of the `public` folder during build.
Only files inside the `public` folder can be referenced from the HTML.
-->
<link rel="shortcut icon" type="image/png" href="%PUBLIC_URL%/favicon.png" />
<link rel="apple-touch-icon" sizes="192x192" href="%PUBLIC_URL%/images/192x192_App_Icon.png" />
<link rel="apple-touch-icon" sizes="512x512" href="%PUBLIC_URL%/images/512x512_App_Icon.png" />
@@ -9,20 +17,14 @@
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#ff007a" />
<meta name="fortmatic-site-verification" content="j93LgcVZk79qcgyo" />
<!--
manifest.json provides metadata used when your web app is installed on a
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
manifest.json provides metadata used when the app is installed as a PWA.
See https://developers.google.com/web/fundamentals/web-app-manifest/
-->
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<!--
Notice the use of %PUBLIC_URL% in the tags above.
It will be replaced with the URL of the `public` folder during the build.
Only files inside the `public` folder can be referenced from the HTML.
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
<link rel="preconnect" href="https://www.google-analytics.com/">
<style>
* {
@@ -83,8 +85,6 @@
}
}
</style>
<title>Uniswap Interface</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>

View File

@@ -2,6 +2,7 @@
"background_color": "#fff",
"display": "standalone",
"homepage_url": "https://app.uniswap.org",
"providedBy": { "name": "Uniswap", "url": "https://uniswap.org" },
"icons": [
{
"src": "./images/192x192_App_Icon.png",
@@ -18,6 +19,8 @@
],
"orientation": "portrait",
"name": "Uniswap",
"description": "Swap or provide liquidity on the Uniswap Protocol",
"iconPath": "./images/256x256_App_Icon_Pink.svg",
"short_name": "Uniswap",
"start_url": ".",
"theme_color": "#ff007a"

View File

@@ -9,6 +9,7 @@ const BLOCKED_ADDRESSES: string[] = [
'0x901bb9583b24D97e995513C6778dc6888AB6870e',
'0xA7e5d5A720f06526557c513402f2e6B5fA20b008',
'0x8576aCC5C05D6Ce88f4e49bf65BdF0C62F91353C',
'0xC8a65Fadf0e0dDAf421F28FEAb69Bf6E2E589963',
]
export default function Blocklist({ children }: { children: ReactNode }) {

View File

@@ -50,7 +50,7 @@ export default function CurrencyLogo({
}, [currency, uriLocations])
if (currency?.isNative) {
return <StyledEthereumLogo src={EthereumLogo} size={size} style={style} {...rest} />
return <StyledEthereumLogo src={EthereumLogo} alt="ethereum logo" size={size} style={style} {...rest} />
}
return <StyledLogo size={size} srcs={srcs} alt={`${currency?.symbol ?? 'token'} logo`} style={style} {...rest} />

View File

@@ -192,14 +192,15 @@ const StyledNavLink = styled(NavLink).attrs({
text-decoration: none;
color: ${({ theme }) => theme.text2};
font-size: 1rem;
width: fit-content;
font-weight: 500;
padding: 8px 12px;
word-break: break-word;
overflow: hidden;
white-space: nowrap;
&.${activeClassName} {
border-radius: 12px;
font-weight: 600;
justify-content: center;
color: ${({ theme }) => theme.text1};
background-color: ${({ theme }) => theme.bg2};
}
@@ -285,11 +286,11 @@ export default function Header() {
<Trans>Pool</Trans>
</StyledNavLink>
{chainId && chainId === SupportedChainId.MAINNET && (
<StyledNavLink id={`stake-nav-link`} to={'/vote'}>
<StyledNavLink id={`vote-nav-link`} to={'/vote'}>
<Trans>Vote</Trans>
</StyledNavLink>
)}
<StyledExternalLink id={`stake-nav-link`} href={infoLink}>
<StyledExternalLink id={`charts-nav-link`} href={infoLink}>
<Trans>Charts</Trans>
<sup></sup>
</StyledExternalLink>

View File

@@ -1,169 +0,0 @@
import React, { useRef, useState, useEffect, useCallback, Dispatch, SetStateAction, ReactNode } from 'react'
import { createChart, IChartApi } from 'lightweight-charts'
import { darken } from 'polished'
import { RowBetween } from 'components/Row'
import Card from '../Card'
import styled from 'styled-components/macro'
import useTheme from 'hooks/useTheme'
const Wrapper = styled(Card)`
width: 100%;
padding: 1rem;
display: flex;
background-color: ${({ theme }) => theme.bg0};
flex-direction: column;
> * {
font-size: 1rem;
}
`
const DEFAULT_HEIGHT = 300
type LineChartProps = {
data: any[]
color?: string | undefined
height?: number | undefined
setValue?: Dispatch<SetStateAction<number | undefined>> // used for value on hover
topLeft?: ReactNode | undefined
topRight?: ReactNode | undefined
bottomLeft?: ReactNode | undefined
bottomRight?: ReactNode | undefined
} & React.HTMLAttributes<HTMLDivElement>
const LineChart = ({
data,
color = '#56B2A4',
setValue,
topLeft,
topRight,
bottomLeft,
bottomRight,
height = DEFAULT_HEIGHT,
...rest
}: LineChartProps) => {
const theme = useTheme()
const chartRef = useRef<HTMLDivElement>(null)
const [chartCreated, setChart] = useState<IChartApi | undefined>()
// for reseting value on hover exit
const currenValue = data[data.length - 1].value
const handleResize = useCallback(() => {
if (chartCreated && chartRef?.current?.parentElement) {
chartCreated.resize(chartRef.current.parentElement.clientWidth - 32, height)
chartCreated.timeScale().fitContent()
chartCreated.timeScale().scrollToPosition(0, false)
}
}, [chartCreated, chartRef, height])
// add event listener for resize
const isClient = typeof window === 'object'
useEffect(() => {
if (!isClient) {
return
}
window.addEventListener('resize', handleResize)
return () => window.removeEventListener('resize', handleResize)
}, [isClient, chartRef, handleResize]) // Empty array ensures that effect is only run on mount and unmount
const textColor = theme.text2
// if chart not instantiated in canvas, create it
useEffect(() => {
if (!chartCreated && data && !!chartRef?.current?.parentElement) {
const chart = createChart(chartRef.current, {
height: height,
width: chartRef.current.parentElement.clientWidth - 32,
layout: {
backgroundColor: 'transparent',
textColor: textColor,
fontFamily: 'Inter',
},
rightPriceScale: {
scaleMargins: {
top: 0.1,
bottom: 0.1,
},
borderVisible: false,
},
timeScale: {
borderVisible: false,
},
watermark: {
color: 'rgba(0, 0, 0, 0)',
},
grid: {
horzLines: {
visible: false,
},
vertLines: {
visible: false,
},
},
crosshair: {
horzLine: {
visible: true,
style: 3,
width: 1,
color: '#505050',
labelBackgroundColor: color,
},
vertLine: {
visible: true,
style: 3,
width: 1,
color: '#505050',
labelBackgroundColor: color,
},
},
})
const series = chart.addAreaSeries({
lineColor: color,
topColor: darken(0.4, color),
bottomColor: theme.bg0,
lineWidth: 2,
priceLineVisible: false,
})
series.setData(data)
// update the title when hovering on the chart
chart.subscribeCrosshairMove(function (param) {
if (
chartRef?.current &&
(param === undefined ||
param.time === undefined ||
(param && param.point && param.point.x < 0) ||
(param && param.point && param.point.x > chartRef.current.clientWidth) ||
(param && param.point && param.point.y < 0) ||
(param && param.point && param.point.y > height))
) {
setValue && setValue(currenValue)
} else {
const price = parseFloat(param.seriesPrices.get(series)?.toString() ?? currenValue)
setValue && setValue(price)
}
})
chart.timeScale().fitContent()
setChart(chart)
}
}, [color, chartCreated, currenValue, data, height, setValue, textColor, theme])
return (
<Wrapper>
<RowBetween>
{topLeft ?? null}
{topRight ?? null}
</RowBetween>
<div ref={chartRef} id={'line-chart'} {...rest} />
<RowBetween>
{bottomLeft ?? null}
{bottomRight ?? null}
</RowBetween>
</Wrapper>
)
}
export default LineChart

View File

@@ -1,14 +1,14 @@
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
import { BrushBehavior, brushX, D3BrushEvent, ScaleLinear, select } from 'd3'
import styled from 'styled-components/macro'
import { brushHandleAccentPath, brushHandlePath } from 'components/LiquidityChartRangeInput/svg'
import { brushHandleAccentPath, brushHandlePath, OffScreenHandle } from 'components/LiquidityChartRangeInput/svg'
import usePrevious from 'hooks/usePrevious'
const Handle = styled.path<{ color: string }>`
cursor: ew-resize;
pointer-events: none;
stroke-width: 4;
stroke-width: 3;
stroke: ${({ color }) => color};
fill: ${({ color }) => color};
`
@@ -40,7 +40,11 @@ const Tooltip = styled.text`
// flips the handles draggers when close to the container edges
const FLIP_HANDLE_THRESHOLD_PX = 20
const compare = (a1: [number, number], a2: [number, number]): boolean => a1[0] !== a2[0] || a1[1] !== a2[1]
// margin to prevent tick snapping from putting the brush off screen
const BRUSH_EXTENT_MARGIN_PX = 2
const compare = (a1: [number, number], a2: [number, number], xScale: ScaleLinear<number, number>): boolean =>
xScale(a1[0]) !== xScale(a2[0]) || xScale(a1[1]) !== xScale(a2[1])
export const Brush = ({
id,
@@ -59,7 +63,7 @@ export const Brush = ({
interactive: boolean
brushLabelValue: (d: 'w' | 'e', x: number) => string
brushExtent: [number, number]
setBrushExtent: (extent: [number, number]) => void
setBrushExtent: (extent: [number, number], mode: string | undefined) => void
innerWidth: number
innerHeight: number
westHandleColor: string
@@ -76,7 +80,9 @@ export const Brush = ({
const previousBrushExtent = usePrevious(brushExtent)
const brushed = useCallback(
({ type, selection }: D3BrushEvent<unknown>) => {
(event: D3BrushEvent<unknown>) => {
const { type, selection, mode } = event
if (!selection) {
setLocalBrushExtent(null)
return
@@ -85,8 +91,8 @@ export const Brush = ({
const scaled = (selection as [number, number]).map(xScale.invert) as [number, number]
// avoid infinite render loop by checking for change
if (type === 'end' && compare(brushExtent, scaled)) {
setBrushExtent(scaled)
if (type === 'end' && compare(brushExtent, scaled, xScale)) {
setBrushExtent(scaled, mode)
}
setLocalBrushExtent(scaled)
@@ -106,8 +112,8 @@ export const Brush = ({
brushBehavior.current = brushX<SVGGElement>()
.extent([
[Math.max(0, xScale(0)), 0],
[innerWidth, innerHeight],
[Math.max(0 + BRUSH_EXTENT_MARGIN_PX, xScale(0)), 0],
[innerWidth - BRUSH_EXTENT_MARGIN_PX, innerHeight],
])
.handleSize(30)
.filter(() => interactive)
@@ -115,7 +121,7 @@ export const Brush = ({
brushBehavior.current(select(brushRef.current))
if (previousBrushExtent && compare(brushExtent, previousBrushExtent)) {
if (previousBrushExtent && compare(brushExtent, previousBrushExtent, xScale)) {
select(brushRef.current)
.transition()
.call(brushBehavior.current.move as any, brushExtent.map(xScale))
@@ -136,15 +142,26 @@ export const Brush = ({
brushBehavior.current.move(select(brushRef.current) as any, brushExtent.map(xScale) as any)
}, [brushExtent, xScale])
// show labels when local brush changes
useEffect(() => {
setShowLabels(true)
const timeout = setTimeout(() => setShowLabels(false), 1500)
return () => clearTimeout(timeout)
}, [localBrushExtent])
// variables to help render the SVGs
const flipWestHandle = localBrushExtent && xScale(localBrushExtent[0]) > FLIP_HANDLE_THRESHOLD_PX
const flipEastHandle = localBrushExtent && xScale(localBrushExtent[1]) > innerWidth - FLIP_HANDLE_THRESHOLD_PX
const showWestArrow = localBrushExtent && (xScale(localBrushExtent[0]) < 0 || xScale(localBrushExtent[1]) < 0)
const showEastArrow =
localBrushExtent && (xScale(localBrushExtent[0]) > innerWidth || xScale(localBrushExtent[1]) > innerWidth)
const westHandleInView =
localBrushExtent && xScale(localBrushExtent[0]) >= 0 && xScale(localBrushExtent[0]) <= innerWidth
const eastHandleInView =
localBrushExtent && xScale(localBrushExtent[1]) >= 0 && xScale(localBrushExtent[1]) <= innerWidth
return useMemo(
() => (
<>
@@ -156,11 +173,7 @@ export const Brush = ({
{/* clips at exactly the svg area */}
<clipPath id={`${id}-brush-clip`}>
<rect x="0" y="0" width={innerWidth} height="100%" />
</clipPath>
<clipPath id={`${id}-handles-clip`}>
<rect x="0" y="0" width="100%" height="100%" />
<rect x="0" y="0" width={innerWidth} height={innerHeight} />
</clipPath>
</defs>
@@ -176,48 +189,56 @@ export const Brush = ({
{localBrushExtent && (
<>
{/* west handle */}
<g
transform={`translate(${Math.max(0, xScale(localBrushExtent[0]))}, 0), scale(${
flipWestHandle ? '-1' : '1'
}, 1)`}
>
<g clipPath={`url(#${id}-handles-clip)`}>
<Handle color={westHandleColor} d={brushHandlePath(innerHeight)} />
<HandleAccent d={brushHandleAccentPath()} />
</g>
<LabelGroup
transform={`translate(50,0), scale(${flipWestHandle ? '1' : '-1'}, 1)`}
visible={showLabels || hovering}
{westHandleInView ? (
<g
transform={`translate(${Math.max(0, xScale(localBrushExtent[0]))}, 0), scale(${
flipWestHandle ? '-1' : '1'
}, 1)`}
>
<TooltipBackground y="0" x="-30" height="30" width="60" rx="8" />
<Tooltip transform={`scale(-1, 1)`} y="15" dominantBaseline="middle">
{brushLabelValue('w', localBrushExtent[0])}
</Tooltip>
</LabelGroup>
</g>
<g>
<Handle color={westHandleColor} d={brushHandlePath(innerHeight)} />
<HandleAccent d={brushHandleAccentPath()} />
</g>
<LabelGroup
transform={`translate(50,0), scale(${flipWestHandle ? '1' : '-1'}, 1)`}
visible={showLabels || hovering}
>
<TooltipBackground y="0" x="-30" height="30" width="60" rx="8" />
<Tooltip transform={`scale(-1, 1)`} y="15" dominantBaseline="middle">
{brushLabelValue('w', localBrushExtent[0])}
</Tooltip>
</LabelGroup>
</g>
) : null}
{/* east handle */}
<g
transform={`translate(${Math.min(xScale(localBrushExtent[1]), innerWidth)}, 0), scale(${
flipEastHandle ? '-1' : '1'
}, 1)`}
>
<g clipPath={`url(#${id}-handles-clip)`}>
<Handle color={eastHandleColor} d={brushHandlePath(innerHeight)} />
<HandleAccent d={brushHandleAccentPath()} />
</g>
{eastHandleInView ? (
<g transform={`translate(${xScale(localBrushExtent[1])}, 0), scale(${flipEastHandle ? '-1' : '1'}, 1)`}>
<g>
<Handle color={eastHandleColor} d={brushHandlePath(innerHeight)} />
<HandleAccent d={brushHandleAccentPath()} />
</g>
<LabelGroup
transform={`translate(50,0), scale(${flipEastHandle ? '-1' : '1'}, 1)`}
visible={showLabels || hovering}
>
<TooltipBackground y="0" x="-30" height="30" width="60" rx="8" />
<Tooltip y="15" dominantBaseline="middle">
{brushLabelValue('e', localBrushExtent[1])}
</Tooltip>
</LabelGroup>
</g>
<LabelGroup
transform={`translate(50,0), scale(${flipEastHandle ? '-1' : '1'}, 1)`}
visible={showLabels || hovering}
>
<TooltipBackground y="0" x="-30" height="30" width="60" rx="8" />
<Tooltip y="15" dominantBaseline="middle">
{brushLabelValue('e', localBrushExtent[1])}
</Tooltip>
</LabelGroup>
</g>
) : null}
{showWestArrow && <OffScreenHandle color={westHandleColor} />}
{showEastArrow && (
<g transform={`translate(${innerWidth}, 0) scale(-1, 1)`}>
<OffScreenHandle color={eastHandleColor} />
</g>
)}
</>
)}
</>
@@ -225,6 +246,7 @@ export const Brush = ({
[
brushLabelValue,
eastHandleColor,
eastHandleInView,
flipEastHandle,
flipWestHandle,
hovering,
@@ -232,8 +254,11 @@ export const Brush = ({
innerHeight,
innerWidth,
localBrushExtent,
showEastArrow,
showLabels,
showWestArrow,
westHandleColor,
westHandleInView,
xScale,
]
)

View File

@@ -1,11 +1,12 @@
import { max, scaleLinear, ZoomTransform } from 'd3'
import { useEffect, useMemo, useRef, useState } from 'react'
import { Bound } from 'state/mint/v3/actions'
import { Area } from './Area'
import { AxisBottom } from './AxisBottom'
import { Brush } from './Brush'
import { Line } from './Line'
import { ChartEntry, LiquidityChartRangeInputProps } from './types'
import Zoom from './Zoom'
import Zoom, { ZoomOverlay } from './Zoom'
export const xAccessor = (d: ChartEntry) => d.price0
export const yAccessor = (d: ChartEntry) => d.activeLiquidity
@@ -13,6 +14,7 @@ export const yAccessor = (d: ChartEntry) => d.activeLiquidity
export function Chart({
id = 'liquidityChartRangeInput',
data: { series, current },
ticksAtLimit,
styles,
dimensions: { width, height },
margins,
@@ -22,7 +24,7 @@ export function Chart({
onBrushDomainChange,
zoomLevels,
}: LiquidityChartRangeInputProps) {
const svgRef = useRef<SVGSVGElement | null>(null)
const zoomRef = useRef<SVGRectElement | null>(null)
const [zoom, setZoom] = useState<ZoomTransform | null>(null)
@@ -56,25 +58,31 @@ export function Chart({
useEffect(() => {
if (!brushDomain) {
onBrushDomainChange(xScale.domain() as [number, number])
onBrushDomainChange(xScale.domain() as [number, number], undefined)
}
}, [brushDomain, onBrushDomainChange, xScale])
// ensures the brush remains in view and adapts to zooms
xScale.clamp(true)
return (
<>
<Zoom
svg={svgRef.current}
svg={zoomRef.current}
xScale={xScale}
setZoom={setZoom}
innerWidth={innerWidth}
innerHeight={innerHeight}
showClear={Boolean(zoom && zoom.k !== 1)}
width={innerWidth}
height={
// allow zooming inside the x-axis
height
}
resetBrush={() => {
onBrushDomainChange(
[current * zoomLevels.initialMin, current * zoomLevels.initialMax] as [number, number],
'reset'
)
}}
showResetButton={Boolean(ticksAtLimit[Bound.LOWER] || ticksAtLimit[Bound.UPPER])}
zoomLevels={zoomLevels}
/>
<svg ref={svgRef} width="100%" height="100%" viewBox={`0 0 ${width} ${height}`} style={{ overflow: 'visible' }}>
<svg width="100%" height="100%" viewBox={`0 0 ${width} ${height}`} style={{ overflow: 'visible' }}>
<defs>
<clipPath id={`${id}-chart-clip`}>
<rect x="0" y="0" width={innerWidth} height={height} />
@@ -117,6 +125,8 @@ export function Chart({
<AxisBottom xScale={xScale} innerHeight={innerHeight} />
</g>
<ZoomOverlay width={innerWidth} height={height} ref={zoomRef} />
<Brush
id={id}
xScale={xScale}

View File

@@ -1,7 +1,7 @@
import React, { useEffect, useMemo, useRef } from 'react'
import { ButtonGray } from 'components/Button'
import styled from 'styled-components/macro'
import { ScaleLinear, select, ZoomBehavior, zoom, ZoomTransform } from 'd3'
import { ScaleLinear, select, ZoomBehavior, zoom, ZoomTransform, zoomIdentity } from 'd3'
import { RefreshCcw, ZoomIn, ZoomOut } from 'react-feather'
import { ZoomLevels } from './types'
@@ -26,26 +26,37 @@ const Button = styled(ButtonGray)`
padding: 4px;
`
export const ZoomOverlay = styled.rect`
fill: transparent;
cursor: grab;
&:active {
cursor: grabbing;
}
`
export default function Zoom({
svg,
xScale,
setZoom,
innerWidth,
innerHeight,
showClear,
width,
height,
resetBrush,
showResetButton,
zoomLevels,
}: {
svg: SVGSVGElement | null
svg: SVGElement | null
xScale: ScaleLinear<number, number>
setZoom: (transform: ZoomTransform) => void
innerWidth: number
innerHeight: number
showClear: boolean
width: number
height: number
resetBrush: () => void
showResetButton: boolean
zoomLevels: ZoomLevels
}) {
const zoomBehavior = useRef<ZoomBehavior<Element, unknown>>()
const [zoomIn, zoomOut, reset, initial] = useMemo(
const [zoomIn, zoomOut, zoomInitial, zoomReset] = useMemo(
() => [
() =>
svg &&
@@ -64,15 +75,16 @@ export default function Zoom({
zoomBehavior.current &&
select(svg as Element)
.transition()
.call(zoomBehavior.current.scaleTo, 1),
.call(zoomBehavior.current.scaleTo, 0.5),
() =>
svg &&
zoomBehavior.current &&
select(svg as Element)
.call(zoomBehavior.current.transform, zoomIdentity.translate(0, 0).scale(1))
.transition()
.call(zoomBehavior.current.scaleTo, 0.5),
],
[svg, zoomBehavior]
[svg]
)
useEffect(() => {
@@ -80,30 +92,30 @@ export default function Zoom({
zoomBehavior.current = zoom()
.scaleExtent([zoomLevels.min, zoomLevels.max])
.translateExtent([
[0, 0],
[innerWidth, innerHeight],
])
.extent([
[0, 0],
[innerWidth, innerHeight],
[width, height],
])
.on('zoom', ({ transform }: { transform: ZoomTransform }) => setZoom(transform))
select(svg as Element)
.call(zoomBehavior.current)
.on('mousedown.zoom', null)
}, [innerHeight, innerWidth, setZoom, svg, xScale, zoomBehavior, zoomLevels, zoomLevels.max, zoomLevels.min])
select(svg as Element).call(zoomBehavior.current)
}, [height, width, setZoom, svg, xScale, zoomBehavior, zoomLevels, zoomLevels.max, zoomLevels.min])
useEffect(() => {
// reset zoom to initial on zoomLevel chang
initial()
}, [initial, zoomLevels])
// reset zoom to initial on zoomLevel change
zoomInitial()
}, [zoomInitial, zoomLevels])
return (
<Wrapper count={showClear ? 3 : 2}>
{showClear && (
<Button onClick={reset} disabled={false}>
<Wrapper count={showResetButton ? 3 : 2}>
{showResetButton && (
<Button
onClick={() => {
resetBrush()
zoomReset()
}}
disabled={false}
>
<RefreshCcw size={16} />
</Button>
)}

View File

@@ -22,19 +22,19 @@ const ZOOM_LEVELS: Record<FeeAmount, ZoomLevels> = {
[FeeAmount.LOW]: {
initialMin: 0.999,
initialMax: 1.001,
min: 0.001,
min: 0.00001,
max: 1.5,
},
[FeeAmount.MEDIUM]: {
initialMin: 0.5,
initialMax: 2,
min: 0.01,
min: 0.00001,
max: 20,
},
[FeeAmount.HIGH]: {
initialMin: 0.5,
initialMax: 2,
min: 0.01,
min: 0.00001,
max: 20,
},
}
@@ -87,6 +87,8 @@ export default function LiquidityChartRangeInput({
const tokenAColor = useColor(currencyA?.wrapped)
const tokenBColor = useColor(currencyB?.wrapped)
const isSorted = currencyA && currencyB && currencyA?.wrapped.sortsBefore(currencyB?.wrapped)
const { isLoading, isUninitialized, isError, error, formattedData } = useDensityChartData({
currencyA,
currencyB,
@@ -94,7 +96,7 @@ export default function LiquidityChartRangeInput({
})
const onBrushDomainChangeEnded = useCallback(
(domain) => {
(domain, mode) => {
let leftRangeValue = Number(domain[0])
const rightRangeValue = Number(domain[1])
@@ -104,40 +106,48 @@ export default function LiquidityChartRangeInput({
batch(() => {
// simulate user input for auto-formatting and other validations
leftRangeValue > 0 && onLeftRangeInput(leftRangeValue.toFixed(6))
rightRangeValue > 0 && onRightRangeInput(rightRangeValue.toFixed(6))
if (
(!ticksAtLimit[isSorted ? Bound.LOWER : Bound.UPPER] || mode === 'handle' || mode === 'reset') &&
leftRangeValue > 0
) {
onLeftRangeInput(leftRangeValue.toFixed(6))
}
if ((!ticksAtLimit[isSorted ? Bound.UPPER : Bound.LOWER] || mode === 'reset') && rightRangeValue > 0) {
// todo: remove this check. Upper bound for large numbers
// sometimes fails to parse to tick.
if (rightRangeValue < 1e35) {
onRightRangeInput(rightRangeValue.toFixed(6))
}
}
})
},
[onLeftRangeInput, onRightRangeInput]
[isSorted, onLeftRangeInput, onRightRangeInput, ticksAtLimit]
)
interactive = interactive && Boolean(formattedData?.length)
const brushDomain: [number, number] | undefined = useMemo(() => {
const isSorted = currencyA && currencyB && currencyA?.wrapped.sortsBefore(currencyB?.wrapped)
const leftPrice = isSorted ? priceLower : priceUpper?.invert()
const rightPrice = isSorted ? priceUpper : priceLower?.invert()
return leftPrice && rightPrice
? [parseFloat(leftPrice?.toSignificant(5)), parseFloat(rightPrice?.toSignificant(5))]
? [parseFloat(leftPrice?.toSignificant(6)), parseFloat(rightPrice?.toSignificant(6))]
: undefined
}, [currencyA, currencyB, priceLower, priceUpper])
}, [isSorted, priceLower, priceUpper])
const brushLabelValue = useCallback(
(d: 'w' | 'e', x: number) => {
if (!price) return ''
if (d === 'w' && ticksAtLimit[Bound.LOWER]) return '0'
if (d === 'e' && ticksAtLimit[Bound.UPPER]) return '∞'
//const percent = (((x < price ? -1 : 1) * (Math.max(x, price) - Math.min(x, price))) / Math.min(x, price)) * 100
if (d === 'w' && ticksAtLimit[isSorted ? Bound.LOWER : Bound.UPPER]) return '0'
if (d === 'e' && ticksAtLimit[isSorted ? Bound.UPPER : Bound.LOWER]) return '∞'
const percent = (x < price ? -1 : 1) * ((Math.max(x, price) - Math.min(x, price)) / price) * 100
return price ? `${format(Math.abs(percent) > 1 ? '.2~s' : '.2~f')(percent)}%` : ''
},
[price, ticksAtLimit]
[isSorted, price, ticksAtLimit]
)
if (isError) {
@@ -189,6 +199,7 @@ export default function LiquidityChartRangeInput({
brushDomain={brushDomain}
onBrushDomainChange={onBrushDomainChangeEnded}
zoomLevels={ZOOM_LEVELS[feeAmount ?? FeeAmount.MEDIUM]}
ticksAtLimit={ticksAtLimit}
/>
</ChartWrapper>
)}

View File

@@ -20,7 +20,7 @@ export const brushHandlePath = (height: number) =>
`v ${height}`, // vertical line
'm 1 0', // move 1px to the right
`V 0`, // second vertical line
`M 0 2`, // move to origin
`M 0 1`, // move to origin
// head
'h 12', // horizontal line
@@ -33,10 +33,29 @@ export const brushHandlePath = (height: number) =>
export const brushHandleAccentPath = () =>
[
'm 6 8', // move to first accent
'm 5 7', // move to first accent
'v 14', // vertical line
'M 0 0', // move to origin
'm 10 8', // move to second accent
'm 9 7', // move to second accent
'v 14', // vertical line
'z',
].join(' ')
export const OffScreenHandle = ({
color,
size = 10,
margin = 10,
}: {
color: string
size?: number
margin?: number
}) => (
<polygon
points={`0 0, ${size} ${size}, 0 ${size}`}
transform={` translate(${size + margin}, ${margin}) rotate(45) `}
fill={color}
stroke={color}
strokeWidth="4"
strokeLinejoin="round"
/>
)

View File

@@ -1,3 +1,5 @@
import { Bound } from 'state/mint/v3/actions'
export interface ChartEntry {
activeLiquidity: number
price0: number
@@ -30,6 +32,7 @@ export interface LiquidityChartRangeInputProps {
series: ChartEntry[]
current: number
}
ticksAtLimit: { [bound in Bound]?: boolean | undefined }
styles: {
area: {
@@ -52,7 +55,7 @@ export interface LiquidityChartRangeInputProps {
brushLabels: (d: 'w' | 'e', x: number) => string
brushDomain: [number, number] | undefined
onBrushDomainChange: (domain: [number, number]) => void
onBrushDomainChange: (domain: [number, number], mode: string | undefined) => void
zoomLevels: ZoomLevels
}

View File

@@ -1,5 +1,17 @@
import React, { useRef } from 'react'
import { BookOpen, Code, Info, MessageCircle, PieChart, Moon, Sun } from 'react-feather'
import { t } from '@lingui/macro'
import React, { useEffect, useRef, useState } from 'react'
import {
BookOpen,
Code,
Info,
MessageCircle,
PieChart,
Moon,
Sun,
ChevronRight,
ChevronLeft,
Check,
} from 'react-feather'
import { Link } from 'react-router-dom'
import styled, { css } from 'styled-components/macro'
import { ReactComponent as MenuIcon } from '../../assets/images/menu.svg'
@@ -13,6 +25,9 @@ import { ButtonPrimary } from '../Button'
import { useDarkModeManager } from 'state/user/hooks'
import { L2_CHAIN_IDS, CHAIN_INFO, SupportedChainId } from 'constants/chains'
import { LOCALE_LABEL, SupportedLocale, SUPPORTED_LOCALES } from 'constants/locales'
import { useLocationLinkProps } from 'hooks/useLocationLinkProps'
import { useActiveLocale } from 'hooks/useActiveLocale'
export enum FlyoutAlignment {
LEFT = 'LEFT',
@@ -69,6 +84,8 @@ const StyledMenu = styled.div`
const MenuFlyout = styled.span<{ flyoutAlignment?: FlyoutAlignment }>`
min-width: 196px;
max-height: 350px;
overflow: auto;
background-color: ${({ theme }) => theme.bg1};
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),
0px 24px 32px rgba(0, 0, 0, 0.01);
@@ -126,6 +143,20 @@ const InternalMenuItem = styled(Link)`
}
`
const InternalLinkMenuItem = styled(InternalMenuItem)`
display: flex;
flex-direction: row;
align-items: center;
padding: 0.5rem 0.5rem;
justify-content: space-between;
text-decoration: none;
:hover {
color: ${({ theme }) => theme.text1};
cursor: pointer;
text-decoration: none;
}
`
const ToggleMenuItem = styled.button`
background-color: transparent;
margin: 0;
@@ -149,6 +180,34 @@ const ToggleMenuItem = styled.button`
const CODE_LINK = 'https://github.com/Uniswap/uniswap-interface'
function LanguageMenuItem({ locale, active, key }: { locale: SupportedLocale; active: boolean; key: string }) {
const { to, onClick } = useLocationLinkProps(locale)
if (!to) return null
return (
<InternalLinkMenuItem onClick={onClick} key={key} to={to}>
<div>{LOCALE_LABEL[locale]}</div>
{active && <Check opacity={0.6} size={16} />}
</InternalLinkMenuItem>
)
}
function LanguageMenu({ close }: { close: () => void }) {
const activeLocale = useActiveLocale()
return (
<MenuFlyout>
<ToggleMenuItem onClick={close}>
<ChevronLeft size={16} />
</ToggleMenuItem>
{SUPPORTED_LOCALES.map((locale) => (
<LanguageMenuItem locale={locale} active={activeLocale === locale} key={locale} />
))}
</MenuFlyout>
)
}
export default function Menu() {
const { account, chainId } = useActiveWeb3React()
@@ -162,56 +221,83 @@ export default function Menu() {
const [darkMode, toggleDarkMode] = useDarkModeManager()
const [menu, setMenu] = useState<'main' | 'lang'>('main')
useEffect(() => {
setMenu('main')
}, [open])
return (
// https://github.com/DefinitelyTyped/DefinitelyTyped/issues/30451
<StyledMenu ref={node as any}>
<StyledMenuButton onClick={toggle}>
<StyledMenuButton onClick={toggle} aria-label={t`Menu`}>
<StyledMenuIcon />
</StyledMenuButton>
{open && (
<MenuFlyout>
<MenuItem href="https://uniswap.org/">
<div>
<Trans>About</Trans>
</div>
<Info opacity={0.6} size={16} />
</MenuItem>
<MenuItem href="https://docs.uniswap.org/">
<div>
<Trans>Docs</Trans>
</div>
<BookOpen opacity={0.6} size={16} />
</MenuItem>
<MenuItem href={CODE_LINK}>
<div>
<Trans>Code</Trans>
</div>
<Code opacity={0.6} size={16} />
</MenuItem>
<MenuItem href="https://discord.gg/FCfyBSbCU5">
<div>
<Trans>Discord</Trans>
</div>
<MessageCircle opacity={0.6} size={16} />
</MenuItem>
<MenuItem href={infoLink}>
<div>
<Trans>Analytics</Trans>
</div>
<PieChart opacity={0.6} size={16} />
</MenuItem>
<ToggleMenuItem onClick={() => toggleDarkMode()}>
<div>{darkMode ? <Trans>Light Theme</Trans> : <Trans>Dark Theme</Trans>}</div>
{darkMode ? <Moon opacity={0.6} size={16} /> : <Sun opacity={0.6} size={16} />}
</ToggleMenuItem>
{showUNIClaimOption && (
<UNIbutton onClick={openClaimModal} padding="8px 16px" width="100%" $borderRadius="12px" mt="0.5rem">
<Trans>Claim UNI</Trans>
</UNIbutton>
)}
</MenuFlyout>
)}
{open &&
(() => {
switch (menu) {
case 'lang':
return <LanguageMenu close={() => setMenu('main')} />
case 'main':
default:
return (
<MenuFlyout>
<MenuItem href="https://uniswap.org/">
<div>
<Trans>About</Trans>
</div>
<Info opacity={0.6} size={16} />
</MenuItem>
<MenuItem href="https://docs.uniswap.org/">
<div>
<Trans>Docs</Trans>
</div>
<BookOpen opacity={0.6} size={16} />
</MenuItem>
<MenuItem href={CODE_LINK}>
<div>
<Trans>Code</Trans>
</div>
<Code opacity={0.6} size={16} />
</MenuItem>
<MenuItem href="https://discord.gg/FCfyBSbCU5">
<div>
<Trans>Discord</Trans>
</div>
<MessageCircle opacity={0.6} size={16} />
</MenuItem>
<MenuItem href={infoLink}>
<div>
<Trans>Analytics</Trans>
</div>
<PieChart opacity={0.6} size={16} />
</MenuItem>
<ToggleMenuItem onClick={() => setMenu('lang')}>
<div>
<Trans>Language</Trans>
</div>
<ChevronRight size={16} opacity={0.6} />
</ToggleMenuItem>
<ToggleMenuItem onClick={() => toggleDarkMode()}>
<div>{darkMode ? <Trans>Light Theme</Trans> : <Trans>Dark Theme</Trans>}</div>
{darkMode ? <Moon opacity={0.6} size={16} /> : <Sun opacity={0.6} size={16} />}
</ToggleMenuItem>
{showUNIClaimOption && (
<UNIbutton
onClick={openClaimModal}
padding="8px 16px"
width="100%"
$borderRadius="12px"
mt="0.5rem"
>
<Trans>Claim UNI</Trans>
</UNIbutton>
)}
</MenuFlyout>
)
}
})()}
</StyledMenu>
)
}
@@ -252,11 +338,11 @@ export const NewMenu = ({ flyoutAlignment = FlyoutAlignment.RIGHT, ToggleUI, men
<NewMenuFlyout flyoutAlignment={flyoutAlignment}>
{menuItems.map(({ content, link, external }, i) =>
external ? (
<ExternalMenuItem id="link" href={link} key={link + i}>
<ExternalMenuItem href={link} key={i}>
{content}
</ExternalMenuItem>
) : (
<NewMenuItem id="link" to={link} key={link + i}>
<NewMenuItem to={link} key={i}>
{content}
</NewMenuItem>
)

View File

@@ -85,11 +85,11 @@ export function SwapPoolTabs({ active }: { active: 'swap' | 'pool' }) {
export function FindPoolTabs({ origin }: { origin: string }) {
return (
<Tabs>
<RowBetween style={{ padding: '1rem 1rem 0 1rem' }}>
<RowBetween style={{ padding: '1rem 1rem 0 1rem', position: 'relative' }}>
<HistoryLink to={origin}>
<StyledArrowLeft />
</HistoryLink>
<ActiveText>
<ActiveText style={{ position: 'absolute', left: '50%', transform: 'translateX(-50%)' }}>
<Trans>Import V2 Pool</Trans>
</ActiveText>
</RowBetween>

View File

@@ -11,6 +11,7 @@ import { ArrowDownCircle } from 'react-feather'
import { useArbitrumAlphaAlert, useDarkModeManager } from 'state/user/hooks'
import styled from 'styled-components/macro'
import { ExternalLink, MEDIA_WIDTHS } from 'theme'
import { ReadMoreLink } from './styles'
const L2Icon = styled.img`
display: none;
@@ -117,7 +118,10 @@ export function AddLiquidityNetworkAlert() {
<L2Icon src={info.logoUrl} />
<Body>
<Trans>This is an alpha release of Uniswap on the {info.label} network.</Trans>
<DesktopTextBreak /> <Trans>You must bridge L1 assets to the network to use them.</Trans>
<DesktopTextBreak /> <Trans>You must bridge L1 assets to the network to use them.</Trans>{' '}
<ReadMoreLink href="https://help.uniswap.org/en/articles/5392809-how-to-deposit-tokens-to-optimism">
<Trans>Read more</Trans>
</ReadMoreLink>
</Body>
<LinkOutToBridge href={depositUrl}>
<Trans>Deposit to {info.label}</Trans>

View File

@@ -11,6 +11,7 @@ import { ArrowDownCircle } from 'react-feather'
import { useArbitrumAlphaAlert, useDarkModeManager } from 'state/user/hooks'
import styled from 'styled-components/macro'
import { ExternalLink, MEDIA_WIDTHS } from 'theme'
import { ReadMoreLink } from './styles'
const L2Icon = styled.img`
display: none;
@@ -117,7 +118,10 @@ export function MinimalNetworkAlert() {
<L2Icon src={info.logoUrl} />
<Body>
<Trans>This is an alpha release of Uniswap on the {info.label} network.</Trans>
<DesktopTextBreak /> <Trans>You must bridge L1 assets to the network to use them.</Trans>
<DesktopTextBreak /> <Trans>You must bridge L1 assets to the network to use them.</Trans>{' '}
<ReadMoreLink href="https://help.uniswap.org/en/articles/5392809-how-to-deposit-tokens-to-optimism">
<Trans>Read more</Trans>
</ReadMoreLink>
</Body>
<LinkOutToBridge href={depositUrl}>
<Trans>Deposit to {info.label}</Trans>

View File

@@ -8,6 +8,7 @@ import { useETHBalances } from 'state/wallet/hooks'
import styled, { css } from 'styled-components/macro'
import { ExternalLink, MEDIA_WIDTHS } from 'theme'
import { CHAIN_INFO } from '../../constants/chains'
import { ReadMoreLink } from './styles'
const L2Icon = styled.img`
width: 40px;
@@ -152,7 +153,10 @@ export function NetworkAlert() {
<Trans>
This is an alpha release of Uniswap on the {info.label} network. You must bridge L1 assets to the network to
swap them.
</Trans>
</Trans>{' '}
<ReadMoreLink href="https://help.uniswap.org/en/articles/5392809-how-to-deposit-tokens-to-optimism">
<Trans>Read more</Trans>
</ReadMoreLink>
</Body>
</ContentWrapper>
<LinkOutToBridge href={depositUrl}>

View File

@@ -0,0 +1,7 @@
import styled from 'styled-components/macro'
import { ExternalLink } from 'theme'
export const ReadMoreLink = styled(ExternalLink)`
color: ${({ theme }) => theme.text1};
text-decoration: underline;
`

View File

@@ -3,6 +3,7 @@ import { SupportedChainId } from 'constants/chains'
import { useActiveWeb3React } from 'hooks/web3'
import { AlertOctagon } from 'react-feather'
import styled from 'styled-components/macro'
import { ExternalLink } from 'theme'
const Root = styled.div`
background-color: ${({ theme }) => theme.yellow3};
@@ -11,6 +12,7 @@ const Root = styled.div`
margin-top: 16px;
padding: 16px;
width: 100%;
max-width: 880px;
`
const WarningIcon = styled(AlertOctagon)`
margin: 0 8px 0 0;
@@ -30,8 +32,9 @@ const Body = styled.div`
line-height: 15px;
margin: 8px 0 0 0;
`
const LinkOutToNotion = styled.a`
const ReadMoreLink = styled(ExternalLink)`
color: black;
text-decoration: underline;
`
export default function OptimismDowntimeWarning() {
@@ -44,18 +47,15 @@ export default function OptimismDowntimeWarning() {
<Root>
<TitleRow>
<WarningIcon />
<Trans>{'Optimism'} Scheduled Downtimes</Trans>
<Trans>Optimism Planned Downtime</Trans>
</TitleRow>
<Body>
<Trans>
{'Optimism'} expects some scheduled downtime in the near future.&nbsp;
<LinkOutToNotion
href={`https://www.notion.so/Optimism-Regenesis-Schedule-8d14a34902ca4f5a8910762b3ec4b8da`}
target="_blank"
rel="noopener noreferrer"
>
Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is
down, fees will not be generated and you will be unable to remove liquidity.{' '}
<ReadMoreLink href="https://help.uniswap.org/en/articles/5406082-what-happens-if-the-optimistic-ethereum-network-experiences-downtime">
Read more.
</LinkOutToNotion>
</ReadMoreLink>
</Trans>
</Body>
</Root>

View File

@@ -4,77 +4,28 @@ import { AutoRow } from 'components/Row'
import { TYPE } from 'theme'
import styled from 'styled-components/macro'
import { Trans } from '@lingui/macro'
import { FeeAmount } from '@uniswap/v3-sdk'
import ReactGA from 'react-ga'
const Button = styled(ButtonOutlined).attrs(() => ({
padding: '4px',
borderRadius: '8px',
padding: '8px',
$borderRadius: '8px',
}))`
color: ${({ theme }) => theme.text1};
flex: 1;
background-color: ${({ theme }) => theme.bg2};
`
const RANGES = {
[FeeAmount.LOW]: [
{ label: '0.05', ticks: 5 },
{ label: '0.1', ticks: 10 },
{ label: '0.2', ticks: 20 },
],
[FeeAmount.MEDIUM]: [
{ label: '1', ticks: 100 },
{ label: '10', ticks: 953 },
{ label: '50', ticks: 4055 },
],
[FeeAmount.HIGH]: [
{ label: '2', ticks: 198 },
{ label: '10', ticks: 953 },
{ label: '80', ticks: 5878 },
],
}
interface PresetsButtonProps {
feeAmount: FeeAmount | undefined
setRange: (numTicks: number) => void
setFullRange: () => void
}
const PresetButton = ({
values: { label, ticks },
setRange,
}: {
values: {
label: string
ticks: number
}
setRange: (numTicks: number) => void
}) => (
<Button
onClick={() => {
setRange(ticks)
ReactGA.event({
category: 'Liquidity',
action: 'Preset clicked',
label: label,
})
}}
>
<TYPE.body fontSize={12}>
<Trans>+/- {label}%</Trans>
</TYPE.body>
</Button>
)
export default function PresetsButtons({ feeAmount, setRange, setFullRange }: PresetsButtonProps) {
feeAmount = feeAmount ?? FeeAmount.LOW
export default function PresetsButtons({ setFullRange }: { setFullRange: () => void }) {
return (
<AutoRow gap="4px" width="auto">
<PresetButton values={RANGES[feeAmount][0]} setRange={setRange} />
<PresetButton values={RANGES[feeAmount][1]} setRange={setRange} />
<PresetButton values={RANGES[feeAmount][2]} setRange={setRange} />
<Button onClick={() => setFullRange()}>
<Button
onClick={() => {
setFullRange()
ReactGA.event({
category: 'Liquidity',
action: 'Full Range Clicked',
})
}}
>
<TYPE.body fontSize={12}>
<Trans>Full Range</Trans>
</TYPE.body>

View File

@@ -44,13 +44,13 @@ export default function RangeSelector({
<AutoColumn gap="md">
<RowBetween>
<StepCounter
value={ticksAtLimit[Bound.LOWER] ? '0' : leftPrice?.toSignificant(5) ?? ''}
value={ticksAtLimit[isSorted ? Bound.LOWER : Bound.UPPER] ? '0' : leftPrice?.toSignificant(5) ?? ''}
onUserInput={onLeftRangeInput}
width="48%"
decrement={isSorted ? getDecrementLower : getIncrementUpper}
increment={isSorted ? getIncrementLower : getDecrementUpper}
decrementDisabled={ticksAtLimit[Bound.LOWER]}
incrementDisabled={ticksAtLimit[Bound.LOWER]}
decrementDisabled={ticksAtLimit[isSorted ? Bound.LOWER : Bound.UPPER]}
incrementDisabled={ticksAtLimit[isSorted ? Bound.LOWER : Bound.UPPER]}
feeAmount={feeAmount}
label={leftPrice ? `${currencyB?.symbol}` : '-'}
title={<Trans>Min Price</Trans>}
@@ -58,13 +58,13 @@ export default function RangeSelector({
tokenB={currencyB?.symbol}
/>
<StepCounter
value={ticksAtLimit[Bound.UPPER] ? '∞' : rightPrice?.toSignificant(5) ?? ''}
value={ticksAtLimit[isSorted ? Bound.UPPER : Bound.LOWER] ? '∞' : rightPrice?.toSignificant(5) ?? ''}
onUserInput={onRightRangeInput}
width="48%"
decrement={isSorted ? getDecrementUpper : getIncrementLower}
increment={isSorted ? getIncrementUpper : getDecrementLower}
incrementDisabled={ticksAtLimit[Bound.UPPER]}
decrementDisabled={ticksAtLimit[Bound.UPPER]}
incrementDisabled={ticksAtLimit[isSorted ? Bound.UPPER : Bound.LOWER]}
decrementDisabled={ticksAtLimit[isSorted ? Bound.UPPER : Bound.LOWER]}
feeAmount={feeAmount}
label={rightPrice ? `${currencyB?.symbol}` : '-'}
tokenA={currencyA?.symbol}

View File

@@ -10,6 +10,12 @@ import QuestionHelper from '../QuestionHelper'
import { AutoRow } from '../Row'
import CurrencyLogo from '../CurrencyLogo'
const MobileWrapper = styled(AutoColumn)`
${({ theme }) => theme.mediaWidth.upToSmall`
display: none;
`};
`
const BaseWrapper = styled.div<{ disable?: boolean }>`
border: 1px solid ${({ theme, disable }) => (disable ? 'transparent' : theme.bg3)};
border-radius: 10px;
@@ -39,7 +45,7 @@ export default function CommonBases({
const bases = typeof chainId !== 'undefined' ? COMMON_BASES[chainId] ?? [] : []
return bases.length > 0 ? (
<AutoColumn gap="md">
<MobileWrapper gap="md">
<AutoRow>
<Text fontWeight={500} fontSize={14}>
<Trans>Common bases</Trans>
@@ -63,6 +69,6 @@ export default function CommonBases({
)
})}
</AutoRow>
</AutoColumn>
</MobileWrapper>
) : null
}

View File

@@ -33,10 +33,11 @@ const WarningWrapper = styled(Card)<{ highWarning: boolean }>`
const AddressText = styled(TYPE.blue)`
font-size: 12px;
word-break: break-all;
${({ theme }) => theme.mediaWidth.upToSmall`
font-size: 10px;
`}
`}
`
interface ImportProps {

View File

@@ -173,7 +173,7 @@ export default function SettingsTab({ placeholderSlippage }: { placeholderSlippa
</AutoColumn>
</ModalContentWrapper>
</Modal>
<StyledMenuButton onClick={toggle} id="open-settings-dialog-button">
<StyledMenuButton onClick={toggle} id="open-settings-dialog-button" aria-label={t`Transaction Settings`}>
<StyledMenuIcon />
{expertMode ? (
<EmojiWrapper>

View File

@@ -1,13 +1,10 @@
import { Trans } from '@lingui/macro'
import { useMemo } from 'react'
import ReactGA from 'react-ga'
import { useLocation } from 'react-router'
import styled from 'styled-components/macro'
import { DEFAULT_LOCALE, LOCALE_LABEL, SupportedLocale } from '../../constants/locales'
import { navigatorLocale, useActiveLocale } from '../../hooks/useActiveLocale'
import useParsedQueryString from '../../hooks/useParsedQueryString'
import { StyledInternalLink, TYPE } from '../../theme'
import { stringify } from 'qs'
import { useLocationLinkProps } from 'hooks/useLocationLinkProps'
const Container = styled(TYPE.small)`
opacity: 0.6;
@@ -17,46 +14,35 @@ const Container = styled(TYPE.small)`
margin-top: 1rem !important;
`
export function SwitchLocaleLink() {
const activeLocale = useActiveLocale()
const useTargetLocale = (activeLocale: SupportedLocale) => {
const browserLocale = useMemo(() => navigatorLocale(), [])
const location = useLocation()
const qs = useParsedQueryString()
if (browserLocale && (browserLocale !== DEFAULT_LOCALE || activeLocale !== DEFAULT_LOCALE)) {
let targetLocale: SupportedLocale
if (activeLocale === browserLocale) {
targetLocale = DEFAULT_LOCALE
return DEFAULT_LOCALE
} else {
targetLocale = browserLocale
return browserLocale
}
const target = {
...location,
search: stringify({ ...qs, lng: targetLocale }),
}
return (
<Container>
<Trans>
Uniswap available in:{' '}
{
<StyledInternalLink
onClick={() => {
ReactGA.event({
category: 'Localization',
action: 'Switch Locale',
label: `${activeLocale} -> ${targetLocale}`,
})
}}
to={target}
>
{LOCALE_LABEL[targetLocale]}
</StyledInternalLink>
}
</Trans>
</Container>
)
}
return null
}
export function SwitchLocaleLink() {
const activeLocale = useActiveLocale()
const targetLocale = useTargetLocale(activeLocale)
const { to, onClick } = useLocationLinkProps(targetLocale)
if (!targetLocale || !to) return null
return (
<Container>
<Trans>
Uniswap available in:{' '}
<StyledInternalLink onClick={onClick} to={to}>
{LOCALE_LABEL[targetLocale]}
</StyledInternalLink>
</Trans>
</Container>
)
}

View File

@@ -0,0 +1,130 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`ResizableTextArea renders correctly 1`] = `
<DocumentFragment>
.c0 {
font-size: 12;
outline: none;
border: none;
-webkit-flex: 1 1 auto;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
width: 0;
resize: none;
background-color: #F7F8FA;
-webkit-transition: color 300ms step-start;
transition: color 300ms step-start;
color: #000000;
overflow: hidden;
text-overflow: ellipsis;
font-weight: 500;
width: 100%;
line-height: 1.2;
padding: 0px;
-webkit-appearance: textfield;
}
.c0::-webkit-search-decoration {
-webkit-appearance: none;
}
.c0::-webkit-outer-spin-button,
.c0::-webkit-inner-spin-button {
-webkit-appearance: none;
}
.c0::-webkit-input-placeholder {
color: #C3C5CB;
}
.c0::-moz-placeholder {
color: #C3C5CB;
}
.c0:-ms-input-placeholder {
color: #C3C5CB;
}
.c0::placeholder {
color: #C3C5CB;
}
<textarea
autocapitalize="off"
autocomplete="off"
autocorrect="off"
class="c0 testing"
font-size="12"
placeholder="Test Placeholder"
spellcheck="false"
style="height: auto; min-height: 500px;"
>
My test input
</textarea>
</DocumentFragment>
`;
exports[`TextInput renders correctly 1`] = `
<DocumentFragment>
.c0 {
font-size: 12;
outline: none;
border: none;
-webkit-flex: 1 1 auto;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
width: 0;
background-color: #F7F8FA;
-webkit-transition: color 300ms step-start;
transition: color 300ms step-start;
color: #000000;
overflow: hidden;
text-overflow: ellipsis;
font-weight: 500;
width: 100%;
padding: 0px;
-webkit-appearance: textfield;
}
.c0::-webkit-search-decoration {
-webkit-appearance: none;
}
.c0::-webkit-outer-spin-button,
.c0::-webkit-inner-spin-button {
-webkit-appearance: none;
}
.c0::-webkit-input-placeholder {
color: #C3C5CB;
}
.c0::-moz-placeholder {
color: #C3C5CB;
}
.c0:-ms-input-placeholder {
color: #C3C5CB;
}
.c0::placeholder {
color: #C3C5CB;
}
<div
class="testing"
>
<input
autocapitalize="off"
autocomplete="off"
autocorrect="off"
class="c0"
font-size="12"
placeholder="Test Placeholder"
spellcheck="false"
type="text"
value="My test input"
/>
</div>
</DocumentFragment>
`;

View File

@@ -0,0 +1,68 @@
import { TextInput, ResizingTextArea } from './'
import { render, screen, fireEvent } from 'test-utils'
describe('TextInput', () => {
it('renders correctly', () => {
const { asFragment } = render(
<TextInput
className="testing"
value="My test input"
onUserInput={() => null}
placeholder="Test Placeholder"
fontSize="12"
/>
)
expect(asFragment()).toMatchSnapshot()
})
it('calls the handler on user input', () => {
const onUserInputSpy = jest.fn()
render(
<TextInput
className="testing"
value=""
onUserInput={onUserInputSpy}
placeholder="Test Placeholder"
fontSize="12"
/>
)
fireEvent.change(screen.getByPlaceholderText('Test Placeholder'), { target: { value: 'New value' } })
expect(onUserInputSpy).toHaveBeenCalledWith('New value')
expect(onUserInputSpy).toHaveBeenCalledTimes(1)
})
})
describe('ResizableTextArea', () => {
it('renders correctly', () => {
const { asFragment } = render(
<ResizingTextArea
className="testing"
value="My test input"
onUserInput={() => null}
placeholder="Test Placeholder"
fontSize="12"
/>
)
expect(asFragment()).toMatchSnapshot()
})
it('calls the handler on user input', () => {
const onUserInputSpy = jest.fn()
render(
<ResizingTextArea
className="testing"
value=""
onUserInput={onUserInputSpy}
placeholder="Test Placeholder"
fontSize="12"
/>
)
fireEvent.change(screen.getByPlaceholderText('Test Placeholder'), { target: { value: 'New value' } })
expect(onUserInputSpy).toHaveBeenCalledWith('New value')
expect(onUserInputSpy).toHaveBeenCalledTimes(1)
})
})

View File

@@ -0,0 +1,70 @@
import useTheme from 'hooks/useTheme'
import styled, { keyframes } from 'styled-components/macro'
const Wrapper = styled.div`
height: 90px;
width: 90px;
`
const dash = keyframes`
0% {
stroke-dashoffset: 1000;
}
100% {
stroke-dashoffset: 0;
}
`
const dashCheck = keyframes`
0% {
stroke-dashoffset: -100;
}
100% {
stroke-dashoffset: 900;
}
`
const Circle = styled.circle`
stroke-dasharray: 1000;
stroke-dashoffset: 0;
-webkit-animation: ${dash} 0.9s ease-in-out;
animation: ${dash} 0.9s ease-in-out;
`
const PolyLine = styled.polyline`
stroke-dasharray: 1000;
stroke-dashoffset: 0;
stroke-dashoffset: -100;
-webkit-animation: ${dashCheck} 0.9s 0.35s ease-in-out forwards;
animation: ${dashCheck} 0.9s 0.35s ease-in-out forwards;
`
export default function AnimatedConfirmation() {
const theme = useTheme()
return (
<Wrapper className="w4rAnimated_checkmark">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 130.2 130.2">
<Circle
className="path circle"
fill="none"
stroke={theme.green1}
strokeWidth="6"
strokeMiterlimit="10"
cx="65.1"
cy="65.1"
r="62.1"
/>
<PolyLine
className="path check"
fill="none"
stroke={theme.green1}
strokeWidth="6"
strokeLinecap="round"
strokeMiterlimit="10"
points="100.2,40.2 51.5,88.8 29.8,67.5 "
/>
</svg>
</Wrapper>
)
}

View File

@@ -1,5 +1,5 @@
import { Currency } from '@uniswap/sdk-core'
import { ReactNode, useContext, useEffect } from 'react'
import { ReactNode, useContext } from 'react'
import styled, { ThemeContext } from 'styled-components/macro'
import { getExplorerLink, ExplorerDataType } from '../../utils/getExplorerLink'
import Modal from '../Modal'
@@ -7,7 +7,7 @@ import { ExternalLink } from '../../theme'
import { Text } from 'rebass'
import { CloseIcon, CustomLightSpinner } from '../../theme/components'
import { RowBetween, RowFixed } from '../Row'
import { AlertTriangle, ArrowUpCircle, CheckCircle } from 'react-feather'
import { AlertCircle, AlertTriangle, ArrowUpCircle, CheckCircle } from 'react-feather'
import { ButtonPrimary, ButtonLight } from '../Button'
import { AutoColumn, ColumnCenter } from '../Column'
import Circle from '../../assets/images/blue-loader.svg'
@@ -15,7 +15,10 @@ import MetaMaskLogo from '../../assets/images/metamask.png'
import { useActiveWeb3React } from '../../hooks/web3'
import useAddTokenToMetamask from 'hooks/useAddTokenToMetamask'
import { Trans } from '@lingui/macro'
import { L2_CHAIN_IDS } from 'constants/chains'
import { CHAIN_INFO, L2_CHAIN_IDS, SupportedL2ChainId } from 'constants/chains'
import { useIsTransactionConfirmed, useTransaction } from 'state/transactions/hooks'
import Badge from 'components/Badge'
import AnimatedConfirmation from './AnimatedConfirmation'
const Wrapper = styled.div`
width: 100%;
@@ -31,7 +34,7 @@ const BottomSection = styled(Section)`
`
const ConfirmedIcon = styled(ColumnCenter)<{ inline?: boolean }>`
padding: ${({ inline }) => (inline ? '20px 0' : '60px 0;')};
padding: ${({ inline }) => (inline ? '20px 0' : '32px 0;')};
`
const StyledLogo = styled.img`
@@ -65,12 +68,10 @@ function ConfirmationPendingContent({
<Text fontWeight={500} fontSize={20} textAlign="center">
<Trans>Waiting For Confirmation</Trans>
</Text>
<AutoColumn gap="12px" justify={'center'}>
<Text fontWeight={600} fontSize={14} color="" textAlign="center">
{pendingText}
</Text>
</AutoColumn>
<Text fontSize={12} color="#565A69" textAlign="center" marginBottom={12}>
<Text fontWeight={400} fontSize={16} textAlign="center">
{pendingText}
</Text>
<Text fontWeight={500} fontSize={14} color="#565A69" textAlign="center" marginBottom="12px">
<Trans>Confirm this transaction in your wallet</Trans>
</Text>
</AutoColumn>
@@ -78,7 +79,6 @@ function ConfirmationPendingContent({
</Wrapper>
)
}
function TransactionSubmittedContent({
onDismiss,
chainId,
@@ -207,6 +207,106 @@ export function TransactionErrorContent({ message, onDismiss }: { message: React
)
}
function L2Content({
onDismiss,
chainId,
hash,
pendingText,
inline,
}: {
onDismiss: () => void
hash: string | undefined
chainId: number
currencyToAdd?: Currency | undefined
pendingText: ReactNode
inline?: boolean // not in modal
}) {
const theme = useContext(ThemeContext)
const transaction = useTransaction(hash)
const confirmed = useIsTransactionConfirmed(hash)
const transactionSuccess = transaction?.receipt?.status === 1
// convert unix time difference to seconds
const secondsToConfirm = transaction?.confirmedTime
? (transaction.confirmedTime - transaction.addedTime) / 1000
: undefined
const info = CHAIN_INFO[chainId as SupportedL2ChainId]
return (
<Wrapper>
<Section inline={inline}>
{!inline && (
<RowBetween mb="16px">
<Badge>
<RowFixed>
<StyledLogo src={info.logoUrl} style={{ margin: '0 8px 0 0' }} />
{info.label}
</RowFixed>
</Badge>
<CloseIcon onClick={onDismiss} />
</RowBetween>
)}
<ConfirmedIcon inline={inline}>
{confirmed ? (
transactionSuccess ? (
// <CheckCircle strokeWidth={1} size={inline ? '40px' : '90px'} color={theme.green1} />
<AnimatedConfirmation />
) : (
<AlertCircle strokeWidth={1} size={inline ? '40px' : '90px'} color={theme.red1} />
)
) : (
<CustomLightSpinner src={Circle} alt="loader" size={inline ? '40px' : '90px'} />
)}
</ConfirmedIcon>
<AutoColumn gap="12px" justify={'center'}>
<Text fontWeight={500} fontSize={20} textAlign="center">
{!hash ? (
<Trans>Confirm transaction in wallet</Trans>
) : !confirmed ? (
<Trans>Transaction Submitted</Trans>
) : transactionSuccess ? (
<Trans>Success</Trans>
) : (
<Trans>Error</Trans>
)}
</Text>
<Text fontWeight={400} fontSize={16} textAlign="center">
{transaction?.summary ?? pendingText ?? ''}
</Text>
{chainId && hash ? (
<ExternalLink href={getExplorerLink(chainId, hash, ExplorerDataType.TRANSACTION)}>
<Text fontWeight={500} fontSize={14} color={theme.primary1}>
<Trans>View on Explorer</Trans>
</Text>
</ExternalLink>
) : (
<div style={{ height: '17px' }}></div>
)}
<Text color={theme.text3} style={{ margin: '20px 0 0 0' }} fontSize={'14px'}>
{!secondsToConfirm ? (
<div style={{ height: '24px' }}></div>
) : (
<div>
<Trans>Transaction completed in </Trans>
<span style={{ fontWeight: 500, marginLeft: '4px', color: theme.text1 }}>
{secondsToConfirm} seconds 🎉
</span>
</div>
)}
</Text>
<ButtonPrimary onClick={onDismiss} style={{ margin: '4px 0 0 0' }}>
<Text fontWeight={500} fontSize={20}>
{inline ? <Trans>Return</Trans> : <Trans>Close</Trans>}
</Text>
</ButtonPrimary>
</AutoColumn>
</Section>
</Wrapper>
)
}
interface ConfirmationModalProps {
isOpen: boolean
onDismiss: () => void
@@ -228,21 +328,16 @@ export default function TransactionConfirmationModal({
}: ConfirmationModalProps) {
const { chainId } = useActiveWeb3React()
// if on L2 and txn is submitted, close automatically (if open)
useEffect(() => {
if (isOpen && chainId && L2_CHAIN_IDS.includes(chainId) && hash) {
onDismiss()
}
}, [chainId, hash, isOpen, onDismiss])
const isL2 = Boolean(chainId && L2_CHAIN_IDS.includes(chainId))
if (!chainId) return null
// confirmation screen
// if on L2 and submitted dont render content, as should auto dismiss
// need this to skip submitted view during state update ^^
return (
<Modal isOpen={isOpen} onDismiss={onDismiss} maxHeight={90}>
{L2_CHAIN_IDS.includes(chainId) && hash ? null : attemptingTxn ? (
{isL2 && (hash || attemptingTxn) ? (
<L2Content chainId={chainId} hash={hash} onDismiss={onDismiss} pendingText={pendingText} />
) : attemptingTxn ? (
<ConfirmationPendingContent onDismiss={onDismiss} pendingText={pendingText} />
) : hash ? (
<TransactionSubmittedContent

View File

@@ -10,6 +10,8 @@ import { RowBetween, RowFixed } from '../Row'
import { DEFAULT_DEADLINE_FROM_NOW } from 'constants/misc'
import { darken } from 'polished'
import { useSetUserSlippageTolerance, useUserSlippageTolerance, useUserTransactionTTL } from 'state/user/hooks'
import { L2_CHAIN_IDS } from 'constants/chains'
import { useActiveWeb3React } from 'hooks/web3'
enum SlippageError {
InvalidInput = 'InvalidInput',
@@ -92,6 +94,7 @@ interface TransactionSettingsProps {
}
export default function TransactionSettings({ placeholderSlippage }: TransactionSettingsProps) {
const { chainId } = useActiveWeb3React()
const theme = useContext(ThemeContext)
const userSlippageTolerance = useUserSlippageTolerance()
@@ -151,6 +154,8 @@ export default function TransactionSettings({ placeholderSlippage }: Transaction
}
}
const showCustomDeadlineRow = Boolean(chainId && !L2_CHAIN_IDS.includes(chainId))
return (
<AutoColumn gap="md">
<AutoColumn gap="sm">
@@ -221,37 +226,41 @@ export default function TransactionSettings({ placeholderSlippage }: Transaction
) : null}
</AutoColumn>
<AutoColumn gap="sm">
<RowFixed>
<TYPE.black fontSize={14} fontWeight={400} color={theme.text2}>
<Trans>Transaction deadline</Trans>
</TYPE.black>
<QuestionHelper text={t`Your transaction will revert if it is pending for more than this period of time.`} />
</RowFixed>
<RowFixed>
<OptionCustom style={{ width: '80px' }} warning={!!deadlineError} tabIndex={-1}>
<Input
placeholder={(DEFAULT_DEADLINE_FROM_NOW / 60).toString()}
value={
deadlineInput.length > 0
? deadlineInput
: deadline === DEFAULT_DEADLINE_FROM_NOW
? ''
: (deadline / 60).toString()
}
onChange={(e) => parseCustomDeadline(e.target.value)}
onBlur={() => {
setDeadlineInput('')
setDeadlineError(false)
}}
color={deadlineError ? 'red' : ''}
{showCustomDeadlineRow && (
<AutoColumn gap="sm">
<RowFixed>
<TYPE.black fontSize={14} fontWeight={400} color={theme.text2}>
<Trans>Transaction deadline</Trans>
</TYPE.black>
<QuestionHelper
text={t`Your transaction will revert if it is pending for more than this period of time.`}
/>
</OptionCustom>
<TYPE.body style={{ paddingLeft: '8px' }} fontSize={14}>
<Trans>minutes</Trans>
</TYPE.body>
</RowFixed>
</AutoColumn>
</RowFixed>
<RowFixed>
<OptionCustom style={{ width: '80px' }} warning={!!deadlineError} tabIndex={-1}>
<Input
placeholder={(DEFAULT_DEADLINE_FROM_NOW / 60).toString()}
value={
deadlineInput.length > 0
? deadlineInput
: deadline === DEFAULT_DEADLINE_FROM_NOW
? ''
: (deadline / 60).toString()
}
onChange={(e) => parseCustomDeadline(e.target.value)}
onBlur={() => {
setDeadlineInput('')
setDeadlineError(false)
}}
color={deadlineError ? 'red' : ''}
/>
</OptionCustom>
<TYPE.body style={{ paddingLeft: '8px' }} fontSize={14}>
<Trans>minutes</Trans>
</TYPE.body>
</RowFixed>
</AutoColumn>
)}
</AutoColumn>
)
}

View File

@@ -1,4 +1,5 @@
import { Web3Provider } from '@ethersproject/providers'
import { SafeAppConnector } from '@gnosis.pm/safe-apps-web3-react'
import { InjectedConnector } from '@web3-react/injected-connector'
import { PortisConnector } from '@web3-react/portis-connector'
import { WalletConnectConnector } from '@web3-react/walletconnect-connector'
@@ -44,12 +45,13 @@ export const injected = new InjectedConnector({
supportedChainIds: ALL_SUPPORTED_CHAIN_IDS,
})
export const gnosisSafe = new SafeAppConnector()
export const walletconnect = new WalletConnectConnector({
supportedChainIds: ALL_SUPPORTED_CHAIN_IDS,
rpc: NETWORK_URLS,
bridge: WALLETCONNECT_BRIDGE_URL,
qrcode: true,
pollingInterval: 15000,
})
// mainnet only

View File

@@ -0,0 +1,30 @@
import { ALL_SUPPORTED_CHAIN_IDS, SupportedChainId } from './chains'
describe('chains', () => {
describe('ALL_SUPPORTED_CHAIN_IDS', () => {
it('contains all the values in the SupportedChainId enum', () => {
Object.values(SupportedChainId).forEach((chainId) => {
if (typeof chainId === 'number') expect(ALL_SUPPORTED_CHAIN_IDS.includes(chainId as number)).toBeTruthy()
})
})
it('contains no duplicates', () => {
const set = new Set<number>()
ALL_SUPPORTED_CHAIN_IDS.forEach((chainId) => {
expect(set.has(chainId)).toEqual(false)
set.add(chainId)
})
})
it('all values are in the SupportedChainId mapping', () => {
ALL_SUPPORTED_CHAIN_IDS.forEach((chainId) => {
// takes advantage of the reverse mapping
expect(SupportedChainId[chainId]).toBeTruthy()
})
})
it('all values are numeric', () => {
expect(ALL_SUPPORTED_CHAIN_IDS.every((chainId) => typeof chainId === 'number')).toBeTruthy()
})
})
})

View File

@@ -14,7 +14,18 @@ export enum SupportedChainId {
OPTIMISTIC_KOVAN = 69,
}
export const ALL_SUPPORTED_CHAIN_IDS: SupportedChainId[] = Object.values(SupportedChainId) as SupportedChainId[]
export const ALL_SUPPORTED_CHAIN_IDS: SupportedChainId[] = [
SupportedChainId.MAINNET,
SupportedChainId.ROPSTEN,
SupportedChainId.RINKEBY,
SupportedChainId.GOERLI,
SupportedChainId.KOVAN,
SupportedChainId.ARBITRUM_ONE,
SupportedChainId.ARBITRUM_RINKEBY,
SupportedChainId.OPTIMISM,
SupportedChainId.OPTIMISTIC_KOVAN,
]
export const L1_CHAIN_IDS = [
SupportedChainId.MAINNET,
@@ -41,7 +52,7 @@ interface L1ChainInfo {
readonly infoLink: string
readonly label: string
}
interface L2ChainInfo extends L1ChainInfo {
export interface L2ChainInfo extends L1ChainInfo {
readonly bridge: string
readonly logoUrl: string
}

View File

@@ -1,3 +1,5 @@
import { IS_ON_APP_URL } from './misc'
const AAVE_LIST = 'tokenlist.aave.eth'
const BA_LIST = 'https://raw.githubusercontent.com/The-Blockchain-Association/sec-notice-list/master/ba-sec-list.json'
const CMC_ALL_LIST = 'defi.cmc.eth'
@@ -9,11 +11,10 @@ const KLEROS_LIST = 't2crtokens.eth'
export const OPTIMISM_LIST = 'https://static.optimism.io/optimism.tokenlist.json'
const ROLL_LIST = 'https://app.tryroll.com/tokens.json'
const SET_LIST = 'https://raw.githubusercontent.com/SetProtocol/uniswap-tokenlist/main/set.tokenlist.json'
const UMA_LIST = 'https://umaproject.org/uma.tokenlist.json'
const WRAPPED_LIST = 'wrapped.tokensoft.eth'
// used to mark unsupported tokens, these are hosted lists of unsupported tokens
export const UNSUPPORTED_LIST_URLS: string[] = [BA_LIST]
// only load blocked list if on app url
export const UNSUPPORTED_LIST_URLS: string[] = IS_ON_APP_URL ? [BA_LIST] : []
// lower index == higher priority for token import
export const DEFAULT_LIST_OF_LISTS: string[] = [
@@ -21,7 +22,6 @@ export const DEFAULT_LIST_OF_LISTS: string[] = [
AAVE_LIST,
CMC_ALL_LIST,
CMC_STABLECOIN,
UMA_LIST,
WRAPPED_LIST,
SET_LIST,
ROLL_LIST,

View File

@@ -1,4 +1,6 @@
export const SUPPORTED_LOCALES = [
// order as they appear in the language dropdown
'en-US',
'af-ZA',
'ar-SA',
'ca-ES',
@@ -6,7 +8,6 @@ export const SUPPORTED_LOCALES = [
'da-DK',
'de-DE',
'el-GR',
'en-US',
'es-ES',
'fi-FI',
'fr-FR',
@@ -65,6 +66,6 @@ export const LOCALE_LABEL: { [locale in SupportedLocale]: string } = {
'tr-TR': 'Türkçe',
'uk-UA': 'Український',
'vi-VN': 'Tiếng Việt',
'zh-CN': '中文 ( 中国 )',
'zh-TW': '中文 ( 台灣 )',
'zh-CN': '简体中文',
'zh-TW': '繁体中文',
}

View File

@@ -31,3 +31,5 @@ export const BETTER_TRADE_LESS_HOPS_THRESHOLD = new Percent(JSBI.BigInt(50), BIP
export const ZERO_PERCENT = new Percent('0')
export const ONE_HUNDRED_PERCENT = new Percent('1')
export const IS_ON_APP_URL = window && window.location.hostname === 'app.uniswap.org'

View File

@@ -8,14 +8,10 @@ import {
FEI,
FRAX,
FXS,
MIR,
renBTC,
TRIBE,
UMA,
UNI,
USDC,
USDT,
UST,
WBTC,
ETH2X_FLI,
WETH9_EXTENDED,
@@ -32,27 +28,6 @@ type ChainCurrencyList = {
readonly [chainId: number]: Currency[]
}
// List of all mirror's assets addresses.
// Last pulled from : https://whitelist.mirror.finance/eth/tokenlists.json
// TODO: Generate this programmatically ?
const mAssetsAdditionalBases: { [tokenAddress: string]: Token[] } = {
[UST.address]: [MIR],
[MIR.address]: [UST],
'0xd36932143F6eBDEDD872D5Fb0651f4B72Fd15a84': [MIR, UST], // mAAPL
'0x59A921Db27Dd6d4d974745B7FfC5c33932653442': [MIR, UST], // mGOOGL
'0x21cA39943E91d704678F5D00b6616650F066fD63': [MIR, UST], // mTSLA
'0xC8d674114bac90148d11D3C1d33C61835a0F9DCD': [MIR, UST], // mNFLX
'0x13B02c8dE71680e71F0820c996E4bE43c2F57d15': [MIR, UST], // mQQQ
'0xEdb0414627E6f1e3F082DE65cD4F9C693D78CCA9': [MIR, UST], // mTWTR
'0x41BbEDd7286dAab5910a1f15d12CBda839852BD7': [MIR, UST], // mMSFT
'0x0cae9e4d663793c2a2A0b211c1Cf4bBca2B9cAa7': [MIR, UST], // mAMZN
'0x56aA298a19C93c6801FDde870fA63EF75Cc0aF72': [MIR, UST], // mBABA
'0x1d350417d9787E000cc1b95d70E9536DcD91F373': [MIR, UST], // mIAU
'0x9d1555d8cB3C846Bb4f7D5B1B1080872c3166676': [MIR, UST], // mSLV
'0x31c63146a635EB7465e5853020b39713AC356991': [MIR, UST], // mUSO
'0xf72FCd9DCF0190923Fadd44811E240Ef4533fc86': [MIR, UST], // mVIXY
}
const WETH_ONLY: ChainTokenList = Object.fromEntries(
Object.entries(WETH9_EXTENDED).map(([key, value]) => [key, [value]])
)
@@ -65,13 +40,7 @@ export const BASES_TO_CHECK_TRADES_AGAINST: ChainTokenList = {
}
export const ADDITIONAL_BASES: { [chainId: number]: { [tokenAddress: string]: Token[] } } = {
[SupportedChainId.MAINNET]: {
...mAssetsAdditionalBases,
'0xF16E4d813f4DcfDe4c5b44f305c908742De84eF0': [ETH2X_FLI],
'0xA948E86885e12Fb09AfEF8C52142EBDbDf73cD18': [UNI[SupportedChainId.MAINNET]],
'0x561a4717537ff4AF5c687328c0f7E90a319705C0': [UNI[SupportedChainId.MAINNET]],
'0xE0360A9e2cdd7d03B9408c7D3001E017BAc2EcD5': [UNI[SupportedChainId.MAINNET]],
'0xa6e3454fec677772dd771788a079355e43910638': [UMA],
'0xB46F57e7Ce3a284d74b70447Ef9352B5E5Df8963': [UMA],
[FEI.address]: [TRIBE],
[TRIBE.address]: [FEI],
[FRAX.address]: [FXS],

View File

@@ -0,0 +1,22 @@
{
"name": "Broken Token List",
"timestamp": "2021-01-05T20:47:02.923Z",
"version": {
"major": 1,
"minor": 0,
"patch": 0
},
"tags": {},
"logoURI": "ipfs://QmNa8mQkrNKp1WEEeGjFezDmDeodkWRevGFN8JCV7b4Xir",
"keywords": ["uniswap", "broken"],
"tokens": [
{
"name": "UNI HODL",
"address": "0x4bf5dc91E2555449293D7824028Eb8Fe5879B689",
"symbol": "UniH",
"decimals": 18,
"chainId": 1,
"logoURI": ""
}
]
}

View File

@@ -1,30 +0,0 @@
{
"name": "Unsupported Tokens",
"timestamp": "2021-01-05T20:47:02.923Z",
"version": {
"major": 1,
"minor": 0,
"patch": 0
},
"tags": {},
"logoURI": "ipfs://QmNa8mQkrNKp1WEEeGjFezDmDeodkWRevGFN8JCV7b4Xir",
"keywords": ["uniswap", "unsupported"],
"tokens": [
{
"name": "Gold Tether",
"address": "0x4922a015c4407F87432B179bb209e125432E4a2A",
"symbol": "XAUt",
"decimals": 6,
"chainId": 1,
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x4922a015c4407F87432B179bb209e125432E4a2A/logo.png"
},
{
"name": "Grump Cat",
"address": "0x93B2FfF814FCaEFFB01406e80B4Ecd89Ca6A021b",
"symbol": "GRUMPY",
"decimals": 9,
"chainId": 1,
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x4922a015c4407F87432B179bb209e125432E4a2A/logo.png"
}
]
}

File diff suppressed because it is too large Load Diff

View File

@@ -100,13 +100,6 @@ export const renBTC = new Token(
'renBTC',
'renBTC'
)
export const UMA = new Token(
SupportedChainId.MAINNET,
'0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828',
18,
'UMA',
'UMA Voting Token v1'
)
export const ETH2X_FLI = new Token(
SupportedChainId.MAINNET,
'0xAa6E8127831c9DE45ae56bB1b0d4D4Da6e5665BD',
@@ -114,21 +107,6 @@ export const ETH2X_FLI = new Token(
'ETH2x-FLI',
'ETH 2x Flexible Leverage Index'
)
// Mirror Protocol compat.
export const UST = new Token(
SupportedChainId.MAINNET,
'0xa47c8bf37f92abed4a126bda807a7b7498661acd',
18,
'UST',
'Wrapped UST'
)
export const MIR = new Token(
SupportedChainId.MAINNET,
'0x09a3ecafa817268f77be1283176b946c4ff2e608',
18,
'MIR',
'Wrapped MIR'
)
export const UNI: { [chainId: number]: Token } = {
[SupportedChainId.MAINNET]: new Token(SupportedChainId.MAINNET, UNI_ADDRESS[1], 18, 'UNI', 'Uniswap'),
[SupportedChainId.RINKEBY]: new Token(SupportedChainId.RINKEBY, UNI_ADDRESS[4], 18, 'UNI', 'Uniswap'),

View File

@@ -5,6 +5,18 @@ import { useUserSingleHopOnly } from '../state/user/hooks'
import { useActiveWeb3React } from './web3'
import { useV3SwapPools } from './useV3SwapPools'
/**
* Returns true if poolA is equivalent to poolB
* @param poolA one of the two pools
* @param poolB the other pool
*/
function poolEquals(poolA: Pool, poolB: Pool): boolean {
return (
poolA === poolB ||
(poolA.token0.equals(poolB.token0) && poolA.token1.equals(poolB.token1) && poolA.fee === poolB.fee)
)
}
function computeAllRoutes(
currencyIn: Currency,
currencyOut: Currency,
@@ -20,7 +32,7 @@ function computeAllRoutes(
if (!tokenIn || !tokenOut) throw new Error('Missing tokenIn/tokenOut')
for (const pool of pools) {
if (currentPath.indexOf(pool) !== -1 || !pool.involvesToken(tokenIn)) continue
if (!pool.involvesToken(tokenIn) || currentPath.find((pathPool) => poolEquals(pool, pathPool))) continue
const outputToken = pool.token0.equals(tokenIn) ? pool.token1 : pool.token0
if (outputToken.equals(tokenOut)) {

View File

@@ -21,6 +21,8 @@ const QUOTE_GAS_OVERRIDES: { [chainId: number]: number } = {
[SupportedChainId.OPTIMISTIC_KOVAN]: 6_000_000,
}
const DEFAULT_GAS_QUOTE = 2_000_000
/**
* Returns the best v3 trade for a desired exact input swap
* @param amountIn the amount to swap in
@@ -42,11 +44,16 @@ export function useBestV3TradeExactIn(
}, [amountIn, routes])
const quotesResults = useSingleContractMultipleData(quoter, 'quoteExactInput', quoteExactInInputs, {
gasRequired: chainId ? QUOTE_GAS_OVERRIDES[chainId] ?? 1_000_000 : undefined,
gasRequired: chainId ? QUOTE_GAS_OVERRIDES[chainId] ?? DEFAULT_GAS_QUOTE : undefined,
})
return useMemo(() => {
if (!amountIn || !currencyOut) {
if (
!amountIn ||
!currencyOut ||
// skip when tokens are the same
amountIn.currency.equals(currencyOut)
) {
return {
state: V3TradeState.INVALID,
trade: null,
@@ -126,11 +133,17 @@ export function useBestV3TradeExactOut(
}, [amountOut, routes])
const quotesResults = useSingleContractMultipleData(quoter, 'quoteExactOutput', quoteExactOutInputs, {
gasRequired: chainId ? QUOTE_GAS_OVERRIDES[chainId] ?? 1_000_000 : undefined,
gasRequired: chainId ? QUOTE_GAS_OVERRIDES[chainId] ?? DEFAULT_GAS_QUOTE : undefined,
})
return useMemo(() => {
if (!amountOut || !currencyIn || quotesResults.some(({ valid }) => !valid)) {
if (
!amountOut ||
!currencyIn ||
quotesResults.some(({ valid }) => !valid) ||
// skip when tokens are the same
amountOut.currency.equals(currencyIn)
) {
return {
state: V3TradeState.INVALID,
trade: null,

View File

@@ -0,0 +1,37 @@
import ReactGA from 'react-ga'
import { stringify } from 'qs'
import useParsedQueryString from 'hooks/useParsedQueryString'
import { useLocation } from 'react-router-dom'
import { LocationDescriptor } from 'history'
import { SupportedLocale } from 'constants/locales'
import { useActiveLocale } from './useActiveLocale'
import { useMemo } from 'react'
export function useLocationLinkProps(locale: SupportedLocale | null): {
to?: LocationDescriptor
onClick?: () => void
} {
const location = useLocation()
const qs = useParsedQueryString()
const activeLocale = useActiveLocale()
return useMemo(
() =>
!locale
? {}
: {
to: {
...location,
search: stringify({ ...qs, lng: locale }),
},
onClick: () => {
ReactGA.event({
category: 'Localization',
action: 'Switch Locale',
label: `${activeLocale} -> ${locale}`,
})
},
},
[location, qs, activeLocale, locale]
)
}

30
src/hooks/useRouter.ts Normal file
View File

@@ -0,0 +1,30 @@
import { skipToken } from '@reduxjs/toolkit/query/react'
import { Currency, CurrencyAmount } from '@uniswap/sdk-core'
import ms from 'ms.macro'
import { useBlockNumber } from 'state/application/hooks'
import { useGetQuoteQuery } from 'state/routing/slice'
import { useActiveWeb3React } from './web3'
export function useRouterTradeExactIn(amountIn?: CurrencyAmount<Currency>, currencyOut?: Currency) {
const { account } = useActiveWeb3React()
const blockNumber = useBlockNumber()
const { isLoading, isError, data } = useGetQuoteQuery(
amountIn && currencyOut && account && blockNumber
? {
tokenInAddress: amountIn.currency.wrapped.address,
tokenInChainId: amountIn.currency.chainId,
tokenOutAddress: currencyOut.wrapped.address,
tokenOutChainId: currencyOut.chainId,
amount: amountIn.quotient.toString(),
type: 'exactIn',
}
: skipToken,
{ pollingInterval: ms`10s` }
)
// todo(judo): validate block number for freshness
return !isLoading && !isError ? data?.routeString : undefined
}

View File

@@ -1,9 +1,10 @@
import { Web3Provider } from '@ethersproject/providers'
import { useSafeAppConnection } from '@gnosis.pm/safe-apps-web3-react'
import { useWeb3React as useWeb3ReactCore } from '@web3-react/core'
import { Web3ReactContextInterface } from '@web3-react/core/dist/types'
import { useEffect, useState } from 'react'
import { isMobile } from 'react-device-detect'
import { injected } from '../connectors'
import { gnosisSafe, injected } from '../connectors'
import { NetworkContextName } from '../constants/misc'
export function useActiveWeb3React(): Web3ReactContextInterface<Web3Provider> {
@@ -16,30 +17,34 @@ export function useEagerConnect() {
const { activate, active } = useWeb3ReactCore() // specifically using useWeb3ReactCore because of what this hook does
const [tried, setTried] = useState(false)
const triedToConnectToSafe = useSafeAppConnection(gnosisSafe)
useEffect(() => {
injected.isAuthorized().then((isAuthorized) => {
if (isAuthorized) {
activate(injected, undefined, true).catch(() => {
setTried(true)
})
} else {
if (isMobile && window.ethereum) {
if (triedToConnectToSafe && !active) {
injected.isAuthorized().then((isAuthorized) => {
if (isAuthorized) {
activate(injected, undefined, true).catch(() => {
setTried(true)
})
} else {
setTried(true)
if (isMobile && window.ethereum) {
activate(injected, undefined, true).catch(() => {
setTried(true)
})
} else {
setTried(true)
}
}
}
})
}, [activate]) // intentionally only running on mount (make sure it's only mounted once :))
})
}
}, [activate, active, triedToConnectToSafe]) // intentionally only running on mount (make sure it's only mounted once :))
// if the connection worked, wait until we get confirmation of that to flip the flag
useEffect(() => {
if (active) {
if (active && triedToConnectToSafe) {
setTried(true)
}
}, [active])
}, [active, triedToConnectToSafe])
return tried
}

View File

@@ -90,6 +90,7 @@ export function LanguageProvider({ children }: { children: ReactNode }) {
useEffect(() => {
dynamicActivate(locale)
.then(() => {
document.documentElement.setAttribute('lang', locale)
setLoaded(true)
})
.catch((error) => {

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: af_ZA\n"
"Language-Team: Afrikaans\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: af\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: af\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Afrikaans\n"
"PO-Revision-Date: 2021-07-13 20:04\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(maak alles skoon)"
msgid "(edit)"
msgstr "(wysig)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Verwyder stuur"
@@ -412,6 +408,7 @@ msgstr "Maak alles skoon"
msgid "Clear all"
msgstr "Maak alles skoon"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Naby"
@@ -483,6 +480,10 @@ msgstr "Bevestig die ruil"
msgid "Confirm this transaction in your wallet"
msgstr "Bevestig hierdie transaksie in u beursie"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Bevestig transaksie in beursie"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "Voer geldige lysligging in"
msgid "Enter valid token address"
msgstr "Voer geldige tekenadres in"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "Ongeldige reeks gekies. Die minimum prys moet laer wees as die maksimum
msgid "Invalid recipient"
msgstr "Ongeldige ontvanger"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Taal"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Leer"
@@ -1011,6 +1017,10 @@ msgstr "Maksimum:"
msgid "Maximum sent"
msgstr "Maksimum gestuur"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Spyskaart"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Oeps! 'N Onbekende fout het voorgekom. Verfris die bladsy of besoek 'n ander blaaier of toestel."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Optimisme Geskeduleerde stilstandtyd"
msgid "Optimism Planned Downtime"
msgstr "Optimisme beplan stilstand"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "Optimisme verwag in die nabye toekoms 'n bietjie stilstand. <0> Lees meer.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "Optimisme verwag in die nabye toekoms beplande stilstand. Onbeplande stilstand kan ook voorkom. Terwyl die netwerk af is, word fooie nie gegenereer nie en kan u nie likiditeit verwyder nie. <0> Lees meer.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "In die ry staan"
msgid "Rates"
msgstr "Tariewe"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Lees meer"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "Lees meer oor UNI"
@@ -1368,6 +1384,7 @@ msgstr "Verwyder {0} {1} en {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "Beperk ruilings slegs vir direkte pare."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "Stemming indien"
msgid "Succeeded"
msgstr "Geslaag"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Sukses"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Voorsiening"
@@ -1637,10 +1658,12 @@ msgstr "Totale deposito"
msgid "Total deposits"
msgstr "Totale deposito's"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Transaksie-instellings"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "Transaksie-instellings"
msgid "Transaction Submitted"
msgstr "Transaksie ingedien"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "Transaksie voltooi in"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Transaksiesperdatum"
@@ -1826,6 +1853,7 @@ msgstr "Uitsig op Etherscan"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Bekyk op Explorer"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: ar_SA\n"
"Language-Team: Arabic\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: ar\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: ar\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Arabic\n"
"PO-Revision-Date: 2021-07-13 20:04\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(مسح الكل)"
msgid "(edit)"
msgstr "(تعديل)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}٪"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- إزالة الإرسال"
@@ -412,6 +408,7 @@ msgstr "مسح الكل"
msgid "Clear all"
msgstr "مسح الكل"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "إغلاق"
@@ -483,6 +480,10 @@ msgstr "تأكيد المبادلة"
msgid "Confirm this transaction in your wallet"
msgstr "تأكيد هذه المعاملة في محفظتك"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "تأكيد المعاملة في المحفظة"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "أدخل موقع قائمة صالحة"
msgid "Enter valid token address"
msgstr "أدخل عنوان رمز صالح"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "النطاق المحدد غير صالح. يجب أن يكون الحد
msgid "Invalid recipient"
msgstr "مستلم غير صالح"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "لغة"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "تعلم"
@@ -1011,6 +1017,10 @@ msgstr "الحد الأقصى:"
msgid "Maximum sent"
msgstr "الحد الأقصى المرسل"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "قائمة الطعام"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "عفواً! حدث خطأ غير معروف. يُرجى تحديث الصفحة، أو الزيارة من متصفح آخر أو جهاز آخر."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "التفاؤل أوقات التعطل المجدولة"
msgid "Optimism Planned Downtime"
msgstr "التفاؤل وقت التوقف المخطط له"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "يتوقع التفاؤل بعض التوقفات المقررة في المستقبل القريب. <0> اقرأ المزيد.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "يتوقع التفاؤل توقفًا مخططًا له في المستقبل القريب. قد يحدث أيضًا توقف غير مخطط له. أثناء تعطل الشبكة ، لن يتم فرض رسوم ولن تتمكن من إزالة السيولة. <0> اقرأ المزيد.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "في قائمة الانتظار"
msgid "Rates"
msgstr "الأسعار"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "قراءة المزيد"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "اقرأ المزيد عن UNI"
@@ -1368,6 +1384,7 @@ msgstr "إزالة {0} {1} و {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "يقيد المبادلات إلى أزواج فقط ."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "تقديم التصويت"
msgid "Succeeded"
msgstr "نجح"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "النجاح"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "الإمداد"
@@ -1637,10 +1658,12 @@ msgstr "الإجمالي المودَع"
msgid "Total deposits"
msgstr "مجموع الودائع"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "إعدادات المعاملة"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "إعدادات المعاملة"
msgid "Transaction Submitted"
msgstr "تم إرسال المعاملة"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "اكتملت المعاملة في"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "الموعد النهائي للمعاملة"
@@ -1826,6 +1853,7 @@ msgstr "عرض على Etherscan"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "عرض على Explorer"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: ca_ES\n"
"Language-Team: Catalan\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: ca\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: ca\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Catalan\n"
"PO-Revision-Date: 2021-07-13 20:04\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(esborra-ho tot)"
msgid "(edit)"
msgstr "(edita)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Elimina l'enviament"
@@ -412,6 +408,7 @@ msgstr "Esborra-ho tot"
msgid "Clear all"
msgstr "Esborra-ho tot"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Tanca"
@@ -483,6 +480,10 @@ msgstr "Confirmeu l'intercanvi"
msgid "Confirm this transaction in your wallet"
msgstr "Confirmeu aquesta transacció a la vostra cartera"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Confirmeu la transacció a la cartera"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "Introduïu la ubicació vàlida de la llista"
msgid "Enter valid token address"
msgstr "Introduïu una adreça de fitxa vàlida"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "L'interval no és vàlid. El preu mínim ha de ser inferior al preu màx
msgid "Invalid recipient"
msgstr "Destinatari no vàlid"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Llenguatge"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Aprendre"
@@ -1011,6 +1017,10 @@ msgstr "Màx.:"
msgid "Maximum sent"
msgstr "Màxim enviat"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Menú"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Vaja! S'ha produït un error desconegut. Actualitzeu la pàgina o visiteu-la des dun altre navegador o dispositiu."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Temps d'aturada programat per a l'optimisme"
msgid "Optimism Planned Downtime"
msgstr "Temps d'inactivitat previst per a l'optimisme"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "Loptimisme espera un temps daturada programat en un futur proper. <0> Llegiu-ne més.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "L'optimisme espera un temps d'inactivitat previst en un futur proper. També es pot produir un temps d'inactivitat no planificat. Mentre la xarxa estigui inactiva, no es generaran comissions i no podreu eliminar la liquiditat. <0> Llegiu-ne més.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "En cua"
msgid "Rates"
msgstr "Tarifes"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Llegeix més"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "Llegiu més sobre UNI"
@@ -1368,6 +1384,7 @@ msgstr "Eliminació de {0} {1} i {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "Restringeix els intercanvis només a parells directes."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "Enviament de vot"
msgid "Succeeded"
msgstr "Ha tingut èxit"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Èxit"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Subministrament"
@@ -1637,10 +1658,12 @@ msgstr "Total dipositat"
msgid "Total deposits"
msgstr "Dipòsits totals"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Configuració de transaccions"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "Configuració de transaccions"
msgid "Transaction Submitted"
msgstr "Transacció enviada"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "Transacció finalitzada el"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Termini de transacció"
@@ -1826,6 +1853,7 @@ msgstr "Veure a Etherscan"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Veure a Explorer"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: cs_CZ\n"
"Language-Team: Czech\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: cs\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: cs\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Czech\n"
"PO-Revision-Date: 2021-07-13 20:04\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(vyprázdnit vše)"
msgid "(edit)"
msgstr "(upravit)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Odebrat odeslání"
@@ -412,6 +408,7 @@ msgstr "Vymazat vše"
msgid "Clear all"
msgstr "Vymazat vše"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Zavřít"
@@ -483,6 +480,10 @@ msgstr "Potvrdit výměnu"
msgid "Confirm this transaction in your wallet"
msgstr "Potvrďte tuto transakci ve své peněžence"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Potvrďte transakci v peněžence"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "Zadejte platnou polohu seznamu"
msgid "Enter valid token address"
msgstr "Zadejte platnou adresu žetonu"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "Vybrán neplatný rozsah. Minimální cena musí být nižší než maxi
msgid "Invalid recipient"
msgstr "Neplatný příjemce"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Jazyk"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Učit se"
@@ -1011,6 +1017,10 @@ msgstr "Maximálně:"
msgid "Maximum sent"
msgstr "Maximum odeslané"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Jídelní lístek"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Jejda! Došlo k neznámé chybě. Obnovte prosím stránku nebo ji navštivte z jiného prohlížeče nebo zařízení."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Optimismus plánované odstávky"
msgid "Optimism Planned Downtime"
msgstr "Optimismus plánované prostoje"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "Optimismus očekává v blízké budoucnosti určité plánované odstávky. <0> Přečtěte si více.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "Optimismus v blízké budoucnosti očekává plánované prostoje. Může dojít také k neplánovanému výpadku. I když je síť nefunkční, nebudou generovány poplatky a nebudete moci odstranit likviditu. <0> Přečtěte si více.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "Ve frontě"
msgid "Rates"
msgstr "Sazby"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Přečtěte si více"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "Přečtěte si více o UNI"
@@ -1368,6 +1384,7 @@ msgstr "Odstraňování {0} {1} a {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "Omezte swapy jen na přímé páry."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "Odesílání hlasů"
msgid "Succeeded"
msgstr "Uspěl"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Úspěch"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Zásoba"
@@ -1637,10 +1658,12 @@ msgstr "Celkem uloženo"
msgid "Total deposits"
msgstr "Vklady celkem"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Nastavení transakcí"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "Nastavení transakcí"
msgid "Transaction Submitted"
msgstr "Transakce odeslána"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "Transakce dokončena v"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Lhůta pro transakce"
@@ -1826,6 +1853,7 @@ msgstr "Pohled na Etherscan"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Zobrazit v Průzkumníku"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: da_DK\n"
"Language-Team: Danish\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: da\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: da\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Danish\n"
"PO-Revision-Date: 2021-07-13 20:04\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(ryd alle)"
msgid "(edit)"
msgstr "(rediger)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Fjern afsendelse"
@@ -412,6 +408,7 @@ msgstr "Ryd alle"
msgid "Clear all"
msgstr "Ryd alle"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Luk"
@@ -483,6 +480,10 @@ msgstr "Bekræft skift"
msgid "Confirm this transaction in your wallet"
msgstr "Bekræft denne transaktion i din tegnebog"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Bekræft transaktion i tegnebogen"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "Indtast gyldig listeplacering"
msgid "Enter valid token address"
msgstr "Indtast gyldig tokenadresse"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "Ugyldigt interval valgt. Minimumspris skal være lavere end den maksimal
msgid "Invalid recipient"
msgstr "Ugyldig modtager"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Sprog"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Lær"
@@ -1011,6 +1017,10 @@ msgstr "Maks:"
msgid "Maximum sent"
msgstr "Maksimum sendt"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Menu"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Ups! Der opstod en ukendt fejl. Opdater siden, eller besøg fra en anden browser eller enhed."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Optimisme Planlagte nedetid"
msgid "Optimism Planned Downtime"
msgstr "Optimisme planlagt nedetid"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "Optimisme forventer noget planlagt nedetid i den nærmeste fremtid. <0> Læs mere.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "Optimisme forventer planlagt nedetid i den nærmeste fremtid. Uplanlagt nedetid kan også forekomme. Mens netværket er nede, genereres der ikke gebyrer, og du vil ikke kunne fjerne likviditet. <0> Læs mere.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "I kø"
msgid "Rates"
msgstr "Satser"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Læs mere"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "Læs mere om UNI"
@@ -1368,6 +1384,7 @@ msgstr "Fjerner {0} {1} og {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "Begræns swaps til direkte par."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "Indsend Stemme"
msgid "Succeeded"
msgstr "Lykkedes"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Succes"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Forsyning"
@@ -1637,10 +1658,12 @@ msgstr "I alt deponeret"
msgid "Total deposits"
msgstr "Indlån i alt"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Transaktionsindstillinger"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "Transaktionsindstillinger"
msgid "Transaction Submitted"
msgstr "Transaktion indsendt"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "Transaktion gennemført i"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Frist for transaktion"
@@ -1826,6 +1853,7 @@ msgstr "Se på Etherscan"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Vis i Explorer"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-17 00:09\n"
"Last-Translator: \n"
"Language: de_DE\n"
"Language-Team: German\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: de\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: de\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: German\n"
"PO-Revision-Date: 2021-07-14 12:05\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(alles löschen)"
msgid "(edit)"
msgstr "(bearbeiten)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Senden entfernen"
@@ -93,7 +89,7 @@ msgstr "<0/> Alle Vorschläge"
#: src/pages/Vote/index.tsx
#: src/pages/Vote/index.tsx
msgid "<0/> Votes"
msgstr "<0/> Abstimmungen"
msgstr "<0/> Stimmen"
#: src/pages/Pool/v2.tsx
msgid "<0>Account analytics and accrued fees</0><1> ↗ </1>"
@@ -412,6 +408,7 @@ msgstr "Alles löschen"
msgid "Clear all"
msgstr "Alles löschen"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Schließen"
@@ -483,6 +480,10 @@ msgstr "Tausch bestätigen"
msgid "Confirm this transaction in your wallet"
msgstr "Diese Transaktion in Ihrer Wallet bestätigen"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Transaktion in Wallet bestätigen"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -600,7 +601,7 @@ msgstr "Delegiert an:"
#: src/state/governance/hooks.ts
msgid "Delegated votes"
msgstr "Delegierte Stimmen"
msgstr "Delegiertes Stimmenrecht"
#: src/components/vote/DelegateModal.tsx
msgid "Delegating votes"
@@ -729,6 +730,7 @@ msgstr "Gültigen Listenort eingeben"
msgid "Enter valid token address"
msgstr "Gültige Token-Adresse eingeben"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "Ungültiger Bereich ausgewählt. Der Mindestpreis muss kleiner als der M
msgid "Invalid recipient"
msgstr "Ungültiger Empfänger"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Sprache"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Lernen"
@@ -1011,6 +1017,10 @@ msgstr "Max.:"
msgid "Maximum sent"
msgstr "Maximum gesendet"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Menü"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1038,7 +1048,7 @@ msgstr "Migrieren Sie Ihre Liquiditäts-Token von Uniswap V2 nach Uniswap V3."
#: src/pages/MigrateV2/MigrateV2Pair.tsx
msgid "Migrating"
msgstr "Migriere"
msgstr "Migrieren"
#: src/components/PositionPreview/index.tsx
#: src/components/RangeSelector/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Hoppla! Ein unbekannter Fehler ist aufgetreten. Bitte aktualisieren Sie die Seite oder besuchen Sie uns von einem anderen Browser oder Gerät."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Geplante optimism Ausfallzeiten"
msgid "Optimism Planned Downtime"
msgstr "Geplante Ausfallzeit bei Optimism"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "Optimism erwartet in naher Zukunft geplante Ausfallzeiten. <0>Weiterlesen.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "Optimismus erwartet geplante Ausfallzeiten in naher Zukunft. Es kann auch zu ungeplanten Ausfallzeiten kommen. Während das Netzwerk ausgefallen ist, werden keine Gebühren generiert und Sie können keine Liquidität entfernen. <0>Weiterlesen.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1177,7 +1187,7 @@ msgstr "Ausstehend"
#: src/components/SearchModal/ManageLists.tsx
msgid "Please confirm you would like to remove this list by typing REMOVE"
msgstr "Bitte bestätigen Sie, dass Sie diese Liste entfernen möchten, indem Sie ENTFERNEN . eingeben"
msgstr "Bitte bestätigen Sie, dass Sie diese Liste entfernen möchten, indem Sie ENTFERNEN eingeben"
#: src/components/vote/ProposalEmptyState.tsx
msgid "Please connect to Layer 1 Ethereum"
@@ -1301,6 +1311,12 @@ msgstr "In Warteschlange"
msgid "Rates"
msgstr "Preise"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Weiterlesen"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "Erfahre mehr über UNI"
@@ -1368,6 +1384,7 @@ msgstr "Entferne {0} {1} und {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "Begrenzt Swaps nur auf Direktpaare."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1466,7 +1483,7 @@ msgstr "Schritt 1. Holen Sie sich UNI-V2-Liquiditätstoken"
#: src/state/governance/hooks.ts
msgid "Submitted new proposal"
msgstr "Neues Angebot eingereicht"
msgstr "Neuer Vorschlag eingereicht"
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Submitting Proposal"
@@ -1480,6 +1497,10 @@ msgstr "Stimmabgabe wird eingereicht"
msgid "Succeeded"
msgstr "Erfolgreich"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Erfolg"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Bereitstellen"
@@ -1555,7 +1576,7 @@ msgstr "Die Transaktion konnte nicht gesendet werden, da die Frist abgelaufen is
#: src/components/LiquidityChartRangeInput/index.tsx
msgid "There is no liquidity data."
msgstr "Es liegen keine Liquiditätsdaten vor."
msgstr "Keine Liquiditätsdaten vorhanden."
#: src/components/SearchModal/CommonBases.tsx
msgid "These tokens are commonly paired with other tokens."
@@ -1637,10 +1658,12 @@ msgstr "Gesamt deponiert"
msgid "Total deposits"
msgstr "Gesamteinlagen"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Transaktionseinstellungen"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "Transaktionseinstellungen"
msgid "Transaction Submitted"
msgstr "Transaktion gesendet"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "Transaktion abgeschlossen in"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Transaktionsfrist"
@@ -1826,6 +1853,7 @@ msgstr "Auf Etherscan ansehen"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Im Explorer anzeigen"
@@ -1951,7 +1979,7 @@ msgstr "Du kannst jetzt {0} handeln"
#: src/pages/CreateProposal/index.tsx
msgid "You don't have enough votes to submit a proposal"
msgstr "Sie haben nicht genug Stimmen, um einen Vorschlag einzureichen"
msgstr "Ihr Stimmrecht reicht nicht aus, um einen Vorschlag einzureichen"
#: src/pages/PoolFinder/index.tsx
msgid "You dont have liquidity in this pool yet."
@@ -2146,7 +2174,7 @@ msgstr "{0} ETH"
#: src/components/Header/NetworkCard.tsx
msgid "{0} Explorer"
msgstr "{0} Entdecker"
msgstr "{0} Explorer"
#: src/pages/RemoveLiquidity/V3.tsx
#: src/pages/RemoveLiquidity/V3.tsx

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: el_GR\n"
"Language-Team: Greek\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: el\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: el\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Greek\n"
"PO-Revision-Date: 2021-07-13 20:05\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(καθαρισμός όλων)"
msgid "(edit)"
msgstr "(επεξεργασία)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Αφαίρεση αποστολής"
@@ -412,6 +408,7 @@ msgstr "Εκκαθάριση Όλων"
msgid "Clear all"
msgstr "Εκκαθάριση όλων"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Κλείσιμο"
@@ -483,6 +480,10 @@ msgstr "Επιβεβαίωση ανταλλαγής"
msgid "Confirm this transaction in your wallet"
msgstr "Επιβεβαιώστε αυτή τη συναλλαγή στο πορτοφόλι σας"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Επιβεβαίωση συναλλαγής στο πορτοφόλι"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "Εισάγετε έγκυρη λίστα τοποθεσιών"
msgid "Enter valid token address"
msgstr "Εισάγετε μια διεύθυνση έγκυρης μάρκας"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "Επιλέχθηκε μη έγκυρο εύρος. Η ελάχιστη
msgid "Invalid recipient"
msgstr "Μη έγκυρος παραλήπτης"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Γλώσσα"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Μάθετε"
@@ -1011,6 +1017,10 @@ msgstr "Μέγιστο:"
msgid "Maximum sent"
msgstr "Απεστάλη το μέγιστο"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Μενού"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Ωχ! Προέκυψε ένα άγνωστο σφάλμα. Παρακαλώ ανανεώστε τη σελίδα ή επισκεφθείτε από άλλο πρόγραμμα περιήγησης ή συσκευή."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Προγραμματισμένος χρόνος διακοπής αισιοδοξίας"
msgid "Optimism Planned Downtime"
msgstr "Αισιοδοξία Προγραμματισμένος χρόνος διακοπής"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "Η αισιοδοξία αναμένει κάποια προγραμματισμένη διακοπή λειτουργίας στο εγγύς μέλλον. <0> Διαβάστε περισσότερα.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "Η αισιοδοξία αναμένει προγραμματισμένο χρόνο διακοπής στο εγγύς μέλλον. Μπορεί επίσης να συμβεί μη προγραμματισμένος χρόνος διακοπής. Ενώ το δίκτυο είναι εκτός λειτουργίας, δεν θα δημιουργηθούν τέλη και δεν θα μπορείτε να αφαιρέσετε τη ρευστότητα. <0> Διαβάστε περισσότερα.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "Σε ουρά"
msgid "Rates"
msgstr "Τιμές"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Διαβάστε περισσότερα"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "Διαβάστε περισσότερα για UNI"
@@ -1368,6 +1384,7 @@ msgstr "Αφαίρεση των {0} {1} και {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "Περιορίζει τις ανταλλαγές μόνο σε απευθείας ζεύγη."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "Γίνεται υποβολή ψήφου"
msgid "Succeeded"
msgstr "Επιτεύχθηκε"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Επιτυχία"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Παροχή"
@@ -1637,10 +1658,12 @@ msgstr "Σύνολο που κατατέθηκε"
msgid "Total deposits"
msgstr "Συνολικές καταθέσεις"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Ρυθμίσεις Συναλλαγής"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "Ρυθμίσεις Συναλλαγής"
msgid "Transaction Submitted"
msgstr "Συναλλαγή Υποβλήθηκε"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "Η συναλλαγή ολοκληρώθηκε στις"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Προθεσμία συναλλαγής"
@@ -1826,6 +1853,7 @@ msgstr "Θέα στο Ethercan"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Προβολή στον Explorer"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: es_ES\n"
"Language-Team: Spanish\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: es\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: es-ES\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Spanish\n"
"PO-Revision-Date: 2021-07-13 20:05\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(limpiar todo)"
msgid "(edit)"
msgstr "(editar)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Eliminar envío"
@@ -412,6 +408,7 @@ msgstr "Limpiar todo"
msgid "Clear all"
msgstr "Limpiar todo"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Cerrar"
@@ -483,6 +480,10 @@ msgstr "Confirmar intercambio"
msgid "Confirm this transaction in your wallet"
msgstr "Confirmar esta transacción en su cartera"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Confirmar transacción en billetera"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "Introduzca una ubicación de lista válida"
msgid "Enter valid token address"
msgstr "Introduzca una dirección de token válida"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "Rango seleccionado no válido. El precio mínimo debe ser inferior al pr
msgid "Invalid recipient"
msgstr "Receptor no válido"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Idioma"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Aprender"
@@ -1011,6 +1017,10 @@ msgstr "Máx:"
msgid "Maximum sent"
msgstr "Máximo enviado"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Menú"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "¡Ups! Se ha producido un error desconocido. Actualice la página o acceda desde otro navegador o dispositivo."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Optimismo Tiempos de inactividad programados"
msgid "Optimism Planned Downtime"
msgstr "Tiempo de inactividad planificado con optimismo"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "El optimismo espera algún tiempo de inactividad programado en un futuro próximo. <0> Leer más.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "El optimismo espera un tiempo de inactividad planificado en un futuro próximo. También puede ocurrir un tiempo de inactividad no planificado. Mientras la red esté inactiva, no se generarán tarifas y no podrá eliminar la liquidez. <0> Leer más.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "Puesto en cola"
msgid "Rates"
msgstr "Tarifas"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Lee mas"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "Leer más sobre UNI"
@@ -1368,6 +1384,7 @@ msgstr "Eliminando {0} {1} y {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "Restringe los intercambios a pares directos únicamente."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "Enviando Voto"
msgid "Succeeded"
msgstr "Tuvo éxito"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Éxito"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Suministro"
@@ -1637,10 +1658,12 @@ msgstr "Total depositado"
msgid "Total deposits"
msgstr "Total de depósitos"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Ajustes de la transacción"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "Ajustes de la transacción"
msgid "Transaction Submitted"
msgstr "Transacción enviada"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "Transacción completada en"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Fecha límite de la transacción"
@@ -1826,6 +1853,7 @@ msgstr "Ver en Etherscan"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Ver en el explorador"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: fi_FI\n"
"Language-Team: Finnish\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: fi\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: fi\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Finnish\n"
"PO-Revision-Date: 2021-07-13 20:05\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(clear all)"
msgid "(edit)"
msgstr "(edit)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Poista lähetys"
@@ -412,6 +408,7 @@ msgstr "Tyhjennä kaikki"
msgid "Clear all"
msgstr "Tyhjennä kaikki"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Sulje"
@@ -483,6 +480,10 @@ msgstr "Vahvista vaihto"
msgid "Confirm this transaction in your wallet"
msgstr "Vahvista lompakkosi tapahtuma"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Vahvista tapahtuma lompakossa"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "Syötä kelvollinen luettelon sijainti"
msgid "Enter valid token address"
msgstr "Syötä kelvollinen rahakeosoite"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "Virheellinen vaihteluväli valittu. Minimihinnan on oltava pienempi kuin
msgid "Invalid recipient"
msgstr "Virheellinen vastaanottaja"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Kieli"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Opi"
@@ -1011,6 +1017,10 @@ msgstr "Maksimi:"
msgid "Maximum sent"
msgstr "Maksimimäärä lähetetty"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Valikko"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Hups! Tapahtui tuntematon virhe. Ole hyvä ja päivitä sivu tai vieraile sivulla toisella selaimella tai laitteella."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Optimismi suunnitellut seisokit"
msgid "Optimism Planned Downtime"
msgstr "Optimismi Suunniteltu seisokki"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "Optimismi odottaa joitain suunniteltuja seisokkeja lähitulevaisuudessa. <0> Lue lisää.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "Optimismi odottaa suunniteltuja seisokkeja lähitulevaisuudessa. Myös odottamattomia seisokkeja voi esiintyä. Kun verkko on poissa käytöstä, maksuja ei synny ja et voi poistaa likviditeettiä. <0> Lue lisää.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "Jonossa"
msgid "Rates"
msgstr "Kurssit"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Lue lisää"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "Lue lisää UNIsta"
@@ -1368,6 +1384,7 @@ msgstr "Poistetaan {0} {1} ja {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "Rajoittaa vaihdot vain suoriin pareihin."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "Lähetetään ääntä"
msgid "Succeeded"
msgstr "Menestyi"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Menestys"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Tarjonta"
@@ -1637,10 +1658,12 @@ msgstr "Talletettu yhteensä"
msgid "Total deposits"
msgstr "Talletuksia yhteensä"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Tapahtuma-asetukset"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "Tapahtuma-asetukset"
msgid "Transaction Submitted"
msgstr "Tapahtuma lähetetty"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "Kauppa suoritettu vuonna"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Tapahtuman määräaika"
@@ -1826,6 +1853,7 @@ msgstr "Näkymä Etherscanissa"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Näytä Explorerissa"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: fr_FR\n"
"Language-Team: French\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: fr\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: fr\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: French\n"
"PO-Revision-Date: 2021-07-13 20:05\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(tout effacer)"
msgid "(edit)"
msgstr "(modifier)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Supprimer le destinataire"
@@ -412,6 +408,7 @@ msgstr "Tout effacer"
msgid "Clear all"
msgstr "Tout effacer"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Fermer"
@@ -483,6 +480,10 @@ msgstr "Valider le swap"
msgid "Confirm this transaction in your wallet"
msgstr "Validez cette transaction dans votre portefeuille"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Confirmer la transaction dans le portefeuille"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "Saisissez un emplacement de liste valide"
msgid "Enter valid token address"
msgstr "Saisissez une adresse de jeton valide"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "Plage non valide sélectionnée. Le prix minimum doit être inférieur a
msgid "Invalid recipient"
msgstr "Destinataire invalide"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Langue"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Apprendre"
@@ -1011,6 +1017,10 @@ msgstr "Max :"
msgid "Maximum sent"
msgstr "Maximum envoyé"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Menu"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Oups ! Une erreur inconnue s'est produite. Veuillez rafraîchir la page ou visiter depuis un autre navigateur ou appareil."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Optimisme Temps d'arrêt programmés"
msgid "Optimism Planned Downtime"
msgstr "Optimisme Temps d'arrêt planifié"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "Optimism s'attend à des temps d'arrêt programmés dans un proche avenir. <0>En savoir plus.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "Optimism s'attend à des temps d'arrêt planifiés dans un proche avenir. Des temps d'arrêt imprévus peuvent également se produire. Tant que le réseau est en panne, les frais ne seront pas générés et vous ne pourrez pas retirer de liquidité. <0>En savoir plus.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "En attente"
msgid "Rates"
msgstr "Tarifs"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Lire la suite"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "En savoir plus sur UNI"
@@ -1368,6 +1384,7 @@ msgstr "Suppression de {0} {1} et {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "Restreint les swaps uniquement aux paires directes."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "Soumettre un vote"
msgid "Succeeded"
msgstr "Réussi"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Succès"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Approvisionnement"
@@ -1637,10 +1658,12 @@ msgstr "Total déposé"
msgid "Total deposits"
msgstr "Total des dépôts"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Paramètres de la transaction"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "Paramètres de la transaction"
msgid "Transaction Submitted"
msgstr "Transaction envoyée"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "Transaction réalisée en"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Date limite de la transaction"
@@ -1826,6 +1853,7 @@ msgstr "Voir sur Etherscan"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Voir sur Explorer"
@@ -1892,7 +1920,7 @@ msgstr "Lorsque vous vous retirez, le contrat réclamera automatiquement UNI en
#: src/components/earn/UnstakingModal.tsx
msgid "When you withdraw, your UNI is claimed and your liquidity is removed from the mining pool."
msgstr "Lorsque vous retirez, votre UNI est réclamée et votre liquidité est retirée de la réserve minière."
msgstr "Lorsque vous retirez, votre UNI est réclamée et votre liquidité est retirée de la pool de récompense."
#: src/components/earn/UnstakingModal.tsx
#: src/pages/Earn/Manage.tsx

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: he_IL\n"
"Language-Team: Hebrew\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: he\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: he\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Hebrew\n"
"PO-Revision-Date: 2021-07-13 20:05\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(נקה הכל)"
msgid "(edit)"
msgstr "(עריכה)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- הסר שליחה"
@@ -412,6 +408,7 @@ msgstr "נקה הכל"
msgid "Clear all"
msgstr "נקה הכל"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "סגור"
@@ -483,6 +480,10 @@ msgstr "אשר החלפה"
msgid "Confirm this transaction in your wallet"
msgstr "אשר את העסקה בארנק שלך"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "אשר עסקה בארנק"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "הזן מיקום רשימה חוקי"
msgid "Enter valid token address"
msgstr "הזן כתובת אסימון חוקית"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "נבחר טווח לא חוקי. המחיר המינימלי חייב ל
msgid "Invalid recipient"
msgstr "נמען לא חוקי"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "שפה"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "לִלמוֹד"
@@ -1011,6 +1017,10 @@ msgstr "מקסימום:"
msgid "Maximum sent"
msgstr "מקסימום נשלח"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "תַפרִיט"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "אופס! אירעה שגיאה לא ידועה. אנא רענן את הדף, או בקר בדפדפן או במכשיר אחר."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "זמני השבתה של אופטימיות"
msgid "Optimism Planned Downtime"
msgstr "אופטימיות מתוכננת השבתה"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "האופטימיות צופה זמן השבתה מתוכנן בזמן הקרוב. <0> קרא עוד.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "אופטימיות צופה השבתה מתוכננת בעתיד הקרוב. זמן השבתה לא מתוכנן עשוי להתרחש גם כן. בזמן שהרשת מושבתת, לא ייווצרו עמלות ולא תוכל להסיר נזילות. <0> קרא עוד.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "בתור"
msgid "Rates"
msgstr "תעריפים"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "קרא עוד"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "קרא עוד על UNI"
@@ -1368,6 +1384,7 @@ msgstr "הסרת {0} {1} ו {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "מגבלות מחליפות לזוגות ישירים בלבד."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "הגשת הצבעה"
msgid "Succeeded"
msgstr "הצליח"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "הַצלָחָה"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "לְסַפֵּק"
@@ -1637,10 +1658,12 @@ msgstr "סה\"כ מה שהופקד"
msgid "Total deposits"
msgstr "סך ההפקדות"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "הגדרות עסקה"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "הגדרות עסקה"
msgid "Transaction Submitted"
msgstr "העסקה הוגשה"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "העסקה הושלמה בשנת"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "מועד אחרון לעסקה"
@@ -1826,6 +1853,7 @@ msgstr "מבט על אתרסקאן"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "צפה ב- Explorer"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: hu_HU\n"
"Language-Team: Hungarian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: hu\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: hu\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Hungarian\n"
"PO-Revision-Date: 2021-07-13 20:05\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(összes törlése)"
msgid "(edit)"
msgstr "(szerkesztés)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Küldés eltávolítása"
@@ -412,6 +408,7 @@ msgstr "Mindent töröl"
msgid "Clear all"
msgstr "Mindent töröl"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Bezárás"
@@ -483,6 +480,10 @@ msgstr "Swap megerősítése"
msgid "Confirm this transaction in your wallet"
msgstr "Tranzakció megerősítése a pénztárcájában"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "A tranzakció megerősítése a pénztárcában"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "Adja meg az érvényes lista helyét"
msgid "Enter valid token address"
msgstr "Adja meg az érvényes token címet"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -914,6 +916,10 @@ msgstr "Érvénytelen tartományt választott ki. A minimális árnak alacsonyab
msgid "Invalid recipient"
msgstr "Érvénytelen címzett"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Nyelv"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Tanulás"
@@ -1012,6 +1018,10 @@ msgstr "Max:"
msgid "Maximum sent"
msgstr "Maximum elküldve"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Menü"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1132,12 +1142,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Hoppá! Ismeretlen hiba történt. Kérjük, frissítse az oldalt, vagy látogasson el egy másik böngészőből vagy eszközről."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Optimizmus ütemezett leállások"
msgid "Optimism Planned Downtime"
msgstr "Az optimizmus tervezett leállása"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "Az optimizmus a közeljövőben néhány tervezett leállásra számít. <0> További információ.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "Az optimizmus a tervezett leállásokra számít a közeljövőben. Előfordulhat nem tervezett leállás is. Amíg a hálózat nem működik, díjak nem keletkeznek, és nem tudja eltávolítani a likviditást. <0> További információ.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1302,6 +1312,12 @@ msgstr "Sorban"
msgid "Rates"
msgstr "Árfolyamok"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Olvass tovább"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "További információk az UNI-ról"
@@ -1369,6 +1385,7 @@ msgstr "{0} {1} és {2} {3} eltávolítása"
msgid "Restricts swaps to direct pairs only."
msgstr "Kizárólag a közvetlen párokra korlátozza a swapokat."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1481,6 +1498,10 @@ msgstr "Szavazat benyújtása"
msgid "Succeeded"
msgstr "Sikerült"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Siker"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Kínálat"
@@ -1638,10 +1659,12 @@ msgstr "Összesen letétbe helyezett"
msgid "Total deposits"
msgstr "Összes letét"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Tranzakció beállítások"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1651,6 +1674,10 @@ msgstr "Tranzakció beállítások"
msgid "Transaction Submitted"
msgstr "Tranzakció benyújtva"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "A tranzakció befejeződött"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Tranzakció határideje"
@@ -1827,6 +1854,7 @@ msgstr "Nézd meg az Etherscan webhelyen"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Megtekintés az Explorerben"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: id_ID\n"
"Language-Team: Indonesian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: id\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: id\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Indonesian\n"
"PO-Revision-Date: 2021-07-13 20:05\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(Hapus semua)"
msgid "(edit)"
msgstr "(edit)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Hapus pengiriman"
@@ -412,6 +408,7 @@ msgstr "Hapus Semua"
msgid "Clear all"
msgstr "Hapus semua"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Tutup"
@@ -483,6 +480,10 @@ msgstr "Konfirmasikan Swap"
msgid "Confirm this transaction in your wallet"
msgstr "Konfirmasikan transaksi ini di dompet Anda"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Konfirmasi transaksi di dompet"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "Masukkan lokasi daftar yang valid"
msgid "Enter valid token address"
msgstr "Masukkan alamat token yang valid"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "Rentang yang tidak valid dipilih. Harga min harus lebih rendah dari harg
msgid "Invalid recipient"
msgstr "Penerima tidak valid"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Bahasa"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Belajar"
@@ -1011,6 +1017,10 @@ msgstr "Maks:"
msgid "Maximum sent"
msgstr "Maksimum dikirim"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Tidak bisa"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Ups! Terjadi kesalahan yang tidak diketahui. Harap segarkan halaman, atau kunjungi dari browser atau perangkat lain."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Optimisme Waktu Henti Terjadwal"
msgid "Optimism Planned Downtime"
msgstr "Optimisme Waktu Henti yang Direncanakan"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "Optimisme mengharapkan beberapa waktu henti yang dijadwalkan dalam waktu dekat. <0>Baca selengkapnya.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "Optimisme mengharapkan downtime yang direncanakan dalam waktu dekat. Waktu henti yang tidak direncanakan juga dapat terjadi. Saat jaringan mati, biaya tidak akan dihasilkan dan Anda tidak akan dapat menghapus likuiditas. <0>Baca selengkapnya.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "antri"
msgid "Rates"
msgstr "Tarif"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Baca lebih lajut"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "Baca selengkapnya tentang UNI"
@@ -1368,6 +1384,7 @@ msgstr "Menghapus {0} {1} dan {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "Membatasi swap hanya untuk pasangan langsung."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "Mengirim Suara"
msgid "Succeeded"
msgstr "Berhasil"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Kesuksesan"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Pasokan"
@@ -1637,10 +1658,12 @@ msgstr "Total deposit"
msgid "Total deposits"
msgstr "Jumlah simpanan"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Pengaturan Transaksi"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "Pengaturan Transaksi"
msgid "Transaction Submitted"
msgstr "Transaksi Dikirim"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "Transaksi selesai di"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Batas waktu transaksi"
@@ -1826,6 +1853,7 @@ msgstr "Lihat di Etherscan"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Lihat di Explorer"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: it_IT\n"
"Language-Team: Italian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: it\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: it\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Italian\n"
"PO-Revision-Date: 2021-07-13 20:05\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(cancella tutto)"
msgid "(edit)"
msgstr "(modifica)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Rimuovi invio"
@@ -412,6 +408,7 @@ msgstr "Cancella Tutto"
msgid "Clear all"
msgstr "Cancella tutto"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Chiudi"
@@ -483,6 +480,10 @@ msgstr "Conferma lo scambio"
msgid "Confirm this transaction in your wallet"
msgstr "Conferma questa transazione nel tuo portafoglio"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Conferma transazione nel portafoglio"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "Inserisci la posizione della lista valida"
msgid "Enter valid token address"
msgstr "Inserisci un indirizzo di token valido"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "Intervallo selezionato non valido. Il prezzo minimo deve essere inferior
msgid "Invalid recipient"
msgstr "Destinatario non valido"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "linguaggio"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Impara"
@@ -1011,6 +1017,10 @@ msgstr "Max:"
msgid "Maximum sent"
msgstr "Massimo inviato"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Menù"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Oops! Si è verificato un errore sconosciuto. Si prega di aggiornare la pagina, o visitare da un altro browser o dispositivo."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Ottimismo Tempi di inattività programmati"
msgid "Optimism Planned Downtime"
msgstr "L'ottimismo ha pianificato i tempi di inattività"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "L'ottimismo prevede alcuni tempi di inattività programmati nel prossimo futuro. <0>Leggi di più.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "L'ottimismo prevede tempi di fermo pianificati nel prossimo futuro. Possono verificarsi anche tempi di inattività non pianificati. Mentre la rete è inattiva, non verranno generate commissioni e non sarai in grado di rimuovere la liquidità. <0>Leggi di più.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "In coda"
msgid "Rates"
msgstr "Tariffe"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Leggi di più"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "Leggi tutto su UNI"
@@ -1368,6 +1384,7 @@ msgstr "Rimozione di {0} {1} e {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "Limita gli swap solo alle coppie dirette."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "Invio del voto"
msgid "Succeeded"
msgstr "Successo"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Successo"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Fornitura"
@@ -1637,10 +1658,12 @@ msgstr "Totale depositato"
msgid "Total deposits"
msgstr "Depositi totali"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Impostazioni della transazione"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "Impostazioni della transazione"
msgid "Transaction Submitted"
msgstr "Transazione Inviata"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "Transazione completata in"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Termine transazione"
@@ -1826,6 +1853,7 @@ msgstr "Visualizza su Etherscan"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Visualizza su Explorer"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: ja_JP\n"
"Language-Team: Japanese\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: ja\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: ja\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Japanese\n"
"PO-Revision-Date: 2021-07-14 07:04\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(すべてクリア)"
msgid "(edit)"
msgstr "(編集)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- 送信を削除"
@@ -105,7 +101,7 @@ msgstr "V3に<0>戻る</0>"
#: src/pages/AddLiquidity/index.tsx
msgid "<0>Current Price:</0><1><2/></1><3>{0} per {1}</3>"
msgstr "<0>現在の価格:</0> <1> <2 /></1> <3>{0} あたり {1}</3>"
msgstr "<0>現在の価格:</0><1><2/></1><3>{0} / {1}</3>"
#: src/pages/RemoveLiquidity/index.tsx
msgid "<0>Tip:</0> Removing pool tokens converts your position back into underlying tokens at the current rate, proportional to your share of the pool. Accrued fees are included in the amounts you receive."
@@ -412,6 +408,7 @@ msgstr "すべてクリア"
msgid "Clear all"
msgstr "すべてクリア"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "閉じる"
@@ -483,6 +480,10 @@ msgstr "スワップの確認"
msgid "Confirm this transaction in your wallet"
msgstr "ウォレットで取引を確認する"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "ウォレットで取引を確認する"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -705,7 +706,7 @@ msgstr "受取人を入力"
#: src/components/TransactionSettings/index.tsx
msgid "Enter a valid slippage percentage"
msgstr "有効なスリッページの値を入力してください"
msgstr "有効なスリッページの値を入力してください"
#: src/components/claim/AddressClaimModal.tsx
msgid "Enter an address to trigger a UNI claim. If the address has any claimable UNI it will be sent to them on submission."
@@ -729,6 +730,7 @@ msgstr "有効なリストの位置を入力ください"
msgid "Enter valid token address"
msgstr "有効なトークンアドレスを入力してください"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -757,7 +759,7 @@ msgstr "あなたが利用していないトークンリストからの検索結
#: src/components/Settings/index.tsx
msgid "Expert mode turns off the confirm transaction prompt and allows high slippage trades that often result in bad rates and lost funds."
msgstr "エキスパートモードは取引確認画面をスキップし、不利な価格や資金を失う可能性のある高スリッページ取引を許可します。"
msgstr "エキスパートモードは取引確認画面をスキップし、不利な価格や資金を失う可能性のある高スリッページ取引を許可します。"
#: src/pages/Vote/styled.tsx
msgid "Expired"
@@ -913,6 +915,10 @@ msgstr "設定した価格範囲が間違っています。最小価格は最大
msgid "Invalid recipient"
msgstr "受け取りアドレスが無効です"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "言語"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "資料"
@@ -1011,6 +1017,10 @@ msgstr "最大:"
msgid "Maximum sent"
msgstr "最大売却数"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "メニュー"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "不明なエラーが発生しました。ページを更新するか、別のブラウザまたはデバイスからアクセスしてください。"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "楽観的なスケジュールされたダウンタイム"
msgid "Optimism Planned Downtime"
msgstr "Optimismの予定されているダウンタイム"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "Optimismは、近い将来、予定されたダウンタイムが発生すると予想しています。 <0>続きを読む</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "Optimismは、近い将来に計画されたダウンタイムを予想しています。計画外のダウンタイムも発生する可能性があります。ネットワークがダウンしている間、手数料は発生せず、流動性を取り除くことはできません。 <0>続きを読む</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1295,12 +1305,18 @@ msgstr "提案者"
#: src/pages/Vote/styled.tsx
msgid "Queued"
msgstr "キューに入れられました"
msgstr "処理待ち"
#: src/pages/AddLiquidityV2/ConfirmAddModalBottom.tsx
msgid "Rates"
msgstr "レート"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "続きを読む"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "UNIについてもっと見る"
@@ -1323,7 +1339,7 @@ msgstr "最近の取引"
#: src/components/AddressInputPanel/index.tsx
msgid "Recipient"
msgstr "受信者"
msgstr "受取人"
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1368,6 +1384,7 @@ msgstr "{0} {1} と {2} {3} を解除中"
msgid "Restricts swaps to direct pairs only."
msgstr "スワップをダイレクトペアのみに制限します。"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1437,7 +1454,7 @@ msgstr "Portisを表示"
#: src/pages/Pool/index.tsx
msgid "Show closed positions"
msgstr "閉じた位置を表示する"
msgstr "決済したポジションを表示"
#: src/pages/RemoveLiquidity/index.tsx
msgid "Simple"
@@ -1446,7 +1463,7 @@ msgstr "シンプル"
#: src/components/TransactionSettings/index.tsx
#: src/components/swap/AdvancedSwapDetails.tsx
msgid "Slippage tolerance"
msgstr "スリッページの許容範囲"
msgstr "スリッページの許容範囲"
#: src/components/swap/UnsupportedCurrencyFooter.tsx
msgid "Some assets are not available through this interface because they may not work well with the smart contracts or we are unable to allow trading for legal reasons."
@@ -1458,7 +1475,7 @@ msgstr "何らかの問題が発生しました"
#: src/components/PositionList/index.tsx
msgid "Status"
msgstr "状態"
msgstr "ステータス"
#: src/pages/Earn/Manage.tsx
msgid "Step 1. Get UNI-V2 Liquidity tokens"
@@ -1480,6 +1497,10 @@ msgstr "投票を送信中"
msgid "Succeeded"
msgstr "成功"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "成功"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "追加"
@@ -1507,7 +1528,7 @@ msgstr "{0} {1} を {2} {3} にスワップ中"
#: src/components/Header/NetworkCard.tsx
msgid "Switch to L1 (Mainnet)"
msgstr "L1メインネットに切り替えます"
msgstr "L1メインネットに切り替え"
#: src/components/Popups/ClaimPopup.tsx
msgid "Thanks for being part of the Uniswap community <0/>"
@@ -1637,10 +1658,12 @@ msgstr "合計預入数量"
msgid "Total deposits"
msgstr "合計預入額"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "取引設定"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "取引設定"
msgid "Transaction Submitted"
msgstr "取引が送信されました"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "で完了したトランザクション"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "取引期限"
@@ -1768,7 +1795,7 @@ msgstr "サポートされていないアセット"
#: src/state/governance/hooks.ts
msgid "Untitled"
msgstr "無題"
msgstr "タイトル未設定"
#: src/pages/Swap/index.tsx
msgid "Unwrap"
@@ -1801,7 +1828,7 @@ msgstr "V3"
#: src/pages/MigrateV2/MigrateV2Pair.tsx
#: src/pages/MigrateV2/MigrateV2Pair.tsx
msgid "V3 {0} Price:"
msgstr "v3 {0} 価格:"
msgstr "V3での {0} 価格:"
#: src/components/Header/UniBalanceContent.tsx
msgid "View UNI Analytics"
@@ -1821,11 +1848,12 @@ msgstr "リストを表示"
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "View on Etherscan"
msgstr "Etherscanで表示"
msgstr "Etherscanで見る"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "エクスプローラーで見る"
@@ -1960,7 +1988,7 @@ msgstr "プールにはまだ流動性がありません。"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
msgid "You must bridge L1 assets to the network to use them."
msgstr "L1アセットを使用するには、L1アセットをネットワークブリッジする必要があります。"
msgstr "レイヤー1の資産を使用するには、ネットワークブリッジする必要があります。"
#: src/pages/MigrateV2/MigrateV2Pair.tsx
msgid "You must connect an account."
@@ -2241,7 +2269,7 @@ msgstr "{0}/{1} LP NFT"
#: src/pages/MigrateV2/MigrateV2Pair.tsx
msgid "{0}/{1} LP Tokens"
msgstr "{0}/{1} 流動性トークン"
msgstr "{0}/{1} LPトークン"
#: src/components/claim/ClaimModal.tsx
msgid "{SOCKS_AMOUNT} UNI"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: ko_KR\n"
"Language-Team: Korean\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: ko\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: ko\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Korean\n"
"PO-Revision-Date: 2021-07-13 20:05\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(모두 지우기)"
msgid "(edit)"
msgstr "(편집)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "-보내기 제거"
@@ -412,6 +408,7 @@ msgstr "모두 지우기"
msgid "Clear all"
msgstr "모두 지우기"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "닫기"
@@ -483,6 +480,10 @@ msgstr "스왑 확인"
msgid "Confirm this transaction in your wallet"
msgstr "지갑에서 이 거래를 확인하세요"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "지갑에서 거래 확인"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "유효한 목록 위치를 입력하세요."
msgid "Enter valid token address"
msgstr "유효한 토큰 주소를 입력하세요."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "잘못된 범위를 선택했습니다. 최소 가격은 최대 가격
msgid "Invalid recipient"
msgstr "잘못된 수령인"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "언어"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "학습"
@@ -1011,6 +1017,10 @@ msgstr "최대 :"
msgid "Maximum sent"
msgstr "최대 이체"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "메뉴"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "죄송합니다! 알 수없는 오류가 발생했습니다. 페이지를 새로 고침하거나 다른 브라우저 또는 기기에서 방문하세요."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "낙관주의 예정된 다운타임"
msgid "Optimism Planned Downtime"
msgstr "낙관적 계획된 다운타임"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "낙관론은 가까운 장래에 예정된 가동 중지 시간을 예상합니다. <0>더 읽어보세요.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "낙관론은 가까운 장래에 계획된 다운타임을 예상합니다. 계획되지 않은 다운타임도 발생할 수 있습니다. 네트워크가 다운되는 동안 수수료가 생성되지 않으며 유동성을 제거할 수 없습니다. <0>더 읽어보세요.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "대기 중"
msgid "Rates"
msgstr "요율"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "더 읽기"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "UNI에 대해 자세히 알아보기"
@@ -1368,6 +1384,7 @@ msgstr "{0} {1} 및 {2} {3} 제거 중"
msgid "Restricts swaps to direct pairs only."
msgstr "스왑을 직접 쌍으로만 제한합니다."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "투표 제출"
msgid "Succeeded"
msgstr "성공"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "성공"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "공급"
@@ -1637,10 +1658,12 @@ msgstr "총 입금"
msgid "Total deposits"
msgstr "총 입금"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "거래 설정"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "거래 설정"
msgid "Transaction Submitted"
msgstr "제출된 거래"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "거래 완료"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "거래 마감 시간"
@@ -1826,6 +1853,7 @@ msgstr "Etherscan에서보기"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Explorer에서 보기"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: nl_NL\n"
"Language-Team: Dutch\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: nl\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: nl\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Dutch\n"
"PO-Revision-Date: 2021-07-13 20:04\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(alles wissen)"
msgid "(edit)"
msgstr "(bewerken)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Verzenden verwijderen"
@@ -412,6 +408,7 @@ msgstr "Alles wissen"
msgid "Clear all"
msgstr "Alles wissen"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Sluiten"
@@ -483,6 +480,10 @@ msgstr "Bevestig wissel"
msgid "Confirm this transaction in your wallet"
msgstr "Bevestig deze transactie in uw portemonnee"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Bevestig transactie in portemonnee"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "Voer een geldige lijstlocatie in"
msgid "Enter valid token address"
msgstr "Voer geldig tokenadres in"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "Ongeldig bereik geselecteerd. De minimumprijs moet lager zijn dan de max
msgid "Invalid recipient"
msgstr "Ongeldige ontvanger"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Taal"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Leren"
@@ -1011,6 +1017,10 @@ msgstr "Max:"
msgid "Maximum sent"
msgstr "Maximaal verzonden"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Menu"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Oeps! Er is een onbekende fout opgetreden. Ververs de pagina of bezoek vanaf een andere browser of apparaat."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Optimisme geplande uitvaltijden"
msgid "Optimism Planned Downtime"
msgstr "Optimisme Geplande Downtime"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "Optimisme verwacht in de nabije toekomst enige geplande downtime. <0>Lees meer.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "Optimisme verwacht geplande stilstand in de nabije toekomst. Er kan ook ongeplande uitvaltijd optreden. Zolang het netwerk niet beschikbaar is, worden er geen kosten gegenereerd en kunt u geen liquiditeit verwijderen. <0>Lees meer.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "In de wachtrij"
msgid "Rates"
msgstr "Tarieven"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Lees verder"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "Lees meer over UNI"
@@ -1368,6 +1384,7 @@ msgstr "Verwijderen van {0} {1} en {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "Beperkt swaps alleen tot directe paren."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "Indienen van stem"
msgid "Succeeded"
msgstr "Geslaagd"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Succes"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Levering"
@@ -1637,10 +1658,12 @@ msgstr "Totaal gestort"
msgid "Total deposits"
msgstr "Totale stortingen"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Transactie-instellingen"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "Transactie-instellingen"
msgid "Transaction Submitted"
msgstr "Transactie verzonden"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "Transactie voltooid in"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Transactiedeadline"
@@ -1826,6 +1853,7 @@ msgstr "Bekijk op Etherscan"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Weergeven op Verkenner"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: no_NO\n"
"Language-Team: Norwegian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: no\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: no\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Norwegian\n"
"PO-Revision-Date: 2021-07-13 20:05\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(fjern alle)"
msgid "(edit)"
msgstr "(rediger)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Fjern sending"
@@ -412,6 +408,7 @@ msgstr "Fjern alle"
msgid "Clear all"
msgstr "Fjern alle"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Lukk"
@@ -483,6 +480,10 @@ msgstr "Bekreft bytte"
msgid "Confirm this transaction in your wallet"
msgstr "Bekreft denne transaksjonen i lommeboken din"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Bekreft transaksjonen i lommeboken"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "Oppgi gyldig plassering for listen"
msgid "Enter valid token address"
msgstr "Oppgi gyldig pollettadresse"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "Ugyldig område valgt. Minsteprisen må være lavere enn maks prisen."
msgid "Invalid recipient"
msgstr "Ugyldig mottaker"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Språk"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Finn ut mer"
@@ -1011,6 +1017,10 @@ msgstr "Maks:"
msgid "Maximum sent"
msgstr "Maksimum sendt"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Meny"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Det oppstod en ukjent feil. Oppdater siden, eller besøk fra en annen nettleser eller enhet."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Optimisme Planlagte nedetid"
msgid "Optimism Planned Downtime"
msgstr "Optimisme planlagt nedetid"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "Optimisme forventer noe planlagt nedetid i nær fremtid. <0> Les mer.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "Optimisme forventer planlagt nedetid i nær fremtid. Uplanlagt nedetid kan også forekomme. Mens nettverket er nede, genereres det ikke gebyrer, og du kan ikke fjerne likviditet. <0> Les mer.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "I kø"
msgid "Rates"
msgstr "Priser"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Les mer"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "Les mer om UNI"
@@ -1368,6 +1384,7 @@ msgstr "Fjerner {0} {1} og {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "Begrenset byttebytte til bare direkte par par."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "Sender inn stemme"
msgid "Succeeded"
msgstr "Lyktes"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Suksess"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Levering"
@@ -1637,10 +1658,12 @@ msgstr "Totalt avsatt"
msgid "Total deposits"
msgstr "Totale innskudd"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Transaksjonsinnstillinger"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "Transaksjonsinnstillinger"
msgid "Transaction Submitted"
msgstr "Transaksjon sendt"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "Transaksjonen fullført i"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Transaksjons frist"
@@ -1826,6 +1853,7 @@ msgstr "Utsikt på Etherscan"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Se på Explorer"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: pl_PL\n"
"Language-Team: Polish\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: pl\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: pl\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Polish\n"
"PO-Revision-Date: 2021-07-13 20:05\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(wyczyść wszystkie)"
msgid "(edit)"
msgstr "(edytować)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Usuń wysłanie"
@@ -412,6 +408,7 @@ msgstr "Wyczyść wszystko"
msgid "Clear all"
msgstr "Wyczyść wszystko"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Zamknij"
@@ -483,6 +480,10 @@ msgstr "Potwierdź zamianę"
msgid "Confirm this transaction in your wallet"
msgstr "Potwierdź tę transakcję w swoim portfelu"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Potwierdź transakcję w portfelu"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "Wprowadź poprawną lokalizację listy"
msgid "Enter valid token address"
msgstr "Wprowadź prawidłowy adres tokenu"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "Wybrano nieprawidłowy zakres. Minimalna cena musi być niższa niż mak
msgid "Invalid recipient"
msgstr "Nieprawidłowy odbiorca"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Język"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Ucz się"
@@ -1011,6 +1017,10 @@ msgstr "Maks.:"
msgid "Maximum sent"
msgstr "Maksymalna wysłana"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Menu"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Ups! Wystąpił nieznany błąd. Odśwież stronę lub odwiedź z innej przeglądarki lub urządzenia."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Zaplanowane przestoje"
msgid "Optimism Planned Downtime"
msgstr "Optymizm Planowany przestój"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "Optymizm spodziewa się w najbliższej przyszłości zaplanowanego przestoju. <0>Czytaj więcej.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "Optymizm spodziewa się planowanego przestoju w najbliższej przyszłości. Mogą również wystąpić nieplanowane przestoje. Gdy sieć nie działa, opłaty nie będą generowane i nie będziesz w stanie usunąć płynności. <0>Czytaj więcej.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "W kolejce"
msgid "Rates"
msgstr "Stawki"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Czytaj więcej"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "Dowiedz się więcej o UNI"
@@ -1368,6 +1384,7 @@ msgstr "Usuwanie {0} {1} i {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "Ogranicza swapy tylko do par bezpośrednich."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "Wysyłanie głosu"
msgid "Succeeded"
msgstr "Udało się"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Sukces"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Dostawa"
@@ -1637,10 +1658,12 @@ msgstr "Całkowita wpłata"
msgid "Total deposits"
msgstr "Depozyty ogółem"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Ustawienia transakcji"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "Ustawienia transakcji"
msgid "Transaction Submitted"
msgstr "Transakcja przesłana"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "Transakcja zakończona w"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Termin transakcji"
@@ -1826,6 +1853,7 @@ msgstr "Zobacz na Etherscan"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Zobacz w Eksploratorze"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: pt_BR\n"
"Language-Team: Portuguese, Brazilian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: pt\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: pt-BR\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Portuguese, Brazilian\n"
"PO-Revision-Date: 2021-07-13 20:05\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(limpar tudo)"
msgid "(edit)"
msgstr "(editar)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Remover o envio"
@@ -412,6 +408,7 @@ msgstr "Limpar Tudo"
msgid "Clear all"
msgstr "Limpar tudo"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Fechar"
@@ -483,6 +480,10 @@ msgstr "Confirmar a conversão"
msgid "Confirm this transaction in your wallet"
msgstr "Confirmar esta operação na sua carteira"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Confirme a transação na carteira"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "Digite uma localização válida para a lista"
msgid "Enter valid token address"
msgstr "Digite um endereço válido para os tokens"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "Faixa selecionada inválida. O preço mín deve ser inferior ao preço m
msgid "Invalid recipient"
msgstr "Destinatário inválido"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Língua"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Aprender"
@@ -1011,6 +1017,10 @@ msgstr "Máx:"
msgid "Maximum sent"
msgstr "Máximo enviado"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Cardápio"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Opa! Ocorreu um erro desconhecido. Atualize a página ou visite-a em outro navegador ou dispositivo."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Tempo de inatividade programado para otimismo"
msgid "Optimism Planned Downtime"
msgstr "Tempo de inatividade planejado para otimismo"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "O otimismo espera algum tempo de inatividade programado em um futuro próximo. <0> Leia mais.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "O otimismo espera um tempo de inatividade planejado em um futuro próximo. Tempo de inatividade não planejado também pode ocorrer. Enquanto a rede estiver desligada, as taxas não serão geradas e você não poderá remover a liquidez. <0> Leia mais.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "Na fila"
msgid "Rates"
msgstr "Taxas"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Consulte Mais informação"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "Leia mais sobre as UNI"
@@ -1368,6 +1384,7 @@ msgstr "Removendo {0} {1} e {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "Restringir a conversão somente aos pares diretos."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "Enviando Voto"
msgid "Succeeded"
msgstr "Bem sucedido"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Sucesso"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Fornecimento"
@@ -1637,10 +1658,12 @@ msgstr "Total depositado"
msgid "Total deposits"
msgstr "Total dos depósitos"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Configurações das operações"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "Configurações das operações"
msgid "Transaction Submitted"
msgstr "Operação enviada"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "Transação concluída em"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Data-limite da operação"
@@ -1826,6 +1853,7 @@ msgstr "Ver no Etherscan"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Visualizar no Explorer"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: pt_PT\n"
"Language-Team: Portuguese\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: pt\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: pt-PT\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Portuguese\n"
"PO-Revision-Date: 2021-07-13 20:05\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(limpar tudo)"
msgid "(edit)"
msgstr "(editar)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Remover o envio"
@@ -412,6 +408,7 @@ msgstr "Limpar Tudo"
msgid "Clear all"
msgstr "Limpar tudo"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Fechar"
@@ -483,6 +480,10 @@ msgstr "Confirmar troca"
msgid "Confirm this transaction in your wallet"
msgstr "Confirmar esta transação na sua carteira"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Confirme a transação na carteira"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "Insira um local de lista válido"
msgid "Enter valid token address"
msgstr "Insira um endereço de token válido"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "Intervalo selecionado inválido. O preço mínimo deve ser inferior ao p
msgid "Invalid recipient"
msgstr "Destinatário inválido"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Língua"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Aprender"
@@ -1011,6 +1017,10 @@ msgstr "Máx:"
msgid "Maximum sent"
msgstr "Máximo enviado"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Cardápio"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Ups! Ocorreu um erro desconhecido. Por favor, atualize a página, ou visite a partir de outro navegador ou dispositivo."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Tempo de inatividade programado para otimismo"
msgid "Optimism Planned Downtime"
msgstr "Tempo de inatividade planejado para otimismo"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "O otimismo espera algum tempo de inatividade programado em um futuro próximo. <0> Leia mais.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "O otimismo espera um tempo de inatividade planejado em um futuro próximo. Tempo de inatividade não planejado também pode ocorrer. Enquanto a rede estiver desligada, as taxas não serão geradas e você não poderá remover a liquidez. <0> Leia mais.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "Na fila"
msgid "Rates"
msgstr "Taxas"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Consulte Mais informação"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "Leia mais sobre a UNI"
@@ -1368,6 +1384,7 @@ msgstr "A remover {0} {1} e {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "Restringe trocas apenas para pares diretos."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "A Enviar Voto"
msgid "Succeeded"
msgstr "Bem sucedido"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Sucesso"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Fornecer"
@@ -1637,10 +1658,12 @@ msgstr "Total depositado"
msgid "Total deposits"
msgstr "Total de depósitos"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Configurações de transação"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "Configurações de transação"
msgid "Transaction Submitted"
msgstr "Transação Enviada"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "Transação concluída em"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Prazo de transação"
@@ -1826,6 +1853,7 @@ msgstr "Ver no Etherscan"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Ver no Explorador"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: ro_RO\n"
"Language-Team: Romanian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: ro\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: ro\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Romanian\n"
"PO-Revision-Date: 2021-07-13 20:05\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(elimină tot)"
msgid "(edit)"
msgstr "(editează)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Elimină trimiterile"
@@ -412,6 +408,7 @@ msgstr "Șterge tot"
msgid "Clear all"
msgstr "Șterge tot"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Închide"
@@ -483,6 +480,10 @@ msgstr "Confirmă Schimbul"
msgid "Confirm this transaction in your wallet"
msgstr "Confirmă această tranzacție în portofelul tău"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Confirmați tranzacția în portofel"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "Introdu o listă valabilă a locației"
msgid "Enter valid token address"
msgstr "Introdu o adresă valabilă a grupului"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "Interval invalid selectat. Prețul minim trebuie să fie mai mic decât
msgid "Invalid recipient"
msgstr "Destinatar nevalid"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Limba"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Învață"
@@ -1011,6 +1017,10 @@ msgstr "Max:"
msgid "Maximum sent"
msgstr "Maximum trimis"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Meniul"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Ups! A avut loc o eroare necunoscută. Reîmprospătează pagina, sau vizitează un alt browser sau dispozitiv."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Timpurile de nefuncționare programate pentru optimism"
msgid "Optimism Planned Downtime"
msgstr "Timp de inactivitate planificat pentru optimism"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "Optimismul așteaptă o perioadă de nefuncționare programată în viitorul apropiat. <0> Citiți mai multe.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "Optimismul așteaptă perioade de nefuncționare planificate în viitorul apropiat. Poate să apară și perioade de nefuncționare neplanificate. În timp ce rețeaua este oprită, taxele nu vor fi generate și nu veți putea elimina lichiditatea. <0> Citiți mai multe.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "În așteptare"
msgid "Rates"
msgstr "Tarife"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Citeste mai mult"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "Citește mai multe despre UNI"
@@ -1368,6 +1384,7 @@ msgstr "Se elimină {0} {1} și {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "Restricționează rocadele doar la perechi directe."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "Se trimite votul"
msgid "Succeeded"
msgstr "Reușit"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Succes"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Furnizare"
@@ -1637,10 +1658,12 @@ msgstr "Total depozitat"
msgid "Total deposits"
msgstr "Depozite totale"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Setări Tranzacție"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "Setări Tranzacție"
msgid "Transaction Submitted"
msgstr "Tranzacție Trimisă"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "Tranzacție finalizată în"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Termen limită tranzacție"
@@ -1826,6 +1853,7 @@ msgstr "Vizualizare pe Etherscan"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Vizualizează pe Explorer"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: ru_RU\n"
"Language-Team: Russian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: ru\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: ru\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Russian\n"
"PO-Revision-Date: 2021-07-13 20:05\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(очистить всё)"
msgid "(edit)"
msgstr "(изменить)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Удалить отправку"
@@ -412,6 +408,7 @@ msgstr "Очистить всё"
msgid "Clear all"
msgstr "Очистить всё"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Закрыть"
@@ -464,7 +461,7 @@ msgstr "Подтвердить"
#: src/pages/AddLiquidity/index.tsx
msgid "Confirm Create"
msgstr "Подтвердите создание"
msgstr "Подтвердить создание"
#: src/pages/AddLiquidityV2/ConfirmAddModalBottom.tsx
msgid "Confirm Supply"
@@ -483,6 +480,10 @@ msgstr "Подтвердить обмен"
msgid "Confirm this transaction in your wallet"
msgstr "Подтвердите эту транзакцию в своём кошельке"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Подтвердите транзакцию в кошельке"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -584,7 +585,7 @@ msgstr "Текущая цена {0}:"
#: src/components/Menu/index.tsx
msgid "Dark Theme"
msgstr "Темная тема"
msgstr "Тёмная тема"
#: src/pages/Vote/styled.tsx
msgid "Defeated"
@@ -729,6 +730,7 @@ msgstr "Введите правильное расположение списк
msgid "Enter valid token address"
msgstr "Введите правильный адрес токена"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -798,7 +800,7 @@ msgstr "Полный диапазон"
#: src/pages/AddLiquidity/index.tsx
msgid "Full range positions may earn less fees than concentrated positions. Learn more <0>here</0>."
msgstr "Позиции полного диапазона могут приносить меньше комиссионных, чем позиции концентрированных. Подробнее <0> здесь</0> ."
msgstr "Позиции полного диапазона могут зарабатывать меньше комиссий, чем концентрированные позиции. Узнайте подробнее <0> здесь</0>."
#: src/components/ErrorBoundary/index.tsx
msgid "Get support on Discord"
@@ -913,13 +915,17 @@ msgstr "Выбран неверный диапазон. Минимальная
msgid "Invalid recipient"
msgstr "Неверный получатель"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Язык"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Узнать больше"
#: src/pages/Pool/CTACards.tsx
msgid "Learn about providing liquidity"
msgstr "Узнайте о предоставлении ликвидности"
msgstr "Узнать подробнее о предоставлении ликвидности"
#: src/components/Header/NetworkCard.tsx
msgid "Learn more"
@@ -1011,6 +1017,10 @@ msgstr "Макс.:"
msgid "Maximum sent"
msgstr "Максимально к отправлению"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Меню"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,20 +1141,20 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Ой! Произошла неизвестная ошибка. Пожалуйста, обновите страницу или откройте из другого браузера или с другого устройства."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Перерывы в работе Optimism"
msgid "Optimism Planned Downtime"
msgstr "Плановые перерывы в работе Optimism"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "В ближайшее время ожидается запланированный перерыв в работе Optimism. <0>Узнать подробности.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "В ближайшее время ожидается плановый перерыв в работе Optimism. Также возможны внезапные перерывы в работе. Когда сеть не работает, комиссии не начисляются, а ликвидность невозможно удалить. <0>Подробнее.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
msgstr "Оптимистичный Etherscan"
msgstr "Etherscan сети Optimism"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic L2 Gateway"
msgstr "Оптимистичный шлюз L2"
msgstr "L2-шлюз в Optimism"
#: src/components/Badge/RangeBadge.tsx
msgid "Out of range"
@@ -1177,7 +1187,7 @@ msgstr "Ожидает"
#: src/components/SearchModal/ManageLists.tsx
msgid "Please confirm you would like to remove this list by typing REMOVE"
msgstr "Подтвердите, что вы хотите удалить этот список, набрав УДАЛИТЬ"
msgstr "Чтобы подтвердить, что вы хотите удалить этот список, наберите УДАЛИТЬ"
#: src/components/vote/ProposalEmptyState.tsx
msgid "Please connect to Layer 1 Ethereum"
@@ -1301,6 +1311,12 @@ msgstr "В очереди"
msgid "Rates"
msgstr "Тарифы"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Узнать подробнее"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "Подробнее о UNI"
@@ -1368,6 +1384,7 @@ msgstr "Удаление {0} {1} и {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "Производить обмен только через прямые пары."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "Отправка голоса"
msgid "Succeeded"
msgstr "Успешно"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Успешно"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Внести"
@@ -1572,11 +1593,11 @@ msgstr "Это альфа-версия Uniswap в сети {0}. Вам нужн
#: src/pages/AddLiquidity/index.tsx
msgid "This pool must be initialized before you can add liquidity. To initialize, select a starting price for the pool. Then, enter your liquidity price range and deposit amount. Gas fees will be higher than usual due to the initialization transaction."
msgstr "Этот пул необходимо инициализировать, прежде чем вы сможете добавить ликвидность. Для инициализации выберите начальную цену для пула. Затем введите диапазон цен ликвидности и сумму депозита. Плата за газ будет выше, чем обычно, из-за транзакции инициализации."
msgstr "Этот пул необходимо инициализировать, прежде чем вы сможете добавить ликвидность. Для инициализации выберите начальную цену для пула. Затем введите диапазон цен для ликвидности и сумму депозита. Плата за газ будет выше, чем обычно, из-за инициализирующей транзакции."
#: src/pages/AddLiquidity/index.tsx
msgid "This pool must be initialized on {0} before you can add liquidity. To initialize, select a starting price for the pool. Then, enter your liquidity price range and deposit amount."
msgstr "Этот пул должен быть инициализирован на {0} прежде чем вы сможете добавить ликвидность. Для инициализации выберите начальную цену для пула. Затем введите диапазон цен ликвидности и сумму депозита."
msgstr "Этот пул необходимо инициализировать в {0}, прежде чем вы сможете добавить ликвидность. Для инициализации выберите начальную цену для пула. Затем введите диапазон цен для ликвидности и сумму депозита."
#: src/components/SearchModal/ImportToken.tsx
msgid "This token doesn't appear on the active token list(s). Make sure this is the token that you want to trade."
@@ -1637,10 +1658,12 @@ msgstr "Всего внесено"
msgid "Total deposits"
msgstr "Всего внесено"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Настройки транзакций"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "Настройки транзакций"
msgid "Transaction Submitted"
msgstr "Транзакция отправлена"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "Транзакция завершена за"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Cрок действия транзакции"
@@ -1826,6 +1853,7 @@ msgstr "Посмотреть на Etherscan"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Просмотреть в обозревателе"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: sr_SP\n"
"Language-Team: Serbian (Cyrillic)\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: sr\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: sr\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Serbian (Cyrillic)\n"
"PO-Revision-Date: 2021-07-13 20:05\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(обриши све)"
msgid "(edit)"
msgstr "(уреди)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Уклони слање"
@@ -412,6 +408,7 @@ msgstr "Обриши све"
msgid "Clear all"
msgstr "Обриши све"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Затвори"
@@ -483,6 +480,10 @@ msgstr "Потврдите размену"
msgid "Confirm this transaction in your wallet"
msgstr "Потврдите ову трансакцију у новчанику"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Потврдите трансакцију у новчанику"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "Унесите важећи списак локација"
msgid "Enter valid token address"
msgstr "Унесите важећу адресу токена"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "Изабран је неважећи опсег. Минимална це
msgid "Invalid recipient"
msgstr "Неважећи прималац"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Језик"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Научи"
@@ -1011,6 +1017,10 @@ msgstr "Макс:"
msgid "Maximum sent"
msgstr "Максимално послато"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Мени"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Упс! Дошло је до непознате грешке. Освежите страницу или је посетите из другог прегледача или уређаја."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Оптимизам заказани застоји"
msgid "Optimism Planned Downtime"
msgstr "Оптимизам планирано време застоја"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "Оптимизам очекује предвиђени застој у блиској будућности. <0> Прочитајте више.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "Оптимизам очекује планиране застоје у блиској будућности. Може доћи и до непланираних застоја. Док је мрежа у квару, накнаде се неће генерисати и нећете моћи да уклоните ликвидност. <0> Прочитајте више.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "У реду"
msgid "Rates"
msgstr "Стопе"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Опширније"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "Прочитајте више о UNI-ју"
@@ -1368,6 +1384,7 @@ msgstr "Уклањање {0} {1} и {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "Ограничава замене само на директне парове."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "Слање гласа"
msgid "Succeeded"
msgstr "Успео"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Успех"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Снабдевање"
@@ -1637,10 +1658,12 @@ msgstr "Укупно депоновано"
msgid "Total deposits"
msgstr "Укупни депозити"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Поставке трансакције"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "Поставке трансакције"
msgid "Transaction Submitted"
msgstr "Трансакција је предата"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "Трансакција је завршена у"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Крајњи рок за трансакцију"
@@ -1826,6 +1853,7 @@ msgstr "Поглед на Етхерсцан-у"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Поглед на Екплореру"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: sv_SE\n"
"Language-Team: Swedish\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: sv\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: sv-SE\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Swedish\n"
"PO-Revision-Date: 2021-07-13 20:05\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(rensa alla)"
msgid "(edit)"
msgstr "(redigera)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Ta bort sändning"
@@ -412,6 +408,7 @@ msgstr "Rensa alla"
msgid "Clear all"
msgstr "Rensa alla"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Stäng"
@@ -483,6 +480,10 @@ msgstr "Bekräfta byte"
msgid "Confirm this transaction in your wallet"
msgstr "Bekräfta transaktionen i din plånbok"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Bekräfta transaktionen i plånboken"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "Ange giltig listplats"
msgid "Enter valid token address"
msgstr "Ange giltig tokenadress"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "Ogiltigt intervall valt. Minimipriset måste vara lägre än maxpriset."
msgid "Invalid recipient"
msgstr "Ogiltig mottagare"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Språk"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Lär dig"
@@ -1011,6 +1017,10 @@ msgstr "Högst:"
msgid "Maximum sent"
msgstr "Maximalt skickat"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Meny"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Hoppsan! Ett okänt fel inträffade. Uppdatera sidan eller använd en annan webbläsare eller enhet."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Optimism schemalagda stilleståndstider"
msgid "Optimism Planned Downtime"
msgstr "Optimism planerad driftstopp"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "Optimism förväntar sig en viss schemalagd driftstopp inom en snar framtid. <0> Läs mer.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "Optimismen förväntar sig planerad driftstopp inom en snar framtid. Oplanerad stillestånd kan också förekomma. Medan nätverket är nere genereras inte avgifter och du kommer inte att kunna ta bort likviditet. <0> Läs mer.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "Kö"
msgid "Rates"
msgstr "Kurser"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Läs mer"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "Läs mer om UNI"
@@ -1368,6 +1384,7 @@ msgstr "Tar bort {0} {1} och {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "Begränsar byten till direkta par."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "Skickar röstning"
msgid "Succeeded"
msgstr "Lyckades"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Framgång"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Tillgång"
@@ -1637,10 +1658,12 @@ msgstr "Totalt insatt"
msgid "Total deposits"
msgstr "Summa insättningar"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Transaktionsinställningar"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "Transaktionsinställningar"
msgid "Transaction Submitted"
msgstr "Transaktion skickad"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "Transaktionen slutfördes"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Tidsfrist för transaktion"
@@ -1826,6 +1853,7 @@ msgstr "Visa på Etherscan"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Visa i Utforskare"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: tr_TR\n"
"Language-Team: Turkish\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: tr\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: tr\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Turkish\n"
"PO-Revision-Date: 2021-07-14 00:38\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(tümünü temizle)"
msgid "(edit)"
msgstr "(düzenle)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Göndermeyi kaldır"
@@ -412,6 +408,7 @@ msgstr "Tümünü Temizle"
msgid "Clear all"
msgstr "Tümünü temizle"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Kapat"
@@ -483,6 +480,10 @@ msgstr "Swap'ı Onayla"
msgid "Confirm this transaction in your wallet"
msgstr "Cüzdanınızda bu işlemi onaylayın"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Cüzdandaki işlemi onaylayın"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "Geçerli liste konumu girin"
msgid "Enter valid token address"
msgstr "Geçerli jeton adresini girin"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "Geçersiz aralık seçildi. Minimum fiyat, maksimum fiyattan düşük ol
msgid "Invalid recipient"
msgstr "Geçersiz alıcı"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Dil"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Öğren"
@@ -1011,6 +1017,10 @@ msgstr "Maksimum:"
msgid "Maximum sent"
msgstr "Maksimum gönderme"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Menü"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Bilinmeyen bir hata oluştu. Lütfen sayfayı yenileyin veya başka bir tarayıcı ya da cihazdan ziyaret edin."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "İyimserlik Planlı Duruş Süreleri"
msgid "Optimism Planned Downtime"
msgstr "İyimserlik Planlı Kesinti Süresi"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "İyimserlik, yakın gelecekte bazı planlanmış kesintiler beklemektedir. <0>Daha fazlasını okuyun.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "İyimserlik, yakın gelecekte planlı kesintiler beklemektedir. Planlanmamış kesintiler de meydana gelebilir. Ağ kapalıyken ücret alınmayacak ve likiditeyi kaldıramayacaksınız. <0>Daha fazlasını okuyun.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "sıraya alındı"
msgid "Rates"
msgstr "Oranlar"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Daha fazla oku"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "UNI hakkında daha fazla bilgi edinin"
@@ -1368,6 +1384,7 @@ msgstr "{0} {1} ve {2} {3} kaldırılıyor"
msgid "Restricts swaps to direct pairs only."
msgstr "Swap'ları yalnızca doğrudan çiftlerle sınırlar."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "Oy Gönderme"
msgid "Succeeded"
msgstr "başarılı"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Başarı"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Kaynak"
@@ -1637,10 +1658,12 @@ msgstr "Toplam yatırılan"
msgid "Total deposits"
msgstr "Toplam mevduat"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "İşlem Ayarları"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "İşlem Ayarları"
msgid "Transaction Submitted"
msgstr "İşlem Gönderildi"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "İşlem tamamlandı"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "İşlem son tarihi"
@@ -1826,6 +1853,7 @@ msgstr "Etherscan üzerinde görüntüle"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Explorer'da Görüntüle"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: uk_UA\n"
"Language-Team: Ukrainian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: uk\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: uk\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Ukrainian\n"
"PO-Revision-Date: 2021-07-13 20:05\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(забрати все)"
msgid "(edit)"
msgstr "(редагувати)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Видалити відправку"
@@ -412,6 +408,7 @@ msgstr "Очистити все"
msgid "Clear all"
msgstr "Очистити все"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Закрити"
@@ -483,6 +480,10 @@ msgstr "Підтвердити обмін"
msgid "Confirm this transaction in your wallet"
msgstr "Підтвердьте цю операцію у своєму гаманці"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Підтвердіть транзакцію в гаманці"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "Введіть дійсне місце списку"
msgid "Enter valid token address"
msgstr "Введіть дійсну адресу токена"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "Вибрано недійсний діапазон. Мінімальна
msgid "Invalid recipient"
msgstr "Недійсний одержувач"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Мову"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Ознайомитися"
@@ -1011,6 +1017,10 @@ msgstr "Максимум:"
msgid "Maximum sent"
msgstr "Максимум відправлених"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Меню"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Ой! Сталася невідома помилка. Оновіть сторінку або зайдіть з іншого браузера чи пристрою."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Оптимізм запланованих простоїв"
msgid "Optimism Planned Downtime"
msgstr "Оптимізм запланований час простою"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "Оптимізм очікує певного запланованого простою найближчим часом. <0> Детальніше.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "Оптимізм очікує найближчим часом запланованих простоїв. Також можуть виникнути незаплановані простої. Поки мережа не працює, комісії не будуть генеруватися, і ви не зможете видалити ліквідність. <0> Докладніше.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "У черзі"
msgid "Rates"
msgstr "Ставки"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Читати далі"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "Дізнатися більше про UNI"
@@ -1368,6 +1384,7 @@ msgstr "Видалення {0} {1} та {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "Обмежує обмін лише прямими парами."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "Відправка голосу"
msgid "Succeeded"
msgstr "Вдалося"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Успіху"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Пропозиція"
@@ -1637,10 +1658,12 @@ msgstr "Усього внесено"
msgid "Total deposits"
msgstr "Усього внесків"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Налаштування транзакцій"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "Налаштування транзакцій"
msgid "Transaction Submitted"
msgstr "Транзакцію надіслано"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "Транзакція завершена в"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Кінцевий термін транзакції"
@@ -1826,6 +1853,7 @@ msgstr "Переглянути на Etherscan"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Переглянути на Explorer"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-16 23:05\n"
"Last-Translator: \n"
"Language: vi_VN\n"
"Language-Team: Vietnamese\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: vi\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: vi\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Vietnamese\n"
"PO-Revision-Date: 2021-07-13 20:05\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(xóa tất cả)"
msgid "(edit)"
msgstr "(chỉnh sửa)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- Xóa gửi"
@@ -412,6 +408,7 @@ msgstr "Xóa tất cả"
msgid "Clear all"
msgstr "Xóa tất cả"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "Đóng"
@@ -483,6 +480,10 @@ msgstr "Xác nhận Hoán đổi"
msgid "Confirm this transaction in your wallet"
msgstr "Xác nhận giao dịch này trong ví của bạn"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "Xác nhận giao dịch trong ví"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -729,6 +730,7 @@ msgstr "Nhập vị trí danh sách hợp lệ"
msgid "Enter valid token address"
msgstr "Nhập địa chỉ mã token hợp lệ"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -913,6 +915,10 @@ msgstr "Đã chọn dải ô không hợp lệ. Giá tối thiểu phải thấp
msgid "Invalid recipient"
msgstr "Người nhận không hợp lệ"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "Ngôn ngữ"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "Học hỏi"
@@ -1011,6 +1017,10 @@ msgstr "Tối đa:"
msgid "Maximum sent"
msgstr "Đã gửi tối đa"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "Thực đơn"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "Ối! Đã xảy ra lỗi không xác định. Vui lòng làm mới trang hoặc truy cập từ trình duyệt hoặc thiết bị khác."
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgstr "Thời gian ngừng hoạt động theo lịch trình lạc quan"
msgid "Optimism Planned Downtime"
msgstr "Lạc quan có kế hoạch thời gian ngừng hoạt động"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "Lạc quan mong đợi một số thời gian ngừng hoạt động theo lịch trình trong tương lai gần. <0> Đọc thêm.</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "Sự lạc quan mong đợi thời gian ngừng hoạt động theo kế hoạch trong tương lai gần. Thời gian chết ngoài kế hoạch cũng có thể xảy ra. Trong khi mạng ngừng hoạt động, phí sẽ không được tạo ra và bạn sẽ không thể loại bỏ thanh khoản. <0> Đọc thêm.</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1301,6 +1311,12 @@ msgstr "Đã xếp hàng"
msgid "Rates"
msgstr "Tỷ giá"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "Đọc thêm"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "Đọc thêm về UNI"
@@ -1368,6 +1384,7 @@ msgstr "Loại bỏ {0} {1} và {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "Chỉ hạn chế hoán đổi đối với các cặp trực tiếp."
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1480,6 +1497,10 @@ msgstr "Gửi phiếu bầu"
msgid "Succeeded"
msgstr "Thành công"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "Sự thành công"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "Cung cấp"
@@ -1637,10 +1658,12 @@ msgstr "Tổng số tiền gửi"
msgid "Total deposits"
msgstr "Tổng số tiền gửi"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "Cài đặt giao dịch"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "Cài đặt giao dịch"
msgid "Transaction Submitted"
msgstr "Giao dịch đã được gửi"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "Giao dịch đã hoàn tất trong"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "Thời hạn giao dịch"
@@ -1826,6 +1853,7 @@ msgstr "Xem trên Etherscan"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "Xem trên Explorer"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-17 11:04\n"
"Last-Translator: \n"
"Language: zh_CN\n"
"Language-Team: Chinese Simplified\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: zh\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: zh-CN\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Chinese Simplified\n"
"PO-Revision-Date: 2021-07-14 01:25\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(全部清除)"
msgid "(edit)"
msgstr "(编辑)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "-删除发送"
@@ -412,6 +408,7 @@ msgstr "全部清除"
msgid "Clear all"
msgstr "全部清除"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "关闭"
@@ -483,6 +480,10 @@ msgstr "确认兑换"
msgid "Confirm this transaction in your wallet"
msgstr "在您的钱包中确认这笔交易"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "在钱包中确认交易"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -584,7 +585,7 @@ msgstr "当前 {0} 兑换率:"
#: src/components/Menu/index.tsx
msgid "Dark Theme"
msgstr "深色主题"
msgstr "深色"
#: src/pages/Vote/styled.tsx
msgid "Defeated"
@@ -729,6 +730,7 @@ msgstr "输入有效的代币列表源"
msgid "Enter valid token address"
msgstr "输入有效的代币合约地址"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -798,7 +800,7 @@ msgstr "全范围"
#: src/pages/AddLiquidity/index.tsx
msgid "Full range positions may earn less fees than concentrated positions. Learn more <0>here</0>."
msgstr "全范围头寸可能比集中头寸赚取的费用少。点击此处<0>了解更多信息</0>."
msgstr "全范围仓位可能比集中仓位赚取更少的费用。在<0>此处</0>了解更多"
#: src/components/ErrorBoundary/index.tsx
msgid "Get support on Discord"
@@ -913,6 +915,10 @@ msgstr "选择的范围无效。最小兑换率必须低于最大兑换率。"
msgid "Invalid recipient"
msgstr "无效的接收方"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "语言"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "学习"
@@ -927,7 +933,7 @@ msgstr "了解更多"
#: src/components/Menu/index.tsx
msgid "Light Theme"
msgstr "浅色主题"
msgstr "浅色"
#: src/components/claim/ClaimModal.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -1011,6 +1017,10 @@ msgstr "最大值:"
msgid "Maximum sent"
msgstr "发送的最大值"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "菜单"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,12 +1141,12 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "糟糕!出现未知错误。请刷新页面,或从其他浏览器或设备访问。"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgid "Optimism Planned Downtime"
msgstr "Optimism 预定的下线时间段"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "Optimism 近期将有一些预定的下线时间段。<0>阅读更多。</0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "Optimism 预期在不久的将来进行停机维护。也可能发生计划外停机。当网络关闭时,不会产生费用收入,您将暂时无法移除流动性。 <0>阅读更多。</0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
@@ -1177,7 +1187,7 @@ msgstr "待办"
#: src/components/SearchModal/ManageLists.tsx
msgid "Please confirm you would like to remove this list by typing REMOVE"
msgstr "请输入 REMOVE 确认您要删除此列表"
msgstr "请输入 REMOVE 确认您要删除此列表"
#: src/components/vote/ProposalEmptyState.tsx
msgid "Please connect to Layer 1 Ethereum"
@@ -1301,6 +1311,12 @@ msgstr "待执行"
msgid "Rates"
msgstr "费率"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "阅读更多"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "阅读更多关于 UNI 代币的信息"
@@ -1368,6 +1384,7 @@ msgstr "正在去除 {0} {1} 和 {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "将交易限制为只针对直接币对。"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1437,7 +1454,7 @@ msgstr "显示 Portis"
#: src/pages/Pool/index.tsx
msgid "Show closed positions"
msgstr "显示平仓"
msgstr "显示已关闭的仓位"
#: src/pages/RemoveLiquidity/index.tsx
msgid "Simple"
@@ -1480,6 +1497,10 @@ msgstr "提交投票"
msgid "Succeeded"
msgstr "投票通过"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "成功"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "供应"
@@ -1507,7 +1528,7 @@ msgstr "将 {0} {1} 兑换为 {2} {3}"
#: src/components/Header/NetworkCard.tsx
msgid "Switch to L1 (Mainnet)"
msgstr "切换到 L1主网"
msgstr "切换到 L1 (主网)"
#: src/components/Popups/ClaimPopup.tsx
msgid "Thanks for being part of the Uniswap community <0/>"
@@ -1637,10 +1658,12 @@ msgstr "存入总额"
msgid "Total deposits"
msgstr "存入总额"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "交易设置"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "交易设置"
msgid "Transaction Submitted"
msgstr "已提交交易"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "交易完成于"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "交易截止期限"
@@ -1826,6 +1853,7 @@ msgstr "在 Etherscan 上查看"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "在以太坊资源浏览器上查看"

View File

@@ -1,20 +1,20 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2021-07-13 19:19+0000\n"
"Mime-Version: 1.0\n"
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2021-08-17 11:04\n"
"Last-Translator: \n"
"Language: zh_TW\n"
"Language-Team: Chinese Traditional\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: zh\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: uniswap-interface\n"
"X-Crowdin-Project-ID: 458284\n"
"X-Crowdin-Language: zh-TW\n"
"X-Crowdin-File: en-US.po\n"
"X-Crowdin-File-ID: 4\n"
"Project-Id-Version: uniswap-interface\n"
"Language-Team: Chinese Traditional\n"
"PO-Revision-Date: 2021-07-13 20:04\n"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -47,10 +47,6 @@ msgstr "(全部清除)"
msgid "(edit)"
msgstr "(編輯)"
#: src/components/RangeSelector/PresetsButtons.tsx
msgid "+/- {label}%"
msgstr "+/- {label}%"
#: src/pages/Swap/index.tsx
msgid "- Remove send"
msgstr "- 刪除發送"
@@ -412,6 +408,7 @@ msgstr "全部清除"
msgid "Clear all"
msgstr "全部清除"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Close"
msgstr "關閉"
@@ -483,6 +480,10 @@ msgstr "確認兌換"
msgid "Confirm this transaction in your wallet"
msgstr "在您的錢包中確認這筆交易"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Confirm transaction in wallet"
msgstr "在錢包中確認交易"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
#: src/pages/Swap/index.tsx
@@ -584,7 +585,7 @@ msgstr "當前 {0} 兌換率:"
#: src/components/Menu/index.tsx
msgid "Dark Theme"
msgstr "黑暗主題"
msgstr "深色"
#: src/pages/Vote/styled.tsx
msgid "Defeated"
@@ -729,6 +730,7 @@ msgstr "輸入有效的代幣列表源"
msgid "Enter valid token address"
msgstr "輸入有效的代幣地址"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Error"
@@ -798,7 +800,7 @@ msgstr "全範圍"
#: src/pages/AddLiquidity/index.tsx
msgid "Full range positions may earn less fees than concentrated positions. Learn more <0>here</0>."
msgstr "全範圍倉位可能比集中倉位賺取更少的費用。在此處<0>了解更多</0>."
msgstr "全範圍倉位可能比集中倉位賺取更少的費用。在<0>此處</0>了解更多"
#: src/components/ErrorBoundary/index.tsx
msgid "Get support on Discord"
@@ -913,13 +915,17 @@ msgstr "選擇的範圍無效。最小兌換率必須低於最大兌換率。"
msgid "Invalid recipient"
msgstr "無效的接收方"
#: src/components/Menu/index.tsx
msgid "Language"
msgstr "語言"
#: src/pages/Pool/index.tsx
msgid "Learn"
msgstr "瞭解"
#: src/pages/Pool/CTACards.tsx
msgid "Learn about providing liquidity"
msgstr "了解提供流動性"
msgstr "閱讀有關提供流動資金的資訊"
#: src/components/Header/NetworkCard.tsx
msgid "Learn more"
@@ -927,7 +933,7 @@ msgstr "瞭解更多"
#: src/components/Menu/index.tsx
msgid "Light Theme"
msgstr "輕主題"
msgstr "淺色"
#: src/components/claim/ClaimModal.tsx
#: src/pages/Pool/PositionPage.tsx
@@ -1011,6 +1017,10 @@ msgstr "最大值:"
msgid "Maximum sent"
msgstr "發送的最大值"
#: src/components/Menu/index.tsx
msgid "Menu"
msgstr "菜單"
#: src/components/PositionCard/Sushi.tsx
#: src/components/PositionCard/V2.tsx
#: src/components/PositionCard/index.tsx
@@ -1131,20 +1141,20 @@ msgid "Oops! An unknown error occurred. Please refresh the page, or visit from a
msgstr "糟糕!出現未知錯誤。請刷新頁面,或從其他瀏覽器或設備訪問。"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism Scheduled Downtimes"
msgid "Optimism Planned Downtime"
msgstr "Optimism 預定的下線時間段"
#: src/components/OptimismDowntimeWarning/index.tsx
msgid "Optimism expects some scheduled downtime in the near future. <0>Read more.</0>"
msgstr "Optimism 近期將有一些預定的下線時間段。 <0>閱讀更多。 </0>"
msgid "Optimism expects planned downtime in the near future. Unplanned downtime may also occur. While the network is down, fees will not be generated and you will be unable to remove liquidity. <0>Read more.</0>"
msgstr "Optimism 預期在不久的將來進行停機維護。也可能發生計劃外停機。當網絡關閉時,不會產生費用收入,您將暫時無法移除流動性。 <0>閱讀更多。 </0>"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic Etherscan"
msgstr "樂觀 Etherscan"
msgstr "Optimistic Etherscan"
#: src/components/Header/NetworkCard.tsx
msgid "Optimistic L2 Gateway"
msgstr "樂觀 L2 網關"
msgstr "Optimistic L2 網關"
#: src/components/Badge/RangeBadge.tsx
msgid "Out of range"
@@ -1177,7 +1187,7 @@ msgstr "待辦"
#: src/components/SearchModal/ManageLists.tsx
msgid "Please confirm you would like to remove this list by typing REMOVE"
msgstr "請輸入 REMOVE 確認要刪除此列表"
msgstr "請輸入 REMOVE 確認要刪除此列表"
#: src/components/vote/ProposalEmptyState.tsx
msgid "Please connect to Layer 1 Ethereum"
@@ -1301,6 +1311,12 @@ msgstr "待執行"
msgid "Rates"
msgstr "費率"
#: src/components/NetworkAlert/AddLiquidityNetworkAlert.tsx
#: src/components/NetworkAlert/MinimalNetworkAlert.tsx
#: src/components/NetworkAlert/NetworkAlert.tsx
msgid "Read more"
msgstr "閱讀更多"
#: src/pages/Earn/index.tsx
msgid "Read more about UNI"
msgstr "了解有關 UNI 的更多資訊"
@@ -1368,6 +1384,7 @@ msgstr "正在去除 {0} {1} 和 {2} {3}"
msgid "Restricts swaps to direct pairs only."
msgstr "將交易限製為只針對直接幣對。"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
msgid "Return"
@@ -1437,7 +1454,7 @@ msgstr "顯示 Portis"
#: src/pages/Pool/index.tsx
msgid "Show closed positions"
msgstr "顯示平倉"
msgstr "顯示已關閉的倉位"
#: src/pages/RemoveLiquidity/index.tsx
msgid "Simple"
@@ -1458,7 +1475,7 @@ msgstr "出問題了"
#: src/components/PositionList/index.tsx
msgid "Status"
msgstr "地位"
msgstr "狀態"
#: src/pages/Earn/Manage.tsx
msgid "Step 1. Get UNI-V2 Liquidity tokens"
@@ -1480,6 +1497,10 @@ msgstr "提交投票"
msgid "Succeeded"
msgstr "投票通過"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Success"
msgstr "成功"
#: src/pages/AddLiquidityV2/index.tsx
msgid "Supply"
msgstr "供應"
@@ -1507,7 +1528,7 @@ msgstr "將 {0} {1} 兌換為 {2} {3}"
#: src/components/Header/NetworkCard.tsx
msgid "Switch to L1 (Mainnet)"
msgstr "切換到 L1主網"
msgstr "切換到 L1 (主網)"
#: src/components/Popups/ClaimPopup.tsx
msgid "Thanks for being part of the Uniswap community <0/>"
@@ -1572,11 +1593,11 @@ msgstr "這是 Uniswap 在 {0} 網絡上的 alpha 版本。您必須將 L1 資
#: src/pages/AddLiquidity/index.tsx
msgid "This pool must be initialized before you can add liquidity. To initialize, select a starting price for the pool. Then, enter your liquidity price range and deposit amount. Gas fees will be higher than usual due to the initialization transaction."
msgstr "必須先初始化此池,然後才能添加流動性。初始化,請選擇池的起始價格然後輸入您的流動性價格範圍和存款金額。由於初始化交易Gas 費將比平時高。"
msgstr "需要先初始化,然後添加流動性。初始化,請選擇起始價格然後輸入您的流動性價格範圍和存款金額。因需進行初始化相關操作Gas 費將比平時高一些。"
#: src/pages/AddLiquidity/index.tsx
msgid "This pool must be initialized on {0} before you can add liquidity. To initialize, select a starting price for the pool. Then, enter your liquidity price range and deposit amount."
msgstr "在您添加流動性之前,此池必須初始化為 {0} 要初始化,請選擇池的起始價格然後輸入您的流動性價格範圍和存款金額。"
msgstr "在您添加流動性之前, {0} 池需要先初始化。請先選擇起始價格然後輸入您的流動性價格範圍和存款金額。"
#: src/components/SearchModal/ImportToken.tsx
msgid "This token doesn't appear on the active token list(s). Make sure this is the token that you want to trade."
@@ -1637,10 +1658,12 @@ msgstr "存入總額"
msgid "Total deposits"
msgstr "存款總額"
#: src/components/Settings/index.tsx
#: src/components/Settings/index.tsx
msgid "Transaction Settings"
msgstr "交易設定"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/StakingModal.tsx
@@ -1650,6 +1673,10 @@ msgstr "交易設定"
msgid "Transaction Submitted"
msgstr "交易已提交"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Transaction completed in"
msgstr "交易完成於"
#: src/components/TransactionSettings/index.tsx
msgid "Transaction deadline"
msgstr "交易截止期限"
@@ -1826,6 +1853,7 @@ msgstr "在Etherscan上查看"
#: src/components/AccountDetails/index.tsx
#: src/components/AccountDetails/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/TransactionConfirmationModal/index.tsx
msgid "View on Explorer"
msgstr "在以太坊資源瀏覽器上查看"

View File

@@ -1,4 +1,4 @@
import { useCallback, useContext, useEffect, useMemo, useState } from 'react'
import { useCallback, useContext, useEffect, useState } from 'react'
import { TransactionResponse } from '@ethersproject/providers'
import { Currency, CurrencyAmount, Percent } from '@uniswap/sdk-core'
import { AlertTriangle } from 'react-feather'
@@ -63,6 +63,7 @@ import { useDerivedPositionInfo } from 'hooks/useDerivedPositionInfo'
import { PositionPreview } from 'components/PositionPreview'
import FeeSelector from 'components/FeeSelector'
import RangeSelector from 'components/RangeSelector'
import PresetsButtons from 'components/RangeSelector/PresetsButtons'
import RateToggle from 'components/RateToggle'
import { BigNumber } from '@ethersproject/bignumber'
import { AddRemoveTabs } from 'components/NavigationTabs'
@@ -101,16 +102,11 @@ export default function AddLiquidity({
? parseFloat(feeAmountFromUrl)
: undefined
const currencyA = useCurrency(currencyIdA)
const baseCurrency = useCurrency(currencyIdA)
const currencyB = useCurrency(currencyIdB)
// keep track for UI display purposes of user selected base currency
const baseCurrency = currencyA
const quoteCurrency = useMemo(
() =>
currencyA && currencyB && baseCurrency ? (baseCurrency.equals(currencyA) ? currencyB : currencyA) : undefined,
[currencyA, currencyB, baseCurrency]
)
// prevent an error if they input ETH/WETH
const quoteCurrency =
baseCurrency && currencyB && baseCurrency.wrapped.equals(currencyB.wrapped) ? undefined : currencyB
// mint state
const { independentField, typedValue, startPriceTypedValue } = useV3MintState()
@@ -135,8 +131,8 @@ export default function AddLiquidity({
invertPrice,
ticksAtLimit,
} = useV3DerivedMintInfo(
currencyA ?? undefined,
currencyB ?? undefined,
baseCurrency ?? undefined,
quoteCurrency ?? undefined,
feeAmount,
baseCurrency ?? undefined,
existingPosition
@@ -154,7 +150,7 @@ export default function AddLiquidity({
// capital efficiency warning
const [showCapitalEfficiencyWarning, setShowCapitalEfficiencyWarning] = useState(false)
useEffect(() => setShowCapitalEfficiencyWarning(false), [currencyA, currencyB, feeAmount])
useEffect(() => setShowCapitalEfficiencyWarning(false), [baseCurrency, quoteCurrency, feeAmount])
// txn values
const deadline = useTransactionDeadline() // custom from users settings
@@ -213,7 +209,7 @@ export default function AddLiquidity({
async function onCreate() {
if (!chainId || !library) return
if (!positionManager || !currencyA || !currencyB) {
if (!positionManager || !baseCurrency || !quoteCurrency) {
return
}
@@ -242,7 +238,7 @@ export default function AddLiquidity({
.then((response: TransactionResponse) => {
setAttemptingTxn(false)
addTransaction(response, {
summary: t`Create ${currencyA?.symbol}/${currencyB?.symbol} V3 pool`,
summary: t`Create ${baseCurrency?.symbol}/${quoteCurrency?.symbol} V3 pool`,
})
// dont set txn hash as we dont want submitted txn screen for create
ReactGA.event({
@@ -268,12 +264,12 @@ export default function AddLiquidity({
async function onAdd() {
if (!chainId || !library || !account) return
if (!positionManager || !currencyA || !currencyB) {
if (!positionManager || !baseCurrency || !quoteCurrency) {
return
}
if (position && account && deadline) {
const useNative = currencyA.isNative ? currencyA : currencyB.isNative ? currencyB : undefined
const useNative = baseCurrency.isNative ? baseCurrency : quoteCurrency.isNative ? quoteCurrency : undefined
const { calldata, value } =
hasExistingPosition && tokenId
? NonfungiblePositionManager.addCallParameters(position, {
@@ -338,8 +334,8 @@ export default function AddLiquidity({
setAttemptingTxn(false)
addTransaction(response, {
summary: noLiquidity
? t`Create pool and add ${currencyA?.symbol}/${currencyB?.symbol} V3 liquidity`
: t`Add ${currencyA?.symbol}/${currencyB?.symbol} V3 liquidity`,
? t`Create pool and add ${baseCurrency?.symbol}/${quoteCurrency?.symbol} V3 liquidity`
: t`Add ${baseCurrency?.symbol}/${quoteCurrency?.symbol} V3 liquidity`,
})
setTxHash(response.hash)
ReactGA.event({
@@ -609,8 +605,11 @@ export default function AddLiquidity({
currencyA={baseCurrency}
currencyB={quoteCurrency}
handleRateToggle={() => {
onLeftRangeInput('')
onRightRangeInput('')
if (!ticksAtLimit[Bound.LOWER] && !ticksAtLimit[Bound.UPPER]) {
onLeftRangeInput((invertPrice ? priceLower : priceUpper?.invert())?.toSignificant(6) ?? '')
onRightRangeInput((invertPrice ? priceUpper : priceLower?.invert())?.toSignificant(6) ?? '')
onFieldAInput(formattedAmounts[Field.CURRENCY_B] ?? '')
}
history.push(
`/add/${currencyIdB as string}/${currencyIdA as string}${feeAmount ? '/' + feeAmount : ''}`
)
@@ -663,11 +662,11 @@ export default function AddLiquidity({
</RowBetween>
<FeeSelector
disabled={!currencyB || !currencyA}
disabled={!quoteCurrency || !baseCurrency}
feeAmount={feeAmount}
handleFeePoolSelect={handleFeePoolSelect}
currencyA={currencyA ?? undefined}
currencyB={currencyB ?? undefined}
currencyA={baseCurrency ?? undefined}
currencyB={quoteCurrency ?? undefined}
/>
</AutoColumn>{' '}
</>
@@ -867,6 +866,13 @@ export default function AddLiquidity({
feeAmount={feeAmount}
ticksAtLimit={ticksAtLimit}
/>
{!noLiquidity && (
<PresetsButtons
setFullRange={() => {
setShowCapitalEfficiencyWarning(true)
}}
/>
)}
</AutoColumn>
</StackedItem>
@@ -894,7 +900,9 @@ export default function AddLiquidity({
Full range positions may earn less fees than concentrated positions. Learn more{' '}
<ExternalLink
style={{ color: theme.yellow3, textDecoration: 'underline' }}
href={''}
href={
'https://help.uniswap.org/en/articles/5434296-can-i-provide-liquidity-over-the-full-range-in-v3'
}
>
here
</ExternalLink>

View File

@@ -46,7 +46,7 @@ const BodyWrapper = styled.div`
z-index: 1;
${({ theme }) => theme.mediaWidth.upToSmall`
padding: 6rem 16px 16px 16px;
padding: 6rem 16px 16px 16px;
`};
`
@@ -75,15 +75,15 @@ export default function App() {
<Route component={GoogleAnalyticsReporter} />
<Route component={DarkModeQueryParamReader} />
<Route component={ApeModeQueryParamReader} />
<AppWrapper>
<HeaderWrapper>
<Header />
</HeaderWrapper>
<BodyWrapper>
<Popups />
<Polling />
<TopLevelModals />
<Web3ReactManager>
<Web3ReactManager>
<AppWrapper>
<HeaderWrapper>
<Header />
</HeaderWrapper>
<BodyWrapper>
<Popups />
<Polling />
<TopLevelModals />
<Switch>
<Route exact strict path="/vote" component={Vote} />
<Route exact strict path="/vote/:governorIndex/:id" component={VotePage} />
@@ -124,10 +124,10 @@ export default function App() {
<Route exact strict path="/create-proposal" component={CreateProposal} />
<Route component={RedirectPathToSwapOnly} />
</Switch>
</Web3ReactManager>
<Marginer />
</BodyWrapper>
</AppWrapper>
<Marginer />
</BodyWrapper>
</AppWrapper>
</Web3ReactManager>
</ErrorBoundary>
)
}

View File

@@ -1,7 +1,7 @@
import React from 'react'
import styled from 'styled-components/macro'
export const BodyWrapper = styled.div<{ margin?: string; maxWidth?: string }>`
export const BodyWrapper = styled.main<{ margin?: string; maxWidth?: string }>`
position: relative;
margin-top: ${({ margin }) => margin ?? '0px'};
max-width: ${({ maxWidth }) => maxWidth ?? '480px'};

17
src/pages/styled.tsx Normal file
View File

@@ -0,0 +1,17 @@
import styled from 'styled-components/macro'
export const StandardPageWrapper = styled.div`
padding-top: 160px;
width: 100%;
`
export const IframeBodyWrapper = styled.div`
display: flex;
flex-direction: column;
width: 100%;
margin-top: 3rem;
padding: 1rem;
align-items: center;
flex: 1;
z-index: 1;
`

5
src/setupTests.ts Normal file
View File

@@ -0,0 +1,5 @@
// jest custom assertions
import '@testing-library/jest-dom'
// include style rules in snapshots
import 'jest-styled-components'

View File

@@ -8,9 +8,13 @@ import { useActiveWeb3React } from '../../hooks/web3'
import { updateBlockNumber, updateChainId } from './actions'
function useQueryCacheInvalidator() {
const chainId = useAppSelector((state) => state.application.chainId)
const dispatch = useAppDispatch()
// subscribe to `chainId` changes in the redux store rather than Web3
// this will ensure that when `invalidateTags` is called, the latest
// `chainId` is available in redux to build the subgraph url
const chainId = useAppSelector((state) => state.application.chainId)
useEffect(() => {
dispatch(api.util.invalidateTags([CHAIN_TAG]))
}, [chainId, dispatch])

View File

@@ -142,7 +142,9 @@ export function useAllProposalData(): { data: ProposalData[]; loading: boolean }
return useMemo(() => {
const proposalsCallData = proposalsV0.concat(proposalsV1)
const proposalStatesCallData = proposalStatesV0.concat(proposalStatesV1)
const formattedLogs = (formattedLogsV0 ?? []).concat(formattedLogsV1 ?? [])
const formattedLogs = (formattedLogsV0 ?? [])
.slice(0, proposalsV0.length)
.concat((formattedLogsV1 ?? []).slice(0, proposalsV1.length))
if (
proposalsCallData.some((p) => p.loading) ||

View File

@@ -13,7 +13,8 @@ import burn from './burn/reducer'
import burnV3 from './burn/v3/reducer'
import logs from './logs/slice'
import multicall from './multicall/reducer'
import { api } from './data/slice'
import { api as dataApi } from './data/slice'
import { routingApi } from './routing/slice'
const PERSISTED_KEYS: string[] = ['user', 'transactions', 'lists']
@@ -30,13 +31,15 @@ const store = configureStore({
multicall,
lists,
logs,
[api.reducerPath]: api.reducer,
[dataApi.reducerPath]: dataApi.reducer,
[routingApi.reducerPath]: routingApi.reducer,
},
middleware: (getDefaultMiddleware) =>
getDefaultMiddleware({ thunk: true })
.concat(api.middleware)
.concat(dataApi.middleware)
.concat(routingApi.middleware)
.concat(save({ states: PERSISTED_KEYS, debounce: 1000 })),
preloadedState: load({ states: PERSISTED_KEYS }),
preloadedState: load({ states: PERSISTED_KEYS, disableWarnings: process.env.NODE_ENV === 'test' }),
})
store.dispatch(updateVersion())

View File

@@ -1,9 +1,11 @@
import DEFAULT_TOKEN_LIST from '@uniswap/default-token-list'
import { TokenList } from '@uniswap/token-lists'
import { IS_ON_APP_URL } from 'constants/misc'
import { useMemo } from 'react'
import { useAppSelector } from 'state/hooks'
import sortByListPriority from 'utils/listSort'
import UNSUPPORTED_TOKEN_LIST from '../../constants/tokenLists/uniswap-v2-unsupported.tokenlist.json'
import UNSUPPORTED_TOKEN_LIST from '../../constants/tokenLists/unsupported.tokenlist.json'
import BROKEN_LIST from '../../constants/tokenLists/broken.tokenlist.json'
import { AppState } from '../index'
import { UNSUPPORTED_LIST_URLS } from './../../constants/lists'
import { WrappedTokenInfo } from './wrappedTokenInfo'
@@ -12,6 +14,10 @@ export type TokenAddressMap = Readonly<{
[chainId: number]: Readonly<{ [tokenAddress: string]: { token: WrappedTokenInfo; list: TokenList } }>
}>
type Mutable<T> = {
-readonly [P in keyof T]: Mutable<T[P]>
}
const listCache: WeakMap<TokenList, TokenAddressMap> | null =
typeof WeakMap !== 'undefined' ? new WeakMap<TokenList, TokenAddressMap>() : null
@@ -19,23 +25,19 @@ function listToTokenMap(list: TokenList): TokenAddressMap {
const result = listCache?.get(list)
if (result) return result
const map = list.tokens.reduce<TokenAddressMap>((tokenMap, tokenInfo) => {
const map = list.tokens.reduce<Mutable<TokenAddressMap>>((tokenMap, tokenInfo) => {
const token = new WrappedTokenInfo(tokenInfo, list)
if (tokenMap[token.chainId]?.[token.address] !== undefined) {
console.error(new Error(`Duplicate token! ${token.address}`))
console.error(`Duplicate token! ${token.address}`)
return tokenMap
}
return {
...tokenMap,
[token.chainId]: {
...tokenMap[token.chainId],
[token.address]: {
token,
list,
},
},
if (!tokenMap[token.chainId]) tokenMap[token.chainId] = {}
tokenMap[token.chainId][token.address] = {
token,
list,
}
}, {})
return tokenMap
}, {}) as TokenAddressMap
listCache?.set(list, map)
return map
}
@@ -46,15 +48,29 @@ export function useAllLists(): AppState['lists']['byUrl'] {
return useAppSelector((state) => state.lists.byUrl)
}
/**
* Combine the tokens in map2 with the tokens on map1, where tokens on map1 take precedence
* @param map1 the base token map
* @param map2 the map of additioanl tokens to add to the base map
*/
export function combineMaps(map1: TokenAddressMap, map2: TokenAddressMap): TokenAddressMap {
const chainIds = Object.keys({ ...map1, ...map2 }).map((id) => parseInt(id))
return chainIds.reduce(
(acc, chainId) => ({
...acc,
[chainId]: { ...map2[chainId], ...map1[chainId] },
}),
{}
)
const chainIds = Object.keys(
Object.keys(map1)
.concat(Object.keys(map2))
.reduce<{ [chainId: string]: true }>((memo, value) => {
memo[value] = true
return memo
}, {})
).map((id) => parseInt(id))
return chainIds.reduce<Mutable<TokenAddressMap>>((memo, chainId) => {
memo[chainId] = {
...map2[chainId],
// map1 takes precedence
...map1[chainId],
}
return memo
}, {}) as TokenAddressMap
}
// merge tokens contained within lists from urls
@@ -101,16 +117,19 @@ export function useCombinedActiveList(): TokenAddressMap {
// list of tokens not supported on interface, used to show warnings and prevent swaps and adds
export function useUnsupportedTokenList(): TokenAddressMap {
// get hard coded unsupported tokens
const localUnsupportedListMap = listToTokenMap(UNSUPPORTED_TOKEN_LIST)
// get hard coded unsupported tokens, only block on app url
const localUnsupportedListMap = useMemo(() => (IS_ON_APP_URL ? listToTokenMap(UNSUPPORTED_TOKEN_LIST) : {}), [])
// get any loaded unsupported tokens
// broken tokens, blocked on all URLS
const brokenListMap = useMemo(() => listToTokenMap(BROKEN_LIST), [])
// get any loaded unsupported tokens, this will be empty if not on app URL
const loadedUnsupportedListMap = useCombinedTokenMapFromUrls(UNSUPPORTED_LIST_URLS)
// format into one token address map
return useMemo(
() => combineMaps(localUnsupportedListMap, loadedUnsupportedListMap),
[localUnsupportedListMap, loadedUnsupportedListMap]
() => combineMaps(brokenListMap, combineMaps(localUnsupportedListMap, loadedUnsupportedListMap)),
[localUnsupportedListMap, loadedUnsupportedListMap, brokenListMap]
)
}

View File

@@ -542,34 +542,9 @@ export function useRangeHopCallbacks(
return ''
}, [baseToken, quoteToken, tickUpper, feeAmount, pool])
const getSetRange = useCallback(
(numTicks: number) => {
if (baseToken && quoteToken && feeAmount && pool) {
// calculate range around current price given `numTicks`
const newPriceLower = tickToPrice(
baseToken,
quoteToken,
Math.max(TickMath.MIN_TICK, pool.tickCurrent - numTicks)
)
const newPriceUpper = tickToPrice(
baseToken,
quoteToken,
Math.min(TickMath.MAX_TICK, pool.tickCurrent + numTicks)
)
return [
newPriceLower.toSignificant(5, undefined, Rounding.ROUND_UP),
newPriceUpper.toSignificant(5, undefined, Rounding.ROUND_UP),
]
}
return ['', '']
},
[baseToken, quoteToken, feeAmount, pool]
)
const getSetFullRange = useCallback(() => {
dispatch(setFullRange())
}, [dispatch])
return { getDecrementLower, getIncrementLower, getDecrementUpper, getIncrementUpper, getSetRange, getSetFullRange }
return { getDecrementLower, getIncrementLower, getDecrementUpper, getIncrementUpper, getSetFullRange }
}

View File

@@ -0,0 +1,39 @@
import { Token } from '@uniswap/sdk-core'
import { tryParsePrice } from './utils'
describe('hooks', () => {
describe('#tryParsePrice', () => {
it('should return undefined if amount is not a number', () => {
const baseToken = new Token(1, '0x6b175474e89094c44da98b954eedeac495271d0f', 6)
const quoteToken = new Token(1, '0x1b175474e89094c44da98b954eedeac495271d0f', 6)
expect(tryParsePrice(undefined, undefined, undefined)).toBeUndefined()
expect(tryParsePrice(baseToken, quoteToken)).toBeUndefined()
expect(tryParsePrice(baseToken, quoteToken, '')).toBeUndefined()
expect(tryParsePrice(baseToken, quoteToken, 'abc.123')).toBeUndefined()
expect(tryParsePrice(baseToken, quoteToken, '1.2.3')).toBeUndefined()
expect(tryParsePrice(baseToken, quoteToken, '20.')).toEqual(undefined)
})
it('should return a price', () => {
const baseToken = new Token(1, '0x6b175474e89094c44da98b954eedeac495271d0f', 6)
const quoteToken = new Token(1, '0x1b175474e89094c44da98b954eedeac495271d0f', 6)
expect(tryParsePrice(baseToken, quoteToken, '20')?.toSignificant(6)).toEqual('20')
expect(tryParsePrice(baseToken, quoteToken, '20.05')?.toSignificant(6)).toEqual('20.05')
expect(tryParsePrice(baseToken, quoteToken, '20.123456789')?.toSignificant(6)).toEqual('20.1235')
expect(tryParsePrice(baseToken, quoteToken, '0.123456789')?.toSignificant(6)).toEqual('0.123457')
expect(tryParsePrice(baseToken, quoteToken, '.123456789')?.toSignificant(6)).toEqual('0.123457')
expect(
tryParsePrice(
baseToken,
quoteToken,
(2 ** 128).toLocaleString('fullwide', { useGrouping: false })
)?.toSignificant(6)
).toEqual('340282000000000000000000000000000000000')
expect(
tryParsePrice(baseToken, quoteToken, /* ~2^-128 */ '0.000000000000000000000000000587747')?.toSignificant(6)
).toEqual('0.000000000000000000000000000587747')
})
})
})

View File

@@ -7,9 +7,30 @@ import {
TickMath,
} from '@uniswap/v3-sdk/dist/'
import { Price, Token } from '@uniswap/sdk-core'
import { tryParseAmount } from 'state/swap/hooks'
import JSBI from 'jsbi'
export function tryParsePrice(baseToken?: Token, quoteToken?: Token, value?: string) {
if (!baseToken || !quoteToken || !value) {
return undefined
}
if (!value.match(/^\d*\.?\d+$/)) {
return undefined
}
const [whole, fraction] = value.split('.')
const decimals = fraction?.length ?? 0
const withoutDecimals = JSBI.BigInt((whole ?? '') + (fraction ?? ''))
return new Price(
baseToken,
quoteToken,
JSBI.multiply(JSBI.BigInt(10 ** decimals), JSBI.BigInt(10 ** baseToken.decimals)),
JSBI.multiply(withoutDecimals, JSBI.BigInt(10 ** quoteToken.decimals))
)
}
export function tryParseTick(
baseToken?: Token,
quoteToken?: Token,
@@ -20,14 +41,11 @@ export function tryParseTick(
return undefined
}
// base token fixed at 1 unit, quote token amount based on typed input
const amount = tryParseAmount(value, quoteToken)
const amountOne = tryParseAmount('1', baseToken)
const price = tryParsePrice(baseToken, quoteToken, value)
if (!amount || !amountOne) return undefined
// parse the typed value into a price
const price = new Price(baseToken, quoteToken, amountOne.quotient, amount.quotient)
if (!price) {
return undefined
}
let tick: number

View File

@@ -0,0 +1,54 @@
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'
import { SupportedChainId } from 'constants/chains'
import qs from 'qs'
export interface GetQuoteResult {
blockNumber: string
gasPriceWei: string
gasUseEstimate: string
gasUseEstimateQuote: string
gasUseEstimateQuoteDecimals: string
gasUseEstimateUSD: string
methodParameters: { calldata: string; value: string }
quote: string
quoteDecimals: string
quoteGasAdjusted: string
quoteGasAdjustedDecimals: string
quoteId: string
routeEdges: {
fee: string
id: string
inId: string
outId: string
percent: number
type: string
}[]
routeNodes: { chainId: number; id: string; symbol: string; type: string }[]
routeString: string
}
export const routingApi = createApi({
baseQuery: fetchBaseQuery({
baseUrl: 'https://api.uniswap.org/v1/',
}),
endpoints: (build) => ({
getQuote: build.query<
GetQuoteResult,
{
tokenInAddress: string
tokenInChainId: SupportedChainId
tokenOutAddress: string
tokenOutChainId: SupportedChainId
amount: string
type: 'exactIn' | 'exactOut'
recipient?: string
slippageTolerance?: string
deadline?: string
}
>({
query: (args) => `quote?${qs.stringify(args)}`,
}),
}),
})
export const { useGetQuoteQuery } = routingApi

View File

@@ -45,6 +45,16 @@ export function useAllTransactions(): { [txHash: string]: TransactionDetails } {
return chainId ? state[chainId] ?? {} : {}
}
export function useTransaction(transactionHash?: string): TransactionDetails | undefined {
const allTransactions = useAllTransactions()
if (!transactionHash) {
return undefined
}
return allTransactions[transactionHash]
}
export function useIsTransactionPending(transactionHash?: string): boolean {
const transactions = useAllTransactions()
@@ -53,6 +63,14 @@ export function useIsTransactionPending(transactionHash?: string): boolean {
return !transactions[transactionHash].receipt
}
export function useIsTransactionConfirmed(transactionHash?: string): boolean {
const transactions = useAllTransactions()
if (!transactionHash || !transactions[transactionHash]) return false
return Boolean(transactions[transactionHash].receipt)
}
/**
* Returns whether a transaction happened in the last day (86400 seconds * 1000 milliseconds / second)
* @param tx to check for recency

View File

@@ -1,6 +1,8 @@
import { Percent, Token } from '@uniswap/sdk-core'
import { computePairAddress, Pair } from '@uniswap/v2-sdk'
import { L2_CHAIN_IDS } from 'constants/chains'
import { SupportedLocale } from 'constants/locales'
import { L2_DEADLINE_FROM_NOW } from 'constants/misc'
import JSBI from 'jsbi'
import flatMap from 'lodash.flatmap'
import { useCallback, useMemo } from 'react'
@@ -182,10 +184,11 @@ export function useUserSlippageToleranceWithDefault(defaultSlippageTolerance: Pe
}
export function useUserTransactionTTL(): [number, (slippage: number) => void] {
const { chainId } = useActiveWeb3React()
const dispatch = useAppDispatch()
const userDeadline = useAppSelector((state) => {
return state.user.userDeadline
})
const userDeadline = useAppSelector((state) => state.user.userDeadline)
const onL2 = Boolean(chainId && L2_CHAIN_IDS.includes(chainId))
const deadline = onL2 ? L2_DEADLINE_FROM_NOW : userDeadline
const setUserDeadline = useCallback(
(userDeadline: number) => {
@@ -194,7 +197,7 @@ export function useUserTransactionTTL(): [number, (slippage: number) => void] {
[dispatch]
)
return [userDeadline, setUserDeadline]
return [deadline, setUserDeadline]
}
export function useAddUserToken(): (token: Token) => void {

19
src/test-utils.tsx Normal file
View File

@@ -0,0 +1,19 @@
import React, { FC, ReactElement, ReactNode } from 'react'
import { render, RenderOptions } from '@testing-library/react'
import ThemeProvider from 'theme'
import store from 'state'
import { Provider } from 'react-redux'
const WithProviders: FC = ({ children }: { children?: ReactNode }) => {
return (
<Provider store={store}>
<ThemeProvider>{children}</ThemeProvider>
</Provider>
)
}
const customRender = (ui: ReactElement, options?: Omit<RenderOptions, 'wrapper'>) =>
render(ui, { wrapper: WithProviders, ...options })
export * from '@testing-library/react'
export { customRender as render }

View File

@@ -16,7 +16,7 @@ export function isTradeBetter(
if (
tradeA.tradeType !== tradeB.tradeType ||
!tradeA.inputAmount.currency.equals(tradeB.inputAmount.currency) ||
!tradeB.outputAmount.currency.equals(tradeB.outputAmount.currency)
!tradeA.outputAmount.currency.equals(tradeB.outputAmount.currency)
) {
throw new Error('Comparing incomparable trades')
}

1213
yarn.lock

File diff suppressed because it is too large Load Diff