Revert the revert of "LoginPerSite"

This reverts commit 466ece4588, which has
the message:

"Revert "Merge pull request #7599 from MetaMask/Version-v7.7.0" (#7648)"

This effectively re-introduces the changes from the "LoginPerSite" PR.
feature/default_network_editable
Mark Stacey 5 years ago
parent 5e8a80e21d
commit 9a624dd24c
  1. 12
      .circleci/config.yml
  2. 26
      .eslintrc
  3. 1
      .gitattributes
  4. 1
      CHANGELOG.md
  5. 2
      README.md
  6. 44
      app/_locales/am/messages.json
  7. 44
      app/_locales/ar/messages.json
  8. 48
      app/_locales/bg/messages.json
  9. 44
      app/_locales/bn/messages.json
  10. 50
      app/_locales/ca/messages.json
  11. 33
      app/_locales/cs/messages.json
  12. 48
      app/_locales/da/messages.json
  13. 48
      app/_locales/de/messages.json
  14. 48
      app/_locales/el/messages.json
  15. 135
      app/_locales/en/messages.json
  16. 44
      app/_locales/es/messages.json
  17. 48
      app/_locales/es_419/messages.json
  18. 52
      app/_locales/et/messages.json
  19. 44
      app/_locales/fa/messages.json
  20. 48
      app/_locales/fi/messages.json
  21. 42
      app/_locales/fil/messages.json
  22. 48
      app/_locales/fr/messages.json
  23. 9
      app/_locales/gu/messages.json
  24. 44
      app/_locales/he/messages.json
  25. 44
      app/_locales/hi/messages.json
  26. 33
      app/_locales/hn/messages.json
  27. 48
      app/_locales/hr/messages.json
  28. 33
      app/_locales/ht/messages.json
  29. 48
      app/_locales/hu/messages.json
  30. 48
      app/_locales/id/messages.json
  31. 66
      app/_locales/it/messages.json
  32. 37
      app/_locales/ja/messages.json
  33. 48
      app/_locales/kn/messages.json
  34. 48
      app/_locales/ko/messages.json
  35. 48
      app/_locales/lt/messages.json
  36. 46
      app/_locales/lv/messages.json
  37. 9
      app/_locales/ml/messages.json
  38. 9
      app/_locales/mr/messages.json
  39. 48
      app/_locales/ms/messages.json
  40. 33
      app/_locales/nl/messages.json
  41. 48
      app/_locales/no/messages.json
  42. 30
      app/_locales/ph/messages.json
  43. 48
      app/_locales/pl/messages.json
  44. 33
      app/_locales/pt/messages.json
  45. 48
      app/_locales/pt_BR/messages.json
  46. 9
      app/_locales/pt_PT/messages.json
  47. 48
      app/_locales/ro/messages.json
  48. 44
      app/_locales/ru/messages.json
  49. 48
      app/_locales/sk/messages.json
  50. 48
      app/_locales/sl/messages.json
  51. 48
      app/_locales/sr/messages.json
  52. 48
      app/_locales/sv/messages.json
  53. 48
      app/_locales/sw/messages.json
  54. 36
      app/_locales/ta/messages.json
  55. 9
      app/_locales/te/messages.json
  56. 38
      app/_locales/th/messages.json
  57. 29
      app/_locales/tr/messages.json
  58. 48
      app/_locales/uk/messages.json
  59. 30
      app/_locales/vi/messages.json
  60. 46
      app/_locales/zh_CN/messages.json
  61. 44
      app/_locales/zh_TW/messages.json
  62. 3
      app/images/broken-line.svg
  63. 3
      app/images/connect-white.svg
  64. 0
      app/images/permissions-check.svg
  65. 30
      app/scripts/background.js
  66. 141
      app/scripts/contentscript.js
  67. 42
      app/scripts/controllers/detect-tokens.js
  68. 4
      app/scripts/controllers/incoming-transactions.js
  69. 16
      app/scripts/controllers/network/middleware/pending.js
  70. 8
      app/scripts/controllers/network/network.js
  71. 44
      app/scripts/controllers/onboarding.js
  72. 377
      app/scripts/controllers/permissions/index.js
  73. 169
      app/scripts/controllers/permissions/loggerMiddleware.js
  74. 90
      app/scripts/controllers/permissions/methodMiddleware.js
  75. 49
      app/scripts/controllers/permissions/permissions-safe-methods.json
  76. 20
      app/scripts/controllers/permissions/restrictedMethods.js
  77. 62
      app/scripts/controllers/preferences.js
  78. 175
      app/scripts/controllers/provider-approval.js
  79. 8
      app/scripts/controllers/recent-blocks.js
  80. 4
      app/scripts/controllers/threebox.js
  81. 20
      app/scripts/controllers/token-rates.js
  82. 93
      app/scripts/controllers/transactions/index.js
  83. 8
      app/scripts/controllers/transactions/lib/tx-state-history-helper.js
  84. 12
      app/scripts/controllers/transactions/lib/util.js
  85. 20
      app/scripts/controllers/transactions/pending-tx-tracker.js
  86. 8
      app/scripts/controllers/transactions/tx-gas-utils.js
  87. 24
      app/scripts/controllers/transactions/tx-state-manager.js
  88. 73
      app/scripts/createStandardProvider.js
  89. 28
      app/scripts/edge-encryptor.js
  90. 116
      app/scripts/inpage.js
  91. 12
      app/scripts/lib/account-tracker.js
  92. 21
      app/scripts/lib/auto-reload.js
  93. 10
      app/scripts/lib/buy-eth-url.js
  94. 4
      app/scripts/lib/cleanErrorStack.js
  95. 4
      app/scripts/lib/createDnodeRemoteGetter.js
  96. 4
      app/scripts/lib/createLoggerMiddleware.js
  97. 1
      app/scripts/lib/createOriginMiddleware.js
  98. 8
      app/scripts/lib/ens-ipfs/setup.js
  99. 19
      app/scripts/lib/local-store.js
  100. 22
      app/scripts/lib/message-manager.js
  101. Some files were not shown because too many files have changed in this diff Show More

@ -22,6 +22,7 @@ workflows:
- test-lint: - test-lint:
requires: requires:
- prep-deps - prep-deps
- test-lint-shellcheck
- test-e2e-chrome: - test-e2e-chrome:
requires: requires:
- prep-deps - prep-deps
@ -49,6 +50,7 @@ workflows:
- all-tests-pass: - all-tests-pass:
requires: requires:
- test-lint - test-lint
- test-lint-shellcheck
- test-unit - test-unit
- test-unit-global - test-unit-global
- test-mozilla-lint - test-mozilla-lint
@ -173,6 +175,16 @@ jobs:
name: Verify locales name: Verify locales
command: yarn verify-locales --quiet command: yarn verify-locales --quiet
test-lint-shellcheck:
docker:
- image: circleci/node:10.17-browsers
steps:
- checkout
- run: sudo apt-get install shellcheck
- run:
name: Shellcheck Lint
command: yarn lint:shellcheck
test-deps: test-deps:
docker: docker:
- image: circleci/node:10.17-browsers - image: circleci/node:10.17-browsers

@ -44,18 +44,19 @@
}, },
"rules": { "rules": {
"default-case": 2,
"import/no-unresolved": ["error", { "commonjs": true }], "import/no-unresolved": ["error", { "commonjs": true }],
"no-restricted-globals": ["error", "event"], "no-restricted-globals": ["error", "event"],
"accessor-pairs": 2, "accessor-pairs": 2,
"arrow-spacing": [2, { "before": true, "after": true }], "arrow-spacing": [2, { "before": true, "after": true }],
"block-spacing": [2, "always"], "block-spacing": [2, "always"],
"brace-style": [2, "1tbs", { "allowSingleLine": true }], "brace-style": 2,
"camelcase": [2, { "properties": "never" }], "camelcase": [2, { "properties": "never" }],
"comma-dangle": [2, "always-multiline"], "comma-dangle": [2, "always-multiline"],
"comma-spacing": [2, { "before": false, "after": true }], "comma-spacing": [2, { "before": false, "after": true }],
"comma-style": [2, "last"], "comma-style": [2, "last"],
"constructor-super": 2, "constructor-super": 2,
"curly": [2, "multi-line"], "curly": 2,
"dot-location": [2, "property"], "dot-location": [2, "property"],
"eol-last": 2, "eol-last": 2,
"eqeqeq": [2, "allow-null"], "eqeqeq": [2, "allow-null"],
@ -142,17 +143,38 @@
"no-useless-computed-key": 2, "no-useless-computed-key": 2,
"no-useless-constructor": 2, "no-useless-constructor": 2,
"no-useless-escape": 2, "no-useless-escape": 2,
"no-var": 2,
"no-whitespace-before-property": 2, "no-whitespace-before-property": 2,
"no-with": 2, "no-with": 2,
"one-var": [2, { "initialized": "never" }], "one-var": [2, { "initialized": "never" }],
"operator-linebreak": [2, "after", { "overrides": { "?": "ignore", ":": "ignore" } }], "operator-linebreak": [2, "after", { "overrides": { "?": "ignore", ":": "ignore" } }],
"padded-blocks": "off", "padded-blocks": "off",
"quotes": [2, "single", {"avoidEscape": true, "allowTemplateLiterals": true}], "quotes": [2, "single", {"avoidEscape": true, "allowTemplateLiterals": true}],
"react/no-unused-state": 2,
"react/jsx-boolean-value": 2, "react/jsx-boolean-value": 2,
"react/jsx-curly-brace-presence": [2, { "props": "never", "children": "never" }], "react/jsx-curly-brace-presence": [2, { "props": "never", "children": "never" }],
"react/jsx-equals-spacing": 2, "react/jsx-equals-spacing": 2,
"react/no-deprecated": 0, "react/no-deprecated": 0,
"react/default-props-match-prop-types": 2, "react/default-props-match-prop-types": 2,
"react/jsx-closing-tag-location": 2,
"react/jsx-no-duplicate-props": 2,
"react/jsx-closing-bracket-location": 2,
"react/jsx-first-prop-new-line": 2,
"react/jsx-max-props-per-line": [2, { "maximum": 1, "when": "multiline"} ],
"react/jsx-tag-spacing": [2, {
"closingSlash": "never",
"beforeSelfClosing": "always",
"afterOpening": "never"
}],
"react/jsx-wrap-multilines": [2, {
"declaration": "parens-new-line",
"assignment": "parens-new-line",
"return": "parens-new-line",
"arrow": "parens-new-line",
"condition": "parens-new-line",
"logical": "parens-new-line",
"prop": "parens-new-line"
}],
"semi": [2, "never"], "semi": [2, "never"],
"semi-spacing": [2, { "before": false, "after": true }], "semi-spacing": [2, { "before": false, "after": true }],
"space-before-blocks": [2, "always"], "space-before-blocks": [2, "always"],

1
.gitattributes vendored

@ -1,3 +1,4 @@
* text=auto
CHANGELOG.md merge=union CHANGELOG.md merge=union
# Reviewing the lockfile contents is an important step in verifying that # Reviewing the lockfile contents is an important step in verifying that

@ -67,6 +67,7 @@
- [#7558](https://github.com/MetaMask/metamask-extension/pull/7558): Use localized messages for NotificationModal buttons - [#7558](https://github.com/MetaMask/metamask-extension/pull/7558): Use localized messages for NotificationModal buttons
## 7.7.0 Thu Nov 28 2019 [WITHDRAWN] ## 7.7.0 Thu Nov 28 2019 [WITHDRAWN]
## 7.7.0 Thu Nov 28 2019
- [#7004](https://github.com/MetaMask/metamask-extension/pull/7004): Connect distinct accounts per site - [#7004](https://github.com/MetaMask/metamask-extension/pull/7004): Connect distinct accounts per site
- [#7480](https://github.com/MetaMask/metamask-extension/pull/7480): Fixed link on root README.md - [#7480](https://github.com/MetaMask/metamask-extension/pull/7480): Fixed link on root README.md
- [#7482](https://github.com/MetaMask/metamask-extension/pull/7482): Update Wyre ETH purchase url - [#7482](https://github.com/MetaMask/metamask-extension/pull/7482): Update Wyre ETH purchase url

@ -73,6 +73,6 @@ To write tests that will be run in the browser using QUnit, add your test files
- [How to add new networks to the Provider Menu](./docs/adding-new-networks.md) - [How to add new networks to the Provider Menu](./docs/adding-new-networks.md)
- [How to port MetaMask to a new platform](./docs/porting_to_new_environment.md) - [How to port MetaMask to a new platform](./docs/porting_to_new_environment.md)
- [How to use the TREZOR emulator](./docs/trezor-emulator.md) - [How to use the TREZOR emulator](./docs/trezor-emulator.md)
- [How to generate a visualization of this repository's development](./docs/development-visualization.md) - [How to generate a visualization of this repository's development](./development/gource-viz.sh)
[1]: http://www.nomnoml.com/#view/%5B%3Cactor%3Euser%5D%0A%0A%5Bmetamask-ui%7C%0A%20%20%20%5Btools%7C%0A%20%20%20%20%20react%0A%20%20%20%20%20redux%0A%20%20%20%20%20thunk%0A%20%20%20%20%20ethUtils%0A%20%20%20%20%20jazzicon%0A%20%20%20%5D%0A%20%20%20%5Bcomponents%7C%0A%20%20%20%20%20app%0A%20%20%20%20%20account-detail%0A%20%20%20%20%20accounts%0A%20%20%20%20%20locked-screen%0A%20%20%20%20%20restore-vault%0A%20%20%20%20%20identicon%0A%20%20%20%20%20config%0A%20%20%20%20%20info%0A%20%20%20%5D%0A%20%20%20%5Breducers%7C%0A%20%20%20%20%20app%0A%20%20%20%20%20metamask%0A%20%20%20%20%20identities%0A%20%20%20%5D%0A%20%20%20%5Bactions%7C%0A%20%20%20%20%20%5BbackgroundConnection%5D%0A%20%20%20%5D%0A%20%20%20%5Bcomponents%5D%3A-%3E%5Bactions%5D%0A%20%20%20%5Bactions%5D%3A-%3E%5Breducers%5D%0A%20%20%20%5Breducers%5D%3A-%3E%5Bcomponents%5D%0A%5D%0A%0A%5Bweb%20dapp%7C%0A%20%20%5Bui%20code%5D%0A%20%20%5Bweb3%5D%0A%20%20%5Bmetamask-inpage%5D%0A%20%20%0A%20%20%5B%3Cactor%3Eui%20developer%5D%0A%20%20%5Bui%20developer%5D-%3E%5Bui%20code%5D%0A%20%20%5Bui%20code%5D%3C-%3E%5Bweb3%5D%0A%20%20%5Bweb3%5D%3C-%3E%5Bmetamask-inpage%5D%0A%5D%0A%0A%5Bmetamask-background%7C%0A%20%20%5Bprovider-engine%5D%0A%20%20%5Bhooked%20wallet%20subprovider%5D%0A%20%20%5Bid%20store%5D%0A%20%20%0A%20%20%5Bprovider-engine%5D%3C-%3E%5Bhooked%20wallet%20subprovider%5D%0A%20%20%5Bhooked%20wallet%20subprovider%5D%3C-%3E%5Bid%20store%5D%0A%20%20%5Bconfig%20manager%7C%0A%20%20%20%20%5Brpc%20configuration%5D%0A%20%20%20%20%5Bencrypted%20keys%5D%0A%20%20%20%20%5Bwallet%20nicknames%5D%0A%20%20%5D%0A%20%20%0A%20%20%5Bprovider-engine%5D%3C-%5Bconfig%20manager%5D%0A%20%20%5Bid%20store%5D%3C-%3E%5Bconfig%20manager%5D%0A%5D%0A%0A%5Buser%5D%3C-%3E%5Bmetamask-ui%5D%0A%0A%5Buser%5D%3C%3A--%3A%3E%5Bweb%20dapp%5D%0A%0A%5Bmetamask-contentscript%7C%0A%20%20%5Bplugin%20restart%20detector%5D%0A%20%20%5Brpc%20passthrough%5D%0A%5D%0A%0A%5Brpc%20%7C%0A%20%20%5Bethereum%20blockchain%20%7C%0A%20%20%20%20%5Bcontracts%5D%0A%20%20%20%20%5Baccounts%5D%0A%20%20%5D%0A%5D%0A%0A%5Bweb%20dapp%5D%3C%3A--%3A%3E%5Bmetamask-contentscript%5D%0A%5Bmetamask-contentscript%5D%3C-%3E%5Bmetamask-background%5D%0A%5Bmetamask-background%5D%3C-%3E%5Bmetamask-ui%5D%0A%5Bmetamask-background%5D%3C-%3E%5Brpc%5D%0A [1]: http://www.nomnoml.com/#view/%5B%3Cactor%3Euser%5D%0A%0A%5Bmetamask-ui%7C%0A%20%20%20%5Btools%7C%0A%20%20%20%20%20react%0A%20%20%20%20%20redux%0A%20%20%20%20%20thunk%0A%20%20%20%20%20ethUtils%0A%20%20%20%20%20jazzicon%0A%20%20%20%5D%0A%20%20%20%5Bcomponents%7C%0A%20%20%20%20%20app%0A%20%20%20%20%20account-detail%0A%20%20%20%20%20accounts%0A%20%20%20%20%20locked-screen%0A%20%20%20%20%20restore-vault%0A%20%20%20%20%20identicon%0A%20%20%20%20%20config%0A%20%20%20%20%20info%0A%20%20%20%5D%0A%20%20%20%5Breducers%7C%0A%20%20%20%20%20app%0A%20%20%20%20%20metamask%0A%20%20%20%20%20identities%0A%20%20%20%5D%0A%20%20%20%5Bactions%7C%0A%20%20%20%20%20%5BbackgroundConnection%5D%0A%20%20%20%5D%0A%20%20%20%5Bcomponents%5D%3A-%3E%5Bactions%5D%0A%20%20%20%5Bactions%5D%3A-%3E%5Breducers%5D%0A%20%20%20%5Breducers%5D%3A-%3E%5Bcomponents%5D%0A%5D%0A%0A%5Bweb%20dapp%7C%0A%20%20%5Bui%20code%5D%0A%20%20%5Bweb3%5D%0A%20%20%5Bmetamask-inpage%5D%0A%20%20%0A%20%20%5B%3Cactor%3Eui%20developer%5D%0A%20%20%5Bui%20developer%5D-%3E%5Bui%20code%5D%0A%20%20%5Bui%20code%5D%3C-%3E%5Bweb3%5D%0A%20%20%5Bweb3%5D%3C-%3E%5Bmetamask-inpage%5D%0A%5D%0A%0A%5Bmetamask-background%7C%0A%20%20%5Bprovider-engine%5D%0A%20%20%5Bhooked%20wallet%20subprovider%5D%0A%20%20%5Bid%20store%5D%0A%20%20%0A%20%20%5Bprovider-engine%5D%3C-%3E%5Bhooked%20wallet%20subprovider%5D%0A%20%20%5Bhooked%20wallet%20subprovider%5D%3C-%3E%5Bid%20store%5D%0A%20%20%5Bconfig%20manager%7C%0A%20%20%20%20%5Brpc%20configuration%5D%0A%20%20%20%20%5Bencrypted%20keys%5D%0A%20%20%20%20%5Bwallet%20nicknames%5D%0A%20%20%5D%0A%20%20%0A%20%20%5Bprovider-engine%5D%3C-%5Bconfig%20manager%5D%0A%20%20%5Bid%20store%5D%3C-%3E%5Bconfig%20manager%5D%0A%5D%0A%0A%5Buser%5D%3C-%3E%5Bmetamask-ui%5D%0A%0A%5Buser%5D%3C%3A--%3A%3E%5Bweb%20dapp%5D%0A%0A%5Bmetamask-contentscript%7C%0A%20%20%5Bplugin%20restart%20detector%5D%0A%20%20%5Brpc%20passthrough%5D%0A%5D%0A%0A%5Brpc%20%7C%0A%20%20%5Bethereum%20blockchain%20%7C%0A%20%20%20%20%5Bcontracts%5D%0A%20%20%20%20%5Baccounts%5D%0A%20%20%5D%0A%5D%0A%0A%5Bweb%20dapp%5D%3C%3A--%3A%3E%5Bmetamask-contentscript%5D%0A%5Bmetamask-contentscript%5D%3C-%3E%5Bmetamask-background%5D%0A%5Bmetamask-background%5D%3C-%3E%5Bmetamask-ui%5D%0A%5Bmetamask-background%5D%3C-%3E%5Brpc%5D%0A

@ -1,28 +1,16 @@
{ {
"privacyModeDefault": {
"message": "የግላዊነት ኩነት አሁን በንቡር ነቅቷል"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "ቻርት የሚገኘው በ Ethereum አውታረ መረቦች ላይ ብቻ ነው።" "message": "ቻርት የሚገኘው በ Ethereum አውታረ መረቦች ላይ ብቻ ነው።"
}, },
"confirmClear": {
"message": "የተፈቀዱ ድረ ገጾችን ለማጥራት እንደሚፈልጉ እርግጠኛ ነዎት?"
},
"contractInteraction": { "contractInteraction": {
"message": "የግንኙነት ተግባቦት" "message": "የግንኙነት ተግባቦት"
}, },
"clearApprovalData": {
"message": "የግላዊነት ውሂብን አጥራ"
},
"reject": { "reject": {
"message": "አይቀበሉ" "message": "አይቀበሉ"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1ከመለያዎ ጋር ለመገናኘት ይፈልጋል" "message": "$1ከመለያዎ ጋር ለመገናኘት ይፈልጋል"
}, },
"providerRequestInfo": {
"message": "ይህ ድረ ገጽ የእርስዎን መለያ ወቅታዊ አድራሻ ለማየት እየጠየቀ ነው። ምንጊዜም ግንኙነት የሚያደርጉባቸውን ድረ ገጾች የሚያምኗቸው መሆኑን ያረጋግጡ።"
},
"about": { "about": {
"message": "ስለ" "message": "ስለ"
}, },
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "መሠረታዊ" "message": "መሠረታዊ"
}, },
"betweenMinAndMax": {
"message": "ከ$1መብለጥ ወይም እኩል እና ከ$2በታች ወይም እኩል መሆን አለበት።",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "ኤክስፕሎረር አግድ" "message": "ኤክስፕሎረር አግድ"
}, },
@ -252,9 +236,6 @@
"connect": { "connect": {
"message": "ይገናኙ" "message": "ይገናኙ"
}, },
"connectRequest": {
"message": "የግንኙነት ጥያቄ"
},
"connectingTo": { "connectingTo": {
"message": "ከ $1ጋር መገናኘት" "message": "ከ $1ጋር መገናኘት"
}, },
@ -294,9 +275,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "ተቀድቷል" "message": "ተቀድቷል"
}, },
"copy": {
"message": "ቅዳ"
},
"copyAddress": { "copyAddress": {
"message": "አድራሻን ወደ ቅንጥብ ሰሌዳ ቅዳ" "message": "አድራሻን ወደ ቅንጥብ ሰሌዳ ቅዳ"
}, },
@ -375,9 +353,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "ቀደም ሲል የተወሰነ Ether ካለዎት፣ በአዲሱ ቋትዎ Ether ለማግኘት ፈጣኑ መንገድ ቀጥተኛ ተቀማጭ ነው።" "message": "ቀደም ሲል የተወሰነ Ether ካለዎት፣ በአዲሱ ቋትዎ Ether ለማግኘት ፈጣኑ መንገድ ቀጥተኛ ተቀማጭ ነው።"
}, },
"dismiss": {
"message": "አሰናብት"
},
"done": { "done": {
"message": "ተጠናቅቋል" "message": "ተጠናቅቋል"
}, },
@ -543,10 +518,6 @@
"getStarted": { "getStarted": {
"message": "አስጀማሪ መመሪያ" "message": "አስጀማሪ መመሪያ"
}, },
"greaterThanMin": {
"message": "ከ $1ጋር እኩል መሆን ወይም መብለጥ አለበት።",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "እርስዎን በማየታችን ደስተኛ ነን።" "message": "እርስዎን በማየታችን ደስተኛ ነን።"
}, },
@ -665,10 +636,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "አዲስ መለያ ከማከልዎ በፊት የመጨረሻውን መለያዎን መጠቀም አለብዎት።" "message": "አዲስ መለያ ከማከልዎ በፊት የመጨረሻውን መለያዎን መጠቀም አለብዎት።"
}, },
"lessThanMax": {
"message": "ከ $1ያነሰ ወይም እኩል መሆን አለበት።",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "አዎ፣ እናደራጅ!" "message": "አዎ፣ እናደራጅ!"
}, },
@ -867,9 +834,6 @@
"message": "የግል ቁልፍዎን ሕብረ ቁምፊ እዚህ ለጥፍ፡", "message": "የግል ቁልፍዎን ሕብረ ቁምፊ እዚህ ለጥፍ፡",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "የዘር ሐረግዎን እዚህ ይለጥፉ!"
},
"pending": { "pending": {
"message": "በእንጥልጥል ላይ ያለ" "message": "በእንጥልጥል ላይ ያለ"
}, },
@ -1183,9 +1147,6 @@
"storePhrase": { "storePhrase": {
"message": "ይህን ሐረግ እንደ 1Password ባለ የይለፍ ቃል አስተዳዳሪ ውስጥ ያስቀምጡ።" "message": "ይህን ሐረግ እንደ 1Password ባለ የይለፍ ቃል አስተዳዳሪ ውስጥ ያስቀምጡ።"
}, },
"submit": {
"message": "አስገባ"
},
"submitted": { "submitted": {
"message": "የቀረበ" "message": "የቀረበ"
}, },
@ -1353,9 +1314,6 @@
"userName": { "userName": {
"message": "የተጣቃሚ ስም" "message": "የተጣቃሚ ስም"
}, },
"validFileImport": {
"message": "የሚያስመጡትን ትክክለኛ ፋይል መምረጥ አለብዎ፡"
},
"viewAccount": { "viewAccount": {
"message": "መለያን ይመልከቱ" "message": "መለያን ይመልከቱ"
}, },

@ -1,28 +1,16 @@
{ {
"privacyModeDefault": {
"message": "يتم تمكين وضع الخصوصية الآن بشكل افتراضي"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "الرسم البياني متاح فقط على شبكات إيثيريوم." "message": "الرسم البياني متاح فقط على شبكات إيثيريوم."
}, },
"confirmClear": {
"message": "هل أنت متأكد من أنك تريد مسح المواقع المعتمدة؟"
},
"contractInteraction": { "contractInteraction": {
"message": "التفاعل على العقد" "message": "التفاعل على العقد"
}, },
"clearApprovalData": {
"message": "مسح بيانات الخصوصية"
},
"reject": { "reject": {
"message": "رفض" "message": "رفض"
}, },
"providerRequest": { "likeToConnect": {
"message": "يرغب $1 في الاتصال بحسابك" "message": "يرغب $1 في الاتصال بحسابك"
}, },
"providerRequestInfo": {
"message": "يطلب هذا الموقع حق الوصول لعرض عنوان حسابك الحالي. تأكد دائماً من ثقتك في المواقع التي تتفاعل معها."
},
"about": { "about": {
"message": "حول" "message": "حول"
}, },
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "الأساسية" "message": "الأساسية"
}, },
"betweenMinAndMax": {
"message": "يجب أن تكون أكبر من أو تساوي $1 وأقل من أو تساوي $2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "متصفح Block Explorer" "message": "متصفح Block Explorer"
}, },
@ -252,9 +236,6 @@
"connect": { "connect": {
"message": "اتصال" "message": "اتصال"
}, },
"connectRequest": {
"message": "طلب اتصال"
},
"connectingTo": { "connectingTo": {
"message": "جارِ الاتصال بـ $1" "message": "جارِ الاتصال بـ $1"
}, },
@ -294,9 +275,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "تم النسخ." "message": "تم النسخ."
}, },
"copy": {
"message": "نسخ"
},
"copyAddress": { "copyAddress": {
"message": "نسخ العنوان إلى الحافظة" "message": "نسخ العنوان إلى الحافظة"
}, },
@ -375,9 +353,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "إذا كان لديك بالفعل بعض الأثير، فإن أسرع طريقة للحصول على الأثير في محفظتك الجديدة عن طريق الإيداع المباشر." "message": "إذا كان لديك بالفعل بعض الأثير، فإن أسرع طريقة للحصول على الأثير في محفظتك الجديدة عن طريق الإيداع المباشر."
}, },
"dismiss": {
"message": "رفض"
},
"done": { "done": {
"message": "تم" "message": "تم"
}, },
@ -539,10 +514,6 @@
"getStarted": { "getStarted": {
"message": "البدء" "message": "البدء"
}, },
"greaterThanMin": {
"message": "يجب أن يكون أكبر من أو يساوي $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "نحن سعداء برؤيتك." "message": "نحن سعداء برؤيتك."
}, },
@ -658,10 +629,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "أنت بحاجة إلى استخدام حسابك الأخير قبل أن تتمكن من إضافة حساب جديد." "message": "أنت بحاجة إلى استخدام حسابك الأخير قبل أن تتمكن من إضافة حساب جديد."
}, },
"lessThanMax": {
"message": "يجب أن يكون أقل من أو يساوي $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "نعم، دعنا نبدأ التثبيت!" "message": "نعم، دعنا نبدأ التثبيت!"
}, },
@ -863,9 +830,6 @@
"message": "الصق مقطع مفتاحك الخاص هنا:", "message": "الصق مقطع مفتاحك الخاص هنا:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "قم بلصق عبارة الأمان الخاصة بك هنا!"
},
"pending": { "pending": {
"message": "قيد الانتظار" "message": "قيد الانتظار"
}, },
@ -1179,9 +1143,6 @@
"storePhrase": { "storePhrase": {
"message": "احتفظ بهذه الجملة في مدير كلمات مرور مثل 1Password." "message": "احتفظ بهذه الجملة في مدير كلمات مرور مثل 1Password."
}, },
"submit": {
"message": "إرسال"
},
"submitted": { "submitted": {
"message": "المقدمة" "message": "المقدمة"
}, },
@ -1349,9 +1310,6 @@
"userName": { "userName": {
"message": "اسم المستخدم" "message": "اسم المستخدم"
}, },
"validFileImport": {
"message": "يجب عليك تحديد ملف صالح للاستيراد."
},
"viewAccount": { "viewAccount": {
"message": "عرض حساب" "message": "عرض حساب"
}, },

@ -1,33 +1,21 @@
{ {
"privacyModeDefault": {
"message": "Режимът на поверителност вече е активиран по подразбиране"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Диаграмата е достъпна само в мрежи на Ethereum." "message": "Диаграмата е достъпна само в мрежи на Ethereum."
}, },
"confirmClear": {
"message": "Сигурни ли сте, че искате да изчистите одобрените уебсайтове?"
},
"contractInteraction": { "contractInteraction": {
"message": "Взаимодействие с договор" "message": "Взаимодействие с договор"
}, },
"clearApprovalData": {
"message": "Изчистване на данните за поверителност"
},
"reject": { "reject": {
"message": "Отхвърляне" "message": "Отхвърляне"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 би искал да се свърже с вашия акаунт" "message": "$1 би искал да се свърже с вашия акаунт"
}, },
"providerRequestInfo": {
"message": "Този сайт иска достъп за преглед на адреса на текущия ви акаунт. Винаги се уверявайте, че се доверявате на сайтовете, с които взаимодействате."
},
"about": { "about": {
"message": "Информация" "message": "Информация"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Версия, център за поддръжка и информация за контакт." "message": "Версия, център за поддръжка и информация за контакт"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Ускоряването на транзакция чрез използване на по-висока цена на газа увеличава шансовете й да се обработва по-бързо от мрежата, но това не винаги е гарантирано." "message": "* Ускоряването на транзакция чрез използване на по-висока цена на газа увеличава шансовете й да се обработва по-бързо от мрежата, но това не винаги е гарантирано."
@ -63,7 +51,7 @@
"message": "Разширени" "message": "Разширени"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Достъп до функции за разработчици, изтегляйте дневници, нулиране на акаунта, тестови мрежи за настройка и персонализиран RPC." "message": "Достъп до функции за разработчици, изтегляйте дневници, нулиране на акаунта, тестови мрежи за настройка и персонализиран RPC"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Разширени опции" "message": "Разширени опции"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "Основни" "message": "Основни"
}, },
"betweenMinAndMax": {
"message": "трябва да бъде по-голям или равен на $1 и по-малък или равен на $2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "Блокиране на Explorer" "message": "Блокиране на Explorer"
}, },
@ -252,9 +236,6 @@
"connect": { "connect": {
"message": "Свързване" "message": "Свързване"
}, },
"connectRequest": {
"message": "Свържете заявка"
},
"connectingTo": { "connectingTo": {
"message": "Свързване с $1" "message": "Свързване с $1"
}, },
@ -294,9 +275,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Копирано!" "message": "Копирано!"
}, },
"copy": {
"message": "Копиране"
},
"copyAddress": { "copyAddress": {
"message": "Копирайте адреса в клипборда" "message": "Копирайте адреса в клипборда"
}, },
@ -375,9 +353,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Ако вече имате някакъв етер, най-бързият начин да получите етер в новия си портфейл е чрез директен депозит." "message": "Ако вече имате някакъв етер, най-бързият начин да получите етер в новия си портфейл е чрез директен депозит."
}, },
"dismiss": {
"message": "Отхвърляне"
},
"done": { "done": {
"message": "Готово" "message": "Готово"
}, },
@ -539,10 +514,6 @@
"getStarted": { "getStarted": {
"message": "Първи стъпки" "message": "Първи стъпки"
}, },
"greaterThanMin": {
"message": "трябва да бъде по-голяма или равна на $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Радваме се да Ви видим." "message": "Радваме се да Ви видим."
}, },
@ -661,10 +632,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Трябва да използвате последния си акаунт, преди да можете да добавите нов." "message": "Трябва да използвате последния си акаунт, преди да можете да добавите нов."
}, },
"lessThanMax": {
"message": "трябва да бъде по-малко или равно на $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Да, нека да настроим нещата!" "message": "Да, нека да настроим нещата!"
}, },
@ -866,9 +833,6 @@
"message": "Поставете низ от личния си ключ тук:", "message": "Поставете низ от личния си ключ тук:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Поставете тук ключовата си фраза!"
},
"pending": { "pending": {
"message": "в изчакване" "message": "в изчакване"
}, },
@ -1182,9 +1146,6 @@
"storePhrase": { "storePhrase": {
"message": "Съхранявайте тази фраза в мениджър на пароли като 1Password." "message": "Съхранявайте тази фраза в мениджър на пароли като 1Password."
}, },
"submit": {
"message": "Изпращане"
},
"submitted": { "submitted": {
"message": "Изпратен" "message": "Изпратен"
}, },
@ -1352,9 +1313,6 @@
"userName": { "userName": {
"message": "Потребителско име" "message": "Потребителско име"
}, },
"validFileImport": {
"message": "Трябва да изберете валиден файл, който да импортирате."
},
"viewAccount": { "viewAccount": {
"message": "Преглед на профила" "message": "Преглед на профила"
}, },

@ -1,28 +1,16 @@
{ {
"privacyModeDefault": {
"message": "গপনয়তর মড এখন ডিফলট হি সকিয় কর আছ"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "শর Ethereum নটওয়কগিট উপলভয। " "message": "শর Ethereum নটওয়কগিট উপলভয। "
}, },
"confirmClear": {
"message": "আপনিি অনিত ওয়বসইটগি পরির করর বিষয়িিত?"
},
"contractInteraction": { "contractInteraction": {
"message": "কনট বপ" "message": "কনট বপ"
}, },
"clearApprovalData": {
"message": "গপনয়তর ড পরির করন"
},
"reject": { "reject": {
"message": "পরতন" "message": "পরতন"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 আপনর অউনর সগ করতয়" "message": "$1 আপনর অউনর সগ করতয়"
}, },
"providerRequestInfo": {
"message": "এই সইটটি আপনর বরতমন অউনর ঠির অর জনয অনধ জ। সবসময় নিিত হয়ন য আপনিইটর সগ করছন সিিসযয কি।"
},
"about": { "about": {
"message": "সমপর" "message": "সমপর"
}, },
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "পথমিক" "message": "পথমিক"
}, },
"betweenMinAndMax": {
"message": "অবশযই $1 এর বড় ব সমন এব $2 এর ছ সমন হত হব।",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "একসপর বলক করন" "message": "একসপর বলক করন"
}, },
@ -252,9 +236,6 @@
"connect": { "connect": {
"message": "সত করন" "message": "সত করন"
}, },
"connectRequest": {
"message": "সর অনধ"
},
"connectingTo": { "connectingTo": {
"message": " $1 এর সগ করছ" "message": " $1 এর সগ করছ"
}, },
@ -294,9 +275,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "কপি কর হয়!" "message": "কপি কর হয়!"
}, },
"copy": {
"message": "অনিি"
},
"copyAddress": { "copyAddress": {
"message": "কিপবি কপি করন" "message": "কিপবি কপি করন"
}, },
@ -375,9 +353,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "আপনর ইতিমধি ইথর থকল আপনর নতন ওয় ইথর পওয়র দততম উপয় হল সরসরি জম কর।" "message": "আপনর ইতিমধি ইথর থকল আপনর নতন ওয় ইথর পওয়র দততম উপয় হল সরসরি জম কর।"
}, },
"dismiss": {
"message": "খিজ"
},
"done": { "done": {
"message": "সমপনন " "message": "সমপনন "
}, },
@ -543,10 +518,6 @@
"getStarted": { "getStarted": {
"message": "শ করন" "message": "শ করন"
}, },
"greaterThanMin": {
"message": "অবশযই $1 এর থ বড় ব সমন হত হব।",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "আপন আমর আননিত।" "message": "আপন আমর আননিত।"
}, },
@ -665,10 +636,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "একটি নতন অউনট যগ করর আগ আপন আপনর শষ অউনট বযবহর করলত হব।" "message": "একটি নতন অউনট যগ করর আগ আপন আপনর শষ অউনট বযবহর করলত হব।"
}, },
"lessThanMax": {
"message": "অবশযই $1 এর থ কম ব সমন হত হব।",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "হ, তহলট আপ করওয়ক!" "message": "হ, তহলট আপ করওয়ক!"
}, },
@ -870,9 +837,6 @@
"message": "আপনর গপনয় কি এখট করন:", "message": "আপনর গপনয় কি এখট করন:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "আপনর সড ফজ এখট করন!"
},
"pending": { "pending": {
"message": "বি" "message": "বি"
}, },
@ -1186,9 +1150,6 @@
"storePhrase": { "storePhrase": {
"message": "এই বশটি 1Password এর মত একটিসওয়ড পরিলকরকষণ করন। " "message": "এই বশটি 1Password এর মত একটিসওয়ড পরিলকরকষণ করন। "
}, },
"submit": {
"message": "জমিন"
},
"submitted": { "submitted": {
"message": "জম কর হয়" "message": "জম কর হয়"
}, },
@ -1356,9 +1317,6 @@
"userName": { "userName": {
"message": "ইউজরনম" "message": "ইউজরনম"
}, },
"validFileImport": {
"message": "আমদি করর জনয আপন অবশযই একটিধ ফইল নিচন করত হব।"
},
"viewAccount": { "viewAccount": {
"message": "আউনট দন" "message": "আউনট দন"
}, },

@ -1,33 +1,21 @@
{ {
"privacyModeDefault": {
"message": "El mode de privacitat ara està activat per defecte"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Mostra només els disponibles a les xarxes Ethereum." "message": "Mostra només els disponibles a les xarxes Ethereum."
}, },
"confirmClear": {
"message": "Estàs segur que vols eliminar totes les pàgines web aprovades?"
},
"contractInteraction": { "contractInteraction": {
"message": "Contractar Interacció" "message": "Contractar Interacció"
}, },
"clearApprovalData": {
"message": "Elimina les dades de privacitat"
},
"reject": { "reject": {
"message": "Rebutja" "message": "Rebutja"
}, },
"providerRequest": { "likeToConnect": {
"message": "a $1 li agradaria connectar-se al teu compte" "message": "a $1 li agradaria connectar-se al teu compte"
}, },
"providerRequestInfo": {
"message": "Aquesta pàgina està demanant accès a la teva adreça"
},
"about": { "about": {
"message": "Informació" "message": "Informació"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Versió, centre de suport, i informació de contacte." "message": "Versió, centre de suport, i informació de contacte"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Accelerar una transacció utilitzant un preu de gas més alt augmenta les possibilitats de ser processat més ràpidament per la xarxa, però no sempre es pot garantir." "message": "* Accelerar una transacció utilitzant un preu de gas més alt augmenta les possibilitats de ser processat més ràpidament per la xarxa, però no sempre es pot garantir."
@ -63,7 +51,7 @@
"message": "Configuració avançada" "message": "Configuració avançada"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Accedeix a característiques de desenvolupador, descarrega Registres d'Estat, Reinicia el Compte, instal·la testnets i personalitza RPC." "message": "Accedeix a característiques de desenvolupador, descarrega Registres d'Estat, Reinicia el Compte, instal·la testnets i personalitza RPC"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Opcions Avançades" "message": "Opcions Avançades"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "Opcions bàsiques" "message": "Opcions bàsiques"
}, },
"betweenMinAndMax": {
"message": "ha de ser igual o superior a $1 i menor o igual a $2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "Bloqueja l'explorador" "message": "Bloqueja l'explorador"
}, },
@ -249,9 +233,6 @@
"connect": { "connect": {
"message": "Connecta" "message": "Connecta"
}, },
"connectRequest": {
"message": "Sol·licitud de connexió"
},
"connectingTo": { "connectingTo": {
"message": "Connectant a $1 " "message": "Connectant a $1 "
}, },
@ -291,9 +272,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "S'ha copiat!" "message": "S'ha copiat!"
}, },
"copy": {
"message": "Copia"
},
"copyAddress": { "copyAddress": {
"message": "Copiar adreça al porta-retalls" "message": "Copiar adreça al porta-retalls"
}, },
@ -372,9 +350,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Si ja tens una mica d'Ether, la manera més ràpida de posar Ether al teu nou moneder és per dipòsit directe." "message": "Si ja tens una mica d'Ether, la manera més ràpida de posar Ether al teu nou moneder és per dipòsit directe."
}, },
"dismiss": {
"message": "Omet"
},
"done": { "done": {
"message": "Fet" "message": "Fet"
}, },
@ -533,10 +508,6 @@
"getStarted": { "getStarted": {
"message": "Comença" "message": "Comença"
}, },
"greaterThanMin": {
"message": "ha de ser major o igual a $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Ens alegrem de veure't." "message": "Ens alegrem de veure't."
}, },
@ -649,10 +620,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Has de fer servir el teu últim compte abans de poder afegir-ne un altre." "message": "Has de fer servir el teu últim compte abans de poder afegir-ne un altre."
}, },
"lessThanMax": {
"message": "ha de ser igual o menor a $1 .",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Sí, posem-nos en marxa!" "message": "Sí, posem-nos en marxa!"
}, },
@ -702,7 +669,7 @@
"message": "Conectant-te a Ethereum i la web descentralitzada." "message": "Conectant-te a Ethereum i la web descentralitzada."
}, },
"metamaskSeedWords": { "metamaskSeedWords": {
"message": "Frase de recuperació de Metamask" "message": "Frase de recuperació de MetaMask"
}, },
"metamaskVersion": { "metamaskVersion": {
"message": "Versió MetaMask" "message": "Versió MetaMask"
@ -854,9 +821,6 @@
"message": "Enganxa la teva cadena clau privada aquí:", "message": "Enganxa la teva cadena clau privada aquí:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Enganxa la teva frase de seeds aquí!"
},
"pending": { "pending": {
"message": "pendent" "message": "pendent"
}, },
@ -1164,9 +1128,6 @@
"storePhrase": { "storePhrase": {
"message": "Guarda aquesta frase a un gestor de contrasenyes com Contrasenya 1" "message": "Guarda aquesta frase a un gestor de contrasenyes com Contrasenya 1"
}, },
"submit": {
"message": "Envia"
},
"submitted": { "submitted": {
"message": "Enviat" "message": "Enviat"
}, },
@ -1325,9 +1286,6 @@
"userName": { "userName": {
"message": "Nom d'usuari" "message": "Nom d'usuari"
}, },
"validFileImport": {
"message": "Has de seleccionar un arxiu vàlid per a importar."
},
"viewAccount": { "viewAccount": {
"message": "Mostra el compte" "message": "Mostra el compte"
}, },

@ -1,16 +1,7 @@
{ {
"confirmClear": {
"message": "Naozaj chcete vymazať schválené webové stránky?"
},
"clearApprovalData": {
"message": "Jasné údaje o schválení"
},
"reject": { "reject": {
"message": "Odmítnout" "message": "Odmítnout"
}, },
"providerRequestInfo": {
"message": "Níže uvedená doména se pokouší požádat o přístup k API Ethereum, aby mohla komunikovat s blokádou Ethereum. Před schválením přístupu Ethereum vždy zkontrolujte, zda jste na správném místě."
},
"account": { "account": {
"message": "Účet" "message": "Účet"
}, },
@ -58,10 +49,6 @@
"balanceIsInsufficientGas": { "balanceIsInsufficientGas": {
"message": "Nedostatek prostředků pro aktuální množství paliva" "message": "Nedostatek prostředků pro aktuální množství paliva"
}, },
"betweenMinAndMax": {
"message": "musí být větší nebo roven $1 a menší nebo roven $2.",
"description": "helper for inputting hex as decimal input"
},
"blockiesIdenticon": { "blockiesIdenticon": {
"message": "Použít Blockies Identicon" "message": "Použít Blockies Identicon"
}, },
@ -113,9 +100,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Zkopírováno!" "message": "Zkopírováno!"
}, },
"copy": {
"message": "Kopírovat"
},
"copyToClipboard": { "copyToClipboard": {
"message": "Kopírovat do schránky" "message": "Kopírovat do schránky"
}, },
@ -227,10 +211,6 @@
"message": "Získejte Ether z faucetu za $1.", "message": "Získejte Ether z faucetu za $1.",
"description": "Displays network name for Ether faucet" "description": "Displays network name for Ether faucet"
}, },
"greaterThanMin": {
"message": "musí být větší nebo roven $1.",
"description": "helper for inputting hex as decimal input"
},
"here": { "here": {
"message": "zde", "message": "zde",
"description": "as in -click here- for more information (goes with troubleTokenBalances)" "description": "as in -click here- for more information (goes with troubleTokenBalances)"
@ -285,10 +265,6 @@
"learnMore": { "learnMore": {
"message": "Zjistěte více." "message": "Zjistěte více."
}, },
"lessThanMax": {
"message": "musí být menší nebo roven $1.",
"description": "helper for inputting hex as decimal input"
},
"likeToAddTokens": { "likeToAddTokens": {
"message": "Chcete přidat tyto tokeny?" "message": "Chcete přidat tyto tokeny?"
}, },
@ -367,9 +343,6 @@
"message": "Vložte zde svůj privátní klíč:", "message": "Vložte zde svůj privátní klíč:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Svou klíčovou frázi vložte zde!"
},
"personalAddressDetected": { "personalAddressDetected": {
"message": "Detekována osobní adresa. Zadejte adresu kontraktu tokenu." "message": "Detekována osobní adresa. Zadejte adresu kontraktu tokenu."
}, },
@ -476,9 +449,6 @@
"stateLogError": { "stateLogError": {
"message": "Chyba během získávání stavových protokolů." "message": "Chyba během získávání stavových protokolů."
}, },
"submit": {
"message": "Odeslat"
},
"submitted": { "submitted": {
"message": "Odesláno" "message": "Odesláno"
}, },
@ -535,9 +505,6 @@
"usedByClients": { "usedByClients": {
"message": "Používána různými klienty" "message": "Používána různými klienty"
}, },
"validFileImport": {
"message": "Musíte vybrat validní soubor k importu."
},
"viewAccount": { "viewAccount": {
"message": "Zobrazit účet" "message": "Zobrazit účet"
}, },

@ -1,33 +1,21 @@
{ {
"privacyModeDefault": {
"message": "Privatlivstilstand er nu som udgangspunkt aktiveret"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Skema kun tilgængeligt på Ethereum-netværk." "message": "Skema kun tilgængeligt på Ethereum-netværk."
}, },
"confirmClear": {
"message": "Er du sikker på, at du vil rydde godkendte hjemmesider?"
},
"contractInteraction": { "contractInteraction": {
"message": "Kontraktinteraktion" "message": "Kontraktinteraktion"
}, },
"clearApprovalData": {
"message": "Ryd fortrolighedsdata"
},
"reject": { "reject": {
"message": "Afvis" "message": "Afvis"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 ønsker at forbinde til din konto" "message": "$1 ønsker at forbinde til din konto"
}, },
"providerRequestInfo": {
"message": "Denne side anmoder om at se din nuværende kontoadresse. Sørg altid for, at du stoler på de sider du interagerer med."
},
"about": { "about": {
"message": "Om" "message": "Om"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Version, supportcenter og kontaktinformation." "message": "Version, supportcenter og kontaktinformation"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* At gøre din transaktion hurtigere ved at bruge en højere Gas-priser, øger dennes chancer for at blive behandlet af netværket hurtigere, men det er ikke altid garanteret." "message": "* At gøre din transaktion hurtigere ved at bruge en højere Gas-priser, øger dennes chancer for at blive behandlet af netværket hurtigere, men det er ikke altid garanteret."
@ -63,7 +51,7 @@
"message": "Avanceret" "message": "Avanceret"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Få adgang til udviklerfunktioner, hent tilstandslogs, nulstil konto, opsæt testnetværk og brugerdefineret RPC." "message": "Få adgang til udviklerfunktioner, hent tilstandslogs, nulstil konto, opsæt testnetværk og brugerdefineret RPC"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Avancerede Valgmuligheder" "message": "Avancerede Valgmuligheder"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "Grundlæggende oplysninger" "message": "Grundlæggende oplysninger"
}, },
"betweenMinAndMax": {
"message": "skal være større end eller lig med $1 og mindre end eller lig med $2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "Block-udforsker" "message": "Block-udforsker"
}, },
@ -252,9 +236,6 @@
"connect": { "connect": {
"message": "Få forbindelse" "message": "Få forbindelse"
}, },
"connectRequest": {
"message": "Tilslutningsanmodning"
},
"connectingTo": { "connectingTo": {
"message": "Forbinder til $1" "message": "Forbinder til $1"
}, },
@ -294,9 +275,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Kopieret!" "message": "Kopieret!"
}, },
"copy": {
"message": "Kopiér"
},
"copyAddress": { "copyAddress": {
"message": "Kopier adresse til udklipsholder" "message": "Kopier adresse til udklipsholder"
}, },
@ -375,9 +353,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Hvis du allerede har Ether, er den hurtigste måde at få Ether i din nye tegnebog ved direkte indbetaling." "message": "Hvis du allerede har Ether, er den hurtigste måde at få Ether i din nye tegnebog ved direkte indbetaling."
}, },
"dismiss": {
"message": "Luk"
},
"done": { "done": {
"message": "Færdig" "message": "Færdig"
}, },
@ -539,10 +514,6 @@
"getStarted": { "getStarted": {
"message": "Kom godt i gang" "message": "Kom godt i gang"
}, },
"greaterThanMin": {
"message": "skal være større end eller lig med $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Vi er glade for at se dig." "message": "Vi er glade for at se dig."
}, },
@ -658,10 +629,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Du skal benytte din tidligere konto, før du kan tilføje en ny." "message": "Du skal benytte din tidligere konto, før du kan tilføje en ny."
}, },
"lessThanMax": {
"message": "skal være mindre end eller lig med $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Ja, lad os komme i gang!" "message": "Ja, lad os komme i gang!"
}, },
@ -848,9 +815,6 @@
"message": "Indsæt din private nøglestreng her:", "message": "Indsæt din private nøglestreng her:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Indsæt din seed-sætning her!"
},
"pending": { "pending": {
"message": "afventer" "message": "afventer"
}, },
@ -1161,9 +1125,6 @@
"storePhrase": { "storePhrase": {
"message": "Gem denne sætning i en adgangskodeadministrator som 1Password." "message": "Gem denne sætning i en adgangskodeadministrator som 1Password."
}, },
"submit": {
"message": "Indsend"
},
"submitted": { "submitted": {
"message": "Indsendt" "message": "Indsendt"
}, },
@ -1322,9 +1283,6 @@
"userName": { "userName": {
"message": "Brugernavn" "message": "Brugernavn"
}, },
"validFileImport": {
"message": "Du skal vælge en gyldig fil at importere."
},
"viewAccount": { "viewAccount": {
"message": "Vis konto" "message": "Vis konto"
}, },

@ -1,33 +1,21 @@
{ {
"privacyModeDefault": {
"message": "Der Datenschutzmodus ist jetzt standardmäßig aktiviert"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Die Grafik ist nur in Ethereum-Netzwerken verfügbar." "message": "Die Grafik ist nur in Ethereum-Netzwerken verfügbar."
}, },
"confirmClear": {
"message": "Möchten Sie die genehmigten Websites wirklich löschen?"
},
"contractInteraction": { "contractInteraction": {
"message": "Vertragsinteraktion" "message": "Vertragsinteraktion"
}, },
"clearApprovalData": {
"message": "Genehmigungsdaten löschen"
},
"reject": { "reject": {
"message": "Ablehnen" "message": "Ablehnen"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 möchte sich mit deinem Account verbinden" "message": "$1 möchte sich mit deinem Account verbinden"
}, },
"providerRequestInfo": {
"message": "Diese Website fordert Zugriff auf Ihre aktuelle Kontoadresse. Stellen Sie immer sicher, dass Sie den Websites vertrauen, mit denen Sie interagieren."
},
"about": { "about": {
"message": "Über" "message": "Über"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Version, Supportcenter und Kontaktinformationen." "message": "Version, Supportcenter und Kontaktinformationen"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Die Beschleunigung einer Transaktion durch die Verwendung eines höheren Gaspreises erhöht die Chancen einer schnelleren Verarbeitung durch das Netz, wofür es allerdings keine Garantie gibt." "message": "* Die Beschleunigung einer Transaktion durch die Verwendung eines höheren Gaspreises erhöht die Chancen einer schnelleren Verarbeitung durch das Netz, wofür es allerdings keine Garantie gibt."
@ -60,7 +48,7 @@
"message": "Erweitert" "message": "Erweitert"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Zugriff auf Entwicklerfunktionen, Download von Statusprotokollen, Zurücksetzen des Kontos, Einrichten von Testnetzen und benutzerdefinierten RPCs." "message": "Zugriff auf Entwicklerfunktionen, Download von Statusprotokollen, Zurücksetzen des Kontos, Einrichten von Testnetzen und benutzerdefinierten RPCs"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Erweiterte Optionen" "message": "Erweiterte Optionen"
@ -154,10 +142,6 @@
"basic": { "basic": {
"message": "Grundlegend" "message": "Grundlegend"
}, },
"betweenMinAndMax": {
"message": "Muss größer oder gleich $1 und kleiner oder gleich $2 sein.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "Block-Explorer" "message": "Block-Explorer"
}, },
@ -240,9 +224,6 @@
"connect": { "connect": {
"message": "Verbinden" "message": "Verbinden"
}, },
"connectRequest": {
"message": "Verbindungsanfrage"
},
"connectingTo": { "connectingTo": {
"message": "Verbindung mit $1 wird hergestellt" "message": "Verbindung mit $1 wird hergestellt"
}, },
@ -282,9 +263,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Kopiert!" "message": "Kopiert!"
}, },
"copy": {
"message": "Kopieren"
},
"copyAddress": { "copyAddress": {
"message": "Adresse in die Zwischenablage kopieren" "message": "Adresse in die Zwischenablage kopieren"
}, },
@ -360,9 +338,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Wenn du bereits Ether besitzt, ist die sofortige Einzahlung die schnellste Methode Ether in deine neue Wallet zu bekommen." "message": "Wenn du bereits Ether besitzt, ist die sofortige Einzahlung die schnellste Methode Ether in deine neue Wallet zu bekommen."
}, },
"dismiss": {
"message": "Schließen"
},
"done": { "done": {
"message": "Fertig" "message": "Fertig"
}, },
@ -528,10 +503,6 @@
"getStarted": { "getStarted": {
"message": "Erste Schritte" "message": "Erste Schritte"
}, },
"greaterThanMin": {
"message": "Muss größer oder gleich $1 sein.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Wir freuen uns, Sie zu sehen." "message": "Wir freuen uns, Sie zu sehen."
}, },
@ -647,10 +618,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Sie müssen Ihr letztes Konto verwenden, ehe Sie ein neues hinzufügen können." "message": "Sie müssen Ihr letztes Konto verwenden, ehe Sie ein neues hinzufügen können."
}, },
"lessThanMax": {
"message": "Muss kleiner oder gleich $1 sein.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Ja, legen wir los!" "message": "Ja, legen wir los!"
}, },
@ -840,9 +807,6 @@
"message": "Füge deine Private Key Zeichenfolge hier ein:", "message": "Füge deine Private Key Zeichenfolge hier ein:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Füge deine Seed-Wörterfolge hier ein!"
},
"pending": { "pending": {
"message": "ausstehend" "message": "ausstehend"
}, },
@ -1152,9 +1116,6 @@
"storePhrase": { "storePhrase": {
"message": "Speichern Sie diesen Schlüssel in einem Passwortmanager wie 1Password." "message": "Speichern Sie diesen Schlüssel in einem Passwortmanager wie 1Password."
}, },
"submit": {
"message": "Einreichen"
},
"submitted": { "submitted": {
"message": "Abgeschickt" "message": "Abgeschickt"
}, },
@ -1313,9 +1274,6 @@
"userName": { "userName": {
"message": "Nutzername" "message": "Nutzername"
}, },
"validFileImport": {
"message": "Du musst eine gültige Datei für den Import auswählen."
},
"viewAccount": { "viewAccount": {
"message": " Account einsehen" "message": " Account einsehen"
}, },

@ -1,33 +1,21 @@
{ {
"privacyModeDefault": {
"message": "Η Λειτουργία Απορρήτου είναι πλέον ενεργοποιημένη από προεπιλογή"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Το διάγραμμα είναι διαθέσιμο μόνο σε δίκτυα Ethereum." "message": "Το διάγραμμα είναι διαθέσιμο μόνο σε δίκτυα Ethereum."
}, },
"confirmClear": {
"message": "Είστε βέβαιοι ότι θέλετε να διαγράψετε τους εγκεκριμένους ιστότοπους;"
},
"contractInteraction": { "contractInteraction": {
"message": "Αλληλεπίδραση Σύμβασης" "message": "Αλληλεπίδραση Σύμβασης"
}, },
"clearApprovalData": {
"message": "Εκκαθάριση Δεδομένων Απορρήτου"
},
"reject": { "reject": {
"message": "Απόρριψη" "message": "Απόρριψη"
}, },
"providerRequest": { "likeToConnect": {
"message": "Αίτημα σύνδεσης στον λογαριασμό σας από $1" "message": "Αίτημα σύνδεσης στον λογαριασμό σας από $1"
}, },
"providerRequestInfo": {
"message": "Ο ιστότοπος ζητά πρόσβαση για προβολή της τρέχουσας διεύθυνσης του λογαριασμού σας. Να σιγουρεύεστε πάντα ότι εμπιστεύεστε τους ιστότοπους με τους οποίους αλληλεπιδράτε."
},
"about": { "about": {
"message": "Σχετικά με" "message": "Σχετικά με"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Έκδοση, κέντρο υποστήριξης και πληροφορίες επικοινωνίας." "message": "Έκδοση, κέντρο υποστήριξης και πληροφορίες επικοινωνίας"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Η επιτάχυνση μιας συναλλαγής με τη χρήση υψηλότερης τιμής καυσίμου αυξάνει τις πιθανότητές της για ταχύτερη επεξεργασία από το δίκτυο, αλλά δεν είναι πάντοτε εγγυημένη." "message": "* Η επιτάχυνση μιας συναλλαγής με τη χρήση υψηλότερης τιμής καυσίμου αυξάνει τις πιθανότητές της για ταχύτερη επεξεργασία από το δίκτυο, αλλά δεν είναι πάντοτε εγγυημένη."
@ -63,7 +51,7 @@
"message": "Σύνθετες" "message": "Σύνθετες"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Αποκτήστε πρόσβαση στις λειτουργίες του προγραμματιστή, κατεβάστε Αρχεία Καταγραφών Καταστάσεων, Επαναφέρετε τον Λογαριασμό, εγκαταστήστε δοκιμαστικά δίκτυα και προσαρμοσμένα RPC." "message": "Αποκτήστε πρόσβαση στις λειτουργίες του προγραμματιστή, κατεβάστε Αρχεία Καταγραφών Καταστάσεων, Επαναφέρετε τον Λογαριασμό, εγκαταστήστε δοκιμαστικά δίκτυα και προσαρμοσμένα RPC"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Σύνθετες Επιλογές" "message": "Σύνθετες Επιλογές"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "Βασικά" "message": "Βασικά"
}, },
"betweenMinAndMax": {
"message": "πρέπει να είναι μεγαλύτερο ή ίσο με $1 και μικρότερο ή ίσο με $2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "Εξερευνητής Μπλοκ" "message": "Εξερευνητής Μπλοκ"
}, },
@ -249,9 +233,6 @@
"connect": { "connect": {
"message": "Σύνδεση" "message": "Σύνδεση"
}, },
"connectRequest": {
"message": "Αίτημα Σύνδεσης"
},
"connectingTo": { "connectingTo": {
"message": "Σύνδεση με $1" "message": "Σύνδεση με $1"
}, },
@ -291,9 +272,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Έγινε αντιγραφή!" "message": "Έγινε αντιγραφή!"
}, },
"copy": {
"message": "Αντιγραφή"
},
"copyAddress": { "copyAddress": {
"message": "Αντιγράψτε τη διεύθυνση στο πρόχειρο" "message": "Αντιγράψτε τη διεύθυνση στο πρόχειρο"
}, },
@ -372,9 +350,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Αν έχετε ήδη κάποια Ether, ο πιο γρήγορος τρόπος για να πάρετε τα Ether στο νέο σας πορτοφόλι με άμεση κατάθεση." "message": "Αν έχετε ήδη κάποια Ether, ο πιο γρήγορος τρόπος για να πάρετε τα Ether στο νέο σας πορτοφόλι με άμεση κατάθεση."
}, },
"dismiss": {
"message": "Παράβλεψη"
},
"done": { "done": {
"message": "Τέλος" "message": "Τέλος"
}, },
@ -540,10 +515,6 @@
"getStarted": { "getStarted": {
"message": "Έναρξη" "message": "Έναρξη"
}, },
"greaterThanMin": {
"message": "πρέπει να είναι μεγαλύτερο ή ίσο με $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Χαιρόμαστε που σας βλέπουμε." "message": "Χαιρόμαστε που σας βλέπουμε."
}, },
@ -662,10 +633,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Πρέπει να χρησιμοποιήσετε τον τελευταίο σας λογαριασμό πριν προσθέσετε έναν νέο." "message": "Πρέπει να χρησιμοποιήσετε τον τελευταίο σας λογαριασμό πριν προσθέσετε έναν νέο."
}, },
"lessThanMax": {
"message": "πρέπει να είναι μικρότερο από ή ίσο με $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Ναι, ας το εγκαταστήσουμε!" "message": "Ναι, ας το εγκαταστήσουμε!"
}, },
@ -867,9 +834,6 @@
"message": "Επικολλήστε τη συμβολοσειρά ιδιωτικού κλειδιού εδώ:", "message": "Επικολλήστε τη συμβολοσειρά ιδιωτικού κλειδιού εδώ:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Επικολλήστε τη φράση επαναφοράς σας εδώ!"
},
"pending": { "pending": {
"message": "σε εκκρεμότητα" "message": "σε εκκρεμότητα"
}, },
@ -1183,9 +1147,6 @@
"storePhrase": { "storePhrase": {
"message": "Αποθηκεύστε αυτήν τη φράση σε έναν διαχειριστή κωδικών πρόσβασης όπως το 1Password." "message": "Αποθηκεύστε αυτήν τη φράση σε έναν διαχειριστή κωδικών πρόσβασης όπως το 1Password."
}, },
"submit": {
"message": "Υποβολή"
},
"submitted": { "submitted": {
"message": "Υποβλήθηκε" "message": "Υποβλήθηκε"
}, },
@ -1350,9 +1311,6 @@
"userName": { "userName": {
"message": "Όνομα χρήστη" "message": "Όνομα χρήστη"
}, },
"validFileImport": {
"message": "Πρέπει να επιλέξετε έναν έγκυρο φάκελο για εισαγωγή."
},
"viewAccount": { "viewAccount": {
"message": "Προβολή λογαριασμού" "message": "Προβολή λογαριασμού"
}, },

@ -5,53 +5,39 @@
"showIncomingTransactionsDescription": { "showIncomingTransactionsDescription": {
"message": "Select this to use Etherscan to show incoming transactions in the transactions list" "message": "Select this to use Etherscan to show incoming transactions in the transactions list"
}, },
"cancelledConnectionWithMetaMask": {
"message": "Cancelled Connection With MetaMask"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Chart only available on Ethereum networks." "message": "Chart only available on Ethereum networks."
}, },
"confirmClear": { "connectedSites": {
"message": "Are you sure you want to clear approved websites?" "message": "Connected Sites"
},
"connections": {
"message": "Connections"
},
"connectionsSettingsDescription": {
"message": "Sites allowed to read your accounts"
},
"addSite": {
"message": "Add Site"
},
"addSiteDescription": {
"message": "Manually add a site to allow it access to your accounts, useful for older dapps"
}, },
"connected": { "connectingWithMetaMask": {
"message": "Connected" "message": "Connecting With MetaMask..."
}, },
"connectedDescription": { "connectTo": {
"message": "The list of sites allowed access to your addresses" "message": "Connect to $1",
"description": "$1 is the name/origin of a site/dapp that the user can connect to metamask"
}, },
"privacyModeDefault": { "chooseAnAcount": {
"message": "Privacy Mode is now enabled by default" "message": "Choose an account"
}, },
"contractInteraction": { "contractInteraction": {
"message": "Contract Interaction" "message": "Contract Interaction"
}, },
"clearApprovalData": {
"message": "Remove all sites"
},
"reject": { "reject": {
"message": "Reject" "message": "Reject"
}, },
"providerRequest": { "redirectingBackToDapp": {
"message": "$1 would like to connect to your account" "message": "Redirecting back to dapp..."
},
"providerRequestInfo": {
"message": "This site is requesting access to view your current account address. Always make sure you trust the sites you interact with."
}, },
"about": { "about": {
"message": "About" "message": "About"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Version, support center, and contact info." "message": "Version, support center, and contact info"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Accelerating a transaction by using a higher gas price increases its chances of getting processed by the network faster, but it is not always guaranteed." "message": "* Accelerating a transaction by using a higher gas price increases its chances of getting processed by the network faster, but it is not always guaranteed."
@ -91,7 +77,7 @@
"message": "Advanced" "message": "Advanced"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Access developer features, download State Logs, Reset Account, setup testnets and custom RPC." "message": "Access developer features, download State Logs, Reset Account, setup testnets and custom RPC"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Advanced Options" "message": "Advanced Options"
@ -196,10 +182,6 @@
"basic": { "basic": {
"message": "Basic" "message": "Basic"
}, },
"betweenMinAndMax": {
"message": "must be greater than or equal to $1 and less than or equal to $2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "Block Explorer" "message": "Block Explorer"
}, },
@ -300,9 +282,6 @@
"connect": { "connect": {
"message": "Connect" "message": "Connect"
}, },
"connectRequest": {
"message": "Connect Request"
},
"connectingTo": { "connectingTo": {
"message": "Connecting to $1" "message": "Connecting to $1"
}, },
@ -348,9 +327,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Copied!" "message": "Copied!"
}, },
"copy": {
"message": "Copy"
},
"copyAddress": { "copyAddress": {
"message": "Copy address to clipboard" "message": "Copy address to clipboard"
}, },
@ -429,14 +405,36 @@
"details": { "details": {
"message": "Details" "message": "Details"
}, },
"disconnectAccount": {
"message": "Disconnect account"
},
"disconnectAll": {
"message": "Disconnect All"
},
"disconnectAllModalDescription": {
"message": "Are you sure? You will be disconnected from all sites on all accounts."
},
"disconnectAccountModalDescription": {
"message": "Are you sure? Your account (\"$1\") will be disconnected from this site."
},
"disconnectAccountQuestion": {
"message": "Disconnect account?"
},
"disconnectFromThisAccount": {
"message": "Disconnect from this account?"
},
"disconnectAllAccountsQuestion": {
"message": "Disconnect all accounts?"
},
"directDepositEther": { "directDepositEther": {
"message": "Directly Deposit Ether" "message": "Directly Deposit Ether"
}, },
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "If you already have some Ether, the quickest way to get Ether in your new wallet by direct deposit." "message": "If you already have some Ether, the quickest way to get Ether in your new wallet by direct deposit."
}, },
"dismiss": { "domainLastConnect": {
"message": "Dismiss" "message": "Last Connected: $1",
"description": "$1 is the date at which the user was last connected to a given domain"
}, },
"done": { "done": {
"message": "Done" "message": "Done"
@ -498,6 +496,17 @@
"endOfFlowMessage10": { "endOfFlowMessage10": {
"message": "All Done" "message": "All Done"
}, },
"extensionId": {
"message": "Extension ID: $1",
"description": "$1 is a string of random letters that are the id of another extension connecting to MetaMask"
},
"externalExtension": {
"message": "External Extension"
},
"onboardingReturnNotice": {
"message": "\"$1\" will close this tab and direct back to $2",
"description": "Return the user to the site that initiated onboarding"
},
"ensRegistrationError": { "ensRegistrationError": {
"message": "Error in ENS name registration" "message": "Error in ENS name registration"
}, },
@ -615,10 +624,6 @@
"getStarted": { "getStarted": {
"message": "Get Started" "message": "Get Started"
}, },
"greaterThanMin": {
"message": "must be greater than or equal to $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "We’re happy to see you." "message": "We’re happy to see you."
}, },
@ -737,22 +742,28 @@
"max": { "max": {
"message": "Max" "message": "Max"
}, },
"lastConnected": {
"message": "Last Connected"
},
"learnMore": { "learnMore": {
"message": "Learn more" "message": "Learn more"
}, },
"learnAboutRisks": {
"message": "Learn about the risks here."
},
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "You need to make use your last account before you can add a new one." "message": "You need to make use your last account before you can add a new one."
}, },
"lessThanMax": {
"message": "must be less than or equal to $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Yes, let’s get set up!" "message": "Yes, let’s get set up!"
}, },
"likeToAddTokens": { "likeToAddTokens": {
"message": "Would you like to add these tokens?" "message": "Would you like to add these tokens?"
}, },
"likeToConnect": {
"message": "$1 would like to connect to your MetaMask account",
"description": "$1 is the name/url of a site/dapp asking to connect to MetaMask"
},
"links": { "links": {
"message": "Links" "message": "Links"
}, },
@ -884,6 +895,9 @@
"rpcUrl": { "rpcUrl": {
"message": "New RPC URL" "message": "New RPC URL"
}, },
"onlyConnectTrust": {
"message": "Only connect with sites you trust."
},
"optionalChainId": { "optionalChainId": {
"message": "ChainID (optional)" "message": "ChainID (optional)"
}, },
@ -958,9 +972,6 @@
"message": "Paste your private key string here:", "message": "Paste your private key string here:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Paste your seed phrase here!"
},
"pending": { "pending": {
"message": "pending" "message": "pending"
}, },
@ -1089,6 +1100,9 @@
"readyToConnect": { "readyToConnect": {
"message": "Ready to Connect?" "message": "Ready to Connect?"
}, },
"revokeInPermissions": {
"message": "* You can view and revoke permissions in MetaMask settings."
},
"rinkeby": { "rinkeby": {
"message": "Rinkeby Test Network" "message": "Rinkeby Test Network"
}, },
@ -1351,6 +1365,14 @@
"testFaucet": { "testFaucet": {
"message": "Test Faucet" "message": "Test Faucet"
}, },
"thisWillAllow": {
"message": "This will allow $1 to:",
"description": "$1 is the name or domain of a site/dapp that is requesting permissions"
},
"thisWillAllowExternalExtension": {
"message": "This will allow an external extension with id $1 to:",
"description": "$1 is a string of random letters that are the id of another extension connecting to MetaMask"
},
"thisWillCreate": { "thisWillCreate": {
"message": "This will create a new wallet and seed phrase" "message": "This will create a new wallet and seed phrase"
}, },
@ -1363,6 +1385,10 @@
"toWithColon": { "toWithColon": {
"message": "To:" "message": "To:"
}, },
"toConnectWith": {
"message": "To connect with $1",
"description": "$1 is the name or domain of a site/dapp that asking to connect with MetaMask"
},
"toETHviaShapeShift": { "toETHviaShapeShift": {
"message": "$1 to ETH via ShapeShift", "message": "$1 to ETH via ShapeShift",
"description": "system will fill in deposit type in start of message" "description": "system will fill in deposit type in start of message"
@ -1492,9 +1518,6 @@
"userName": { "userName": {
"message": "Username" "message": "Username"
}, },
"validFileImport": {
"message": "You must select a valid file to import."
},
"viewAccount": { "viewAccount": {
"message": "View Account" "message": "View Account"
}, },

@ -1,28 +1,16 @@
{ {
"privacyModeDefault": {
"message": "Modo Privado está activado ahora por defecto"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Tabla solo disponible en redes Ethereum." "message": "Tabla solo disponible en redes Ethereum."
}, },
"confirmClear": {
"message": "¿Seguro que quieres borrar los sitios web aprobados?"
},
"contractInteraction": { "contractInteraction": {
"message": "Interacción con contrato" "message": "Interacción con contrato"
}, },
"clearApprovalData": {
"message": "Borrar datos de aprobación"
},
"reject": { "reject": {
"message": "Rechazar" "message": "Rechazar"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 quisiera conectar con tu cuenta" "message": "$1 quisiera conectar con tu cuenta"
}, },
"providerRequestInfo": {
"message": "El dominio que se muestra a continuación intenta solicitar acceso a la API Ethereum para que pueda interactuar con la blockchain de Ethereum. Siempre verifique que esté en el sitio correcto antes de aprobar el acceso Ethereum."
},
"about": { "about": {
"message": "Acerca" "message": "Acerca"
}, },
@ -145,10 +133,6 @@
"basic": { "basic": {
"message": "Básico" "message": "Básico"
}, },
"betweenMinAndMax": {
"message": "Debe ser mayor o igual a $1 y menor o igual a $2",
"description": "helper for inputting hex as decimal input"
},
"blockiesIdenticon": { "blockiesIdenticon": {
"message": "Usar Blockies Identicon (Iconos)" "message": "Usar Blockies Identicon (Iconos)"
}, },
@ -209,9 +193,6 @@
"connect": { "connect": {
"message": "Conectar" "message": "Conectar"
}, },
"connectRequest": {
"message": "Petición para conectar"
},
"connectingTo": { "connectingTo": {
"message": "Conectánodse a $1" "message": "Conectánodse a $1"
}, },
@ -251,9 +232,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "¡Copiado!" "message": "¡Copiado!"
}, },
"copy": {
"message": "Copiar"
},
"copyAddress": { "copyAddress": {
"message": "Copiar la dirección al portapapeles" "message": "Copiar la dirección al portapapeles"
}, },
@ -332,9 +310,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Si posees Ether, la forma más rápida de transferirlo a tu nueva billetera es depositándolo directamente" "message": "Si posees Ether, la forma más rápida de transferirlo a tu nueva billetera es depositándolo directamente"
}, },
"dismiss": {
"message": "Descartar"
},
"done": { "done": {
"message": "Completo" "message": "Completo"
}, },
@ -449,10 +424,6 @@
"getHelp": { "getHelp": {
"message": "Pedir ayuda." "message": "Pedir ayuda."
}, },
"greaterThanMin": {
"message": "Debe ser mayor o igual a $1",
"description": "helper for inputting hex as decimal input"
},
"hardwareWalletConnected": { "hardwareWalletConnected": {
"message": "Se ha conectado el monedero físico" "message": "Se ha conectado el monedero físico"
}, },
@ -553,10 +524,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Hay que hacer uso de tu última cuenta antes de agregarle una nueva." "message": "Hay que hacer uso de tu última cuenta antes de agregarle una nueva."
}, },
"lessThanMax": {
"message": "Debe ser menor o igual a $1",
"description": "helper for inputting hex as decimal input"
},
"likeToAddTokens": { "likeToAddTokens": {
"message": "¿Te gustaría agregar estos tokens?" "message": "¿Te gustaría agregar estos tokens?"
}, },
@ -701,9 +668,6 @@
"message": "Pega tu clave privada aqui", "message": "Pega tu clave privada aqui",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "¡Pega tu frase semilla aquí!"
},
"pending": { "pending": {
"message": "pendiente" "message": "pendiente"
}, },
@ -966,9 +930,6 @@
"step3HardwareWalletMsg": { "step3HardwareWalletMsg": {
"message": "Usa tu cuenta física igual que harías con cualquier cuenta de Ethereum. Regístrate con dApps, manda Eth, compra y almacena tokens de ERC20 y otros tokens no-fungibles, como CryptoKitties." "message": "Usa tu cuenta física igual que harías con cualquier cuenta de Ethereum. Regístrate con dApps, manda Eth, compra y almacena tokens de ERC20 y otros tokens no-fungibles, como CryptoKitties."
}, },
"submit": {
"message": "Enviar"
},
"submitted": { "submitted": {
"message": "Enviado" "message": "Enviado"
}, },
@ -1097,9 +1058,6 @@
"usedByClients": { "usedByClients": {
"message": "Utilizado por una variedad de clientes diferentes" "message": "Utilizado por una variedad de clientes diferentes"
}, },
"validFileImport": {
"message": "Debes selecionar un archivo valido para importar"
},
"viewAccount": { "viewAccount": {
"message": "Mirar cuenta" "message": "Mirar cuenta"
}, },

@ -1,33 +1,21 @@
{ {
"privacyModeDefault": {
"message": "El modo de privacidad está habilitado de manera predeterminada"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Chart está disponible únicamente en las redes de Ethereum." "message": "Chart está disponible únicamente en las redes de Ethereum."
}, },
"confirmClear": {
"message": "¿Estás seguro de que deseas borrar los sitios web aprobados?"
},
"contractInteraction": { "contractInteraction": {
"message": "Interacción contractual" "message": "Interacción contractual"
}, },
"clearApprovalData": {
"message": "Borrar datos de privacidad"
},
"reject": { "reject": {
"message": "Rechazar" "message": "Rechazar"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 desea conectarse a tu cuenta" "message": "$1 desea conectarse a tu cuenta"
}, },
"providerRequestInfo": {
"message": "Este sitio está solicitando acceso para ver la dirección de tu cuenta corriente. Asegúrate siempre de que confías en los sitios con los que interactúas."
},
"about": { "about": {
"message": "Acerca de" "message": "Acerca de"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Versión, centro de soporte técnico e información de contacto." "message": "Versión, centro de soporte técnico e información de contacto"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Aumentar una transacción utilizando un precio de gas más alto aumenta sus posibilidades de ser procesada más rápido por la red, pero esto no siempre está garantizado." "message": "* Aumentar una transacción utilizando un precio de gas más alto aumenta sus posibilidades de ser procesada más rápido por la red, pero esto no siempre está garantizado."
@ -63,7 +51,7 @@
"message": "Avanzada" "message": "Avanzada"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Accede a las funciones de desarrollador, descarga los registros de estado, restablece la cuenta, y configura las redes Testnet y el RPC personalizado." "message": "Accede a las funciones de desarrollador, descarga los registros de estado, restablece la cuenta, y configura las redes Testnet y el RPC personalizado"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Opciones avanzadas" "message": "Opciones avanzadas"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "Básicas" "message": "Básicas"
}, },
"betweenMinAndMax": {
"message": "debe ser superior o igual a $1 e inferior o igual a $2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "Bloquear Explorer" "message": "Bloquear Explorer"
}, },
@ -249,9 +233,6 @@
"connect": { "connect": {
"message": "Conectar" "message": "Conectar"
}, },
"connectRequest": {
"message": "Solicitud de conexión"
},
"connectingTo": { "connectingTo": {
"message": "Conexión con $1" "message": "Conexión con $1"
}, },
@ -291,9 +272,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Copiado" "message": "Copiado"
}, },
"copy": {
"message": "Copiar"
},
"copyAddress": { "copyAddress": {
"message": "Copiar la dirección al portapapeles" "message": "Copiar la dirección al portapapeles"
}, },
@ -372,9 +350,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Si ya tienes algunos Ethers, la forma más rápida de ingresarlos en tu nueva billetera es a través de un depósito directo." "message": "Si ya tienes algunos Ethers, la forma más rápida de ingresarlos en tu nueva billetera es a través de un depósito directo."
}, },
"dismiss": {
"message": "Rechazar"
},
"done": { "done": {
"message": "Listo" "message": "Listo"
}, },
@ -537,10 +512,6 @@
"getStarted": { "getStarted": {
"message": "Comenzar" "message": "Comenzar"
}, },
"greaterThanMin": {
"message": "debe ser superior o igual a $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Estamos encantados de verte." "message": "Estamos encantados de verte."
}, },
@ -656,10 +627,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Necesitas utilizar tu cuenta anterior para agregar una nueva." "message": "Necesitas utilizar tu cuenta anterior para agregar una nueva."
}, },
"lessThanMax": {
"message": "debe ser menor o igual a $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "¡Eso, pongámonos en marcha!" "message": "¡Eso, pongámonos en marcha!"
}, },
@ -855,9 +822,6 @@
"message": "Copia y pega tu cadena de claves privada aquí:", "message": "Copia y pega tu cadena de claves privada aquí:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "¡Copia y pega tu frase de inicialización aquí!"
},
"pending": { "pending": {
"message": "pendiente" "message": "pendiente"
}, },
@ -1171,9 +1135,6 @@
"storePhrase": { "storePhrase": {
"message": "Almacena esta frase en un administrador de contraseñas como 1Password." "message": "Almacena esta frase en un administrador de contraseñas como 1Password."
}, },
"submit": {
"message": "Enviar"
},
"submitted": { "submitted": {
"message": "Enviado" "message": "Enviado"
}, },
@ -1335,9 +1296,6 @@
"userName": { "userName": {
"message": "Nombre de usuario" "message": "Nombre de usuario"
}, },
"validFileImport": {
"message": "Selecciona un archivo válido para importar."
},
"viewAccount": { "viewAccount": {
"message": "Ver cuenta" "message": "Ver cuenta"
}, },

@ -1,33 +1,21 @@
{ {
"privacyModeDefault": {
"message": "Privaatsusrežiim on nüüd vaikimisi lubatud"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Tabel on saadaval vaid Ethereumi võrkudes." "message": "Tabel on saadaval vaid Ethereumi võrkudes."
}, },
"confirmClear": {
"message": "Kas soovite kindlasti kinnitatud veebisaidid kustutada?"
},
"contractInteraction": { "contractInteraction": {
"message": "Lepingu suhtlus" "message": "Lepingu suhtlus"
}, },
"clearApprovalData": {
"message": "Tühjenda privaatsusandmed"
},
"reject": { "reject": {
"message": "Lükka tagasi" "message": "Lükka tagasi"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 soovib teie kontoga ühenduse luua" "message": "$1 soovib teie kontoga ühenduse luua"
}, },
"providerRequestInfo": {
"message": "See sait taotleb juurdepääsu teie praeguse konto aadressi vaatamiseks. Veenduge alati, et usaldate saite, millega suhtlete."
},
"about": { "about": {
"message": "Teave" "message": "Teave"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Versioon, tugikeskus ja kontaktteave." "message": "Versioon, tugikeskus ja kontaktteave"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Tehingu kiirendamine kõrgemate gaasihindadega suurendab võimalust kiiremaks võrgus töötlemiseks, kuid see ei ole alati tagatud." "message": "* Tehingu kiirendamine kõrgemate gaasihindadega suurendab võimalust kiiremaks võrgus töötlemiseks, kuid see ei ole alati tagatud."
@ -63,7 +51,7 @@
"message": "Täpsemad" "message": "Täpsemad"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Juurdepääs arendaja funktsioonidele, olekulogide allalaadimine, konto lähtestamine, testvõrkude ja kohandatud RPC-de seadistamine." "message": "Juurdepääs arendaja funktsioonidele, olekulogide allalaadimine, konto lähtestamine, testvõrkude ja kohandatud RPC-de seadistamine"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Täpsemad suvandid" "message": "Täpsemad suvandid"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "Põhiseaded" "message": "Põhiseaded"
}, },
"betweenMinAndMax": {
"message": "peab olema suurem või võrdne $1 ja väiksem või võrdne $2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "Blokeeri Explorer" "message": "Blokeeri Explorer"
}, },
@ -252,9 +236,6 @@
"connect": { "connect": {
"message": "Ühendamine" "message": "Ühendamine"
}, },
"connectRequest": {
"message": "Ühenduse taotlus"
},
"connectingTo": { "connectingTo": {
"message": "Ühenduse loomine $1" "message": "Ühenduse loomine $1"
}, },
@ -294,9 +275,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Kopeeritud!" "message": "Kopeeritud!"
}, },
"copy": {
"message": "Kopeeri"
},
"copyAddress": { "copyAddress": {
"message": "Kopeeri aadress lõikelauale" "message": "Kopeeri aadress lõikelauale"
}, },
@ -375,9 +353,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Kui teil on juba veidi eetrit, on kiirem viis eetri rahakotti saamiseks otsene sissemakse." "message": "Kui teil on juba veidi eetrit, on kiirem viis eetri rahakotti saamiseks otsene sissemakse."
}, },
"dismiss": {
"message": "Loobu"
},
"done": { "done": {
"message": "Valmis" "message": "Valmis"
}, },
@ -427,7 +402,7 @@
"message": "Kui teil on küsimusi või näete midagi kahtlast, kirjutage meile support@metamask.io." "message": "Kui teil on küsimusi või näete midagi kahtlast, kirjutage meile support@metamask.io."
}, },
"endOfFlowMessage8": { "endOfFlowMessage8": {
"message": "Metamask ei saa teie seemnefraasi taastada. Lisateave." "message": "MetaMask ei saa teie seemnefraasi taastada. Lisateave."
}, },
"endOfFlowMessage9": { "endOfFlowMessage9": {
"message": "Lisateave." "message": "Lisateave."
@ -539,10 +514,6 @@
"getStarted": { "getStarted": {
"message": "Alustamine" "message": "Alustamine"
}, },
"greaterThanMin": {
"message": "peab olema $1või suurem.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Meil on hea meel teid näha." "message": "Meil on hea meel teid näha."
}, },
@ -658,10 +629,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Enne uue konto loomist peate kasutama eelmist kontot." "message": "Enne uue konto loomist peate kasutama eelmist kontot."
}, },
"lessThanMax": {
"message": "peab olema $1või väiksem.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Jah, hakkame pihta!" "message": "Jah, hakkame pihta!"
}, },
@ -860,9 +827,6 @@
"message": "Kleepige oma privaatne võtmestring siia:", "message": "Kleepige oma privaatne võtmestring siia:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Kleepige oma seemnefraas siia!"
},
"pending": { "pending": {
"message": "ootel" "message": "ootel"
}, },
@ -1176,9 +1140,6 @@
"storePhrase": { "storePhrase": {
"message": "Salvestage see fraas paroolihaldurisse, nagu 1Password." "message": "Salvestage see fraas paroolihaldurisse, nagu 1Password."
}, },
"submit": {
"message": "Esita"
},
"submitted": { "submitted": {
"message": "Edastatud" "message": "Edastatud"
}, },
@ -1201,7 +1162,7 @@
"message": "Saate sünkroonida oma kontod ja teabe oma mobiiliseadmega. Avage MetaMaski mobiilirakendus, avage \"Settings\" (Seaded) ja puudutage valikut \"Sync from Browser Extension\" (Sünkroonimine lehitseja laiendusest)" "message": "Saate sünkroonida oma kontod ja teabe oma mobiiliseadmega. Avage MetaMaski mobiilirakendus, avage \"Settings\" (Seaded) ja puudutage valikut \"Sync from Browser Extension\" (Sünkroonimine lehitseja laiendusest)"
}, },
"syncWithMobileDescNewUsers": { "syncWithMobileDescNewUsers": {
"message": "Järgige Metamaski mobiilirakenduse esmakordsel avamisel telefonis esitatud samme." "message": "Järgige MetaMaski mobiilirakenduse esmakordsel avamisel telefonis esitatud samme."
}, },
"syncWithMobileScanThisCode": { "syncWithMobileScanThisCode": {
"message": "Skanneerige see kood MetaMaski mobiilirakendusega" "message": "Skanneerige see kood MetaMaski mobiilirakendusega"
@ -1346,9 +1307,6 @@
"userName": { "userName": {
"message": "Kasutajanimi" "message": "Kasutajanimi"
}, },
"validFileImport": {
"message": "Peate valima importimiseks sobiva faili."
},
"viewAccount": { "viewAccount": {
"message": "Kuva konto" "message": "Kuva konto"
}, },

@ -1,28 +1,16 @@
{ {
"privacyModeDefault": {
"message": "وضعیت محرمیت حالا بصورت خودکار فعال است"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "تنها قابل دسترس را در شبکه های ایتریوم جدول بندی نمایید" "message": "تنها قابل دسترس را در شبکه های ایتریوم جدول بندی نمایید"
}, },
"confirmClear": {
"message": "آیا مطمئن هستید تا وب سایت های تصدیق شده را حذف کنید؟"
},
"contractInteraction": { "contractInteraction": {
"message": "تعامل قرارداد" "message": "تعامل قرارداد"
}, },
"clearApprovalData": {
"message": "حذف اطلاعات حریم خصوصی"
},
"reject": { "reject": {
"message": "عدم پذیرش" "message": "عدم پذیرش"
}, },
"providerRequest": { "likeToConnect": {
"message": "1$1 میخواهید تا با حساب تان وصل شوید" "message": "1$1 میخواهید تا با حساب تان وصل شوید"
}, },
"providerRequestInfo": {
"message": "این سایت در حال درخواست دسترسی است تا آدرس فعلی حساب تان را مشاهده نماید. همیشه متوجه باشید که بالای سایتی که با آن معامله میکنید، اعتماد دارید یا خیر."
},
"about": { "about": {
"message": "درباره" "message": "درباره"
}, },
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "پایه" "message": "پایه"
}, },
"betweenMinAndMax": {
"message": "باید بزرگتر از یا مساوی به 1$1 و کوچکتر یا مساوی به 2$2 باشد.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "بلاک کردن براوزر" "message": "بلاک کردن براوزر"
}, },
@ -252,9 +236,6 @@
"connect": { "connect": {
"message": "اتصال" "message": "اتصال"
}, },
"connectRequest": {
"message": "درخواست اتصال"
},
"connectingTo": { "connectingTo": {
"message": "در حال اتصال به 1$1" "message": "در حال اتصال به 1$1"
}, },
@ -294,9 +275,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "کپی شد!" "message": "کپی شد!"
}, },
"copy": {
"message": "کپی"
},
"copyAddress": { "copyAddress": {
"message": "کاپی آدرس به کلیپ بورد" "message": "کاپی آدرس به کلیپ بورد"
}, },
@ -375,9 +353,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "در صورتیکه شما کدام ایتر داشته باشید، سریعترین روش برای گرفتن ایتر در کیف جدید تان توسط پرداخت مستقیم." "message": "در صورتیکه شما کدام ایتر داشته باشید، سریعترین روش برای گرفتن ایتر در کیف جدید تان توسط پرداخت مستقیم."
}, },
"dismiss": {
"message": "لغو کردن"
},
"done": { "done": {
"message": "تمام" "message": "تمام"
}, },
@ -543,10 +518,6 @@
"getStarted": { "getStarted": {
"message": "شروع به کار" "message": "شروع به کار"
}, },
"greaterThanMin": {
"message": "باید بزرگتر از یا مساوی به 1$1 باشد.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "از دیدن شما خوشحال هستیم." "message": "از دیدن شما خوشحال هستیم."
}, },
@ -665,10 +636,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "لازم است تا حساب قبلی تان را قبل از اینکه جدید اضافه کنید، مورد استفاده قرار دهید." "message": "لازم است تا حساب قبلی تان را قبل از اینکه جدید اضافه کنید، مورد استفاده قرار دهید."
}, },
"lessThanMax": {
"message": "باید کوچکتر از 1$1 یا مساوی با آن باشد.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "بلی، درست شد!" "message": "بلی، درست شد!"
}, },
@ -870,9 +837,6 @@
"message": "زنجیره کلید شخصی را در اینجا کاپی کنید:", "message": "زنجیره کلید شخصی را در اینجا کاپی کنید:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "عبارت بازیاب تان را اینجا بگذارید!"
},
"pending": { "pending": {
"message": "در حال تعلیق" "message": "در حال تعلیق"
}, },
@ -1186,9 +1150,6 @@
"storePhrase": { "storePhrase": {
"message": "این عبارت را در یک نرم افزار مدیریت رمز عبور مانند 1Password ذخیره نمایید." "message": "این عبارت را در یک نرم افزار مدیریت رمز عبور مانند 1Password ذخیره نمایید."
}, },
"submit": {
"message": "ارائه"
},
"submitted": { "submitted": {
"message": "ارائه شد" "message": "ارائه شد"
}, },
@ -1356,9 +1317,6 @@
"userName": { "userName": {
"message": "نام کاربری" "message": "نام کاربری"
}, },
"validFileImport": {
"message": "شما باید یک فایل معتبر را جهت وارد سازی انتخاب کنید."
},
"viewAccount": { "viewAccount": {
"message": "مشاهده حساب" "message": "مشاهده حساب"
}, },

@ -1,33 +1,21 @@
{ {
"privacyModeDefault": {
"message": "Yksityisyystila on nyt oletusarvoisesti käytössä"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Kaavio saatavilla vain Ethereum-verkoissa." "message": "Kaavio saatavilla vain Ethereum-verkoissa."
}, },
"confirmClear": {
"message": "Haluatko varmasti tyhjentää hyväksytyt verkkosivustot?"
},
"contractInteraction": { "contractInteraction": {
"message": "Sopimustoiminta" "message": "Sopimustoiminta"
}, },
"clearApprovalData": {
"message": "Tyhjennä yksityisyystiedot"
},
"reject": { "reject": {
"message": "Hylkää" "message": "Hylkää"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 haluaisi yhdistää tiliisi" "message": "$1 haluaisi yhdistää tiliisi"
}, },
"providerRequestInfo": {
"message": "Tämä sivusto pyytää oikeuksia nähdä nykyisen tiliosoitteesi. Varmista aina, että luotat sivustoihin, joiden kanssa toimit."
},
"about": { "about": {
"message": "Tietoja asetuksista" "message": "Tietoja asetuksista"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Versio, tukikeskus ja yhteystiedot." "message": "Versio, tukikeskus ja yhteystiedot"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Tapahtuman nopeuttaminen käyttämällä korkeampaa gas-hintaa parantaa mahdollisuutta, että verkko käsittelee sen nopeammin, mutta tämä ei ole aina taattua." "message": "* Tapahtuman nopeuttaminen käyttämällä korkeampaa gas-hintaa parantaa mahdollisuutta, että verkko käsittelee sen nopeammin, mutta tämä ei ole aina taattua."
@ -63,7 +51,7 @@
"message": "Lisäasetukset" "message": "Lisäasetukset"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Käytä kehittäjän ominaisuuksia, lataa tilalokeja, palauta tilit, asenna testiverkostoja ja muokattavia RPC:itä." "message": "Käytä kehittäjän ominaisuuksia, lataa tilalokeja, palauta tilit, asenna testiverkostoja ja muokattavia RPC:itä"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Tarkemmat vaihtoehdot" "message": "Tarkemmat vaihtoehdot"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "Perusvaihtoehdot" "message": "Perusvaihtoehdot"
}, },
"betweenMinAndMax": {
"message": "tulee olla vähintään $1 ja korkeintaan $2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "Lohkonhallinta" "message": "Lohkonhallinta"
}, },
@ -249,9 +233,6 @@
"connect": { "connect": {
"message": "Muodosta yhteys" "message": "Muodosta yhteys"
}, },
"connectRequest": {
"message": "Yhdistämispyyntö"
},
"connectingTo": { "connectingTo": {
"message": "Yhdistetään summaan $1 " "message": "Yhdistetään summaan $1 "
}, },
@ -291,9 +272,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Kopioitu" "message": "Kopioitu"
}, },
"copy": {
"message": "Kopioi"
},
"copyAddress": { "copyAddress": {
"message": "Kopioi osoite leikepöydälle" "message": "Kopioi osoite leikepöydälle"
}, },
@ -372,9 +350,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Jos sinulla on jo etheriä, nopein tapa hankkia etheriä uuteen lompakkoosi on suoratalletus." "message": "Jos sinulla on jo etheriä, nopein tapa hankkia etheriä uuteen lompakkoosi on suoratalletus."
}, },
"dismiss": {
"message": "Piilota"
},
"done": { "done": {
"message": "Valmis" "message": "Valmis"
}, },
@ -540,10 +515,6 @@
"getStarted": { "getStarted": {
"message": "Aloitusopas" "message": "Aloitusopas"
}, },
"greaterThanMin": {
"message": "on oltava vähintään $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Meistä on mukava nähdä sinut." "message": "Meistä on mukava nähdä sinut."
}, },
@ -662,10 +633,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Sinun tarvitsee käyttää edellistä tiliäsi ennen kuin voit lisätä uuden." "message": "Sinun tarvitsee käyttää edellistä tiliäsi ennen kuin voit lisätä uuden."
}, },
"lessThanMax": {
"message": "tulee olla korkeintaan $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Kyllä, valmistaudutaan!" "message": "Kyllä, valmistaudutaan!"
}, },
@ -867,9 +834,6 @@
"message": "Liitä yksityisen avaimesi merkkijono tähän:", "message": "Liitä yksityisen avaimesi merkkijono tähän:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Liitä salaustekstisi tähän!"
},
"pending": { "pending": {
"message": "odottaa" "message": "odottaa"
}, },
@ -1183,9 +1147,6 @@
"storePhrase": { "storePhrase": {
"message": "Tallenna tämä teksti johonkin salasanojen hallintaohjelmaan (esim. 1Password)." "message": "Tallenna tämä teksti johonkin salasanojen hallintaohjelmaan (esim. 1Password)."
}, },
"submit": {
"message": "Lähetä"
},
"submitted": { "submitted": {
"message": "Lähetetty" "message": "Lähetetty"
}, },
@ -1353,9 +1314,6 @@
"userName": { "userName": {
"message": "Käyttäjätunnus" "message": "Käyttäjätunnus"
}, },
"validFileImport": {
"message": "Valittava tuotavaksi kelpaava tiedosto."
},
"viewAccount": { "viewAccount": {
"message": "Näytä tili" "message": "Näytä tili"
}, },

@ -1,33 +1,21 @@
{ {
"privacyModeDefault": {
"message": "Naka-enable ang Privacy Mode bilang default"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Available lang ang chart sa mga Ethereum network." "message": "Available lang ang chart sa mga Ethereum network."
}, },
"confirmClear": {
"message": "Sigurado ka bang gusto mong i-clear ang mga inaprubahang website?"
},
"contractInteraction": { "contractInteraction": {
"message": "Paggamit sa Contract" "message": "Paggamit sa Contract"
}, },
"clearApprovalData": {
"message": "I-clear ang Privacy Data"
},
"reject": { "reject": {
"message": "Tanggihan" "message": "Tanggihan"
}, },
"providerRequest": { "likeToConnect": {
"message": "Gusto ng $1 na kumonekta sa iyong account" "message": "Gusto ng $1 na kumonekta sa iyong account"
}, },
"providerRequestInfo": {
"message": "Humihiling ng access ang site na ito na tingnan ang kasalukuyan mong account address. Palaging tiyaking pinagkakatiwalaan mo ang mga site na pinupuntahan mo."
},
"about": { "about": {
"message": "Tungkol sa" "message": "Tungkol sa"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Bersyon, support center, at impormasyon sa pakikipag-ugnayan." "message": "Bersyon, support center, at impormasyon sa pakikipag-ugnayan"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Ang pagpapabilis sa isang transaksyon sa pamamagitan ng paggamit ng mas mataas na presyo ng gas ay makakadagdag sa tsansa nitong maproseso ng network nang mas mabilis, pero hindi ito palaging garantisado." "message": "* Ang pagpapabilis sa isang transaksyon sa pamamagitan ng paggamit ng mas mataas na presyo ng gas ay makakadagdag sa tsansa nitong maproseso ng network nang mas mabilis, pero hindi ito palaging garantisado."
@ -57,7 +45,7 @@
"message": "Magdagdag ng Recipient" "message": "Magdagdag ng Recipient"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "I-access ang mga feature para sa mga developer, mag-download ng mga State Log, I-reset ang Account, mag-set up ng mga testnet at custom RPC." "message": "I-access ang mga feature para sa mga developer, mag-download ng mga State Log, I-reset ang Account, mag-set up ng mga testnet at custom RPC"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Mga Advanced na Opsyon" "message": "Mga Advanced na Opsyon"
@ -145,10 +133,6 @@
"basic": { "basic": {
"message": "Pangunahin" "message": "Pangunahin"
}, },
"betweenMinAndMax": {
"message": "dapat ay mas malaki sa o katumbas ng $1 at mas maliit sa o katumbas ng $2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerView": { "blockExplorerView": {
"message": "Tingnan ang account sa $1", "message": "Tingnan ang account sa $1",
"description": "$1 replaced by URL for custom block explorer" "description": "$1 replaced by URL for custom block explorer"
@ -342,9 +326,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Kung mayroon ka nang Ether, ang pinakamabilis na paraan para magkaroon ng Ether sa iyong bagong wallet ay sa pamamagitan ng direkang deposito." "message": "Kung mayroon ka nang Ether, ang pinakamabilis na paraan para magkaroon ng Ether sa iyong bagong wallet ay sa pamamagitan ng direkang deposito."
}, },
"dismiss": {
"message": "Balewalain"
},
"done": { "done": {
"message": "Tapos na" "message": "Tapos na"
}, },
@ -503,10 +484,6 @@
"getStarted": { "getStarted": {
"message": "Magsimula" "message": "Magsimula"
}, },
"greaterThanMin": {
"message": "dapat ay mas malaki sa o katumbas ng $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Masaya kaming makita ka." "message": "Masaya kaming makita ka."
}, },
@ -606,10 +583,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Kailangan mong gamitin ang iyong dating account bago ka makapagdagdag ng bago." "message": "Kailangan mong gamitin ang iyong dating account bago ka makapagdagdag ng bago."
}, },
"lessThanMax": {
"message": "dapat ay mas mababa sa o katumbas ng $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Oo, i-set up natin ito!" "message": "Oo, i-set up natin ito!"
}, },
@ -792,9 +765,6 @@
"message": "I-paste ang iyong private key string dito:", "message": "I-paste ang iyong private key string dito:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "I-paste ang iyong seed phrase dito!"
},
"pending": { "pending": {
"message": "nakabinbin" "message": "nakabinbin"
}, },
@ -1083,9 +1053,6 @@
"storePhrase": { "storePhrase": {
"message": "I-store ang pariralang ito sa isang password manager tulad ng 1Password." "message": "I-store ang pariralang ito sa isang password manager tulad ng 1Password."
}, },
"submit": {
"message": "Isumite"
},
"submitted": { "submitted": {
"message": "Isinumite" "message": "Isinumite"
}, },
@ -1241,9 +1208,6 @@
"usedByClients": { "usedByClients": {
"message": "Ginagamit ng iba't ibang client" "message": "Ginagamit ng iba't ibang client"
}, },
"validFileImport": {
"message": "Dapat kang pumili ng valid na file na ii-import."
},
"viewAccount": { "viewAccount": {
"message": "Tingnan ang Account" "message": "Tingnan ang Account"
}, },

@ -1,33 +1,21 @@
{ {
"privacyModeDefault": {
"message": "Le mode conversation privée est maintenant activé par défaut"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Tableau disponible uniquement sur les réseaux Ethereum." "message": "Tableau disponible uniquement sur les réseaux Ethereum."
}, },
"confirmClear": {
"message": "Êtes-vous sûr de vouloir supprimer les sites Web approuvés?"
},
"contractInteraction": { "contractInteraction": {
"message": "Interaction avec un contrat" "message": "Interaction avec un contrat"
}, },
"clearApprovalData": {
"message": "Effacer les données d'approbation"
},
"reject": { "reject": {
"message": "Rejeter" "message": "Rejeter"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 voudrait se connecter à votre compte" "message": "$1 voudrait se connecter à votre compte"
}, },
"providerRequestInfo": {
"message": "Le domaine répertorié ci-dessous tente de demander l'accès à l'API Ethereum pour pouvoir interagir avec la chaîne de blocs Ethereum. Vérifiez toujours que vous êtes sur le bon site avant d'autoriser l'accès à Ethereum."
},
"about": { "about": {
"message": "À propos" "message": "À propos"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Version, centre d'assistance et coordonnées." "message": "Version, centre d'assistance et coordonnées"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Accélérer une transaction en utilisant un prix de l'essence plus élevé augmente ses chances d'être traitée plus rapidement par le réseau, mais ce n'est pas toujours garanti." "message": "* Accélérer une transaction en utilisant un prix de l'essence plus élevé augmente ses chances d'être traitée plus rapidement par le réseau, mais ce n'est pas toujours garanti."
@ -63,7 +51,7 @@
"message": "Paramètres avancés" "message": "Paramètres avancés"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Accédez aux fonctionnalités pour les développeurs, téléchargez State Logs, réinitialisez votre compte, configurez testnets et personnalisez RPC." "message": "Accédez aux fonctionnalités pour les développeurs, téléchargez State Logs, réinitialisez votre compte, configurez testnets et personnalisez RPC"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Options avancées" "message": "Options avancées"
@ -154,10 +142,6 @@
"basic": { "basic": {
"message": "Général" "message": "Général"
}, },
"betweenMinAndMax": {
"message": "doit être supérieur ou égal à $1 et inférieur ou égal à $2",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerView": { "blockExplorerView": {
"message": "Afficher le compte à $1", "message": "Afficher le compte à $1",
"description": "$1 replaced by URL for custom block explorer" "description": "$1 replaced by URL for custom block explorer"
@ -240,9 +224,6 @@
"connect": { "connect": {
"message": "Connecter" "message": "Connecter"
}, },
"connectRequest": {
"message": "Demande de connexion"
},
"connectingTo": { "connectingTo": {
"message": "Connexion à $1" "message": "Connexion à $1"
}, },
@ -282,9 +263,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Copié!" "message": "Copié!"
}, },
"copy": {
"message": "Copier"
},
"copyAddress": { "copyAddress": {
"message": "Copier l'addresse dans le presse-papier" "message": "Copier l'addresse dans le presse-papier"
}, },
@ -363,9 +341,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Si vous avez déjà de l'Ether, le moyen le plus rapide d'obtenir des Ether dans votre nouveau portefeuille est par dépôt direct." "message": "Si vous avez déjà de l'Ether, le moyen le plus rapide d'obtenir des Ether dans votre nouveau portefeuille est par dépôt direct."
}, },
"dismiss": {
"message": "Ignorer"
},
"done": { "done": {
"message": "Terminé" "message": "Terminé"
}, },
@ -531,10 +506,6 @@
"getStarted": { "getStarted": {
"message": "Démarrer" "message": "Démarrer"
}, },
"greaterThanMin": {
"message": "doit être supérieur ou égal à $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Nous sommes ravis de vous voir." "message": "Nous sommes ravis de vous voir."
}, },
@ -641,10 +612,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Vous devez d'abord utiliser le dernier compte que vous avez créé avant de pouvoir en créer un autre." "message": "Vous devez d'abord utiliser le dernier compte que vous avez créé avant de pouvoir en créer un autre."
}, },
"lessThanMax": {
"message": "doit être inférieur ou égal à $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Oui, passons à la configuration !" "message": "Oui, passons à la configuration !"
}, },
@ -837,9 +804,6 @@
"message": "Collez votre clé privée ici:", "message": "Collez votre clé privée ici:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Collez votre seed phrase ici!"
},
"pending": { "pending": {
"message": "En attente" "message": "En attente"
}, },
@ -1153,9 +1117,6 @@
"storePhrase": { "storePhrase": {
"message": "Stockez cette phrase dans un gestionnaire de mots de passe comme 1Password." "message": "Stockez cette phrase dans un gestionnaire de mots de passe comme 1Password."
}, },
"submit": {
"message": "Soumettre"
},
"submitted": { "submitted": {
"message": "Envoyé" "message": "Envoyé"
}, },
@ -1317,9 +1278,6 @@
"userName": { "userName": {
"message": "Nom d'utilisateur" "message": "Nom d'utilisateur"
}, },
"validFileImport": {
"message": "Vous devez selectionner un fichier valide à importer."
},
"viewAccount": { "viewAccount": {
"message": "Afficher le compte" "message": "Afficher le compte"
}, },

@ -42,9 +42,6 @@
"connect": { "connect": {
"message": "કનટ કર" "message": "કનટ કર"
}, },
"copy": {
"message": "કિ કર"
},
"copyToClipboard": { "copyToClipboard": {
"message": "કિપબડ પર કિ કર" "message": "કિપબડ પર કિ કર"
}, },
@ -57,9 +54,6 @@
"details": { "details": {
"message": "વિગત" "message": "વિગત"
}, },
"dismiss": {
"message": "ક"
},
"done": { "done": {
"message": "થઈ ગય" "message": "થઈ ગય"
}, },
@ -131,9 +125,6 @@
"settings": { "settings": {
"message": "સિસ" "message": "સિસ"
}, },
"submit": {
"message": "સબમિટ કર"
},
"tryAgain": { "tryAgain": {
"message": "ફરરયસ કર" "message": "ફરરયસ કર"
}, },

@ -1,28 +1,16 @@
{ {
"privacyModeDefault": {
"message": "מצב פרטיות זמין עכשיו כברירת מחדל"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "טבלה זמינה רק ברשתות אתריום." "message": "טבלה זמינה רק ברשתות אתריום."
}, },
"confirmClear": {
"message": "הנך בטוח/ה כי ברצונך למחוק אתרים שאושרו?"
},
"contractInteraction": { "contractInteraction": {
"message": "אינטראקציית חוזה" "message": "אינטראקציית חוזה"
}, },
"clearApprovalData": {
"message": "נקה נתוני פרטיות"
},
"reject": { "reject": {
"message": "דחה" "message": "דחה"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 מבקש להתחבר לחשבון שלך" "message": "$1 מבקש להתחבר לחשבון שלך"
}, },
"providerRequestInfo": {
"message": "אתר זה מבקש גישה לצפייה בכתובת החשבון הנוכחית שלך. יש לוודא תמיד כי הנך בוטח/ת באתרים עמם הנך מתקשר/ת."
},
"about": { "about": {
"message": "מידע כללי" "message": "מידע כללי"
}, },
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "בסיסי" "message": "בסיסי"
}, },
"betweenMinAndMax": {
"message": "חייב להיות גדול או שווה ל-$1 ופחות או שווה ל-$2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "סייר בלוקים" "message": "סייר בלוקים"
}, },
@ -252,9 +236,6 @@
"connect": { "connect": {
"message": "התחברות" "message": "התחברות"
}, },
"connectRequest": {
"message": "חבר/י בקשה"
},
"connectingTo": { "connectingTo": {
"message": "מתחבר ל- $1 " "message": "מתחבר ל- $1 "
}, },
@ -294,9 +275,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "הועתק!" "message": "הועתק!"
}, },
"copy": {
"message": "העתק"
},
"copyAddress": { "copyAddress": {
"message": "העתק כתובת ללוח" "message": "העתק כתובת ללוח"
}, },
@ -375,9 +353,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "אם כבר יש ברשותך את'ר (Ether) , הדרך המהירה ביותר להכניס את'ר לארנק החדש שלך היא באמצעות הפקדה ישירה." "message": "אם כבר יש ברשותך את'ר (Ether) , הדרך המהירה ביותר להכניס את'ר לארנק החדש שלך היא באמצעות הפקדה ישירה."
}, },
"dismiss": {
"message": "סגור"
},
"done": { "done": {
"message": "סיום" "message": "סיום"
}, },
@ -543,10 +518,6 @@
"getStarted": { "getStarted": {
"message": "תחילת העבודה" "message": "תחילת העבודה"
}, },
"greaterThanMin": {
"message": "חייב להיות גדול או שווה ל-$1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "אנו שמחים לראותך." "message": "אנו שמחים לראותך."
}, },
@ -665,10 +636,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "עליך להשתמש בחשבון האחרון שלך לפני שתוכל/י להוסיף חשבון חדש." "message": "עליך להשתמש בחשבון האחרון שלך לפני שתוכל/י להוסיף חשבון חדש."
}, },
"lessThanMax": {
"message": "חייב להיות פחות או שווה ל- $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "כן, בוא נתקין!" "message": "כן, בוא נתקין!"
}, },
@ -867,9 +834,6 @@
"message": "הדבק/י את מחרוזת המפתח הפרטי שלך כאן:", "message": "הדבק/י את מחרוזת המפתח הפרטי שלך כאן:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "הדבק/י את ה-seed phrase של כאן!"
},
"pending": { "pending": {
"message": "בהמתנה" "message": "בהמתנה"
}, },
@ -1180,9 +1144,6 @@
"storePhrase": { "storePhrase": {
"message": "אחסנ/י צירוף זה במנהל ססמאות כמו 1Password." "message": "אחסנ/י צירוף זה במנהל ססמאות כמו 1Password."
}, },
"submit": {
"message": "שלח"
},
"submitted": { "submitted": {
"message": "הוגש" "message": "הוגש"
}, },
@ -1350,9 +1311,6 @@
"userName": { "userName": {
"message": "שם משתמש" "message": "שם משתמש"
}, },
"validFileImport": {
"message": "עליך לבחור קובץ חוקי לייבוא."
},
"viewAccount": { "viewAccount": {
"message": "הצג חשבון" "message": "הצג חשבון"
}, },

@ -1,28 +1,16 @@
{ {
"privacyModeDefault": {
"message": "गपनय मड अब डिट रप स सकषम ह"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "कवल ईथरअम नटवरक पर उपलबध चट।" "message": "कवल ईथरअम नटवरक पर उपलबध चट।"
}, },
"confirmClear": {
"message": "क आप वकई सत वबसइटियर करनहत?"
},
"contractInteraction": { "contractInteraction": {
"message": "कट कतचत" "message": "कट कतचत"
}, },
"clearApprovalData": {
"message": "गपनयतित कर"
},
"reject": { "reject": {
"message": "असर कर" "message": "असर कर"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 आपक कनट हहत" "message": "$1 आपक कनट हहत"
}, },
"providerRequestInfo": {
"message": "यह सइट आपक वरतमन ख पतखनिए एकस क अनध कर रह। हमिित करि आप जिन सइट पर जिवसनय ह।"
},
"about": { "about": {
"message": "इसक" "message": "इसक"
}, },
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "मलभत" "message": "मलभत"
}, },
"betweenMinAndMax": {
"message": "$1 स अधिक य बरबर हिए और $2 क बरबर य उसस कम हिए।",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "एकसपरर कक कर" "message": "एकसपरर कक कर"
}, },
@ -252,9 +236,6 @@
"connect": { "connect": {
"message": "कनट कर" "message": "कनट कर"
}, },
"connectRequest": {
"message": "सपरक अनध"
},
"connectingTo": { "connectingTo": {
"message": "$1 स कनट ह रह" "message": "$1 स कनट ह रह"
}, },
@ -294,9 +275,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "क गई!" "message": "क गई!"
}, },
"copy": {
"message": "क बन"
},
"copyAddress": { "copyAddress": {
"message": "किपबड पर पत कर" "message": "किपबड पर पत कर"
}, },
@ -375,9 +353,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "यदि आपकस पहलछ Ether ह, त अपन नए वट म Ether प सबस तर जम करन।" "message": "यदि आपकस पहलछ Ether ह, त अपन नए वट म Ether प सबस तर जम करन।"
}, },
"dismiss": {
"message": "खिज कर"
},
"done": { "done": {
"message": "पण" "message": "पण"
}, },
@ -543,10 +518,6 @@
"getStarted": { "getStarted": {
"message": "आरभ कर" "message": "आरभ कर"
}, },
"greaterThanMin": {
"message": "$1 स बड़ उसक बरबर हिए।",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "आपकखकर हम बहत ख़ई।" "message": "आपकखकर हम बहत ख़ई।"
}, },
@ -665,10 +636,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "नय पहल आपक अपनिछल उपयग करन।" "message": "नय पहल आपक अपनिछल उपयग करन।"
}, },
"lessThanMax": {
"message": "$1 स कम य उसक बरबर हिए।",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "ज, सट ह!" "message": "ज, सट ह!"
}, },
@ -867,9 +834,6 @@
"message": "अपनििग यहट कर:", "message": "अपनििग यहट कर:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "अपनज वश यहट कर!"
},
"pending": { "pending": {
"message": "विित" "message": "विित"
}, },
@ -1180,9 +1144,6 @@
"storePhrase": { "storePhrase": {
"message": "इस वश क 1पसवरड जसवरड मजर मरहत कर।" "message": "इस वश क 1पसवरड जसवरड मजर मरहत कर।"
}, },
"submit": {
"message": "सबमिट कर"
},
"submitted": { "submitted": {
"message": "परसत कि गय" "message": "परसत कि गय"
}, },
@ -1350,9 +1311,6 @@
"userName": { "userName": {
"message": "उपयगकरम" "message": "उपयगकरम"
}, },
"validFileImport": {
"message": "आयत करनिए आपक एक मय फइल कनन।"
},
"viewAccount": { "viewAccount": {
"message": "ख" "message": "ख"
}, },

@ -1,19 +1,10 @@
{ {
"confirmClear": {
"message": "क आप वकई अनित वबसइट करनहत?"
},
"clearApprovalData": {
"message": "अनदन ड कर"
},
"approve": { "approve": {
"message": "मर" "message": "मर"
}, },
"reject": { "reject": {
"message": "असर" "message": "असर"
}, },
"providerRequestInfo": {
"message": "नबदध डन वब 3 एपआई तक पहच क अनध करनरयस कर रहि यह एथियम बकचन सतचत कर सक। वब 3 एकस क पहल हम सहच करि आप सहइट पर ह।"
},
"account": { "account": {
"message": "ख" "message": "ख"
}, },
@ -55,10 +46,6 @@
"balanceIsInsufficientGas": { "balanceIsInsufficientGas": {
"message": "वरतमन गस कल किए अपरत शष" "message": "वरतमन गस कल किए अपरत शष"
}, },
"betweenMinAndMax": {
"message": "$1 क बरबर ययद, $2 क बरबर य कम हिए।",
"description": "हस इनपट किए दशमलव इनपट कप म सहयक"
},
"blockiesIdenticon": { "blockiesIdenticon": {
"message": "बज पहचन क उपयग कर" "message": "बज पहचन क उपयग कर"
}, },
@ -95,9 +82,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "क कर दि गय!" "message": "क कर दि गय!"
}, },
"copy": {
"message": "क / परतििि कर"
},
"copyToClipboard": { "copyToClipboard": {
"message": "किपबड पर क कर" "message": "किपबड पर क कर"
}, },
@ -203,10 +187,6 @@
"message": "$1 किए एक नल स ईथर पत कर", "message": "$1 किए एक नल स ईथर पत कर",
"description": "ईथर नल किए नटवरक नम परदरित करत" "description": "ईथर नल किए नटवरक नम परदरित करत"
}, },
"greaterThanMin": {
"message": "$1 क बरबर य बरबर हिए।",
"description": "हस इनपट किए दशमलव इनपट कप म सहयक"
},
"here": { "here": {
"message": "यह", "message": "यह",
"description": "अधिक जनकिए यहिक कर- (परथ जकनबस) (troubleTokenBalances)" "description": "अधिक जनकिए यहिक कर- (परथ जकनबस) (troubleTokenBalances)"
@ -265,10 +245,6 @@
"kovan": { "kovan": {
"message": "कन टट नटवरक" "message": "कन टट नटवरक"
}, },
"lessThanMax": {
"message": "$1 स कम य बरबर हिए।",
"description": "हस इनपट किए दशमलव इनपट कप म सहयक"
},
"likeToAddTokens": { "likeToAddTokens": {
"message": "क आप इन टकनहत?" "message": "क आप इन टकनहत?"
}, },
@ -344,9 +320,6 @@
"message": "यह अपनििग चिपक:", "message": "यह अपनििग चिपक:",
"description": "कििि आयत करनिए" "description": "कििि आयत करनिए"
}, },
"pasteSeed": {
"message": "यह अपनज वश पट कर!"
},
"personalAddressDetected": { "personalAddressDetected": {
"message": "वयकिगत पति। टकन अनध क पत इनपट।" "message": "वयकिगत पति। टकन अनध क पत इनपट।"
}, },
@ -447,9 +420,6 @@
"stateLogsDescription": { "stateLogsDescription": {
"message": "सििश म आपकवजनिक ख, पत और भ गए लनदन, ह।" "message": "सििश म आपकवजनिक ख, पत और भ गए लनदन, ह।"
}, },
"submit": {
"message": "सबमिट कर"
},
"supportCenter": { "supportCenter": {
"message": "हम सहयतर पर ज" "message": "हम सहयतर पर ज"
}, },
@ -497,9 +467,6 @@
"usedByClients": { "usedByClients": {
"message": "वििन कस द उपयग कि" "message": "वििन कस द उपयग कि"
}, },
"validFileImport": {
"message": "आयत करनिए आपक एक वध फइल चनन।"
},
"viewAccount": { "viewAccount": {
"message": "ख" "message": "ख"
}, },

@ -1,19 +1,10 @@
{ {
"privacyModeDefault": {
"message": "Način se Privatnost sada zadano omogućava"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Grafikon je dostupan samo na mrežama Ethereum." "message": "Grafikon je dostupan samo na mrežama Ethereum."
}, },
"confirmClear": {
"message": "Sigurno želite očistiti odobrena mrežna mjesta?"
},
"contractInteraction": { "contractInteraction": {
"message": "Ugovorna interakcija" "message": "Ugovorna interakcija"
}, },
"clearApprovalData": {
"message": "Očisti podatke o privatnosti"
},
"appName": { "appName": {
"message": "MetaMask", "message": "MetaMask",
"description": "The name of the application" "description": "The name of the application"
@ -21,17 +12,14 @@
"reject": { "reject": {
"message": "Odbaci" "message": "Odbaci"
}, },
"providerRequest": { "likeToConnect": {
"message": "Korisnik $1 želi se povezati na vaš račun" "message": "Korisnik $1 želi se povezati na vaš račun"
}, },
"providerRequestInfo": {
"message": "Na ovom se mjestu zahtijeva pristup za pregledavanje vaše trenutačne adrese računa. Uvijek pazite da vjerujete mrežnim mjestima s kojima rukujete."
},
"about": { "about": {
"message": "O opcijama" "message": "O opcijama"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Inačica, centar za podršku i informacije za kontakt." "message": "Inačica, centar za podršku i informacije za kontakt"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Ubrzavanjem se transakcije pomoću veće cijene goriva povećava šansa za bržu obradu mrežom, ali se uvijek ne jamči." "message": "* Ubrzavanjem se transakcije pomoću veće cijene goriva povećava šansa za bržu obradu mrežom, ali se uvijek ne jamči."
@ -67,7 +55,7 @@
"message": "Napredno" "message": "Napredno"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Pristup značajkama razvojnog inženjera, preuzimanje zapisnika stanja, poništavanje računa, postavljanje testnih mreža i prilagođeni RPC." "message": "Pristup značajkama razvojnog inženjera, preuzimanje zapisnika stanja, poništavanje računa, postavljanje testnih mreža i prilagođeni RPC"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Napredne mogućnosti" "message": "Napredne mogućnosti"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "Osnovne" "message": "Osnovne"
}, },
"betweenMinAndMax": {
"message": "mora biti veće od $1 ili jednako te manje od $2 ili jednako.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "Blokiraj Explorer" "message": "Blokiraj Explorer"
}, },
@ -252,9 +236,6 @@
"connect": { "connect": {
"message": "Povežite se" "message": "Povežite se"
}, },
"connectRequest": {
"message": "Zahtjev za povezivanjem"
},
"connectingTo": { "connectingTo": {
"message": "Povezivanje na $1" "message": "Povezivanje na $1"
}, },
@ -294,9 +275,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Kopirano!" "message": "Kopirano!"
}, },
"copy": {
"message": "Kopiraj"
},
"copyAddress": { "copyAddress": {
"message": "Kopiraj adresu u međuspremnik" "message": "Kopiraj adresu u međuspremnik"
}, },
@ -375,9 +353,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Ako imate nešto Ethera, najbrži je način prebacivanja Ethera u vaš novi novčanik izravan polog." "message": "Ako imate nešto Ethera, najbrži je način prebacivanja Ethera u vaš novi novčanik izravan polog."
}, },
"dismiss": {
"message": "Odbaci"
},
"done": { "done": {
"message": "Gotovo" "message": "Gotovo"
}, },
@ -539,10 +514,6 @@
"getStarted": { "getStarted": {
"message": "Početak upotrebe" "message": "Početak upotrebe"
}, },
"greaterThanMin": {
"message": "mora biti veće od $1 ili jednako.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Sretni smo što ste tu." "message": "Sretni smo što ste tu."
}, },
@ -661,10 +632,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Treba se koristiti zadnjim računom kako biste dodali novi račun." "message": "Treba se koristiti zadnjim računom kako biste dodali novi račun."
}, },
"lessThanMax": {
"message": "mora biti manje od $1 ili jednako.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Da, obavimo postavljanje!" "message": "Da, obavimo postavljanje!"
}, },
@ -863,9 +830,6 @@
"message": "Ovdje zalijepite svoj privatni niz ključa:", "message": "Ovdje zalijepite svoj privatni niz ključa:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Ovdje zalijepite svoju početnu rečenicu!"
},
"pending": { "pending": {
"message": "na čekanju" "message": "na čekanju"
}, },
@ -1179,9 +1143,6 @@
"storePhrase": { "storePhrase": {
"message": "Spremite ovu rečenicu u upravitelj lozinkama poput aplikacije 1Password." "message": "Spremite ovu rečenicu u upravitelj lozinkama poput aplikacije 1Password."
}, },
"submit": {
"message": "Pošalji"
},
"submitted": { "submitted": {
"message": "Poslano" "message": "Poslano"
}, },
@ -1346,9 +1307,6 @@
"userName": { "userName": {
"message": "Korisničko ime" "message": "Korisničko ime"
}, },
"validFileImport": {
"message": "Morate odabrati valjanu datoteku za uvoz."
},
"viewAccount": { "viewAccount": {
"message": "Prikaz računa" "message": "Prikaz računa"
}, },

@ -1,13 +1,4 @@
{ {
"confirmClear": {
"message": "Èske ou sèten ou vle klè sitwèb apwouve?"
},
"clearApprovalData": {
"message": "Klè Done sou vi prive"
},
"providerRequestInfo": {
"message": "Domèn ki nan lis anba a ap mande pou jwenn aksè a blòkchou Ethereum ak pou wè kont ou ye kounye a. Toujou double tcheke ke ou sou sit ki kòrèk la anvan apwouve aksè."
},
"accessingYourCamera": { "accessingYourCamera": {
"message": "Aksè a Kamera" "message": "Aksè a Kamera"
}, },
@ -79,10 +70,6 @@
"balanceIsInsufficientGas": { "balanceIsInsufficientGas": {
"message": "Ensifizan balans pou total gaz aktyèl la" "message": "Ensifizan balans pou total gaz aktyèl la"
}, },
"betweenMinAndMax": {
"message": "dwe plis pase oswa egal a $ 1 mwens ke oswa egal a $ 2.",
"description": "helper for inputting hex as decimal input"
},
"blockiesIdenticon": { "blockiesIdenticon": {
"message": "Itilize Blockies Identicon" "message": "Itilize Blockies Identicon"
}, },
@ -161,9 +148,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Kopye!" "message": "Kopye!"
}, },
"copy": {
"message": "Kopye"
},
"copyAddress": { "copyAddress": {
"message": "Kopi adrès clipboard" "message": "Kopi adrès clipboard"
}, },
@ -305,10 +289,6 @@
"getHelp": { "getHelp": {
"message": "Jwenn èd." "message": "Jwenn èd."
}, },
"greaterThanMin": {
"message": "dwe pi gran pase oswa egal a $ 1.",
"description": "helper for inputting hex as decimal input"
},
"hardware": { "hardware": {
"message": "materyèl" "message": "materyèl"
}, },
@ -403,10 +383,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Ou bezwen sèvi ak dènye kont ou anvan ou ka ajoute yon nouvo." "message": "Ou bezwen sèvi ak dènye kont ou anvan ou ka ajoute yon nouvo."
}, },
"lessThanMax": {
"message": "dwe mwens pase oswa egal a $ 1.",
"description": "helper for inputting hex as decimal input"
},
"likeToAddTokens": { "likeToAddTokens": {
"message": "Èske ou ta renmen ajoute sa nan tokens?" "message": "Èske ou ta renmen ajoute sa nan tokens?"
}, },
@ -524,9 +500,6 @@
"message": "Kole fraz prive ou a la:", "message": "Kole fraz prive ou a la:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Kole seed fraz ou a la!"
},
"pending": { "pending": {
"message": "l ap mache" "message": "l ap mache"
}, },
@ -756,9 +729,6 @@
"step3HardwareWalletMsg": { "step3HardwareWalletMsg": {
"message": "Sèvi ak kont materyèl ou menm jan ou t ap fè pou kont Etherum. Ouvri sesyon an nan dApps, voye Eth, achte ak stòke ERC20 tokens ak e ki pake chanje tokens tankou CryptoKitties." "message": "Sèvi ak kont materyèl ou menm jan ou t ap fè pou kont Etherum. Ouvri sesyon an nan dApps, voye Eth, achte ak stòke ERC20 tokens ak e ki pake chanje tokens tankou CryptoKitties."
}, },
"submit": {
"message": "Soumèt"
},
"submitted": { "submitted": {
"message": "Te Soumèt" "message": "Te Soumèt"
}, },
@ -857,9 +827,6 @@
"usedByClients": { "usedByClients": {
"message": "Itilize pa yon varyete de kliyan diferan" "message": "Itilize pa yon varyete de kliyan diferan"
}, },
"validFileImport": {
"message": "Ou dwe chwazi yon dosye ki valab pou enpòte."
},
"viewAccount": { "viewAccount": {
"message": "Wè Kont" "message": "Wè Kont"
}, },

@ -1,19 +1,10 @@
{ {
"privacyModeDefault": {
"message": "Az adatvédelmi mód mostantól alapbeállításként engedélyezve van"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "A diagram csak Ethereum hálózatokon érhető el" "message": "A diagram csak Ethereum hálózatokon érhető el"
}, },
"confirmClear": {
"message": "Biztosan törölni szeretnéd a jóváhagyott weboldalakat?"
},
"contractInteraction": { "contractInteraction": {
"message": "Szerződéses interakció" "message": "Szerződéses interakció"
}, },
"clearApprovalData": {
"message": "Adatvédelmi adatok törlése"
},
"appName": { "appName": {
"message": "MetaMask", "message": "MetaMask",
"description": "The name of the application" "description": "The name of the application"
@ -21,17 +12,14 @@
"reject": { "reject": {
"message": "Elutasítás" "message": "Elutasítás"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 szeretne kapcsolódni az ön fiókjához" "message": "$1 szeretne kapcsolódni az ön fiókjához"
}, },
"providerRequestInfo": {
"message": "A webhely hozzáférést kér az ön jelenlegi fiókcímének megtekintéséhez. Mindig győződjön meg arról, hogy megbízható webhellyel létesít kapcsolatot."
},
"about": { "about": {
"message": "Névjegy" "message": "Névjegy"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Verzió, ügyfélszolgálat és elérhetőségek." "message": "Verzió, ügyfélszolgálat és elérhetőségek"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Ha szeretné felgyorsítani a tranzakciót azzal, hogy magasabb gázárat használ, az növeli a gyorsabb feldolgozás esélyét, de ez nem mindig garantált." "message": "* Ha szeretné felgyorsítani a tranzakciót azzal, hogy magasabb gázárat használ, az növeli a gyorsabb feldolgozás esélyét, de ez nem mindig garantált."
@ -67,7 +55,7 @@
"message": "Speciális" "message": "Speciális"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Hozzáférés fejlesztői funkciókhoz, állapotnaplók letöltése, fiók újraállítása, testnetek és egyéni RPC-k beállítása." "message": "Hozzáférés fejlesztői funkciókhoz, állapotnaplók letöltése, fiók újraállítása, testnetek és egyéni RPC-k beállítása"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Haladó beállítások" "message": "Haladó beállítások"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "Alapvető" "message": "Alapvető"
}, },
"betweenMinAndMax": {
"message": "legyen nagyobb vagy egyenlő mint $1 és kisebb vagy egyenlő mint $2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "Explorer blokkolása" "message": "Explorer blokkolása"
}, },
@ -252,9 +236,6 @@
"connect": { "connect": {
"message": "Csatlakozás" "message": "Csatlakozás"
}, },
"connectRequest": {
"message": "Csatlakozási kérelem"
},
"connectingTo": { "connectingTo": {
"message": "Kapcsolódás: $1" "message": "Kapcsolódás: $1"
}, },
@ -294,9 +275,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Kimásolva!" "message": "Kimásolva!"
}, },
"copy": {
"message": "Másolás"
},
"copyAddress": { "copyAddress": {
"message": "Másolja a címet a vágólapra" "message": "Másolja a címet a vágólapra"
}, },
@ -375,9 +353,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Amennyiben már rendelkezik némi Ether-rel, a közvetlen letéttel gyorsan elhelyezheti azt új pénztárcájában." "message": "Amennyiben már rendelkezik némi Ether-rel, a közvetlen letéttel gyorsan elhelyezheti azt új pénztárcájában."
}, },
"dismiss": {
"message": "Elvetés"
},
"done": { "done": {
"message": "Kész" "message": "Kész"
}, },
@ -539,10 +514,6 @@
"getStarted": { "getStarted": {
"message": "Első lépések" "message": "Első lépések"
}, },
"greaterThanMin": {
"message": "legyen nagyobb vagy egyenlő mint $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Örülünk, hogy itt van. " "message": "Örülünk, hogy itt van. "
}, },
@ -661,10 +632,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Használnia kell a korábbi fiókját, mielőtt újat adhat hozzá. " "message": "Használnia kell a korábbi fiókját, mielőtt újat adhat hozzá. "
}, },
"lessThanMax": {
"message": "egyenlő vagy kevesebb kell legyen mint $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Igen, hozzuk létre!" "message": "Igen, hozzuk létre!"
}, },
@ -863,9 +830,6 @@
"message": "Illessze be ide a privát kulcs karakterláncát:", "message": "Illessze be ide a privát kulcs karakterláncát:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Másolja be ide a seed mondatot!"
},
"pending": { "pending": {
"message": "folyamatban" "message": "folyamatban"
}, },
@ -1179,9 +1143,6 @@
"storePhrase": { "storePhrase": {
"message": "Tárolja a mondatot jelszókezelőben, például az 1Passwordben." "message": "Tárolja a mondatot jelszókezelőben, például az 1Passwordben."
}, },
"submit": {
"message": "Elküldés"
},
"submitted": { "submitted": {
"message": "Elküldve" "message": "Elküldve"
}, },
@ -1346,9 +1307,6 @@
"userName": { "userName": {
"message": "Felhasználónév" "message": "Felhasználónév"
}, },
"validFileImport": {
"message": "Ki kell választanod egy érvényes fájlt az importáláshoz."
},
"viewAccount": { "viewAccount": {
"message": "Fiók megtekintése" "message": "Fiók megtekintése"
}, },

@ -1,19 +1,10 @@
{ {
"privacyModeDefault": {
"message": "Modus Privasi kini aktif secara default"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Grafik hanya tersedia pada jaringan Ethereum." "message": "Grafik hanya tersedia pada jaringan Ethereum."
}, },
"confirmClear": {
"message": "Yakin ingin mengosongkan website yang disetujui?"
},
"contractInteraction": { "contractInteraction": {
"message": "Interaksi Kontrak" "message": "Interaksi Kontrak"
}, },
"clearApprovalData": {
"message": "Bersihkan Data Privasi"
},
"appName": { "appName": {
"message": "MetaMask", "message": "MetaMask",
"description": "The name of the application" "description": "The name of the application"
@ -21,17 +12,14 @@
"reject": { "reject": {
"message": "Tolak" "message": "Tolak"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 ingin menghubungkan ke akun Anda" "message": "$1 ingin menghubungkan ke akun Anda"
}, },
"providerRequestInfo": {
"message": "Situs ini meminta akses untuk melihat alamat akun Anda saat ini. Selalu pastikan bahwa Anda bisa mempercayai situs yang berinteraksi dengan Anda."
},
"about": { "about": {
"message": "Tentang" "message": "Tentang"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Versi, pusat dukungan, dan informasi kontak." "message": "Versi, pusat dukungan, dan informasi kontak"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Mempercepat transaksi dengan menggunakan harga gas yang lebih tinggi meningkatkan peluangnya untuk lebih cepat diproses oleh jaringan, tetapi tak selalu terjamin pasti cepat." "message": "* Mempercepat transaksi dengan menggunakan harga gas yang lebih tinggi meningkatkan peluangnya untuk lebih cepat diproses oleh jaringan, tetapi tak selalu terjamin pasti cepat."
@ -67,7 +55,7 @@
"message": "Lanjutan" "message": "Lanjutan"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Akses fitur pengembang, unduh Log Status, Atur Ulang Akun, tata testnets dan RPC kustom." "message": "Akses fitur pengembang, unduh Log Status, Atur Ulang Akun, tata testnets dan RPC kustom"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Opsi Lanjutan" "message": "Opsi Lanjutan"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "Dasar" "message": "Dasar"
}, },
"betweenMinAndMax": {
"message": "harus lebih dari atau sama dengan $1 dan kurang dari atau sama dengan $2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "Blokir Penjelajah" "message": "Blokir Penjelajah"
}, },
@ -252,9 +236,6 @@
"connect": { "connect": {
"message": "Sambungkan" "message": "Sambungkan"
}, },
"connectRequest": {
"message": "Permintaan Sambungan"
},
"connectingTo": { "connectingTo": {
"message": "Menghubungkan ke $1" "message": "Menghubungkan ke $1"
}, },
@ -294,9 +275,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Disalin!" "message": "Disalin!"
}, },
"copy": {
"message": "Salin"
},
"copyAddress": { "copyAddress": {
"message": "Salin alamat ke clipboard" "message": "Salin alamat ke clipboard"
}, },
@ -369,9 +347,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Jika Anda sudah memiliki Ether, cara tercepat mendapatkan Ether di dompet baru lewat deposit langsung." "message": "Jika Anda sudah memiliki Ether, cara tercepat mendapatkan Ether di dompet baru lewat deposit langsung."
}, },
"dismiss": {
"message": "Tutup"
},
"done": { "done": {
"message": "Selesai" "message": "Selesai"
}, },
@ -530,10 +505,6 @@
"getStarted": { "getStarted": {
"message": "Mulai" "message": "Mulai"
}, },
"greaterThanMin": {
"message": "harus lebih besar atau sama dengan $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Kami senang bertemu dengan Anda." "message": "Kami senang bertemu dengan Anda."
}, },
@ -652,10 +623,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Anda perlu menggunakan akun terakhir sebelum dapat menambahkan akun baru." "message": "Anda perlu menggunakan akun terakhir sebelum dapat menambahkan akun baru."
}, },
"lessThanMax": {
"message": "harus kurang dari atau setara $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Ya, ayo tata!" "message": "Ya, ayo tata!"
}, },
@ -848,9 +815,6 @@
"message": "Tempelkan string kunci privat di sini:", "message": "Tempelkan string kunci privat di sini:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Tempel frasa benih Anda di sini!"
},
"pending": { "pending": {
"message": "tertunda" "message": "tertunda"
}, },
@ -1164,9 +1128,6 @@
"storePhrase": { "storePhrase": {
"message": "Simpan frasa ini dalam manajer sandi seperti 1Password." "message": "Simpan frasa ini dalam manajer sandi seperti 1Password."
}, },
"submit": {
"message": "Kirim"
},
"submitted": { "submitted": {
"message": "Terkirim" "message": "Terkirim"
}, },
@ -1325,9 +1286,6 @@
"userName": { "userName": {
"message": "Nama Pengguna" "message": "Nama Pengguna"
}, },
"validFileImport": {
"message": "Anda harus memilih berkas yang sah untuk diimpor."
},
"viewAccount": { "viewAccount": {
"message": "Lihat Akun" "message": "Lihat Akun"
}, },

@ -1,33 +1,21 @@
{ {
"privacyModeDefault": {
"message": "La modalità privacy è ora abilitata per impostazione predefinita"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Grafico disponibile solo per le reti Ethereum." "message": "Grafico disponibile solo per le reti Ethereum."
}, },
"confirmClear": {
"message": "Sei sicuro di voler cancellare i siti Web approvati?"
},
"contractInteraction": { "contractInteraction": {
"message": "Interazione Contratto" "message": "Interazione Contratto"
}, },
"clearApprovalData": {
"message": "Cancella i dati di approvazione"
},
"reject": { "reject": {
"message": "Annulla" "message": "Annulla"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 vorrebbe connettersi al tuo account" "message": "$1 vorrebbe connettersi al tuo account"
}, },
"providerRequestInfo": {
"message": "Il dominio elencato di seguito sta tentando di richiedere l'accesso all'API Ethereum in modo che possa interagire con la blockchain di Ethereum. Controlla sempre di essere sul sito corretto prima di approvare l'accesso a Ethereum."
},
"about": { "about": {
"message": "Informazioni" "message": "Informazioni"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Version, centro di supporto e contatti." "message": "Version, centro di supporto e contatti"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Accelerare una transazione usando un prezzo del gas maggiore aumenta la probabilità che la rete la elabori più velocemente, ma non è garantito." "message": "* Accelerare una transazione usando un prezzo del gas maggiore aumenta la probabilità che la rete la elabori più velocemente, ma non è garantito."
@ -60,7 +48,7 @@
"message": "Avanzate" "message": "Avanzate"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Accedi alle funzionalità sviluppatore, download dei log di Stato, Reset Account, imposta reti di test e RPC personalizzata." "message": "Accedi alle funzionalità sviluppatore, download dei log di Stato, Reset Account, imposta reti di test e RPC personalizzata"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Opzioni Avanzate" "message": "Opzioni Avanzate"
@ -151,10 +139,6 @@
"basic": { "basic": {
"message": "Base" "message": "Base"
}, },
"betweenMinAndMax": {
"message": "deve essere maggiore o uguale a $1 e minore o uguale a $2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerView": { "blockExplorerView": {
"message": "Visualizza account su $1", "message": "Visualizza account su $1",
"description": "$1 replaced by URL for custom block explorer" "description": "$1 replaced by URL for custom block explorer"
@ -231,9 +215,6 @@
"connect": { "connect": {
"message": "Connetti" "message": "Connetti"
}, },
"connectRequest": {
"message": "Richiesta Connessione"
},
"connectingTo": { "connectingTo": {
"message": "Connessione in corso a $1" "message": "Connessione in corso a $1"
}, },
@ -273,9 +254,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Copiato!" "message": "Copiato!"
}, },
"copy": {
"message": "Copia"
},
"copyAddress": { "copyAddress": {
"message": "Copia l'indirizzo" "message": "Copia l'indirizzo"
}, },
@ -354,9 +332,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Se possiedi già degli Ether, questa è la via più veloce per aggiungere Ether al tuo portafoglio con un deposito diretto." "message": "Se possiedi già degli Ether, questa è la via più veloce per aggiungere Ether al tuo portafoglio con un deposito diretto."
}, },
"dismiss": {
"message": "Ignora"
},
"done": { "done": {
"message": "Finito" "message": "Finito"
}, },
@ -522,10 +497,6 @@
"getStarted": { "getStarted": {
"message": "Inizia" "message": "Inizia"
}, },
"greaterThanMin": {
"message": "deve essere maggiore o uguale a $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Siamo contenti di vederti." "message": "Siamo contenti di vederti."
}, },
@ -641,10 +612,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "E' necessario utilizzare l'ultimo account prima di poterne aggiungere uno nuovo." "message": "E' necessario utilizzare l'ultimo account prima di poterne aggiungere uno nuovo."
}, },
"lessThanMax": {
"message": "deve essere minore o uguale a $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Si, iniziamo!" "message": "Si, iniziamo!"
}, },
@ -833,9 +800,6 @@
"message": "Incolla la tua chiave privata qui:", "message": "Incolla la tua chiave privata qui:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Incolla la tua frase seed qui!"
},
"pending": { "pending": {
"message": "in corso" "message": "in corso"
}, },
@ -1149,9 +1113,6 @@
"storePhrase": { "storePhrase": {
"message": "Conserva questa frase in un gestore di password come 1Password." "message": "Conserva questa frase in un gestore di password come 1Password."
}, },
"submit": {
"message": "Invia"
},
"submitted": { "submitted": {
"message": "Inviata" "message": "Inviata"
}, },
@ -1316,9 +1277,6 @@
"userName": { "userName": {
"message": "Nome utente" "message": "Nome utente"
}, },
"validFileImport": {
"message": "Devi selezionare un file valido da importare."
},
"viewAccount": { "viewAccount": {
"message": "Vedi Account" "message": "Vedi Account"
}, },
@ -1367,24 +1325,6 @@
"zeroGasPriceOnSpeedUpError": { "zeroGasPriceOnSpeedUpError": {
"message": "Prezzo del gas maggiore di zero" "message": "Prezzo del gas maggiore di zero"
}, },
"connections": {
"message": "Connessioni"
},
"connectionsSettingsDescription": {
"message": "Siti autorizzati ad accedere ai tuoi accounts"
},
"addSite": {
"message": "Aggiungi Sito"
},
"addSiteDescription": {
"message": "Aggiungi un sito autorizzato ad accedere ai tuoi accounts, utile per dapps obsolete"
},
"connected": {
"message": "Connesso"
},
"connectedDescription": {
"message": "La lista di siti web autorizzati ad accedere ai tuoi indirizzi"
},
"contacts": { "contacts": {
"message": "Contatti" "message": "Contatti"
}, },

@ -1,28 +1,16 @@
{ {
"privacyModeDefault": {
"message": "プライバシーモードがデフォルトで有効になりました"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "チャートはEthereumネットワークでのみ利用可能です。" "message": "チャートはEthereumネットワークでのみ利用可能です。"
}, },
"confirmClear": {
"message": "承認されたウェブサイトをクリアしてもよろしいですか?"
},
"contractInteraction": { "contractInteraction": {
"message": "コントラクトへのアクセス" "message": "コントラクトへのアクセス"
}, },
"clearApprovalData": {
"message": "承認データのクリア"
},
"reject": { "reject": {
"message": "拒否" "message": "拒否"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 はあなたのアカウントにアクセスしようとしています。" "message": "$1 はあなたのアカウントにアクセスしようとしています。"
}, },
"providerRequestInfo": {
"message": "下記のドメインは、Ethereumブロックチェーンとやり取りできるようにEthereum APIへのアクセスをリクエストしようとしています。 Web3アクセスを承認する前に、正しいサイトにいることを常に確認してください。"
},
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "バージョンやサポート、問合せ先など" "message": "バージョンやサポート、問合せ先など"
}, },
@ -84,7 +72,7 @@
"message": "推奨トークンを追加" "message": "推奨トークンを追加"
}, },
"addAcquiredTokens": { "addAcquiredTokens": {
"message": "Metamaskで獲得したトークンを追加する" "message": "MetaMaskで獲得したトークンを追加する"
}, },
"amount": { "amount": {
"message": "金額" "message": "金額"
@ -136,10 +124,6 @@
"balanceIsInsufficientGas": { "balanceIsInsufficientGas": {
"message": "現在のガス総量に対して残高が不足しています" "message": "現在のガス総量に対して残高が不足しています"
}, },
"betweenMinAndMax": {
"message": " $1以上 $2以下にして下さい。",
"description": "helper for inputting hex as decimal input"
},
"blockiesIdenticon": { "blockiesIdenticon": {
"message": "Blockies Identicon を使用" "message": "Blockies Identicon を使用"
}, },
@ -173,9 +157,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "コピー完了!" "message": "コピー完了!"
}, },
"copy": {
"message": "コピー"
},
"copyToClipboard": { "copyToClipboard": {
"message": "クリップボードへコピー" "message": "クリップボードへコピー"
}, },
@ -278,10 +259,6 @@
"message": "フォーセットで $1のEtherを得ることができます。", "message": "フォーセットで $1のEtherを得ることができます。",
"description": "Displays network name for Ether faucet" "description": "Displays network name for Ether faucet"
}, },
"greaterThanMin": {
"message": " $1以上にして下さい。",
"description": "helper for inputting hex as decimal input"
},
"here": { "here": {
"message": "ここ", "message": "ここ",
"description": "as in -click here- for more information (goes with troubleTokenBalances)" "description": "as in -click here- for more information (goes with troubleTokenBalances)"
@ -334,10 +311,6 @@
"learnMore": { "learnMore": {
"message": "詳細" "message": "詳細"
}, },
"lessThanMax": {
"message": " $1以下にして下さい。",
"description": "helper for inputting hex as decimal input"
},
"likeToAddTokens": { "likeToAddTokens": {
"message": "トークンを追加しますか?" "message": "トークンを追加しますか?"
}, },
@ -416,9 +389,6 @@
"message": "秘密鍵をここにペーストして下さい:", "message": "秘密鍵をここにペーストして下さい:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "パスフレーズをここにペーストして下さい!"
},
"privacyMsg": { "privacyMsg": {
"message": "プライバシーポリシー" "message": "プライバシーポリシー"
}, },
@ -510,9 +480,6 @@
"sigRequest": { "sigRequest": {
"message": "署名リクエスト" "message": "署名リクエスト"
}, },
"submit": {
"message": "送信"
},
"terms": { "terms": {
"message": "利用規約" "message": "利用規約"
}, },

@ -1,19 +1,10 @@
{ {
"privacyModeDefault": {
"message": "ಗಯತ ಅನ ಆಗಿ ಸಕಿಯಗಿಸಲಿ"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "ಎಥಿಯಮವರಗಳಲಿರವಗಳ ಲಭಯವಿತವ." "message": "ಎಥಿಯಮವರಗಳಲಿರವಗಳ ಲಭಯವಿತವ."
}, },
"confirmClear": {
"message": "ನ ಅನಿಿದ ವಗಳನರವಿಸಲ ಬಯಸಿ?"
},
"contractInteraction": { "contractInteraction": {
"message": "ಒಪದದ ಸವಹನ" "message": "ಒಪದದ ಸವಹನ"
}, },
"clearApprovalData": {
"message": "ಗಯತವನರವಿಿ"
},
"appName": { "appName": {
"message": "MetaMask", "message": "MetaMask",
"description": "The name of the application" "description": "The name of the application"
@ -21,17 +12,14 @@
"reject": { "reject": {
"message": "ತಿರಸಕರಿಿ" "message": "ತಿರಸಕರಿಿ"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 ನಿಮ ಖಪರಿಸಲ ಬಯಸಿ" "message": "$1 ನಿಮ ಖಪರಿಸಲ ಬಯಸಿ"
}, },
"providerRequestInfo": {
"message": "ಈ ಸಿಮ ಪರಸತ ಖಿಸವನಿಸಲರವಶವನಿಿಿ. ನವಹನ ನಡವ ಸಗಳನಿಿಿದನಗಲ ಖಚಿತಪಡಿಿಿ."
},
"about": { "about": {
"message": "ಕಿ" "message": "ಕಿ"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "ಆವಿ, ಬಬಲ ಕರ ಮತಪರಕ ಮಿಿ." "message": "ಆವಿ, ಬಬಲ ಕರ ಮತಪರಕ ಮಿಿ"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* ಹಿನ ಗಯನ ಬಳಸಿ ವಹಿಟನಗಗಿದರಿದ ನವರಗವಿರಕಿವ ಸಯತಗಳನ ಅದಿತದ, ಆದರ ಇದಗಲ ಖಚಿತವಿಿಲ." "message": "* ಹಿನ ಗಯನ ಬಳಸಿ ವಹಿಟನಗಗಿದರಿದ ನವರಗವಿರಕಿವ ಸಯತಗಳನ ಅದಿತದ, ಆದರ ಇದಗಲ ಖಚಿತವಿಿಲ."
@ -67,7 +55,7 @@
"message": "ಸಿತ" "message": "ಸಿತ"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "ಡವಲಪರಿಯಗಳನರವಿಿ, ರಯದ ಲಗಳನಿ, ಖಯನ ಮರಿಿ, ಟಿಿ ಮತ ಕಸಟಮ RPC." "message": "ಡವಲಪರಿಯಗಳನರವಿಿ, ರಯದ ಲಗಳನಿ, ಖಯನ ಮರಿಿ, ಟಿಿ ಮತ ಕಸಟಮ RPC"
}, },
"advancedOptions": { "advancedOptions": {
"message": "ಸಿತ ಆಯಗಳ" "message": "ಸಿತ ಆಯಗಳ"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "ಮಲ" "message": "ಮಲ"
}, },
"betweenMinAndMax": {
"message": " $1 ಗಿತಲಿರಬ ಅಥವ ಸಮನಿರಬ ಮತ $2 ಗಿತಲ ಕಡಿ ಇರಬ ಅಥವ ಸಮನಿರಬ.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "ಅನಷಕವನಿಿಿ" "message": "ಅನಷಕವನಿಿಿ"
}, },
@ -252,9 +236,6 @@
"connect": { "connect": {
"message": "ಸಪರಿ" "message": "ಸಪರಿ"
}, },
"connectRequest": {
"message": "ವಿಿಯನಪರಕಪಡಿಿ"
},
"connectingTo": { "connectingTo": {
"message": "$1 ಗಪರಕಪಡಿಸಲಿ" "message": "$1 ಗಪರಕಪಡಿಸಲಿ"
}, },
@ -294,9 +275,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "ನಕಲಿಸಲಿ!" "message": "ನಕಲಿಸಲಿ!"
}, },
"copy": {
"message": "ನಕಲಿ"
},
"copyAddress": { "copyAddress": {
"message": "ವಿಸವನಿ ನಕಲಿಿ" "message": "ವಿಸವನಿ ನಕಲಿಿ"
}, },
@ -375,9 +353,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "ನ ಈಗಗಲಲವ ಎಥರಿದರ, ನರ ಠವಣಿಲಕ ನಿಮ ಹಸ ವನಲಿ ಎಥರ ಅನ ಪಡವ ತವರಿತ ಮಗ." "message": "ನ ಈಗಗಲಲವ ಎಥರಿದರ, ನರ ಠವಣಿಲಕ ನಿಮ ಹಸ ವನಲಿ ಎಥರ ಅನ ಪಡವ ತವರಿತ ಮಗ."
}, },
"dismiss": {
"message": "ವಜಿಿ"
},
"done": { "done": {
"message": "ಮಿಿ" "message": "ಮಿಿ"
}, },
@ -543,10 +518,6 @@
"getStarted": { "getStarted": {
"message": "ಪಭಗಿ" "message": "ಪಭಗಿ"
}, },
"greaterThanMin": {
"message": " $1 ಗಿತಲಿರಬ ಅಥವ ಸಮನಿರಬ.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "ನಿಮನಿ ನಮಗಷವಿ." "message": "ನಿಮನಿ ನಮಗಷವಿ."
}, },
@ -665,10 +636,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "ನಸದನಿದರ ಮದಲಿಮ ಹಿಿನ ಖಯನ ಬಳಸಬ." "message": "ನಸದನಿದರ ಮದಲಿಮ ಹಿಿನ ಖಯನ ಬಳಸಬ."
}, },
"lessThanMax": {
"message": "$1 ಗಿತ ಕಡಿ ಅಥವ ಸಮನಿರಬ.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "ಹ, ಹಿಣ!" "message": "ಹ, ಹಿಣ!"
}, },
@ -870,9 +837,6 @@
"message": "ನಿಮ ಖಸಗಿರಮಖ ಸಿ ಅನ ಇಲಿ ನಕಲಿಿ:", "message": "ನಿಮ ಖಸಗಿರಮಖ ಸಿ ಅನ ಇಲಿ ನಕಲಿಿ:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "ನಿಮ ಸ ಅನ ಇಲಿ ನಕಲಿಿ!"
},
"pending": { "pending": {
"message": "ಬಿಿ" "message": "ಬಿಿ"
}, },
@ -1186,9 +1150,6 @@
"storePhrase": { "storePhrase": {
"message": "ಈ ಫ ಅನವರಿಹಕದಲಿ 1Password ರಪದಲಿರಹಿಿ." "message": "ಈ ಫ ಅನವರಿಹಕದಲಿ 1Password ರಪದಲಿರಹಿಿ."
}, },
"submit": {
"message": "ಸಲಿ"
},
"submitted": { "submitted": {
"message": "ಸಲಿಸಲಿ" "message": "ಸಲಿಸಲಿ"
}, },
@ -1356,9 +1317,6 @@
"userName": { "userName": {
"message": "ಬಳಕರಹಸರ" "message": "ಬಳಕರಹಸರ"
}, },
"validFileImport": {
"message": "ನ ಆಮದಡಲಯ ಫ ಅನ ಆಯಡಬ."
},
"viewAccount": { "viewAccount": {
"message": "ಖಯನಿಿ" "message": "ಖಯನಿಿ"
}, },

@ -1,33 +1,21 @@
{ {
"privacyModeDefault": {
"message": "이제 프라이버시 모드가 기본 설정으로 활성화됐습니다"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "이더리움 네트워크에서만 사용 가능한 차트." "message": "이더리움 네트워크에서만 사용 가능한 차트."
}, },
"confirmClear": {
"message": "승인 된 웹 사이트를 삭제 하시겠습니까?"
},
"contractInteraction": { "contractInteraction": {
"message": "계약 상호 작용" "message": "계약 상호 작용"
}, },
"clearApprovalData": {
"message": "승인 데이터 삭제"
},
"reject": { "reject": {
"message": "거부" "message": "거부"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1이 당신의 계정에 연결하길 원합니다." "message": "$1이 당신의 계정에 연결하길 원합니다."
}, },
"providerRequestInfo": {
"message": "아래 나열된 도메인은 Web3 API에 대한 액세스를 요청하여 Ethereum 블록 체인과 상호 작용할 수 있습니다. Ethereum 액세스를 승인하기 전에 항상 올바른 사이트에 있는지 다시 확인하십시오."
},
"about": { "about": {
"message": "정보" "message": "정보"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "버전, 지원 센터, 그리고 연락처 정보." "message": "버전, 지원 센터, 그리고 연락처 정보"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* 더 높은 가스 요금을 사용하여 트랜잭션을 가속화하면 네트워크에 의해 더 빨리 처리될 가능성이 증가하지만 항상 빠른 처리가 보장되는 것은 아닙니다." "message": "* 더 높은 가스 요금을 사용하여 트랜잭션을 가속화하면 네트워크에 의해 더 빨리 처리될 가능성이 증가하지만 항상 빠른 처리가 보장되는 것은 아닙니다."
@ -63,7 +51,7 @@
"message": "고급" "message": "고급"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "개발자 기능 사용, 상태 로그 다운로드, 계정 재설정, 테스트넷 및 사용자 정의 RPC 설정." "message": "개발자 기능 사용, 상태 로그 다운로드, 계정 재설정, 테스트넷 및 사용자 정의 RPC 설정"
}, },
"advancedOptions": { "advancedOptions": {
"message": "고급 옵션" "message": "고급 옵션"
@ -154,10 +142,6 @@
"balanceIsInsufficientGas": { "balanceIsInsufficientGas": {
"message": "현재 가스 총합에 대해 잔액이 부족합니다" "message": "현재 가스 총합에 대해 잔액이 부족합니다"
}, },
"betweenMinAndMax": {
"message": "$1 이상 $2 이하여야 합니다.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "익스플로러 차단" "message": "익스플로러 차단"
}, },
@ -249,9 +233,6 @@
"connect": { "connect": {
"message": "연결" "message": "연결"
}, },
"connectRequest": {
"message": "연결 요청"
},
"connectingTo": { "connectingTo": {
"message": "$1에 연결" "message": "$1에 연결"
}, },
@ -291,9 +272,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "복사됨!" "message": "복사됨!"
}, },
"copy": {
"message": "복사"
},
"copyAddress": { "copyAddress": {
"message": "클립보드로 주소 복사" "message": "클립보드로 주소 복사"
}, },
@ -372,9 +350,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "약간의 이더를 이미 보유하고 있다면, 새로 만든 지갑에 직접 입금하여 이더를 보유할 수 있습니다." "message": "약간의 이더를 이미 보유하고 있다면, 새로 만든 지갑에 직접 입금하여 이더를 보유할 수 있습니다."
}, },
"dismiss": {
"message": "숨기기"
},
"done": { "done": {
"message": "완료" "message": "완료"
}, },
@ -540,10 +515,6 @@
"getStarted": { "getStarted": {
"message": "시작하기" "message": "시작하기"
}, },
"greaterThanMin": {
"message": "$1 이상이어야 합니다.",
"description": "helper for inputting hex as decimal input"
},
"hardware": { "hardware": {
"message": "하드웨어" "message": "하드웨어"
}, },
@ -659,10 +630,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "새 계정을 추가하려면 최소 마지막 계정을 사용해야 합니다." "message": "새 계정을 추가하려면 최소 마지막 계정을 사용해야 합니다."
}, },
"lessThanMax": {
"message": "$1 이하여야합니다.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "네, 설정해볼게요!" "message": "네, 설정해볼게요!"
}, },
@ -861,9 +828,6 @@
"message": "개인키를 입력해주세요:", "message": "개인키를 입력해주세요:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "시드 구문을 이곳에 붙여넣어 주세요!"
},
"pending": { "pending": {
"message": "펜딩 중" "message": "펜딩 중"
}, },
@ -1177,9 +1141,6 @@
"storePhrase": { "storePhrase": {
"message": "이 구문을 1Password같은 암호 관리자에 저장하세요." "message": "이 구문을 1Password같은 암호 관리자에 저장하세요."
}, },
"submit": {
"message": "제출"
},
"submitted": { "submitted": {
"message": "제출됨" "message": "제출됨"
}, },
@ -1347,9 +1308,6 @@
"userName": { "userName": {
"message": "사용자이름" "message": "사용자이름"
}, },
"validFileImport": {
"message": "가져오기 위해 유효한 파일을 선택해야 합니다."
},
"viewAccount": { "viewAccount": {
"message": "계정 보기" "message": "계정 보기"
}, },

@ -1,33 +1,21 @@
{ {
"privacyModeDefault": {
"message": "Dabar privatumo režimas suaktyvintas pagal numatytąją nuostatą"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Diagramos yra tik „Ethereum“ tinkluose." "message": "Diagramos yra tik „Ethereum“ tinkluose."
}, },
"confirmClear": {
"message": "Ar tikrai norite panaikinti patvirtintas svetaines?"
},
"contractInteraction": { "contractInteraction": {
"message": "Sutartinė sąveika" "message": "Sutartinė sąveika"
}, },
"clearApprovalData": {
"message": "Išvalyti asmeninius duomenis"
},
"reject": { "reject": {
"message": "Atmesti" "message": "Atmesti"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 norėtų prisijungti prie jūsų paskyros" "message": "$1 norėtų prisijungti prie jūsų paskyros"
}, },
"providerRequestInfo": {
"message": "Ši svetainė prašo prieigos peržiūrėti jūsų dabartinės paskyros adresą. Visada patikrinkite, ar pasitikite svetainėmis, su kuriomis sąveikaujate."
},
"about": { "about": {
"message": "Apie" "message": "Apie"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Versija, palaikymo centras ir kontaktinė informacija." "message": "Versija, palaikymo centras ir kontaktinė informacija"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "Operacijos paspartinimas naudojantis didesne dujų kaina padidina galimybes, kad ji bus greičiau apdorota tinkle, tačiau tai ne visada garantuojama. " "message": "Operacijos paspartinimas naudojantis didesne dujų kaina padidina galimybes, kad ji bus greičiau apdorota tinkle, tačiau tai ne visada garantuojama. "
@ -63,7 +51,7 @@
"message": "Išplėstiniai" "message": "Išplėstiniai"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Prieigos kūrėjo funkcijos, būsenos žurnalų atsiuntimas, paskyros atstatymas, „testnet“ nustatymas ir pritaikytas RPC." "message": "Prieigos kūrėjo funkcijos, būsenos žurnalų atsiuntimas, paskyros atstatymas, „testnet“ nustatymas ir pritaikytas RPC"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Išplėstinės parinktys" "message": "Išplėstinės parinktys"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "Bendrieji" "message": "Bendrieji"
}, },
"betweenMinAndMax": {
"message": "turi būti ne mažiau kaip $1 ir ne daugiau kaip $2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "Blokuoti naršyklę" "message": "Blokuoti naršyklę"
}, },
@ -252,9 +236,6 @@
"connect": { "connect": {
"message": "Prisijungti" "message": "Prisijungti"
}, },
"connectRequest": {
"message": "Prijungimo užklausa"
},
"connectingTo": { "connectingTo": {
"message": "Jungiamasi prie $1" "message": "Jungiamasi prie $1"
}, },
@ -294,9 +275,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Nukopijuota!" "message": "Nukopijuota!"
}, },
"copy": {
"message": "Kopijuoti"
},
"copyAddress": { "copyAddress": {
"message": "Kopijuoti adresą į iškarpinę" "message": "Kopijuoti adresą į iškarpinę"
}, },
@ -375,9 +353,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Jeigu jau turite šiek tiek eterių, sparčiausias būdas gauti eterių į naują piniginę yra tiesioginis įnašas." "message": "Jeigu jau turite šiek tiek eterių, sparčiausias būdas gauti eterių į naują piniginę yra tiesioginis įnašas."
}, },
"dismiss": {
"message": "Atsisakyti"
},
"done": { "done": {
"message": "Atlikta" "message": "Atlikta"
}, },
@ -543,10 +518,6 @@
"getStarted": { "getStarted": {
"message": "Darbo pradžia" "message": "Darbo pradžia"
}, },
"greaterThanMin": {
"message": "turi būti daugiau arba lygu $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Džiaugiamės jus matydami." "message": "Džiaugiamės jus matydami."
}, },
@ -665,10 +636,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Prieš įtraukdami naują, turite pasinaudoti paskutine paskyra." "message": "Prieš įtraukdami naują, turite pasinaudoti paskutine paskyra."
}, },
"lessThanMax": {
"message": "turi būti mažiau arba lygu $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Taip, pradėkime!" "message": "Taip, pradėkime!"
}, },
@ -870,9 +837,6 @@
"message": "Čia įklijuokite asmeninio rakto eilutę:", "message": "Čia įklijuokite asmeninio rakto eilutę:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Čia įklijuokite savo atkūrimo frazę!"
},
"pending": { "pending": {
"message": "laukiama patvirtinimo" "message": "laukiama patvirtinimo"
}, },
@ -1186,9 +1150,6 @@
"storePhrase": { "storePhrase": {
"message": "Laikykite šią frazę slaptažodžių tvarkyklėje kaip 1 slaptažodį." "message": "Laikykite šią frazę slaptažodžių tvarkyklėje kaip 1 slaptažodį."
}, },
"submit": {
"message": "Pateikti"
},
"submitted": { "submitted": {
"message": "Pateikta" "message": "Pateikta"
}, },
@ -1356,9 +1317,6 @@
"userName": { "userName": {
"message": "Vartotojo vardas" "message": "Vartotojo vardas"
}, },
"validFileImport": {
"message": "Turite pasirinkti galiojantį failą, kurį pageidaujate importuoti."
},
"viewAccount": { "viewAccount": {
"message": "Žiūrėti paskyrą" "message": "Žiūrėti paskyrą"
}, },

@ -1,19 +1,10 @@
{ {
"privacyModeDefault": {
"message": "Privātais režīms tagad ieslēgts pēc noklusējuma"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Grafiks pieejams vienīgi Ethereum tīklos." "message": "Grafiks pieejams vienīgi Ethereum tīklos."
}, },
"confirmClear": {
"message": "Vai tiešām vēlaties dzēst apstiprinātās vietnes?"
},
"contractInteraction": { "contractInteraction": {
"message": "Līguma mijiedarbības" "message": "Līguma mijiedarbības"
}, },
"clearApprovalData": {
"message": "Notīrīt konfidencialitātes datus"
},
"appName": { "appName": {
"message": "MetaMask", "message": "MetaMask",
"description": "The name of the application" "description": "The name of the application"
@ -21,12 +12,9 @@
"reject": { "reject": {
"message": "Noraidīt" "message": "Noraidīt"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 vēlas izveidot savienojumu ar jūsu kontu" "message": "$1 vēlas izveidot savienojumu ar jūsu kontu"
}, },
"providerRequestInfo": {
"message": "Šī lapa pieprasa piekļuvi jūsu pašreizēja konta adreses informācijai. Vienmēr pārliecinieties, ka uzticaties lapām, kuras apmeklējat."
},
"about": { "about": {
"message": "Par" "message": "Par"
}, },
@ -67,7 +55,7 @@
"message": "Papildu" "message": "Papildu"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Piekļūstiet izstrādātāju funkcijām, lejupielādējiet stāvokļu žurnālus, atiestatiet kontu, iestatiet testa tīklus un pielāgotos RPC izsaukumus." "message": "Piekļūstiet izstrādātāju funkcijām, lejupielādējiet stāvokļu žurnālus, atiestatiet kontu, iestatiet testa tīklus un pielāgotos RPC izsaukumus"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Papildu opcijas" "message": "Papildu opcijas"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "Pamata" "message": "Pamata"
}, },
"betweenMinAndMax": {
"message": "jābūt lielākai par vai vienādai ar $1 un mazākai par vai vienādai ar $2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "Bloķēt Explorer" "message": "Bloķēt Explorer"
}, },
@ -252,9 +236,6 @@
"connect": { "connect": {
"message": "Pievienošana" "message": "Pievienošana"
}, },
"connectRequest": {
"message": "Savienojuma pieprasījums"
},
"connectingTo": { "connectingTo": {
"message": "Pieslēdzas $1" "message": "Pieslēdzas $1"
}, },
@ -294,9 +275,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Nokopēts!" "message": "Nokopēts!"
}, },
"copy": {
"message": "Kopēt"
},
"copyAddress": { "copyAddress": {
"message": "Iekopēt adresi starpliktuvē" "message": "Iekopēt adresi starpliktuvē"
}, },
@ -375,9 +353,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Ja jums jau ir Ether, tad visātrāk Ether savā makā varat saņemt ar tiešo iemaksu." "message": "Ja jums jau ir Ether, tad visātrāk Ether savā makā varat saņemt ar tiešo iemaksu."
}, },
"dismiss": {
"message": "Noraidīt"
},
"done": { "done": {
"message": "Pabeigts" "message": "Pabeigts"
}, },
@ -539,10 +514,6 @@
"getStarted": { "getStarted": {
"message": "Sākt darbu" "message": "Sākt darbu"
}, },
"greaterThanMin": {
"message": "jābūt lielākam par vai vienādam ar $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Priecājamies jūs redzēt!" "message": "Priecājamies jūs redzēt!"
}, },
@ -661,10 +632,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Jums jāizmanto pēdējais konts pirms varat pievienot jaunu." "message": "Jums jāizmanto pēdējais konts pirms varat pievienot jaunu."
}, },
"lessThanMax": {
"message": "jābūt mazākam par vai vienādam ar $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Jā, sāksim iestatīšanu!" "message": "Jā, sāksim iestatīšanu!"
}, },
@ -866,9 +833,6 @@
"message": "Ielīmējiet privātās atslēgas rindu šeit:", "message": "Ielīmējiet privātās atslēgas rindu šeit:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Iekopējiet savu atkopšanas frāzi šeit!"
},
"pending": { "pending": {
"message": "gaida" "message": "gaida"
}, },
@ -1182,9 +1146,6 @@
"storePhrase": { "storePhrase": {
"message": "Saglabājiet šo frāzi paroļu pārvaldniekā, piemēram, 1Password." "message": "Saglabājiet šo frāzi paroļu pārvaldniekā, piemēram, 1Password."
}, },
"submit": {
"message": "Iesniegt"
},
"submitted": { "submitted": {
"message": "Iesniegts" "message": "Iesniegts"
}, },
@ -1352,9 +1313,6 @@
"userName": { "userName": {
"message": "Lietotājvārds" "message": "Lietotājvārds"
}, },
"validFileImport": {
"message": "Importēšanai jāatlasa derīga datne."
},
"viewAccount": { "viewAccount": {
"message": "Skatīt kontu" "message": "Skatīt kontu"
}, },

@ -42,9 +42,6 @@
"connect": { "connect": {
"message": "കണകക" "message": "കണകക"
}, },
"copy": {
"message": "പകരക"
},
"copyToClipboard": { "copyToClipboard": {
"message": "കിർഡി പകർതക" "message": "കിർഡി പകർതക"
}, },
@ -57,9 +54,6 @@
"details": { "details": {
"message": "വിശദശങങൾ" "message": "വിശദശങങൾ"
}, },
"dismiss": {
"message": "ബഹികരിക"
},
"done": { "done": {
"message": "പർതിി" "message": "പർതിി"
}, },
@ -131,9 +125,6 @@
"settings": { "settings": {
"message": "കരമകരണങങള" "message": "കരമകരണങങള"
}, },
"submit": {
"message": "സമരി"
},
"tryAgain": { "tryAgain": {
"message": "വരമിക" "message": "വരമിക"
}, },

@ -42,9 +42,6 @@
"connect": { "connect": {
"message": "कनट कर" "message": "कनट कर"
}, },
"copy": {
"message": "क कर"
},
"copyToClipboard": { "copyToClipboard": {
"message": "किपबडवर क कर" "message": "किपबडवर क कर"
}, },
@ -57,9 +54,6 @@
"details": { "details": {
"message": "तपशल" "message": "तपशल"
}, },
"dismiss": {
"message": "डिसमिस कर"
},
"done": { "done": {
"message": "पण झ" "message": "पण झ"
}, },
@ -131,9 +125,6 @@
"settings": { "settings": {
"message": "सिज" "message": "सिज"
}, },
"submit": {
"message": "सबमिट कर"
},
"tryAgain": { "tryAgain": {
"message": "परयतन कर" "message": "परयतन कर"
}, },

@ -1,33 +1,21 @@
{ {
"privacyModeDefault": {
"message": "Mod Privasi kini diaktifkan secara lalai"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Carta hanya tersedia di rangkaian Ethereum." "message": "Carta hanya tersedia di rangkaian Ethereum."
}, },
"confirmClear": {
"message": "Adakah anda pasti mahu mengosongkan tapak web diluluskan?"
},
"contractInteraction": { "contractInteraction": {
"message": "Interaksi Kontrak" "message": "Interaksi Kontrak"
}, },
"clearApprovalData": {
"message": "Kosongkan Data Privasi"
},
"reject": { "reject": {
"message": "Tolak" "message": "Tolak"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 ingin menyambung kepada akaun anda" "message": "$1 ingin menyambung kepada akaun anda"
}, },
"providerRequestInfo": {
"message": "Tapak ini meminta akses untuk melihat alamat akaun semasa anda. Sentiasa pastikan anda mempercayai tapak web yang anda berinteraksi."
},
"about": { "about": {
"message": "Mengenai" "message": "Mengenai"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Versi, pusat sokongan, dan maklumat perhubungan." "message": "Versi, pusat sokongan, dan maklumat perhubungan"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Mempercepatkan transaksi menggunakan harga gas lebih tinggi akan meningkatkan peluang diproses oleh rangkaian lebih cepat, tetapi ini pun tidak sentiasa dijamin." "message": "* Mempercepatkan transaksi menggunakan harga gas lebih tinggi akan meningkatkan peluang diproses oleh rangkaian lebih cepat, tetapi ini pun tidak sentiasa dijamin."
@ -63,7 +51,7 @@
"message": "Lanjutan" "message": "Lanjutan"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Akses ciri-ciri pembangun, muat turun Log Keadaan, Set Semula Akaun, sediakan jaringan ujian dan RPC tersuai." "message": "Akses ciri-ciri pembangun, muat turun Log Keadaan, Set Semula Akaun, sediakan jaringan ujian dan RPC tersuai"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Pilihan Lanjutan" "message": "Pilihan Lanjutan"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "Asas" "message": "Asas"
}, },
"betweenMinAndMax": {
"message": "mestilah lebih besar atau sama dengan $1 dan kurang atau sama dengan $2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "Sekat Explorer" "message": "Sekat Explorer"
}, },
@ -249,9 +233,6 @@
"connect": { "connect": {
"message": "Sambung" "message": "Sambung"
}, },
"connectRequest": {
"message": "Sambungkan Permintaan"
},
"connectingTo": { "connectingTo": {
"message": "Menyambungkan kepada $1" "message": "Menyambungkan kepada $1"
}, },
@ -291,9 +272,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Disalin!" "message": "Disalin!"
}, },
"copy": {
"message": "Salin"
},
"copyAddress": { "copyAddress": {
"message": "Salin alamat kepada papan klip" "message": "Salin alamat kepada papan klip"
}, },
@ -366,9 +344,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Jika anda sudah mempunyai Ether, cara paling cepat untuk mendapatkan Ether di dompet baru anda ialah dengan deposit langsung." "message": "Jika anda sudah mempunyai Ether, cara paling cepat untuk mendapatkan Ether di dompet baru anda ialah dengan deposit langsung."
}, },
"dismiss": {
"message": "Singkirkan"
},
"done": { "done": {
"message": "Selesai" "message": "Selesai"
}, },
@ -527,10 +502,6 @@
"getStarted": { "getStarted": {
"message": "Bermula" "message": "Bermula"
}, },
"greaterThanMin": {
"message": "mestilah melebihi atau bersamaan dengan $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Kami gembira bertemu anda." "message": "Kami gembira bertemu anda."
}, },
@ -645,10 +616,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Anda perlu menggunakan akaun terakhir anda sebelum anda boleh menambah yang baru." "message": "Anda perlu menggunakan akaun terakhir anda sebelum anda boleh menambah yang baru."
}, },
"lessThanMax": {
"message": "mestilah kurang atau bersamaan dengan $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Ya, mari sediakannya!" "message": "Ya, mari sediakannya!"
}, },
@ -841,9 +808,6 @@
"message": "Tampal rentetan kekunci persendirian anda di sini:", "message": "Tampal rentetan kekunci persendirian anda di sini:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Tampal ungkapan benih anda di sini!"
},
"pending": { "pending": {
"message": "menunggu" "message": "menunggu"
}, },
@ -1157,9 +1121,6 @@
"storePhrase": { "storePhrase": {
"message": "Simpan ungkapan ini di dalam pengurus kata laluan seperti 1Password." "message": "Simpan ungkapan ini di dalam pengurus kata laluan seperti 1Password."
}, },
"submit": {
"message": "Serah"
},
"submitted": { "submitted": {
"message": "Dihantar" "message": "Dihantar"
}, },
@ -1324,9 +1285,6 @@
"userName": { "userName": {
"message": "Nama pengguna" "message": "Nama pengguna"
}, },
"validFileImport": {
"message": "Anda mesti pilih fail yang sah untuk diimport."
},
"viewAccount": { "viewAccount": {
"message": "Paparkan Akaun" "message": "Paparkan Akaun"
}, },

@ -1,16 +1,7 @@
{ {
"confirmClear": {
"message": "Weet je zeker dat je goedgekeurde websites wilt wissen?"
},
"clearApprovalData": {
"message": "Gegevens over goedkeuring wissen"
},
"reject": { "reject": {
"message": "Afwijzen" "message": "Afwijzen"
}, },
"providerRequestInfo": {
"message": "Het onderstaande domein probeert toegang tot de Ethereum API te vragen zodat deze kan communiceren met de Ethereum-blockchain. Controleer altijd eerst of u op de juiste site bent voordat u Ethereum-toegang goedkeurt."
},
"accountDetails": { "accountDetails": {
"message": "Accountgegevens" "message": "Accountgegevens"
}, },
@ -52,10 +43,6 @@
"balanceIsInsufficientGas": { "balanceIsInsufficientGas": {
"message": "Onvoldoende saldo voor huidig gastotaal" "message": "Onvoldoende saldo voor huidig gastotaal"
}, },
"betweenMinAndMax": {
"message": "moet groter zijn dan of gelijk zijn aan $1 en kleiner dan of gelijk aan $2.",
"description": "helper for inputting hex as decimal input"
},
"blockiesIdenticon": { "blockiesIdenticon": {
"message": "Gebruik Blockies Identicon" "message": "Gebruik Blockies Identicon"
}, },
@ -92,9 +79,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Gekopieerde!" "message": "Gekopieerde!"
}, },
"copy": {
"message": "Kopiëren"
},
"copyToClipboard": { "copyToClipboard": {
"message": "Kopieer naar klembord" "message": "Kopieer naar klembord"
}, },
@ -197,10 +181,6 @@
"message": "Haal Ether uit een kraan voor de $1", "message": "Haal Ether uit een kraan voor de $1",
"description": "Displays network name for Ether faucet" "description": "Displays network name for Ether faucet"
}, },
"greaterThanMin": {
"message": "moet groter zijn dan of gelijk zijn aan $1.",
"description": "helper for inputting hex as decimal input"
},
"here": { "here": {
"message": "hier", "message": "hier",
"description": "as in -click here- for more information (goes with troubleTokenBalances)" "description": "as in -click here- for more information (goes with troubleTokenBalances)"
@ -259,10 +239,6 @@
"kovan": { "kovan": {
"message": "Kovan-testnetwerk" "message": "Kovan-testnetwerk"
}, },
"lessThanMax": {
"message": "moet kleiner zijn dan of gelijk zijn aan $1.",
"description": "helper for inputting hex as decimal input"
},
"likeToAddTokens": { "likeToAddTokens": {
"message": "Wil je deze tokens toevoegen?" "message": "Wil je deze tokens toevoegen?"
}, },
@ -331,9 +307,6 @@
"message": "Plak hier uw privésleutelstring:", "message": "Plak hier uw privésleutelstring:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Plak je back-up woorden hier!"
},
"personalAddressDetected": { "personalAddressDetected": {
"message": "Persoonlijk adres gedetecteerd. Voer het tokencontractadres in." "message": "Persoonlijk adres gedetecteerd. Voer het tokencontractadres in."
}, },
@ -437,9 +410,6 @@
"stateLogsDescription": { "stateLogsDescription": {
"message": "Staatslogboeken bevatten uw openbare accountadressen en verzonden transacties." "message": "Staatslogboeken bevatten uw openbare accountadressen en verzonden transacties."
}, },
"submit": {
"message": "voorleggen"
},
"supportCenter": { "supportCenter": {
"message": "Bezoek ons ondersteuningscentrum" "message": "Bezoek ons ondersteuningscentrum"
}, },
@ -484,9 +454,6 @@
"usedByClients": { "usedByClients": {
"message": "Gebruikt door verschillende klanten" "message": "Gebruikt door verschillende klanten"
}, },
"validFileImport": {
"message": "U moet een geldig bestand selecteren om te importeren."
},
"viewAccount": { "viewAccount": {
"message": "Bekijk account" "message": "Bekijk account"
}, },

@ -1,33 +1,21 @@
{ {
"privacyModeDefault": {
"message": "Personvernmodus er nå aktivert som standard"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Diagram kun tilgjengelig på Ethereum-nettverk." "message": "Diagram kun tilgjengelig på Ethereum-nettverk."
}, },
"confirmClear": {
"message": "Er du sikker på at du vil tømme godkjente nettsteder?"
},
"contractInteraction": { "contractInteraction": {
"message": "Kontraktssamhandling" "message": "Kontraktssamhandling"
}, },
"clearApprovalData": {
"message": "Tøm personvernsdata"
},
"reject": { "reject": {
"message": "Avslå" "message": "Avslå"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 ønsker å forbindes med kontoen din " "message": "$1 ønsker å forbindes med kontoen din "
}, },
"providerRequestInfo": {
"message": "Dette nettstedet ber om tilgang til å vise din nåværende kontoadresse. Alltid kontroller at du stoler på nettstedene du samhandler med."
},
"about": { "about": {
"message": "Info" "message": "Info"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Versjon, brukerstøtte og kontaktinformasjon." "message": "Versjon, brukerstøtte og kontaktinformasjon"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Akselerering av en transaksjon ved å bruke en høyere datakraftspris øker sjansene for å bli behandlet av nettverket raskere, men det er ikke alltid garantert." "message": "* Akselerering av en transaksjon ved å bruke en høyere datakraftspris øker sjansene for å bli behandlet av nettverket raskere, men det er ikke alltid garantert."
@ -63,7 +51,7 @@
"message": "Avansert" "message": "Avansert"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Få tilgang til utviklerfunksjoner, last ned tilstandslogger, tilbakestill konto, installer testnett og tilpasset RPC." "message": "Få tilgang til utviklerfunksjoner, last ned tilstandslogger, tilbakestill konto, installer testnett og tilpasset RPC"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Avanserte valg" "message": "Avanserte valg"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "Enkle" "message": "Enkle"
}, },
"betweenMinAndMax": {
"message": "må være større enn eller det samme som $1 og mindre enn eller det samme som $2. ",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "Blokkér Explorer" "message": "Blokkér Explorer"
}, },
@ -249,9 +233,6 @@
"connect": { "connect": {
"message": "Koble til" "message": "Koble til"
}, },
"connectRequest": {
"message": "Kontaktforespørsel "
},
"connectingTo": { "connectingTo": {
"message": "Forbinder til $1 " "message": "Forbinder til $1 "
}, },
@ -291,9 +272,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Kopiert!" "message": "Kopiert!"
}, },
"copy": {
"message": "Kopier"
},
"copyAddress": { "copyAddress": {
"message": "Kopier adresse til utklippstavlen " "message": "Kopier adresse til utklippstavlen "
}, },
@ -372,9 +350,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Hvis du allerede har noe Ether, er den raskeste måten å få Ether i den nye lommeboken din på ved hjelp av direkte innskudd." "message": "Hvis du allerede har noe Ether, er den raskeste måten å få Ether i den nye lommeboken din på ved hjelp av direkte innskudd."
}, },
"dismiss": {
"message": "Lukk"
},
"done": { "done": {
"message": "Ferdig" "message": "Ferdig"
}, },
@ -536,10 +511,6 @@
"getStarted": { "getStarted": {
"message": "Kom i gang" "message": "Kom i gang"
}, },
"greaterThanMin": {
"message": "Må være mer enn eller tilsvarende $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Vi er glade for å se deg " "message": "Vi er glade for å se deg "
}, },
@ -655,10 +626,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Du må bruke den siste kontoen din før du kan legge til en ny." "message": "Du må bruke den siste kontoen din før du kan legge til en ny."
}, },
"lessThanMax": {
"message": "Må være mindre eller likt som $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Ja, la oss komme i gang!" "message": "Ja, la oss komme i gang!"
}, },
@ -860,9 +827,6 @@
"message": "Lim inn din private nøkkelstreng her:", "message": "Lim inn din private nøkkelstreng her:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Lim inn seed-frasen din her!"
},
"pending": { "pending": {
"message": "i påvente " "message": "i påvente "
}, },
@ -1164,9 +1128,6 @@
"storePhrase": { "storePhrase": {
"message": "Lagre denne frasen i en passordbehandler slik som 1Password." "message": "Lagre denne frasen i en passordbehandler slik som 1Password."
}, },
"submit": {
"message": "Send"
},
"submitted": { "submitted": {
"message": "Sendt inn" "message": "Sendt inn"
}, },
@ -1328,9 +1289,6 @@
"userName": { "userName": {
"message": "Brukernavn" "message": "Brukernavn"
}, },
"validFileImport": {
"message": "Du må velge en gyldig fil å importere"
},
"viewAccount": { "viewAccount": {
"message": "Se konto" "message": "Se konto"
}, },

@ -1,10 +1,4 @@
{ {
"confirmClear": {
"message": "Sigurado ka bang gusto mong i-clear ang mga naaprubahang website?"
},
"clearApprovalData": {
"message": "Tanggalin ang data ng pag-apruba"
},
"appName": { "appName": {
"message": "MetaMask", "message": "MetaMask",
"description": "The name of the application" "description": "The name of the application"
@ -15,9 +9,6 @@
"reject": { "reject": {
"message": "Tanggihan" "message": "Tanggihan"
}, },
"providerRequestInfo": {
"message": "Ang domain na nakalista sa ibaba ay sinusubukang humiling ng access sa Ethereum API upang maaari itong makipag-ugnayan sa Ethereum blockchain. Laging i-double check na ikaw ay nasa tamang site bago aprubahan ang Ethereum access."
},
"accountDetails": { "accountDetails": {
"message": "Detalye ng Account" "message": "Detalye ng Account"
}, },
@ -46,10 +37,6 @@
"balanceIsInsufficientGas": { "balanceIsInsufficientGas": {
"message": "Kulang ang balanse para sa kasalukuyang gas total" "message": "Kulang ang balanse para sa kasalukuyang gas total"
}, },
"betweenMinAndMax": {
"message": "dapat mas malaki o katumbas ng $1 at mas mababa o katumbas ng $2.",
"description": "helper para sa pag-input ng hex bilang decimal input"
},
"buyCoinSwitch": { "buyCoinSwitch": {
"message": "Bumili sa CoinSwitch" "message": "Bumili sa CoinSwitch"
}, },
@ -80,9 +67,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Kinopya!" "message": "Kinopya!"
}, },
"copy": {
"message": "Kinopya"
},
"copyToClipboard": { "copyToClipboard": {
"message": "Kinopya sa clipboard" "message": "Kinopya sa clipboard"
}, },
@ -167,10 +151,6 @@
"message": "Kumuha ng Ether mula sa faucet para sa $1", "message": "Kumuha ng Ether mula sa faucet para sa $1",
"description": "Ipinapakita ang pangalan ng network para sa Ether faucet" "description": "Ipinapakita ang pangalan ng network para sa Ether faucet"
}, },
"greaterThanMin": {
"message": "dapat mas malaki o katumbas ng $1.",
"description": "helper para sa pag-input ng hex bilang decimal input"
},
"here": { "here": {
"message": "i-click ito", "message": "i-click ito",
"description": "tulad ng -i-click dito- para sa mas maraming impormasyon (kasama ng troubleTokenBalances)" "description": "tulad ng -i-click dito- para sa mas maraming impormasyon (kasama ng troubleTokenBalances)"
@ -204,10 +184,6 @@
"invalidInput": { "invalidInput": {
"message": "Invalid ang input." "message": "Invalid ang input."
}, },
"lessThanMax": {
"message": "dapat mas mababa o katumbas ng $1.",
"description": "helper para sa pag-input ng hex bilang decimal input"
},
"loading": { "loading": {
"message": "Naglo-load..." "message": "Naglo-load..."
}, },
@ -252,9 +228,6 @@
"message": "I-paste dito ang iyong private key string:", "message": "I-paste dito ang iyong private key string:",
"description": "Para sa pag-import ng account mula sa private key" "description": "Para sa pag-import ng account mula sa private key"
}, },
"pasteSeed": {
"message": "I-paste dito ang iyong seed phrase!"
},
"privateKeyWarning": { "privateKeyWarning": {
"message": "Babala: Huwag sabihin sa kahit na sino ang key na ito. Maaring makuha at manakaw ng sinumang nakakaalam ng iyong private key ang mga assets sa iyong account." "message": "Babala: Huwag sabihin sa kahit na sino ang key na ito. Maaring makuha at manakaw ng sinumang nakakaalam ng iyong private key ang mga assets sa iyong account."
}, },
@ -303,9 +276,6 @@
"sigRequest": { "sigRequest": {
"message": "Hiling na Signature" "message": "Hiling na Signature"
}, },
"submit": {
"message": "I-submit"
},
"toETHviaShapeShift": { "toETHviaShapeShift": {
"message": "$1 sa ETH sa pamamagitan ng ShapeShift", "message": "$1 sa ETH sa pamamagitan ng ShapeShift",
"description": "Pupunan ng system ang deposit type sa simula ng mensahe" "description": "Pupunan ng system ang deposit type sa simula ng mensahe"

@ -1,33 +1,21 @@
{ {
"privacyModeDefault": {
"message": "Tryb prywatny jest domyślnie włączony"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Wykres dostępny tylko w sieciach Ethereum" "message": "Wykres dostępny tylko w sieciach Ethereum"
}, },
"confirmClear": {
"message": "Czy na pewno chcesz usunąć zatwierdzone strony internetowe?"
},
"contractInteraction": { "contractInteraction": {
"message": "Interakcja z kontraktem" "message": "Interakcja z kontraktem"
}, },
"clearApprovalData": {
"message": "Usuń dane poufne"
},
"reject": { "reject": {
"message": "Odrzuć" "message": "Odrzuć"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 chce połączyć się z Twoim kontem" "message": "$1 chce połączyć się z Twoim kontem"
}, },
"providerRequestInfo": {
"message": "Ta strona prosi o dostęp, aby zobaczyć adres Twojego aktualnego konta. Zawsze upewnij się, że ufasz stronom, z którymi wchodzisz w interakcję."
},
"about": { "about": {
"message": "Informacje" "message": "Informacje"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Wersja, centrum wsparcia i dane kontaktowe." "message": "Wersja, centrum wsparcia i dane kontaktowe"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Przyspieszenie transakcji poprzez zastosowanie wyższej ceny gazu zwiększa szanse na jej szybsze przetworzenie przez sieć, jednak skuteczność tej operacji nie jest gwarantowana." "message": "* Przyspieszenie transakcji poprzez zastosowanie wyższej ceny gazu zwiększa szanse na jej szybsze przetworzenie przez sieć, jednak skuteczność tej operacji nie jest gwarantowana."
@ -63,7 +51,7 @@
"message": "Zaawansowane" "message": "Zaawansowane"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Dostęp do funkcji programisty, pobieranie dzienników stanu, resetowanie konta, konfigurowanie sieci testowych i niestandardowe RPC." "message": "Dostęp do funkcji programisty, pobieranie dzienników stanu, resetowanie konta, konfigurowanie sieci testowych i niestandardowe RPC"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Opcje zaawansowane" "message": "Opcje zaawansowane"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "Podstawy" "message": "Podstawy"
}, },
"betweenMinAndMax": {
"message": "musi być większe lub równe $1 i mniejsze lub równe $2,",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "Przeglądaj blok" "message": "Przeglądaj blok"
}, },
@ -249,9 +233,6 @@
"connect": { "connect": {
"message": "Połącz" "message": "Połącz"
}, },
"connectRequest": {
"message": "Potwierdź żądanie"
},
"connectingTo": { "connectingTo": {
"message": "Łączenie z $1" "message": "Łączenie z $1"
}, },
@ -291,9 +272,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Skopiowane!" "message": "Skopiowane!"
}, },
"copy": {
"message": "Skopiuj"
},
"copyAddress": { "copyAddress": {
"message": "Skopiuj adres do schowka" "message": "Skopiuj adres do schowka"
}, },
@ -372,9 +350,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Jeśli już masz Eter, najszybciej umieścisz go w swoim nowym portfelu przy pomocy bezpośredniego depozytu." "message": "Jeśli już masz Eter, najszybciej umieścisz go w swoim nowym portfelu przy pomocy bezpośredniego depozytu."
}, },
"dismiss": {
"message": "Zamknij"
},
"done": { "done": {
"message": "Gotowe" "message": "Gotowe"
}, },
@ -540,10 +515,6 @@
"getStarted": { "getStarted": {
"message": "Rozpocznij" "message": "Rozpocznij"
}, },
"greaterThanMin": {
"message": "musi być większe lub równe $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Cieszymy się, że tu jesteś." "message": "Cieszymy się, że tu jesteś."
}, },
@ -662,10 +633,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Musisz użyć swojego poprzedniego konta zanim dodasz kolejne." "message": "Musisz użyć swojego poprzedniego konta zanim dodasz kolejne."
}, },
"lessThanMax": {
"message": "musi być mniejsze lub równe $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Tak, zacznijmy od początku!" "message": "Tak, zacznijmy od początku!"
}, },
@ -861,9 +828,6 @@
"message": "Tutaj wklej swój prywatny klucz:", "message": "Tutaj wklej swój prywatny klucz:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Tutaj wklej swoją frazę seed!"
},
"pending": { "pending": {
"message": "oczekiwanie" "message": "oczekiwanie"
}, },
@ -1177,9 +1141,6 @@
"storePhrase": { "storePhrase": {
"message": "Przechowuj tę frazę w menedżerze haseł, takim jak 1Password." "message": "Przechowuj tę frazę w menedżerze haseł, takim jak 1Password."
}, },
"submit": {
"message": "Wyślij"
},
"submitted": { "submitted": {
"message": "Wysłane" "message": "Wysłane"
}, },
@ -1341,9 +1302,6 @@
"userName": { "userName": {
"message": "Nazwa użytkownika" "message": "Nazwa użytkownika"
}, },
"validFileImport": {
"message": "Należy wybrać prawidłowy plik do zaimportowania."
},
"viewAccount": { "viewAccount": {
"message": "Zobacz konto" "message": "Zobacz konto"
}, },

@ -1,16 +1,7 @@
{ {
"confirmClear": {
"message": "Tem certeza de que deseja limpar sites aprovados?"
},
"clearApprovalData": {
"message": "Limpar dados de aprovação"
},
"reject": { "reject": {
"message": "Rejeitar" "message": "Rejeitar"
}, },
"providerRequestInfo": {
"message": "O domínio listado abaixo está tentando solicitar acesso à API Ethereum para que ele possa interagir com o blockchain Ethereum. Sempre verifique se você está no site correto antes de aprovar o acesso à Ethereum."
},
"account": { "account": {
"message": "Conta" "message": "Conta"
}, },
@ -55,10 +46,6 @@
"balanceIsInsufficientGas": { "balanceIsInsufficientGas": {
"message": "Saldo insuficiente para a quantidade de gas total" "message": "Saldo insuficiente para a quantidade de gas total"
}, },
"betweenMinAndMax": {
"message": "tem de ser maior ou igual a $1 e menor ou igual a $2.",
"description": "helper for inputting hex as decimal input"
},
"blockiesIdenticon": { "blockiesIdenticon": {
"message": "Usar Blockies Identicon" "message": "Usar Blockies Identicon"
}, },
@ -95,9 +82,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Copiado!" "message": "Copiado!"
}, },
"copy": {
"message": "Copiar"
},
"copyToClipboard": { "copyToClipboard": {
"message": "Copiar para o clipboard" "message": "Copiar para o clipboard"
}, },
@ -203,10 +187,6 @@
"message": "Obter Ether de um faucet por $1", "message": "Obter Ether de um faucet por $1",
"description": "Displays network name for Ether faucet" "description": "Displays network name for Ether faucet"
}, },
"greaterThanMin": {
"message": "tem de ser maior ou igual a $1.",
"description": "helper for inputting hex as decimal input"
},
"here": { "here": {
"message": "aqui", "message": "aqui",
"description": "as in -click here- for more information (goes with troubleTokenBalances)" "description": "as in -click here- for more information (goes with troubleTokenBalances)"
@ -265,10 +245,6 @@
"kovan": { "kovan": {
"message": "Rede de Teste Kovan" "message": "Rede de Teste Kovan"
}, },
"lessThanMax": {
"message": "tem de ser menor ou igual a $1.",
"description": "helper for inputting hex as decimal input"
},
"likeToAddTokens": { "likeToAddTokens": {
"message": "Gostaria de adicionar estes tokens?" "message": "Gostaria de adicionar estes tokens?"
}, },
@ -341,9 +317,6 @@
"message": "Cole aqui a sua chave privada:", "message": "Cole aqui a sua chave privada:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Cole aqui a sua frase seed!"
},
"personalAddressDetected": { "personalAddressDetected": {
"message": "Endereço pessoal detectado. Introduza o endereço do contrato do token." "message": "Endereço pessoal detectado. Introduza o endereço do contrato do token."
}, },
@ -447,9 +420,6 @@
"stateLogsDescription": { "stateLogsDescription": {
"message": "Registo de estado podem conter o seu endereço e transações enviadas da sua conta pública." "message": "Registo de estado podem conter o seu endereço e transações enviadas da sua conta pública."
}, },
"submit": {
"message": "Submeter"
},
"supportCenter": { "supportCenter": {
"message": "Visitar o nosso Centro de Suporte" "message": "Visitar o nosso Centro de Suporte"
}, },
@ -494,9 +464,6 @@
"usedByClients": { "usedByClients": {
"message": "Utilizado por vários tipos de clientes" "message": "Utilizado por vários tipos de clientes"
}, },
"validFileImport": {
"message": "Deve selecionar um ficheiro válido para importar."
},
"viewAccount": { "viewAccount": {
"message": "Ver Conta" "message": "Ver Conta"
}, },

@ -1,19 +1,10 @@
{ {
"privacyModeDefault": {
"message": "O Modo de Privacidade está ativado por padrão"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Tabela disponível apenas em redes de Ethereum." "message": "Tabela disponível apenas em redes de Ethereum."
}, },
"confirmClear": {
"message": "Tem certeza de que deseja limpar os sites aprovados?"
},
"contractInteraction": { "contractInteraction": {
"message": "Interação do Contrato" "message": "Interação do Contrato"
}, },
"clearApprovalData": {
"message": "Limpar Dados de Privacidade"
},
"appName": { "appName": {
"message": "MetaMask", "message": "MetaMask",
"description": "The name of the application" "description": "The name of the application"
@ -21,17 +12,14 @@
"reject": { "reject": {
"message": "Rejeitar" "message": "Rejeitar"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 gostaria de se conectar à sua conta" "message": "$1 gostaria de se conectar à sua conta"
}, },
"providerRequestInfo": {
"message": "Este site está solicitando acesso para visualizar o seu endereço de conta atual. Certifique-se sempre de confiar nos sites com os quais você interage."
},
"about": { "about": {
"message": "Sobre" "message": "Sobre"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Versão, centro de apoio e informações de contato." "message": "Versão, centro de apoio e informações de contato"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Acelerar uma transação usando um preço de gás mais alto aumenta suas chances de a rede processá-la de forma mais rápida, mas isso nem sempre é garantido." "message": "* Acelerar uma transação usando um preço de gás mais alto aumenta suas chances de a rede processá-la de forma mais rápida, mas isso nem sempre é garantido."
@ -67,7 +55,7 @@
"message": "Avançado" "message": "Avançado"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Acesse recursos do desenvolvedor, baixe registros de estado, redefina a conta, configure testnets e personalize RPC." "message": "Acesse recursos do desenvolvedor, baixe registros de estado, redefina a conta, configure testnets e personalize RPC"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Opções avançadas" "message": "Opções avançadas"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "Básicas" "message": "Básicas"
}, },
"betweenMinAndMax": {
"message": "deve ser maior ou igual a $1 e menor ou igual a $2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerView": { "blockExplorerView": {
"message": "Ver conta em $1", "message": "Ver conta em $1",
"description": "$1 replaced by URL for custom block explorer" "description": "$1 replaced by URL for custom block explorer"
@ -246,9 +230,6 @@
"connect": { "connect": {
"message": "Conectar-se" "message": "Conectar-se"
}, },
"connectRequest": {
"message": "Solicitação de Conexão"
},
"connectingTo": { "connectingTo": {
"message": "Conectando a $1" "message": "Conectando a $1"
}, },
@ -288,9 +269,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Copiado!" "message": "Copiado!"
}, },
"copy": {
"message": "Copiar"
},
"copyAddress": { "copyAddress": {
"message": "Copiar endereço para a área de transferência" "message": "Copiar endereço para a área de transferência"
}, },
@ -369,9 +347,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Se você já tem Ether, a forma mais rápida de colocá-lo em sua nova carteira é o depósito direto." "message": "Se você já tem Ether, a forma mais rápida de colocá-lo em sua nova carteira é o depósito direto."
}, },
"dismiss": {
"message": "Dispensar"
},
"done": { "done": {
"message": "Concluído" "message": "Concluído"
}, },
@ -537,10 +512,6 @@
"getStarted": { "getStarted": {
"message": "Primeiros passos" "message": "Primeiros passos"
}, },
"greaterThanMin": {
"message": "deve ser maior ou igual a $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Estamos felizes em vê-lo." "message": "Estamos felizes em vê-lo."
}, },
@ -659,10 +630,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Você precisa usar sua última conta antes de adicionar uma nova." "message": "Você precisa usar sua última conta antes de adicionar uma nova."
}, },
"lessThanMax": {
"message": "deve ser inferior ou igual a $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Sim, vamos configurar!" "message": "Sim, vamos configurar!"
}, },
@ -855,9 +822,6 @@
"message": "Cole a string de sua chave particular aqui:", "message": "Cole a string de sua chave particular aqui:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Cole sua seed phrase aqui!"
},
"pending": { "pending": {
"message": "pendente" "message": "pendente"
}, },
@ -1171,9 +1135,6 @@
"storePhrase": { "storePhrase": {
"message": "Guarde esta frase em um gerenciador de senhas como o 1Password." "message": "Guarde esta frase em um gerenciador de senhas como o 1Password."
}, },
"submit": {
"message": "Enviar"
},
"submitted": { "submitted": {
"message": "Enviado" "message": "Enviado"
}, },
@ -1335,9 +1296,6 @@
"userName": { "userName": {
"message": "Nome de usuário" "message": "Nome de usuário"
}, },
"validFileImport": {
"message": "Você precisa selecionar um arquivo válido para importar."
},
"viewAccount": { "viewAccount": {
"message": "Visualizar conta" "message": "Visualizar conta"
}, },

@ -48,9 +48,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Copiado!" "message": "Copiado!"
}, },
"copy": {
"message": "Copiar"
},
"copyToClipboard": { "copyToClipboard": {
"message": "Copiar para a área de transferência" "message": "Copiar para a área de transferência"
}, },
@ -66,9 +63,6 @@
"details": { "details": {
"message": "Detalhes" "message": "Detalhes"
}, },
"dismiss": {
"message": "Ignorar"
},
"done": { "done": {
"message": "Concluído" "message": "Concluído"
}, },
@ -156,9 +150,6 @@
"settings": { "settings": {
"message": "Definições" "message": "Definições"
}, },
"submit": {
"message": "Submeter"
},
"tips": { "tips": {
"message": "Doações" "message": "Doações"
}, },

@ -1,33 +1,21 @@
{ {
"privacyModeDefault": {
"message": "Modul de confidențialitate este activat acum în mod implicit"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Grafic disponibil numai pe rețelele Ethereum." "message": "Grafic disponibil numai pe rețelele Ethereum."
}, },
"confirmClear": {
"message": "Sunteți sigur că doriți să ștergeți site-urile aprobate?"
},
"contractInteraction": { "contractInteraction": {
"message": "Interacțiune contract" "message": "Interacțiune contract"
}, },
"clearApprovalData": {
"message": "Ștergeți datele confidențiale"
},
"reject": { "reject": {
"message": "Respingeți" "message": "Respingeți"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 ar dori să se conecteze la contul dvs." "message": "$1 ar dori să se conecteze la contul dvs."
}, },
"providerRequestInfo": {
"message": "Acest site solicită acces pentru a vedea adresa curentă a contului dvs. Asigurați-vă întotdeauna că aveți încredere în site-urile cu care interacționați."
},
"about": { "about": {
"message": "Despre" "message": "Despre"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Versiune, centru de asistență și date de contact." "message": "Versiune, centru de asistență și date de contact"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Accelerarea unei tranzacții folosind un preț în gas mai mare îi crește șansele de a fi procesată mai rapid de rețea, însă acest lucru nu este garantat întotdeauna." "message": "* Accelerarea unei tranzacții folosind un preț în gas mai mare îi crește șansele de a fi procesată mai rapid de rețea, însă acest lucru nu este garantat întotdeauna."
@ -63,7 +51,7 @@
"message": "Avansate" "message": "Avansate"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Accesați funcții pentru dezvoltatori, descărcați Jurnale de stare, resetați contul, configurați rețele de test și RPC personalizat." "message": "Accesați funcții pentru dezvoltatori, descărcați Jurnale de stare, resetați contul, configurați rețele de test și RPC personalizat"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Opțiuni avansate" "message": "Opțiuni avansate"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "De bază" "message": "De bază"
}, },
"betweenMinAndMax": {
"message": "trebuie să fie mai mare sau egal cu $1 și mai mic sau egal cu $2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "Explorator blocuri" "message": "Explorator blocuri"
}, },
@ -252,9 +236,6 @@
"connect": { "connect": {
"message": "Conectează-te" "message": "Conectează-te"
}, },
"connectRequest": {
"message": "Solicitare de conectare"
},
"connectingTo": { "connectingTo": {
"message": "Se conectează la $1" "message": "Se conectează la $1"
}, },
@ -294,9 +275,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Copiat!" "message": "Copiat!"
}, },
"copy": {
"message": "Copiază"
},
"copyAddress": { "copyAddress": {
"message": "Copiere adresă în clipboard" "message": "Copiere adresă în clipboard"
}, },
@ -375,9 +353,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Dacă deja aveți Ether, cel mai rapid mod de a avea Ether în portofelul nou prin depunere directă." "message": "Dacă deja aveți Ether, cel mai rapid mod de a avea Ether în portofelul nou prin depunere directă."
}, },
"dismiss": {
"message": "Închide"
},
"done": { "done": {
"message": "Efectuat" "message": "Efectuat"
}, },
@ -536,10 +511,6 @@
"getStarted": { "getStarted": {
"message": "Începe" "message": "Începe"
}, },
"greaterThanMin": {
"message": "trebuie să fie mai mare sau egal cu $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Ne pare bine să vă vedem." "message": "Ne pare bine să vă vedem."
}, },
@ -655,10 +626,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Trebuie să folosiți ultimul cont înainte să adăugați altul." "message": "Trebuie să folosiți ultimul cont înainte să adăugați altul."
}, },
"lessThanMax": {
"message": "trebuie să fie mai mic sau egal cu $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Da, hai să configurăm!" "message": "Da, hai să configurăm!"
}, },
@ -857,9 +824,6 @@
"message": "Lipiți aici șirul de chei private:", "message": "Lipiți aici șirul de chei private:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Copiați-vă expresia seed aici!"
},
"pending": { "pending": {
"message": "în așteptare" "message": "în așteptare"
}, },
@ -1173,9 +1137,6 @@
"storePhrase": { "storePhrase": {
"message": "Păstrați această expresie într-un program de gestionare a parolelor cum ar fi 1Password." "message": "Păstrați această expresie într-un program de gestionare a parolelor cum ar fi 1Password."
}, },
"submit": {
"message": "Trimite"
},
"submitted": { "submitted": {
"message": "Trimis" "message": "Trimis"
}, },
@ -1337,9 +1298,6 @@
"userName": { "userName": {
"message": "Nume utilizator" "message": "Nume utilizator"
}, },
"validFileImport": {
"message": "Trebuie să selectați un fișier valabil pentru importare."
},
"viewAccount": { "viewAccount": {
"message": "Afișați contul" "message": "Afișați contul"
}, },

@ -1,16 +1,7 @@
{ {
"confirmClear": {
"message": "Вы уверены, что хотите очистить утвержденные веб-сайты?Tem certeza de que deseja limpar sites aprovados?"
},
"clearApprovalData": {
"message": "Четкие данные об утверждении"
},
"reject": { "reject": {
"message": "Отклонить" "message": "Отклонить"
}, },
"providerRequestInfo": {
"message": "Домен, указанный ниже, пытается запросить доступ к API-интерфейсу Ethereum, чтобы он мог взаимодействовать с блокчейном Ethereum. Всегда проверяйте, что вы находитесь на правильном сайте, прежде чем одобрять доступ к веб-сайту."
},
"account": { "account": {
"message": "Счет" "message": "Счет"
}, },
@ -58,10 +49,6 @@
"balanceIsInsufficientGas": { "balanceIsInsufficientGas": {
"message": "Недостаточный баланс для текущего объема газа" "message": "Недостаточный баланс для текущего объема газа"
}, },
"betweenMinAndMax": {
"message": "должно быть больше или равно $1 и меньше или равно $2.",
"description": "helper for inputting hex as decimal input"
},
"blockiesIdenticon": { "blockiesIdenticon": {
"message": "Использовать Blockies Identicon" "message": "Использовать Blockies Identicon"
}, },
@ -116,9 +103,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Скопировано!" "message": "Скопировано!"
}, },
"copy": {
"message": "Скопировать"
},
"copyToClipboard": { "copyToClipboard": {
"message": "Скопировать в буфер обмена" "message": "Скопировать в буфер обмена"
}, },
@ -230,10 +214,6 @@
"message": "Получить Ether из крана для $1", "message": "Получить Ether из крана для $1",
"description": "Displays network name for Ether faucet" "description": "Displays network name for Ether faucet"
}, },
"greaterThanMin": {
"message": "должно быть больше или равно $1.",
"description": "helper for inputting hex as decimal input"
},
"here": { "here": {
"message": "тут", "message": "тут",
"description": "as in -click here- for more information (goes with troubleTokenBalances)" "description": "as in -click here- for more information (goes with troubleTokenBalances)"
@ -298,10 +278,6 @@
"learnMore": { "learnMore": {
"message": "Узнать больше." "message": "Узнать больше."
}, },
"lessThanMax": {
"message": "должно быть меньше или равно $1.",
"description": "helper for inputting hex as decimal input"
},
"likeToAddTokens": { "likeToAddTokens": {
"message": "Вы хотите добавить эти токены?" "message": "Вы хотите добавить эти токены?"
}, },
@ -377,9 +353,6 @@
"message": "Вставьте ваш закрытый ключ тут:", "message": "Вставьте ваш закрытый ключ тут:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Вставьте вашу ключевую фразу!"
},
"personalAddressDetected": { "personalAddressDetected": {
"message": "Обнаружен персональный адрес. Введите адрес контракта токена." "message": "Обнаружен персональный адрес. Введите адрес контракта токена."
}, },
@ -492,9 +465,6 @@
"stateLogError": { "stateLogError": {
"message": "Ошибка при получении журнала состояния." "message": "Ошибка при получении журнала состояния."
}, },
"submit": {
"message": "Отправить"
},
"submitted": { "submitted": {
"message": "Отправлена" "message": "Отправлена"
}, },
@ -548,9 +518,6 @@
"usedByClients": { "usedByClients": {
"message": "Используется различными клиентами" "message": "Используется различными клиентами"
}, },
"validFileImport": {
"message": "Вам нужно выбрать правильный файл для импорта."
},
"viewAccount": { "viewAccount": {
"message": "Посмотреть счет" "message": "Посмотреть счет"
}, },
@ -569,16 +536,13 @@
"youSign": { "youSign": {
"message": "Вы подписываете" "message": "Вы подписываете"
}, },
"privacyModeDefault": {
"message": "Режим конфиденциальности теперь включен по умолчанию"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Диаграмма доступна только в сетях Ethereum." "message": "Диаграмма доступна только в сетях Ethereum."
}, },
"contractInteraction": { "contractInteraction": {
"message": "Взаимодействие с контрактом" "message": "Взаимодействие с контрактом"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 запрашивает доступ к вашему аккаунту" "message": "$1 запрашивает доступ к вашему аккаунту"
}, },
"about": { "about": {
@ -731,9 +695,6 @@
"connect": { "connect": {
"message": "Подключиться" "message": "Подключиться"
}, },
"connectRequest": {
"message": "Запрос на подключение"
},
"connectingTo": { "connectingTo": {
"message": "Подключение к $1" "message": "Подключение к $1"
}, },
@ -776,9 +737,6 @@
"deleteAccount": { "deleteAccount": {
"message": "Удалить аккаунт" "message": "Удалить аккаунт"
}, },
"dismiss": {
"message": "Отклюнить"
},
"downloadGoogleChrome": { "downloadGoogleChrome": {
"message": "Скачать Google Chrome" "message": "Скачать Google Chrome"
}, },

@ -1,33 +1,21 @@
{ {
"privacyModeDefault": {
"message": "Režim súkromia je povolený. Je prednastavený automaticky"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Graf je k dispozícii iba v sieťach Ethereum." "message": "Graf je k dispozícii iba v sieťach Ethereum."
}, },
"confirmClear": {
"message": "Naozaj chcete vymazať schválené webové stránky?"
},
"contractInteraction": { "contractInteraction": {
"message": "Zmluvná interakcia" "message": "Zmluvná interakcia"
}, },
"clearApprovalData": {
"message": "Jasné údaje o schválení"
},
"reject": { "reject": {
"message": "Odmítnout" "message": "Odmítnout"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 sa chce pripojiť k vášmu účtu" "message": "$1 sa chce pripojiť k vášmu účtu"
}, },
"providerRequestInfo": {
"message": "Níže uvedená doména se pokouší požádat o přístup k API Ethereum, aby mohla komunikovat s blokádou Ethereum. Před schválením přístupu Ethereum vždy zkontrolujte, zda jste na správném místě."
},
"about": { "about": {
"message": "Informácie" "message": "Informácie"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Verzia, centrum podpory a kontaktné informácie." "message": "Verzia, centrum podpory a kontaktné informácie"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "*Urýchlenie transakcie pomocou vyššej ceny za GAS zvyšuje šance na rýchlejšie spracovanie v sieti, nie je to však vždy zaručené." "message": "*Urýchlenie transakcie pomocou vyššej ceny za GAS zvyšuje šance na rýchlejšie spracovanie v sieti, nie je to však vždy zaručené."
@ -63,7 +51,7 @@
"message": "Rozšírené" "message": "Rozšírené"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Získajte prístup k vývojárskym funkciám, sťahujte si Stavové denníky, resetujte účet, nastavujte testovacie siete a vlastné RPC." "message": "Získajte prístup k vývojárskym funkciám, sťahujte si Stavové denníky, resetujte účet, nastavujte testovacie siete a vlastné RPC"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Rozšírené nastavenia" "message": "Rozšírené nastavenia"
@ -154,10 +142,6 @@
"basic": { "basic": {
"message": "Základné" "message": "Základné"
}, },
"betweenMinAndMax": {
"message": "musí být větší nebo roven $1 a menší nebo roven $2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerView": { "blockExplorerView": {
"message": "Zobraziť účet na $1", "message": "Zobraziť účet na $1",
"description": "$1 replaced by URL for custom block explorer" "description": "$1 replaced by URL for custom block explorer"
@ -243,9 +227,6 @@
"connect": { "connect": {
"message": "Pripojenie" "message": "Pripojenie"
}, },
"connectRequest": {
"message": "Požiadavka na pripojenie"
},
"connectingTo": { "connectingTo": {
"message": "Pripája sa k $1" "message": "Pripája sa k $1"
}, },
@ -285,9 +266,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Zkopírováno!" "message": "Zkopírováno!"
}, },
"copy": {
"message": "Kopírovat"
},
"copyAddress": { "copyAddress": {
"message": "Kopírovať adresu do schránky" "message": "Kopírovať adresu do schránky"
}, },
@ -366,9 +344,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Pokud už vlastníte nějaký Ether, nejrychleji ho dostanete do peněženky přímým vkladem." "message": "Pokud už vlastníte nějaký Ether, nejrychleji ho dostanete do peněženky přímým vkladem."
}, },
"dismiss": {
"message": "Zatvoriť"
},
"done": { "done": {
"message": "Hotovo" "message": "Hotovo"
}, },
@ -534,10 +509,6 @@
"getStarted": { "getStarted": {
"message": "Začať" "message": "Začať"
}, },
"greaterThanMin": {
"message": "musí být větší nebo roven $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Sme radi, že vás vidíme." "message": "Sme radi, že vás vidíme."
}, },
@ -643,10 +614,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Skôr ako budete môcť pridať nový účet, musíte použiť svoj posledný účet." "message": "Skôr ako budete môcť pridať nový účet, musíte použiť svoj posledný účet."
}, },
"lessThanMax": {
"message": "musí být menší nebo roven $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Áno, poďme to nastaviť!" "message": "Áno, poďme to nastaviť!"
}, },
@ -836,9 +803,6 @@
"message": "Vložte zde svůj privátní klíč:", "message": "Vložte zde svůj privátní klíč:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Svou klíčovou frázi vložte zde!"
},
"pending": { "pending": {
"message": "prebieha" "message": "prebieha"
}, },
@ -1146,9 +1110,6 @@
"storePhrase": { "storePhrase": {
"message": "Túto frázu uložte do správcu hesiel ako 1Password." "message": "Túto frázu uložte do správcu hesiel ako 1Password."
}, },
"submit": {
"message": "Odeslat"
},
"submitted": { "submitted": {
"message": "Odesláno" "message": "Odesláno"
}, },
@ -1310,9 +1271,6 @@
"userName": { "userName": {
"message": "Meno používateľa" "message": "Meno používateľa"
}, },
"validFileImport": {
"message": "Musíte vybrat validní soubor k importu."
},
"viewAccount": { "viewAccount": {
"message": "Zobrazit účet" "message": "Zobrazit účet"
}, },

@ -1,33 +1,21 @@
{ {
"privacyModeDefault": {
"message": "Zasebnostni način je zdaj privzeto omogočen"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Grafikon na voljo le v glavnih omrežjih." "message": "Grafikon na voljo le v glavnih omrežjih."
}, },
"confirmClear": {
"message": "Ste prepričani da želite počistiti odobrene spletne strani?"
},
"contractInteraction": { "contractInteraction": {
"message": "Interakcija s pogodbo" "message": "Interakcija s pogodbo"
}, },
"clearApprovalData": {
"message": "Počisti podatke o odobritvi"
},
"reject": { "reject": {
"message": "Zavrni" "message": "Zavrni"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 se želi povezati z vašim računom." "message": "$1 se želi povezati z vašim računom."
}, },
"providerRequestInfo": {
"message": "Domena zahteva dostop do verige blokov in ogled vašega računa. Pred potrditvjo vedno preverite ali ste na želeni spletni strani."
},
"about": { "about": {
"message": "O možnostih" "message": "O možnostih"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Različica, center za podporo in podatki za stik." "message": "Različica, center za podporo in podatki za stik"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Pospešitev transakcije z višjo gas ceno poveča njene možnosti za hitrejšo obdelavo v omrežju, vendar ni vedno zagotovljena." "message": "* Pospešitev transakcije z višjo gas ceno poveča njene možnosti za hitrejšo obdelavo v omrežju, vendar ni vedno zagotovljena."
@ -63,7 +51,7 @@
"message": "Napredno" "message": "Napredno"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Dostopite do funkcij razvijalca, prenesite dnevnike držav, ponastavite račun, nastavite testne mreže in RPC po meri." "message": "Dostopite do funkcij razvijalca, prenesite dnevnike držav, ponastavite račun, nastavite testne mreže in RPC po meri"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Napredne možnosti" "message": "Napredne možnosti"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "Osnovno" "message": "Osnovno"
}, },
"betweenMinAndMax": {
"message": "mora biti večji ali enak $1 in manjši ali enak $1.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "Blokiraj Explorer" "message": "Blokiraj Explorer"
}, },
@ -252,9 +236,6 @@
"connect": { "connect": {
"message": "Poveži" "message": "Poveži"
}, },
"connectRequest": {
"message": "Zahteva za povezavo"
},
"connectingTo": { "connectingTo": {
"message": "Povezovanje na $1" "message": "Povezovanje na $1"
}, },
@ -294,9 +275,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Kopirano!" "message": "Kopirano!"
}, },
"copy": {
"message": "Kopiraj"
},
"copyAddress": { "copyAddress": {
"message": "Kopiraj naslov v odložišče" "message": "Kopiraj naslov v odložišče"
}, },
@ -375,9 +353,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Če že imate Ether, ga lahko najhitreje dobite v MetaMask z neposrednim vplačilom." "message": "Če že imate Ether, ga lahko najhitreje dobite v MetaMask z neposrednim vplačilom."
}, },
"dismiss": {
"message": "Opusti"
},
"done": { "done": {
"message": "Končano" "message": "Končano"
}, },
@ -537,10 +512,6 @@
"getStarted": { "getStarted": {
"message": "Začnite" "message": "Začnite"
}, },
"greaterThanMin": {
"message": "mora biti večji ali enak $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Veseli nas, da ste nas spet obiskali." "message": "Veseli nas, da ste nas spet obiskali."
}, },
@ -653,10 +624,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Za dodajanje novega računa morate uporabiti zadnji račun." "message": "Za dodajanje novega računa morate uporabiti zadnji račun."
}, },
"lessThanMax": {
"message": "mora biti manjši ali enak $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Lotimo se nastavitev!" "message": "Lotimo se nastavitev!"
}, },
@ -855,9 +822,6 @@
"message": "Tukaj prilepite vaš zasebni ključ:", "message": "Tukaj prilepite vaš zasebni ključ:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Tukaj prilepite seed phase!"
},
"pending": { "pending": {
"message": "v obdelavi" "message": "v obdelavi"
}, },
@ -1168,9 +1132,6 @@
"storePhrase": { "storePhrase": {
"message": "To geslo shranite v upravitelja gesel, kot je 1Password." "message": "To geslo shranite v upravitelja gesel, kot je 1Password."
}, },
"submit": {
"message": "Potrdi"
},
"submitted": { "submitted": {
"message": "Potrjeno" "message": "Potrjeno"
}, },
@ -1338,9 +1299,6 @@
"userName": { "userName": {
"message": "Uporabniško ime" "message": "Uporabniško ime"
}, },
"validFileImport": {
"message": "Za uvoz morate izbrati pravilno datoteko."
},
"viewAccount": { "viewAccount": {
"message": "Poglej račun" "message": "Poglej račun"
}, },

@ -1,33 +1,21 @@
{ {
"privacyModeDefault": {
"message": "Režim privatnosti je podrazumevano omogućen"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Grafikon dostupan jedino na mrežama Ethereum." "message": "Grafikon dostupan jedino na mrežama Ethereum."
}, },
"confirmClear": {
"message": "Da li ste sigurni da želite da obrišete odobrene veb lokacije?"
},
"contractInteraction": { "contractInteraction": {
"message": "Ugovorna interakcija" "message": "Ugovorna interakcija"
}, },
"clearApprovalData": {
"message": "Obrišite privatne podatke"
},
"reject": { "reject": {
"message": "Одбиј" "message": "Одбиј"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 bi hteo da se poveže sa vašim nalogom" "message": "$1 bi hteo da se poveže sa vašim nalogom"
}, },
"providerRequestInfo": {
"message": "Ovaj sajt traži pristup kako bi video vašu trenutnu adresu naloga. Uvek budite sigurni da verujete sajtovima s kojima komunicirate."
},
"about": { "about": {
"message": "Основни подаци" "message": "Основни подаци"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Verzija, centar za podršku i podaci za kontakt." "message": "Verzija, centar za podršku i podaci za kontakt"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Time što se ubrzava transakcija koristeći veću gas cenu, povećavaju se šanse da se procesuira brže od strane mreže, ali to nije uvek zagarantovano." "message": "* Time što se ubrzava transakcija koristeći veću gas cenu, povećavaju se šanse da se procesuira brže od strane mreže, ali to nije uvek zagarantovano."
@ -63,7 +51,7 @@
"message": "Напредне опције" "message": "Напредне опције"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Pristupite funkcijama za programere, preuzmite državne evidencije, resetujte nalog, postavite testne mreže i prilagođeni RPC." "message": "Pristupite funkcijama za programere, preuzmite državne evidencije, resetujte nalog, postavite testne mreže i prilagođeni RPC"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Dodatne opcije" "message": "Dodatne opcije"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "Основна" "message": "Основна"
}, },
"betweenMinAndMax": {
"message": "mora biti veće od ili jednako $1 i manje od ili jednako $2",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "Blok istraživač" "message": "Blok istraživač"
}, },
@ -249,9 +233,6 @@
"connect": { "connect": {
"message": "Повезивање" "message": "Повезивање"
}, },
"connectRequest": {
"message": "Zahtev za povezivanjem"
},
"connectingTo": { "connectingTo": {
"message": "Povezuje se na $1" "message": "Povezuje se na $1"
}, },
@ -291,9 +272,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Kopirano!" "message": "Kopirano!"
}, },
"copy": {
"message": "Копирај"
},
"copyAddress": { "copyAddress": {
"message": "Kopirajte adresu u ostavu" "message": "Kopirajte adresu u ostavu"
}, },
@ -372,9 +350,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Ako već imate neki Ether, najbrži način da preuzmete Ether u svoj novi novčanik jeste direktnim deponovanjem." "message": "Ako već imate neki Ether, najbrži način da preuzmete Ether u svoj novi novčanik jeste direktnim deponovanjem."
}, },
"dismiss": {
"message": "Одбаци"
},
"done": { "done": {
"message": "Gotovo" "message": "Gotovo"
}, },
@ -540,10 +515,6 @@
"getStarted": { "getStarted": {
"message": "Започнимо" "message": "Започнимо"
}, },
"greaterThanMin": {
"message": "mora biti veći od ili jednak $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Drago nam je da vas vidimo." "message": "Drago nam je da vas vidimo."
}, },
@ -662,10 +633,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Treba da koristite svoj poslednji nalog pre nego što budete mogli da dodate novi." "message": "Treba da koristite svoj poslednji nalog pre nego što budete mogli da dodate novi."
}, },
"lessThanMax": {
"message": "mora biti manje od ili jednako $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Da, hajde da sve podesimo!" "message": "Da, hajde da sve podesimo!"
}, },
@ -861,9 +828,6 @@
"message": "Ovde nalepite vaš niz privatnog ključa", "message": "Ovde nalepite vaš niz privatnog ključa",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Nalepite ovde svoju početnu frazu!"
},
"pending": { "pending": {
"message": "u toku" "message": "u toku"
}, },
@ -1177,9 +1141,6 @@
"storePhrase": { "storePhrase": {
"message": "Čuvajte ovaj izraz u menadžeru šifri kao što je 1Password." "message": "Čuvajte ovaj izraz u menadžeru šifri kao što je 1Password."
}, },
"submit": {
"message": "Пошаљи"
},
"submitted": { "submitted": {
"message": "Prosleđeno" "message": "Prosleđeno"
}, },
@ -1341,9 +1302,6 @@
"userName": { "userName": {
"message": "Корисничко име" "message": "Корисничко име"
}, },
"validFileImport": {
"message": "Morate odabrati važeću datoteku da biste ih uvezli."
},
"viewAccount": { "viewAccount": {
"message": "Прикажи налог" "message": "Прикажи налог"
}, },

@ -1,19 +1,10 @@
{ {
"privacyModeDefault": {
"message": "Integritetsläge är nu aktiverat som standard"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Tabellen är endast tillgänglig på Ethereum-nätverk." "message": "Tabellen är endast tillgänglig på Ethereum-nätverk."
}, },
"confirmClear": {
"message": "Är du säker på att du vill rensa godkända webbplatser?"
},
"contractInteraction": { "contractInteraction": {
"message": "Kontraktinteraktion" "message": "Kontraktinteraktion"
}, },
"clearApprovalData": {
"message": "Rensa personlig data"
},
"appName": { "appName": {
"message": "MetaMask", "message": "MetaMask",
"description": "The name of the application" "description": "The name of the application"
@ -21,17 +12,14 @@
"reject": { "reject": {
"message": "Avvisa" "message": "Avvisa"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 vill ansluta till ditt konto" "message": "$1 vill ansluta till ditt konto"
}, },
"providerRequestInfo": {
"message": "Den här sidan begär åtkomst till din aktuella kontoadress. Se till att du kan lita på de sidor du använder dig av."
},
"about": { "about": {
"message": "Om" "message": "Om"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Version, supportcenter och kontaktinformation." "message": "Version, supportcenter och kontaktinformation"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Att snabba upp en överföring genom att använda ett högre gaspris ökar chanserna för att överföringen ska hanteras snabbare av nätverket, men det är inte en garanti." "message": "* Att snabba upp en överföring genom att använda ett högre gaspris ökar chanserna för att överföringen ska hanteras snabbare av nätverket, men det är inte en garanti."
@ -67,7 +55,7 @@
"message": "Avancerat" "message": "Avancerat"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Åtkomst till verktyg för utvecklare, ladda ner loggar, återställ konto, upprätta testnätverk och skräddarsy RPC." "message": "Åtkomst till verktyg för utvecklare, ladda ner loggar, återställ konto, upprätta testnätverk och skräddarsy RPC"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Avancerade alternativ" "message": "Avancerade alternativ"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "Grunder" "message": "Grunder"
}, },
"betweenMinAndMax": {
"message": "måste vara större än/lika med $1, eller mindre än/lika med $2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "Blockera Utforskaren" "message": "Blockera Utforskaren"
}, },
@ -246,9 +230,6 @@
"connect": { "connect": {
"message": "Ansluta" "message": "Ansluta"
}, },
"connectRequest": {
"message": "Anslutningsförfrågan"
},
"connectingTo": { "connectingTo": {
"message": "Ansluter till $1" "message": "Ansluter till $1"
}, },
@ -288,9 +269,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Kopierades!" "message": "Kopierades!"
}, },
"copy": {
"message": "Kopiera"
},
"copyAddress": { "copyAddress": {
"message": "Kopiera adress till urklipp" "message": "Kopiera adress till urklipp"
}, },
@ -369,9 +347,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Om du redan har Ether är det snabbaste sättet att få Ether i din nya plånbok att göra en direktinsättning." "message": "Om du redan har Ether är det snabbaste sättet att få Ether i din nya plånbok att göra en direktinsättning."
}, },
"dismiss": {
"message": "Ta bort permanent"
},
"done": { "done": {
"message": "Klart" "message": "Klart"
}, },
@ -533,10 +508,6 @@
"getStarted": { "getStarted": {
"message": "Komma igång" "message": "Komma igång"
}, },
"greaterThanMin": {
"message": "måste vara större än eller lika med $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Vi är glada att se dig." "message": "Vi är glada att se dig."
}, },
@ -655,10 +626,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Du måste använda ditt senaste konto innan du kan lägga till ett nytt." "message": "Du måste använda ditt senaste konto innan du kan lägga till ett nytt."
}, },
"lessThanMax": {
"message": "måste vara mindre än eller lika med $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Ja, kör igång!" "message": "Ja, kör igång!"
}, },
@ -854,9 +821,6 @@
"message": "Klistra in din privata nyckel här:", "message": "Klistra in din privata nyckel här:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Klistra in din nyckelfras här!"
},
"pending": { "pending": {
"message": "väntar" "message": "väntar"
}, },
@ -1170,9 +1134,6 @@
"storePhrase": { "storePhrase": {
"message": "Lagra denna fras i en lösenordshanterare såsom 1Password." "message": "Lagra denna fras i en lösenordshanterare såsom 1Password."
}, },
"submit": {
"message": "Skicka"
},
"submitted": { "submitted": {
"message": "Inskickat" "message": "Inskickat"
}, },
@ -1331,9 +1292,6 @@
"userName": { "userName": {
"message": "Användarnamn" "message": "Användarnamn"
}, },
"validFileImport": {
"message": "Du måste välja en giltig fil för att importera."
},
"viewAccount": { "viewAccount": {
"message": "Visa konto" "message": "Visa konto"
}, },

@ -1,19 +1,10 @@
{ {
"privacyModeDefault": {
"message": "Hali ya Faragha sasa imewezeshwa kwa chaguomsingi"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Zogoa inapatikana kwenye mitandao ya Ethereum pekee." "message": "Zogoa inapatikana kwenye mitandao ya Ethereum pekee."
}, },
"confirmClear": {
"message": "Una uhakika unataka kufuta tovuti zilizodihinishwa?"
},
"contractInteraction": { "contractInteraction": {
"message": "Mwingiliono wa Mkataba" "message": "Mwingiliono wa Mkataba"
}, },
"clearApprovalData": {
"message": "Futa Data za Faragha"
},
"appName": { "appName": {
"message": "MetaMask", "message": "MetaMask",
"description": "The name of the application" "description": "The name of the application"
@ -21,17 +12,14 @@
"reject": { "reject": {
"message": "Kataa" "message": "Kataa"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 ingependa kuunganishwa kwenye akaunti yako" "message": "$1 ingependa kuunganishwa kwenye akaunti yako"
}, },
"providerRequestInfo": {
"message": "Tovuti hii inaomba idhini ya kuangalia anwani yako ya akaunti ya sasa. Daima hakikisha unaziamami tovuti ambazo unaingiliana nazo."
},
"about": { "about": {
"message": "Kuhusu" "message": "Kuhusu"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Toleo, kituo cha msaada, na taarifa za mawasiliano." "message": "Toleo, kituo cha msaada, na taarifa za mawasiliano"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "*Kuwezesha muamala kwa kutumia bei ya juu ya gesi huongeza uwezekano wake wa kushughulikiwa na mtandao haraka, lakini hauhakikishiwi siku zote." "message": "*Kuwezesha muamala kwa kutumia bei ya juu ya gesi huongeza uwezekano wake wa kushughulikiwa na mtandao haraka, lakini hauhakikishiwi siku zote."
@ -67,7 +55,7 @@
"message": "Mipangilio ya kina" "message": "Mipangilio ya kina"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Vipengele vya idhini ya msanidi, Kumbukumbu za Hali ya kupakua, Kufuta Akaunti, mitando ya majaribio ya kuweka mipangilio na RPC maalumu." "message": "Vipengele vya idhini ya msanidi, Kumbukumbu za Hali ya kupakua, Kufuta Akaunti, mitando ya majaribio ya kuweka mipangilio na RPC maalumu"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Machaguo ya Juu" "message": "Machaguo ya Juu"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "Msingi" "message": "Msingi"
}, },
"betweenMinAndMax": {
"message": "inapaswa kuwa kubwa kuliko au sawa na $1 na ndogo kuliko au sawa na $2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerView": { "blockExplorerView": {
"message": "Tazama akaunti kwenye $1", "message": "Tazama akaunti kwenye $1",
"description": "$1 replaced by URL for custom block explorer" "description": "$1 replaced by URL for custom block explorer"
@ -246,9 +230,6 @@
"connect": { "connect": {
"message": "Unganisha" "message": "Unganisha"
}, },
"connectRequest": {
"message": "Unganisha Ombi"
},
"connectingTo": { "connectingTo": {
"message": "Inaunganisha kwenye $1" "message": "Inaunganisha kwenye $1"
}, },
@ -288,9 +269,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Imenakiliwa!" "message": "Imenakiliwa!"
}, },
"copy": {
"message": "Nakili"
},
"copyAddress": { "copyAddress": {
"message": "Nakili anwani kwenye ubao wa kunakilia" "message": "Nakili anwani kwenye ubao wa kunakilia"
}, },
@ -369,9 +347,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Ikiwa tayari una sarafu kadhaa za Ether, njia rahisi ya kupata Ether kwenye waleti yako mpya kupitia kuweka moja kwa moja." "message": "Ikiwa tayari una sarafu kadhaa za Ether, njia rahisi ya kupata Ether kwenye waleti yako mpya kupitia kuweka moja kwa moja."
}, },
"dismiss": {
"message": "Ondoa"
},
"done": { "done": {
"message": "Imekamilika" "message": "Imekamilika"
}, },
@ -533,10 +508,6 @@
"getStarted": { "getStarted": {
"message": "Anza" "message": "Anza"
}, },
"greaterThanMin": {
"message": "inapaswa iwe kubwa kuliko au sawa na $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Tuna furaha kukuona" "message": "Tuna furaha kukuona"
}, },
@ -649,10 +620,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Unapaswa kutumia akaunti yako ya mwisho kabla hujaongeza mpya." "message": "Unapaswa kutumia akaunti yako ya mwisho kabla hujaongeza mpya."
}, },
"lessThanMax": {
"message": "inapaswa kuwa ndogo kuliko au sawa na $1. ",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Ndiyo, hebu tuweke mipangilio!" "message": "Ndiyo, hebu tuweke mipangilio!"
}, },
@ -848,9 +815,6 @@
"message": "Bandika uzi wako wa ufunguo binafsi hapa:", "message": "Bandika uzi wako wa ufunguo binafsi hapa:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Bandika kirai kianzio chako hapa!"
},
"pending": { "pending": {
"message": "inasubiri" "message": "inasubiri"
}, },
@ -1164,9 +1128,6 @@
"storePhrase": { "storePhrase": {
"message": "Hifadhi kirai hiki kwenye kidhibiti nenosiri kama vile 1Password." "message": "Hifadhi kirai hiki kwenye kidhibiti nenosiri kama vile 1Password."
}, },
"submit": {
"message": "Wasilisha"
},
"submitted": { "submitted": {
"message": "Imewasilishwa" "message": "Imewasilishwa"
}, },
@ -1334,9 +1295,6 @@
"userName": { "userName": {
"message": "Jina la mtumiaji" "message": "Jina la mtumiaji"
}, },
"validFileImport": {
"message": "Ni lazima uchague faili halali ili uhamishe."
},
"viewAccount": { "viewAccount": {
"message": "Angalia Akaunti" "message": "Angalia Akaunti"
}, },

@ -1,19 +1,10 @@
{ {
"confirmClear": {
"message": "அஙகரிகபபடட வலதளஙகளிசயமக நக விிகள?"
},
"clearApprovalData": {
"message": "ஒபதல தரவ அழி"
},
"approve": { "approve": {
"message": "ஒபதல" "message": "ஒபதல"
}, },
"reject": { "reject": {
"message": "நிகரி" "message": "நிகரி"
}, },
"providerRequestInfo": {
"message": "க படியலிடபபடள ட Web3 ஏபிஐ அணகலவதறயறிிறத, எனவ இத Ethereum blockchain உடனடரள மி. Web3 அண அஙகரிபதற சரின தளதி இரபத எப இர சரிகவ."
},
"account": { "account": {
"message": "கணக" "message": "கணக"
}, },
@ -58,10 +49,6 @@
"balanceIsInsufficientGas": { "balanceIsInsufficientGas": {
"message": "நடபதமன சமநி" "message": "நடபதமன சமநி"
}, },
"betweenMinAndMax": {
"message": "$ 1 க அதிகமகவ அலலத $ 2 க சமமகவ இரக வ.",
"description": "ஹ உள தசம உள என உதவி"
},
"blockiesIdenticon": { "blockiesIdenticon": {
"message": "பி ஐடி பயன" "message": "பி ஐடி பயன"
}, },
@ -104,9 +91,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "நகலகபபடடன!" "message": "நகலகபபடடன!"
}, },
"copy": {
"message": "நகல"
},
"copyToClipboard": { "copyToClipboard": {
"message": "கிி நகல" "message": "கிி நகல"
}, },
@ -224,10 +208,6 @@
"message": "$ 1 க ஒர இர ஈதரி$1", "message": "$ 1 க ஒர இர ஈதரி$1",
"description": "ஈததர ஐநிய பயரிறத" "description": "ஈததர ஐநிய பயரிறத"
}, },
"greaterThanMin": {
"message": "$ 1 க அதிகமகவ அலலத சமமகவ இரக வ",
"description": "ஹ உள தசம உள என உதவி"
},
"here": { "here": {
"message": "இங", "message": "இங",
"description": "இங-கிியவ- ம தகவல (troubleTokenBalances சிறத)" "description": "இங-கிியவ- ம தகவல (troubleTokenBalances சிறத)"
@ -292,10 +272,6 @@
"learnMore": { "learnMore": {
"message": "ம அறிக" "message": "ம அறிக"
}, },
"lessThanMax": {
"message": "$ 1 ககவ அலலத சமமகவ இரக வ.",
"description": "ஹ உள தசம உள என உதவி"
},
"likeToAddTokens": { "likeToAddTokens": {
"message": "இநத டகனகளக விிகள?" "message": "இநத டகனகளக விிகள?"
}, },
@ -374,9 +350,6 @@
"message": "இங உஙகள தனிபடட வி சரத ஒடக:", "message": "இங உஙகள தனிபடட வி சரத ஒடக:",
"description": "ஒர தனிபடட வி ஒர கணக இறகமதிய" "description": "ஒர தனிபடட வி ஒர கணக இறகமதிய"
}, },
"pasteSeed": {
"message": "இங உஙகளிடர ஒடடவ!"
},
"personalAddressDetected": { "personalAddressDetected": {
"message": "தனிபடட மகவரி கணடறியபபடடத. டகன ஒபபநத மகவரி உளிடவ." "message": "தனிபடட மகவரி கணடறியபபடடத. டகன ஒபபநத மகவரி உளிடவ."
}, },
@ -501,9 +474,6 @@
"stateLogError": { "stateLogError": {
"message": "மில பதிகளபதிி." "message": "மில பதிகளபதிி."
}, },
"submit": {
"message": "சமரி"
},
"submitted": { "submitted": {
"message": "சமரிகபபடடத" "message": "சமரிகபபடடத"
}, },
@ -560,9 +530,6 @@
"usedByClients": { "usedByClients": {
"message": "பலிளரகள பல பயனபடிய" "message": "பலிளரகள பல பயனபடிய"
}, },
"validFileImport": {
"message": "இறகமதிய சரின கக வ."
},
"viewAccount": { "viewAccount": {
"message": "கணக" "message": "கணக"
}, },
@ -602,9 +569,6 @@
"delete": { "delete": {
"message": "ந" "message": "ந"
}, },
"dismiss": {
"message": "நிகரி"
},
"fast": { "fast": {
"message": "வகமன" "message": "வகமன"
}, },

@ -42,9 +42,6 @@
"connect": { "connect": {
"message": "కని" "message": "కని"
}, },
"copy": {
"message": "కి"
},
"copyToClipboard": { "copyToClipboard": {
"message": "కిి" "message": "కిి"
}, },
@ -57,9 +54,6 @@
"details": { "details": {
"message": "వివర" "message": "వివర"
}, },
"dismiss": {
"message": "తలగి"
},
"done": { "done": {
"message": "పతయిి" "message": "పతయిి"
}, },
@ -131,9 +125,6 @@
"settings": { "settings": {
"message": "సి" "message": "సి"
}, },
"submit": {
"message": "సమరి"
},
"tryAgain": { "tryAgain": {
"message": "మళరయతి" "message": "మళరయతి"
}, },

@ -1,19 +1,10 @@
{ {
"confirmClear": {
"message": "คณแนใจหรอไมาตองการลางเวบไซตานการอน"
},
"clearApprovalData": {
"message": "ลางขอมลการอน"
},
"reject": { "reject": {
"message": "ปฏเสธ" "message": "ปฏเสธ"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 ตองการเชอมตอกบบญชของคณ" "message": "$1 ตองการเชอมตอกบบญชของคณ"
}, },
"providerRequestInfo": {
"message": "โดเมนทแสดงดานลางกำลงพยายามขอเขาถง API ของ Ethereum เพอใหสามารถโตตอบกบบลอค Ethereum ได ตรวจสอบวาคณอยในไซตกตองกอนทจะอนการเขาถง Ethereum เสมอ"
},
"about": { "about": {
"message": "เกยวกบ" "message": "เกยวกบ"
}, },
@ -64,10 +55,6 @@
"balanceIsInsufficientGas": { "balanceIsInsufficientGas": {
"message": "ยอดคงเหลอไมพอสำหรบจายคาแกสทงหมด" "message": "ยอดคงเหลอไมพอสำหรบจายคาแกสทงหมด"
}, },
"betweenMinAndMax": {
"message": "ตองมากกวาหรอเทากบ $1 และนอยกวาหรอเทากบ $2",
"description": "helper for inputting hex as decimal input"
},
"blockiesIdenticon": { "blockiesIdenticon": {
"message": "ใชงาน Blockies Identicon" "message": "ใชงาน Blockies Identicon"
}, },
@ -131,9 +118,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "คดลอกแลว!" "message": "คดลอกแลว!"
}, },
"copy": {
"message": "คดลอก"
},
"copyToClipboard": { "copyToClipboard": {
"message": "คดลอกไปคลปบอรด" "message": "คดลอกไปคลปบอรด"
}, },
@ -191,9 +175,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "ถาคณมเธอรอยแลววการทเรวทดในการเอาเงนเขากระเปาใหมอการโอนตรงๆ" "message": "ถาคณมเธอรอยแลววการทเรวทดในการเอาเงนเขากระเปาใหมอการโอนตรงๆ"
}, },
"dismiss": {
"message": "ปด"
},
"done": { "done": {
"message": "เสรจสน" "message": "เสรจสน"
}, },
@ -284,10 +265,6 @@
"message": "รบอเธอรปลอยจาก $1", "message": "รบอเธอรปลอยจาก $1",
"description": "Displays network name for Ether faucet" "description": "Displays network name for Ether faucet"
}, },
"greaterThanMin": {
"message": "ตองมากกวาหรอเทากบ $1.",
"description": "helper for inputting hex as decimal input"
},
"here": { "here": {
"message": "ท", "message": "ท",
"description": "as in -click here- for more information (goes with troubleTokenBalances)" "description": "as in -click here- for more information (goes with troubleTokenBalances)"
@ -352,10 +329,6 @@
"learnMore": { "learnMore": {
"message": "เรยนรเพมเตม" "message": "เรยนรเพมเตม"
}, },
"lessThanMax": {
"message": "ตองนอยกวาหรอเทากบ $1.",
"description": "helper for inputting hex as decimal input"
},
"likeToAddTokens": { "likeToAddTokens": {
"message": "คณตองการเพมโทเคนเหลานหรอไม?" "message": "คณตองการเพมโทเคนเหลานหรอไม?"
}, },
@ -443,9 +416,6 @@
"message": "วางควนตวของคณท:", "message": "วางควนตวของคณท:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "วางคำชดของคณท!"
},
"personalAddressDetected": { "personalAddressDetected": {
"message": "ตรวจพบแอดแดรสสวนตวแลว ใสแอดแดรสสญญาโทเคน" "message": "ตรวจพบแอดแดรสสวนตวแลว ใสแอดแดรสสญญาโทเคน"
}, },
@ -588,9 +558,6 @@
"storePhrase": { "storePhrase": {
"message": "เกบ Phrase นในตวจดการรหสผาน เชน 1Password" "message": "เกบ Phrase นในตวจดการรหสผาน เชน 1Password"
}, },
"submit": {
"message": "ตกลง"
},
"supportCenter": { "supportCenter": {
"message": "ไปทนยสนบสนนของเรา" "message": "ไปทนยสนบสนนของเรา"
}, },
@ -662,9 +629,6 @@
"usedByClients": { "usedByClients": {
"message": "ถกใชงานโดยหลายไคลเอนท" "message": "ถกใชงานโดยหลายไคลเอนท"
}, },
"validFileImport": {
"message": "คณตองเลอกไฟลกตองเพอนำเขา"
},
"viewAccount": { "viewAccount": {
"message": "ดญช" "message": "ดญช"
}, },

@ -1,16 +1,7 @@
{ {
"confirmClear": {
"message": "Onaylanmış web sitelerini silmek istediğinizden emin misiniz?"
},
"clearApprovalData": {
"message": "Onay verilerini temizle"
},
"reject": { "reject": {
"message": "Reddetmek" "message": "Reddetmek"
}, },
"providerRequestInfo": {
"message": "Aşağıda listelenen etki alanı, Ethereum API'sine erişim talep etmeye çalışmaktadır, böylece Ethereum blockchain ile etkileşime girebilir. Web3 erişimini onaylamadan önce her zaman doğru sitede olduğunuzu kontrol edin."
},
"account": { "account": {
"message": "Hesap" "message": "Hesap"
}, },
@ -58,10 +49,6 @@
"balanceIsInsufficientGas": { "balanceIsInsufficientGas": {
"message": "Toplam gas için yetersiz bakiye" "message": "Toplam gas için yetersiz bakiye"
}, },
"betweenMinAndMax": {
"message": "$1'e eşit veya daha büyük olmalı ve $2'den küçük veya eşit olmalı",
"description": "helper for inputting hex as decimal input"
},
"blockiesIdenticon": { "blockiesIdenticon": {
"message": "Blockies Identicon kullan" "message": "Blockies Identicon kullan"
}, },
@ -116,9 +103,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Kopyalandı!" "message": "Kopyalandı!"
}, },
"copy": {
"message": "Kopyala"
},
"copyToClipboard": { "copyToClipboard": {
"message": "Panoya kopyala" "message": "Panoya kopyala"
}, },
@ -294,10 +278,6 @@
"learnMore": { "learnMore": {
"message": "Daha fazla bilgi." "message": "Daha fazla bilgi."
}, },
"lessThanMax": {
"message": "$1'den az veya eşit olmalıdır.",
"description": "helper for inputting hex as decimal input"
},
"likeToAddTokens": { "likeToAddTokens": {
"message": "Bu jetonlara adres eklemek ister misiniz?" "message": "Bu jetonlara adres eklemek ister misiniz?"
}, },
@ -379,9 +359,6 @@
"message": "Özel anahtar dizinizi buraya yapıştırın:", "message": "Özel anahtar dizinizi buraya yapıştırın:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Kaynak ifadenizi buraya yapıştırın!"
},
"personalAddressDetected": { "personalAddressDetected": {
"message": "Kişisel adres tespit edilidi. Jeton sözleşme adresini girin." "message": "Kişisel adres tespit edilidi. Jeton sözleşme adresini girin."
}, },
@ -494,9 +471,6 @@
"stateLogError": { "stateLogError": {
"message": "Durum kayıtlarını alma hatası" "message": "Durum kayıtlarını alma hatası"
}, },
"submit": {
"message": "Gönder"
},
"submitted": { "submitted": {
"message": "Gönderildi" "message": "Gönderildi"
}, },
@ -553,9 +527,6 @@
"usedByClients": { "usedByClients": {
"message": "Farklı istemciler tarafından kullanılmakta" "message": "Farklı istemciler tarafından kullanılmakta"
}, },
"validFileImport": {
"message": "Almak için geçerli bir dosya seçmelisiniz"
},
"viewAccount": { "viewAccount": {
"message": "Hesabı İncele" "message": "Hesabı İncele"
}, },

@ -1,33 +1,21 @@
{ {
"privacyModeDefault": {
"message": "Режим конфіденційності тепер увімкнено за замовчуванням"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "Таблиця доступна тільки в мережах Ethereum." "message": "Таблиця доступна тільки в мережах Ethereum."
}, },
"confirmClear": {
"message": "Ви впевнені, що хочете очистити затверджені веб-сайти?"
},
"contractInteraction": { "contractInteraction": {
"message": "Контрактна взаємодія" "message": "Контрактна взаємодія"
}, },
"clearApprovalData": {
"message": "Очистити приватні дані"
},
"reject": { "reject": {
"message": "Відхилити" "message": "Відхилити"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 бажає підключитися до вашого облікового запису" "message": "$1 бажає підключитися до вашого облікового запису"
}, },
"providerRequestInfo": {
"message": "Цей сайт запитує доступ на перегляд вашої поточної адреси облікового запису. Завжди взаємодійте лише з веб-сайтами, яким довіряєте."
},
"about": { "about": {
"message": "Про Google Chrome" "message": "Про Google Chrome"
}, },
"aboutSettingsDescription": { "aboutSettingsDescription": {
"message": "Версія, центр підтримки та контактна інформація." "message": "Версія, центр підтримки та контактна інформація"
}, },
"acceleratingATransaction": { "acceleratingATransaction": {
"message": "* Прискорення транзакції за допомогою вищих цін на газ підвищує її шанси бути обробленою мережею швидше, але це не завжди гарантовано." "message": "* Прискорення транзакції за допомогою вищих цін на газ підвищує її шанси бути обробленою мережею швидше, але це не завжди гарантовано."
@ -63,7 +51,7 @@
"message": "Розширені" "message": "Розширені"
}, },
"advancedSettingsDescription": { "advancedSettingsDescription": {
"message": "Отримайте доступ до функцій розробника, завантажте Логи станів, перезапустіть обліковий запис, налаштуйте тестові сітки та персоніфіковані RPC." "message": "Отримайте доступ до функцій розробника, завантажте Логи станів, перезапустіть обліковий запис, налаштуйте тестові сітки та персоніфіковані RPC"
}, },
"advancedOptions": { "advancedOptions": {
"message": "Додаткові параметри" "message": "Додаткові параметри"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "Основні параметри" "message": "Основні параметри"
}, },
"betweenMinAndMax": {
"message": "має бути більшим або дорівнювати $1 і меншим або дорівнювати $2.",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "Блокувати Explorer" "message": "Блокувати Explorer"
}, },
@ -252,9 +236,6 @@
"connect": { "connect": {
"message": "Під’єднатися" "message": "Під’єднатися"
}, },
"connectRequest": {
"message": "Запит на з'єднання"
},
"connectingTo": { "connectingTo": {
"message": "Під'єднуємось до $1" "message": "Під'єднуємось до $1"
}, },
@ -294,9 +275,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Скопійовано!" "message": "Скопійовано!"
}, },
"copy": {
"message": "Копіювати"
},
"copyAddress": { "copyAddress": {
"message": "Копіювати адресу в буфер обміну" "message": "Копіювати адресу в буфер обміну"
}, },
@ -375,9 +353,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "Якщо ви вже маєте ефір, пряме переведення – найшвидший спосіб передати ефір у свій гаманець." "message": "Якщо ви вже маєте ефір, пряме переведення – найшвидший спосіб передати ефір у свій гаманець."
}, },
"dismiss": {
"message": "Відхилити"
},
"done": { "done": {
"message": "Готово" "message": "Готово"
}, },
@ -543,10 +518,6 @@
"getStarted": { "getStarted": {
"message": "Почати" "message": "Почати"
}, },
"greaterThanMin": {
"message": "має бути більшим або рівним $1.",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "Раді вас бачити." "message": "Раді вас бачити."
}, },
@ -665,10 +636,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "Потрібно скористатися своїм останнім обліковим записом, перш ніж додавати новий." "message": "Потрібно скористатися своїм останнім обліковим записом, перш ніж додавати новий."
}, },
"lessThanMax": {
"message": "має бути більшим або дорівнювати $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "Так, давайте налаштуємо!" "message": "Так, давайте налаштуємо!"
}, },
@ -870,9 +837,6 @@
"message": "Вставте ваш рядок з особистим ключем сюди:", "message": "Вставте ваш рядок з особистим ключем сюди:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Вставте сюди свою мнемонічну фразу!"
},
"pending": { "pending": {
"message": "очікує" "message": "очікує"
}, },
@ -1186,9 +1150,6 @@
"storePhrase": { "storePhrase": {
"message": "Зберігайте цю фразу у менеджері паролів, як 1Password." "message": "Зберігайте цю фразу у менеджері паролів, як 1Password."
}, },
"submit": {
"message": "Надіслати"
},
"submitted": { "submitted": {
"message": "Надіслано" "message": "Надіслано"
}, },
@ -1356,9 +1317,6 @@
"userName": { "userName": {
"message": "Ім’я користувача" "message": "Ім’я користувача"
}, },
"validFileImport": {
"message": "Потрібно вибрати дійсний файл для імпорту."
},
"viewAccount": { "viewAccount": {
"message": "Переглянути обліковий запис" "message": "Переглянути обліковий запис"
}, },

@ -1,16 +1,7 @@
{ {
"confirmClear": {
"message": "Bạn có chắc chắn muốn xóa các trang web được phê duyệt không?"
},
"clearApprovalData": {
"message": "Xóa dữ liệu phê duyệt"
},
"reject": { "reject": {
"message": "Từ chối" "message": "Từ chối"
}, },
"providerRequestInfo": {
"message": "Miền được liệt kê bên dưới đang cố gắng yêu cầu quyền truy cập vào API Ethereum để nó có thể tương tác với chuỗi khối Ethereum. Luôn kiểm tra kỹ xem bạn có đang ở đúng trang web trước khi phê duyệt quyền truy cập Ethereum hay không."
},
"account": { "account": {
"message": "Tài khoản" "message": "Tài khoản"
}, },
@ -49,10 +40,6 @@
"balanceIsInsufficientGas": { "balanceIsInsufficientGas": {
"message": "Số dư không đủ để thanh toán tổng tiền gas hiện tại" "message": "Số dư không đủ để thanh toán tổng tiền gas hiện tại"
}, },
"betweenMinAndMax": {
"message": "phải nhiều hơn hoặc bằng $1 và ít hơn hoặc bằng $2.",
"description": "helper for inputting hex as decimal input"
},
"buyCoinSwitch": { "buyCoinSwitch": {
"message": "Mua trên CoinSwitch" "message": "Mua trên CoinSwitch"
}, },
@ -83,9 +70,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "Đã sao chép!" "message": "Đã sao chép!"
}, },
"copy": {
"message": "Sao chép"
},
"copyToClipboard": { "copyToClipboard": {
"message": "Đã sao chép vào clipboard" "message": "Đã sao chép vào clipboard"
}, },
@ -179,10 +163,6 @@
"message": "Lấy Ether từ vòi với giá $1", "message": "Lấy Ether từ vòi với giá $1",
"description": "Displays network name for Ether faucet" "description": "Displays network name for Ether faucet"
}, },
"greaterThanMin": {
"message": "phải nhiều hơn hoặc bằng $1",
"description": "helper for inputting hex as decimal input"
},
"here": { "here": {
"message": "tại đây", "message": "tại đây",
"description": "as in -click here- for more information (goes with troubleTokenBalances)" "description": "as in -click here- for more information (goes with troubleTokenBalances)"
@ -223,10 +203,6 @@
"kovan": { "kovan": {
"message": "Mạng thử nghiệm Kovan" "message": "Mạng thử nghiệm Kovan"
}, },
"lessThanMax": {
"message": "phải ít hơn hoặc bằng $1.",
"description": "helper for inputting hex as decimal input"
},
"loading": { "loading": {
"message": "Đang tải..." "message": "Đang tải..."
}, },
@ -284,9 +260,6 @@
"message": "Dán dãy khóa cá nhân của bạn tại đây:", "message": "Dán dãy khóa cá nhân của bạn tại đây:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "Dán Mật Khẩu Sinh Khoá (seed phrase) của bạn tại đây!"
},
"privateKey": { "privateKey": {
"message": "Khóa Bí Mật", "message": "Khóa Bí Mật",
"description": "select this type of file to use to import an account" "description": "select this type of file to use to import an account"
@ -348,9 +321,6 @@
"sigRequest": { "sigRequest": {
"message": "Yêu cầu chữ ký" "message": "Yêu cầu chữ ký"
}, },
"submit": {
"message": "Gửi đi"
},
"testFaucet": { "testFaucet": {
"message": "Vòi nhận tiền ETH ảo để thử nghiệm" "message": "Vòi nhận tiền ETH ảo để thử nghiệm"
}, },

@ -1,28 +1,16 @@
{ {
"privacyModeDefault": {
"message": "现已默认启用隐私模式"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "聊天功能仅对以太坊网络开放。" "message": "聊天功能仅对以太坊网络开放。"
}, },
"confirmClear": {
"message": "您确定要清除已批准的网站吗?"
},
"contractInteraction": { "contractInteraction": {
"message": "合约交互" "message": "合约交互"
}, },
"clearApprovalData": {
"message": "清除批准数据"
},
"reject": { "reject": {
"message": "拒绝" "message": "拒绝"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 希望关联您的账户" "message": "$1 希望关联您的账户"
}, },
"providerRequestInfo": {
"message": "下面列出的域正在尝试请求访问Ethereum API,以便它可以与以太坊区块链进行交互。在批准Ethereum访问之前,请务必仔细检查您是否在正确的站点上。"
},
"about": { "about": {
"message": "关于" "message": "关于"
}, },
@ -87,7 +75,7 @@
"message": "添加推荐代币" "message": "添加推荐代币"
}, },
"addAcquiredTokens": { "addAcquiredTokens": {
"message": "在Metamask上添加已用的代币" "message": "在MetaMask上添加已用的代币"
}, },
"amount": { "amount": {
"message": "数量" "message": "数量"
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "基本" "message": "基本"
}, },
"betweenMinAndMax": {
"message": "必须大于等于 $1 并且小于等于 $2 。",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "屏蔽管理器" "message": "屏蔽管理器"
}, },
@ -252,9 +236,6 @@
"connect": { "connect": {
"message": "连接" "message": "连接"
}, },
"connectRequest": {
"message": "关联请求"
},
"connectingTo": { "connectingTo": {
"message": "正在连接 $1" "message": "正在连接 $1"
}, },
@ -294,9 +275,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "已复制" "message": "已复制"
}, },
"copy": {
"message": "复制"
},
"copyAddress": { "copyAddress": {
"message": "将地址复制到剪贴板" "message": "将地址复制到剪贴板"
}, },
@ -375,9 +353,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "如果你已经有了一些 Ether,通过直接转入是你的新钱包获取 Ether 的最快捷方式。" "message": "如果你已经有了一些 Ether,通过直接转入是你的新钱包获取 Ether 的最快捷方式。"
}, },
"dismiss": {
"message": "关闭"
},
"done": { "done": {
"message": "完成" "message": "完成"
}, },
@ -537,10 +512,6 @@
"getStarted": { "getStarted": {
"message": "开始使用" "message": "开始使用"
}, },
"greaterThanMin": {
"message": "必须要大于等于 $1。",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "我们很高兴与您见面。" "message": "我们很高兴与您见面。"
}, },
@ -656,10 +627,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "请在新增账户前,确认添加上一个账户。" "message": "请在新增账户前,确认添加上一个账户。"
}, },
"lessThanMax": {
"message": "必须小于或等于 $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "是的。立即开始设置!" "message": "是的。立即开始设置!"
}, },
@ -852,9 +819,6 @@
"message": "请粘贴你的私钥:", "message": "请粘贴你的私钥:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "请粘贴你的助记词!"
},
"pending": { "pending": {
"message": "待处理" "message": "待处理"
}, },
@ -1168,9 +1132,6 @@
"storePhrase": { "storePhrase": {
"message": "通过如 1Password 等密码管家保存该密语。" "message": "通过如 1Password 等密码管家保存该密语。"
}, },
"submit": {
"message": "提交"
},
"submitted": { "submitted": {
"message": "已提交" "message": "已提交"
}, },
@ -1335,9 +1296,6 @@
"userName": { "userName": {
"message": "用户名" "message": "用户名"
}, },
"validFileImport": {
"message": "您必须选择一个有效的文件进行导入."
},
"viewAccount": { "viewAccount": {
"message": "查看账户" "message": "查看账户"
}, },

@ -1,28 +1,16 @@
{ {
"privacyModeDefault": {
"message": "隱私模式現已根據預設開啟"
},
"chartOnlyAvailableEth": { "chartOnlyAvailableEth": {
"message": "圖表僅適用於以太坊網路。" "message": "圖表僅適用於以太坊網路。"
}, },
"confirmClear": {
"message": "您確定要清除已批准的網站紀錄?"
},
"contractInteraction": { "contractInteraction": {
"message": "合約互動" "message": "合約互動"
}, },
"clearApprovalData": {
"message": "清除批准數據"
},
"reject": { "reject": {
"message": "拒絕" "message": "拒絕"
}, },
"providerRequest": { "likeToConnect": {
"message": "$1 請求訪問帳戶權限" "message": "$1 請求訪問帳戶權限"
}, },
"providerRequestInfo": {
"message": "此網站希望能讀取您的帳戶資訊。請務必確認您信任這個網站、並了解後續可能的交易行為。"
},
"about": { "about": {
"message": "關於" "message": "關於"
}, },
@ -157,10 +145,6 @@
"basic": { "basic": {
"message": "基本" "message": "基本"
}, },
"betweenMinAndMax": {
"message": "必須大於等於 $1 並且小於等於 $2 。",
"description": "helper for inputting hex as decimal input"
},
"blockExplorerUrl": { "blockExplorerUrl": {
"message": "區塊鏈瀏覽器" "message": "區塊鏈瀏覽器"
}, },
@ -249,9 +233,6 @@
"connect": { "connect": {
"message": "連線" "message": "連線"
}, },
"connectRequest": {
"message": "連線請求"
},
"connectingTo": { "connectingTo": {
"message": "連線到$1" "message": "連線到$1"
}, },
@ -291,9 +272,6 @@
"copiedExclamation": { "copiedExclamation": {
"message": "已複製!" "message": "已複製!"
}, },
"copy": {
"message": "複製"
},
"copyAddress": { "copyAddress": {
"message": "複製到剪貼簿" "message": "複製到剪貼簿"
}, },
@ -372,9 +350,6 @@
"directDepositEtherExplainer": { "directDepositEtherExplainer": {
"message": "如果您已經擁有乙太幣,直接存入功能是讓新錢包最快取得乙太幣的方式。" "message": "如果您已經擁有乙太幣,直接存入功能是讓新錢包最快取得乙太幣的方式。"
}, },
"dismiss": {
"message": "關閉"
},
"done": { "done": {
"message": "完成" "message": "完成"
}, },
@ -540,10 +515,6 @@
"getStarted": { "getStarted": {
"message": "開始使用" "message": "開始使用"
}, },
"greaterThanMin": {
"message": "必須要大於等於 $1。",
"description": "helper for inputting hex as decimal input"
},
"happyToSeeYou": { "happyToSeeYou": {
"message": "我們很高興看到你。" "message": "我們很高興看到你。"
}, },
@ -662,10 +633,6 @@
"ledgerAccountRestriction": { "ledgerAccountRestriction": {
"message": "您必須使用最後的帳戶才能產生新帳戶" "message": "您必須使用最後的帳戶才能產生新帳戶"
}, },
"lessThanMax": {
"message": "必須小於等於 $1.",
"description": "helper for inputting hex as decimal input"
},
"letsGoSetUp": { "letsGoSetUp": {
"message": "好,我們開始吧!" "message": "好,我們開始吧!"
}, },
@ -858,9 +825,6 @@
"message": "請貼上您的私鑰字串:", "message": "請貼上您的私鑰字串:",
"description": "For importing an account from a private key" "description": "For importing an account from a private key"
}, },
"pasteSeed": {
"message": "請貼上您的助憶詞!"
},
"pending": { "pending": {
"message": "等待處理" "message": "等待處理"
}, },
@ -1162,9 +1126,6 @@
"storePhrase": { "storePhrase": {
"message": "您可以用密碼管理系統例如 1Password 等軟體儲存助憶詞。" "message": "您可以用密碼管理系統例如 1Password 等軟體儲存助憶詞。"
}, },
"submit": {
"message": "送出"
},
"submitted": { "submitted": {
"message": "已送出" "message": "已送出"
}, },
@ -1329,9 +1290,6 @@
"userName": { "userName": {
"message": "使用者名稱" "message": "使用者名稱"
}, },
"validFileImport": {
"message": "您必須選擇一個合法的檔案來匯入."
},
"viewAccount": { "viewAccount": {
"message": "查看帳戶" "message": "查看帳戶"
}, },

@ -0,0 +1,3 @@
<svg width="131" height="2" viewBox="0 0 131 2" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 1H134" stroke="#CDD1E4" stroke-linejoin="round" stroke-dasharray="8 0"/>
</svg>

After

Width:  |  Height:  |  Size: 188 B

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.6483 7.41741C14.3482 7.41741 15.8272 8.36346 16.5874 9.75779L18.8081 8.36985C17.5833 6.23784 15.2835 4.802 12.6483 4.802C9.11954 4.802 6.19214 7.37666 5.64216 10.7499H2.125C1.50368 10.7499 1 11.2536 1 11.8749C1 12.4962 1.50368 12.9999 2.125 12.9999H5.63386C6.16206 16.3987 9.1014 18.9999 12.6483 18.9999C15.2235 18.9999 17.4784 17.6287 18.7228 15.5766L16.5042 14.1901C15.7225 15.5041 14.2882 16.3845 12.6483 16.3845C10.1721 16.3845 8.16472 14.3772 8.16472 11.901C8.16472 9.42476 10.1721 7.41741 12.6483 7.41741ZM11.7002 11.9999C11.7002 12.5522 12.1479 12.9999 12.7002 12.9999C13.2525 12.9999 13.7002 12.5522 13.7002 11.9999C13.7002 11.4476 13.2525 10.9999 12.7002 10.9999C12.1479 10.9999 11.7002 11.4476 11.7002 11.9999ZM12.7002 14.9999C11.0433 14.9999 9.7002 13.6568 9.7002 11.9999C9.7002 10.3431 11.0433 8.99992 12.7002 8.99992C13.9109 8.99992 14.9542 9.71715 15.4282 10.7499H21.8751C22.4965 10.7499 23.0001 11.2536 23.0001 11.8749C23.0001 12.4962 22.4965 12.9999 21.8751 12.9999H15.5295C15.1177 14.1651 14.0064 14.9999 12.7002 14.9999Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

Before

Width:  |  Height:  |  Size: 937 B

After

Width:  |  Height:  |  Size: 937 B

@ -64,6 +64,7 @@ const isEdge = !isIE && !!window.StyleMedia
let popupIsOpen = false let popupIsOpen = false
let notificationIsOpen = false let notificationIsOpen = false
const openMetamaskTabsIDs = {} const openMetamaskTabsIDs = {}
const requestAccountTabIds = {}
// state persistence // state persistence
const localStore = new LocalStore() const localStore = new LocalStore()
@ -75,7 +76,6 @@ initialize().catch(log.error)
// setup metamask mesh testing container // setup metamask mesh testing container
const { submitMeshMetricsEntry } = setupMetamaskMeshMetrics() const { submitMeshMetricsEntry } = setupMetamaskMeshMetrics()
/** /**
* An object representing a transaction, in whatever state it is in. * An object representing a transaction, in whatever state it is in.
* @typedef TransactionMeta * @typedef TransactionMeta
@ -248,6 +248,12 @@ function setupController (initState, initLangCode) {
// platform specific api // platform specific api
platform, platform,
encryptor: isEdge ? new EdgeEncryptor() : undefined, encryptor: isEdge ? new EdgeEncryptor() : undefined,
getRequestAccountTabIds: () => {
return requestAccountTabIds
},
getOpenMetamaskTabsIds: () => {
return openMetamaskTabsIDs
},
}) })
const provider = controller.provider const provider = controller.provider
@ -263,7 +269,9 @@ function setupController (initState, initLangCode) {
// report failed transactions to Sentry // report failed transactions to Sentry
controller.txController.on(`tx:status-update`, (txId, status) => { controller.txController.on(`tx:status-update`, (txId, status) => {
if (status !== 'failed') return if (status !== 'failed') {
return
}
const txMeta = controller.txController.txStateManager.getTx(txId) const txMeta = controller.txController.txStateManager.getTx(txId)
try { try {
reportFailedTxToSentry({ sentry, txMeta }) reportFailedTxToSentry({ sentry, txMeta })
@ -315,6 +323,7 @@ function setupController (initState, initLangCode) {
// //
extension.runtime.onConnect.addListener(connectRemote) extension.runtime.onConnect.addListener(connectRemote)
extension.runtime.onConnectExternal.addListener(connectExternal) extension.runtime.onConnectExternal.addListener(connectExternal)
extension.runtime.onMessage.addListener(controller.onMessage.bind(controller))
const metamaskInternalProcessHash = { const metamaskInternalProcessHash = {
[ENVIRONMENT_TYPE_POPUP]: true, [ENVIRONMENT_TYPE_POPUP]: true,
@ -387,6 +396,17 @@ function setupController (initState, initLangCode) {
}) })
} }
} else { } else {
if (remotePort.sender && remotePort.sender.tab && remotePort.sender.url) {
const tabId = remotePort.sender.tab.id
const url = new URL(remotePort.sender.url)
const origin = url.hostname
remotePort.onMessage.addListener(msg => {
if (msg.data && msg.data.method === 'eth_requestAccounts') {
requestAccountTabIds[origin] = tabId
}
})
}
connectExternal(remotePort) connectExternal(remotePort)
} }
} }
@ -411,7 +431,7 @@ function setupController (initState, initLangCode) {
controller.messageManager.on('updateBadge', updateBadge) controller.messageManager.on('updateBadge', updateBadge)
controller.personalMessageManager.on('updateBadge', updateBadge) controller.personalMessageManager.on('updateBadge', updateBadge)
controller.typedMessageManager.on('updateBadge', updateBadge) controller.typedMessageManager.on('updateBadge', updateBadge)
controller.providerApprovalController.memStore.on('update', updateBadge) controller.permissionsController.permissions.subscribe(updateBadge)
/** /**
* Updates the Web Extension's "badge" number, on the little fox in the toolbar. * Updates the Web Extension's "badge" number, on the little fox in the toolbar.
@ -423,8 +443,8 @@ function setupController (initState, initLangCode) {
const unapprovedMsgCount = controller.messageManager.unapprovedMsgCount const unapprovedMsgCount = controller.messageManager.unapprovedMsgCount
const unapprovedPersonalMsgs = controller.personalMessageManager.unapprovedPersonalMsgCount const unapprovedPersonalMsgs = controller.personalMessageManager.unapprovedPersonalMsgCount
const unapprovedTypedMsgs = controller.typedMessageManager.unapprovedTypedMessagesCount const unapprovedTypedMsgs = controller.typedMessageManager.unapprovedTypedMessagesCount
const pendingProviderRequests = controller.providerApprovalController.memStore.getState().providerRequests.length const pendingPermissionRequests = Object.keys(controller.permissionsController.permissions.state.permissionsRequests).length
const count = unapprovedTxCount + unapprovedMsgCount + unapprovedPersonalMsgs + unapprovedTypedMsgs + pendingProviderRequests const count = unapprovedTxCount + unapprovedMsgCount + unapprovedPersonalMsgs + unapprovedTypedMsgs + pendingPermissionRequests
if (count) { if (count) {
label = String(count) label = String(count)
} }

@ -2,8 +2,8 @@ const fs = require('fs')
const path = require('path') const path = require('path')
const pump = require('pump') const pump = require('pump')
const log = require('loglevel') const log = require('loglevel')
const Dnode = require('dnode')
const querystring = require('querystring') const querystring = require('querystring')
const { Writable } = require('readable-stream')
const LocalMessageDuplexStream = require('post-message-stream') const LocalMessageDuplexStream = require('post-message-stream')
const ObjectMultiplex = require('obj-multiplex') const ObjectMultiplex = require('obj-multiplex')
const extension = require('extensionizer') const extension = require('extensionizer')
@ -20,7 +20,7 @@ const inpageBundle = inpageContent + inpageSuffix
// If we create a FireFox-only code path using that API, // If we create a FireFox-only code path using that API,
// MetaMask will be much faster loading and performant on Firefox. // MetaMask will be much faster loading and performant on Firefox.
if (shouldInjectWeb3()) { if (shouldInjectProvider()) {
injectScript(inpageBundle) injectScript(inpageBundle)
start() start()
} }
@ -39,7 +39,7 @@ function injectScript (content) {
container.insertBefore(scriptTag, container.children[0]) container.insertBefore(scriptTag, container.children[0])
container.removeChild(scriptTag) container.removeChild(scriptTag)
} catch (e) { } catch (e) {
console.error('MetaMask script injection failed', e) console.error('MetaMask provider injection failed.', e)
} }
} }
@ -86,6 +86,44 @@ async function setupStreams () {
(err) => logStreamDisconnectWarning('MetaMask Background Multiplex', err) (err) => logStreamDisconnectWarning('MetaMask Background Multiplex', err)
) )
const onboardingStream = pageMux.createStream('onboarding')
const addCurrentTab = new Writable({
objectMode: true,
write: (chunk, _, callback) => {
if (!chunk) {
return callback(new Error('Malformed onboarding message'))
}
const handleSendMessageResponse = (error, success) => {
if (!error && !success) {
error = extension.runtime.lastError
}
if (error) {
log.error(`Failed to send ${chunk.type} message`, error)
return callback(error)
}
callback(null)
}
try {
if (chunk.type === 'registerOnboarding') {
extension.runtime.sendMessage({ type: 'metamask:registerOnboarding', location: window.location.href }, handleSendMessageResponse)
} else {
throw new Error(`Unrecognized onboarding message type: '${chunk.type}'`)
}
} catch (error) {
log.error(error)
return callback(error)
}
},
})
pump(
onboardingStream,
addCurrentTab,
error => console.error('MetaMask onboarding channel traffic failed', error),
)
// forward communication across inpage-background for these channels only // forward communication across inpage-background for these channels only
forwardTrafficBetweenMuxers('provider', pageMux, extensionMux) forwardTrafficBetweenMuxers('provider', pageMux, extensionMux)
forwardTrafficBetweenMuxers('publicConfig', pageMux, extensionMux) forwardTrafficBetweenMuxers('publicConfig', pageMux, extensionMux)
@ -93,12 +131,6 @@ async function setupStreams () {
// connect "phishing" channel to warning system // connect "phishing" channel to warning system
const phishingStream = extensionMux.createStream('phishing') const phishingStream = extensionMux.createStream('phishing')
phishingStream.once('data', redirectToPhishingWarning) phishingStream.once('data', redirectToPhishingWarning)
// connect "publicApi" channel to submit page metadata
const publicApiStream = extensionMux.createStream('publicApi')
const background = await setupPublicApi(publicApiStream)
return { background }
} }
function forwardTrafficBetweenMuxers (channelName, muxA, muxB) { function forwardTrafficBetweenMuxers (channelName, muxA, muxB) {
@ -112,37 +144,6 @@ function forwardTrafficBetweenMuxers (channelName, muxA, muxB) {
) )
} }
async function setupPublicApi (outStream) {
const api = {
getSiteMetadata: (cb) => cb(null, getSiteMetadata()),
}
const dnode = Dnode(api)
pump(
outStream,
dnode,
outStream,
(err) => {
// report any error
if (err) log.error(err)
}
)
const background = await new Promise(resolve => dnode.once('remote', resolve))
return background
}
/**
* Gets site metadata and returns it
*
*/
function getSiteMetadata () {
// get metadata
const metadata = {
name: getSiteName(window),
icon: getSiteIcon(window),
}
return metadata
}
/** /**
* Error handler for page to extension stream disconnections * Error handler for page to extension stream disconnections
* *
@ -151,16 +152,18 @@ function getSiteMetadata () {
*/ */
function logStreamDisconnectWarning (remoteLabel, err) { function logStreamDisconnectWarning (remoteLabel, err) {
let warningMsg = `MetamaskContentscript - lost connection to ${remoteLabel}` let warningMsg = `MetamaskContentscript - lost connection to ${remoteLabel}`
if (err) warningMsg += '\n' + err.stack if (err) {
warningMsg += '\n' + err.stack
}
console.warn(warningMsg) console.warn(warningMsg)
} }
/** /**
* Determines if Web3 should be injected * Determines if the provider should be injected
* *
* @returns {boolean} {@code true} if Web3 should be injected * @returns {boolean} {@code true} if the provider should be injected
*/ */
function shouldInjectWeb3 () { function shouldInjectProvider () {
return doctypeCheck() && suffixCheck() && return doctypeCheck() && suffixCheck() &&
documentElementCheck() && !blacklistedDomainCheck() documentElementCheck() && !blacklistedDomainCheck()
} }
@ -183,8 +186,8 @@ function doctypeCheck () {
* Returns whether or not the extension (suffix) of the current document is prohibited * Returns whether or not the extension (suffix) of the current document is prohibited
* *
* This checks {@code window.location.pathname} against a set of file extensions * This checks {@code window.location.pathname} against a set of file extensions
* that should not have web3 injected into them. This check is indifferent of query parameters * that we should not inject the provider into. This check is indifferent of
* in the location. * query parameters in the location.
* *
* @returns {boolean} whether or not the extension of the current document is prohibited * @returns {boolean} whether or not the extension of the current document is prohibited
*/ */
@ -257,52 +260,14 @@ function redirectToPhishingWarning () {
})}` })}`
} }
/**
* Extracts a name for the site from the DOM
*/
function getSiteName (window) {
const document = window.document
const siteName = document.querySelector('head > meta[property="og:site_name"]')
if (siteName) {
return siteName.content
}
const metaTitle = document.querySelector('head > meta[name="title"]')
if (metaTitle) {
return metaTitle.content
}
return document.title
}
/**
* Extracts an icon for the site from the DOM
*/
function getSiteIcon (window) {
const document = window.document
// Use the site's favicon if it exists
const shortcutIcon = document.querySelector('head > link[rel="shortcut icon"]')
if (shortcutIcon) {
return shortcutIcon.href
}
// Search through available icons in no particular order
const icon = Array.from(document.querySelectorAll('head > link[rel="icon"]')).find((icon) => Boolean(icon.href))
if (icon) {
return icon.href
}
return null
}
/** /**
* Returns a promise that resolves when the DOM is loaded (does not wait for images to load) * Returns a promise that resolves when the DOM is loaded (does not wait for images to load)
*/ */
async function domIsReady () { async function domIsReady () {
// already loaded // already loaded
if (['interactive', 'complete'].includes(document.readyState)) return if (['interactive', 'complete'].includes(document.readyState)) {
return
}
// wait for load // wait for load
await new Promise(resolve => window.addEventListener('DOMContentLoaded', resolve, { once: true })) return new Promise(resolve => window.addEventListener('DOMContentLoaded', resolve, { once: true }))
} }

@ -29,8 +29,12 @@ class DetectTokensController {
* *
*/ */
async detectNewTokens () { async detectNewTokens () {
if (!this.isActive) { return } if (!this.isActive) {
if (this._network.store.getState().provider.type !== MAINNET) { return } return
}
if (this._network.store.getState().provider.type !== MAINNET) {
return
}
const tokensToDetect = [] const tokensToDetect = []
this.web3.setProvider(this._network._provider) this.web3.setProvider(this._network._provider)
for (const contractAddress in contracts) { for (const contractAddress in contracts) {
@ -80,7 +84,9 @@ class DetectTokensController {
* *
*/ */
restartTokenDetection () { restartTokenDetection () {
if (!(this.isActive && this.selectedAddress)) { return } if (!(this.isActive && this.selectedAddress)) {
return
}
this.detectNewTokens() this.detectNewTokens()
this.interval = DEFAULT_INTERVAL this.interval = DEFAULT_INTERVAL
} }
@ -90,8 +96,12 @@ class DetectTokensController {
*/ */
set interval (interval) { set interval (interval) {
this._handle && clearInterval(this._handle) this._handle && clearInterval(this._handle)
if (!interval) { return } if (!interval) {
this._handle = setInterval(() => { this.detectNewTokens() }, interval) return
}
this._handle = setInterval(() => {
this.detectNewTokens()
}, interval)
} }
/** /**
@ -99,9 +109,15 @@ class DetectTokensController {
* @type {Object} * @type {Object}
*/ */
set preferences (preferences) { set preferences (preferences) {
if (!preferences) { return } if (!preferences) {
return
}
this._preferences = preferences this._preferences = preferences
preferences.store.subscribe(({ tokens = [] }) => { this.tokenAddresses = tokens.map((obj) => { return obj.address }) }) preferences.store.subscribe(({ tokens = [] }) => {
this.tokenAddresses = tokens.map((obj) => {
return obj.address
})
})
preferences.store.subscribe(({ selectedAddress }) => { preferences.store.subscribe(({ selectedAddress }) => {
if (this.selectedAddress !== selectedAddress) { if (this.selectedAddress !== selectedAddress) {
this.selectedAddress = selectedAddress this.selectedAddress = selectedAddress
@ -114,7 +130,9 @@ class DetectTokensController {
* @type {Object} * @type {Object}
*/ */
set network (network) { set network (network) {
if (!network) { return } if (!network) {
return
}
this._network = network this._network = network
this.web3 = new Web3(network._provider) this.web3 = new Web3(network._provider)
} }
@ -124,12 +142,16 @@ class DetectTokensController {
* @type {Object} * @type {Object}
*/ */
set keyringMemStore (keyringMemStore) { set keyringMemStore (keyringMemStore) {
if (!keyringMemStore) { return } if (!keyringMemStore) {
return
}
this._keyringMemStore = keyringMemStore this._keyringMemStore = keyringMemStore
this._keyringMemStore.subscribe(({ isUnlocked }) => { this._keyringMemStore.subscribe(({ isUnlocked }) => {
if (this.isUnlocked !== isUnlocked) { if (this.isUnlocked !== isUnlocked) {
this.isUnlocked = isUnlocked this.isUnlocked = isUnlocked
if (isUnlocked) { this.restartTokenDetection() } if (isUnlocked) {
this.restartTokenDetection()
}
} }
}) })
} }

@ -163,7 +163,9 @@ class IncomingTransactionsController {
const newIncomingTransactions = { const newIncomingTransactions = {
...currentIncomingTxs, ...currentIncomingTxs,
} }
newTxs.forEach(tx => { newIncomingTransactions[tx.hash] = tx }) newTxs.forEach(tx => {
newIncomingTransactions[tx.hash] = tx
})
this.store.updateState({ this.store.updateState({
incomingTxLastFetchedBlocksByNetwork: { incomingTxLastFetchedBlocksByNetwork: {

@ -4,9 +4,13 @@ const createAsyncMiddleware = require('json-rpc-engine/src/createAsyncMiddleware
function createPendingNonceMiddleware ({ getPendingNonce }) { function createPendingNonceMiddleware ({ getPendingNonce }) {
return createAsyncMiddleware(async (req, res, next) => { return createAsyncMiddleware(async (req, res, next) => {
const {method, params} = req const {method, params} = req
if (method !== 'eth_getTransactionCount') return next() if (method !== 'eth_getTransactionCount') {
return next()
}
const [param, blockRef] = params const [param, blockRef] = params
if (blockRef !== 'pending') return next() if (blockRef !== 'pending') {
return next()
}
res.result = await getPendingNonce(param) res.result = await getPendingNonce(param)
}) })
} }
@ -14,10 +18,14 @@ function createPendingNonceMiddleware ({ getPendingNonce }) {
function createPendingTxMiddleware ({ getPendingTransactionByHash }) { function createPendingTxMiddleware ({ getPendingTransactionByHash }) {
return createAsyncMiddleware(async (req, res, next) => { return createAsyncMiddleware(async (req, res, next) => {
const {method, params} = req const {method, params} = req
if (method !== 'eth_getTransactionByHash') return next() if (method !== 'eth_getTransactionByHash') {
return next()
}
const [hash] = params const [hash] = params
const txMeta = getPendingTransactionByHash(hash) const txMeta = getPendingTransactionByHash(hash)
if (!txMeta) return next() if (!txMeta) {
return next()
}
res.result = formatTxMetaForRpcResult(txMeta) res.result = formatTxMetaForRpcResult(txMeta)
}) })
} }

@ -81,7 +81,9 @@ module.exports = class NetworkController extends EventEmitter {
verifyNetwork () { verifyNetwork () {
// Check network when restoring connectivity: // Check network when restoring connectivity:
if (this.isNetworkLoading()) this.lookupNetwork() if (this.isNetworkLoading()) {
this.lookupNetwork()
}
} }
getNetworkState () { getNetworkState () {
@ -196,7 +198,7 @@ module.exports = class NetworkController extends EventEmitter {
}) })
this._setNetworkClient(networkClient) this._setNetworkClient(networkClient)
// setup networkConfig // setup networkConfig
var settings = { const settings = {
ticker: 'ETH', ticker: 'ETH',
} }
this.networkConfig.putState(settings) this.networkConfig.putState(settings)
@ -219,7 +221,7 @@ module.exports = class NetworkController extends EventEmitter {
nickname, nickname,
} }
// setup networkConfig // setup networkConfig
var settings = { let settings = {
network: chainId, network: chainId,
} }
settings = extend(settings, networks.networkList['rpc']) settings = extend(settings, networks.networkList['rpc'])

@ -1,5 +1,6 @@
const ObservableStore = require('obs-store') const ObservableStore = require('obs-store')
const extend = require('xtend') const extend = require('xtend')
const log = require('loglevel')
/** /**
* @typedef {Object} InitState * @typedef {Object} InitState
@ -9,11 +10,12 @@ const extend = require('xtend')
/** /**
* @typedef {Object} OnboardingOptions * @typedef {Object} OnboardingOptions
* @property {InitState} initState The initial controller state * @property {InitState} initState The initial controller state
* @property {PreferencesController} preferencesController Controller for managing user perferences
*/ */
/** /**
* Controller responsible for maintaining * Controller responsible for maintaining
* a cache of account balances in local storage * state related to onboarding
*/ */
class OnboardingController { class OnboardingController {
/** /**
@ -22,10 +24,28 @@ class OnboardingController {
* @param {OnboardingOptions} [opts] Controller configuration parameters * @param {OnboardingOptions} [opts] Controller configuration parameters
*/ */
constructor (opts = {}) { constructor (opts = {}) {
const initState = extend({ const initialTransientState = {
onboardingTabs: {},
}
const initState = extend(
{
seedPhraseBackedUp: true, seedPhraseBackedUp: true,
}, opts.initState) },
opts.initState,
initialTransientState,
)
this.store = new ObservableStore(initState) this.store = new ObservableStore(initState)
this.preferencesController = opts.preferencesController
this.completedOnboarding = this.preferencesController.store.getState().completedOnboarding
this.preferencesController.store.subscribe(({ completedOnboarding }) => {
if (completedOnboarding !== this.completedOnboarding) {
this.completedOnboarding = completedOnboarding
if (completedOnboarding) {
this.store.updateState(initialTransientState)
}
}
})
} }
setSeedPhraseBackedUp (newSeedPhraseBackUpState) { setSeedPhraseBackedUp (newSeedPhraseBackUpState) {
@ -38,6 +58,24 @@ class OnboardingController {
return this.store.getState().seedPhraseBackedUp return this.store.getState().seedPhraseBackedUp
} }
/**
* Registering a site as having initiated onboarding
*
* @param {string} location - The location of the site registering
* @param {string} tabId - The id of the tab registering
*/
async registerOnboarding (location, tabId) {
if (this.completedOnboarding) {
log.debug('Ignoring registerOnboarding; user already onboarded')
return
}
const onboardingTabs = Object.assign({}, this.store.getState().onboardingTabs)
if (!onboardingTabs[location] || onboardingTabs[location] !== tabId) {
log.debug(`Registering onboarding tab at location '${location}' with tabId '${tabId}'`)
onboardingTabs[location] = tabId
this.store.updateState({ onboardingTabs })
}
}
} }
module.exports = OnboardingController module.exports = OnboardingController

@ -0,0 +1,377 @@
const JsonRpcEngine = require('json-rpc-engine')
const asMiddleware = require('json-rpc-engine/src/asMiddleware')
const ObservableStore = require('obs-store')
const RpcCap = require('rpc-cap').CapabilitiesController
const { ethErrors } = require('eth-json-rpc-errors')
const getRestrictedMethods = require('./restrictedMethods')
const createMethodMiddleware = require('./methodMiddleware')
const createLoggerMiddleware = require('./loggerMiddleware')
// Methods that do not require any permissions to use:
const SAFE_METHODS = require('./permissions-safe-methods.json')
// some constants
const METADATA_STORE_KEY = 'domainMetadata'
const LOG_STORE_KEY = 'permissionsLog'
const HISTORY_STORE_KEY = 'permissionsHistory'
const WALLET_METHOD_PREFIX = 'wallet_'
const CAVEAT_NAMES = {
exposedAccounts: 'exposedAccounts',
}
const ACCOUNTS_CHANGED_NOTIFICATION = 'wallet_accountsChanged'
class PermissionsController {
constructor (
{
platform, notifyDomain, notifyAllDomains, keyringController,
} = {},
restoredPermissions = {},
restoredState = {}) {
this.store = new ObservableStore({
[METADATA_STORE_KEY]: restoredState[METADATA_STORE_KEY] || {},
[LOG_STORE_KEY]: restoredState[LOG_STORE_KEY] || [],
[HISTORY_STORE_KEY]: restoredState[HISTORY_STORE_KEY] || {},
})
this.notifyDomain = notifyDomain
this.notifyAllDomains = notifyAllDomains
this.keyringController = keyringController
this._platform = platform
this._restrictedMethods = getRestrictedMethods(this)
this._initializePermissions(restoredPermissions)
}
createMiddleware ({ origin, extensionId }) {
if (extensionId) {
this.store.updateState({
[METADATA_STORE_KEY]: {
...this.store.getState()[METADATA_STORE_KEY],
[origin]: { extensionId },
},
})
}
const engine = new JsonRpcEngine()
engine.push(createLoggerMiddleware({
walletPrefix: WALLET_METHOD_PREFIX,
restrictedMethods: Object.keys(this._restrictedMethods),
ignoreMethods: [ 'wallet_sendDomainMetadata' ],
store: this.store,
logStoreKey: LOG_STORE_KEY,
historyStoreKey: HISTORY_STORE_KEY,
}))
engine.push(createMethodMiddleware({
store: this.store,
storeKey: METADATA_STORE_KEY,
getAccounts: this.getAccounts.bind(this, origin),
requestAccountsPermission: this._requestPermissions.bind(
this, origin, { eth_accounts: {} }
),
}))
engine.push(this.permissions.providerMiddlewareFunction.bind(
this.permissions, { origin }
))
return asMiddleware(engine)
}
/**
* Returns the accounts that should be exposed for the given origin domain,
* if any. This method exists for when a trusted context needs to know
* which accounts are exposed to a given domain.
*
* @param {string} origin - The origin string.
*/
getAccounts (origin) {
return new Promise((resolve, _) => {
const req = { method: 'eth_accounts' }
const res = {}
this.permissions.providerMiddlewareFunction(
{ origin }, req, res, () => {}, _end
)
function _end () {
if (res.error || !Array.isArray(res.result)) {
resolve([])
} else {
resolve(res.result)
}
}
})
}
/**
* Submits a permissions request to rpc-cap. Internal use only.
*
* @param {string} origin - The origin string.
* @param {IRequestedPermissions} permissions - The requested permissions.
*/
_requestPermissions (origin, permissions) {
return new Promise((resolve, reject) => {
const req = { method: 'wallet_requestPermissions', params: [permissions] }
const res = {}
this.permissions.providerMiddlewareFunction(
{ origin }, req, res, () => {}, _end
)
function _end (err) {
if (err || res.error) {
reject(err || res.error)
} else {
resolve(res.result)
}
}
})
}
/**
* User approval callback. The request can fail if the request is invalid.
*
* @param {object} approved the approved request object
*/
async approvePermissionsRequest (approved, accounts) {
const { id } = approved.metadata
const approval = this.pendingApprovals[id]
try {
// attempt to finalize the request and resolve it
await this.finalizePermissionsRequest(approved.permissions, accounts)
approval.resolve(approved.permissions)
} catch (err) {
// if finalization fails, reject the request
approval.reject(ethErrors.rpc.invalidRequest({
message: err.message, data: err,
}))
}
delete this.pendingApprovals[id]
}
/**
* User rejection callback.
*
* @param {string} id the id of the rejected request
*/
async rejectPermissionsRequest (id) {
const approval = this.pendingApprovals[id]
approval.reject(ethErrors.provider.userRejectedRequest())
delete this.pendingApprovals[id]
}
/**
* Grants the given origin the eth_accounts permission for the given account(s).
* This method should ONLY be called as a result of direct user action in the UI,
* with the intention of supporting legacy dapps that don't support EIP 1102.
*
* @param {string} origin - The origin to expose the account(s) to.
* @param {Array<string>} accounts - The account(s) to expose.
*/
async legacyExposeAccounts (origin, accounts) {
const permissions = {
eth_accounts: {},
}
await this.finalizePermissionsRequest(permissions, accounts)
let error
try {
await new Promise((resolve, reject) => {
this.permissions.grantNewPermissions(origin, permissions, {}, err => err ? resolve() : reject(err))
})
} catch (err) {
error = err
}
if (error) {
if (error.code === 4001) {
throw error
} else {
throw ethErrors.rpc.internal({
message: `Failed to add 'eth_accounts' to '${origin}'.`,
data: {
originalError: error,
accounts,
},
})
}
}
}
/**
* Update the accounts exposed to the given origin.
* Throws error if the update fails.
*
* @param {string} origin - The origin to change the exposed accounts for.
* @param {string[]} accounts - The new account(s) to expose.
*/
async updateExposedAccounts (origin, accounts) {
await this.validateExposedAccounts(accounts)
this.permissions.updateCaveatFor(
origin, 'eth_accounts', CAVEAT_NAMES.exposedAccounts, accounts
)
this.notifyDomain(origin, {
method: ACCOUNTS_CHANGED_NOTIFICATION,
result: accounts,
})
}
/**
* Finalizes a permissions request.
* Throws if request validation fails.
*
* @param {Object} requestedPermissions - The requested permissions.
* @param {string[]} accounts - The accounts to expose, if any.
*/
async finalizePermissionsRequest (requestedPermissions, accounts) {
const { eth_accounts: ethAccounts } = requestedPermissions
if (ethAccounts) {
await this.validateExposedAccounts(accounts)
if (!ethAccounts.caveats) {
ethAccounts.caveats = []
}
// caveat names are unique, and we will only construct this caveat here
ethAccounts.caveats = ethAccounts.caveats.filter(c => (
c.name !== CAVEAT_NAMES.exposedAccounts
))
ethAccounts.caveats.push(
{
type: 'filterResponse',
value: accounts,
name: CAVEAT_NAMES.exposedAccounts,
},
)
}
}
/**
* Validate an array of accounts representing accounts to be exposed
* to a domain. Throws error if validation fails.
*
* @param {string[]} accounts - An array of addresses.
*/
async validateExposedAccounts (accounts) {
if (!Array.isArray(accounts) || accounts.length === 0) {
throw new Error('Must provide non-empty array of account(s).')
}
// assert accounts exist
const allAccounts = await this.keyringController.getAccounts()
accounts.forEach(acc => {
if (!allAccounts.includes(acc)) {
throw new Error(`Unknown account: ${acc}`)
}
})
}
/**
* Removes the given permissions for the given domain.
* @param {object} domains { origin: [permissions] }
*/
removePermissionsFor (domains) {
Object.entries(domains).forEach(([origin, perms]) => {
this.permissions.removePermissionsFor(
origin,
perms.map(methodName => {
if (methodName === 'eth_accounts') {
this.notifyDomain(
origin,
{ method: ACCOUNTS_CHANGED_NOTIFICATION, result: [] }
)
}
return { parentCapability: methodName }
})
)
})
}
/**
* Removes all known domains and their related permissions.
*/
clearPermissions () {
this.permissions.clearDomains()
this.notifyAllDomains({
method: ACCOUNTS_CHANGED_NOTIFICATION,
result: [],
})
}
/**
* A convenience method for retrieving a login object
* or creating a new one if needed.
*
* @param {string} origin = The origin string representing the domain.
*/
_initializePermissions (restoredState) {
// these permission requests are almost certainly stale
const initState = { ...restoredState, permissionsRequests: [] }
this.pendingApprovals = {}
this.permissions = new RpcCap({
// Supports passthrough methods:
safeMethods: SAFE_METHODS,
// optional prefix for internal methods
methodPrefix: WALLET_METHOD_PREFIX,
restrictedMethods: this._restrictedMethods,
/**
* A promise-returning callback used to determine whether to approve
* permissions requests or not.
*
* Currently only returns a boolean, but eventually should return any
* specific parameters or amendments to the permissions.
*
* @param {string} req - The internal rpc-cap user request object.
*/
requestUserApproval: async (req) => {
const { metadata: { id } } = req
this._platform.openExtensionInBrowser('connect')
return new Promise((resolve, reject) => {
this.pendingApprovals[id] = { resolve, reject }
})
},
}, initState)
}
}
module.exports = {
PermissionsController,
addInternalMethodPrefix: prefix,
CAVEAT_NAMES,
}
function prefix (method) {
return WALLET_METHOD_PREFIX + method
}

@ -0,0 +1,169 @@
const clone = require('clone')
const { isValidAddress } = require('ethereumjs-util')
const LOG_LIMIT = 100
/**
* Create middleware for logging requests and responses to restricted and
* permissions-related methods.
*/
module.exports = function createLoggerMiddleware ({
walletPrefix, restrictedMethods, store, logStoreKey, historyStoreKey, ignoreMethods,
}) {
return (req, res, next, _end) => {
let activityEntry, requestedMethods
const { origin, method } = req
const isInternal = method.startsWith(walletPrefix)
if ((isInternal || restrictedMethods.includes(method)) && !ignoreMethods.includes(method)) {
activityEntry = logActivity(req, isInternal)
if (method === `${walletPrefix}requestPermissions`) {
requestedMethods = getRequestedMethods(req)
}
} else if (method === 'eth_requestAccounts') {
activityEntry = logActivity(req, isInternal)
requestedMethods = [ 'eth_accounts' ]
} else {
return next()
}
next(cb => {
const time = Date.now()
addResponse(activityEntry, res, time)
if (!res.error && requestedMethods) {
logHistory(requestedMethods, origin, res.result, time, method === 'eth_requestAccounts')
}
cb()
})
}
function logActivity (request, isInternal) {
const activityEntry = {
id: request.id,
method: request.method,
methodType: isInternal ? 'internal' : 'restricted',
origin: request.origin,
request: cloneObj(request),
requestTime: Date.now(),
response: null,
responseTime: null,
success: null,
}
commitActivity(activityEntry)
return activityEntry
}
function addResponse (activityEntry, response, time) {
if (!response) {
return
}
activityEntry.response = cloneObj(response)
activityEntry.responseTime = time
activityEntry.success = !response.error
}
function commitActivity (entry) {
const logs = store.getState()[logStoreKey]
if (logs.length > LOG_LIMIT - 2) {
logs.pop()
}
logs.push(entry)
store.updateState({ [logStoreKey]: logs })
}
function getRequestedMethods (request) {
if (
!request.params ||
typeof request.params[0] !== 'object' ||
Array.isArray(request.params[0])
) {
return null
}
return Object.keys(request.params[0])
}
function logHistory (requestedMethods, origin, result, time, isEthRequestAccounts) {
let accounts, entries
if (isEthRequestAccounts) {
accounts = result
const accountToTimeMap = accounts.reduce((acc, account) => ({ ...acc, [account]: time }), {})
entries = { 'eth_accounts': { accounts: accountToTimeMap, lastApproved: time } }
} else {
entries = result
? result
.map(perm => {
if (perm.parentCapability === 'eth_accounts') {
accounts = getAccountsFromPermission(perm)
}
return perm.parentCapability
})
.reduce((acc, m) => {
if (requestedMethods.includes(m)) {
if (m === 'eth_accounts') {
const accountToTimeMap = accounts.reduce((acc, account) => ({ ...acc, [account]: time }), {})
acc[m] = { lastApproved: time, accounts: accountToTimeMap }
} else {
acc[m] = { lastApproved: time }
}
}
return acc
}, {})
: {}
}
if (Object.keys(entries).length > 0) {
commitHistory(origin, entries)
}
}
function commitHistory (origin, entries) {
const history = store.getState()[historyStoreKey] || {}
const newOriginHistory = {
...history[origin],
...entries,
}
if (history[origin] && history[origin]['eth_accounts'] && entries['eth_accounts']) {
newOriginHistory['eth_accounts'] = {
lastApproved: entries['eth_accounts'].lastApproved,
accounts: {
...history[origin]['eth_accounts'].accounts,
...entries['eth_accounts'].accounts,
},
}
}
history[origin] = newOriginHistory
store.updateState({ [historyStoreKey]: history })
}
}
// the call to clone is set to disallow circular references
// we attempt cloning at a depth of 3 and 2, then return a
// shallow copy of the object
function cloneObj (obj) {
for (let i = 3; i > 1; i--) {
try {
return clone(obj, false, i)
} catch (_) {}
}
return { ...obj }
}
function getAccountsFromPermission (perm) {
if (perm.parentCapability !== 'eth_accounts' || !perm.caveats) {
return []
}
const accounts = {}
for (const c of perm.caveats) {
if (c.type === 'filterResponse' && Array.isArray(c.value)) {
for (const v of c.value) {
if (isValidAddress(v)) {
accounts[v] = true
}
}
}
}
return Object.keys(accounts)
}

@ -0,0 +1,90 @@
const createAsyncMiddleware = require('json-rpc-engine/src/createAsyncMiddleware')
const { ethErrors } = require('eth-json-rpc-errors')
/**
* Create middleware for handling certain methods and preprocessing permissions requests.
*/
module.exports = function createMethodMiddleware ({
store, storeKey, getAccounts, requestAccountsPermission,
}) {
return createAsyncMiddleware(async (req, res, next) => {
if (typeof req.method !== 'string') {
res.error = ethErrors.rpc.invalidRequest({ data: req})
return
}
switch (req.method) {
// intercepting eth_accounts requests for backwards compatibility,
// i.e. return an empty array instead of an error
case 'eth_accounts':
res.result = await getAccounts()
return
case 'eth_requestAccounts':
// first, just try to get accounts
let accounts = await getAccounts()
if (accounts.length > 0) {
res.result = accounts
return
}
// if no accounts, request the accounts permission
try {
await requestAccountsPermission()
} catch (err) {
res.error = err
return
}
// get the accounts again
accounts = await getAccounts()
if (accounts.length > 0) {
res.result = accounts
} else {
// this should never happen
res.error = ethErrors.rpc.internal(
'Accounts unexpectedly unavailable. Please report this bug.'
)
}
return
// custom method for getting metadata from the requesting domain
case 'wallet_sendDomainMetadata':
const storeState = store.getState()[storeKey]
const extensionId = storeState[req.origin]
? storeState[req.origin].extensionId
: undefined
if (
req.domainMetadata &&
typeof req.domainMetadata.name === 'string'
) {
store.updateState({
[storeKey]: {
...storeState,
[req.origin]: {
extensionId,
...req.domainMetadata,
},
},
})
}
res.result = true
return
default:
break
}
next()
})
}

@ -0,0 +1,49 @@
[
"web3_sha3",
"net_listening",
"net_peerCount",
"net_version",
"eth_blockNumber",
"eth_call",
"eth_chainId",
"eth_coinbase",
"eth_estimateGas",
"eth_gasPrice",
"eth_getBalance",
"eth_getBlockByHash",
"eth_getBlockByNumber",
"eth_getBlockTransactionCountByHash",
"eth_getBlockTransactionCountByNumber",
"eth_getCode",
"eth_getFilterChanges",
"eth_getFilterLogs",
"eth_getLogs",
"eth_getStorageAt",
"eth_getTransactionByBlockHashAndIndex",
"eth_getTransactionByBlockNumberAndIndex",
"eth_getTransactionByHash",
"eth_getTransactionCount",
"eth_getTransactionReceipt",
"eth_getUncleByBlockHashAndIndex",
"eth_getUncleByBlockNumberAndIndex",
"eth_getUncleCountByBlockHash",
"eth_getUncleCountByBlockNumber",
"eth_getWork",
"eth_hashrate",
"eth_mining",
"eth_newBlockFilter",
"eth_newFilter",
"eth_newPendingTransactionFilter",
"eth_protocolVersion",
"eth_sendRawTransaction",
"eth_sendTransaction",
"eth_sign",
"personal_sign",
"eth_signTypedData",
"eth_signTypedData_v1",
"eth_signTypedData_v3",
"eth_submitHashrate",
"eth_submitWork",
"eth_syncing",
"eth_uninstallFilter"
]

@ -0,0 +1,20 @@
module.exports = function getRestrictedMethods (permissionsController) {
return {
'eth_accounts': {
description: 'View the address of the selected account',
method: (_, res, __, end) => {
permissionsController.keyringController.getAccounts()
.then((accounts) => {
res.result = accounts
end()
})
.catch((err) => {
res.error = err
end(err)
})
},
},
}
}

@ -1,4 +1,5 @@
const ObservableStore = require('obs-store') const ObservableStore = require('obs-store')
const { addInternalMethodPrefix } = require('./permissions')
const normalizeAddress = require('eth-sig-util').normalize const normalizeAddress = require('eth-sig-util').normalize
const { isValidAddress, sha3, bufferToHex } = require('ethereumjs-util') const { isValidAddress, sha3, bufferToHex } = require('ethereumjs-util')
const extend = require('xtend') const extend = require('xtend')
@ -57,7 +58,6 @@ class PreferencesController {
useNativeCurrencyAsPrimaryCurrency: true, useNativeCurrencyAsPrimaryCurrency: true,
}, },
completedOnboarding: false, completedOnboarding: false,
migratedPrivacyMode: false,
metaMetricsId: null, metaMetricsId: null,
metaMetricsSendCount: 0, metaMetricsSendCount: 0,
}, opts.initState) }, opts.initState)
@ -187,7 +187,10 @@ class PreferencesController {
* @param {Function} - end * @param {Function} - end
*/ */
async requestWatchAsset (req, res, next, end) { async requestWatchAsset (req, res, next, end) {
if (req.method === 'metamask_watchAsset' || req.method === 'wallet_watchAsset') { if (
req.method === 'metamask_watchAsset' ||
req.method === addInternalMethodPrefix('watchAsset')
) {
const { type, options } = req.params const { type, options } = req.params
switch (type) { switch (type) {
case 'ERC20': case 'ERC20':
@ -303,7 +306,9 @@ class PreferencesController {
const accountTokens = this.store.getState().accountTokens const accountTokens = this.store.getState().accountTokens
addresses.forEach((address) => { addresses.forEach((address) => {
// skip if already exists // skip if already exists
if (identities[address]) return if (identities[address]) {
return
}
// add missing identity // add missing identity
const identityCount = Object.keys(identities).length const identityCount = Object.keys(identities).length
@ -335,7 +340,9 @@ class PreferencesController {
if (Object.keys(newlyLost).length > 0) { if (Object.keys(newlyLost).length > 0) {
// Notify our servers: // Notify our servers:
if (this.diagnostics) this.diagnostics.reportOrphans(newlyLost) if (this.diagnostics) {
this.diagnostics.reportOrphans(newlyLost)
}
// store lost accounts // store lost accounts
for (const key in newlyLost) { for (const key in newlyLost) {
@ -463,7 +470,9 @@ class PreferencesController {
* @return {Promise<string>} * @return {Promise<string>}
*/ */
setAccountLabel (account, label) { setAccountLabel (account, label) {
if (!account) throw new Error('setAccountLabel requires a valid address, got ' + String(account)) if (!account) {
throw new Error('setAccountLabel requires a valid address, got ' + String(account))
}
const address = normalizeAddress(account) const address = normalizeAddress(account)
const {identities} = this.store.getState() const {identities} = this.store.getState()
identities[address] = identities[address] || {} identities[address] = identities[address] || {}
@ -500,7 +509,9 @@ class PreferencesController {
updateRpc (newRpcDetails) { updateRpc (newRpcDetails) {
const rpcList = this.getFrequentRpcListDetail() const rpcList = this.getFrequentRpcListDetail()
const index = rpcList.findIndex((element) => { return element.rpcUrl === newRpcDetails.rpcUrl }) const index = rpcList.findIndex((element) => {
return element.rpcUrl === newRpcDetails.rpcUrl
})
if (index > -1) { if (index > -1) {
const rpcDetail = rpcList[index] const rpcDetail = rpcList[index]
const updatedRpc = extend(rpcDetail, newRpcDetails) const updatedRpc = extend(rpcDetail, newRpcDetails)
@ -524,7 +535,9 @@ class PreferencesController {
*/ */
addToFrequentRpcList (url, chainId, ticker = 'ETH', nickname = '', rpcPrefs = {}) { addToFrequentRpcList (url, chainId, ticker = 'ETH', nickname = '', rpcPrefs = {}) {
const rpcList = this.getFrequentRpcListDetail() const rpcList = this.getFrequentRpcListDetail()
const index = rpcList.findIndex((element) => { return element.rpcUrl === url }) const index = rpcList.findIndex((element) => {
return element.rpcUrl === url
})
if (index !== -1) { if (index !== -1) {
rpcList.splice(index, 1) rpcList.splice(index, 1)
} }
@ -548,7 +561,9 @@ class PreferencesController {
*/ */
removeFromFrequentRpcList (url) { removeFromFrequentRpcList (url) {
const rpcList = this.getFrequentRpcListDetail() const rpcList = this.getFrequentRpcListDetail()
const index = rpcList.findIndex((element) => { return element.rpcUrl === url }) const index = rpcList.findIndex((element) => {
return element.rpcUrl === url
})
if (index !== -1) { if (index !== -1) {
rpcList.splice(index, 1) rpcList.splice(index, 1)
} }
@ -632,13 +647,6 @@ class PreferencesController {
return Promise.resolve(true) return Promise.resolve(true)
} }
unsetMigratedPrivacyMode () {
this.store.updateState({
migratedPrivacyMode: false,
})
return Promise.resolve()
}
// //
// PRIVATE METHODS // PRIVATE METHODS
// //
@ -687,10 +695,16 @@ class PreferencesController {
*/ */
_getTokenRelatedStates (selectedAddress) { _getTokenRelatedStates (selectedAddress) {
const accountTokens = this.store.getState().accountTokens const accountTokens = this.store.getState().accountTokens
if (!selectedAddress) selectedAddress = this.store.getState().selectedAddress if (!selectedAddress) {
selectedAddress = this.store.getState().selectedAddress
}
const providerType = this.network.providerStore.getState().type const providerType = this.network.providerStore.getState().type
if (!(selectedAddress in accountTokens)) accountTokens[selectedAddress] = {} if (!(selectedAddress in accountTokens)) {
if (!(providerType in accountTokens[selectedAddress])) accountTokens[selectedAddress][providerType] = [] accountTokens[selectedAddress] = {}
}
if (!(providerType in accountTokens[selectedAddress])) {
accountTokens[selectedAddress][providerType] = []
}
const tokens = accountTokens[selectedAddress][providerType] const tokens = accountTokens[selectedAddress][providerType]
return { tokens, accountTokens, providerType, selectedAddress } return { tokens, accountTokens, providerType, selectedAddress }
} }
@ -727,13 +741,19 @@ class PreferencesController {
*/ */
_validateERC20AssetParams (opts) { _validateERC20AssetParams (opts) {
const { rawAddress, symbol, decimals } = opts const { rawAddress, symbol, decimals } = opts
if (!rawAddress || !symbol || typeof decimals === 'undefined') throw new Error(`Cannot suggest token without address, symbol, and decimals`) if (!rawAddress || !symbol || typeof decimals === 'undefined') {
if (!(symbol.length < 7)) throw new Error(`Invalid symbol ${symbol} more than six characters`) throw new Error(`Cannot suggest token without address, symbol, and decimals`)
}
if (!(symbol.length < 7)) {
throw new Error(`Invalid symbol ${symbol} more than six characters`)
}
const numDecimals = parseInt(decimals, 10) const numDecimals = parseInt(decimals, 10)
if (isNaN(numDecimals) || numDecimals > 36 || numDecimals < 0) { if (isNaN(numDecimals) || numDecimals > 36 || numDecimals < 0) {
throw new Error(`Invalid decimals ${decimals} must be at least 0, and not over 36`) throw new Error(`Invalid decimals ${decimals} must be at least 0, and not over 36`)
} }
if (!isValidAddress(rawAddress)) throw new Error(`Invalid address ${rawAddress}`) if (!isValidAddress(rawAddress)) {
throw new Error(`Invalid address ${rawAddress}`)
}
} }
} }

@ -1,175 +0,0 @@
const ObservableStore = require('obs-store')
const SafeEventEmitter = require('safe-event-emitter')
const createAsyncMiddleware = require('json-rpc-engine/src/createAsyncMiddleware')
const { errors: rpcErrors } = require('eth-json-rpc-errors')
/**
* A controller that services user-approved requests for a full Ethereum provider API
*/
class ProviderApprovalController extends SafeEventEmitter {
/**
* Creates a ProviderApprovalController
*
* @param {Object} [config] - Options to configure controller
*/
constructor ({ closePopup, initState, keyringController, openPopup, preferencesController } = {}) {
super()
this.closePopup = closePopup
this.keyringController = keyringController
this.openPopup = openPopup
this.preferencesController = preferencesController
this.memStore = new ObservableStore({
providerRequests: [],
})
const defaultState = { approvedOrigins: {} }
this.store = new ObservableStore(Object.assign(defaultState, initState))
}
/**
* Called when a user approves access to a full Ethereum provider API
*
* @param {object} opts - opts for the middleware contains the origin for the middleware
*/
createMiddleware ({ senderUrl, extensionId, getSiteMetadata }) {
return createAsyncMiddleware(async (req, res, next) => {
// only handle requestAccounts
if (req.method !== 'eth_requestAccounts') return next()
// if already approved or privacy mode disabled, return early
const isUnlocked = this.keyringController.memStore.getState().isUnlocked
const origin = senderUrl.hostname
if (this.shouldExposeAccounts(origin) && isUnlocked) {
res.result = [this.preferencesController.getSelectedAddress()]
return
}
// register the provider request
const metadata = { hostname: senderUrl.hostname, origin }
if (extensionId) {
metadata.extensionId = extensionId
} else {
const siteMetadata = await getSiteMetadata(origin)
Object.assign(metadata, { siteTitle: siteMetadata.name, siteImage: siteMetadata.icon})
}
this._handleProviderRequest(metadata)
// wait for resolution of request
const approved = await new Promise(resolve => this.once(`resolvedRequest:${origin}`, ({ approved }) => resolve(approved)))
if (approved) {
res.result = [this.preferencesController.getSelectedAddress()]
} else {
throw rpcErrors.eth.userRejectedRequest('User denied account authorization')
}
})
}
/**
* @typedef {Object} SiteMetadata
* @param {string} hostname - The hostname of the site
* @param {string} origin - The origin of the site
* @param {string} [siteTitle] - The title of the site
* @param {string} [siteImage] - The icon for the site
* @param {string} [extensionId] - The extension ID of the extension
*/
/**
* Called when a tab requests access to a full Ethereum provider API
*
* @param {SiteMetadata} siteMetadata - The metadata for the site requesting full provider access
*/
_handleProviderRequest (siteMetadata) {
const { providerRequests } = this.memStore.getState()
const origin = siteMetadata.origin
this.memStore.updateState({
providerRequests: [
...providerRequests,
siteMetadata,
],
})
const isUnlocked = this.keyringController.memStore.getState().isUnlocked
const { approvedOrigins } = this.store.getState()
const originAlreadyHandled = approvedOrigins[origin]
if (originAlreadyHandled && isUnlocked) {
return
}
this.openPopup && this.openPopup()
}
/**
* Called when a user approves access to a full Ethereum provider API
*
* @param {string} origin - origin of the domain that had provider access approved
*/
approveProviderRequestByOrigin (origin) {
if (this.closePopup) {
this.closePopup()
}
const { approvedOrigins } = this.store.getState()
const { providerRequests } = this.memStore.getState()
const providerRequest = providerRequests.find((request) => request.origin === origin)
const remainingProviderRequests = providerRequests.filter(request => request.origin !== origin)
this.store.updateState({
approvedOrigins: {
...approvedOrigins,
[origin]: {
siteTitle: providerRequest ? providerRequest.siteTitle : null,
siteImage: providerRequest ? providerRequest.siteImage : null,
hostname: providerRequest ? providerRequest.hostname : null,
},
},
})
this.memStore.updateState({ providerRequests: remainingProviderRequests })
this.emit(`resolvedRequest:${origin}`, { approved: true })
}
/**
* Called when a tab rejects access to a full Ethereum provider API
*
* @param {string} origin - origin of the domain that had provider access approved
*/
rejectProviderRequestByOrigin (origin) {
if (this.closePopup) {
this.closePopup()
}
const { approvedOrigins } = this.store.getState()
const { providerRequests } = this.memStore.getState()
const remainingProviderRequests = providerRequests.filter(request => request.origin !== origin)
// We're cloning and deleting keys here because we don't want to keep unneeded keys
const _approvedOrigins = Object.assign({}, approvedOrigins)
delete _approvedOrigins[origin]
this.store.putState({ approvedOrigins: _approvedOrigins })
this.memStore.putState({ providerRequests: remainingProviderRequests })
this.emit(`resolvedRequest:${origin}`, { approved: false })
}
/**
* Clears any approvals for user-approved origins
*/
clearApprovedOrigins () {
this.store.updateState({
approvedOrigins: {},
})
}
/**
* Determines if a given origin should have accounts exposed
*
* @param {string} origin - Domain origin to check for approval status
* @returns {boolean} - True if the origin has been approved
*/
shouldExposeAccounts (origin) {
return Boolean(this.store.getState().approvedOrigins[origin])
}
/**
* Returns a merged state representation
* @return {object}
* @private
*/
_getMergedState () {
return Object.assign({}, this.memStore.getState(), this.store.getState())
}
}
module.exports = ProviderApprovalController

@ -90,7 +90,9 @@ class RecentBlocksController {
async processBlock (newBlockNumberHex) { async processBlock (newBlockNumberHex) {
const newBlockNumber = Number.parseInt(newBlockNumberHex, 16) const newBlockNumber = Number.parseInt(newBlockNumberHex, 16)
const newBlock = await this.getBlockByNumber(newBlockNumber, true) const newBlock = await this.getBlockByNumber(newBlockNumber, true)
if (!newBlock) return if (!newBlock) {
return
}
const block = this.mapTransactionsToPrices(newBlock) const block = this.mapTransactionsToPrices(newBlock)
@ -162,7 +164,9 @@ class RecentBlocksController {
await Promise.all(targetBlockNumbers.map(async (targetBlockNumber) => { await Promise.all(targetBlockNumbers.map(async (targetBlockNumber) => {
try { try {
const newBlock = await this.getBlockByNumber(targetBlockNumber, true) const newBlock = await this.getBlockByNumber(targetBlockNumber, true)
if (!newBlock) return if (!newBlock) {
return
}
this.backfillBlock(newBlock) this.backfillBlock(newBlock)
} catch (e) { } catch (e) {

@ -28,7 +28,9 @@ class ThreeBoxController {
this.provider = this._createProvider({ this.provider = this._createProvider({
version, version,
getAccounts: async ({ origin }) => { getAccounts: async ({ origin }) => {
if (origin !== '3Box') { return [] } if (origin !== '3Box') {
return []
}
const isUnlocked = getKeyringControllerState().isUnlocked const isUnlocked = getKeyringControllerState().isUnlocked
const accounts = await this.keyringController.getAccounts() const accounts = await this.keyringController.getAccounts()

@ -28,7 +28,9 @@ class TokenRatesController {
* Updates exchange rates for all tokens * Updates exchange rates for all tokens
*/ */
async updateExchangeRates () { async updateExchangeRates () {
if (!this.isActive) { return } if (!this.isActive) {
return
}
const contractExchangeRates = {} const contractExchangeRates = {}
const nativeCurrency = this.currency ? this.currency.state.nativeCurrency.toLowerCase() : 'eth' const nativeCurrency = this.currency ? this.currency.state.nativeCurrency.toLowerCase() : 'eth'
const pairs = this._tokens.map(token => token.address).join(',') const pairs = this._tokens.map(token => token.address).join(',')
@ -53,8 +55,12 @@ class TokenRatesController {
*/ */
set interval (interval) { set interval (interval) {
this._handle && clearInterval(this._handle) this._handle && clearInterval(this._handle)
if (!interval) { return } if (!interval) {
this._handle = setInterval(() => { this.updateExchangeRates() }, interval) return
}
this._handle = setInterval(() => {
this.updateExchangeRates()
}, interval)
} }
/** /**
@ -62,10 +68,14 @@ class TokenRatesController {
*/ */
set preferences (preferences) { set preferences (preferences) {
this._preferences && this._preferences.unsubscribe() this._preferences && this._preferences.unsubscribe()
if (!preferences) { return } if (!preferences) {
return
}
this._preferences = preferences this._preferences = preferences
this.tokens = preferences.getState().tokens this.tokens = preferences.getState().tokens
preferences.subscribe(({ tokens = [] }) => { this.tokens = tokens }) preferences.subscribe(({ tokens = [] }) => {
this.tokens = tokens
})
} }
/** /**

@ -3,7 +3,7 @@ const ObservableStore = require('obs-store')
const ethUtil = require('ethereumjs-util') const ethUtil = require('ethereumjs-util')
const Transaction = require('ethereumjs-tx') const Transaction = require('ethereumjs-tx')
const EthQuery = require('ethjs-query') const EthQuery = require('ethjs-query')
const { errors: rpcErrors } = require('eth-json-rpc-errors') const { ethErrors } = require('eth-json-rpc-errors')
const abi = require('human-standard-token-abi') const abi = require('human-standard-token-abi')
const abiDecoder = require('abi-decoder') const abiDecoder = require('abi-decoder')
abiDecoder.addABI(abi) abiDecoder.addABI(abi)
@ -54,6 +54,7 @@ const { hexToBn, bnToHex, BnMultiplyByFraction } = require('../../lib/util')
@param {Object} opts.blockTracker - An instance of eth-blocktracker @param {Object} opts.blockTracker - An instance of eth-blocktracker
@param {Object} opts.provider - A network provider. @param {Object} opts.provider - A network provider.
@param {Function} opts.signTransaction - function the signs an ethereumjs-tx @param {Function} opts.signTransaction - function the signs an ethereumjs-tx
@param {object} opts.getPermittedAccounts - get accounts that an origin has permissions for
@param {Function} [opts.getGasPrice] - optional gas price calculator @param {Function} [opts.getGasPrice] - optional gas price calculator
@param {Function} opts.signTransaction - ethTx signer that returns a rawTx @param {Function} opts.signTransaction - ethTx signer that returns a rawTx
@param {Number} [opts.txHistoryLimit] - number *optional* for limiting how many transactions are in state @param {Number} [opts.txHistoryLimit] - number *optional* for limiting how many transactions are in state
@ -66,6 +67,7 @@ class TransactionController extends EventEmitter {
this.networkStore = opts.networkStore || new ObservableStore({}) this.networkStore = opts.networkStore || new ObservableStore({})
this.preferencesStore = opts.preferencesStore || new ObservableStore({}) this.preferencesStore = opts.preferencesStore || new ObservableStore({})
this.provider = opts.provider this.provider = opts.provider
this.getPermittedAccounts = opts.getPermittedAccounts
this.blockTracker = opts.blockTracker this.blockTracker = opts.blockTracker
this.signEthTx = opts.signTransaction this.signEthTx = opts.signTransaction
this.getGasPrice = opts.getGasPrice this.getGasPrice = opts.getGasPrice
@ -148,18 +150,18 @@ class TransactionController extends EventEmitter {
} }
/** /**
add a new unapproved transaction to the pipeline * Add a new unapproved transaction to the pipeline
*
@returns {Promise<string>} the hash of the transaction after being submitted to the network * @returns {Promise<string>} the hash of the transaction after being submitted to the network
@param txParams {object} - txParams for the transaction * @param txParams {object} - txParams for the transaction
@param opts {object} - with the key origin to put the origin on the txMeta * @param opts {object} - with the key origin to put the origin on the txMeta
*/ */
async newUnapprovedTransaction (txParams, opts = {}) { async newUnapprovedTransaction (txParams, opts = {}) {
log.debug(`MetaMaskController newUnapprovedTransaction ${JSON.stringify(txParams)}`) log.debug(`MetaMaskController newUnapprovedTransaction ${JSON.stringify(txParams)}`)
const initialTxMeta = await this.addUnapprovedTransaction(txParams)
initialTxMeta.origin = opts.origin const initialTxMeta = await this.addUnapprovedTransaction(txParams, opts.origin)
this.txStateManager.updateTx(initialTxMeta, '#newUnapprovedTransaction - adding the origin')
// listen for tx completion (success, fail) // listen for tx completion (success, fail)
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.txStateManager.once(`${initialTxMeta.id}:finished`, (finishedTxMeta) => { this.txStateManager.once(`${initialTxMeta.id}:finished`, (finishedTxMeta) => {
@ -167,30 +169,27 @@ class TransactionController extends EventEmitter {
case 'submitted': case 'submitted':
return resolve(finishedTxMeta.hash) return resolve(finishedTxMeta.hash)
case 'rejected': case 'rejected':
return reject(cleanErrorStack(rpcErrors.eth.userRejectedRequest('MetaMask Tx Signature: User denied transaction signature.'))) return reject(cleanErrorStack(ethErrors.provider.userRejectedRequest('MetaMask Tx Signature: User denied transaction signature.')))
case 'failed': case 'failed':
return reject(cleanErrorStack(rpcErrors.internal(finishedTxMeta.err.message))) return reject(cleanErrorStack(ethErrors.rpc.internal(finishedTxMeta.err.message)))
default: default:
return reject(cleanErrorStack(rpcErrors.internal(`MetaMask Tx Signature: Unknown problem: ${JSON.stringify(finishedTxMeta.txParams)}`))) return reject(cleanErrorStack(ethErrors.rpc.internal(`MetaMask Tx Signature: Unknown problem: ${JSON.stringify(finishedTxMeta.txParams)}`)))
} }
}) })
}) })
} }
/** /**
Validates and generates a txMeta with defaults and puts it in txStateManager * Validates and generates a txMeta with defaults and puts it in txStateManager
store * store.
*
@returns {txMeta} * @returns {txMeta}
*/ */
async addUnapprovedTransaction (txParams, origin) {
async addUnapprovedTransaction (txParams) {
// validate // validate
const normalizedTxParams = txUtils.normalizeTxParams(txParams) const normalizedTxParams = txUtils.normalizeTxParams(txParams)
// Assert the from address is the selected address
if (normalizedTxParams.from !== this.getSelectedAddress()) {
throw new Error(`Transaction from address isn't valid for this account`)
}
txUtils.validateTxParams(normalizedTxParams) txUtils.validateTxParams(normalizedTxParams)
/** /**
`generateTxMeta` adds the default txMeta properties to the passed object. `generateTxMeta` adds the default txMeta properties to the passed object.
@ -202,6 +201,30 @@ class TransactionController extends EventEmitter {
txParams: normalizedTxParams, txParams: normalizedTxParams,
type: TRANSACTION_TYPE_STANDARD, type: TRANSACTION_TYPE_STANDARD,
}) })
if (origin === 'metamask') {
// Assert the from address is the selected address
if (normalizedTxParams.from !== this.getSelectedAddress()) {
throw ethErrors.rpc.internal({
message: `Internally initiated transaction is using invalid account.`,
data: {
origin,
fromAddress: normalizedTxParams.from,
selectedAddress: this.getSelectedAddress(),
},
})
}
} else {
// Assert that the origin has permissions to initiate transactions from
// the specified address
const permittedAddresses = await this.getPermittedAccounts(origin)
if (!permittedAddresses.includes(normalizedTxParams.from)) {
throw ethErrors.provider.unauthorized({ data: { origin }})
}
}
txMeta['origin'] = origin
const { transactionCategory, getCodeResponse } = await this._determineTransactionCategory(txParams) const { transactionCategory, getCodeResponse } = await this._determineTransactionCategory(txParams)
txMeta.transactionCategory = transactionCategory txMeta.transactionCategory = transactionCategory
this.addTx(txMeta) this.addTx(txMeta)
@ -222,14 +245,15 @@ class TransactionController extends EventEmitter {
txMeta.loadingDefaults = false txMeta.loadingDefaults = false
// save txMeta // save txMeta
this.txStateManager.updateTx(txMeta) this.txStateManager.updateTx(txMeta, 'Added new unapproved transaction.')
return txMeta return txMeta
} }
/** /**
adds the tx gas defaults: gas && gasPrice * Adds the tx gas defaults: gas && gasPrice
@param txMeta {Object} - the txMeta object * @param txMeta {Object} - the txMeta object
@returns {Promise<object>} resolves with txMeta * @returns {Promise<object>} resolves with txMeta
*/ */
async addTxGasDefaults (txMeta, getCodeResponse) { async addTxGasDefaults (txMeta, getCodeResponse) {
const txParams = txMeta.txParams const txParams = txMeta.txParams
@ -421,13 +445,16 @@ class TransactionController extends EventEmitter {
log.error(err) log.error(err)
} }
// must set transaction to submitted/failed before releasing lock // must set transaction to submitted/failed before releasing lock
if (nonceLock) nonceLock.releaseLock() if (nonceLock) {
nonceLock.releaseLock()
}
// continue with error chain // continue with error chain
throw err throw err
} finally { } finally {
this.inProcessOfSigning.delete(txId) this.inProcessOfSigning.delete(txId)
} }
} }
/** /**
adds the chain id and signs the transaction and set the status to signed adds the chain id and signs the transaction and set the status to signed
@param txId {number} - the tx's Id @param txId {number} - the tx's Id
@ -622,7 +649,9 @@ class TransactionController extends EventEmitter {
} }
}) })
this.pendingTxTracker.on('tx:retry', (txMeta) => { this.pendingTxTracker.on('tx:retry', (txMeta) => {
if (!('retryCount' in txMeta)) txMeta.retryCount = 0 if (!('retryCount' in txMeta)) {
txMeta.retryCount = 0
}
txMeta.retryCount++ txMeta.retryCount++
this.txStateManager.updateTx(txMeta, 'transactions/pending-tx-tracker#event: tx:retry') this.txStateManager.updateTx(txMeta, 'transactions/pending-tx-tracker#event: tx:retry')
}) })
@ -676,10 +705,14 @@ class TransactionController extends EventEmitter {
const txMeta = this.txStateManager.getTx(txId) const txMeta = this.txStateManager.getTx(txId)
const { nonce, from } = txMeta.txParams const { nonce, from } = txMeta.txParams
const sameNonceTxs = this.txStateManager.getFilteredTxList({nonce, from}) const sameNonceTxs = this.txStateManager.getFilteredTxList({nonce, from})
if (!sameNonceTxs.length) return if (!sameNonceTxs.length) {
return
}
// mark all same nonce transactions as dropped and give i a replacedBy hash // mark all same nonce transactions as dropped and give i a replacedBy hash
sameNonceTxs.forEach((otherTxMeta) => { sameNonceTxs.forEach((otherTxMeta) => {
if (otherTxMeta.id === txId) return if (otherTxMeta.id === txId) {
return
}
otherTxMeta.replacedBy = txMeta.hash otherTxMeta.replacedBy = txMeta.hash
this.txStateManager.updateTx(txMeta, 'transactions/pending-tx-tracker#event: tx:confirmed reference to confirmed txHash with same nonce') this.txStateManager.updateTx(txMeta, 'transactions/pending-tx-tracker#event: tx:confirmed reference to confirmed txHash with same nonce')
this.txStateManager.setTxStatusDropped(otherTxMeta.id) this.txStateManager.setTxStatusDropped(otherTxMeta.id)

@ -18,7 +18,9 @@ function migrateFromSnapshotsToDiffs (longHistory) {
longHistory longHistory
// convert non-initial history entries into diffs // convert non-initial history entries into diffs
.map((entry, index) => { .map((entry, index) => {
if (index === 0) return entry if (index === 0) {
return entry
}
return generateHistoryEntry(longHistory[index - 1], entry) return generateHistoryEntry(longHistory[index - 1], entry)
}) })
) )
@ -40,7 +42,9 @@ function generateHistoryEntry (previousState, newState, note) {
const entry = jsonDiffer.compare(previousState, newState) const entry = jsonDiffer.compare(previousState, newState)
// Add a note to the first op, since it breaks if we append it to the entry // Add a note to the first op, since it breaks if we append it to the entry
if (entry[0]) { if (entry[0]) {
if (note) entry[0].note = note if (note) {
entry[0].note = note
}
entry[0].timestamp = Date.now() entry[0].timestamp = Date.now()
} }

@ -35,7 +35,9 @@ function normalizeTxParams (txParams, LowerCase) {
// apply only keys in the normalizers // apply only keys in the normalizers
const normalizedTxParams = {} const normalizedTxParams = {}
for (const key in normalizers) { for (const key in normalizers) {
if (txParams[key]) normalizedTxParams[key] = normalizers[key](txParams[key], LowerCase) if (txParams[key]) {
normalizedTxParams[key] = normalizers[key](txParams[key], LowerCase)
}
} }
return normalizedTxParams return normalizedTxParams
} }
@ -64,8 +66,12 @@ function validateTxParams (txParams) {
@param txParams {object} @param txParams {object}
*/ */
function validateFrom (txParams) { function validateFrom (txParams) {
if (!(typeof txParams.from === 'string')) throw new Error(`Invalid from address ${txParams.from} not a string`) if (!(typeof txParams.from === 'string')) {
if (!isValidAddress(txParams.from)) throw new Error('Invalid from address') throw new Error(`Invalid from address ${txParams.from} not a string`)
}
if (!isValidAddress(txParams.from)) {
throw new Error('Invalid from address')
}
} }
/** /**

@ -56,7 +56,9 @@ class PendingTransactionTracker extends EventEmitter {
resubmitPendingTxs (blockNumber) { resubmitPendingTxs (blockNumber) {
const pending = this.getPendingTransactions() const pending = this.getPendingTransactions()
// only try resubmitting if their are transactions to resubmit // only try resubmitting if their are transactions to resubmit
if (!pending.length) return if (!pending.length) {
return
}
pending.forEach((txMeta) => this._resubmitTx(txMeta, blockNumber).catch((err) => { pending.forEach((txMeta) => this._resubmitTx(txMeta, blockNumber).catch((err) => {
/* /*
Dont marked as failed if the error is a "known" transaction warning Dont marked as failed if the error is a "known" transaction warning
@ -79,7 +81,9 @@ class PendingTransactionTracker extends EventEmitter {
errorMessage.includes('nonce too low') errorMessage.includes('nonce too low')
) )
// ignore resubmit warnings, return early // ignore resubmit warnings, return early
if (isKnownTx) return if (isKnownTx) {
return
}
// encountered real error - transition to error state // encountered real error - transition to error state
txMeta.warning = { txMeta.warning = {
error: errorMessage, error: errorMessage,
@ -107,10 +111,14 @@ class PendingTransactionTracker extends EventEmitter {
const retryCount = txMeta.retryCount || 0 const retryCount = txMeta.retryCount || 0
// Exponential backoff to limit retries at publishing // Exponential backoff to limit retries at publishing
if (txBlockDistance <= Math.pow(2, retryCount) - 1) return if (txBlockDistance <= Math.pow(2, retryCount) - 1) {
return
}
// Only auto-submit already-signed txs: // Only auto-submit already-signed txs:
if (!('rawTx' in txMeta)) return this.approveTransaction(txMeta.id) if (!('rawTx' in txMeta)) {
return this.approveTransaction(txMeta.id)
}
const rawTx = txMeta.rawTx const rawTx = txMeta.rawTx
const txHash = await this.publishTransaction(rawTx) const txHash = await this.publishTransaction(rawTx)
@ -132,7 +140,9 @@ class PendingTransactionTracker extends EventEmitter {
const txId = txMeta.id const txId = txMeta.id
// Only check submitted txs // Only check submitted txs
if (txMeta.status !== 'submitted') return if (txMeta.status !== 'submitted') {
return
}
// extra check in case there was an uncaught error during the // extra check in case there was an uncaught error during the
// signature and submission process // signature and submission process

@ -142,9 +142,13 @@ class TxGasUtil {
const bufferedGasLimitBn = initialGasLimitBn.muln(1.5) const bufferedGasLimitBn = initialGasLimitBn.muln(1.5)
// if initialGasLimit is above blockGasLimit, dont modify it // if initialGasLimit is above blockGasLimit, dont modify it
if (initialGasLimitBn.gt(upperGasLimitBn)) return bnToHex(initialGasLimitBn) if (initialGasLimitBn.gt(upperGasLimitBn)) {
return bnToHex(initialGasLimitBn)
}
// if bufferedGasLimit is below blockGasLimit, use bufferedGasLimit // if bufferedGasLimit is below blockGasLimit, use bufferedGasLimit
if (bufferedGasLimitBn.lt(upperGasLimitBn)) return bnToHex(bufferedGasLimitBn) if (bufferedGasLimitBn.lt(upperGasLimitBn)) {
return bnToHex(bufferedGasLimitBn)
}
// otherwise use blockGasLimit // otherwise use blockGasLimit
return bnToHex(upperGasLimitBn) return bnToHex(upperGasLimitBn)
} }

@ -45,7 +45,9 @@ class TransactionStateManager extends EventEmitter {
*/ */
generateTxMeta (opts) { generateTxMeta (opts) {
const netId = this.getNetwork() const netId = this.getNetwork()
if (netId === 'loading') throw new Error('MetaMask is having trouble connecting to the network') if (netId === 'loading') {
throw new Error('MetaMask is having trouble connecting to the network')
}
return extend({ return extend({
id: createId(), id: createId(),
time: (new Date()).getTime(), time: (new Date()).getTime(),
@ -89,7 +91,9 @@ class TransactionStateManager extends EventEmitter {
*/ */
getApprovedTransactions (address) { getApprovedTransactions (address) {
const opts = { status: 'approved' } const opts = { status: 'approved' }
if (address) opts.from = address if (address) {
opts.from = address
}
return this.getFilteredTxList(opts) return this.getFilteredTxList(opts)
} }
@ -100,7 +104,9 @@ class TransactionStateManager extends EventEmitter {
*/ */
getPendingTransactions (address) { getPendingTransactions (address) {
const opts = { status: 'submitted' } const opts = { status: 'submitted' }
if (address) opts.from = address if (address) {
opts.from = address
}
return this.getFilteredTxList(opts) return this.getFilteredTxList(opts)
} }
@ -111,7 +117,9 @@ class TransactionStateManager extends EventEmitter {
*/ */
getConfirmedTransactions (address) { getConfirmedTransactions (address) {
const opts = { status: 'confirmed' } const opts = { status: 'confirmed' }
if (address) opts.from = address if (address) {
opts.from = address
}
return this.getFilteredTxList(opts) return this.getFilteredTxList(opts)
} }
@ -243,10 +251,14 @@ class TransactionStateManager extends EventEmitter {
// validate types // validate types
switch (key) { switch (key) {
case 'chainId': case 'chainId':
if (typeof value !== 'number' && typeof value !== 'string') throw new Error(`${key} in txParams is not a Number or hex string. got: (${value})`) if (typeof value !== 'number' && typeof value !== 'string') {
throw new Error(`${key} in txParams is not a Number or hex string. got: (${value})`)
}
break break
default: default:
if (typeof value !== 'string') throw new Error(`${key} in txParams is not a string. got: (${value})`) if (typeof value !== 'string') {
throw new Error(`${key} in txParams is not a string. got: (${value})`)
}
break break
} }
}) })

@ -1,73 +0,0 @@
class StandardProvider {
_isConnected
_provider
constructor (provider) {
this._provider = provider
this._subscribe()
// indicate that we've connected, mostly just for standard compliance
setTimeout(() => {
this._onConnect()
})
}
_onClose () {
if (this._isConnected === undefined || this._isConnected) {
this._provider.emit('close', {
code: 1011,
reason: 'Network connection error',
})
}
this._isConnected = false
}
_onConnect () {
!this._isConnected && this._provider.emit('connect')
this._isConnected = true
}
_subscribe () {
this._provider.on('data', (error, { method, params }) => {
if (!error && method === 'eth_subscription') {
this._provider.emit('notification', params.result)
}
})
}
/**
* Initiate an RPC method call
*
* @param {string} method - RPC method name to call
* @param {string[]} params - Array of RPC method parameters
* @returns {Promise<*>} Promise resolving to the result if successful
*/
send (method, params = []) {
return new Promise((resolve, reject) => {
try {
this._provider.sendAsync({ id: 1, jsonrpc: '2.0', method, params }, (error, response) => {
error = error || response.error
error ? reject(error) : resolve(response)
})
} catch (error) {
reject(error)
}
})
}
}
/**
* Converts a legacy provider into an EIP-1193-compliant standard provider
* @param {Object} provider - Legacy provider to convert
* @returns {Object} Standard provider
*/
export default function createStandardProvider (provider) {
const standardProvider = new StandardProvider(provider)
const sendLegacy = provider.send
provider.send = (methodOrPayload, callbackOrArgs) => {
if (typeof methodOrPayload === 'string' && !callbackOrArgs || Array.isArray(callbackOrArgs)) {
return standardProvider.send(methodOrPayload, callbackOrArgs)
}
return sendLegacy.call(provider, methodOrPayload, callbackOrArgs)
}
return provider
}

@ -14,17 +14,17 @@ class EdgeEncryptor {
* @returns {Promise<string>} Promise resolving to an object with ciphertext * @returns {Promise<string>} Promise resolving to an object with ciphertext
*/ */
encrypt (password, dataObject) { encrypt (password, dataObject) {
var salt = this._generateSalt() const salt = this._generateSalt()
return this._keyFromPassword(password, salt) return this._keyFromPassword(password, salt)
.then(function (key) { .then(function (key) {
var data = JSON.stringify(dataObject) const data = JSON.stringify(dataObject)
var dataBuffer = Unibabel.utf8ToBuffer(data) const dataBuffer = Unibabel.utf8ToBuffer(data)
var vector = global.crypto.getRandomValues(new Uint8Array(16)) const vector = global.crypto.getRandomValues(new Uint8Array(16))
var resultbuffer = asmcrypto.AES_GCM.encrypt(dataBuffer, key, vector) const resultbuffer = asmcrypto.AES_GCM.encrypt(dataBuffer, key, vector)
var buffer = new Uint8Array(resultbuffer) const buffer = new Uint8Array(resultbuffer)
var vectorStr = Unibabel.bufferToBase64(vector) const vectorStr = Unibabel.bufferToBase64(vector)
var vaultStr = Unibabel.bufferToBase64(buffer) const vaultStr = Unibabel.bufferToBase64(buffer)
return JSON.stringify({ return JSON.stringify({
data: vaultStr, data: vaultStr,
iv: vectorStr, iv: vectorStr,
@ -48,7 +48,7 @@ class EdgeEncryptor {
const encryptedData = Unibabel.base64ToBuffer(payload.data) const encryptedData = Unibabel.base64ToBuffer(payload.data)
const vector = Unibabel.base64ToBuffer(payload.iv) const vector = Unibabel.base64ToBuffer(payload.iv)
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
var result let result
try { try {
result = asmcrypto.AES_GCM.decrypt(encryptedData, key, vector) result = asmcrypto.AES_GCM.decrypt(encryptedData, key, vector)
} catch (err) { } catch (err) {
@ -72,12 +72,12 @@ class EdgeEncryptor {
*/ */
_keyFromPassword (password, salt) { _keyFromPassword (password, salt) {
var passBuffer = Unibabel.utf8ToBuffer(password) const passBuffer = Unibabel.utf8ToBuffer(password)
var saltBuffer = Unibabel.base64ToBuffer(salt) const saltBuffer = Unibabel.base64ToBuffer(salt)
const iterations = 10000 const iterations = 10000
const length = 32 // SHA256 hash size const length = 32 // SHA256 hash size
return new Promise((resolve) => { return new Promise((resolve) => {
var key = asmcrypto.Pbkdf2HmacSha256(passBuffer, saltBuffer, iterations, length) const key = asmcrypto.Pbkdf2HmacSha256(passBuffer, saltBuffer, iterations, length)
resolve(key) resolve(key)
}) })
} }
@ -89,9 +89,9 @@ class EdgeEncryptor {
* @returns {string} Randomized base64 encoded data * @returns {string} Randomized base64 encoded data
*/ */
_generateSalt (byteCount = 32) { _generateSalt (byteCount = 32) {
var view = new Uint8Array(byteCount) const view = new Uint8Array(byteCount)
global.crypto.getRandomValues(view) global.crypto.getRandomValues(view)
var b64encoded = btoa(String.fromCharCode.apply(null, view)) const b64encoded = btoa(String.fromCharCode.apply(null, view))
return b64encoded return b64encoded
} }
} }

@ -1,6 +1,5 @@
/*global Web3*/ /*global Web3*/
// need to make sure we aren't affected by overlapping namespaces // need to make sure we aren't affected by overlapping namespaces
// and that we dont affect the app with our namespace // and that we dont affect the app with our namespace
// mostly a fix for web3's BigNumber if AMD's "define" is defined... // mostly a fix for web3's BigNumber if AMD's "define" is defined...
@ -32,14 +31,14 @@ const restoreContextAfterImports = () => {
} }
cleanContextForImports() cleanContextForImports()
require('web3/dist/web3.min.js')
const log = require('loglevel') const log = require('loglevel')
const LocalMessageDuplexStream = require('post-message-stream') const LocalMessageDuplexStream = require('post-message-stream')
const setupDappAutoReload = require('./lib/auto-reload.js')
const MetamaskInpageProvider = require('metamask-inpage-provider') const MetamaskInpageProvider = require('metamask-inpage-provider')
const createStandardProvider = require('./createStandardProvider').default
let warned = false // TODO:deprecate:2020-01-13
require('web3/dist/web3.min.js')
const setupDappAutoReload = require('./lib/auto-reload.js')
restoreContextAfterImports() restoreContextAfterImports()
@ -61,89 +60,6 @@ const inpageProvider = new MetamaskInpageProvider(metamaskStream)
// set a high max listener count to avoid unnecesary warnings // set a high max listener count to avoid unnecesary warnings
inpageProvider.setMaxListeners(100) inpageProvider.setMaxListeners(100)
let warnedOfAutoRefreshDeprecation = false
// augment the provider with its enable method
inpageProvider.enable = function ({ force } = {}) {
if (
!warnedOfAutoRefreshDeprecation &&
inpageProvider.autoRefreshOnNetworkChange
) {
console.warn(`MetaMask: MetaMask will soon stop reloading pages on network change.
If you rely upon this behavior, add a 'networkChanged' event handler to trigger the reload manually: https://metamask.github.io/metamask-docs/API_Reference/Ethereum_Provider#ethereum.on(eventname%2C-callback)
Set 'ethereum.autoRefreshOnNetworkChange' to 'false' to silence this warning: https://metamask.github.io/metamask-docs/API_Reference/Ethereum_Provider#ethereum.autorefreshonnetworkchange'
`)
warnedOfAutoRefreshDeprecation = true
}
return new Promise((resolve, reject) => {
inpageProvider.sendAsync({ method: 'eth_requestAccounts', params: [force] }, (error, response) => {
if (error || response.error) {
reject(error || response.error)
} else {
resolve(response.result)
}
})
})
}
// give the dapps control of a refresh they can toggle this off on the window.ethereum
// this will be default true so it does not break any old apps.
inpageProvider.autoRefreshOnNetworkChange = true
// publicConfig isn't populated until we get a message from background.
// Using this getter will ensure the state is available
const getPublicConfigWhenReady = async () => {
const store = inpageProvider.publicConfigStore
let state = store.getState()
// if state is missing, wait for first update
if (!state.networkVersion) {
state = await new Promise(resolve => store.once('update', resolve))
console.log('new state', state)
}
return state
}
// add metamask-specific convenience methods
inpageProvider._metamask = new Proxy({
/**
* Synchronously determines if this domain is currently enabled, with a potential false negative if called to soon
*
* @returns {boolean} - returns true if this domain is currently enabled
*/
isEnabled: function () {
const { isEnabled } = inpageProvider.publicConfigStore.getState()
return Boolean(isEnabled)
},
/**
* Asynchronously determines if this domain is currently enabled
*
* @returns {Promise<boolean>} - Promise resolving to true if this domain is currently enabled
*/
isApproved: async function () {
const { isEnabled } = await getPublicConfigWhenReady()
return Boolean(isEnabled)
},
/**
* Determines if MetaMask is unlocked by the user
*
* @returns {Promise<boolean>} - Promise resolving to true if MetaMask is currently unlocked
*/
isUnlocked: async function () {
const { isUnlocked } = await getPublicConfigWhenReady()
return Boolean(isUnlocked)
},
}, {
get: function (obj, prop) {
!warned && console.warn('Heads up! ethereum._metamask exposes methods that have ' +
'not been standardized yet. This means that these methods may not be implemented ' +
'in other dapp browsers and may be removed from MetaMask in the future.')
warned = true
return obj[prop]
},
})
// Work around for web3@1.0 deleting the bound `sendAsync` but not the unbound // Work around for web3@1.0 deleting the bound `sendAsync` but not the unbound
// `sendAsync` method on the prototype, causing `this` reference issues // `sendAsync` method on the prototype, causing `this` reference issues
const proxiedInpageProvider = new Proxy(inpageProvider, { const proxiedInpageProvider = new Proxy(inpageProvider, {
@ -152,12 +68,12 @@ const proxiedInpageProvider = new Proxy(inpageProvider, {
deleteProperty: () => true, deleteProperty: () => true,
}) })
window.ethereum = createStandardProvider(proxiedInpageProvider)
// //
// setup web3 // TODO:deprecate:2020-01-13
// //
// setup web3
if (typeof window.web3 !== 'undefined') { if (typeof window.web3 !== 'undefined') {
throw new Error(`MetaMask detected another web3. throw new Error(`MetaMask detected another web3.
MetaMask will not work reliably with another web3 extension. MetaMask will not work reliably with another web3 extension.
@ -172,15 +88,13 @@ web3.setProvider = function () {
} }
log.debug('MetaMask - injected web3') log.debug('MetaMask - injected web3')
setupDappAutoReload(web3, inpageProvider.publicConfigStore) proxiedInpageProvider._web3Ref = web3.eth
// set web3 defaultAccount // setup dapp auto reload AND proxy web3
inpageProvider.publicConfigStore.subscribe(function (state) { setupDappAutoReload(web3, inpageProvider._publicConfigStore)
web3.eth.defaultAccount = state.selectedAddress
})
inpageProvider.publicConfigStore.subscribe(function (state) { //
if (state.onboardingcomplete) { // end deprecate:2020-01-13
window.postMessage('onboardingcomplete', '*') //
}
}) window.ethereum = proxiedInpageProvider

@ -124,7 +124,9 @@ class AccountTracker {
// save accounts state // save accounts state
this.store.updateState({ accounts }) this.store.updateState({ accounts })
// fetch balances for the accounts if there is block number ready // fetch balances for the accounts if there is block number ready
if (!this._currentBlockNumber) return if (!this._currentBlockNumber) {
return
}
this._updateAccounts() this._updateAccounts()
} }
@ -158,7 +160,9 @@ class AccountTracker {
// block gasLimit polling shouldn't be in account-tracker shouldn't be here... // block gasLimit polling shouldn't be in account-tracker shouldn't be here...
const currentBlock = await this._query.getBlockByNumber(blockNumber, false) const currentBlock = await this._query.getBlockByNumber(blockNumber, false)
if (!currentBlock) return if (!currentBlock) {
return
}
const currentBlockGasLimit = currentBlock.gasLimit const currentBlockGasLimit = currentBlock.gasLimit
this.store.updateState({ currentBlockGasLimit }) this.store.updateState({ currentBlockGasLimit })
@ -218,7 +222,9 @@ class AccountTracker {
// update accounts state // update accounts state
const { accounts } = this.store.getState() const { accounts } = this.store.getState()
// only populate if the entry is still present // only populate if the entry is still present
if (!accounts[address]) return if (!accounts[address]) {
return
}
accounts[address] = result accounts[address] = result
this.store.updateState({ accounts }) this.store.updateState({ accounts })
} }

@ -1,3 +1,6 @@
// TODO:deprecate:2020-01-13
module.exports = setupDappAutoReload module.exports = setupDappAutoReload
function setupDappAutoReload (web3, observable) { function setupDappAutoReload (web3, observable) {
@ -13,7 +16,7 @@ function setupDappAutoReload (web3, observable) {
lastTimeUsed = Date.now() lastTimeUsed = Date.now()
// show warning once on web3 access // show warning once on web3 access
if (!hasBeenWarned && key !== 'currentProvider') { if (!hasBeenWarned && key !== 'currentProvider') {
console.warn('MetaMask: web3 will be deprecated in the near future in favor of the ethereumProvider\nhttps://medium.com/metamask/4a899ad6e59e') console.warn(`MetaMask: On 2020-01-13, MetaMask will no longer inject web3. For more information, see: https://medium.com/metamask/no-longer-injecting-web3-js-4a899ad6e59e`)
hasBeenWarned = true hasBeenWarned = true
} }
// return value normally // return value normally
@ -28,10 +31,14 @@ function setupDappAutoReload (web3, observable) {
observable.subscribe(function (state) { observable.subscribe(function (state) {
// if the auto refresh on network change is false do not // if the auto refresh on network change is false do not
// do anything // do anything
if (!window.ethereum.autoRefreshOnNetworkChange) return if (!window.ethereum.autoRefreshOnNetworkChange) {
return
}
// if reload in progress, no need to check reload logic // if reload in progress, no need to check reload logic
if (reloadInProgress) return if (reloadInProgress) {
return
}
const currentNetwork = state.networkVersion const currentNetwork = state.networkVersion
@ -42,10 +49,14 @@ function setupDappAutoReload (web3, observable) {
} }
// skip reload logic if web3 not used // skip reload logic if web3 not used
if (!lastTimeUsed) return if (!lastTimeUsed) {
return
}
// if network did not change, exit // if network did not change, exit
if (currentNetwork === lastSeenNetwork) return if (currentNetwork === lastSeenNetwork) {
return
}
// initiate page reload // initiate page reload
reloadInProgress = true reloadInProgress = true

@ -13,7 +13,9 @@ module.exports = getBuyEthUrl
*/ */
function getBuyEthUrl ({ network, amount, address, service }) { function getBuyEthUrl ({ network, amount, address, service }) {
// default service by network if not specified // default service by network if not specified
if (!service) service = getDefaultServiceForNetwork(network) if (!service) {
service = getDefaultServiceForNetwork(network)
}
switch (service) { switch (service) {
case 'wyre': case 'wyre':
@ -30,9 +32,10 @@ function getBuyEthUrl ({ network, amount, address, service }) {
return 'https://github.com/kovan-testnet/faucet' return 'https://github.com/kovan-testnet/faucet'
case 'goerli-faucet': case 'goerli-faucet':
return 'https://goerli-faucet.slock.it/' return 'https://goerli-faucet.slock.it/'
} default:
throw new Error(`Unknown cryptocurrency exchange or faucet: "${service}"`) throw new Error(`Unknown cryptocurrency exchange or faucet: "${service}"`)
} }
}
function getDefaultServiceForNetwork (network) { function getDefaultServiceForNetwork (network) {
switch (network) { switch (network) {
@ -46,6 +49,7 @@ function getDefaultServiceForNetwork (network) {
return 'kovan-faucet' return 'kovan-faucet'
case '5': case '5':
return 'goerli-faucet' return 'goerli-faucet'
} default:
throw new Error(`No default cryptocurrency exchange or faucet for networkId: "${network}"`) throw new Error(`No default cryptocurrency exchange or faucet for networkId: "${network}"`)
} }
}

@ -4,10 +4,10 @@
* @returns {Error} Error with clean stack trace. * @returns {Error} Error with clean stack trace.
*/ */
function cleanErrorStack (err) { function cleanErrorStack (err) {
var name = err.name let name = err.name
name = (name === undefined) ? 'Error' : String(name) name = (name === undefined) ? 'Error' : String(name)
var msg = err.message let msg = err.message
msg = (msg === undefined) ? '' : String(msg) msg = (msg === undefined) ? '' : String(msg)
if (name === '') { if (name === '') {

@ -8,7 +8,9 @@ function createDnodeRemoteGetter (dnode) {
}) })
async function getRemote () { async function getRemote () {
if (remote) return remote if (remote) {
return remote
}
return await new Promise(resolve => dnode.once('remote', resolve)) return await new Promise(resolve => dnode.once('remote', resolve))
} }

@ -13,7 +13,9 @@ function createLoggerMiddleware (opts) {
if (res.error) { if (res.error) {
log.error('Error in RPC response:\n', res) log.error('Error in RPC response:\n', res)
} }
if (req.isMetamaskInternal) return if (req.isMetamaskInternal) {
return
}
log.info(`RPC (${opts.origin}):`, req, '->', res) log.info(`RPC (${opts.origin}):`, req, '->', res)
cb() cb()
}) })

@ -1,3 +1,4 @@
module.exports = createOriginMiddleware module.exports = createOriginMiddleware
/** /**

@ -33,7 +33,9 @@ function setupEnsIpfsResolver ({ provider, getCurrentNetwork }) {
const domainParts = name.split('.') const domainParts = name.split('.')
const topLevelDomain = domainParts[domainParts.length - 1] const topLevelDomain = domainParts[domainParts.length - 1]
// if unsupported TLD, abort // if unsupported TLD, abort
if (!supportedTopLevelDomains.includes(topLevelDomain)) return if (!supportedTopLevelDomains.includes(topLevelDomain)) {
return
}
// otherwise attempt resolve // otherwise attempt resolve
attemptResolve({ tabId, name, path, search, fragment }) attemptResolve({ tabId, name, path, search, fragment })
} }
@ -48,7 +50,9 @@ function setupEnsIpfsResolver ({ provider, getCurrentNetwork }) {
try { try {
// check if ipfs gateway has result // check if ipfs gateway has result
const response = await fetch(resolvedUrl, { method: 'HEAD' }) const response = await fetch(resolvedUrl, { method: 'HEAD' })
if (response.status === 200) url = resolvedUrl if (response.status === 200) {
url = resolvedUrl
}
} catch (err) { } catch (err) {
console.warn(err) console.warn(err)
} }

@ -1,5 +1,6 @@
const extension = require('extensionizer') const extension = require('extensionizer')
const log = require('loglevel') const log = require('loglevel')
const { checkForError } = require('./util')
/** /**
* A wrapper around the extension's storage local API * A wrapper around the extension's storage local API
@ -20,7 +21,9 @@ module.exports = class ExtensionStore {
* @return {Promise<*>} * @return {Promise<*>}
*/ */
async get () { async get () {
if (!this.isSupported) return undefined if (!this.isSupported) {
return undefined
}
const result = await this._get() const result = await this._get()
// extension.storage.local always returns an obj // extension.storage.local always returns an obj
// if the object is empty, treat it as undefined // if the object is empty, treat it as undefined
@ -88,17 +91,3 @@ module.exports = class ExtensionStore {
function isEmpty (obj) { function isEmpty (obj) {
return Object.keys(obj).length === 0 return Object.keys(obj).length === 0
} }
/**
* Returns an Error if extension.runtime.lastError is present
* this is a workaround for the non-standard error object thats used
* @returns {Error}
*/
function checkForError () {
const lastError = extension.runtime.lastError
if (!lastError) return
// if it quacks like an Error, its an Error
if (lastError.stack && lastError.message) return lastError
// repair incomplete error object (eg chromium v77)
return new Error(lastError.message)
}

@ -1,7 +1,7 @@
const EventEmitter = require('events') const EventEmitter = require('events')
const ObservableStore = require('obs-store') const ObservableStore = require('obs-store')
const ethUtil = require('ethereumjs-util') const ethUtil = require('ethereumjs-util')
const { errors: rpcErrors } = require('eth-json-rpc-errors') const { ethErrors } = require('eth-json-rpc-errors')
const createId = require('./random-id') const createId = require('./random-id')
/** /**
@ -62,7 +62,9 @@ module.exports = class MessageManager extends EventEmitter {
*/ */
getUnapprovedMsgs () { getUnapprovedMsgs () {
return this.messages.filter(msg => msg.status === 'unapproved') return this.messages.filter(msg => msg.status === 'unapproved')
.reduce((result, msg) => { result[msg.id] = msg; return result }, {}) .reduce((result, msg) => {
result[msg.id] = msg; return result
}, {})
} }
/** /**
@ -83,7 +85,7 @@ module.exports = class MessageManager extends EventEmitter {
case 'signed': case 'signed':
return resolve(data.rawSig) return resolve(data.rawSig)
case 'rejected': case 'rejected':
return reject(rpcErrors.eth.userRejectedRequest('MetaMask Message Signature: User denied message signature.')) return reject(ethErrors.provider.userRejectedRequest('MetaMask Message Signature: User denied message signature.'))
default: default:
return reject(new Error(`MetaMask Message Signature: Unknown problem: ${JSON.stringify(msgParams)}`)) return reject(new Error(`MetaMask Message Signature: Unknown problem: ${JSON.stringify(msgParams)}`))
} }
@ -102,12 +104,14 @@ module.exports = class MessageManager extends EventEmitter {
*/ */
addUnapprovedMessage (msgParams, req) { addUnapprovedMessage (msgParams, req) {
// add origin from request // add origin from request
if (req) msgParams.origin = req.origin if (req) {
msgParams.origin = req.origin
}
msgParams.data = normalizeMsgData(msgParams.data) msgParams.data = normalizeMsgData(msgParams.data)
// create txData obj with parameters and meta data // create txData obj with parameters and meta data
var time = (new Date()).getTime() const time = (new Date()).getTime()
var msgId = createId() const msgId = createId()
var msgData = { const msgData = {
id: msgId, id: msgId,
msgParams: msgParams, msgParams: msgParams,
time: time, time: time,
@ -219,7 +223,9 @@ module.exports = class MessageManager extends EventEmitter {
*/ */
_setMsgStatus (msgId, status) { _setMsgStatus (msgId, status) {
const msg = this.getMsg(msgId) const msg = this.getMsg(msgId)
if (!msg) throw new Error('MessageManager - Message not found for id: "${msgId}".') if (!msg) {
throw new Error('MessageManager - Message not found for id: "${msgId}".')
}
msg.status = status msg.status = status
this._updateMsg(msg) this._updateMsg(msg)
this.emit(`${msgId}:${status}`, msg) this.emit(`${msgId}:${status}`, msg)

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

Loading…
Cancel
Save