mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Merge remote-tracking branch 'origin/develop' into sync-master
This commit is contained in:
commit
02e0e13145
@ -123,12 +123,18 @@ jobs:
|
||||
- checkout
|
||||
- attach_workspace:
|
||||
at: .
|
||||
- run:
|
||||
name: Bump manifest version
|
||||
command: .circleci/scripts/release-bump-manifest-version.sh
|
||||
- run:
|
||||
name: Update changelog
|
||||
command: yarn update-changelog --rc
|
||||
- run:
|
||||
name: Commit changes
|
||||
command: .circleci/scripts/release-commit-version-bump.sh
|
||||
- run:
|
||||
name: Create GitHub Pull Request for version
|
||||
command: |
|
||||
.circleci/scripts/release-bump-changelog-version.sh
|
||||
.circleci/scripts/release-bump-manifest-version.sh
|
||||
.circleci/scripts/release-create-release-pr.sh
|
||||
command: .circleci/scripts/release-create-release-pr.sh
|
||||
|
||||
prep-deps:
|
||||
executor: node-browsers
|
||||
@ -438,6 +444,9 @@ jobs:
|
||||
- store_artifacts:
|
||||
path: coverage
|
||||
destination: coverage
|
||||
- store_artifacts:
|
||||
path: jest-coverage
|
||||
destination: jest-coverage
|
||||
- store_artifacts:
|
||||
path: test-artifacts
|
||||
destination: test-artifacts
|
||||
@ -470,9 +479,6 @@ jobs:
|
||||
name: Create GitHub release
|
||||
command: |
|
||||
.circleci/scripts/release-create-gh-release.sh
|
||||
- run:
|
||||
name: Create GitHub Pull Request to sync master with develop
|
||||
command: .circleci/scripts/release-create-master-pr.sh
|
||||
|
||||
job-publish-storybook:
|
||||
executor: node-browsers
|
||||
@ -498,11 +504,15 @@ jobs:
|
||||
- run:
|
||||
name: test:coverage
|
||||
command: yarn test:coverage
|
||||
- run:
|
||||
name: test:coverage:jest
|
||||
command: yarn test:coverage:jest
|
||||
- persist_to_workspace:
|
||||
root: .
|
||||
paths:
|
||||
- .nyc_output
|
||||
- coverage
|
||||
- jest-coverage
|
||||
test-unit-global:
|
||||
executor: node-browsers
|
||||
steps:
|
||||
|
@ -1,44 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
if [[ "${CI:-}" != 'true' ]]
|
||||
then
|
||||
printf '%s\n' 'CI environment variable must be set to true'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${CIRCLECI:-}" != 'true' ]]
|
||||
then
|
||||
printf '%s\n' 'CIRCLECI environment variable must be set to true'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
version="${CIRCLE_BRANCH/Version-v/}"
|
||||
|
||||
if ! grep --quiet --fixed-strings "$version" CHANGELOG.md
|
||||
then
|
||||
printf '%s\n' 'Adding this release to CHANGELOG.md'
|
||||
date_str="$(date '+%a %b %d %Y')"
|
||||
cp CHANGELOG.md{,.bak}
|
||||
|
||||
update_headers=$(cat <<END
|
||||
/## Current Develop Branch/ {
|
||||
print "## Current Develop Branch\n";
|
||||
print "## ${version} ${date_str}";
|
||||
next;
|
||||
}
|
||||
{
|
||||
print;
|
||||
}
|
||||
END
|
||||
)
|
||||
|
||||
awk "$update_headers" CHANGELOG.md.bak > CHANGELOG.md
|
||||
rm CHANGELOG.md.bak
|
||||
else
|
||||
printf '%s\n' "CHANGELOG.md already includes a header for ${version}"
|
||||
exit 0
|
||||
fi
|
@ -26,14 +26,4 @@ yarn prettier --write app/manifest/_base.json
|
||||
if [[ -z $(git status --porcelain) ]]
|
||||
then
|
||||
printf '%s\n' 'App manifest version already set'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
git \
|
||||
-c user.name='MetaMask Bot' \
|
||||
-c user.email='metamaskbot@users.noreply.github.com' \
|
||||
commit --message "${CIRCLE_BRANCH/-/ }" \
|
||||
CHANGELOG.md app/manifest/_base.json
|
||||
|
||||
repo_slug="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME"
|
||||
git push "https://$GITHUB_TOKEN_USER:$GITHUB_TOKEN@github.com/$repo_slug" "$CIRCLE_BRANCH"
|
||||
|
34
.circleci/scripts/release-commit-version-bump.sh
Executable file
34
.circleci/scripts/release-commit-version-bump.sh
Executable file
@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
if [[ "${CI:-}" != 'true' ]]
|
||||
then
|
||||
printf '%s\n' 'CI environment variable must be set to true'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${CIRCLECI:-}" != 'true' ]]
|
||||
then
|
||||
printf '%s\n' 'CIRCLECI environment variable must be set to true'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
printf '%s\n' 'Commit the manifest version and changelog if the manifest has changed'
|
||||
|
||||
if git diff --quiet app/manifest/_base.json;
|
||||
then
|
||||
printf '%s\n' 'No manifest changes to commit'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
git \
|
||||
-c user.name='MetaMask Bot' \
|
||||
-c user.email='metamaskbot@users.noreply.github.com' \
|
||||
commit --message "${CIRCLE_BRANCH/-/ }" \
|
||||
CHANGELOG.md app/manifest/_base.json
|
||||
|
||||
repo_slug="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME"
|
||||
git push "https://$GITHUB_TOKEN_USER:$GITHUB_TOKEN@github.com/$repo_slug" "$CIRCLE_BRANCH"
|
@ -1,52 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
if [[ "${CI:-}" != 'true' ]]
|
||||
then
|
||||
printf '%s\n' 'CI environment variable must be set to true'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${CIRCLECI:-}" != 'true' ]]
|
||||
then
|
||||
printf '%s\n' 'CIRCLECI environment variable must be set to true'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z "${GITHUB_TOKEN:-}" ]]
|
||||
then
|
||||
printf '%s\n' 'GITHUB_TOKEN environment variable must be set'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
function install_github_cli ()
|
||||
{
|
||||
printf '%s\n' 'Installing hub CLI'
|
||||
pushd "$(mktemp -d)"
|
||||
curl -sSL 'https://github.com/github/hub/releases/download/v2.11.2/hub-linux-amd64-2.11.2.tgz' | tar xz
|
||||
PATH="$PATH:$PWD/hub-linux-amd64-2.11.2/bin"
|
||||
popd
|
||||
}
|
||||
|
||||
base_branch='develop'
|
||||
|
||||
if [[ -n "${CI_PULL_REQUEST:-}" ]]
|
||||
then
|
||||
printf '%s\n' 'CI_PULL_REQUEST is set, pull request already exists for this build'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
install_github_cli
|
||||
|
||||
printf '%s\n' "Creating a Pull Request to sync 'master' with 'develop'"
|
||||
|
||||
if ! hub pull-request \
|
||||
--message "Master => develop" --message 'Merge latest release back into develop' \
|
||||
--base "$CIRCLE_PROJECT_USERNAME:$base_branch" \
|
||||
--head "$CIRCLE_PROJECT_USERNAME:$CIRCLE_BRANCH";
|
||||
then
|
||||
printf '%s\n' 'Pull Request already exists'
|
||||
fi
|
156
.eslintrc.js
156
.eslintrc.js
@ -26,7 +26,8 @@ module.exports = {
|
||||
'test-*/**',
|
||||
'docs/**',
|
||||
'coverage/',
|
||||
'app/scripts/chromereload.js',
|
||||
'jest-coverage/',
|
||||
'development/chromereload.js',
|
||||
'app/vendor/**',
|
||||
'test/e2e/send-eth-with-private-key-test/**',
|
||||
'nyc_output/**',
|
||||
@ -36,13 +37,11 @@ module.exports = {
|
||||
|
||||
extends: [
|
||||
'@metamask/eslint-config',
|
||||
'@metamask/eslint-config/config/nodejs',
|
||||
'@metamask/eslint-config/config/mocha',
|
||||
'plugin:react/recommended',
|
||||
'plugin:react-hooks/recommended',
|
||||
'@metamask/eslint-config-nodejs',
|
||||
'prettier',
|
||||
],
|
||||
|
||||
plugins: ['@babel', 'react', 'import', 'prettier'],
|
||||
plugins: ['@babel', 'import', 'prettier'],
|
||||
|
||||
globals: {
|
||||
document: 'readonly',
|
||||
@ -50,102 +49,18 @@ module.exports = {
|
||||
},
|
||||
|
||||
rules: {
|
||||
// Prettier changes and reasoning
|
||||
|
||||
'prettier/prettier': 'error',
|
||||
|
||||
// Our eslint config has the default setting for this as error. This
|
||||
// include beforeBlockComment: true, but in order to match the prettier
|
||||
// spec you have to enable before and after blocks, objects and arrays
|
||||
// https://github.com/prettier/eslint-config-prettier#lines-around-comment
|
||||
'lines-around-comment': [
|
||||
'error',
|
||||
{
|
||||
beforeBlockComment: true,
|
||||
afterLineComment: false,
|
||||
allowBlockStart: true,
|
||||
allowBlockEnd: true,
|
||||
allowObjectStart: true,
|
||||
allowObjectEnd: true,
|
||||
allowArrayStart: true,
|
||||
allowArrayEnd: true,
|
||||
},
|
||||
],
|
||||
// Prettier has some opinions on mixed-operators, and there is ongoing work
|
||||
// to make the output code clear. It is better today then it was when the first
|
||||
// PR to add prettier. That being said, the workaround for keeping this rule enabled
|
||||
// requires breaking parts of operations into different variables -- which I believe
|
||||
// to be worse. https://github.com/prettier/eslint-config-prettier#no-mixed-operators
|
||||
'no-mixed-operators': 'off',
|
||||
// Prettier wraps single line functions with ternaries, etc in parens by default, but
|
||||
// if the line is long enough it breaks it into a separate line and removes the parens.
|
||||
// The second behavior conflicts with this rule. There is some guides on the repo about
|
||||
// how you can keep it enabled:
|
||||
// https://github.com/prettier/eslint-config-prettier#no-confusing-arrow
|
||||
// However, in practice this conflicts with prettier adding parens around short lines,
|
||||
// when autofixing in vscode and others.
|
||||
'no-confusing-arrow': 'off',
|
||||
// There is no configuration in prettier for how it stylizes regexes, which conflicts
|
||||
// with wrap-regex.
|
||||
'wrap-regex': 'off',
|
||||
// Prettier handles all indentation automagically. it can be configured here
|
||||
// https://prettier.io/docs/en/options.html#tab-width but the default matches our
|
||||
// style.
|
||||
indent: 'off',
|
||||
// This rule conflicts with the way that prettier breaks code across multiple lines when
|
||||
// it exceeds the maximum length. Prettier optimizes for readability while simultaneously
|
||||
// maximizing the amount of code per line.
|
||||
'function-paren-newline': 'off',
|
||||
// This rule throws an error when there is a line break in an arrow function declaration
|
||||
// but prettier breaks arrow function declarations to be as readable as possible while
|
||||
// still conforming to the width rules.
|
||||
'implicit-arrow-linebreak': 'off',
|
||||
// This rule would result in an increase in white space in lines with generator functions,
|
||||
// which impacts prettier's goal of maximizing code per line and readability. There is no
|
||||
// current workaround.
|
||||
'generator-star-spacing': 'off',
|
||||
'default-param-last': 'off',
|
||||
'require-atomic-updates': 'off',
|
||||
'import/no-unassigned-import': 'off',
|
||||
'prefer-object-spread': 'error',
|
||||
'react/no-unused-prop-types': 'error',
|
||||
'react/no-unused-state': 'error',
|
||||
'react/jsx-boolean-value': 'error',
|
||||
'react/jsx-curly-brace-presence': [
|
||||
'error',
|
||||
{ props: 'never', children: 'never' },
|
||||
],
|
||||
'react/jsx-equals-spacing': 'error',
|
||||
'react/no-deprecated': 'error',
|
||||
'react/default-props-match-prop-types': 'error',
|
||||
'react/jsx-closing-tag-location': [
|
||||
'error',
|
||||
{ selfClosing: 'tag-aligned', nonEmpty: 'tag-aligned' },
|
||||
],
|
||||
'react/jsx-no-duplicate-props': 'error',
|
||||
'react/jsx-closing-bracket-location': 'error',
|
||||
'react/jsx-first-prop-new-line': ['error', 'multiline'],
|
||||
'react/jsx-max-props-per-line': [
|
||||
'error',
|
||||
{ maximum: 1, when: 'multiline' },
|
||||
],
|
||||
'react/jsx-tag-spacing': [
|
||||
'error',
|
||||
{
|
||||
closingSlash: 'never',
|
||||
beforeSelfClosing: 'always',
|
||||
afterOpening: 'never',
|
||||
},
|
||||
],
|
||||
'require-atomic-updates': 'off',
|
||||
|
||||
'import/no-unassigned-import': 'off',
|
||||
|
||||
'no-invalid-this': 'off',
|
||||
'@babel/no-invalid-this': 'error',
|
||||
|
||||
// prettier handles these
|
||||
semi: 'off',
|
||||
// Prettier handles this
|
||||
'@babel/semi': 'off',
|
||||
|
||||
'mocha/no-setup-in-describe': 'off',
|
||||
'node/no-process-env': 'off',
|
||||
|
||||
// TODO: re-enable these rules
|
||||
@ -155,9 +70,28 @@ module.exports = {
|
||||
},
|
||||
overrides: [
|
||||
{
|
||||
files: ['test/e2e/**/*.js'],
|
||||
files: ['ui/**/*.js', 'test/lib/render-helpers.js', 'test/jest/*.js'],
|
||||
plugins: ['react'],
|
||||
extends: ['plugin:react/recommended', 'plugin:react-hooks/recommended'],
|
||||
rules: {
|
||||
'react/no-unused-prop-types': 'error',
|
||||
'react/no-unused-state': 'error',
|
||||
'react/jsx-boolean-value': 'error',
|
||||
'react/jsx-curly-brace-presence': [
|
||||
'error',
|
||||
{ props: 'never', children: 'never' },
|
||||
],
|
||||
'react/no-deprecated': 'error',
|
||||
'react/default-props-match-prop-types': 'error',
|
||||
'react/jsx-no-duplicate-props': 'error',
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ['test/e2e/**/*.spec.js'],
|
||||
extends: ['@metamask/eslint-config-mocha'],
|
||||
rules: {
|
||||
'mocha/no-hooks-for-single-case': 'off',
|
||||
'mocha/no-setup-in-describe': 'off',
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -173,14 +107,37 @@ module.exports = {
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ['test/**/*-test.js', 'test/**/*.spec.js'],
|
||||
files: ['**/*.test.js'],
|
||||
excludedFiles: ['ui/**/*.test.js', 'ui/app/__mocks__/*.js'],
|
||||
extends: ['@metamask/eslint-config-mocha'],
|
||||
rules: {
|
||||
// Mocha will re-assign `this` in a test context
|
||||
'@babel/no-invalid-this': 'off',
|
||||
'mocha/no-setup-in-describe': 'off',
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ['development/**/*.js', 'test/e2e/benchmark.js', 'test/helper.js'],
|
||||
files: ['**/__snapshots__/*.snap'],
|
||||
plugins: ['jest'],
|
||||
rules: {
|
||||
'jest/no-large-snapshots': [
|
||||
'error',
|
||||
{ maxSize: 50, inlineMaxSize: 50 },
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ['ui/**/*.test.js', 'ui/app/__mocks__/*.js'],
|
||||
extends: ['@metamask/eslint-config-jest'],
|
||||
rules: {
|
||||
'jest/no-restricted-matchers': 'off',
|
||||
'import/unambiguous': 'off',
|
||||
},
|
||||
},
|
||||
{
|
||||
files: [
|
||||
'development/**/*.js',
|
||||
'test/e2e/benchmark.js',
|
||||
'test/helpers/setup-helper.js',
|
||||
],
|
||||
rules: {
|
||||
'node/no-process-exit': 'off',
|
||||
'node/shebang': 'off',
|
||||
@ -198,6 +155,7 @@ module.exports = {
|
||||
'test/lib/wait-until-called.js',
|
||||
'test/env.js',
|
||||
'test/setup.js',
|
||||
'jest.config.js',
|
||||
],
|
||||
parserOptions: {
|
||||
sourceType: 'script',
|
||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -8,6 +8,7 @@ audit.json
|
||||
app/bower_components
|
||||
test/bower_components
|
||||
package
|
||||
.eslintcache
|
||||
|
||||
# IDEs
|
||||
.idea
|
||||
@ -28,6 +29,7 @@ app/.DS_Store
|
||||
|
||||
storybook-build/
|
||||
coverage/
|
||||
jest-coverage/
|
||||
dist
|
||||
builds/
|
||||
builds.zip
|
||||
|
@ -4,6 +4,7 @@ dist/**
|
||||
builds/**
|
||||
test-*/**
|
||||
coverage/
|
||||
jest-coverage/
|
||||
app/vendor/**
|
||||
.nyc_output/**
|
||||
.vscode/**
|
||||
|
@ -5,7 +5,6 @@ const state = {
|
||||
isInitialized: true,
|
||||
isUnlocked: true,
|
||||
featureFlags: { sendHexData: true },
|
||||
rpcUrl: 'https://rawtestrpc.metamask.io/',
|
||||
identities: {
|
||||
'0xfdea65c8e26263f6d9a1b5de9555d2931a33b825': {
|
||||
address: '0xfdea65c8e26263f6d9a1b5de9555d2931a33b825',
|
||||
|
1370
CHANGELOG.md
1370
CHANGELOG.md
File diff suppressed because it is too large
Load Diff
@ -308,9 +308,6 @@
|
||||
"done": {
|
||||
"message": "ተጠናቅቋል"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "የሃርድዌር ቋት የለዎትም?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Google Chrome አውርድ"
|
||||
},
|
||||
@ -443,9 +440,6 @@
|
||||
"message": "Ether ከቧንቧ በ$1ያግኙ",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "እገዛ ያግኙ።"
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "አስጀማሪ መመሪያ"
|
||||
},
|
||||
@ -467,9 +461,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "ከ MetaMask ጋር ሊጠቀሙበት የሚፈልጉትን የሃርድዌር ቋት ይምረጡ"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "ግንኙነት መፍጠር ላይ ተቸግረዋል?"
|
||||
},
|
||||
"here": {
|
||||
"message": "እዚህ",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -499,22 +490,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "መለያን በዘር ሐረግ አስመጣ"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "የመለያ የዘር ሐረግ በመጠቀም ያስመጡ"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "ቋት አስመጣ"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "ባለ 12 ቃል የዘር ሐረግን በመጠቀም ነባር ቋትዎን ያስመጡ"
|
||||
},
|
||||
"imported": {
|
||||
"message": "ከውጭ የመጣ",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "መረጃ እና እገዛ "
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "የመጀመሪያ ግብይትዎ በአውታረ መረቡ ተረጋግጧል። ወደ ኋላ ለመመለስ እሺ የሚለውን ጠቅ ያድርጉ።"
|
||||
},
|
||||
@ -713,9 +695,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "ምልክት (አማራጭ)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "ትሬዞር ወይም ሌጀር በማዘዝ ገንዘብዎን በቀዝቃዛ ማስቀመጫ ውስጥ ያቆዩ"
|
||||
},
|
||||
"origin": {
|
||||
"message": "መነሻ"
|
||||
},
|
||||
@ -775,9 +754,6 @@
|
||||
"readdToken": {
|
||||
"message": "በመለያ አማራጮችዎ ምናሌ ውስጥ ወደ “ተለዋጭ ስም አክል” በመግባት ለወደፊቱ ይህን ተለዋጭ ስም መልሰው ማከል ይችላሉ።"
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "ለመገናኘት ዝግጁ ነዎት?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "የቅርብ ጊዜያት"
|
||||
},
|
||||
@ -835,9 +811,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "መለያዎን በዘር ሐረግ ወደነበረበት ይመልሱ"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "መለያው ወደነበረበት ይመለስ?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "የዘር ቃላትን ይግለጹ"
|
||||
},
|
||||
@ -892,9 +865,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "ማስጠንቀቂያ፡ የመጠባበቂያ ምዕራፍዎን በጭራሽ አይግለጹ። ይህን ሐረገ የያዘ ማንኛውም ሰው የእርስዎን Ether እስከወዲያኛው ሊወስደው ይችላል።"
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "ካዝናዎን ወደነበረበት ለመመለስ ሚስጥራዊ ባለ አስራ ሁለት ቃል ሐረግዎን ያስገቡ።"
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "ደህንነት እና ግላዊነት"
|
||||
},
|
||||
@ -934,9 +904,6 @@
|
||||
"sendAmount": {
|
||||
"message": "መጠኑን ላክ"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "ETH ላክ"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "ተለዋጭ ስሞችን ላክ"
|
||||
},
|
||||
@ -1009,24 +976,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "ስቴት መዛግብት ይፋዊ የመለያ አድራሻዎትንና የተላኩ ግብይቶችን ይይዛሉ።"
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. ከሃርድዌር ቋት ጋር ይገናኙ"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "የሃርድዌር ቋትዎን በቀጥታ ከኮምፒዩተርዎ ጋር ያገናኙ።"
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. መለያ ምረጥ"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "ለማየት የሚፈልጉትን መለያ ይምረጡ። በአንድ ጊዜ መምረጥ የሚችሉት አንድ ብቻ ነው።"
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. dApps እና ሌሎችን መጠቀም ይጀምሩ!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "የሐርድዌር መለያዎን ከየትኛውም የ Ethereum መለያ ጋር በሚጠቀሙት መንገድ ይጠቀሙ። ወደ dApps በመለያ ይግቡ፣ Eth ይላኩ፣ የ ERC20 ተለዋጭ ስሞችና እንደ CryptoKitties ያሉ የማይለወጡ ተለዋጭ ስሞችን ይግዙና ያከማቹ።"
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "ይህን ሐረግ እንደ 1Password ባለ የይለፍ ቃል አስተዳዳሪ ውስጥ ያስቀምጡ።"
|
||||
},
|
||||
|
@ -308,9 +308,6 @@
|
||||
"done": {
|
||||
"message": "تم"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "أليس لديك محفظة أجهزة؟"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "تنزيل جوجل كروم"
|
||||
},
|
||||
@ -439,9 +436,6 @@
|
||||
"message": "احصل على الأثير من صنبور مقابل $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "احصل على الدعم."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "البدء"
|
||||
},
|
||||
@ -463,9 +457,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "حدد محفظة أجهزة ترغب في استخدامها مع MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "هل تواجه مشكلة في الاتصال؟"
|
||||
},
|
||||
"here": {
|
||||
"message": "هنا",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -495,22 +486,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "استيراد حساب باستخدام عبارة الأمان"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "استيراد باستخدام عبارة أمان الحساب"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "استيراد المحفظة"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "قم باستيراد محفظتك الحالية باستخدام جملة بذرية مكونة من 12 كلمة"
|
||||
},
|
||||
"imported": {
|
||||
"message": "المستوردة",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "المعلومات والمساعدة"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "تم تأكيد المعاملة الأولية الخاصة بك بواسطة الشبكة. انقر فوق موافق للعودة."
|
||||
},
|
||||
@ -709,9 +691,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "الرمز (اختياري)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "اطلب Trezor أو Ledger وحافظ على أموالك في مخزن حصين"
|
||||
},
|
||||
"origin": {
|
||||
"message": "الأصل"
|
||||
},
|
||||
@ -771,9 +750,6 @@
|
||||
"readdToken": {
|
||||
"message": "يمكنك إضافة هذه العملة الرمزية مرة أخرى في المستقبل من خلال الانتقال إلى \"إضافة عملة رمزية\" في قائمة خيارات الحسابات الخاصة بك."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "هل أنت جاهز للاتصال؟"
|
||||
},
|
||||
"recents": {
|
||||
"message": "الحديث"
|
||||
},
|
||||
@ -831,9 +807,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "قم باستعادة حسابك بواسطة عبارة الأمان"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "هل تريد استعادة الحساب؟"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "كشف كلمات عبارات الأمان"
|
||||
},
|
||||
@ -888,9 +861,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "تحذير: لا تكشف مطلقاً عن عبارة الدعم الخاصة بك. يمكن لأي شخص بهذه العبارة أن يستحوذ على الأثير الخاص بك إلى الأبد."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "أدخل جملتك السرية المكونة من اثني عشر كلمة هنا لاستعادة خزنتك."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "الأمن والخصوصية"
|
||||
},
|
||||
@ -930,9 +900,6 @@
|
||||
"sendAmount": {
|
||||
"message": "إرسال المبلغ"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "إرسال عملة إيثيريوم"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "إرسال عملات رمزية"
|
||||
},
|
||||
@ -1005,24 +972,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "تحتوي سجلات الحالة على عناوين حسابك العامة والمعاملات المرسلة."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. قم بتوصيل محفظة Hardware Wallet"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "قم بتوصيل محفظة الأجهزة الخاصة بك مباشرة إلى جهاز الكمبيوتر الخاص بك."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. حدد حساباً"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "حدد الحساب الذي تريد عرضه. يمكنك اختيار حساب واحد فقط في المرة الواحدة."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. ابدأ في استخدام dApps وأكثر!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "استخدم حساب الجهاز الخاص بك كما تفعل مع أي حساب Ethereum. قم بتسجيل الدخول إلى dApps ، إرسال Eth ، قم بشراء وتخزين عملات ERC20 الرمزية والعملات الرمزية الغير قابلة للاستبدال مثل CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "احتفظ بهذه الجملة في مدير كلمات مرور مثل 1Password."
|
||||
},
|
||||
|
@ -308,9 +308,6 @@
|
||||
"done": {
|
||||
"message": "Готово"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Нямате хардуерен портфейл?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Изтеглете Google Chrome"
|
||||
},
|
||||
@ -439,9 +436,6 @@
|
||||
"message": "Вземете Ether от фосет за $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Получете помощ."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Първи стъпки"
|
||||
},
|
||||
@ -463,9 +457,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Изберете хардуерен портфейл, който искате да използвате с MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Имате проблеми със свързването?"
|
||||
},
|
||||
"here": {
|
||||
"message": "тук",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -495,22 +486,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Импортирайте акаунт с фраза зародиш"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Импортиране с помощта на фразата зародиш на профила"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Импортиране на портфейла"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Импортирайте съществуващия си портфейл с помощта на фраза зародиш с 12 думи"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Импортирани",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Информация и помощ"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Първоначалната транзакция беше потвърдена от мрежата. Кликнете върху OK, за да се върнете обратно."
|
||||
},
|
||||
@ -712,9 +694,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Символ (по избор)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Поръчайте Trezor или Ledger и запазете средствата си "
|
||||
},
|
||||
"origin": {
|
||||
"message": "Произход"
|
||||
},
|
||||
@ -774,9 +753,6 @@
|
||||
"readdToken": {
|
||||
"message": "Можете да добавите този жетон в бъдеще, като отидете на „Добавяне на жетон“ в менюто с опции на акаунти."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Готови ли сте да се свържете? "
|
||||
},
|
||||
"recents": {
|
||||
"message": "Скорошни"
|
||||
},
|
||||
@ -834,9 +810,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Възстановете акаунта си с фраза зародиш"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Да се възстанови ли акаунта?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Разкрий думите зародиш"
|
||||
},
|
||||
@ -891,9 +864,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "ВНИМАНИЕ: Никога не разкривайте резервната си фраза. Всеки с тази фраза може да вземе вашия етер завинаги."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Въведете своята тайна фраза от дванадесет думи тук, за да възстановите портфейла си."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Сигурност и поверителност"
|
||||
},
|
||||
@ -933,9 +903,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Изпратете сумата"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Изпрати ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Изпращане на жетони"
|
||||
},
|
||||
@ -1008,24 +975,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "Държавните дневници съдържат адресите на публичните ви акаунти и изпратените транзакции."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Свържете хардуерния портфейл"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Свържете хардуерния си портфейл директно към компютъра."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Изберете акаунт"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Изберете акаунта, който искате да видите. В даден момент можете да изберете само един."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Започнете да използвате dApps и други!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Използвайте хардуерния си акаунт, както бихте правили с всеки акаунт в Ethereum. Влезте в dApps, изпратете Eth, купете и съхранявайте жетони ERC20 и незаменими жетони като CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Съхранявайте тази фраза в мениджър на пароли като 1Password."
|
||||
},
|
||||
|
@ -308,9 +308,6 @@
|
||||
"done": {
|
||||
"message": "সম্পন্ন "
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "একটি হার্ডওয়্যার ওয়ালেট নেই?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Google Chrome ডাউনলোড করুন"
|
||||
},
|
||||
@ -443,9 +440,6 @@
|
||||
"message": "$1 এর জন্য একটি ফসেট থেকে ইথার পান",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "সহায়তা পান।"
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "শুরু করুন"
|
||||
},
|
||||
@ -467,9 +461,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "আপনি MetaMask এর সাথে ব্যবহার করতে চান এমন একটি হার্ডওয়্যার ওয়ালেট নির্বাচন করুন"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "সংযোগ করতে সমস্যা হচ্ছে?"
|
||||
},
|
||||
"here": {
|
||||
"message": "এখানে",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -499,22 +490,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "সীড ফ্রেজ দিয়ে একটি অ্যাকাউন্ট আমদানি করুন"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "অ্যাকাউন্ট সীড ফ্রেজ ব্যবহার করে আমদানি করুন"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "ওয়ালেট আমদানি করুন"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "একটি 12 শব্দের সীড ফ্রেজ ব্যবহার করে আপনার বিদ্যমান ওয়ালেট আমদানি করুন"
|
||||
},
|
||||
"imported": {
|
||||
"message": "আমদানিকৃত",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "তথ্য ও সহায়তা"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "আপনার প্রারম্ভিক লেনদেনটি নেটওয়ার্ক নিশ্চিত করেছিল। ফিরে যেতে ঠিক আছে তে ক্লিক করুন।"
|
||||
},
|
||||
@ -716,9 +698,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "প্রতীক (ঐচ্ছিক)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "একটি Trezor বা লেজার অর্ডার করুন এবং আপনার তহবিলগুলি হীম ঘরে রাখুন"
|
||||
},
|
||||
"origin": {
|
||||
"message": "উৎস"
|
||||
},
|
||||
@ -778,9 +757,6 @@
|
||||
"readdToken": {
|
||||
"message": "আপনি আপনার অ্যাকাউন্টস বিকল্পের মেনুতে \"টোকেনগুলি যোগ করুন\" এ গিয়ে ভবিষ্যতে আবার এই টোকেনটি যোগ করতে পারবেন। "
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "সংযোগ করার জন্য প্রস্তুত?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "সাম্প্রতিকগুলি"
|
||||
},
|
||||
@ -838,9 +814,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "সীড ফ্রেজ দিয়ে আপনার অ্যাকাউন্ট রিস্টোর করুন"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "অ্যাকাউন্ট রিস্টোর করবেন?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "সীড শব্দগুলি প্রকাশ করুন"
|
||||
},
|
||||
@ -895,9 +868,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "সতর্কতা: কখনও আপনার ব্যাকআপ ফ্রেজ প্রকাশ করবেন না। এই ফ্রেজ পেয়ে গেলে যে কেউ আপনার ইথার চিরকালের জন্য নিয়ে নিতে পারবেন।"
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "আপনার ভল্ট রিস্টোর করতে এখানে আপনার গোপন বারো শব্দের ফ্রেজ লিখুন।"
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "নিরাপত্তা এবং গোপনীয়তা"
|
||||
},
|
||||
@ -937,9 +907,6 @@
|
||||
"sendAmount": {
|
||||
"message": "পাঠানো অর্থরাশি"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "ETH পাঠান"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "টোকেনগুলি পাঠান"
|
||||
},
|
||||
@ -1012,24 +979,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "স্টেট লগগুলিতে আপনার পাবলিক অ্যাকাউন্টের ঠিকানা এবং প্রেরণ করার লেনদেনগুলি আছে।"
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. হার্ডওয়্যার ওয়ালেট সংযুক্ত করুন"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "আপনার হার্ডওয়্যার ওয়ালেট সরাসরি আপনার কম্পিউটারের সাথে সংযুক্ত করুন।"
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. একটি অ্যাকাউন্ট নির্বাচন করুন"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "আপনি যে অ্যাকাউন্টটি দেখতে চান সেটি নির্বাচন করুন। আপনি একই সময়ে শুধুমাত্র একটিই বেছে নিতে পারবেন। "
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. dApps এবং আরও ব্যবহার করে শুরু করুন!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "আপনি কোনো Ethereum অ্যাকাউন্ট যেমন ব্যবহার করেন সেইভাবে আপনার হার্ডওয়্যার অ্যাকাউন্ট ব্যবহার করুন। dApps এ লগইন করুন, Eth পাঠান, ERC20 টোকেন এবং CryptoKitties এর মতো পরস্পর বিনিময়যোগ্য নয় এমন টোকেনগুলি ক্রয় ও সংরক্ষণ করুন। "
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "এই বাক্যাংশটি 1Password এর মতো একটি পাসওয়ার্ড পরিচালকে সংরক্ষণ করুন। "
|
||||
},
|
||||
|
@ -305,9 +305,6 @@
|
||||
"done": {
|
||||
"message": "Fet"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "No tens una cartera de hardware?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Descarrega Google Chrome"
|
||||
},
|
||||
@ -433,9 +430,6 @@
|
||||
"message": "Aconsegueix Ether d'una aixeta per $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Aconsegueix ajuda."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Comença"
|
||||
},
|
||||
@ -454,9 +448,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Selecciona una cartera de hardware que t'agradaria utilizar amb MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Problemes per connectar?"
|
||||
},
|
||||
"here": {
|
||||
"message": "aquí",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -486,22 +477,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Importa un Compte amb Phrase de Recuperació"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Importa utilitzant la frase de seeds del compte"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Importar Moneder"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Importa el teu moneder utilitzant la frase de recuperació de 12 paraules"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Importats",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Informació i Ajuda"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "La teva transacció inicial ha sigut confirmada per la xarxa. Fes clic a OK per tornar enrere."
|
||||
},
|
||||
@ -700,9 +682,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Símbol (opcional)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Demana un Trezor o un Ledger i congela les teves inversions"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Origen"
|
||||
},
|
||||
@ -759,9 +738,6 @@
|
||||
"readdToken": {
|
||||
"message": "Pots tornar a afegir aquesta fitxa en el futur anant a \"Afegir fitxa\" al menu d'opcions dels teus comptes."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Estàs llest per a connectar?"
|
||||
},
|
||||
"recipientAddress": {
|
||||
"message": "Adreça del destinatari"
|
||||
},
|
||||
@ -816,9 +792,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Restaura el teu compte amb Frase de Recuperació"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Restaurar compte?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Revelar Paraules de Recuperació"
|
||||
},
|
||||
@ -873,9 +846,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "ATENCIÓ: No divulguis mai la teva frase de recuperació. Qualsevol amb aquesta frase pot utilitzar el teu Ether per sempre."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Introdueix aquí la teva frase secreta de dotze paraules per a recuperar la teva caixa forta."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Seguretat i privacitat"
|
||||
},
|
||||
@ -915,9 +885,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Enviar Quantitat"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Envia ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Enviar Fitxes"
|
||||
},
|
||||
@ -990,24 +957,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "Els registres d'estat contenen les teves adreces de compte públiques i les transaccions enviades."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Connectar Moneder Hardware"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Connecta la teva cartera de hardware directament al teu ordinador."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Selecciona un Compte"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Selecciona el compte que vols veure. Només pots seleccionar 1 cada cop."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Comença a utilitzar dApps i altres!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Fes servir el teu compte de hardware com ho faries amb qualsevol compte Ethereum. Inicia sessió a DApps, envia Eth, compra i emmagatzema fitxes ERC20 i fitxes No Fungibles com CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Guarda aquesta frase a un gestor de contrasenyes com Contrasenya 1"
|
||||
},
|
||||
|
@ -192,9 +192,6 @@
|
||||
"message": "Importováno",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Informace a nápověda"
|
||||
},
|
||||
"insufficientFunds": {
|
||||
"message": "Nedostatek finančních prostředků."
|
||||
},
|
||||
@ -326,9 +323,6 @@
|
||||
"resetAccount": {
|
||||
"message": "Resetovat účet"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Obnovit z seed fráze"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Zobrazit slova klíčové fráze"
|
||||
},
|
||||
@ -344,9 +338,6 @@
|
||||
"searchTokens": {
|
||||
"message": "Hledat tokeny"
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Zadejte svých 12 slov tajné fráze k obnovení trezoru."
|
||||
},
|
||||
"seedPhraseReq": {
|
||||
"message": "klíčové fráze mají 12 slov"
|
||||
},
|
||||
@ -356,9 +347,6 @@
|
||||
"send": {
|
||||
"message": "Odeslat"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Odeslat ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Odeslat tokeny"
|
||||
},
|
||||
|
@ -308,9 +308,6 @@
|
||||
"done": {
|
||||
"message": "Færdig"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Har du ikke en hardware-pung?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Hent Google Chrome"
|
||||
},
|
||||
@ -439,9 +436,6 @@
|
||||
"message": "Hent Ether fra en hane til $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Få hjælp"
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Kom godt i gang"
|
||||
},
|
||||
@ -460,9 +454,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Vælg en hardware-pung du vil bruge med MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Har du problemer med at oprette forbindelse?"
|
||||
},
|
||||
"here": {
|
||||
"message": "her",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -492,22 +483,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Importér en Konto med Seedfrase"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Importér ved brug af kontoens seed-sætning"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Importér pung"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Importér din eksisterende pung med en 12-ords seedfrase"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Importeret",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Info & hjælp"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Din indledende transaktion blev bekræftet af netværket. Klik OK for at gå tilbage."
|
||||
},
|
||||
@ -700,9 +682,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Symbol (valgfrit)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Bestil en Trezor eller Ledger og frys dine midler ned"
|
||||
},
|
||||
"parameters": {
|
||||
"message": "Parametre"
|
||||
},
|
||||
@ -759,9 +738,6 @@
|
||||
"readdToken": {
|
||||
"message": "Du kan tilføje denne token i fremtiden, ved at gå til \"Tilføj token\" under dine valgmenuen for dine konti."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Klar til at oprette forbindelse?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "Seneste"
|
||||
},
|
||||
@ -819,9 +795,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Gendan din konto med Seed-sætning"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Genopret konto?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Vis Seedord"
|
||||
},
|
||||
@ -876,9 +849,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "ADVARSEL: Afslør aldrig din backup-frase. Enhver med denne frase kan tage din Ether for altid."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Indtast din hemmelige tolv ord lange sætning for at gendanne din vault."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Sikkerhed & Privatliv"
|
||||
},
|
||||
@ -915,9 +885,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Send Beløb"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Vælg ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Send tokens"
|
||||
},
|
||||
@ -990,24 +957,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "Status-logføringer indeholder dine offentlige kontoadresser og afsendte transaktioner."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Tilslut hardware-tegnebog"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Forbind din hardware-tegnebog direkte med din computer."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Vælg en konto"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Vælg den konto du ønsker at se. Du kan kun vælge én ad gangen."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Begynd at bruge dApps og mere!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Brug din hardwarekonto som du ville gøre med enhver Ethereum-konto. Log ind på dApps, send Eth, køb og opbevar ERC20-tokens og ikke-ombyttelige tokens som CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Gem denne sætning i en adgangskodeadministrator som 1Password."
|
||||
},
|
||||
|
@ -296,9 +296,6 @@
|
||||
"done": {
|
||||
"message": "Fertig"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Sie haben kein Hardware-Wallet?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Google Chrome herunterladen"
|
||||
},
|
||||
@ -431,9 +428,6 @@
|
||||
"message": "Ether für $1 vom Faucet holen",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Erhalten Sie Hilfe."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Erste Schritte"
|
||||
},
|
||||
@ -455,9 +449,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Wählen Sie ein Hardware-Wallet aus, das Sie mit MetaMask verwenden möchten"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Verbindungsprobleme?"
|
||||
},
|
||||
"here": {
|
||||
"message": "hier",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -487,22 +478,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Ein Konto mit einem Seed-Schlüssel importieren"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Mittels mnemonischer Phrase des Kontos importieren"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Wallet importieren"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Importieren Sie Ihre bestehende Wallet mit einem 12-Wort-Seed-Schlüssel"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Importiert",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Info & Hilfe"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Ihre erste Transaktion wurde vom Netzwerk bestätigt. Klicken Sie auf Okay, um zurückzukehren."
|
||||
},
|
||||
@ -689,9 +671,6 @@
|
||||
"optionalBlockExplorerUrl": {
|
||||
"message": "Block-Explorer-URL (optional)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Bestellen Sie ein Trezor oder Ledger und legen Sie Ihr Geld auf Eis"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Ursprung"
|
||||
},
|
||||
@ -747,9 +726,6 @@
|
||||
"readdToken": {
|
||||
"message": "Du kannst diesen Token immer erneut hinzufügen, indem du in den Menüpunkt \"Token hinzufügen\" in den Einstellungen deines Accounts gehst."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Bereit für die Verbindung?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "Letzte"
|
||||
},
|
||||
@ -807,9 +783,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Ihr Konto mit mnemonischer Phrase wiederherstellen"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Mit Hilfe der Seed-Wörterfolge wiederherstellen."
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Seed-Wörterfolge anzeigen"
|
||||
},
|
||||
@ -864,9 +837,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "WARNUNG: Legen Sie niemals Ihre Sicherungsphrase offen. Mit dieser Phrase kann sich jeder Ihr Ether für immer aneignen."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Gib die 12 Wörter deiner geheimem Wörterfolge ein um deinen Vault wiederherzustellen."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Sicherheit & Datenschutz"
|
||||
},
|
||||
@ -906,9 +876,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Betrag senden"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "ETH senden"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Token senden"
|
||||
},
|
||||
@ -981,24 +948,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "Statelogs zeigen die Public Adresse und die gesendeten Transaktionen deines Accounts."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Hardware-Wallet verknüpfen"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Verknüpfen Sie Ihr Hardware-Wallet direkt mit Ihrem Computer."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Ein Konto auswählen"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Wählen Sie das Konto aus, das Sie anzeigen wollen. Sie können nur eines zur Zeit wählen."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Erste Schritte mit dApps und mehr!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Verwenden Sie Ihr Hardware-Konto so wie jedes Ethereum-Konto. Loggen Sie sich bei dApps ein, senden Sie Eth, kaufen und speichern Sie ERC20-Token und Nicht-Fungible-Token wie CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Speichern Sie diesen Schlüssel in einem Passwortmanager wie 1Password."
|
||||
},
|
||||
|
@ -305,9 +305,6 @@
|
||||
"done": {
|
||||
"message": "Τέλος"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Δεν έχετε πορτοφόλι υλικού;"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Κατεβάστε το Google Chrome"
|
||||
},
|
||||
@ -440,9 +437,6 @@
|
||||
"message": "Πάρτε Ether από μια πηγή για το $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Πάρτε Βοήθεια."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Έναρξη"
|
||||
},
|
||||
@ -464,9 +458,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Επιλέξτε ένα πορτοφόλι εξοπλισμού το οποίο θέλετε να χρησιμοποιήσετε με το MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Δυσκολεύεστε να συνδεθείτε;"
|
||||
},
|
||||
"here": {
|
||||
"message": "εδώ",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -496,22 +487,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Εισαγωγή λογαριασμού με Φράση Φύτρου"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Εισαγωγή με χρήση φάσης σπόρου λογαριασμού"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Εισαγωγή Πορτοφολιού"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Εισαγάγετε το υπάρχον πορτοφόλι σας χρησιμοποιώντας μια φράση φύτρου 12 λέξεων"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Έγινε εισαγωγή",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Πληροφορίες & Βοήθεια"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Η αρχική σας συναλλαγή επιβεβαιώθηκε από το δίκτυο. Πατήστε ΕΝΤΑΞΕΙ για επιστροφή."
|
||||
},
|
||||
@ -713,9 +695,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Σύμβολο (προαιρετικό)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Παραγγείλετε ένα Trezor ή Ledger και κρατήστε τα χρήματά σας σε παγωμένη αποθήκευση"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Προέλευση"
|
||||
},
|
||||
@ -775,9 +754,6 @@
|
||||
"readdToken": {
|
||||
"message": "Μπορείτε να προσθέσετε ξανά αυτό το διακριτικό στο μέλλον μεταβαίνοντας στο \"Πρόσθεση διακριτικού\" στο μενού επιλογών των λογαριασμών σας."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Έτοιμοι να Συνδεθείτε;"
|
||||
},
|
||||
"recents": {
|
||||
"message": "Πρόσφατα"
|
||||
},
|
||||
@ -835,9 +811,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Επαναφέρετε τον Λογαριασμό σας με Φράση Επαναφοράς"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Επαναφορά λογαριασμού;"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Αποκάλυψη Λέξεων Φύτρου"
|
||||
},
|
||||
@ -892,9 +865,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Ποτέ μην αποκαλύπτετε την εφεδρική φράση. Όποιος έχει αυτή τη φράση μπορεί να πάρει τα Ether σας για πάντα."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Εισαγάγετε εδώ τη μυστική φράση δώδεκα λέξεων για να επαναφέρετε το χρηματοκιβώτιό σας."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Ασφάλεια και Απόρρητο"
|
||||
},
|
||||
@ -934,9 +904,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Αποστολή Ποσού"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Στείλτε ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Στείλτε Tokens"
|
||||
},
|
||||
@ -1009,24 +976,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "Τα αρχεία καταγραφής κατάστασης περιέχουν τις διευθύνσεις του δημόσιου λογαριασμού σας και τις συναλλαγές οι οποίες έχουν αποσταλεί."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Συνδέστε το Πορτοφόλι Εξοπλισμού"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Συνδέστε το πορτοφόλι υλικού απευθείας στον υπολογιστή σας."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Επιλέξτε ένα Λογαριασμό"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Επιλέξτε τον λογαριασμό που θέλετε να δείτε. Μπορείτε να επιλέξετε έναν μόνο κάθε φορά."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Ξεκινήστε να χρησιμοποιείτε το dApps και άλλα!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Χρησιμοποιήστε τον λογαριασμό εξοπλισμού σας όπως θα κάνατε με οποιονδήποτε λογαριασμό του Ethereum. Συνδεθείτε στο dApps, στείλτε το Eth, αγοράστε και αποθηκεύστε ERC20 tokens και Non-Fungible tokens όπως το CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Αποθηκεύστε αυτήν τη φράση σε έναν διαχειριστή κωδικών πρόσβασης όπως το 1Password."
|
||||
},
|
||||
|
@ -550,9 +550,6 @@
|
||||
"done": {
|
||||
"message": "Done"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Don’t have a hardware wallet?"
|
||||
},
|
||||
"dontShowThisAgain": {
|
||||
"message": "Don't show this again"
|
||||
},
|
||||
@ -574,6 +571,12 @@
|
||||
"editContact": {
|
||||
"message": "Edit Contact"
|
||||
},
|
||||
"editNonceField": {
|
||||
"message": "Edit Nonce"
|
||||
},
|
||||
"editNonceMessage": {
|
||||
"message": "This is an advanced feature, use cautiously."
|
||||
},
|
||||
"editPermission": {
|
||||
"message": "Edit Permission"
|
||||
},
|
||||
@ -795,9 +798,6 @@
|
||||
"message": "Get Ether from a faucet for the $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Get Help."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Get Started"
|
||||
},
|
||||
@ -817,14 +817,14 @@
|
||||
"message": "(legacy)",
|
||||
"description": "Text representing the MEW path"
|
||||
},
|
||||
"hardwareWalletSupportLinkConversion": {
|
||||
"message": "click here"
|
||||
},
|
||||
"hardwareWallets": {
|
||||
"message": "Connect a hardware wallet"
|
||||
},
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Select a hardware wallet you'd like to use with MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Having trouble connecting?"
|
||||
"message": "Select a hardware wallet you'd like to use with MetaMask."
|
||||
},
|
||||
"here": {
|
||||
"message": "here",
|
||||
@ -856,28 +856,29 @@
|
||||
"importAccount": {
|
||||
"message": "Import Account"
|
||||
},
|
||||
"importAccountLinkText": {
|
||||
"message": "import using seed phrase"
|
||||
},
|
||||
"importAccountMsg": {
|
||||
"message": " Imported accounts will not be associated with your originally created MetaMask account seedphrase. Learn more about imported accounts "
|
||||
},
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Import an account with seed phrase"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Import using account seed phrase"
|
||||
"importAccountText": {
|
||||
"message": "or $1",
|
||||
"description": "$1 represents the text from `importAccountLinkText` as a link"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Import wallet"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Import your existing wallet using a 12 word seed phrase"
|
||||
"message": "Import your existing wallet using a seed phrase"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Imported",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Info & Help"
|
||||
},
|
||||
"infuraBlockedNotification": {
|
||||
"message": "MetaMask is unable to connect to the blockchain host. Review possible reasons $1.",
|
||||
"description": "$1 is a clickable link with with text defined by the 'here' key"
|
||||
@ -972,6 +973,21 @@
|
||||
"ledgerAccountRestriction": {
|
||||
"message": "You need to make use your last account before you can add a new one."
|
||||
},
|
||||
"ledgerLiveAdvancedSetting": {
|
||||
"message": "Use Ledger Live"
|
||||
},
|
||||
"ledgerLiveAdvancedSettingDescription": {
|
||||
"message": "The new Ledger Live bridge allows you to more easily use your Ledger. Only available in Chrome."
|
||||
},
|
||||
"ledgerLiveApp": {
|
||||
"message": "Ledger Live App"
|
||||
},
|
||||
"ledgerLocked": {
|
||||
"message": "Cannot connect to Ledger device. Please make sure your device is unlocked and Ethereum app is opened."
|
||||
},
|
||||
"ledgerTimeout": {
|
||||
"message": "Ledger Live is taking too long to respond or connection timeout. Make sure Ledger Live app is opened and your device is unlocked."
|
||||
},
|
||||
"letsGoSetUp": {
|
||||
"message": "Yes, let’s get set up!"
|
||||
},
|
||||
@ -1064,7 +1080,7 @@
|
||||
"message": "MetaMask would like to gather usage data to better understand how our users interact with the extension. This data will be used to continually improve the usability and user experience of our product and the Ethereum ecosystem."
|
||||
},
|
||||
"mismatchedChain": {
|
||||
"message": "This network details for this Chain ID do not match our records. We recommend that you $1 before proceeding.",
|
||||
"message": "The network details for this chain ID do not match our records. We recommend that you $1 before proceeding.",
|
||||
"description": "$1 is a clickable link with text defined by the 'mismatchedChainLinkText' key"
|
||||
},
|
||||
"mismatchedChainLinkText": {
|
||||
@ -1089,6 +1105,13 @@
|
||||
"needEtherInWallet": {
|
||||
"message": "To interact with decentralized applications using MetaMask, you’ll need Ether in your wallet."
|
||||
},
|
||||
"needHelp": {
|
||||
"message": "Need help? Contact $1",
|
||||
"description": "$1 represents `needHelpLinkText`, the text which goes in the help link"
|
||||
},
|
||||
"needHelpLinkText": {
|
||||
"message": "MetaMask Support"
|
||||
},
|
||||
"needImportFile": {
|
||||
"message": "You must select a file to import.",
|
||||
"description": "User is important an account and needs to add a file to continue"
|
||||
@ -1102,9 +1125,18 @@
|
||||
"networkName": {
|
||||
"message": "Network Name"
|
||||
},
|
||||
"networkNameBSC": {
|
||||
"message": "BSC"
|
||||
},
|
||||
"networkNameDefinition": {
|
||||
"message": "The name associated with this network."
|
||||
},
|
||||
"networkNameEthereum": {
|
||||
"message": "Ethereum"
|
||||
},
|
||||
"networkNameTestnet": {
|
||||
"message": "Testnet"
|
||||
},
|
||||
"networkSettingsChainIdDescription": {
|
||||
"message": "The chain ID is used for signing transactions. It must match the chain ID returned by the network. You can enter a decimal or '0x'-prefixed hexadecimal number, but we will display the number in decimal."
|
||||
},
|
||||
@ -1185,6 +1217,9 @@
|
||||
"noWebcamFoundTitle": {
|
||||
"message": "Webcam not found"
|
||||
},
|
||||
"nonce": {
|
||||
"message": "Nonce"
|
||||
},
|
||||
"nonceField": {
|
||||
"message": "Customize transaction nonce"
|
||||
},
|
||||
@ -1234,9 +1269,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Currency Symbol (optional)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Order a Trezor or Ledger and keep your funds in cold storage"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Origin"
|
||||
},
|
||||
@ -1318,9 +1350,6 @@
|
||||
"readdToken": {
|
||||
"message": "You can add this token back in the future by going to “Add token” in your accounts options menu."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Ready to Connect?"
|
||||
},
|
||||
"receive": {
|
||||
"message": "Receive"
|
||||
},
|
||||
@ -1381,9 +1410,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Restore your Account with Seed Phrase"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Restore account?"
|
||||
},
|
||||
"restoreWalletPreferences": {
|
||||
"message": "A backup of your data from $1 has been found. Would you like to restore your wallet preferences?",
|
||||
"description": "$1 is the date at which the data was backed up"
|
||||
@ -1455,7 +1481,7 @@
|
||||
"message": "WARNING: Never disclose your backup phrase. Anyone with this phrase can take your Ether forever."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Enter your secret twelve word phrase here to restore your vault."
|
||||
"message": "Enter your secret phrase here to restore your vault."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Security & Privacy"
|
||||
@ -1463,6 +1489,42 @@
|
||||
"securitySettingsDescription": {
|
||||
"message": "Privacy settings and wallet seed phrase"
|
||||
},
|
||||
"seedPhraseIntroSidebarBulletFour": {
|
||||
"message": "Write down and store in multiple secret places."
|
||||
},
|
||||
"seedPhraseIntroSidebarBulletOne": {
|
||||
"message": "Save in a password manager"
|
||||
},
|
||||
"seedPhraseIntroSidebarBulletThree": {
|
||||
"message": "Store in a safe-deposit box."
|
||||
},
|
||||
"seedPhraseIntroSidebarBulletTwo": {
|
||||
"message": "Store in a bank vault."
|
||||
},
|
||||
"seedPhraseIntroSidebarCopyOne": {
|
||||
"message": "Your recovery phrase is the “master key” to your wallet and funds."
|
||||
},
|
||||
"seedPhraseIntroSidebarCopyThree": {
|
||||
"message": "If someone asks for your recovery phrase, they are most likely trying to scam you."
|
||||
},
|
||||
"seedPhraseIntroSidebarCopyTwo": {
|
||||
"message": "Never, ever share your recovery phrase, even with MetaMask!"
|
||||
},
|
||||
"seedPhraseIntroSidebarTitleOne": {
|
||||
"message": "What is a recovery phrase?"
|
||||
},
|
||||
"seedPhraseIntroSidebarTitleThree": {
|
||||
"message": "Should I share my recovery phrase?"
|
||||
},
|
||||
"seedPhraseIntroSidebarTitleTwo": {
|
||||
"message": "How do I save my recovery phrase?"
|
||||
},
|
||||
"seedPhraseIntroTitle": {
|
||||
"message": "Secure your wallet"
|
||||
},
|
||||
"seedPhraseIntroTitleCopy": {
|
||||
"message": "Before getting started, watch this short video to learn about your recovery phrase and how to keep your wallet safe."
|
||||
},
|
||||
"seedPhrasePlaceholder": {
|
||||
"message": "Separate each word with a single space"
|
||||
},
|
||||
@ -1488,7 +1550,11 @@
|
||||
"message": "This account has already been connected to MetaMask"
|
||||
},
|
||||
"selectAnAccountHelp": {
|
||||
"message": "Select the account to view in MetaMask"
|
||||
"message": "Select an account to view in MetaMask."
|
||||
},
|
||||
"selectAnAccountHelpDirections": {
|
||||
"message": "Don't see your account? $1",
|
||||
"description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key"
|
||||
},
|
||||
"selectEachPhrase": {
|
||||
"message": "Please select each phrase in order to make sure it is correct."
|
||||
@ -1511,9 +1577,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Send Amount"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Send ETH"
|
||||
},
|
||||
"sendSpecifiedTokens": {
|
||||
"message": "Send $1",
|
||||
"description": "Symbol of the specified token"
|
||||
@ -1633,23 +1696,26 @@
|
||||
"statusNotConnected": {
|
||||
"message": "Not connected"
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Connect Hardware Wallet"
|
||||
"step1LedgerWallet": {
|
||||
"message": "Download Ledger app"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Connect your hardware wallet directly to your computer."
|
||||
"step1LedgerWalletMsg": {
|
||||
"message": "Download, set up, and enter your password to unlock $1.",
|
||||
"description": "$1 represents the `ledgerLiveApp` localization value"
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Select an Account"
|
||||
"step1TrezorWallet": {
|
||||
"message": "Plug in Trezor wallet"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Select the account you want to view. You can only choose one at a time."
|
||||
"step1TrezorWalletMsg": {
|
||||
"message": "Connect your wallet directly to your computer. For more on using your hardware wallet device, $1",
|
||||
"description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key"
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Start using web3 sites and more!"
|
||||
"step2LedgerWallet": {
|
||||
"message": "Plug in Ledger wallet"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Use your hardware account like you would with any Ethereum account. Connect to web3 sites, send ETH, buy and store ERC20 tokens and non-fungible tokens like CryptoKitties."
|
||||
"step2LedgerWalletMsg": {
|
||||
"message": "Connect your wallet directly to your computer. Unlock your Ledger and open the Ethereum app. For more on using your hardware wallet device, $1.",
|
||||
"description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key"
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Store this phrase in a password manager like 1Password."
|
||||
@ -1660,6 +1726,9 @@
|
||||
"submitted": {
|
||||
"message": "Submitted"
|
||||
},
|
||||
"support": {
|
||||
"message": "Support"
|
||||
},
|
||||
"supportCenter": {
|
||||
"message": "Visit our Support Center"
|
||||
},
|
||||
@ -1788,7 +1857,7 @@
|
||||
"description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen"
|
||||
},
|
||||
"swapNetworkFeeSummary": {
|
||||
"message": "The network fee covers the cost of processing your swap and storing it on the Ethereum network. MetaMask does not profit from this fee."
|
||||
"message": "The network fee covers the cost of processing your swap and storing it on the $1 network. MetaMask does not profit from this fee."
|
||||
},
|
||||
"swapNewQuoteIn": {
|
||||
"message": "New quotes in $1",
|
||||
@ -1975,6 +2044,12 @@
|
||||
"switchEthereumChainConfirmationTitle": {
|
||||
"message": "Allow this site to switch the network?"
|
||||
},
|
||||
"switchLedgerPaths": {
|
||||
"message": "Switch Ledger paths"
|
||||
},
|
||||
"switchLedgerPathsText": {
|
||||
"message": "Select the Ledger path to view other accounts"
|
||||
},
|
||||
"switchNetwork": {
|
||||
"message": "Switch network"
|
||||
},
|
||||
@ -2222,6 +2297,9 @@
|
||||
"walletSeed": {
|
||||
"message": "Seed phrase"
|
||||
},
|
||||
"walletSeedRestore": {
|
||||
"message": "Wallet Seed"
|
||||
},
|
||||
"web3ShimUsageNotification": {
|
||||
"message": "We noticed that the current website tried to use the removed window.web3 API. If the site appears to be broken, please click $1 for more information.",
|
||||
"description": "$1 is a clickable link."
|
||||
|
@ -503,9 +503,6 @@
|
||||
"done": {
|
||||
"message": "Completo"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "¿No tienes un monedero físico?"
|
||||
},
|
||||
"dontShowThisAgain": {
|
||||
"message": "No mostrar esto de nuevo"
|
||||
},
|
||||
@ -730,9 +727,6 @@
|
||||
"message": "Obtenga Ether de un faucet (grifo) por $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Pedir ayuda."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Empezar"
|
||||
},
|
||||
@ -754,9 +748,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Seleccionar un monedero físico que quieres usar con MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "¿Tienes problemas de conexión?"
|
||||
},
|
||||
"here": {
|
||||
"message": "Aquí",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -790,22 +781,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Importar una cuenta con la frase semilla"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Importar usando la frase semilla de la cuenta"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Importar Monedero"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Importa tu monedero existente usando la frase semilla de 12 palabras"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Importado",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Información y ayuda"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "La red confirmó tu transacción inicial. Hazle clic en Ok para volver."
|
||||
},
|
||||
@ -1135,9 +1117,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Símbolo (opcional)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Cómprate un Trezor o Ledger y guarda tus fondos en almacenamiento frío"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Origen"
|
||||
},
|
||||
@ -1219,9 +1198,6 @@
|
||||
"readdToken": {
|
||||
"message": "Puedes volver a agregar este token en el futuro pinchando sobre 'Agregar token' en el menú de opciones de tu cuenta"
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "¿Listo/a para conectar?"
|
||||
},
|
||||
"receive": {
|
||||
"message": "Recibir"
|
||||
},
|
||||
@ -1282,9 +1258,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Restaurar tu Cuenta con la Frase Semilla"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "¿Restaurar cuenta?"
|
||||
},
|
||||
"restoreWalletPreferences": {
|
||||
"message": "Se ha encontrado una copia de seguridad de sus datos de $1. ¿Le gustaría restaurar sus preferencias de monedero?",
|
||||
"description": "$1 is the date at which the data was backed up"
|
||||
@ -1355,9 +1328,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "ADVERTENCIA: Nunca revele su frase de respaldo. Cualquiera con esta frase puede tomar su Ether para siempre."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Ingresa tu frase de doce (12) palabras para restaurar tu bóveda."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Seguridad y Privacidad"
|
||||
},
|
||||
@ -1409,9 +1379,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Enviar cantidad"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Enviar ETH"
|
||||
},
|
||||
"sendSpecifiedTokens": {
|
||||
"message": "Enviar $1",
|
||||
"description": "Symbol of the specified token"
|
||||
@ -1531,24 +1498,6 @@
|
||||
"statusNotConnected": {
|
||||
"message": "No conectado"
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Conectar monedero físico."
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Conéctate el monedero físico directamente al ordenador."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Seleccionar una cuenta"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Seleccione la cuenta que quieres ver. Sólo se puede eligir una a la vez."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Empezar a usar dApps ¡y más!"
|
||||
},
|
||||
"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."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Guarde esta frase en un administrador de contraseñas como 1Password."
|
||||
},
|
||||
@ -1682,7 +1631,7 @@
|
||||
"description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen"
|
||||
},
|
||||
"swapNetworkFeeSummary": {
|
||||
"message": "La tarifa de la red cubre el costo de procesar su intercambio y almacenarlo en la red Ethereum. MetaMask no se beneficia de esta tarifa."
|
||||
"message": "La tarifa de la red cubre el costo de procesar su intercambio y almacenarlo en la red $1. MetaMask no se beneficia de esta tarifa."
|
||||
},
|
||||
"swapNewQuoteIn": {
|
||||
"message": "Nuevas cotizaciones en $1",
|
||||
|
@ -503,9 +503,6 @@
|
||||
"done": {
|
||||
"message": "Listo"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "¿No tienes una billetera de hardware?"
|
||||
},
|
||||
"dontShowThisAgain": {
|
||||
"message": "No mostrar esto de nuevo"
|
||||
},
|
||||
@ -730,9 +727,6 @@
|
||||
"message": "Obtener Ether a partir de un grifo para $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Obtén ayuda."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Comenzar"
|
||||
},
|
||||
@ -754,9 +748,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Selecciona la billetera de hardware que te gustaría utilizar con MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "¿Problemas de conexión?"
|
||||
},
|
||||
"here": {
|
||||
"message": "Aquí",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -790,22 +781,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Importar una cuenta con frase semilla"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Importar usando la frase semilla de la cuenta"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Importar billetera"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Importa tu billetera existente con una frase semilla de 12 palabras"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Importado",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Información y ayuda"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "La red ha confirmado tu transacción inicial. Haz clic en Aceptar para volver."
|
||||
},
|
||||
@ -1135,9 +1117,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Símbolo (opcional)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Pida una billetera Trezor o Ledger y mantenga sus fondos en un almacenamiento en frío"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Origen"
|
||||
},
|
||||
@ -1219,9 +1198,6 @@
|
||||
"readdToken": {
|
||||
"message": "Puedes volver a agregar este token a través de la opción \"Agregar token\" en el menú de opciones de tus cuentas."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "¿Listo/a para conectarte?"
|
||||
},
|
||||
"receive": {
|
||||
"message": "Recibir"
|
||||
},
|
||||
@ -1282,9 +1258,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Restaura tu Cuenta con la Frase Semilla"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "¿Restaurar cuenta?"
|
||||
},
|
||||
"restoreWalletPreferences": {
|
||||
"message": "Se ha encontrado una copia de seguridad de sus datos de $1. ¿Le gustaría restaurar sus preferencias de billetera?",
|
||||
"description": "$1 is the date at which the data was backed up"
|
||||
@ -1355,9 +1328,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "ADVERTENCIA: Nunca reveles tu frase de respaldo. Cualquier persona que tenga acceso a esta frase puede llevarse tus Ether permanentemente."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Ingresa tu frase secreta de doce palabras para restaurar tu almacén."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Seguridad y privacidad"
|
||||
},
|
||||
@ -1409,9 +1379,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Enviar monto"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Enviar ETH"
|
||||
},
|
||||
"sendSpecifiedTokens": {
|
||||
"message": "Enviar $1",
|
||||
"description": "Symbol of the specified token"
|
||||
@ -1531,24 +1498,6 @@
|
||||
"statusNotConnected": {
|
||||
"message": "No conectado"
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Conecta la billetera de hardware"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Conecta tu billetera de hardware directamente a tu computadora."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Selecciona una cuenta"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Selecciona la cuenta que deseas ver. Solo puedes seleccionar una a la vez."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. ¡Comienza a utilizar dApps y más!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Utiliza tu cuenta de hardware como si fuera una cuenta de Ethereum. Inicia sesión en dApps, envía ETH, compra y almacena tokens ERC20 y tokens no fungibles como CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Almacena esta frase en un administrador de contraseñas como 1Password."
|
||||
},
|
||||
@ -1682,7 +1631,7 @@
|
||||
"description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen"
|
||||
},
|
||||
"swapNetworkFeeSummary": {
|
||||
"message": "La tarifa de la red cubre el costo de procesar su intercambio y almacenarlo en la red Ethereum. MetaMask no se beneficia de esta tarifa."
|
||||
"message": "La tarifa de la red cubre el costo de procesar su intercambio y almacenarlo en la red $1. MetaMask no se beneficia de esta tarifa."
|
||||
},
|
||||
"swapNewQuoteIn": {
|
||||
"message": "Nuevas cotizaciones en $1",
|
||||
|
@ -308,9 +308,6 @@
|
||||
"done": {
|
||||
"message": "Valmis"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Teil ei ole riistvara rahakotti?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Laadige alla Google Chrome"
|
||||
},
|
||||
@ -439,9 +436,6 @@
|
||||
"message": "Hankige kraanist eetrit $1eest",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Küsige abi."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Alustamine"
|
||||
},
|
||||
@ -463,9 +457,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Valige riistvara rahakott, mida soovite MetaMaskis kasutada"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Kas ühendamisel esineb probleeme?"
|
||||
},
|
||||
"here": {
|
||||
"message": "siin",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -495,22 +486,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Impordi seemnefraasiga konto"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Impordi konto seemnefraasi abil"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Importige rahakott"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Importige 12-sõnalise seemnefraasi abil olemasolev rahakott"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Imporditud",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Teave ja abi"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Võrk kinnitas teie algse tehingu. Tagasi minemiseks klõpsake OK-nuppu."
|
||||
},
|
||||
@ -706,9 +688,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Sümbol (valikuline)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Tellige Trezor või Ledger ja hoidke oma varasid külmruumis"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Päritolu"
|
||||
},
|
||||
@ -768,9 +747,6 @@
|
||||
"readdToken": {
|
||||
"message": "Saate selle loa tulevikus tagasi lisada, kui lähete oma kontovalikute menüüs vahelehele „Lisa luba“."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Kas olete ühenduseks valmis?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "Hiljutised"
|
||||
},
|
||||
@ -828,9 +804,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Taastage konto seemnefraasi abil"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Taastada konto?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Kuva seemnesõnu"
|
||||
},
|
||||
@ -885,9 +858,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "HOIATUS! Ärge avaldage kunagi oma varundusfraasi. Selle fraasiga on võimalik teie eeter igaveseks ära võtta."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Sisestage hoidla taastamiseks oma salajane 12-sõnaline fraas."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Turvalisus ja privaatsus"
|
||||
},
|
||||
@ -927,9 +897,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Saatke kogus"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Saada ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Saada lube"
|
||||
},
|
||||
@ -1002,24 +969,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "Olekulogid sisaldavad teie avalikke konto aadresse ja saadetud tehinguid."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Ühendage riistvara rahakott"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Ühendage oma riistvara rahakott otse oma arvutiga."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Valige konto"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Valige konto, mida soovite vaadata. Korraga saab valida ühe."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Hakake kasutama dAppse ja muud!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Kasutage oma riistvarakontot nagu mis tahes teist Ethereumi kontot. Logige dAppsi, saatke Eth-d, ostke ja hoiustage ERC20 lube ning asendamatuid lube nagu CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Salvestage see fraas paroolihaldurisse, nagu 1Password."
|
||||
},
|
||||
|
@ -308,9 +308,6 @@
|
||||
"done": {
|
||||
"message": "تمام"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "آیا کیف سخت افزار ندارید؟"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "دانلود گوگل کروم"
|
||||
},
|
||||
@ -443,9 +440,6 @@
|
||||
"message": "اخذ ایتر از یک فاست برای 1$1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "دریافت کمک"
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "شروع به کار"
|
||||
},
|
||||
@ -467,9 +461,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "یک کیف سخت افزار را که میخواهید با MetaMast استفاده نمایید، انتخاب کنید"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "آیا در اتصال مشکلی دارید؟"
|
||||
},
|
||||
"here": {
|
||||
"message": "اینجا",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -499,22 +490,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "یک حساب با عبارت بازیاب را وارد کنید"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "وارد کردن با استفاده از عبارت بازیاب حساب"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "وارد سازی کیف"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "کیف موجود تان را با استفاده از عبارت رمزیاب 12 کلمه یی وارد کنید"
|
||||
},
|
||||
"imported": {
|
||||
"message": "وارد شده",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "معلومات و کمک"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "معامله آغازین تان توسط شبکه تأیید شد. برای رفتن به عقب بالای OK کلیک کنید."
|
||||
},
|
||||
@ -716,9 +698,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "سمبول (انتخابی)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "یک Trezor یا Ledger را سفارش داده و پول های تان را در ذخیره سرد نگهدارید"
|
||||
},
|
||||
"origin": {
|
||||
"message": "مبدأ"
|
||||
},
|
||||
@ -778,9 +757,6 @@
|
||||
"readdToken": {
|
||||
"message": "شما میتوانید این رمزیاب را دوباره برای آینده با رفتن به گزینه \"Add token\" در مینوی تنظیمات حساب ها، اضافه نمایید."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "آماده برای اتصال هستید؟"
|
||||
},
|
||||
"recents": {
|
||||
"message": "واپسین"
|
||||
},
|
||||
@ -838,9 +814,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "حساب تان را با عبارت بازیاب، بازیابی کنید"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "بازگرداندن حساب؟"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "کلمات بازیاب را آشکار کنید"
|
||||
},
|
||||
@ -895,9 +868,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "هشدار: هرگز عبارت پشتیبان تان را به کسی فاش نسازید. هرکسیکه این عبارت را داشته باشد ایتر شما را برای همیشه خواهد گرفت."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "جهت بازیابی خزانه تان عبارت دوازده کلمه یی تان را اینجا وارد کنید."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "امنیت و حریم خصوصی"
|
||||
},
|
||||
@ -937,9 +907,6 @@
|
||||
"sendAmount": {
|
||||
"message": "ارسال مبلغ"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "ارسال ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "رمزیاب ها را ارسال کنید"
|
||||
},
|
||||
@ -1012,24 +979,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "دفترچه وضعیت شامل آدرس های حساب عمومی و معاملات فرستاده شده تان میباشد."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. اتصال کیف سخت افزار"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "کیف سخت افزار تان را مستقیمًا به کمپیوتر وصل نمایید."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. انتخاب یک حساب"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "حسابی را که میخواهید مشاهده نمایید انتخاب کنید. شما میتوانید یک حساب را در یک زمان انتخاب نمایید."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. آغاز استفاده از dApps و بیشتر!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "حساب سخت افزار تان را همچنانکه در حساب ایتریم استفاده میکنید، استفاده نمایید. وارد dApps شده، Eth را ارسال نموده، رمزیاب های ERC20 و غیر-قابل تبدیل به پول مانند CryptoKitties را خریداری و ذخیره نمایید."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "این عبارت را در یک نرم افزار مدیریت رمز عبور مانند 1Password ذخیره نمایید."
|
||||
},
|
||||
|
@ -308,9 +308,6 @@
|
||||
"done": {
|
||||
"message": "Valmis"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Eikö sinulla ole laitteistokukkaroa?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Lataa Google Chrome"
|
||||
},
|
||||
@ -443,9 +440,6 @@
|
||||
"message": "Hanki etheriä faucetista kohteelle $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Pyydä apua."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Aloitusopas"
|
||||
},
|
||||
@ -467,9 +461,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Valitse laitteistokukkaro, jota haluaisit käyttää MetaMaskilla"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Onko sinulla yhdistämisvaikeuksia?"
|
||||
},
|
||||
"here": {
|
||||
"message": "tässä",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -499,22 +490,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Tuo tili siemenlauseella"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Tuo käyttäen tilin siemenlausetta"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Tuo kukkaro"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Tuo nykyinen lompakkosi käyttäen 12 sanan \n siemenlausetta"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Tuotu",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Tietoja ja ohje"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Verkko hyväksyi alkuperäisen tapahtumasi. Siirry takaisin napsauttamalla OK-painiketta."
|
||||
},
|
||||
@ -713,9 +695,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Symboli (valinnainen)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Tilaa Trezor tai Ledger ja pidä varasi vakaassa tallennustilassa"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Alkuperä"
|
||||
},
|
||||
@ -775,9 +754,6 @@
|
||||
"readdToken": {
|
||||
"message": "Voit lisätä tämän tietueen myöhemmin takaisin siirtymällä tilisi vaihtoehtovalikon kohtaan ”Lisää tietue”."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Valmiina yhdistämään?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "Viimeaikaiset"
|
||||
},
|
||||
@ -835,9 +811,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Palauta tilisi käyttäen salaustekstiä (seed phrase)"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Palautetaanko tili?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Paljasta salaussanat"
|
||||
},
|
||||
@ -892,9 +865,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "VAROITUS: älä koskaan kerro varmuuskopiolausettasi kenellekään. Kuka tahansa tämän lauseen omaava voi napata Etherisi pysyvästi."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Palauta holvisi syöttämällä tähän salainen kahdentoista sanan tekstisi."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Turva & yksityisyys"
|
||||
},
|
||||
@ -934,9 +904,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Lähetä summa"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Lähetä ETH:iä"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Lähetä tietueita"
|
||||
},
|
||||
@ -1009,24 +976,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "Tilalokeista löydät julkiset tiliosoitteesi sekä lähetetyt maksusiirtosi."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Yhdistä laitteistokukkaro"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Yhdistä hardware-lompakkosi suoraan tietokoneeseesi."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Valitse tili"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Valitse tarkasteltava tili. Voit valita vain yhden kerrallaan."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Ota käyttöön dApps ja paljon muuta!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Käytä laitteistosi tiliä minkä tahansa Ethereum-tilin tavoin. Kirjaudu dAppsiin, lähettää ethereumeja, ostaa ja tallentaa ERC20-tunnuksia sekä CryptoKittiesin kaltaisia ei-korvattavia tunnuksia."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Tallenna tämä teksti johonkin salasanojen hallintaohjelmaan (esim. 1Password)."
|
||||
},
|
||||
|
@ -284,9 +284,6 @@
|
||||
"done": {
|
||||
"message": "Tapos na"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Wala ka bang hardware wallet?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "I-download ang Google Chrome"
|
||||
},
|
||||
@ -412,9 +409,6 @@
|
||||
"message": "Kumuha ng Ether mula sa isang faucet para sa $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Humingi ng Tulong."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Magsimula"
|
||||
},
|
||||
@ -430,9 +424,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Pumili ng hardware wallet na gusto mong gamitin sa MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "May problema ka ba sa pagkonekta?"
|
||||
},
|
||||
"here": {
|
||||
"message": "dito",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -456,22 +447,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Mag-import ng Account gamit ang Seed Phrase"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Mag-import gamit ang seed phrase ng account"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Mag-import ng Wallet"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "I-import ang kasalukuyan mong wallet gamit ang isang seed phrase na may 12 salita"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Na-import",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Impormasyon at Tulong"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Nakumpirma ng network ang iyong unang transaksyon. I-click ang OK para bumalik."
|
||||
},
|
||||
@ -647,9 +629,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Simbolo (opsyonal)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Mag-order ng Trezor o Ledger para itago sa cold storage ang iyong pondo"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Pinanggalingan"
|
||||
},
|
||||
@ -702,9 +681,6 @@
|
||||
"readdToken": {
|
||||
"message": "Puwede mong idagdag ulit ang token na ito sa hinaharap sa pamamagitan ng pagpunta sa “Magdagdag ng token” sa menu ng mga opsyon ng iyong mga accounts."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Handa ka nang Kumonekta?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "Kamakailan"
|
||||
},
|
||||
@ -762,9 +738,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "I-restore ang iyong Account gamit ang Seed Phrase"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "I-restore ang account?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Ipakita ang Seed Words"
|
||||
},
|
||||
@ -807,9 +780,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "BABALA: Huwag ibunyag ang iyong backup phrase. Mananakaw ng kahit sinong may ganitong parirala ang iyong Ether at hindi na ito maibabalik."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Ilagay ang iyong lihim na pariralang may labindalawang salita para ma-restore ang iyong vault."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Seguridad at Privacy"
|
||||
},
|
||||
@ -849,9 +819,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Magpadala ng Halaga"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Magpadala ng ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Magpadala ng Mga Token"
|
||||
},
|
||||
@ -918,24 +885,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "Ang mga state log ay naglalaman ng iyong mga pampublikong account address at mga ipinadalang transaksyon."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Magkonekta ng Hardware Wallet"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Ikonekta ang iyong hardware wallet nang direkta sa computer."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Pumili ng Account"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Piliin ang halagang gusto mong tingnan. Maaari ka lang pumili nang paisa-isa."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Magsimula gamit ang dApps at higit pa!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Gamitin ang iyong hardware account tulad ng anumang Ethereum account. Mag-log in sa dApps, magpadala ng Eth, bumili at mag-store ng mga ERC20 token at mga Non-Fungible token tulad ng CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "I-store ang pariralang ito sa isang password manager tulad ng 1Password."
|
||||
},
|
||||
|
@ -299,9 +299,6 @@
|
||||
"done": {
|
||||
"message": "Terminé"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Vous n'avez pas de portefeuille hardware ?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Télécharger Google Chrome"
|
||||
},
|
||||
@ -437,9 +434,6 @@
|
||||
"message": "Obtenir de l'Ether d'une faucet pour $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Obtenir de l'aide."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Démarrer"
|
||||
},
|
||||
@ -458,9 +452,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Selectionnez le portefeuille hardware que vous voulez utiliser avec MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Un problème de connection ?"
|
||||
},
|
||||
"here": {
|
||||
"message": "ici",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -490,22 +481,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Importez un compte avec une phrase mnémotechnique"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Importer à partir de la phrase Seed du compte"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Importer le portefeuille"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Importez votre portefeuille existant à l'aide d'une phrase mnémotechnique de 12 mots"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Importé",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Info & Aide"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Votre transaction initiale a été confirmée par le réseau. Cliquez sur OK pour retourner à l'écran précédent."
|
||||
},
|
||||
@ -698,9 +680,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Symbole (facultatif)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Commander un Trezor ou un Ledger et conserver vos fonds en \"cold storage\""
|
||||
},
|
||||
"origin": {
|
||||
"message": "Origine"
|
||||
},
|
||||
@ -760,9 +739,6 @@
|
||||
"readdToken": {
|
||||
"message": "Vous pourrez ajouter à nouveau ce jeton en allant sur “Ajouter un jeton” dans le menu des options de votre compte."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Prêt à se connecter ?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "Récents"
|
||||
},
|
||||
@ -820,9 +796,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Restaurer votre compte avec une phrase Seed."
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Restaurer le compte ?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Révéler les mots Seed"
|
||||
},
|
||||
@ -877,9 +850,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "AVERTISSEMENT : ne révélez jamais votre phrase de sauvegarde. N'importe qui avec cette phrase peut voler votre Ether pour toujours."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Entrez vos 12 mots secrets de votre phrase Seed pour restaurer votre coffre."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Sécurité et confidentialité"
|
||||
},
|
||||
@ -919,9 +889,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Envoyer le montant"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Envoyer des ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Envoyer des jetons"
|
||||
},
|
||||
@ -994,24 +961,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "Les logs d'Etat contiennent les adresses publiques de vos comptes et vos transactions envoyées."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Connecter le portefeuille hardware"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Connectez votre portefeuille hardware directement à votre ordinateur."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Selectionnez un compte"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Selectionnez le compte que vous voulez afficher. Vous ne pouvez en afficher qu'un seul à la fois."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Vous pouvez maintenant utiliser des dApps et autres... !"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Utilisez ce compte de votre portefeuille hardware comme n'importe quel compte Ethereum. Connectez vous à des dApps, envoyez de l'Eth, achetez et conservez des jetons ERC20 et Non-Fungible comme CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Stockez cette phrase dans un gestionnaire de mots de passe comme 1Password."
|
||||
},
|
||||
|
@ -308,9 +308,6 @@
|
||||
"done": {
|
||||
"message": "סיום"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "אין לך ארנק חומרה?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "הורד/י את גוגל כרום"
|
||||
},
|
||||
@ -443,9 +440,6 @@
|
||||
"message": "השג/י את'ר מברז (faucet) עבור ה-$1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "בקש/י עזרה."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "תחילת העבודה"
|
||||
},
|
||||
@ -467,9 +461,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "בחר/י ארנק חומרה שבו תרצה להשתמש עם MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "חווה קשיים בהתחברות?"
|
||||
},
|
||||
"here": {
|
||||
"message": "כאן",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -499,22 +490,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "יבא חשבון באמצעות Seed Phrase"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "ייבא באמצעות צירוף הגרעין של החשבון"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "ייבא ארנק"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "יבא/י את הארנק הקיים שלך באמצעות seed phrase בן 12 מילים"
|
||||
},
|
||||
"imported": {
|
||||
"message": "מיובאות",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "מידע ועזרה"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "העסקה הראשונית שלך אושרה על ידי הרשת. לחצ/י על אישור כדי לחזור."
|
||||
},
|
||||
@ -713,9 +695,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "סמל (אופציונלי)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "הזמנ/י Trezor או Ledger ושמר/י את הכספים שלך באחסון קר"
|
||||
},
|
||||
"origin": {
|
||||
"message": "מקור"
|
||||
},
|
||||
@ -775,9 +754,6 @@
|
||||
"readdToken": {
|
||||
"message": "באפשרותך להוסיף טוקן זה בחזרה בעתיד על ידי מעבר אל \"הוסף טוקן\" בתפריט אפשרויות החשבונות שלך."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "מוכנ/ה להתחבר?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "אחרונים"
|
||||
},
|
||||
@ -835,9 +811,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "שחזר את חשבונך באמצעות צירוף הגרעין"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "לשחזר את החשבון?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "גלה מילות Seed"
|
||||
},
|
||||
@ -889,9 +862,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "אזהרה: לעולם אין לחשוף את צירוף הגיבוי שלך. כל מי שברשותו צירוף זה יכול לקחת את האת'ר שלך לצמיתות."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "הזנ/י את הצירוף הסודי שלך של שתים-עשרה המילים כאן כדי לשחזר את הכספת שלך."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "אבטחה ופרטיות"
|
||||
},
|
||||
@ -931,9 +901,6 @@
|
||||
"sendAmount": {
|
||||
"message": "שלח סכום"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "שלח/י ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "שלח טוקנים"
|
||||
},
|
||||
@ -1006,24 +973,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "יומני המצב מכילים את כתובות החשבון הציבוריות שלך ועסקאות שנשלחו."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. חבר/י ארנק חומרה"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "חבר/י את ארנק החומרה שלך ישירות למחשב שלך."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. בחר/י חשבון"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "בחר/י את החשבון שברצונך להציג. באפשרותך לבחור רק אחד בכל פעם."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. התחל/י להשתמש ב- dApps ועוד!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "השתמש/י בחשבון החומרה שלך כי שהיית משתמש/ת בכל חשבון אתריום"
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "אחסנ/י צירוף זה במנהל ססמאות כמו 1Password."
|
||||
},
|
||||
|
@ -494,9 +494,6 @@
|
||||
"done": {
|
||||
"message": "संपन्न"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "हार्डवेयर वॉलेट नहीं है?"
|
||||
},
|
||||
"dontShowThisAgain": {
|
||||
"message": "इसे दोबारा न दिखाएँ"
|
||||
},
|
||||
@ -721,9 +718,6 @@
|
||||
"message": "$1 के लिए एक फ़ॉसेट से Ether प्राप्त करें",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "मदद प्राप्त करें।"
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "प्रारंभ करें"
|
||||
},
|
||||
@ -745,9 +739,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "किसी हार्डवेयर वॉलेट का चयन करें, जिसे आप MetaMask के साथ उपयोग करना चाहते हैं"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "कनेक्ट करने में समस्या हो रही है?"
|
||||
},
|
||||
"here": {
|
||||
"message": "यहाँ",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -781,22 +772,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "सीडफ्रेज़ के साथ कोई खाता आयात करें"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "खाता सीडफ्रेज़ का उपयोग करके आयात करें"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "वॉलेट आयात करें"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "12 शब्द के सीडफ्रेज़ का उपयोग करके अपने मौजूदा वॉलेट को आयात करें"
|
||||
},
|
||||
"imported": {
|
||||
"message": "आयातित",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "जानकारी और मदद"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "नेटवर्क द्वारा आपके प्रारंभिक लेनदेन की पुष्टि की गई थी। वापस जाने के लिए ठीक पर क्लिक करें।"
|
||||
},
|
||||
@ -1126,9 +1108,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "मुद्रा प्रतीक (वैकल्पिक)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Trezor या लेजर ऑर्डर करें और अपने धन को कोल्ड स्टोरेज में रखें"
|
||||
},
|
||||
"origin": {
|
||||
"message": "उत्पत्ति"
|
||||
},
|
||||
@ -1210,9 +1189,6 @@
|
||||
"readdToken": {
|
||||
"message": "आप अपने खातों के विकल्प मेनू में \"टोकन जोड़ें\" पर जाकर भविष्य में इस टोकन को वापस जोड़ सकते हैं।"
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "कनेक्ट करने के लिए तैयार हैं?"
|
||||
},
|
||||
"receive": {
|
||||
"message": "प्राप्त करें"
|
||||
},
|
||||
@ -1273,9 +1249,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "सीड फ्रेज़ के साथ अपने खाते को पुनर्स्थापित करें"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "खाता पुनर्स्थापित करें?"
|
||||
},
|
||||
"restoreWalletPreferences": {
|
||||
"message": "$1 से आपके डेटा का बैकअप मिला है। क्या आप अपनी वॉलेट वरीयताओं को पुनर्स्थापित करना चाहते हैं?",
|
||||
"description": "$1 is the date at which the data was backed up"
|
||||
@ -1346,9 +1319,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "चेतावनी: कभी भी अपने बैकअप वाक्यांश का खुलासा न करें। इस वाक्यांश के साथ कोई भी आपके Ether को हमेशा के लिए ले सकता है।"
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "अपनी तिजोरी को पुनर्स्थापित करने के लिए अपने गुप्त बारह शब्द वाक्यांश को यहाँ दर्ज करें।"
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "सुरक्षा और गोपनीयता"
|
||||
},
|
||||
@ -1400,9 +1370,6 @@
|
||||
"sendAmount": {
|
||||
"message": "राशि भेजें"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "ETH भेजें"
|
||||
},
|
||||
"sendSpecifiedTokens": {
|
||||
"message": "$1 भेजें",
|
||||
"description": "Symbol of the specified token"
|
||||
@ -1522,24 +1489,6 @@
|
||||
"statusNotConnected": {
|
||||
"message": "कनेक्ट नहीं है"
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. हार्डवेयर वॉलेट कनेक्ट करें"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "अपने हार्डवेयर वॉलेट को सीधे अपने कंप्यूटर से कनेक्ट करें।"
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. किसी खाते का चयन करें"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "उस खाते का चयन करें, जिसे आप देखना चाहते हैं। आप एक समय में केवल एक ही चुन सकते हैं।"
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. web3 साइटों और अधिक का उपयोग करना प्रारंभ करें!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "अपने हार्डवेयर खाते का उसी तरह से उपयोग करें, जैसे आप किसी भी Ethereum खाते को करेंगे। web3 साइटों से कनेक्ट करें, ETH भेजें, ERC20 और CryptoKitties जैसे गैर-प्रतिमोचन वाले टोकन जैसे टोकन खरीदें और संग्रहीत करें।"
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "इस वाक्यांश को 1Password जैसे किसी पासवर्ड मैनेजर में संग्रहीत करें।"
|
||||
},
|
||||
@ -1666,7 +1615,7 @@
|
||||
"description": "Provides information about the fee that metamask takes for swaps. $1 is a decimal number."
|
||||
},
|
||||
"swapNetworkFeeSummary": {
|
||||
"message": "नेटवर्क शुल्क आपके स्वैप को संसाधित करने के शुल्क और उसे Ethereum नेटवर्क पर संग्रह करने को कवर करता है। MetaMask इस शुल्क से लाभ नहीं कमाता है।"
|
||||
"message": "नेटवर्क शुल्क आपके स्वैप को संसाधित करने के शुल्क और उसे $1 नेटवर्क पर संग्रह करने को कवर करता है। MetaMask इस शुल्क से लाभ नहीं कमाता है।"
|
||||
},
|
||||
"swapNewQuoteIn": {
|
||||
"message": "$1 में नए उद्धरण",
|
||||
|
@ -172,9 +172,6 @@
|
||||
"message": "आयातित",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "जानकारी और सहायता"
|
||||
},
|
||||
"insufficientFunds": {
|
||||
"message": "अपर्याप्त धन"
|
||||
},
|
||||
@ -303,9 +300,6 @@
|
||||
"resetAccount": {
|
||||
"message": "खाता रीसेट करें"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "बीज वाक्यांश से पुनर्स्थापित करें"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "बीज शब्द प्रकट करें"
|
||||
},
|
||||
@ -324,9 +318,6 @@
|
||||
"search": {
|
||||
"message": "खोज करें"
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "अपनी गुप्त बारह शब्द वाक्यांश यहाँ अपनी तिजोरी को पुनर्स्थापित करने के लिए दर्ज करें।"
|
||||
},
|
||||
"seedPhraseReq": {
|
||||
"message": "बीज वाक्यांश 12 शब्द लंबा हैं"
|
||||
},
|
||||
@ -336,9 +327,6 @@
|
||||
"send": {
|
||||
"message": "भेजें"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "भेजें ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "भेजें टोकन"
|
||||
},
|
||||
|
@ -308,9 +308,6 @@
|
||||
"done": {
|
||||
"message": "Gotovo"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Nemate hardverski novčanik?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Preuzmi preglednik Google Chrome"
|
||||
},
|
||||
@ -439,9 +436,6 @@
|
||||
"message": "Dohvati Ether iz svežnja za $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Potražite pomoć."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Početak upotrebe"
|
||||
},
|
||||
@ -463,9 +457,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Odaberite hardverski novčanik koji biste željeli upotrebljavati s uslugom MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Imate poteškoća s povezivanjem?"
|
||||
},
|
||||
"here": {
|
||||
"message": "ovdje",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -495,22 +486,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Uvezi račun početnom rečenicom"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Uvezi početnom rečenicom za račun"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Uvezi novčanik"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Uvezite svoj postojeći novčanik početnom rečenicom od 12 riječi"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Uvezeno",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Informacije i pomoć"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Vašu je početnu transakciju potvrdila mreža. Kliknite na U REDU za natrag."
|
||||
},
|
||||
@ -709,9 +691,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Simbol (neobavezno)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Naručite Trezor ili Ledger te čuvajte svoja sredstva u hladnoj pohrani"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Podrijetlo"
|
||||
},
|
||||
@ -771,9 +750,6 @@
|
||||
"readdToken": {
|
||||
"message": "Ovaj token možete dodati kasnije odlaskom pod stavku „Dodaj token” u izborniku mogućnosti računa. "
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Sve je spremno za povezivanje?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "Nedavno"
|
||||
},
|
||||
@ -831,9 +807,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Obnovite svoj račun početnom rečenicom"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Obnoviti račun?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Otkrij početne riječi"
|
||||
},
|
||||
@ -888,9 +861,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "UPOZORENJE: nikada ne otkrivajte svoju alternativnu rečenicu. Bilo tko ovom rečenicom može zauvijek preuzeti vaš Ether."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Ovdje upišite svoju tajnu rečenicu od 12 riječi kako biste obnovili svoj sef."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Sigurnost i privatnost"
|
||||
},
|
||||
@ -930,9 +900,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Odaberi iznos"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Pošalji ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Pošalji tokene"
|
||||
},
|
||||
@ -1005,24 +972,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "U zapisnicima se stanja nalaze javne adrese računa i poslane transakcije."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Povežite se na svoj hardverski novčanik"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Povežite svoj hardverski novčanik izravno na svoje računalo."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Odaberite račun"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Odaberite račun koji želite pregledati. Istovremeno možete odabrati samo jedan račun za pregled."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Započnite upotrebljavati dApps i više!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Upotrebljavajte svoj hardverski račun kako biste upotrebljavali bilo koji drugi račun Ethereum. Prijavite se u dApps, šaljite Eth, kupujte i pohranjujte ERC20 tokene i nezamjenske tokene kao CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Spremite ovu rečenicu u upravitelj lozinkama poput aplikacije 1Password."
|
||||
},
|
||||
|
@ -172,9 +172,6 @@
|
||||
"done": {
|
||||
"message": "Fini"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Pa gen yon materyèl bous?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Telechaje Google Chrome"
|
||||
},
|
||||
@ -241,9 +238,6 @@
|
||||
"message": "Jwenn Ether nan yon tiyo pou $1 la",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Jwenn èd."
|
||||
},
|
||||
"hardware": {
|
||||
"message": "materyèl"
|
||||
},
|
||||
@ -256,9 +250,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Chwazi yon Materyèl Wallet ou ta renmen itilize ak MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Èske w gen pwoblèm pou konekte?"
|
||||
},
|
||||
"here": {
|
||||
"message": "isit la",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -282,16 +273,10 @@
|
||||
"importAccountMsg": {
|
||||
"message": " Kont pòte pa pral asosye avèk orijinal ou te kreye nan kont MetaMask seed fraz. Aprann plis sou kont enpòte "
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Pòte lè sèvi avèk seed fraz"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Pòte",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Enfo & Èd"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Premye tranzaksyon ou konfime sou rezo a. Klike sou OK pou tounen."
|
||||
},
|
||||
@ -415,9 +400,6 @@
|
||||
"ok": {
|
||||
"message": "Oke"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Mete nan lòd on Trezor oswa Ledger epi kenbe lajan ou nan yon stòk frèt."
|
||||
},
|
||||
"origin": {
|
||||
"message": "Orijin"
|
||||
},
|
||||
@ -468,9 +450,6 @@
|
||||
"readdToken": {
|
||||
"message": "Ou ka ajoute token sa aprè sa ankò ou prale nan \"Ajoute token\" nan opsyon meni kont ou an."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Pare pou konekte?"
|
||||
},
|
||||
"recipientAddress": {
|
||||
"message": "Adrès pou resevwa"
|
||||
},
|
||||
@ -516,9 +495,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Retabli kont ou avèk yo Seed Fraz"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Restore kont?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Revele Seed Mo Yo"
|
||||
},
|
||||
@ -561,9 +537,6 @@
|
||||
"searchTokens": {
|
||||
"message": "Rechèch Tokens"
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Antre fraz sekrè douz mo ou a pou w restore kòf ou a."
|
||||
},
|
||||
"seedPhraseReq": {
|
||||
"message": "Seed fraz yo se 12 long mo"
|
||||
},
|
||||
@ -585,9 +558,6 @@
|
||||
"send": {
|
||||
"message": "Voye"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Voye ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Voye Tokens"
|
||||
},
|
||||
@ -633,24 +603,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "State logs gen adrès kont piblik ou yo epi tranzaksyon ou te voye yo."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Konekte Materyèl bous"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Konekte materyèl bous ou dirèkteman nan òdinatè ou."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Chwazi yon kont"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Chwazi kont ou vle wè a. Ou ka chwazi youn sèlman nan yon moman."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Kòmanse itilize dApps ak plis ankò!"
|
||||
},
|
||||
"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."
|
||||
},
|
||||
"submitted": {
|
||||
"message": "Te Soumèt"
|
||||
},
|
||||
|
@ -308,9 +308,6 @@
|
||||
"done": {
|
||||
"message": "Kész"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Nincs hardveres tárcája? "
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Google Chrome letöltése"
|
||||
},
|
||||
@ -439,9 +436,6 @@
|
||||
"message": "Szerezzen Ethert pénzcsapból a(z) $1-ért",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Segítség kérése"
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Első lépések"
|
||||
},
|
||||
@ -463,9 +457,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Válassza ki a MetaMask-kal használni kívánt hardveres pénztárcát"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Gond van a csatlakozással?"
|
||||
},
|
||||
"here": {
|
||||
"message": "itt",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -495,22 +486,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Fiók importálása seed mondat segítségével"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Importálás a fiók seed mondatának használatával"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Pénztárca importálása"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Importálja meglévő pénztárcáját a 12 szóból álló seed mondat segítségével"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Importált",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Információk és súgó"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Eredeti tranzakciódat jóváhagyta a hálózat. A visszatéréshez kattints az OK-ra."
|
||||
},
|
||||
@ -709,9 +691,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Szimbólum (opcionális)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Rendeljen trezort vagy főkönyvet, és tárolja pénzeszközeit hideg tárcában"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Eredet"
|
||||
},
|
||||
@ -771,9 +750,6 @@
|
||||
"readdToken": {
|
||||
"message": "Ezt a tokent a jövőben is hozzáadhatja, ha a fiókbeállítások menü „Token hozzáadása” elemére lép."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Készen áll a csatlakozásra?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "Legutóbbiak"
|
||||
},
|
||||
@ -831,9 +807,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Fiók helyreállítása a seed mondat segítségével"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Visszaállítja a fiókot? "
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Seed szavak megjelenítése"
|
||||
},
|
||||
@ -888,9 +861,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "FIGYELEM: Senkise se adja meg a biztonsági szakaszát. Ennek tulajdonosa örökre elviheti Ether-jeit."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Tárolód helyreállításához írd be titkos tizenkét szavas szókapcsolatodat ide."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Biztonság és adatvédelem"
|
||||
},
|
||||
@ -930,9 +900,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Összeg küldése"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "ETH küldése"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Token küldése"
|
||||
},
|
||||
@ -1005,24 +972,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "Az állapotnaplóban megtalálhatók nyilvános fiókcímeid és elküldött tranzakcióid."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Csatlakoztassa a hardveres pénztárcát"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Csatlakoztassa hardveres tárcáját közvetlenül a számítógéphez."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Válassz egy fiókot"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Válassza ki a megtekinteni kívánt fiókot. Egyszerre csak egyet választhat."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Kezdje el használni a dApps-t és másokat!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Használja hardveres fiókját úgy, mint bármilyen Ethereum fiókot. Jelentkezzen be a dAppsba, küldjön Ethet, vásároljon és tároljon ERC20 tokeneket és nem helyettesíthető tokeneket, például CryptoKitties-t."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Tárolja a mondatot jelszókezelőben, például az 1Passwordben."
|
||||
},
|
||||
|
@ -494,9 +494,6 @@
|
||||
"done": {
|
||||
"message": "Selesai"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Tidak punya dompet perangkat keras?"
|
||||
},
|
||||
"dontShowThisAgain": {
|
||||
"message": "Jangan tampilkan ini lagi"
|
||||
},
|
||||
@ -721,9 +718,6 @@
|
||||
"message": "Dapatkan Ether dari keran untuk $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Dapatkan Bantuan."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Persiapan."
|
||||
},
|
||||
@ -745,9 +739,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Pilih dompet perangkat keras yang ingin Anda gunakan dengan MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Ada masalah saat menghubungkan?"
|
||||
},
|
||||
"here": {
|
||||
"message": "di sini",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -781,22 +772,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Impor akun dengan frasa pemulihan"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Impor menggunakan frasa pemulihan akun"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Impor dompet"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Impor dompet Anda yang ada menggunakan frasa pemulihan 12 kata"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Diimpor",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Informasi & Bantuan"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Transaksi awal Anda dikonfirmasikan oleh jaringan. Klik Oke untuk kembali."
|
||||
},
|
||||
@ -1126,9 +1108,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Simbol Mata Uang (opsional)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Pesan Trezor atau Ledger dan simpan dana Anda di penyimpanan dingin"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Asal"
|
||||
},
|
||||
@ -1210,9 +1189,6 @@
|
||||
"readdToken": {
|
||||
"message": "Anda dapat menambahkan token ini kembali di masa mendatang dengan membuka “Tambahkan token” di menu opsi akun Anda."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Siap untuk Terhubung?"
|
||||
},
|
||||
"receive": {
|
||||
"message": "Terima"
|
||||
},
|
||||
@ -1273,9 +1249,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Memulihkan Akun dengan Frasa Pemulihan"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Pulihkan akun?"
|
||||
},
|
||||
"restoreWalletPreferences": {
|
||||
"message": "Cadangan data Anda dari $1 telah ditemukan. Apakah Anda ingin memulihkan preferensi dompet Anda?",
|
||||
"description": "$1 is the date at which the data was backed up"
|
||||
@ -1346,9 +1319,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "PERINGATAN: Jangan pernah ungkapkan frasa cadangan Anda. Siapa pun yang memiliki frasa ini dapat mengambil Ether Anda selamanya."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Masukkan frasa kata dua belas rahasia Anda di sini untuk memulihkan vault Anda."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Keamanan & Privasi"
|
||||
},
|
||||
@ -1400,9 +1370,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Kirim Jumlah"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Kirim ETH"
|
||||
},
|
||||
"sendSpecifiedTokens": {
|
||||
"message": "Kirim $1",
|
||||
"description": "Symbol of the specified token"
|
||||
@ -1522,24 +1489,6 @@
|
||||
"statusNotConnected": {
|
||||
"message": "Tidak terhubung"
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Hubungkan Dompet Perangkat Keras"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Hubungkan dompet perangkat keras Anda langsung ke komputer."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Pilih Akun"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Pilih akun yang ingin Anda lihat. Anda hanya dapat memilih satu pada satu waktu."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Mulai menggunakan situs web3 dan lainnya!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Gunakan akun perangkat keras Anda seperti yang akan Anda lakukan dengan akun Ethereum lainnya. Hubungkan ke situs web3, kirim ETH, beli dan simpan token ERC20 dan token yang tidak dapat dipertukarkan seperti CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Simpan frasa ini dalam pengelola kata sandi seperti 1Password."
|
||||
},
|
||||
@ -1666,7 +1615,7 @@
|
||||
"description": "Provides information about the fee that metamask takes for swaps. $1 is a decimal number."
|
||||
},
|
||||
"swapNetworkFeeSummary": {
|
||||
"message": "Biaya jaringan mencakup biaya pemrosesan penukaran Anda dan menyimpannya di jaringan Ethereum. MetaMask tidak mendapatkan keuntungan dari biaya ini."
|
||||
"message": "Biaya jaringan mencakup biaya pemrosesan penukaran Anda dan menyimpannya di jaringan $1. MetaMask tidak mendapatkan keuntungan dari biaya ini."
|
||||
},
|
||||
"swapNewQuoteIn": {
|
||||
"message": "Kuota baru di $1",
|
||||
|
@ -506,9 +506,6 @@
|
||||
"done": {
|
||||
"message": "Finito"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Non hai un portafoglio hardware?"
|
||||
},
|
||||
"dontShowThisAgain": {
|
||||
"message": "Non mostrare di nuovo"
|
||||
},
|
||||
@ -733,9 +730,6 @@
|
||||
"message": "Ottieni Get Ether da un faucet per $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Aiuto."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Inizia"
|
||||
},
|
||||
@ -757,9 +751,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Selezione un portafoglio hardware che vuoi utilizzare con MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Problemi di connessione?"
|
||||
},
|
||||
"here": {
|
||||
"message": "qui",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -793,22 +784,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Importa un Account con una Frase Seed"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Importa account con frase seed"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Importa Portafoglio"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Importa il tuo portafoglio esistente usando la tua frase seed a 12 parole"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Importato",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Informazioni & Aiuto"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "La transazione iniziale è stata confermata dalla rete. Clicca OK per tornare indietro."
|
||||
},
|
||||
@ -1141,9 +1123,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Simbolo (opzionale)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Compra un Trezor o un Ledger e tieni i tuoi soldi al sicuro"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Origine"
|
||||
},
|
||||
@ -1225,9 +1204,6 @@
|
||||
"readdToken": {
|
||||
"message": "Puoi aggiungere nuovamente questo token in futuro andando in “Aggiungi token” nel menu delle opzioni del tuo account."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Pronto a Connetterti?"
|
||||
},
|
||||
"receive": {
|
||||
"message": "Ricevi"
|
||||
},
|
||||
@ -1288,9 +1264,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Ripristina Account con la Frase Seed"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Ripristina da una frase seed"
|
||||
},
|
||||
"restoreWalletPreferences": {
|
||||
"message": "È stato trovato un backup dei tuoi dati da $1. Vuoi ripristinare le preferenze del portafoglio?",
|
||||
"description": "$1 is the date at which the data was backed up"
|
||||
@ -1361,9 +1334,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "ATTENZIONE: Non dire mai a nessuno questa frase di backup. Chiunque con questa frase può rubare i tuoi Ether per sempre."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Inserisci la tua frase segreta di dodici parole per ripristinare la cassaforte."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Sicurezza & Privacy"
|
||||
},
|
||||
@ -1415,9 +1385,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Invia Importo"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Invia ETH"
|
||||
},
|
||||
"sendSpecifiedTokens": {
|
||||
"message": "Invia $1",
|
||||
"description": "Symbol of the specified token"
|
||||
@ -1537,24 +1504,6 @@
|
||||
"statusNotConnected": {
|
||||
"message": "Non connesso"
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Connetti Portafoglio Hardware"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Connetti il tuo portafoglio hardware al tuo computer."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Seleziona un Account"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Selezione l'account che vuoi vedere. Puoi selezionarne solo uno alla volta."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Inizia a usare dApps e molto altro ancora!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Usa il tuo account hardware come utilizzeresti qualsiasi account Ethereum. Accedi alle dApps, invia Eth, compra e conserva token ERC20 e token non fungibili come CryptoKitties"
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Conserva questa frase in un gestore di password come 1Password."
|
||||
},
|
||||
@ -1688,7 +1637,7 @@
|
||||
"description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen"
|
||||
},
|
||||
"swapNetworkFeeSummary": {
|
||||
"message": "La tassa di rete copre il costo di processamento dello scambio e della memorizzazione nella rete Ethereum. MetaMask non trae profitto da questa tassa."
|
||||
"message": "La tassa di rete copre il costo di processamento dello scambio e della memorizzazione nella rete $1. MetaMask non trae profitto da questa tassa."
|
||||
},
|
||||
"swapNewQuoteIn": {
|
||||
"message": "Nuove quotazioni in $1",
|
||||
|
@ -503,9 +503,6 @@
|
||||
"done": {
|
||||
"message": "完了"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "ハードウェアウォレットをお持ちではありませんか?"
|
||||
},
|
||||
"dontShowThisAgain": {
|
||||
"message": "再度表示しない"
|
||||
},
|
||||
@ -730,9 +727,6 @@
|
||||
"message": "$1 のFaucetでEtherを得ることができます。",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "サポートを受ける。"
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "はじめる"
|
||||
},
|
||||
@ -754,9 +748,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "MetaMaskに接続するハードウェアウォレットを選択してください"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "接続に問題がありますか?"
|
||||
},
|
||||
"here": {
|
||||
"message": "こちら",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -790,22 +781,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "シードフレーズを使用してアカウントをインポート"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "アカウントのシードフレーズから復元する"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "ウォレットのインポート"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "12単語のシードフレーズを使用して既存のウォレットをインポートします"
|
||||
},
|
||||
"imported": {
|
||||
"message": "インポート済",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "情報とヘルプ"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "最初のトランザクションがネットワークに確認されました。戻るにはOKをクリックします。"
|
||||
},
|
||||
@ -1135,9 +1117,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "通貨シンボル(オプション)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Trezor又はLedgerを注文して資金をコールドストレージに保管できます"
|
||||
},
|
||||
"origin": {
|
||||
"message": "要求元"
|
||||
},
|
||||
@ -1219,9 +1198,6 @@
|
||||
"readdToken": {
|
||||
"message": "アカウントオプションのメニューで\"トークンの追加\"を選択すると、後でこのトークンを戻すことができます。"
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "接続準備はよろしいですか?"
|
||||
},
|
||||
"receive": {
|
||||
"message": "受け取る"
|
||||
},
|
||||
@ -1282,9 +1258,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "シードフレーズでアカウントを復元"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "アカウントを復元しますか?"
|
||||
},
|
||||
"restoreWalletPreferences": {
|
||||
"message": "$1 のデータバックアップが見つかりました。ウォレットの基本設定を復元しますか?",
|
||||
"description": "$1 is the date at which the data was backed up"
|
||||
@ -1355,9 +1328,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "警告:シードフレーズは絶対に公開しないでください。シードフレーズを使うと、誰でもアカウントからETHを盗み出せます。"
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "アカウント情報を復元するには、12単語で構成されたシードフレーズを入力してください。"
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "セキュリティとプライバシー"
|
||||
},
|
||||
@ -1409,9 +1379,6 @@
|
||||
"sendAmount": {
|
||||
"message": "送金額"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "ETHの送金"
|
||||
},
|
||||
"sendSpecifiedTokens": {
|
||||
"message": "$1 を送る",
|
||||
"description": "Symbol of the specified token"
|
||||
@ -1531,24 +1498,6 @@
|
||||
"statusNotConnected": {
|
||||
"message": "未接続"
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1.ハードウェア ウォレットの接続"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "コンピューターに直接ハードウェアウォレットを接続してください。"
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2.アカウントを選択"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "読取るアカウントを1つ選択します。"
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3.web3を使用してサイトに接続しましょう!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Ethereumアカウントと同じように、ハードウェアアカウントを使用します。web3サイトに接続してETH を送金し、ERC20トークンやCryptoKittiesのようなトークンを購入して保管できます。"
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "このフレーズを1Passwordのようなパスワードマネージャーに保管てください。"
|
||||
},
|
||||
@ -1682,7 +1631,7 @@
|
||||
"description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen"
|
||||
},
|
||||
"swapNetworkFeeSummary": {
|
||||
"message": "ネットワーク手数料には、スワップの結果をEthereumネットワークに保管する費用も含まれています。MetaMaskは手数料から利益を得ません。"
|
||||
"message": "ネットワーク手数料には、スワップの結果を$1ネットワークに保管する費用も含まれています。MetaMaskは手数料から利益を得ません。"
|
||||
},
|
||||
"swapNewQuoteIn": {
|
||||
"message": "見積の有効期限 $1",
|
||||
|
@ -308,9 +308,6 @@
|
||||
"done": {
|
||||
"message": "ಮುಗಿದಿದೆ"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "ಹಾರ್ಡ್ವೇರ್ ವ್ಯಾಲೆಟ್ ಅನ್ನು ಹೊಂದಿಲ್ಲವೇ?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Google Chrome ಡೌನ್ಲೋಡ್ ಮಾಡಿ"
|
||||
},
|
||||
@ -443,9 +440,6 @@
|
||||
"message": "$1 ಗಾಗಿ ಫಾಸೆಟ್ನಿಂದ ಎಥರ್ ಅನ್ನು ಪಡೆಯಿರಿ",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "ಸಹಾಯವನ್ನು ಪಡೆಯಿರಿ."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "ಪ್ರಾರಂಭಗೊಂಡಿದೆ"
|
||||
},
|
||||
@ -467,9 +461,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "MetaMask ನೊಂದಿಗೆ ಬಳಸಲು ನೀವು ಇಷ್ಟಪಡುವ ಹಾರ್ಡವೇರ್ ವ್ಯಾಲೆಟ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "ಸಂಪರ್ಕಿಸುವಲ್ಲಿ ತೊಂದರೆ ಇದೆಯೇ?"
|
||||
},
|
||||
"here": {
|
||||
"message": "ಇಲ್ಲಿ",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -499,22 +490,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "ಸೀಡ್ ಫ್ರೇಸ್ನೊಂದಿಗೆ ಖಾತೆಯನ್ನು ಆಮದು ಮಾಡಿ"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "ಸೀಡ್ ಫ್ರೇಸ್ ಖಾತೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಆಮದು ಮಾಡಿ"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "ವ್ಯಾಲೆಟ್ ಅನ್ನು ಆಮದು ಮಾಡಿ"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "12 ಪದದ ಸೀಡ್ ಫ್ರೇಸ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ನಿಮ್ಮ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ವ್ಯಾಲೆಟ್ ಅನ್ನು ಆಮದು ಮಾಡಿ"
|
||||
},
|
||||
"imported": {
|
||||
"message": "ಆಮದುಮಾಡಲಾಗಿದೆ",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "ಮಾಹಿತಿ & ಸಹಾಯ"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "ನಿಮ್ಮ ಆರಂಭಿಕ ವಹಿವಾಟನ್ನು ನೆಟ್ವರ್ಕ್ ಮೂಲಕ ಖಚಿತಪಡಿಸಲಾಗಿದೆ. ಹಿಂತಿರುಗಲು ಸರಿ ಕ್ಲಿಕ್ ಮಾಡಿ."
|
||||
},
|
||||
@ -716,9 +698,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "ಚಿಹ್ನೆ (ಐಚ್ಛಿಕ)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "ಟ್ರೆಜರ್ ಅಥವಾ ಲೆಡ್ಜರ್ ಅನ್ನು ಆರ್ಡರ್ ಮಾಡಿ ಮತ್ತು ನಿಮ್ಮ ನಿಧಿಗಳನ್ನು ಕೋಲ್ಡ್ ಸ್ಟೋರೇಜ್ನಲ್ಲಿರಿಸಿ"
|
||||
},
|
||||
"origin": {
|
||||
"message": "ಮೂಲ"
|
||||
},
|
||||
@ -778,9 +757,6 @@
|
||||
"readdToken": {
|
||||
"message": "ನಿಮ್ಮ ಖಾತೆಗಳ ಆಯ್ಕೆಗಳ ಮೆನುವಿನಲ್ಲಿ \"ಟೋಕನ್ ಸೇರಿಸು\" ಗೆ ಹೋಗುವ ಮೂಲಕ ನೀವು ಈ ಟೋಕನ್ ಅನ್ನು ಭವಿಷ್ಯದಲ್ಲಿ ಮರಳಿ ಸೇರಿಸಬಹುದು."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "ಸಂಪರ್ಕಿಸಲು ಸಿದ್ಧವೇ?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "ಇತ್ತೀಚಿನವುಗಳು"
|
||||
},
|
||||
@ -838,9 +814,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "ಸೀಡ್ ಫ್ರೇಸ್ನೊಂದಿಗೆ ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಮರುಸ್ಥಾಪಿಸಿ"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "ಖಾತೆಯನ್ನು ಮರುಸ್ಥಾಪಿಸುವುದೇ?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "ಸೀಡ್ ವರ್ಡ್ಸ್ ಬಹಿರಂಗಪಡಿಸಿ"
|
||||
},
|
||||
@ -895,9 +868,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "ಎಚ್ಚರಿಕೆ: ನಿಮ್ಮ ಬ್ಯಾಕಪ್ ಫ್ರೇಸ್ ಅನ್ನು ಎಂದಿಗೂ ಬಹಿರಗಪಡಿಸಬೇಡಿ. ಈ ಫ್ರೇಸ್ ಅನ್ನು ಹೊಂದಿರುವ ಯಾರಾದರೂ ನಿಮ್ಮ ಎಥರ್ ಅನ್ನು ಶಾಶ್ವತವಾಗಿ ತೆಗೆದುಕೊಳ್ಳಬಹುದು."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "ನಿಮ್ಮ ವಾಲ್ಟ್ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಲು ನಿಮ್ಮ ರಹಸ್ಯ ಹನ್ನೆರಡು ಪದದ ಫ್ರೇಸ್ ಅನ್ನು ಇಲ್ಲಿ ನಮೂದಿಸಿ."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "ಭದ್ರತೆ ಮತ್ತು ಗೌಪ್ಯತೆ"
|
||||
},
|
||||
@ -937,9 +907,6 @@
|
||||
"sendAmount": {
|
||||
"message": "ಮೊತ್ತವನ್ನು ಕಳುಹಿಸಿ"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "ETH ಕಳುಹಿಸಿ"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "ಟೋಕನ್ಗಳನ್ನು ಕಳುಹಿಸಿ"
|
||||
},
|
||||
@ -1012,24 +979,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "ರಾಜ್ಯದ ಲಾಗ್ಗಳು ನಿಮ್ಮ ಸಾರ್ವಜನಿಕ ಖಾತೆಯ ವಿಳಾಸಗಳು ಮತ್ತು ಕಳುಹಿಸಲಾದ ವಹಿವಾಟುಗಳನ್ನು ಹೊಂದಿರುತ್ತವೆ."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. ಹಾರ್ಡ್ವೆರ್ ವ್ಯಾಲೆಟ್ ಸಂಪರ್ಕಪಡಿಸಿ"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "ನಿಮ್ಮ ಹಾರ್ಡ್ವೇರ್ ವ್ಯಾಲೆಟ್ ಅನ್ನು ನೇರವಾಗಿ ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ಗೆ ಸಂಪರ್ಕಿಸಿ."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. ಖಾತೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "ನೀವು ವೀಕ್ಷಿಸಲು ಬಯಸುವ ಖಾತೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ. ನೀವು ಒಮ್ಮೆಗೆ ಒಂದನ್ನು ಮಾತ್ರ ಆಯ್ಕೆಮಾಡಬಹುದು."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. dApps ಮತ್ತು ಹೆಚ್ಚಿನದನ್ನು ಬಳಸಲು ಪ್ರಾರಂಭಿಸಿ!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "ಯಾವುದೇ ಎಥೆರಿಯಮ್ ಖಾತೆಯೊಂದಿಗೆ ನಿಮ್ಮ ಹಾರ್ಡ್ವೇರ್ ಖಾತೆಯನ್ನು ಬಳಸಿ. dApps ಗೆ ಲಾಗಿನ್ ಮಾಡಿ, Eth ಕಳುಹಿಸಿ, ERC20 ಟೋಕನ್ಗಳನ್ನು ಮತ್ತು ಕ್ರಿಪ್ಟೋಕಿಟ್ಟೀಸ್ನಂತಹ ಫಂಗಿಬಲ್ ಟೋಕನ್ಗಳನ್ನು ಖರೀದಿಸಿ ಮತ್ತು ಸಂಗ್ರಹಿಸಿ."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "ಈ ಫ್ರೇಸ್ ಅನ್ನು ಪಾಸ್ವರ್ಡ್ ನಿರ್ವಾಹಕದಲ್ಲಿ 1Password ರೂಪದಲ್ಲಿ ಸಂಗ್ರಹಿಸಿ."
|
||||
},
|
||||
|
@ -494,9 +494,6 @@
|
||||
"done": {
|
||||
"message": "완료"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "하드웨어 지갑이 없으신가요?"
|
||||
},
|
||||
"dontShowThisAgain": {
|
||||
"message": "이 메시지를 다시 표시하지 않음"
|
||||
},
|
||||
@ -721,9 +718,6 @@
|
||||
"message": "$1용 포시트에서 Ether 얻기",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "도움을 받으세요."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "시작하기"
|
||||
},
|
||||
@ -745,9 +739,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "MetaMask와 함께 사용할 하드웨어 지갑 선택"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "연결에 문제가 있으신가요?"
|
||||
},
|
||||
"here": {
|
||||
"message": "여기",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -781,22 +772,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "시드 구문으로 계정 가져오기"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "계정 시드 구문으로 가져오기"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "지갑 가져오기"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "12단어 시드 구문을 사용하여 지갑 가져오기"
|
||||
},
|
||||
"imported": {
|
||||
"message": "가져옴",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "정보 및 도움말"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "최초 거래를 네트워크에서 확인했습니다. 확인을 클릭하여 뒤로 돌아가세요."
|
||||
},
|
||||
@ -1003,6 +985,9 @@
|
||||
"networkName": {
|
||||
"message": "네트워크 이름"
|
||||
},
|
||||
"networkNameEthereum": {
|
||||
"message": "이더리움"
|
||||
},
|
||||
"networkSettingsChainIdDescription": {
|
||||
"message": "체인 ID는 거래 서명에 사용합니다. 네트워크에서 반환하는 체인 ID와 일치해야 합니다. 십진수나 '0x'로 시작하는 16진수를 입력할 수 있지만, 표시될 때는 십진수로 표시됩니다."
|
||||
},
|
||||
@ -1123,9 +1108,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "통화 기호(선택 사항)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Trezor나 Ledger를 주문하고 자금을 냉동 창고에 보관하세요."
|
||||
},
|
||||
"origin": {
|
||||
"message": "원본"
|
||||
},
|
||||
@ -1207,9 +1189,6 @@
|
||||
"readdToken": {
|
||||
"message": "나중에 계정 옵션 메뉴의 “토큰 추가”로 이동하면 이 토큰을 다시 추가할 수 있습니다."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "연결할 준비가 되셨나요?"
|
||||
},
|
||||
"receive": {
|
||||
"message": "받기"
|
||||
},
|
||||
@ -1270,9 +1249,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "시드 구문으로 계정 복구"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "계정을 복구하시겠습니까?"
|
||||
},
|
||||
"restoreWalletPreferences": {
|
||||
"message": "$1의 데이터 백업이 발견되었습니다. 지갑 환경설정을 복구하시겠습니까?",
|
||||
"description": "$1 is the date at which the data was backed up"
|
||||
@ -1343,9 +1319,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "경고: 백업 구문은 절대로 공개하지 마세요. 이 구문이 있는 사람은 귀하의 Ether를 영원히 소유할 수 있습니다."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "금고를 복구하려면 비밀 12단어 구문을 여기에 입력하세요."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "보안 및 개인정보 보호"
|
||||
},
|
||||
@ -1397,9 +1370,6 @@
|
||||
"sendAmount": {
|
||||
"message": "금액 보내기"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "ETH 보내기"
|
||||
},
|
||||
"sendSpecifiedTokens": {
|
||||
"message": "$1 보내기",
|
||||
"description": "Symbol of the specified token"
|
||||
@ -1519,24 +1489,6 @@
|
||||
"statusNotConnected": {
|
||||
"message": "연결되지 않음"
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. 하드웨어 지갑 연결"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "하드웨어 지갑을 컴퓨터에 바로 연결합니다."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. 계정 선택"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "확인할 계정을 선택하세요. 한 번에 하나만 선택할 수 있습니다."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. web3 사이트 등을 사용해 시작하세요!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "하드웨어 계정을 이더리움 계정에서처럼 사용하세요. web3 사이트에 연결하고, ETH를 보내고, ERC20 토큰 및 CryptoKitties 같은 대체 불가능 토큰을 구매하고 저장하세요."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "이 구문을 1Password 같은 암호 관리자에 저장하세요."
|
||||
},
|
||||
@ -1663,7 +1615,7 @@
|
||||
"description": "Provides information about the fee that metamask takes for swaps. $1 is a decimal number."
|
||||
},
|
||||
"swapNetworkFeeSummary": {
|
||||
"message": "네트워크 요금에는 스왑을 처리하고 이더리움 네트워크에 보관하는 비용이 적용됩니다. MetaMask는 이 요금을 이용해 이득을 얻지 않습니다."
|
||||
"message": "네트워크 요금에는 스왑을 처리하고 $1 네트워크에 보관하는 비용이 적용됩니다. MetaMask는 이 요금을 이용해 이득을 얻지 않습니다."
|
||||
},
|
||||
"swapNewQuoteIn": {
|
||||
"message": "$1 후에 새 견적",
|
||||
|
@ -308,9 +308,6 @@
|
||||
"done": {
|
||||
"message": "Atlikta"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Nėra aparatinės įrangos slaptažodinės?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Atsiunčiama „Google Chrome“"
|
||||
},
|
||||
@ -443,9 +440,6 @@
|
||||
"message": "Gaukite eterių iš čiaupo $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Gaukite pagalbos."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Darbo pradžia"
|
||||
},
|
||||
@ -467,9 +461,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Pasirinkite aparatinės įrangos slaptažodinę, kurią pageidaujate naudoti su „MetaTask“"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Kyla problemų susiejant?"
|
||||
},
|
||||
"here": {
|
||||
"message": "čia",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -499,22 +490,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Importuoti paskyrą su atkūrimo fraze"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Importuoti naudojant paskyros atkūrimo frazę"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Importuoti slaptažodinę"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Importuoti turimą piniginę naudojant 12 žodžių atkūrimo frazę"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Importuota",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Informacija ir žinynas"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Jūsų pradinė operacija patvirtinta tinkle. Norėdami grįžti, spustelėkite „Gerai“."
|
||||
},
|
||||
@ -716,9 +698,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Simbolis (nebūtinas)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Užsisakykite „Trezor“ arba „Ledger“ ir laikykite savo lėšas šaltojoje saugykloje"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Kilmė"
|
||||
},
|
||||
@ -778,9 +757,6 @@
|
||||
"readdToken": {
|
||||
"message": "Šį žetoną galite bet kada galite įtraukti ir vėl, tiesiog savo paskyros parinkčių meniu nueikite į „Įtraukti žetoną“."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Pasirengę prisijungti?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "Naujausi"
|
||||
},
|
||||
@ -838,9 +814,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Atkurti paskyrą naudojant atkūrimo frazę"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Atkurti paskyrą?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Atskleisti atkūrimo žodžius"
|
||||
},
|
||||
@ -895,9 +868,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "ĮSPĖJIMAS. Niekada neatskleiskite savo atsarginės frazės. Bet kas, žinantis šią frazę, gali visiems laikams pasiimti jūsų eterius."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Savo saugyklai atkurti įveskite slaptą dvylikos žodžių frazę."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Sauga ir privatumas"
|
||||
},
|
||||
@ -937,9 +907,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Siųsti sumą"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Siųsti ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Siųsti žetonus"
|
||||
},
|
||||
@ -1012,24 +979,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "Būsenos žurnaluose yra jūsų viešos paskyros adresų ir išsiųstų operacijų."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Prijunkite aparatinės įrangos slaptažodinę"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Prijunkite savo aparatinės įrangos slaptažodinę tiesiogiai prie savo kompiuterio."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Pasirinkite paskyrą"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Pasirinkite norimą peržiūrėti sąskaitą. Vienu metu galima rinktis tik vieną."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Pradėkite naudoti decentralizuotas programas ir daugiau!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Naudokitės savo aparatinės įrangos paskyra kaip „Ethereum“ paskyra. Junkitės prie decentralizuotų programų, siųskite eterius, pirkite ir laikykite ERC20 žetonus ir nekeičiamus žetonus, tokius kaip „CryptoKitties“."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Laikykite šią frazę slaptažodžių tvarkyklėje kaip 1 slaptažodį."
|
||||
},
|
||||
|
@ -308,9 +308,6 @@
|
||||
"done": {
|
||||
"message": "Pabeigts"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Nav aparatūras maka?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Lejupielādēt ar Google Chrome"
|
||||
},
|
||||
@ -439,9 +436,6 @@
|
||||
"message": "Vai vēlaties $1 iegūt Ether no krāna?",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Saņemt palīdzību."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Sākt darbu"
|
||||
},
|
||||
@ -463,9 +457,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Atlasiet aparatūras maku lietošanai ar MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Neizdodas pieslēgties?"
|
||||
},
|
||||
"here": {
|
||||
"message": "šeit",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -495,22 +486,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Importēt kontu ar atkopšanas frāzi"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Importēt, izmantojot konta atkopšanas frāzi"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Importēt maku"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Importējiet esošo maku, izmantojot 12 vārdu atkopšanas frāzi"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Importēts",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Informācija un palīdzība"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Jūsu sākotnējais darījums apstiprināts tīklā. Spiediet OK, lai atgrieztos."
|
||||
},
|
||||
@ -712,9 +694,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Simbols (neobligāti)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Pasūtiet Trezor vai Ledger un glabājiet savus līdzekļus aukstajā krātuvē"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Avots"
|
||||
},
|
||||
@ -774,9 +753,6 @@
|
||||
"readdToken": {
|
||||
"message": "Jūs varat šo marķieri iestatīt atpakaļ nākotnē, konta opciju izvēlnē atverot \"Pievienot marķieri\"."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Vai esat gatavi izveidot savienojumu?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "Nesenie"
|
||||
},
|
||||
@ -834,9 +810,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Atjaunojiet savu kontu ar atkopšanas frāzi"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Atjaunot kontu?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Parādīt atkopšanas vārdus"
|
||||
},
|
||||
@ -891,9 +864,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "BRĪDINĀJUMS! Nekādā gadījumā neizpaudiet savu rezerves frāzi. Ikviens, kam pieejama šī frāze, var uz visiem laikiem pārņemt jūsu Ether."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Ievadiet šeit slepeno divpadsmit vārdu frāzi, lai atjaunotu savu seifu."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Drošība un konfidencialitāte"
|
||||
},
|
||||
@ -933,9 +903,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Nosūtītā summa"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Sūtīt ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Nosūtīt marķierus"
|
||||
},
|
||||
@ -1008,24 +975,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "Statusa žurnāli ietver publisko kontu adreses un nosūtītos darījumus."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Pieslēgt aparatūras maku"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Savienojiet aparatūras maku tieši ar datoru."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Atlasiet kontu"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Atlasiet kontu, kuru vēlaties skatīt. Vienlaicīgi varat izvēlēties tikai vienu kontu."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Sāciet izmantot dApps un citas funkcijas!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Lietojiet aparatūras kontu līdzīgi citiem Ethereum kontiem. Pierakstieties dApps, sūtiet Eth, pērciet un glabājiet ERC20 žetonus un neatvietojamos žetonus, piemēram, CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Saglabājiet šo frāzi paroļu pārvaldniekā, piemēram, 1Password."
|
||||
},
|
||||
|
@ -305,9 +305,6 @@
|
||||
"done": {
|
||||
"message": "Selesai"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Tiada dompet perkakasan?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Muat Turun Google Chrome"
|
||||
},
|
||||
@ -433,9 +430,6 @@
|
||||
"message": "Dapatkan Ether daripada pili untuk $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Dapatkan Bantuan."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Bermula"
|
||||
},
|
||||
@ -457,9 +451,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Pilih dompet perkakasan yang anda ingin gunakan dengan MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Mengalami masalah untuk menyambungkan?"
|
||||
},
|
||||
"here": {
|
||||
"message": "di sini",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -485,22 +476,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Import Akaun dengan Frasa Benih"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Import menggunakan frasa benih akaun"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Import Dompet"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Import dompet sedia ada anda menggunakan frasa benih 12 perkataan"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Diimport",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Info & Bantuan"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Transaksi awal anda telah disahkan oleh rangkaian. Klik OK untuk kembali."
|
||||
},
|
||||
@ -693,9 +675,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Simbol (pilihan)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Pesan Trezor atau Ledger dan simpan dana anda di dalam storan sejuk"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Asal"
|
||||
},
|
||||
@ -755,9 +734,6 @@
|
||||
"readdToken": {
|
||||
"message": "Anda boleh tambah token ini kembali pada masa depan dengan pergi ke \"Tambah token\" di dalam menu pilihan akaun anda."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Bersedia Menyambung?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "Baru-baru ini"
|
||||
},
|
||||
@ -815,9 +791,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Pulihkan Akaun anda dengan Ungkapan Benih"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Pulihkan akaun?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Dedahkan Ungkapan Benih"
|
||||
},
|
||||
@ -872,9 +845,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "AMARAN: Jangan sesekali dedahkan frasa sandaran anda. Sesiapa yang memperoleh frasa ini boleh mengambil Ether anda selama-lamanya."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Masukkan ungkapan rahsia dua belas perkataan di sini untuk memulihkan kekubah anda."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Keselamatan & Privasi"
|
||||
},
|
||||
@ -914,9 +884,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Hantar Amaun"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Hantar ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Hantar Token"
|
||||
},
|
||||
@ -989,24 +956,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "Log keadaan mengandungi alamat akaun awam anda dan transaksi dihantar."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Sambungkan Dompet Perkakasan"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Sambungkan dompet perkakasan anda terus kepada komputer anda."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Pilih Akaun"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Pilih akaun yang anda mahu lihat. Anda hanya boleh memilih satu pada suatu masa."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Mula menggunakan dApps dan banyak lagi!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Gunakan akaun perkakasan anda sepertimana anda menggunakan akaun Ethereum. Log masuk ke dalam dApps, hantar Eth, beli dan simpan token ERC20 serta token Tidak Mudah Tukar seperti CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Simpan ungkapan ini di dalam pengurus kata laluan seperti 1Password."
|
||||
},
|
||||
|
@ -166,9 +166,6 @@
|
||||
"message": "geïmporteerd",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Info en hulp"
|
||||
},
|
||||
"insufficientFunds": {
|
||||
"message": "Onvoldoende fondsen."
|
||||
},
|
||||
@ -290,9 +287,6 @@
|
||||
"resetAccount": {
|
||||
"message": "Account opnieuw instellen"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Herstel vanuit back-up woorden"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Onthul back-up woorden"
|
||||
},
|
||||
@ -311,9 +305,6 @@
|
||||
"search": {
|
||||
"message": "Zoeken"
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Voer hier je geheime twaalfwoordfrase in om je kluis te herstellen."
|
||||
},
|
||||
"seedPhraseReq": {
|
||||
"message": "Back-up woorden zijn 12 woorden lang"
|
||||
},
|
||||
@ -323,9 +314,6 @@
|
||||
"send": {
|
||||
"message": "Sturen"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Verzend ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Stuur tokens"
|
||||
},
|
||||
|
@ -305,9 +305,6 @@
|
||||
"done": {
|
||||
"message": "Ferdig"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Har du ikke en hardware-lommebok?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Last ned Google Chrome "
|
||||
},
|
||||
@ -436,9 +433,6 @@
|
||||
"message": "Få Ether fra en kran for $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Få hjelp."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Kom i gang"
|
||||
},
|
||||
@ -457,9 +451,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Velg maskinvarelommeboken som du vil bruke med MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Har du problemer med å koble til?"
|
||||
},
|
||||
"here": {
|
||||
"message": "her",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -486,22 +477,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Importer en konto med den mnemoniske gjenopprettingsfrasen "
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Importer ved hjelp av kontoens mnemoniske gjenopprettingsfrase"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Importér lommebok "
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Importer din eksisterende lommebok ved å bruk en tolvords seed-frase."
|
||||
},
|
||||
"imported": {
|
||||
"message": "Importert",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Informasjon og hjelp"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Din opprinnelige transaksjon ble bekreftet av nettverket. Klikk OK for å gå tilbake."
|
||||
},
|
||||
@ -703,9 +685,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Symbol (valgfritt)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Bestill en Trezor eller Ledger og oppbevar midlene dine i kjølerom"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Opprinnelse"
|
||||
},
|
||||
@ -765,9 +744,6 @@
|
||||
"readdToken": {
|
||||
"message": "Du kan legge til dette tokenet igjen i fremtiden ved å gå til \"Legg til token\" i menyen for kontoalternativer."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Klar til å koble til?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "Nylige"
|
||||
},
|
||||
@ -825,9 +801,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Gjenopprett konto med frøfrase"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Gjennopprett konto? "
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Vis frøord"
|
||||
},
|
||||
@ -879,9 +852,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "ADVARSEL: Du må aldri avsløre gjenopprettingsfrasen din. Alle som har denne frasen kan ta fra deg Etheren din for alltid."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Skriv inn den tolv ord lange frasen her for å gjenopprette hvelvet ditt. "
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Sikkerhet og personvern"
|
||||
},
|
||||
@ -990,24 +960,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "Tilstandslogger inneholder de offentlige kontoadressene og sendte transaksjoner."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Koble til maskinvarelommebok"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Koble hardware-lommebok din direkte til datamaskinen din."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Velg en konto"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Velg den kontoen du ønsker å se. Du kan bare velge en av gangen."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Begynn å bruke dApps mer! "
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Bruk hardware-kontoen din slik du ville gjort med enhver Ethereumkonto. Logg på dApps, send Eth, kjøp og lagre ERC20-tokener og ikke-fungible tokener som CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Lagre denne frasen i en passordbehandler slik som 1Password."
|
||||
},
|
||||
|
@ -136,9 +136,6 @@
|
||||
"message": "Na-import na",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Impormasyon at Tulong"
|
||||
},
|
||||
"invalidAddress": {
|
||||
"message": "Invalid ang address"
|
||||
},
|
||||
|
@ -308,9 +308,6 @@
|
||||
"done": {
|
||||
"message": "Gotowe"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Nie masz portfela sprzętowego?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Ściągnij Google Chrome"
|
||||
},
|
||||
@ -443,9 +440,6 @@
|
||||
"message": "Zdobądź Eter ze źródła za $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Po pomoc."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Rozpocznij"
|
||||
},
|
||||
@ -467,9 +461,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Wybierz portfel sprzętowy, którego chcesz użyć z MetaMaskiem"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Problem z połączeniem?"
|
||||
},
|
||||
"here": {
|
||||
"message": "tutaj",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -499,22 +490,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Zaimportuj konto za pomocą frazy seed"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Importuj przy pomocy frazy seed konta"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Importuj portfel"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Zaimportuj istniejący portfel, wprowadzając 12 słów frazy seed"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Zaimportowane",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Info & pomoc"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Twoja transakcja została potwierdzona w sieci. Kliknij OK żeby wrócić."
|
||||
},
|
||||
@ -710,9 +692,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Symbol (opcjonalnie)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Zamów Trezor lub Ledger i trzymaj swoje środki w portfelu sprzętowym."
|
||||
},
|
||||
"origin": {
|
||||
"message": "Pochodzenie"
|
||||
},
|
||||
@ -772,9 +751,6 @@
|
||||
"readdToken": {
|
||||
"message": "Możesz później ponownie dodać ten token poprzez \"Dodaj token\" w opcjach menu swojego konta."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Gotowy na połączenie?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "Ostatnie"
|
||||
},
|
||||
@ -832,9 +808,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Przywróć konto frazą seed"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Przywrócić konto?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Pokaż słowa seed"
|
||||
},
|
||||
@ -889,9 +862,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "OSTRZEŻENIE: Nigdy nie ujawniaj swojej frazy zapasowej. Każdy, kto pozna tę frazę, może bezpowrotnie odebrać Ci kryptowalutę Ether."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Żeby otworzyć schowek, wpisz tutaj swoją frazę dwunastu słów."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Bezpieczeństwo i prywatność"
|
||||
},
|
||||
@ -931,9 +901,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Wyślij kwotę"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Wyślij ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Wyślij tokeny"
|
||||
},
|
||||
@ -1006,24 +973,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "Logi stanów zawierają Twoje publiczne adresy kont i wykonanych transakcji."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Podłącz portfel sprzętowy"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Połącz swój portfel sprzętowy z komputerem."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Wybierz konto"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Wybierz konto, które chcesz przeglądać. Możesz wybrać tylko jedno konto w danym momencie."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Zacznij używać dystrybuowanych aplikacji (dApps) i wiele więcej!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Używaj swojego konta sprzętowego tak, jak używasz jakiegokolwiek konta z Ethereum. Loguj się do dystrybuowanych aplikacji (dApps), wysyłaj Eth, kupuj i przechowaj tokeny ERC20 i niewymienne tokeny, jak np. CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Przechowuj tę frazę w menedżerze haseł, takim jak 1Password."
|
||||
},
|
||||
|
@ -172,9 +172,6 @@
|
||||
"message": "Importado",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Informação & Ajuda"
|
||||
},
|
||||
"insufficientFunds": {
|
||||
"message": "Fundos insuficientes."
|
||||
},
|
||||
@ -300,9 +297,6 @@
|
||||
"resetAccount": {
|
||||
"message": "Reinicializar Conta"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Restaurar a partir da frase seed"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Revelar Palavras Seed"
|
||||
},
|
||||
@ -321,9 +315,6 @@
|
||||
"search": {
|
||||
"message": "Procurar"
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Introduza a sua frase secreta de 12 palavras para recuperar o seu ."
|
||||
},
|
||||
"seedPhraseReq": {
|
||||
"message": "seed phrases are 12 words long"
|
||||
},
|
||||
@ -333,9 +324,6 @@
|
||||
"send": {
|
||||
"message": "Enviar"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Enviar ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Enviar Tokens"
|
||||
},
|
||||
|
@ -302,9 +302,6 @@
|
||||
"done": {
|
||||
"message": "Concluído"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Não tem uma carteira física?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Baixar Google Chrome"
|
||||
},
|
||||
@ -437,9 +434,6 @@
|
||||
"message": "Obtenha Ether em uma torneira para $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Obtenha Ajuda."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Primeiros passos"
|
||||
},
|
||||
@ -461,9 +455,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Selecione um hardware que gostaria de utilizar com o MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Está tendo dificuldade para se conectar?"
|
||||
},
|
||||
"here": {
|
||||
"message": "aqui",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -493,22 +484,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Importar uma Conta com Frase-semente"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Importe usando a seed phrase da conta"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Importar Carteira"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Importe sua carteira existente usando uma frase-semente de 12 palavras"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Importado",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Informações e ajuda"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Sua transação inicial foi confirmada pela rede. Clique em OK para voltar."
|
||||
},
|
||||
@ -704,9 +686,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Símbolo (opcional)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Peça uma Trezor ou Ledger e guarde seus fundos off-line"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Origem"
|
||||
},
|
||||
@ -766,9 +745,6 @@
|
||||
"readdToken": {
|
||||
"message": "Você pode adicionar esse token novamente no futuro acessando \"Adicionar token\" no menu de opções da sua conta."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Pronto para Conectar?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "Recentes"
|
||||
},
|
||||
@ -826,9 +802,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Restaurar sua conta com a frase semente"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Restaurar conta?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Revelar Palavras-semente"
|
||||
},
|
||||
@ -883,9 +856,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "ATENÇÃO: Nunca revele sua frase de backup a ninguém. Qualquer pessoa com essa frase pode obter seu Ether para sempre."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Digite sua frase secreta de doze palavras aqui para restaurar seu cofre."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Segurança & Privacidade"
|
||||
},
|
||||
@ -925,9 +895,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Enviar Quantia"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Enviar ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Enviar Tokens"
|
||||
},
|
||||
@ -1000,24 +967,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "Os registros de estado contêm seus endereços de conta pública e transações enviadas."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Conectar Carteira Física"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Conecte sua carteira de hardware diretamente ao seu computador."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Selecione uma Conta"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Selecione a conta que você deseja ver. Você só pode escolher uma por vez."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Comece a usar dApps e muito mais!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Use sua conta física como faria com qualquer conta de Ethereum. Faça login em dApps, envie Eth, compre e guarde tokens ERC20 e Tokens Não Fungíveis, como CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Guarde esta frase em um gerenciador de senhas como o 1Password."
|
||||
},
|
||||
|
@ -308,9 +308,6 @@
|
||||
"done": {
|
||||
"message": "Efectuat"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Nu aveți portofel hardware?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Descărcare Google Chrome"
|
||||
},
|
||||
@ -436,9 +433,6 @@
|
||||
"message": "Obțineți Ether de la un robinet pentru $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Obțineți ajutor."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Începe"
|
||||
},
|
||||
@ -457,9 +451,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Selectați un portofel hardware pe care doriți să îl folosiți cu MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Aveți probleme cu conectarea?"
|
||||
},
|
||||
"here": {
|
||||
"message": "aici",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -489,22 +480,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Importați un cont cu fraza seed"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Importare folosind fraza inițială a contului"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Importați portofel"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Importați portofelul existent folosind o frază seed de 12 cuvinte"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Importate",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Informații și ajutor"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Tranzacția inițială a fost confirmată de rețea. Clic pe OK pentru a reveni."
|
||||
},
|
||||
@ -703,9 +685,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Simbol (opțional)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Comandați Trezor sau Ledger și țineți-vă fondurile la rece"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Origine"
|
||||
},
|
||||
@ -765,9 +744,6 @@
|
||||
"readdToken": {
|
||||
"message": "Puteți adăuga din nou acest indicativ în viitor accesând „Adăugați indicativ” din meniul de opțiuni al contului dvs."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Gata de conectare?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "Recente"
|
||||
},
|
||||
@ -825,9 +801,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Restaurați-vă contul folosind fraza inițială"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Restabiliți contul?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Arată cuvintele din seed"
|
||||
},
|
||||
@ -882,9 +855,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "ATENȚIE: Nu dezvăluiți niciodată expresia dvs. de rezervă. Oricine are această expresie vă poate lua Ether-ul pentru totdeauna."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Introduceți aici expresia dvs. secretă din 12 cuvinte pentru a restabili seiful."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Securitate și confidențialitate"
|
||||
},
|
||||
@ -924,9 +894,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Suma trimisă"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Trimitere ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Trimiteți indicative"
|
||||
},
|
||||
@ -999,24 +966,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "Jurnalele de stare conțin adresele contului dvs. public și tranzacțiile trimise."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Conectați portofel hardware"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Conectați portofelul hardware direct la computer."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Selectați un cont"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Selectați contul pe care vreți să îl vizualizați. Puteți alege doar câte unul odată."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Începeți să folosiți dApps și altele!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Folosiți-vă contul hardware la fel ca pe orice cont Ethereum. Conectați-vă la dApps, trimiteți Eth, cumpărați și stocați tokenuri ERC20 și tokenuri non-fungibile precum CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Păstrați această expresie într-un program de gestionare a parolelor cum ar fi 1Password."
|
||||
},
|
||||
|
@ -494,9 +494,6 @@
|
||||
"done": {
|
||||
"message": "Выполнено"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "У вас нет аппаратного кошелька?"
|
||||
},
|
||||
"dontShowThisAgain": {
|
||||
"message": "Больше не показывать это сообщение"
|
||||
},
|
||||
@ -721,9 +718,6 @@
|
||||
"message": "Получите Ether из крана для $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Получить справку."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Начать работу"
|
||||
},
|
||||
@ -745,9 +739,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Выберите аппаратный кошелек, который вы хотите использовать с MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Проблемы с подключением?"
|
||||
},
|
||||
"here": {
|
||||
"message": "здесь",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -781,22 +772,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Импортировать счет с исходной фразой"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Импортировать с использованием исходной фразы счета"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Импортировать кошелек"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Импортируйте существующий кошелек, используя начальную фразу из 12 слов"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Импортированный",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Информация и справка"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Ваша первоначальная транзакция была подтверждена сетью. Нажмите ОК, чтобы вернуться."
|
||||
},
|
||||
@ -1126,9 +1108,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Символ валюты (необязательно)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Закажите Trezor или Ledger и храните свои средства в холодном хранилище"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Источник"
|
||||
},
|
||||
@ -1210,9 +1189,6 @@
|
||||
"readdToken": {
|
||||
"message": "Вы можете снова добавить этот токен в будущем, выбрав «Добавить токен» в меню опций вашего счета."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Готовы подключиться?"
|
||||
},
|
||||
"receive": {
|
||||
"message": "Получить"
|
||||
},
|
||||
@ -1273,9 +1249,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Восстановите свой счет с помощью исходной фразы"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Восстановить счет?"
|
||||
},
|
||||
"restoreWalletPreferences": {
|
||||
"message": "Найдена резервная копия ваших данных из $1. Хотите восстановить настройки кошелька?",
|
||||
"description": "$1 is the date at which the data was backed up"
|
||||
@ -1346,9 +1319,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "ПРЕДУПРЕЖДЕНИЕ: Никогда не разглашайте резервную фразу. Любой, у кого есть эта фраза, может забрать ваш Ether навсегда."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Введите здесь свою секретную фразу из двенадцати слов, чтобы восстановить свой сейф."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Безопасность и конфиденциальность"
|
||||
},
|
||||
@ -1400,9 +1370,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Отправить сумму"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Отправить ETH"
|
||||
},
|
||||
"sendSpecifiedTokens": {
|
||||
"message": "Отправить $1",
|
||||
"description": "Symbol of the specified token"
|
||||
@ -1522,24 +1489,6 @@
|
||||
"statusNotConnected": {
|
||||
"message": "Не подключен"
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Подключить аппаратный кошелек"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Подключите свой аппаратный кошелек напрямую к компьютеру."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Выберите счет"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Выберите желаемый счет для просмотра. Вы можете выбирать только по одному."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Начните использовать сайты web3 и другое!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Используйте свой аппаратный счет, как обычный счет Ethereum. Подключайтесь к сайтам web3, отправляйте ETH, покупайте и храните токены ERC20 и незаменяемые токены, такие как CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Сохраните эту фразу в диспетчере паролей, например в 1Password."
|
||||
},
|
||||
@ -1666,7 +1615,7 @@
|
||||
"description": "Provides information about the fee that metamask takes for swaps. $1 is a decimal number."
|
||||
},
|
||||
"swapNetworkFeeSummary": {
|
||||
"message": "Сетевая комиссия покрывает стоимость обработки вашего свопа и его хранения в сети Ethereum. MetaMask не получает прибыли от этой комиссии."
|
||||
"message": "Сетевая комиссия покрывает стоимость обработки вашего свопа и его хранения в сети $1. MetaMask не получает прибыли от этой комиссии."
|
||||
},
|
||||
"swapNewQuoteIn": {
|
||||
"message": "Новые котировки в $1",
|
||||
|
@ -302,9 +302,6 @@
|
||||
"done": {
|
||||
"message": "Hotovo"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Nemáte hardvérovú peňaženku?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Stiahnuť Google Chrome"
|
||||
},
|
||||
@ -437,9 +434,6 @@
|
||||
"message": "Získejte Ether z faucetu za $1.",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Získajte pomoc."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Začať"
|
||||
},
|
||||
@ -461,9 +455,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Vyberte hardvérovú peňaženku, ktorú chcete používať s MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Máte problémy s pripojením?"
|
||||
},
|
||||
"here": {
|
||||
"message": "zde",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -486,22 +477,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Importovať účet so seed frázou"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Importovať pomocou seed frázy účtu"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Importovať Peňaženku"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Importujte svoju existujúcu peňaženku pomocou 12-slovnej seed frázy"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Importováno",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Informace a nápověda"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Sieť potvrdila vašu iniciálnu transakciu. Ak sa chcete vrátiť späť, kliknite na OK."
|
||||
},
|
||||
@ -685,9 +667,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Symbol (voliteľné)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Objednajte si Trezor alebo Hlavnú knihu a uschovajte svoje prostriedky v sklade"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Pôvod"
|
||||
},
|
||||
@ -747,9 +726,6 @@
|
||||
"readdToken": {
|
||||
"message": "Tento token můžete v budoucnu přidat zpět s „Přidat token“ v nastavení účtu."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Pripravení na pripojenie?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "Posledné"
|
||||
},
|
||||
@ -807,9 +783,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Obnoviť účet pomocou seed frázy"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Obnovit z seed fráze"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Zobrazit slova klíčové fráze"
|
||||
},
|
||||
@ -858,9 +831,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "UPOZORNENIE: Nikdy nezverejňujte svoju backup frázu. Každý, kto má túto frázu, môže navždy vziať váš Ether."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Zadejte svých 12 slov tajné fráze k obnovení trezoru."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Bezpečnosť a súkromie"
|
||||
},
|
||||
@ -900,9 +870,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Poslať sumu"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Odeslat ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Odeslat tokeny"
|
||||
},
|
||||
@ -975,24 +942,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "Stavové protokoly obsahují vaše veřejné adresy účtů a odeslané transakce."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Pripojiť hardvérovú peňaženku"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Pripojte hardvérovú peňaženku priamo k počítaču."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Vybrať účet"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Vyberte účet, ktorý chcete zobraziť. Naraz si môžete vybrať iba jeden."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Začať používať dApps a ďalšie!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Použite svoj hardvérový účet, ako keby ste použili akýkoľvek účet Ethereum. Prihláste sa do Dapps, pošlite Eth, nakupujte a ukladajte tokeny ERC20 a nezameniteľné tokeny ako CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Túto frázu uložte do správcu hesiel ako 1Password."
|
||||
},
|
||||
|
@ -308,9 +308,6 @@
|
||||
"done": {
|
||||
"message": "Končano"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Nimate strojne denarnice?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Prenesi Google Chrome"
|
||||
},
|
||||
@ -461,9 +458,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Izberite vrsto strojne denarnice"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Imate težave?"
|
||||
},
|
||||
"here": {
|
||||
"message": "tukaj",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -490,22 +484,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Uvoz računa z geslom seed phrase"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Uvozi z seed phase"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Uvozi denarnico"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Uvozite svojo obstoječo denarnico s pomočjo 12-besednega gesla seed phrase"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Uvoženo",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Info & Pomoč"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Vaša prvotna transakcija je bila potrjena. Pritisnite V redu in se vrnite nazaj."
|
||||
},
|
||||
@ -701,9 +686,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Simbol (nezahtevano)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Naročite Trezor ali Ledger i n zavarujte svoje premoženje s strojno denarnico"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Izvor"
|
||||
},
|
||||
@ -763,9 +745,6 @@
|
||||
"readdToken": {
|
||||
"message": "Ta žeton lahko dodate tudi kasneje z uporabo gumba “Dodaj žeton” v možnostih vašega računa."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Pripravljeni na povezovanje?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "Nedavno"
|
||||
},
|
||||
@ -823,9 +802,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Obnovi račun z seed phrase"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Obnovim račun?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Razkrij seed words"
|
||||
},
|
||||
@ -877,9 +853,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "OPOZORILO: Nikoli nikomur ne razkrijte varnostne kopije. Kdorkoli lahko tem geslom vedno prevzame vaš Ether."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Vnesite vaših dvanajst besed za obnovitev vaših računov."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Varnost in zasebnost"
|
||||
},
|
||||
@ -919,9 +892,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Pošlji znesek"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Pošlji ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Pošlji žetone"
|
||||
},
|
||||
@ -994,24 +964,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "State vsebujejo vaš javni nasklov in zgodovino transakcij."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Povežite strojno denarnico"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Z računalnikom povežite strojno denarnico."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Izberite račun"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Izberite račun, ki ga želute uporabiti. Trenutno lahko izberete le en račun na enkrat."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Začnite uporabljati dApps in več!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Uporabite strojno denarnico kot katerikoli drug Ethereum račun. Prijavite se v dApps, pošljite Ether in ERC20 žetone in žetone kot CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "To geslo shranite v upravitelja gesel, kot je 1Password."
|
||||
},
|
||||
|
@ -305,9 +305,6 @@
|
||||
"done": {
|
||||
"message": "Gotovo"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Nemate hardverski novčanik?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Preuzmi Google Chrome"
|
||||
},
|
||||
@ -440,9 +437,6 @@
|
||||
"message": "Preuzmite Ether sa slavine za $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Potražite pomoć."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Започнимо"
|
||||
},
|
||||
@ -464,9 +458,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Izaberite hardverski novčanik koji biste voleli da koristite sa MetaMask-om"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Da li imate problem sa povezivanjem?"
|
||||
},
|
||||
"here": {
|
||||
"message": "ovde",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -496,22 +487,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Uvezi račun sa frazom početnih vrednosti"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Uvezite koristeći šifru za oporavak naloga (seed phrase)"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Uvezite novčanik"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Uvezite vaš postojeći novčanik koristeći seed frazu sa 12 reči"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Увезени",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Info i pomoć"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Vašu početnu transakciju je potvrdila mreža. Kliknite OK da biste se vratili."
|
||||
},
|
||||
@ -707,9 +689,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Simbol (opciono)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Naručite Trezor ili Ledger i čuvajte svoja sredstva u hladnom skladištu"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Извор"
|
||||
},
|
||||
@ -769,9 +748,6 @@
|
||||
"readdToken": {
|
||||
"message": "U budućnosti možete vratiti ovaj token tako što ćete otvoriti „Dodaj token“ u meniju opcija vašeg naloga."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Spremni za povezivanje?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "Skorašnje"
|
||||
},
|
||||
@ -829,9 +805,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Povratite svoj nalog uz pomoć seed fraze"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Obnoviti nalog?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Otkrivanje početnih reči"
|
||||
},
|
||||
@ -886,9 +859,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "UPOZORENJE: Nikada ne otkrivajte svoju rezervnu frazu. Svako sa ovom frazom može zauvek da Vam uzme Vaš Ether."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Unesite ovde svoj tajni izraz od dvanaest reči kako biste povratili svoj trezor."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Bezbednost i privatnost"
|
||||
},
|
||||
@ -928,9 +898,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Pošaljite iznos"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Pošalji ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Pošalji tokene"
|
||||
},
|
||||
@ -1003,24 +970,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "Dnevnici stanja sadrže adrese vaših javnih naloga i poslatih transakcija."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Poveži hardverski novčanik"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Povežite svoj hardverski novčanik direktno sa kompjuterom."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Izaberite nalog"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Izaberite nalog koji želite da pogledatee. Možete izabrati samo po jedan nalog."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Počnite da koristite dApps i još mnogo toga!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Koristite nalog na vašem hardveru isto onako kako biste koristili bilo koji Ethereum nalog. Prijavite se na dApps, šaljite Eth, kupujte i skladištite ERC20 tokene i nezamenljive tokene poput CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Čuvajte ovaj izraz u menadžeru šifri kao što je 1Password."
|
||||
},
|
||||
|
@ -302,9 +302,6 @@
|
||||
"done": {
|
||||
"message": "Klart"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Har du inte en hårdvaruplånbok?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Ladda ner Google Chrome"
|
||||
},
|
||||
@ -433,9 +430,6 @@
|
||||
"message": "Få Ether från en kran för $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Få hjälp."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Komma igång"
|
||||
},
|
||||
@ -457,9 +451,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Välj en hårdvaruplånbok som du vill använda med MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Har du problem att ansluta?"
|
||||
},
|
||||
"here": {
|
||||
"message": "här",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -489,22 +480,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Importera konto med"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Importera med kontots seedfras"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Importera plånbok"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Importera din existerande plånbok med hjälp av en 12 ord lång seedfras"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Importerade",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Info och hjälp"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Din initiala transaktion har bekräftats av nätverket. Klicka på OK för att gå tillbaka."
|
||||
},
|
||||
@ -700,9 +682,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Symbol (frivillig)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Beställ en Trezor eller Ledger och håll dina medel på is"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Ursprung"
|
||||
},
|
||||
@ -762,9 +741,6 @@
|
||||
"readdToken": {
|
||||
"message": "Du kan lägga till denna token i framtiden genom att välja \"Lägg till token\" i kontots alternativmeny."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Redo att ansluta?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "Senaste"
|
||||
},
|
||||
@ -822,9 +798,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Återställ ditt konto med seedphrase"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Återställ konto?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Visa seed-ord"
|
||||
},
|
||||
@ -879,9 +852,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "VARNING: avslöja aldrig din backup-fras. Någon som känner till denna fras kan ta dina Ether för alltid."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Ange din tolv ord långa hemliga fras här för att återställa ditt valv."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Säkerhet och integritet"
|
||||
},
|
||||
@ -921,9 +891,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Skicka belopp"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Skicka ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Skicka tokens"
|
||||
},
|
||||
@ -996,24 +963,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "Statusloggar innehåller dina publika kontoadresser och skickade transaktioner."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Anslut hårdvaruplånbok"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Koppla din hårdvaruplånbok direkt till din dator"
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Välj ett konto"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Välj det konto du vill visa. Du kan bara välja ett åt gången."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Börja använda dApps och mer!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Använd ditt hårdvarukonto som du skulle använda andra Ethereum-konton. Logga in i dAppar, skicka ETH, köp och förvara ERC20-tokens och Non-Fungible tokens som CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Lagra denna fras i en lösenordshanterare såsom 1Password."
|
||||
},
|
||||
|
@ -302,9 +302,6 @@
|
||||
"done": {
|
||||
"message": "Imekamilika"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Huna waleti ya programu maunzi?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Pakua Google chrome"
|
||||
},
|
||||
@ -433,9 +430,6 @@
|
||||
"message": "Pata Ether kutoka kwenye mfereji $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Pata Msaada"
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Anza"
|
||||
},
|
||||
@ -457,9 +451,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Chagua waleti ya programu maunzi ambayo ungependa kutumia kwenye MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Je, unapata shida kuunganisha?"
|
||||
},
|
||||
"here": {
|
||||
"message": "hapa",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -486,22 +477,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Hamisha Akaunti kwa kutumia Kirai Kianzio"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Hamisha kwa kutumia kirai kianzio cha akaunti"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Hamisha Waleti"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Hamisha waleti iliyopo kwa kutumia kirai kianzio cha maneno 12"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Zilizoingizwa",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Taarifa & Msaada"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Muamala wako wa awali ulithibitishwa na mtandao. Bofya SWA ili urudi nyuma."
|
||||
},
|
||||
@ -694,9 +676,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Ishara (hiari)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Agiza Trezor au Leja na weka fedha zako kwenye ifadhi ya baridi"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Asili"
|
||||
},
|
||||
@ -756,9 +735,6 @@
|
||||
"readdToken": {
|
||||
"message": "Unaweza kuongeza tena kianzio hiki hapo baadaye kwa kwenda kwenye \"Ongeza kianzio\" kwenye machaguo yako ya menyu ya akaunti."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Uko tayari Kuunganisha?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "Za hivi karibuni"
|
||||
},
|
||||
@ -816,9 +792,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Rejesha Akaunti yako kwa kutumia Kirai Kianzio."
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Rejesha akaunti?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Onyesha Maneno ya Kianzio"
|
||||
},
|
||||
@ -873,9 +846,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "ONYO: Kamwe usiweke wazi kirai chako cha hifadhi mbadala. Mtu yeyote mwenye kirai hiki anaweza kuchukua Ether yako daima."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Ingiza hapa kirai chako cha siri cha maneno kumi na mawili ili urejeshe vault yako."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Ulinzi na Faragha"
|
||||
},
|
||||
@ -915,9 +885,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Tuma Kiasi"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Tuma ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Tuma Vianzio"
|
||||
},
|
||||
@ -990,24 +957,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "Kumbukumbu za hali zinajumusiha anwani zako za akaunti za umma na miamala iliyotumwa."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Unganisha Programu Maunzi ya Waleti"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Unganisha programu maunzi yako ya waleti moja kwa moja kwenye kompyuta yako."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Chagua Akaunto"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Chagua akaunti unayotaka kutazama. Unaweza kuchagua moja tu kwa wakati mmoja."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Anza kutumia dApps na zaidi!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Tumia akaunti yako ya programu maunzi kama ambavyo ungetumia kwa akaunti ya Ethereum. Ingia kwenye dApps, tuma Eth, nunua na hifadhi vianzio vya ERC20 na Vianzio visivyobadilishika kama vile CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Hifadhi kirai hiki kwenye kidhibiti nenosiri kama vile 1Password."
|
||||
},
|
||||
|
@ -226,9 +226,6 @@
|
||||
"message": "இறக்குமதியானது",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "தகவல் மற்றும் உதவி"
|
||||
},
|
||||
"insufficientFunds": {
|
||||
"message": "போதுமான பணம் இல்லை."
|
||||
},
|
||||
@ -402,9 +399,6 @@
|
||||
"restore": {
|
||||
"message": "மீட்டமை"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "விதை வாக்கியத்திலிருந்து மீட்கவும்"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "விதை வார்த்தைகள் வெளிப்படுத்த"
|
||||
},
|
||||
@ -426,9 +420,6 @@
|
||||
"searchTokens": {
|
||||
"message": "தேடல் டோக்கன்ஸ்"
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "உங்கள் பெட்டகத்தை மீட்டெடுப்பதற்காக இங்கே உங்கள் ரகசிய பன்னிரண்டு வார்த்தை சொற்றொடரை உள்ளிடவும்."
|
||||
},
|
||||
"seedPhraseReq": {
|
||||
"message": "விதை வாக்கியங்கள் 12 வார்த்தைகள் நீண்டவை"
|
||||
},
|
||||
@ -438,9 +429,6 @@
|
||||
"send": {
|
||||
"message": "அனுப்பு"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "ETH ஐ அனுப்பு"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "டோக்கன்களை அனுப்பவும்"
|
||||
},
|
||||
|
@ -148,9 +148,6 @@
|
||||
"done": {
|
||||
"message": "เสร็จสิ้น"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "ไม่มี Hardware Wallet ใช่ไหม"
|
||||
},
|
||||
"downloadSecretBackup": {
|
||||
"message": "ดาวน์โหลด Phrase แบ็คอัพลับนี้และเก็บรักษาไว้ให้ปลอดภัยในฮาร์ดดิสก์หรืออุปกรณ์เก็บข้อมูลภายนอกที่มีการเข้ารหัส"
|
||||
},
|
||||
@ -244,9 +241,6 @@
|
||||
"message": "นำเข้าเรียบร้อย",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "ข้อมูลและความช่วยเหลือ"
|
||||
},
|
||||
"insufficientFunds": {
|
||||
"message": "เงินทุนไม่เพียงพอ"
|
||||
},
|
||||
@ -399,9 +393,6 @@
|
||||
"resetAccount": {
|
||||
"message": "รีเซ็ตบัญชี"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "กู้คืนจากกลุ่มคำชีด"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "เปิดเผยกลุ่มคำชีด"
|
||||
},
|
||||
@ -420,9 +411,6 @@
|
||||
"search": {
|
||||
"message": "ค้นหา"
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "ป้อนกลุ่มคำสิบสองคำเพื่อกู้คืนตู้เซฟของคุณ"
|
||||
},
|
||||
"seedPhraseReq": {
|
||||
"message": "กลุ่มคำชีดมีความยาว 12 คำ"
|
||||
},
|
||||
@ -441,9 +429,6 @@
|
||||
"sendAmount": {
|
||||
"message": "ส่งจำนวนเงินนี้"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "ส่งอีเธอร์"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "ส่งโทเค็น"
|
||||
},
|
||||
@ -477,15 +462,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "บันทึกของสถานะประกอบด้วยแอดแดรสสาธารณะและธุรกรรมที่ส่ง"
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. เชื่อมต่อ Hardware Wallet"
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. เลือกบัญชี"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "ใช้บัญชีฮาร์ดแวร์ของคุณเช่นเดียวกับการใช้กับบัญชี Ethereum ล็อกอินเข้าสู่ dApp ส่ง Eth ซื้อและเก็บโทเคน ERC20 และโทเคนแบบ Non-Fungible เช่น CryptoKitties"
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "เก็บ Phrase นี้ในตัวจัดการรหัสผ่าน เช่น 1Password"
|
||||
},
|
||||
|
@ -494,9 +494,6 @@
|
||||
"done": {
|
||||
"message": "Tapos na"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Wala ka bang hardware wallet?"
|
||||
},
|
||||
"dontShowThisAgain": {
|
||||
"message": "Huwag itong ipaklita ulit"
|
||||
},
|
||||
@ -721,9 +718,6 @@
|
||||
"message": "Kunin ang Ether mula sa isang faucet sa halagang $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Humingi ng Tulong."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Magsimula"
|
||||
},
|
||||
@ -745,9 +739,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Pumili ng hardware wallet na gusto mong gamitin kasama ng MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Nagkakaproblema ka ba sa pagkonekta?"
|
||||
},
|
||||
"here": {
|
||||
"message": "dito",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -781,22 +772,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Mag-import ng account gamit ang seed phrase"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "I-import gamit ang seed phrase ng account"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "I-import ang wallet"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "I-import ang iyong kasalukuyang wallet gamit ang 12 salita na seed phrase"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Na-import",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Impormasyon at Tulong"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Nakumpirma na ng network ang iyong inisyal na transaksyon. I-click ang OK para bumalik."
|
||||
},
|
||||
@ -1123,9 +1105,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Simbolo ng Currency (opsyonal)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Mag-order ng Trezor o Ledger at itabi ang mga pondo mo sa malamig na storage"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Pinagmulan"
|
||||
},
|
||||
@ -1207,9 +1186,6 @@
|
||||
"readdToken": {
|
||||
"message": "Puwede mong ibalik ang token na ito sa hinaharap sa pamamagitan ng pagpunta sa “Magdagdag ng token” sa menu ng mga opsyon sa iyong account."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Handa ka na bang kumonekta?"
|
||||
},
|
||||
"receive": {
|
||||
"message": "Tumanggap"
|
||||
},
|
||||
@ -1270,9 +1246,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "I-restore ang iyong Account gamit ang Seed Phrase"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "I-restore ang account?"
|
||||
},
|
||||
"restoreWalletPreferences": {
|
||||
"message": "Nakita ang backup ng iyong data mula sa $1. Gusto mo bang i-restore ang mga kagustuhan mo sa wallet?",
|
||||
"description": "$1 is the date at which the data was backed up"
|
||||
@ -1343,9 +1316,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "BABALA: Huwag kailanman ipaalam ang iyong phrase sa pag-back up. Ang sinumang may phrase na ito ay maaaring angkinin ang iyong Ether."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Ilagay ang iyong labindalawang lihim na phrase dito para ma-restore ang iyong vault."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Seguridad at Pagkapribado"
|
||||
},
|
||||
@ -1397,9 +1367,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Halaga ng Ipapadala"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Magpadala ng ETH"
|
||||
},
|
||||
"sendSpecifiedTokens": {
|
||||
"message": "Magpadala ng $1",
|
||||
"description": "Symbol of the specified token"
|
||||
@ -1519,24 +1486,6 @@
|
||||
"statusNotConnected": {
|
||||
"message": "Hindi nakakonekta"
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Ikonekta ang Hardware Wallet"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Direktang ikonekta ang wallet ng iyong hardware sa computer mo."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Pumili ng Account"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Piliin ang account na gusto mong tingnan. Puwede ka lang pumili ng isa sa isang pagkakataon."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Simulang gamitin ang mga web3 site at higit pa!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Gamitin ang account ng iyong hardware sa parehong paraan ng paggamit mo sa Ethereum account. Kumonekta sa mga web3 site, magpadala ng ETH, bumili at mag-store ng mga ERC20 token at non-fungible token gaya ng CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "I-store ang phrase na ito sa isang password manager gaya ng 1Password."
|
||||
},
|
||||
@ -1663,7 +1612,7 @@
|
||||
"description": "Provides information about the fee that metamask takes for swaps. $1 is a decimal number."
|
||||
},
|
||||
"swapNetworkFeeSummary": {
|
||||
"message": "Kasama sa bayarin sa network ang gastusin sa pagproseso ng iyong pag-swap at pag-store nito sa Ethereum network. Hindi kumikita ang MetaMask mula sa bayaring ito."
|
||||
"message": "Kasama sa bayarin sa network ang gastusin sa pagproseso ng iyong pag-swap at pag-store nito sa $1 network. Hindi kumikita ang MetaMask mula sa bayaring ito."
|
||||
},
|
||||
"swapNewQuoteIn": {
|
||||
"message": "Mga bagong quote sa $1",
|
||||
|
@ -196,9 +196,6 @@
|
||||
"message": "Alındı",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Bilgi ve yardım"
|
||||
},
|
||||
"insufficientFunds": {
|
||||
"message": "Yetersiz kaynak."
|
||||
},
|
||||
@ -342,9 +339,6 @@
|
||||
"resetAccount": {
|
||||
"message": "Hesabı sıfıla"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Kaynak ifadeden geri getir. Restore from seed phrase"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Kaynak kelimelerini göster"
|
||||
},
|
||||
@ -366,9 +360,6 @@
|
||||
"searchTokens": {
|
||||
"message": "Jeton ara"
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Kasanızı geri getirmek için gizli 12 kelimelik ifadenizi giriniz."
|
||||
},
|
||||
"seedPhraseReq": {
|
||||
"message": "Kaynak ifadeleri 12 kelimedir."
|
||||
},
|
||||
@ -378,9 +369,6 @@
|
||||
"send": {
|
||||
"message": "Gönder"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "ETH Gönder"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Jeton Gönder"
|
||||
},
|
||||
|
@ -308,9 +308,6 @@
|
||||
"done": {
|
||||
"message": "Готово"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Не маєте апаратного гаманця?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "Завантажити Гугл Хром"
|
||||
},
|
||||
@ -443,9 +440,6 @@
|
||||
"message": "Отримайте Ether з крану за $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Отримати допомогу."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Почати"
|
||||
},
|
||||
@ -467,9 +461,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Оберіть апаратний гаманець, який ви хочете використовувати з MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Проблеми при підключенні?"
|
||||
},
|
||||
"here": {
|
||||
"message": "тут",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -499,22 +490,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Імпортувати обліковий запис з початковою фразою"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Імпортувати, використовуючи початкову фразу облікового запису"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Імпортувати гаманець"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Імпортуйте ваш гаманець, що існує, використовуючи початкову фразу з 12 слів"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Імпортовано",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Інформація та допомога"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Ваша початкова транзакція підтверджена мережею. Натисніть ОК для повернення."
|
||||
},
|
||||
@ -716,9 +698,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Символ (не обов'язково)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Замовте Trezor або Ledger та зберігайте ваші кошти у холодному сховищі"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Походження"
|
||||
},
|
||||
@ -778,9 +757,6 @@
|
||||
"readdToken": {
|
||||
"message": "Ви можете знову додати цей токен у меню облікового запису у розділі “Додати токен”. "
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Готові підключитися?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "Останні"
|
||||
},
|
||||
@ -838,9 +814,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Відновіть ваш обліковий запис за допомогою seed-фрази"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Відновити обліковий запис?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "Показати мнемонічні слова"
|
||||
},
|
||||
@ -895,9 +868,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "ЗАСТЕРЕЖЕННЯ: Ніколи не розголошуйте вашу резервну фразу. Будь-хто з цією фразою зможе забрати ваш Ether назавжди."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Введіть секретну фразу з дванадцяти слів, щоб відновити своє сховище."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Безпека й конфіденційність"
|
||||
},
|
||||
@ -937,9 +907,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Надіслати суму"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Надіслати ETH"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "Надіслати токени"
|
||||
},
|
||||
@ -1012,24 +979,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "Логи стану містять ваші публічні адреси облікового запису та надіслані транзакції."
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Приєднайте апаратний гаманець"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Під'єднайте ваш апаратний гаманець безпосередньо до вашого комп'ютера."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Оберіть обліковий запис"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Оберіть обліковий запис, який бажаєте переглянути. Ви можете вибрати лише один."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Почніть користуватись dApps та більше!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Використовуйте ваш апаратний обліковий запис, як би ви використовували будь-який обліковий запис Ethereum. Увійдіть в dApps, надсилайте Eth, купуйте та зберігайте токени ERC20 та токени, які не є взаємозамінними, такі як CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Зберігайте цю фразу у менеджері паролів, як 1Password."
|
||||
},
|
||||
|
@ -494,9 +494,6 @@
|
||||
"done": {
|
||||
"message": "Hoàn tất"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "Bạn không có ví cứng?"
|
||||
},
|
||||
"dontShowThisAgain": {
|
||||
"message": "Không hiển thị lại"
|
||||
},
|
||||
@ -721,9 +718,6 @@
|
||||
"message": "Nhận Ether từ một vòi dành cho $1",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "Nhận trợ giúp."
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "Bắt đầu"
|
||||
},
|
||||
@ -745,9 +739,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "Chọn một ví cứng mà bạn muốn sử dụng với MetaMask"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "Bạn đang gặp sự cố với việc kết nối?"
|
||||
},
|
||||
"here": {
|
||||
"message": "tại đây",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -781,22 +772,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "Nhập một tài khoản bằng cụm mật khẩu gốc"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "Nhập bằng cách sử dụng cụm mật khẩu gốc của tài khoản"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "Nhập ví"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "Nhập ví hiện có của bạn bằng cụm mật khẩu gốc gồm 12 từ"
|
||||
},
|
||||
"imported": {
|
||||
"message": "Đã nhập",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "Thông tin và trợ giúp"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "Mạng đã xác nhận giao dịch ban đầu của bạn. Nhấp vào OK để quay lại."
|
||||
},
|
||||
@ -1126,9 +1108,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Ký hiệu tiền tệ (không bắt buộc)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "Đặt mua một ví Trezor hoặc Ledger và giữ tiền của bạn trong ví lưu trữ lạnh"
|
||||
},
|
||||
"origin": {
|
||||
"message": "Nguồn gốc"
|
||||
},
|
||||
@ -1210,9 +1189,6 @@
|
||||
"readdToken": {
|
||||
"message": "Bạn có thể thêm lại token này trong tương lai bằng cách chuyển đến mục “Thêm token” trong trình đơn tùy chọn tài khoản."
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "Bạn đã sẵn sàng kết nối chưa?"
|
||||
},
|
||||
"receive": {
|
||||
"message": "Nhận"
|
||||
},
|
||||
@ -1273,9 +1249,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "Khôi phục tài khoản của bạn bằng cụm mật khẩu gốc"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "Khôi phục tài khoản?"
|
||||
},
|
||||
"restoreWalletPreferences": {
|
||||
"message": "Đã tìm thấy bản sao lưu dữ liệu của bạn từ $1. Bạn có muốn khôi phục các tùy chọn ưu tiên trong ví của mình không?",
|
||||
"description": "$1 is the date at which the data was backed up"
|
||||
@ -1346,9 +1319,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "CẢNH BÁO: Tuyệt đối không để lộ cụm mật khẩu sao lưu của bạn. Bất kỳ ai có cụm mật khẩu này cũng có thể lấy Ether của bạn vĩnh viễn."
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "Nhập cụm mật khẩu bí mật gồm 12 từ vào đây để khôi phục két của bạn."
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "Bảo mật và quyền riêng tư"
|
||||
},
|
||||
@ -1400,9 +1370,6 @@
|
||||
"sendAmount": {
|
||||
"message": "Gửi khoản tiền"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "Gửi ETH"
|
||||
},
|
||||
"sendSpecifiedTokens": {
|
||||
"message": "Gửi $1",
|
||||
"description": "Symbol of the specified token"
|
||||
@ -1522,24 +1489,6 @@
|
||||
"statusNotConnected": {
|
||||
"message": "Chưa kết nối"
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. Kết nối với ví cứng"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "Kết nối ví cứng của bạn trực tiếp với máy tính."
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. Chọn một tài khoản"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "Chọn tài khoản bạn muốn xem. Bạn chỉ chọn được một tài khoản tại một thời điểm."
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. Bắt đầu sử dụng các trang web trên web3 và nhiều hơn thế!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "Sử dụng cùng một tài khoản ví cứng mà bạn sẽ dùng với mọi tài khoản Ethereum của mình. Kết nối với các trang web trên web3, gửi ETH, mua và lưu trữ token ERC20 cũng như token không thể thay thế, chẳng hạn như CryptoKitties."
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "Lưu cụm mật khẩu này trong trình quản lý mật khẩu chẳng hạn như 1Password."
|
||||
},
|
||||
@ -1666,7 +1615,7 @@
|
||||
"description": "Provides information about the fee that metamask takes for swaps. $1 is a decimal number."
|
||||
},
|
||||
"swapNetworkFeeSummary": {
|
||||
"message": "Phí mạng dùng để chi trả chi phí xử lý giao dịch hoán đổi của bạn và lưu trữ giao dịch đó trên mạng Ethereum. MetaMask không thu lợi từ khoản phí này."
|
||||
"message": "Phí mạng dùng để chi trả chi phí xử lý giao dịch hoán đổi của bạn và lưu trữ giao dịch đó trên mạng $1. MetaMask không thu lợi từ khoản phí này."
|
||||
},
|
||||
"swapNewQuoteIn": {
|
||||
"message": "Báo giá mới sẽ có sau $1",
|
||||
|
@ -503,9 +503,6 @@
|
||||
"done": {
|
||||
"message": "完成"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "没有硬件钱包?"
|
||||
},
|
||||
"dontShowThisAgain": {
|
||||
"message": "不再显示"
|
||||
},
|
||||
@ -730,9 +727,6 @@
|
||||
"message": "从水管获取 $1 网络的 Ether",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "获取帮助。"
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "开始使用"
|
||||
},
|
||||
@ -754,9 +748,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "选择希望用于 MetaMask 的硬件钱包"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "连接出现问题?"
|
||||
},
|
||||
"here": {
|
||||
"message": "这里",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -790,22 +781,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "使用账户助记词导入账户"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "使用账户助记词导入"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "导入钱包"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "使用 12 个单词的账户助记词导入您现有的钱包账户。"
|
||||
},
|
||||
"imported": {
|
||||
"message": "已导入",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "信息 & 帮助"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "您的初始交易已通过网络确认。请点击“确定”返回。"
|
||||
},
|
||||
@ -1135,9 +1117,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "符号(选填)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "订购 Trezor 或 Ledger ,将个人资金进行冷存储"
|
||||
},
|
||||
"origin": {
|
||||
"message": "来源"
|
||||
},
|
||||
@ -1219,9 +1198,6 @@
|
||||
"readdToken": {
|
||||
"message": "之后您还可以通过帐户选项菜单中的“添加代币”来添加此代币。"
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "是否准备连接?"
|
||||
},
|
||||
"receive": {
|
||||
"message": "接收"
|
||||
},
|
||||
@ -1282,9 +1258,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "使用账户助记词恢复您的账户"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "从助记词还原"
|
||||
},
|
||||
"restoreWalletPreferences": {
|
||||
"message": "已找到于 $1 的数据备份。您想恢复您的钱包设置吗?",
|
||||
"description": "$1 is the date at which the data was backed up"
|
||||
@ -1355,9 +1328,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "警告:切勿向他人透露您的账户助记词。任何人一旦持有该账户助记词,即可控制您的 Ether。"
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "输入 12 个单词组成的账户助记词恢复您的账户。"
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "安全与隐私"
|
||||
},
|
||||
@ -1409,9 +1379,6 @@
|
||||
"sendAmount": {
|
||||
"message": "发送数额"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "发送 ETH"
|
||||
},
|
||||
"sendSpecifiedTokens": {
|
||||
"message": "发送 $1",
|
||||
"description": "Symbol of the specified token"
|
||||
@ -1531,24 +1498,6 @@
|
||||
"statusNotConnected": {
|
||||
"message": "未连接"
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. 连接硬件钱包"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "将您的硬件钱包直接连接到电脑上。"
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. 选择账户"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "请选择您想查看的账户。每次只能选择一个账户。"
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. 开始使用 web3 站点和更多功能!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "使用您的硬件钱包,操作与以太坊账户制作相同。登录 dApps,发送 ETH ,购买和保存 ERC20 代币和诸如 CryptoKitties 等不可替代代币。"
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "通过如 1Password 等密码管理工具保存该账户助记词。"
|
||||
},
|
||||
@ -1682,7 +1631,7 @@
|
||||
"description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen"
|
||||
},
|
||||
"swapNetworkFeeSummary": {
|
||||
"message": "网络手续费包括处理您的兑换和在以太坊(Ethereum)网络上存储的成本。MetaMask 不从这笔费用中获利。"
|
||||
"message": "网络手续费包括处理您的兑换和在以太坊($1)网络上存储的成本。MetaMask 不从这笔费用中获利。"
|
||||
},
|
||||
"swapNewQuoteIn": {
|
||||
"message": "$1 后更新报价",
|
||||
|
@ -317,9 +317,6 @@
|
||||
"done": {
|
||||
"message": "完成"
|
||||
},
|
||||
"dontHaveAHardwareWallet": {
|
||||
"message": "還沒有硬體錢包?"
|
||||
},
|
||||
"downloadGoogleChrome": {
|
||||
"message": "下載 Google Chrome 瀏覽器"
|
||||
},
|
||||
@ -452,9 +449,6 @@
|
||||
"message": "從水管取得 $1 以太幣。",
|
||||
"description": "Displays network name for Ether faucet"
|
||||
},
|
||||
"getHelp": {
|
||||
"message": "取得協助"
|
||||
},
|
||||
"getStarted": {
|
||||
"message": "開始使用"
|
||||
},
|
||||
@ -476,9 +470,6 @@
|
||||
"hardwareWalletsMsg": {
|
||||
"message": "選擇要連線到 MetaMask 的硬體錢包"
|
||||
},
|
||||
"havingTroubleConnecting": {
|
||||
"message": "無法正確連線?"
|
||||
},
|
||||
"here": {
|
||||
"message": "這裡",
|
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
|
||||
@ -508,22 +499,13 @@
|
||||
"importAccountSeedPhrase": {
|
||||
"message": "利用助憶詞還原"
|
||||
},
|
||||
"importUsingSeed": {
|
||||
"message": "利用助憶詞匯入帳戶"
|
||||
},
|
||||
"importWallet": {
|
||||
"message": "匯入錢包"
|
||||
},
|
||||
"importYourExisting": {
|
||||
"message": "使用 12 字的助記詞來匯入你現有的錢包"
|
||||
},
|
||||
"imported": {
|
||||
"message": "已匯入私鑰",
|
||||
"description": "status showing that an account has been fully loaded into the keyring"
|
||||
},
|
||||
"infoHelp": {
|
||||
"message": "說明 & 資訊"
|
||||
},
|
||||
"initialTransactionConfirmed": {
|
||||
"message": "交易已確認"
|
||||
},
|
||||
@ -716,9 +698,6 @@
|
||||
"optionalCurrencySymbol": {
|
||||
"message": "Symbol (可選)"
|
||||
},
|
||||
"orderOneHere": {
|
||||
"message": "訂購 Trezor 或 Ledger 讓資產保存於硬體裝置。"
|
||||
},
|
||||
"origin": {
|
||||
"message": "來源"
|
||||
},
|
||||
@ -775,9 +754,6 @@
|
||||
"readdToken": {
|
||||
"message": "未來可以隨時重新加入此代幣"
|
||||
},
|
||||
"readyToConnect": {
|
||||
"message": "準備連線?"
|
||||
},
|
||||
"recents": {
|
||||
"message": "最近"
|
||||
},
|
||||
@ -832,9 +808,6 @@
|
||||
"restoreAccountWithSeed": {
|
||||
"message": "透過助憶詞還原您的帳戶"
|
||||
},
|
||||
"restoreFromSeed": {
|
||||
"message": "還原帳戶?"
|
||||
},
|
||||
"revealSeedWords": {
|
||||
"message": "顯示助憶詞"
|
||||
},
|
||||
@ -889,9 +862,6 @@
|
||||
"secretBackupPhraseWarning": {
|
||||
"message": "警告: 絕對不要洩漏您的助憶詞。任何人只要得知助憶詞代表他可以竊取您所有的以太幣和代幣。"
|
||||
},
|
||||
"secretPhrase": {
|
||||
"message": "輸入您的12個助憶詞以回復金庫"
|
||||
},
|
||||
"securityAndPrivacy": {
|
||||
"message": "安全&隱私"
|
||||
},
|
||||
@ -925,9 +895,6 @@
|
||||
"sendAmount": {
|
||||
"message": "發送數量"
|
||||
},
|
||||
"sendETH": {
|
||||
"message": "發送以太幣"
|
||||
},
|
||||
"sendTokens": {
|
||||
"message": "發送代幣"
|
||||
},
|
||||
@ -1000,24 +967,6 @@
|
||||
"stateLogsDescription": {
|
||||
"message": "狀態紀錄包含您的公開帳戶位址和已傳送的交易資訊"
|
||||
},
|
||||
"step1HardwareWallet": {
|
||||
"message": "1. 連線硬體錢包"
|
||||
},
|
||||
"step1HardwareWalletMsg": {
|
||||
"message": "將您的硬體錢包連接到電腦。"
|
||||
},
|
||||
"step2HardwareWallet": {
|
||||
"message": "2. 選擇帳戶"
|
||||
},
|
||||
"step2HardwareWalletMsg": {
|
||||
"message": "選擇想要檢視的帳戶。一次只能選擇一個帳戶。"
|
||||
},
|
||||
"step3HardwareWallet": {
|
||||
"message": "3. 開始使用!"
|
||||
},
|
||||
"step3HardwareWalletMsg": {
|
||||
"message": "使用您硬體錢包中的帳戶,與去中心化應用服務交易以太幣、ERC20代幣、或迷戀貓等數位資產。"
|
||||
},
|
||||
"storePhrase": {
|
||||
"message": "您可以用密碼管理系統例如 1Password 等軟體儲存助憶詞。"
|
||||
},
|
||||
|
15
app/background.html
Normal file
15
app/background.html
Normal file
@ -0,0 +1,15 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<script src="./globalthis.js" type="text/javascript" charset="utf-8"></script>
|
||||
<script src="./initSentry.js" type="text/javascript" charset="utf-8"></script>
|
||||
<script src="./lockdown.js" type="text/javascript" charset="utf-8"></script>
|
||||
<script src="./runLockdown.js" type="text/javascript" charset="utf-8"></script>
|
||||
<script src="./bg-libs.js" type="text/javascript" charset="utf-8"></script>
|
||||
<script src="./background.js" type="text/javascript" charset="utf-8"></script>
|
||||
<script src="./chromereload.js" type="text/javascript" charset="utf-8"></script>
|
||||
</body>
|
||||
</html>
|
@ -1,67 +0,0 @@
|
||||
<svg width="302" height="98" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<filter x="-2.4%" y="-15.6%" width="104.8%" height="143.8%" filterUnits="objectBoundingBox" id="a">
|
||||
<feOffset dy="2" in="SourceAlpha" result="shadowOffsetOuter1"/>
|
||||
<feGaussianBlur stdDeviation="2" in="shadowOffsetOuter1" result="shadowBlurOuter1"/>
|
||||
<feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"/>
|
||||
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.123075181 0" in="shadowBlurOuter1"/>
|
||||
</filter>
|
||||
<path id="b" d="M0 0h294v32H0z"/>
|
||||
</defs>
|
||||
<g fill="none" fill-rule="evenodd">
|
||||
<g transform="translate(25 45)">
|
||||
<path stroke="#AFDFFF" fill="#FFF" d="M.5.5h250v26H.5z"/>
|
||||
<text font-family="Roboto-Regular, Roboto" font-size="12" fill="#ABB4BB">
|
||||
<tspan x="31" y="19">3</tspan>
|
||||
</text>
|
||||
<text font-family="Roboto-Regular, Roboto" font-size="12" fill="#ABB4BB">
|
||||
<tspan x="50" y="19">OXz3…T3A4</tspan>
|
||||
</text>
|
||||
<text font-family="Roboto-Regular, Roboto" font-size="12" fill="#ABB4BB">
|
||||
<tspan x="142" y="19">0.020000 ETH</tspan>
|
||||
</text>
|
||||
<circle stroke="#AFDFFF" stroke-width="2" cx="16.5" cy="14.5" r="6.5"/>
|
||||
</g>
|
||||
<g transform="translate(25)">
|
||||
<path stroke="#AFDFFF" fill="#FFF" d="M.5.5h250v26H.5z"/>
|
||||
<text font-family="Roboto-Regular, Roboto" font-size="12" fill="#ABB4BB">
|
||||
<tspan x="31" y="19">1</tspan>
|
||||
</text>
|
||||
<text font-family="Roboto-Regular, Roboto" font-size="12" fill="#ABB4BB">
|
||||
<tspan x="50" y="19">OXa4…s0a2</tspan>
|
||||
</text>
|
||||
<text font-family="Roboto-Regular, Roboto" font-size="12" fill="#ABB4BB">
|
||||
<tspan x="142" y="19">0.01500 ETH</tspan>
|
||||
</text>
|
||||
<circle stroke="#AFDFFF" stroke-width="2" cx="16.5" cy="14.5" r="6.5"/>
|
||||
</g>
|
||||
<g transform="translate(25 71)">
|
||||
<path stroke="#AFDFFF" fill="#FFF" d="M.5.5h250v26H.5z"/>
|
||||
<text font-family="Roboto-Regular, Roboto" font-size="12" fill="#ABB4BB">
|
||||
<tspan x="31" y="18">4</tspan>
|
||||
</text>
|
||||
<text font-family="Roboto-Regular, Roboto" font-size="12" fill="#ABB4BB">
|
||||
<tspan x="50" y="18">OXd2…D0V4</tspan>
|
||||
</text>
|
||||
<text font-family="Roboto-Regular, Roboto" font-size="12" fill="#ABB4BB">
|
||||
<tspan x="142" y="18">0.030000 ETH</tspan>
|
||||
</text>
|
||||
<circle stroke="#AFDFFF" stroke-width="2" cx="16.5" cy="13.5" r="6.5"/>
|
||||
</g>
|
||||
<g transform="translate(4 21)">
|
||||
<use fill="#000" filter="url(#a)" xlink:href="#b"/>
|
||||
<path stroke="#3098DC" stroke-linejoin="square" fill="#D9F0FF" d="M.5.5h293v31H.5z"/>
|
||||
<text font-family="Roboto-Regular, Roboto" font-size="16" fill="#4A4A4A">
|
||||
<tspan x="36" y="22">2</tspan>
|
||||
</text>
|
||||
<text font-family="Roboto-Regular, Roboto" font-size="16" fill="#4A4A4A">
|
||||
<tspan x="58" y="22">OXe7…B0a1</tspan>
|
||||
</text>
|
||||
<text font-family="Roboto-Regular, Roboto" font-size="16" fill="#4A4A4A">
|
||||
<tspan x="166" y="22">0.041000 ETH</tspan>
|
||||
</text>
|
||||
<circle stroke="#3098DC" stroke-width="2" cx="19.5" cy="16.5" r="7.5"/>
|
||||
<path stroke="#3098DC" stroke-width="2" d="M15 17l2.55 2.55L24 13.904"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 3.6 KiB |
@ -1,26 +0,0 @@
|
||||
<svg height="85" width="108" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" fill-rule="evenodd">
|
||||
<path d="M97.202 84H10.798A3.807 3.807 0 017 80.185V9.815C7 7.708 8.7 6 10.798 6h86.404A3.806 3.806 0 01101 9.815v70.37C101 82.292 99.3 84 97.202 84" fill="#fefefe"/>
|
||||
<path d="M97.202 84H10.798A3.807 3.807 0 017 80.185V9.815C7 7.708 8.7 6 10.798 6h86.404A3.806 3.806 0 01101 9.815v70.37C101 82.292 99.3 84 97.202 84z" stroke="#3098dc"/>
|
||||
<path d="M105.73 84H2.27C1.568 84 1 83.45 1 82.771V78.23C1 77.549 1.568 77 2.27 77h103.46c.7 0 1.27.55 1.27 1.229v4.542c0 .68-.57 1.229-1.27 1.229" fill="#d9f0ff"/>
|
||||
<path d="M105.73 84H2.27C1.568 84 1 83.45 1 82.771V78.23C1 77.549 1.568 77 2.27 77h103.46c.7 0 1.27.55 1.27 1.229v4.542c0 .68-.57 1.229-1.27 1.229z" stroke="#3098dc"/>
|
||||
<path d="M11 72h86V11H11z" fill="#fefefe"/>
|
||||
<g stroke="#3098dc" transform="translate(1 1)">
|
||||
<path d="M10 71h86V10H10z"/>
|
||||
<rect fill="#fff" height="53" rx="2" width="77" x="14.5" y="14.5"/>
|
||||
<path d="M14.5 21.5h77V16a1.5 1.5 0 00-1.5-1.5H16a1.5 1.5 0 00-1.5 1.5z" fill="#fff"/>
|
||||
<g fill="#d9f0ff">
|
||||
<circle cx="18" cy="18" r="1"/>
|
||||
<circle cx="22.769" cy="18" r="1"/>
|
||||
<circle cx="27.538" cy="18" r="1"/>
|
||||
</g>
|
||||
</g>
|
||||
<path d="M93.299 30.058h-4.652a.401.401 0 01-.227-.07l-2.752-1.87-1.21-.973-6.718 1.814a.403.403 0 01-.49-.268l-1.947-6.568a.38.38 0 01.003-.228l2.07-6.327-1.243-1.43a.386.386 0 01.071-.572l.222-.157-.62-.555a.39.39 0 01-.13-.303.39.39 0 01.152-.293l.35-.27-.57-.426a.39.39 0 01-.157-.313.391.391 0 01.162-.312l.418-.305-.994-4.685a.379.379 0 01.013-.205l1.516-4.474c.034-.101.109-.185.206-.23a.406.406 0 01.31-.013l9.816 3.6h8.15l9.815-3.6a.405.405 0 01.31.013.392.392 0 01.207.23l1.516 4.476a.383.383 0 01.013.202l-.984 4.688.412.305a.386.386 0 01.002.622l-.57.427.349.27a.387.387 0 01.022.595l-.62.556.222.158a.387.387 0 01.07.57l-1.24 1.43 2.08 6.326a.382.382 0 01.004.23l-1.962 6.569a.403.403 0 01-.488.267l-6.718-1.814-1.247.998-2.716 1.845a.402.402 0 01-.226.07z" fill="#fff" stroke="#3098dc"/>
|
||||
<g fill="#3098dc">
|
||||
<path d="M92.024 25.677h-2.367l-.41.318-.157 1.914h3.5l-.156-1.914zM94.59 18.125l-.98 2.099c-.079.17.079.354.258.3l3.337-1.001a.217.217 0 00.028-.405l-2.358-1.098a.215.215 0 00-.286.105M87.07 18.02l-2.355 1.097a.218.218 0 00.03.406l3.336 1.001a.217.217 0 00.257-.3l-.982-2.1a.216.216 0 00-.286-.104"/>
|
||||
</g>
|
||||
<text fill="#3098dc" font-family="RobotoMono-Bold, Roboto Mono" font-size="10" font-weight="bold" transform="translate(1 1)">
|
||||
<tspan x="24.495" y="43">LOGIN WITH </tspan><tspan x="30.496" y="56">METAMASK</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
3
app/images/support.svg
Normal file
3
app/images/support.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg width="19" height="14" viewBox="0 0 19 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M14 5C14 2.25 11.0625 0 7.5 0C3.90625 0 1 2.25 1 5C1 6.09375 1.4375 7.0625 2.1875 7.875C1.75 8.84375 1.0625 9.59375 1.0625 9.59375C1 9.65625 0.96875 9.78125 1 9.875C1.0625 9.96875 1.125 10 1.25 10C2.375 10 3.3125 9.625 4 9.21875C5 9.71875 6.21875 10 7.5 10C11.0625 10 14 7.78125 14 5ZM17.8125 11.875C18.5312 11.0625 19 10.0938 19 9C19 6.9375 17.3125 5.125 14.9375 4.375C14.9688 4.59375 15 4.8125 15 5C15 8.3125 11.625 11 7.5 11C7.15625 11 6.8125 11 6.5 10.9688C7.46875 12.75 9.78125 14 12.5 14C13.7812 14 14.9688 13.7188 15.9688 13.2188C16.6562 13.625 17.5938 14 18.75 14C18.8438 14 18.9375 13.9688 18.9688 13.875C19 13.7812 19 13.6562 18.9062 13.5938C18.9062 13.5938 18.2188 12.8438 17.8125 11.875Z" fill="white"/>
|
||||
</svg>
|
After Width: | Height: | Size: 827 B |
116
app/images/videos/recovery-onboarding/subtitles-en.vtt
Normal file
116
app/images/videos/recovery-onboarding/subtitles-en.vtt
Normal file
@ -0,0 +1,116 @@
|
||||
WEBVTT
|
||||
|
||||
1
|
||||
00:00:00.780 --> 00:00:04.580
|
||||
MetaMask is a new way to connect
|
||||
to sites and applications.
|
||||
|
||||
2
|
||||
00:00:04.580 --> 00:00:08.860
|
||||
On traditional websites, a central database
|
||||
or bank is responsible for controlling and
|
||||
|
||||
3
|
||||
00:00:08.860 --> 00:00:10.179
|
||||
recovering your accounts.
|
||||
|
||||
4
|
||||
00:00:10.179 --> 00:00:15.050
|
||||
But on MetaMask, all of the power belongs
|
||||
to the holder of a master key.
|
||||
|
||||
5
|
||||
00:00:15.050 --> 00:00:18.460
|
||||
Whoever holds the key, controls the accounts.
|
||||
|
||||
6
|
||||
00:00:18.460 --> 00:00:21.110
|
||||
Your secret recovery phrase
|
||||
is your "master key".
|
||||
|
||||
7
|
||||
00:00:21.110 --> 00:00:26.070
|
||||
It's a series of 12 words that are generated
|
||||
when you first set up MetaMask, which allow
|
||||
|
||||
8
|
||||
00:00:26.070 --> 00:00:30.120
|
||||
you to recover your wallet and funds if you
|
||||
ever lose access.
|
||||
|
||||
9
|
||||
00:00:30.120 --> 00:00:33.451
|
||||
It's important that you secure
|
||||
your wallet by keeping your
|
||||
|
||||
10
|
||||
00:00:33.451 --> 00:00:37.510
|
||||
secret recovery phrase
|
||||
very safe, and very secret.
|
||||
|
||||
11
|
||||
00:00:37.510 --> 00:00:41.429
|
||||
If anyone gets access to it, they will have
|
||||
the "master key" to your wallet and can
|
||||
|
||||
12
|
||||
00:00:41.429 --> 00:00:45.190
|
||||
freely access and take all of your funds.
|
||||
|
||||
13
|
||||
00:00:45.190 --> 00:00:50.109
|
||||
To secure your MetaMask wallet you'll want
|
||||
to safely save your secret recovery phrase.
|
||||
|
||||
14
|
||||
00:00:50.109 --> 00:00:54.930
|
||||
You can write it down, hide it somewhere,
|
||||
put it in a safe deposit box
|
||||
|
||||
15
|
||||
00:00:54.930 --> 00:00:57.729
|
||||
or use a secure password manager.
|
||||
|
||||
16
|
||||
00:00:57.729 --> 00:01:01.050
|
||||
Some users even engrave their
|
||||
phrase onto a metal plate!
|
||||
|
||||
17
|
||||
00:01:01.050 --> 00:01:04.440
|
||||
Nobody, not even the team
|
||||
at MetaMask, can help you
|
||||
|
||||
18
|
||||
00:01:04.440 --> 00:01:07.820
|
||||
recover your wallet if you lose
|
||||
your secret recovery phrase.
|
||||
|
||||
19
|
||||
00:01:07.820 --> 00:01:12.072
|
||||
If you haven't written down your secret recovery
|
||||
phrase and stored it somewhere safe,
|
||||
|
||||
20
|
||||
00:01:12.072 --> 00:01:15.492
|
||||
do it now. We'll wait.
|
||||
|
||||
21
|
||||
00:01:15.500 --> 00:01:20.780
|
||||
And remember, never share your secret recovery
|
||||
phrase with anyone: not even us.
|
||||
|
||||
22
|
||||
00:01:20.780 --> 00:01:24.910
|
||||
If anyone ever asks you for it,
|
||||
they're trying to scam you.
|
||||
|
||||
23
|
||||
00:01:24.910 --> 00:01:26.250
|
||||
That's it!
|
||||
|
||||
24
|
||||
00:01:26.250 --> 00:01:31.020
|
||||
Now you know what a secret recovery phrase
|
||||
is and how to keep your wallet safe and secure.
|
||||
|
BIN
app/images/videos/recovery-onboarding/video.webm
Normal file
BIN
app/images/videos/recovery-onboarding/video.webm
Normal file
Binary file not shown.
@ -1,14 +1,7 @@
|
||||
{
|
||||
"author": "https://metamask.io",
|
||||
"background": {
|
||||
"scripts": [
|
||||
"globalthis.js",
|
||||
"initSentry.js",
|
||||
"lockdown.js",
|
||||
"runLockdown.js",
|
||||
"bg-libs.js",
|
||||
"background.js"
|
||||
],
|
||||
"page": "background.html",
|
||||
"persistent": true
|
||||
},
|
||||
"browser_action": {
|
||||
|
@ -1,6 +1,6 @@
|
||||
import assert from 'assert';
|
||||
import ethUtil from 'ethereumjs-util';
|
||||
import accountImporter from '../../../app/scripts/account-import-strategies';
|
||||
import { stripHexPrefix } from 'ethereumjs-util';
|
||||
import accountImporter from '.';
|
||||
|
||||
describe('Account Import Strategies', function () {
|
||||
const privkey =
|
||||
@ -13,7 +13,7 @@ describe('Account Import Strategies', function () {
|
||||
const importPrivKey = await accountImporter.importAccount('Private Key', [
|
||||
privkey,
|
||||
]);
|
||||
assert.equal(importPrivKey, ethUtil.stripHexPrefix(privkey));
|
||||
assert.equal(importPrivKey, stripHexPrefix(privkey));
|
||||
});
|
||||
|
||||
it('throws an error for empty string private key', async function () {
|
@ -1,7 +1,12 @@
|
||||
import log from 'loglevel';
|
||||
import Wallet from 'ethereumjs-wallet';
|
||||
import importers from 'ethereumjs-wallet/thirdparty';
|
||||
import ethUtil from 'ethereumjs-util';
|
||||
import {
|
||||
toBuffer,
|
||||
isValidPrivate,
|
||||
bufferToHex,
|
||||
stripHexPrefix,
|
||||
} from 'ethereumjs-util';
|
||||
import { addHexPrefix } from '../lib/util';
|
||||
|
||||
const accountImporter = {
|
||||
@ -22,13 +27,13 @@ const accountImporter = {
|
||||
}
|
||||
|
||||
const prefixed = addHexPrefix(privateKey);
|
||||
const buffer = ethUtil.toBuffer(prefixed);
|
||||
const buffer = toBuffer(prefixed);
|
||||
|
||||
if (!ethUtil.isValidPrivate(buffer)) {
|
||||
if (!isValidPrivate(buffer)) {
|
||||
throw new Error('Cannot import invalid private key.');
|
||||
}
|
||||
|
||||
const stripped = ethUtil.stripHexPrefix(prefixed);
|
||||
const stripped = stripHexPrefix(prefixed);
|
||||
return stripped;
|
||||
},
|
||||
'JSON File': (input, password) => {
|
||||
@ -47,7 +52,7 @@ const accountImporter = {
|
||||
|
||||
function walletToPrivateKey(wallet) {
|
||||
const privateKeyBuffer = wallet.getPrivateKey();
|
||||
return ethUtil.bufferToHex(privateKeyBuffer);
|
||||
return bufferToHex(privateKeyBuffer);
|
||||
}
|
||||
|
||||
export default accountImporter;
|
||||
|
@ -1,12 +1,6 @@
|
||||
/**
|
||||
* @file The entry point for the web extension singleton process.
|
||||
*/
|
||||
// these need to run before anything else
|
||||
/* eslint-disable import/first,import/order */
|
||||
import setupFetchDebugging from './lib/setupFetchDebugging';
|
||||
/* eslint-enable import/order */
|
||||
|
||||
setupFetchDebugging();
|
||||
|
||||
// polyfills
|
||||
import 'abortcontroller-polyfill/dist/polyfill-patch-fetch';
|
||||
@ -70,21 +64,7 @@ if (inTest || process.env.METAMASK_DEBUG) {
|
||||
initialize().catch(log.error);
|
||||
|
||||
/**
|
||||
* An object representing a transaction, in whatever state it is in.
|
||||
* @typedef TransactionMeta
|
||||
*
|
||||
* @property {number} id - An internally unique tx identifier.
|
||||
* @property {number} time - Time the tx was first suggested, in unix epoch time (ms).
|
||||
* @property {string} status - The current transaction status (unapproved, signed, submitted, dropped, failed, rejected), as defined in `tx-state-manager.js`.
|
||||
* @property {string} metamaskNetworkId - The transaction's network ID, used for EIP-155 compliance.
|
||||
* @property {boolean} loadingDefaults - TODO: Document
|
||||
* @property {Object} txParams - The tx params as passed to the network provider.
|
||||
* @property {Object[]} history - A history of mutations to this TransactionMeta object.
|
||||
* @property {string} origin - A string representing the interface that suggested the transaction.
|
||||
* @property {Object} nonceDetails - A metadata object containing information used to derive the suggested nonce, useful for debugging nonce issues.
|
||||
* @property {string} rawTx - A hex string of the final signed transaction, ready to submit to the network.
|
||||
* @property {string} hash - A hex string of the transaction hash, used to identify the transaction on the network.
|
||||
* @property {number} submittedTime - The time the transaction was submitted to the network, in Unix epoch time (ms).
|
||||
* @typedef {import('../../shared/constants/transaction').TransactionMeta} TransactionMeta
|
||||
*/
|
||||
|
||||
/**
|
||||
|
@ -1,7 +1,7 @@
|
||||
import assert from 'assert';
|
||||
import sinon from 'sinon';
|
||||
import CachedBalancesController from '../../../../app/scripts/controllers/cached-balances';
|
||||
import { KOVAN_CHAIN_ID } from '../../../../shared/constants/network';
|
||||
import { KOVAN_CHAIN_ID } from '../../../shared/constants/network';
|
||||
import CachedBalancesController from './cached-balances';
|
||||
|
||||
describe('CachedBalancesController', function () {
|
||||
describe('updateCachedBalances', function () {
|
@ -4,10 +4,10 @@ import { ObservableStore } from '@metamask/obs-store';
|
||||
import contracts from '@metamask/contract-metadata';
|
||||
import BigNumber from 'bignumber.js';
|
||||
|
||||
import DetectTokensController from '../../../../app/scripts/controllers/detect-tokens';
|
||||
import NetworkController from '../../../../app/scripts/controllers/network/network';
|
||||
import PreferencesController from '../../../../app/scripts/controllers/preferences';
|
||||
import { MAINNET, ROPSTEN } from '../../../../shared/constants/network';
|
||||
import { MAINNET, ROPSTEN } from '../../../shared/constants/network';
|
||||
import DetectTokensController from './detect-tokens';
|
||||
import NetworkController from './network';
|
||||
import PreferencesController from './preferences';
|
||||
|
||||
describe('DetectTokensController', function () {
|
||||
const sandbox = sinon.createSandbox();
|
@ -1,5 +1,5 @@
|
||||
import punycode from 'punycode/punycode';
|
||||
import ethUtil from 'ethereumjs-util';
|
||||
import { toChecksumAddress } from 'ethereumjs-util';
|
||||
import { ObservableStore } from '@metamask/obs-store';
|
||||
import log from 'loglevel';
|
||||
import { CHAIN_ID_TO_NETWORK_ID_MAP } from '../../../../shared/constants/network';
|
||||
@ -43,7 +43,7 @@ export default class EnsController {
|
||||
}
|
||||
|
||||
reverseResolveAddress(address) {
|
||||
return this._reverseResolveAddress(ethUtil.toChecksumAddress(address));
|
||||
return this._reverseResolveAddress(toChecksumAddress(address));
|
||||
}
|
||||
|
||||
async _reverseResolveAddress(address) {
|
||||
@ -79,7 +79,7 @@ export default class EnsController {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
if (ethUtil.toChecksumAddress(registeredAddress) !== address) {
|
||||
if (toChecksumAddress(registeredAddress) !== address) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import assert from 'assert';
|
||||
import sinon from 'sinon';
|
||||
import EnsController from '../../../../app/scripts/controllers/ens';
|
||||
import EnsController from '.';
|
||||
|
||||
const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
|
||||
const ZERO_X_ERROR_ADDRESS = '0x';
|
||||
@ -79,7 +79,7 @@ describe('EnsController', function () {
|
||||
const ens = new EnsController({
|
||||
ens: {
|
||||
reverse: sinon.stub().withArgs(address).returns('peaksignal.eth'),
|
||||
lookup: sinon.stub().withArgs('peaksignal.eth').returns('0xfoo'),
|
||||
lookup: sinon.stub().withArgs('peaksignal.eth').returns('0x00'),
|
||||
},
|
||||
onNetworkDidChange,
|
||||
getCurrentChainId,
|
@ -1,32 +1,48 @@
|
||||
import { ObservableStore } from '@metamask/obs-store';
|
||||
import log from 'loglevel';
|
||||
import BN from 'bn.js';
|
||||
import createId from '../lib/random-id';
|
||||
import createId from '../../../shared/modules/random-id';
|
||||
import { bnToHex } from '../lib/util';
|
||||
import getFetchWithTimeout from '../../../shared/modules/fetch-with-timeout';
|
||||
|
||||
import {
|
||||
TRANSACTION_CATEGORIES,
|
||||
TRANSACTION_TYPES,
|
||||
TRANSACTION_STATUSES,
|
||||
} from '../../../shared/constants/transaction';
|
||||
import {
|
||||
CHAIN_ID_TO_NETWORK_ID_MAP,
|
||||
CHAIN_ID_TO_TYPE_MAP,
|
||||
GOERLI,
|
||||
GOERLI_CHAIN_ID,
|
||||
KOVAN,
|
||||
KOVAN_CHAIN_ID,
|
||||
MAINNET,
|
||||
MAINNET_CHAIN_ID,
|
||||
RINKEBY,
|
||||
RINKEBY_CHAIN_ID,
|
||||
ROPSTEN,
|
||||
ROPSTEN_CHAIN_ID,
|
||||
} from '../../../shared/constants/network';
|
||||
import { NETWORK_EVENTS } from './network';
|
||||
|
||||
const fetchWithTimeout = getFetchWithTimeout(30000);
|
||||
|
||||
/**
|
||||
* @typedef {import('../../../shared/constants/transaction').TransactionMeta} TransactionMeta
|
||||
*/
|
||||
|
||||
/**
|
||||
* A transaction object in the format returned by the Etherscan API.
|
||||
*
|
||||
* Note that this is not an exhaustive type definiton; only the properties we use are defined
|
||||
*
|
||||
* @typedef {Object} EtherscanTransaction
|
||||
* @property {string} blockNumber - The number of the block this transaction was found in, in decimal
|
||||
* @property {string} from - The hex-prefixed address of the sender
|
||||
* @property {string} gas - The gas limit, in decimal WEI
|
||||
* @property {string} gasPrice - The gas price, in decimal WEI
|
||||
* @property {string} hash - The hex-prefixed transaction hash
|
||||
* @property {string} isError - Whether the transaction was confirmed or failed (0 for confirmed, 1 for failed)
|
||||
* @property {string} nonce - The transaction nonce, in decimal
|
||||
* @property {string} timeStamp - The timestamp for the transaction, in seconds
|
||||
* @property {string} to - The hex-prefixed address of the recipient
|
||||
* @property {string} value - The amount of ETH sent in this transaction, in decimal WEI
|
||||
*/
|
||||
|
||||
/**
|
||||
* This controller is responsible for retrieving incoming transactions. Etherscan is polled once every block to check
|
||||
* for new incoming transactions for the current selected account on the current network
|
||||
@ -44,35 +60,37 @@ const etherscanSupportedNetworks = [
|
||||
|
||||
export default class IncomingTransactionsController {
|
||||
constructor(opts = {}) {
|
||||
const { blockTracker, networkController, preferencesController } = opts;
|
||||
const {
|
||||
blockTracker,
|
||||
onNetworkDidChange,
|
||||
getCurrentChainId,
|
||||
preferencesController,
|
||||
} = opts;
|
||||
this.blockTracker = blockTracker;
|
||||
this.networkController = networkController;
|
||||
this.getCurrentChainId = getCurrentChainId;
|
||||
this.preferencesController = preferencesController;
|
||||
|
||||
this._onLatestBlock = async (newBlockNumberHex) => {
|
||||
const selectedAddress = this.preferencesController.getSelectedAddress();
|
||||
const newBlockNumberDec = parseInt(newBlockNumberHex, 16);
|
||||
await this._update({
|
||||
address: selectedAddress,
|
||||
newBlockNumberDec,
|
||||
});
|
||||
await this._update(selectedAddress, newBlockNumberDec);
|
||||
};
|
||||
|
||||
const initState = {
|
||||
incomingTransactions: {},
|
||||
incomingTxLastFetchedBlocksByNetwork: {
|
||||
[GOERLI]: null,
|
||||
[KOVAN]: null,
|
||||
[MAINNET]: null,
|
||||
[RINKEBY]: null,
|
||||
[ROPSTEN]: null,
|
||||
incomingTxLastFetchedBlockByChainId: {
|
||||
[GOERLI_CHAIN_ID]: null,
|
||||
[KOVAN_CHAIN_ID]: null,
|
||||
[MAINNET_CHAIN_ID]: null,
|
||||
[RINKEBY_CHAIN_ID]: null,
|
||||
[ROPSTEN_CHAIN_ID]: null,
|
||||
},
|
||||
...opts.initState,
|
||||
};
|
||||
this.store = new ObservableStore(initState);
|
||||
|
||||
this.preferencesController.store.subscribe(
|
||||
pairwise((prevState, currState) => {
|
||||
previousValueComparator((prevState, currState) => {
|
||||
const {
|
||||
featureFlags: {
|
||||
showIncomingTransactions: prevShowIncomingTransactions,
|
||||
@ -94,29 +112,24 @@ export default class IncomingTransactionsController {
|
||||
}
|
||||
|
||||
this.start();
|
||||
}),
|
||||
}, this.preferencesController.store.getState()),
|
||||
);
|
||||
|
||||
this.preferencesController.store.subscribe(
|
||||
pairwise(async (prevState, currState) => {
|
||||
previousValueComparator(async (prevState, currState) => {
|
||||
const { selectedAddress: prevSelectedAddress } = prevState;
|
||||
const { selectedAddress: currSelectedAddress } = currState;
|
||||
|
||||
if (currSelectedAddress === prevSelectedAddress) {
|
||||
return;
|
||||
}
|
||||
|
||||
await this._update({
|
||||
address: currSelectedAddress,
|
||||
});
|
||||
}),
|
||||
await this._update(currSelectedAddress);
|
||||
}, this.preferencesController.store.getState()),
|
||||
);
|
||||
|
||||
this.networkController.on(NETWORK_EVENTS.NETWORK_DID_CHANGE, async () => {
|
||||
onNetworkDidChange(async () => {
|
||||
const address = this.preferencesController.getSelectedAddress();
|
||||
await this._update({
|
||||
address,
|
||||
});
|
||||
await this._update(address);
|
||||
});
|
||||
}
|
||||
|
||||
@ -136,85 +149,79 @@ export default class IncomingTransactionsController {
|
||||
this.blockTracker.removeListener('latest', this._onLatestBlock);
|
||||
}
|
||||
|
||||
async _update({ address, newBlockNumberDec } = {}) {
|
||||
const chainId = this.networkController.getCurrentChainId();
|
||||
if (!etherscanSupportedNetworks.includes(chainId)) {
|
||||
/**
|
||||
* Determines the correct block number to begin looking for new transactions
|
||||
* from, fetches the transactions and then saves them and the next block
|
||||
* number to begin fetching from in state. Block numbers and transactions are
|
||||
* stored per chainId.
|
||||
* @private
|
||||
* @param {string} address - address to lookup transactions for
|
||||
* @param {number} [newBlockNumberDec] - block number to begin fetching from
|
||||
* @returns {void}
|
||||
*/
|
||||
async _update(address, newBlockNumberDec) {
|
||||
const chainId = this.getCurrentChainId();
|
||||
if (!etherscanSupportedNetworks.includes(chainId) || !address) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
const dataForUpdate = await this._getDataForUpdate({
|
||||
address,
|
||||
chainId,
|
||||
newBlockNumberDec,
|
||||
});
|
||||
this._updateStateWithNewTxData(dataForUpdate);
|
||||
} catch (err) {
|
||||
log.error(err);
|
||||
}
|
||||
}
|
||||
const currentState = this.store.getState();
|
||||
const currentBlock = parseInt(this.blockTracker.getCurrentBlock(), 16);
|
||||
|
||||
async _getDataForUpdate({ address, chainId, newBlockNumberDec } = {}) {
|
||||
const {
|
||||
incomingTransactions: currentIncomingTxs,
|
||||
incomingTxLastFetchedBlocksByNetwork: currentBlocksByNetwork,
|
||||
} = this.store.getState();
|
||||
const mostRecentlyFetchedBlock =
|
||||
currentState.incomingTxLastFetchedBlockByChainId[chainId];
|
||||
const blockToFetchFrom =
|
||||
mostRecentlyFetchedBlock ?? newBlockNumberDec ?? currentBlock;
|
||||
|
||||
const lastFetchBlockByCurrentNetwork =
|
||||
currentBlocksByNetwork[CHAIN_ID_TO_TYPE_MAP[chainId]];
|
||||
let blockToFetchFrom = lastFetchBlockByCurrentNetwork || newBlockNumberDec;
|
||||
if (blockToFetchFrom === undefined) {
|
||||
blockToFetchFrom = parseInt(this.blockTracker.getCurrentBlock(), 16);
|
||||
}
|
||||
|
||||
const { latestIncomingTxBlockNumber, txs: newTxs } = await this._fetchAll(
|
||||
const newIncomingTxs = await this._getNewIncomingTransactions(
|
||||
address,
|
||||
blockToFetchFrom,
|
||||
chainId,
|
||||
);
|
||||
|
||||
return {
|
||||
latestIncomingTxBlockNumber,
|
||||
newTxs,
|
||||
currentIncomingTxs,
|
||||
currentBlocksByNetwork,
|
||||
fetchedBlockNumber: blockToFetchFrom,
|
||||
chainId,
|
||||
};
|
||||
}
|
||||
let newMostRecentlyFetchedBlock = blockToFetchFrom;
|
||||
|
||||
_updateStateWithNewTxData({
|
||||
latestIncomingTxBlockNumber,
|
||||
newTxs,
|
||||
currentIncomingTxs,
|
||||
currentBlocksByNetwork,
|
||||
fetchedBlockNumber,
|
||||
chainId,
|
||||
}) {
|
||||
const newLatestBlockHashByNetwork = latestIncomingTxBlockNumber
|
||||
? parseInt(latestIncomingTxBlockNumber, 10) + 1
|
||||
: fetchedBlockNumber + 1;
|
||||
const newIncomingTransactions = {
|
||||
...currentIncomingTxs,
|
||||
};
|
||||
newTxs.forEach((tx) => {
|
||||
newIncomingTransactions[tx.hash] = tx;
|
||||
newIncomingTxs.forEach((tx) => {
|
||||
if (
|
||||
tx.blockNumber &&
|
||||
parseInt(newMostRecentlyFetchedBlock, 10) <
|
||||
parseInt(tx.blockNumber, 10)
|
||||
) {
|
||||
newMostRecentlyFetchedBlock = parseInt(tx.blockNumber, 10);
|
||||
}
|
||||
});
|
||||
|
||||
this.store.updateState({
|
||||
incomingTxLastFetchedBlocksByNetwork: {
|
||||
...currentBlocksByNetwork,
|
||||
[CHAIN_ID_TO_TYPE_MAP[chainId]]: newLatestBlockHashByNetwork,
|
||||
incomingTxLastFetchedBlockByChainId: {
|
||||
...currentState.incomingTxLastFetchedBlockByChainId,
|
||||
[chainId]: newMostRecentlyFetchedBlock + 1,
|
||||
},
|
||||
incomingTransactions: newIncomingTransactions,
|
||||
incomingTransactions: newIncomingTxs.reduce(
|
||||
(transactions, tx) => {
|
||||
transactions[tx.hash] = tx;
|
||||
return transactions;
|
||||
},
|
||||
{
|
||||
...currentState.incomingTransactions,
|
||||
},
|
||||
),
|
||||
});
|
||||
} catch (err) {
|
||||
log.error(err);
|
||||
}
|
||||
}
|
||||
|
||||
async _fetchAll(address, fromBlock, chainId) {
|
||||
const fetchedTxResponse = await this._fetchTxs(address, fromBlock, chainId);
|
||||
return this._processTxFetchResponse(fetchedTxResponse);
|
||||
}
|
||||
|
||||
async _fetchTxs(address, fromBlock, chainId) {
|
||||
/**
|
||||
* fetches transactions for the given address and chain, via etherscan, then
|
||||
* processes the data into the necessary shape for usage in this controller.
|
||||
*
|
||||
* @private
|
||||
* @param {string} [address] - Address to fetch transactions for
|
||||
* @param {number} [fromBlock] - Block to look for transactions at
|
||||
* @param {string} [chainId] - The chainId for the current network
|
||||
* @returns {TransactionMeta[]}
|
||||
*/
|
||||
async _getNewIncomingTransactions(address, fromBlock, chainId) {
|
||||
const etherscanSubdomain =
|
||||
chainId === MAINNET_CHAIN_ID
|
||||
? 'api'
|
||||
@ -227,16 +234,8 @@ export default class IncomingTransactionsController {
|
||||
url += `&startBlock=${parseInt(fromBlock, 10)}`;
|
||||
}
|
||||
const response = await fetchWithTimeout(url);
|
||||
const parsedResponse = await response.json();
|
||||
|
||||
return {
|
||||
...parsedResponse,
|
||||
address,
|
||||
chainId,
|
||||
};
|
||||
}
|
||||
|
||||
_processTxFetchResponse({ status, result = [], address, chainId }) {
|
||||
const { status, result } = await response.json();
|
||||
let newIncomingTxs = [];
|
||||
if (status === '1' && Array.isArray(result) && result.length > 0) {
|
||||
const remoteTxList = {};
|
||||
const remoteTxs = [];
|
||||
@ -247,70 +246,70 @@ export default class IncomingTransactionsController {
|
||||
}
|
||||
});
|
||||
|
||||
const incomingTxs = remoteTxs.filter(
|
||||
newIncomingTxs = remoteTxs.filter(
|
||||
(tx) => tx.txParams?.to?.toLowerCase() === address.toLowerCase(),
|
||||
);
|
||||
incomingTxs.sort((a, b) => (a.time < b.time ? -1 : 1));
|
||||
|
||||
let latestIncomingTxBlockNumber = null;
|
||||
incomingTxs.forEach((tx) => {
|
||||
if (
|
||||
tx.blockNumber &&
|
||||
(!latestIncomingTxBlockNumber ||
|
||||
parseInt(latestIncomingTxBlockNumber, 10) <
|
||||
parseInt(tx.blockNumber, 10))
|
||||
) {
|
||||
latestIncomingTxBlockNumber = tx.blockNumber;
|
||||
newIncomingTxs.sort((a, b) => (a.time < b.time ? -1 : 1));
|
||||
}
|
||||
});
|
||||
return {
|
||||
latestIncomingTxBlockNumber,
|
||||
txs: incomingTxs,
|
||||
};
|
||||
}
|
||||
return {
|
||||
latestIncomingTxBlockNumber: null,
|
||||
txs: [],
|
||||
};
|
||||
return newIncomingTxs;
|
||||
}
|
||||
|
||||
_normalizeTxFromEtherscan(txMeta, chainId) {
|
||||
const time = parseInt(txMeta.timeStamp, 10) * 1000;
|
||||
/**
|
||||
* Transmutes a EtherscanTransaction into a TransactionMeta
|
||||
* @param {EtherscanTransaction} etherscanTransaction - the transaction to normalize
|
||||
* @param {string} chainId - The chainId of the current network
|
||||
* @returns {TransactionMeta}
|
||||
*/
|
||||
_normalizeTxFromEtherscan(etherscanTransaction, chainId) {
|
||||
const time = parseInt(etherscanTransaction.timeStamp, 10) * 1000;
|
||||
const status =
|
||||
txMeta.isError === '0'
|
||||
etherscanTransaction.isError === '0'
|
||||
? TRANSACTION_STATUSES.CONFIRMED
|
||||
: TRANSACTION_STATUSES.FAILED;
|
||||
return {
|
||||
blockNumber: txMeta.blockNumber,
|
||||
blockNumber: etherscanTransaction.blockNumber,
|
||||
id: createId(),
|
||||
chainId,
|
||||
metamaskNetworkId: CHAIN_ID_TO_NETWORK_ID_MAP[chainId],
|
||||
status,
|
||||
time,
|
||||
txParams: {
|
||||
from: txMeta.from,
|
||||
gas: bnToHex(new BN(txMeta.gas)),
|
||||
gasPrice: bnToHex(new BN(txMeta.gasPrice)),
|
||||
nonce: bnToHex(new BN(txMeta.nonce)),
|
||||
to: txMeta.to,
|
||||
value: bnToHex(new BN(txMeta.value)),
|
||||
from: etherscanTransaction.from,
|
||||
gas: bnToHex(new BN(etherscanTransaction.gas)),
|
||||
gasPrice: bnToHex(new BN(etherscanTransaction.gasPrice)),
|
||||
nonce: bnToHex(new BN(etherscanTransaction.nonce)),
|
||||
to: etherscanTransaction.to,
|
||||
value: bnToHex(new BN(etherscanTransaction.value)),
|
||||
},
|
||||
hash: txMeta.hash,
|
||||
transactionCategory: TRANSACTION_CATEGORIES.INCOMING,
|
||||
hash: etherscanTransaction.hash,
|
||||
type: TRANSACTION_TYPES.INCOMING,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
function pairwise(fn) {
|
||||
/**
|
||||
* Returns a function with arity 1 that caches the argument that the function
|
||||
* is called with and invokes the comparator with both the cached, previous,
|
||||
* value and the current value. If specified, the initialValue will be passed
|
||||
* in as the previous value on the first invocation of the returned method.
|
||||
* @template A
|
||||
* @params {A=} type of compared value
|
||||
* @param {(prevValue: A, nextValue: A) => void} comparator - method to compare
|
||||
* previous and next values.
|
||||
* @param {A} [initialValue] - initial value to supply to prevValue
|
||||
* on first call of the method.
|
||||
* @returns {void}
|
||||
*/
|
||||
function previousValueComparator(comparator, initialValue) {
|
||||
let first = true;
|
||||
let cache;
|
||||
return (value) => {
|
||||
try {
|
||||
if (first) {
|
||||
first = false;
|
||||
return fn(value, value);
|
||||
return comparator(initialValue ?? value, value);
|
||||
}
|
||||
return fn(cache, value);
|
||||
return comparator(cache, value);
|
||||
} finally {
|
||||
cache = value;
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
||||
import { merge, omit } from 'lodash';
|
||||
import { ObservableStore } from '@metamask/obs-store';
|
||||
import { bufferToHex, sha3 } from 'ethereumjs-util';
|
||||
import { bufferToHex, keccak } from 'ethereumjs-util';
|
||||
import { ENVIRONMENT_TYPE_BACKGROUND } from '../../../shared/constants/app';
|
||||
import {
|
||||
METAMETRICS_ANONYMOUS_ID,
|
||||
@ -57,8 +57,6 @@ export default class MetaMetricsController {
|
||||
/**
|
||||
* @param {Object} segment - an instance of analytics-node for tracking
|
||||
* events that conform to the new MetaMetrics tracking plan.
|
||||
* @param {Object} segmentLegacy - an instance of analytics-node for
|
||||
* tracking legacy schema events. Will eventually be phased out
|
||||
* @param {Object} preferencesStore - The preferences controller store, used
|
||||
* to access and subscribe to preferences that will be attached to events
|
||||
* @param {function} onNetworkDidChange - Used to attach a listener to the
|
||||
@ -73,7 +71,6 @@ export default class MetaMetricsController {
|
||||
*/
|
||||
constructor({
|
||||
segment,
|
||||
segmentLegacy,
|
||||
preferencesStore,
|
||||
onNetworkDidChange,
|
||||
getCurrentChainId,
|
||||
@ -105,15 +102,16 @@ export default class MetaMetricsController {
|
||||
this.network = getNetworkIdentifier();
|
||||
});
|
||||
this.segment = segment;
|
||||
this.segmentLegacy = segmentLegacy;
|
||||
}
|
||||
|
||||
generateMetaMetricsId() {
|
||||
return bufferToHex(
|
||||
sha3(
|
||||
keccak(
|
||||
Buffer.from(
|
||||
String(Date.now()) +
|
||||
String(Math.round(Math.random() * Number.MAX_SAFE_INTEGER)),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@ -258,6 +256,12 @@ export default class MetaMetricsController {
|
||||
}
|
||||
payload[idType] = idValue;
|
||||
|
||||
// If this is an event on the old matomo schema, add a key to the payload
|
||||
// to designate it as such
|
||||
if (matomoEvent === true) {
|
||||
payload.properties.legacy_event = true;
|
||||
}
|
||||
|
||||
// Promises will only resolve when the event is sent to segment. For any
|
||||
// event that relies on this promise being fulfilled before performing UI
|
||||
// updates, or otherwise delaying user interaction, supply the
|
||||
@ -276,11 +280,9 @@ export default class MetaMetricsController {
|
||||
return resolve();
|
||||
};
|
||||
|
||||
const target = matomoEvent === true ? this.segmentLegacy : this.segment;
|
||||
|
||||
target.track(payload, callback);
|
||||
this.segment.track(payload, callback);
|
||||
if (flushImmediately) {
|
||||
target.flush();
|
||||
this.segment.flush();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -1,17 +1,16 @@
|
||||
import { strict as assert } from 'assert';
|
||||
import sinon from 'sinon';
|
||||
import MetaMetricsController from '../../../../app/scripts/controllers/metametrics';
|
||||
import { ENVIRONMENT_TYPE_BACKGROUND } from '../../../../shared/constants/app';
|
||||
import { createSegmentMock } from '../../../../app/scripts/lib/segment';
|
||||
import { ENVIRONMENT_TYPE_BACKGROUND } from '../../../shared/constants/app';
|
||||
import { createSegmentMock } from '../lib/segment';
|
||||
import {
|
||||
METAMETRICS_ANONYMOUS_ID,
|
||||
METAMETRICS_BACKGROUND_PAGE_OBJECT,
|
||||
} from '../../../../shared/constants/metametrics';
|
||||
import waitUntilCalled from '../../../lib/wait-until-called';
|
||||
import { NETWORK_EVENTS } from '../../../../app/scripts/controllers/network';
|
||||
} from '../../../shared/constants/metametrics';
|
||||
import waitUntilCalled from '../../../test/lib/wait-until-called';
|
||||
import MetaMetricsController from './metametrics';
|
||||
import { NETWORK_EVENTS } from './network';
|
||||
|
||||
const segment = createSegmentMock(2, 10000);
|
||||
const segmentLegacy = createSegmentMock(2, 10000);
|
||||
|
||||
const VERSION = '0.0.1-test';
|
||||
const NETWORK = 'Mainnet';
|
||||
@ -91,7 +90,6 @@ function getMetaMetricsController({
|
||||
} = {}) {
|
||||
return new MetaMetricsController({
|
||||
segment,
|
||||
segmentLegacy,
|
||||
getNetworkIdentifier: networkController.getNetworkIdentifier.bind(
|
||||
networkController,
|
||||
),
|
||||
@ -286,7 +284,7 @@ describe('MetaMetricsController', function () {
|
||||
});
|
||||
|
||||
it('should track a legacy event', function () {
|
||||
const mock = sinon.mock(segmentLegacy);
|
||||
const mock = sinon.mock(segment);
|
||||
const metaMetricsController = getMetaMetricsController();
|
||||
mock
|
||||
.expects('track')
|
||||
@ -297,6 +295,7 @@ describe('MetaMetricsController', function () {
|
||||
context: DEFAULT_TEST_CONTEXT,
|
||||
properties: {
|
||||
test: 1,
|
||||
legacy_event: true,
|
||||
...DEFAULT_EVENT_PROPERTIES,
|
||||
},
|
||||
});
|
||||
@ -544,7 +543,6 @@ describe('MetaMetricsController', function () {
|
||||
afterEach(function () {
|
||||
// flush the queues manually after each test
|
||||
segment.flush();
|
||||
segmentLegacy.flush();
|
||||
sinon.restore();
|
||||
});
|
||||
});
|
@ -6,7 +6,7 @@ import createInflightMiddleware from 'eth-json-rpc-middleware/inflight-cache';
|
||||
import createBlockTrackerInspectorMiddleware from 'eth-json-rpc-middleware/block-tracker-inspector';
|
||||
import providerFromMiddleware from 'eth-json-rpc-middleware/providerFromMiddleware';
|
||||
import createInfuraMiddleware from 'eth-json-rpc-infura';
|
||||
import BlockTracker from 'eth-block-tracker';
|
||||
import { PollingBlockTracker } from 'eth-block-tracker';
|
||||
|
||||
import { NETWORK_TYPE_TO_ID_MAP } from '../../../../shared/constants/network';
|
||||
|
||||
@ -18,7 +18,7 @@ export default function createInfuraClient({ network, projectId }) {
|
||||
source: 'metamask',
|
||||
});
|
||||
const infuraProvider = providerFromMiddleware(infuraMiddleware);
|
||||
const blockTracker = new BlockTracker({ provider: infuraProvider });
|
||||
const blockTracker = new PollingBlockTracker({ provider: infuraProvider });
|
||||
|
||||
const networkMiddleware = mergeMiddleware([
|
||||
createNetworkAndChainIdMiddleware({ network }),
|
||||
|
@ -5,7 +5,7 @@ import createBlockCacheMiddleware from 'eth-json-rpc-middleware/block-cache';
|
||||
import createInflightMiddleware from 'eth-json-rpc-middleware/inflight-cache';
|
||||
import createBlockTrackerInspectorMiddleware from 'eth-json-rpc-middleware/block-tracker-inspector';
|
||||
import providerFromMiddleware from 'eth-json-rpc-middleware/providerFromMiddleware';
|
||||
import BlockTracker from 'eth-block-tracker';
|
||||
import { PollingBlockTracker } from 'eth-block-tracker';
|
||||
|
||||
const inTest = process.env.IN_TEST === 'true';
|
||||
const blockTrackerOpts = inTest ? { pollingInterval: 1000 } : {};
|
||||
@ -16,7 +16,7 @@ const getTestMiddlewares = () => {
|
||||
export default function createJsonRpcClient({ rpcUrl, chainId }) {
|
||||
const fetchMiddleware = createFetchMiddleware({ rpcUrl });
|
||||
const blockProvider = providerFromMiddleware(fetchMiddleware);
|
||||
const blockTracker = new BlockTracker({
|
||||
const blockTracker = new PollingBlockTracker({
|
||||
...blockTrackerOpts,
|
||||
provider: blockProvider,
|
||||
});
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { strict as assert } from 'assert';
|
||||
import sinon from 'sinon';
|
||||
import NetworkController from '../../../../../app/scripts/controllers/network';
|
||||
import { getNetworkDisplayName } from '../../../../../app/scripts/controllers/network/util';
|
||||
import { getNetworkDisplayName } from './util';
|
||||
import NetworkController from './network';
|
||||
|
||||
describe('NetworkController', function () {
|
||||
describe('controller', function () {
|
@ -1,9 +1,9 @@
|
||||
import assert from 'assert';
|
||||
import { txMetaStub } from '../../../../test/stub/tx-meta-stub';
|
||||
import {
|
||||
createPendingNonceMiddleware,
|
||||
createPendingTxMiddleware,
|
||||
} from '../../../../../app/scripts/controllers/network/middleware/pending';
|
||||
import { txMetaStub } from './stubs';
|
||||
} from './middleware/pending';
|
||||
|
||||
describe('PendingNonceMiddleware', function () {
|
||||
describe('#createPendingNonceMiddleware', function () {
|
@ -297,7 +297,7 @@ export class PermissionsController {
|
||||
this.validatePermittedAccounts([account]);
|
||||
|
||||
const oldPermittedAccounts = this._getPermittedAccounts(origin);
|
||||
if (!oldPermittedAccounts) {
|
||||
if (oldPermittedAccounts.length === 0) {
|
||||
throw new Error(`Origin does not have 'eth_accounts' permission`);
|
||||
} else if (oldPermittedAccounts.includes(account)) {
|
||||
throw new Error('Account is already permitted for origin');
|
||||
@ -335,7 +335,7 @@ export class PermissionsController {
|
||||
this.validatePermittedAccounts([account]);
|
||||
|
||||
const oldPermittedAccounts = this._getPermittedAccounts(origin);
|
||||
if (!oldPermittedAccounts) {
|
||||
if (oldPermittedAccounts.length === 0) {
|
||||
throw new Error(`Origin does not have 'eth_accounts' permission`);
|
||||
} else if (!oldPermittedAccounts.includes(account)) {
|
||||
throw new Error('Account is not permitted for origin');
|
||||
@ -612,7 +612,7 @@ export class PermissionsController {
|
||||
* Get current set of permitted accounts for the given origin
|
||||
*
|
||||
* @param {string} origin - The origin to obtain permitted accounts for
|
||||
* @returns {Array<string>|null} The list of permitted accounts
|
||||
* @returns {Array<string>} The list of permitted accounts
|
||||
*/
|
||||
_getPermittedAccounts(origin) {
|
||||
const permittedAccounts = this.permissions
|
||||
@ -620,7 +620,7 @@ export class PermissionsController {
|
||||
?.caveats?.find((caveat) => caveat.name === CAVEAT_NAMES.exposedAccounts)
|
||||
?.value;
|
||||
|
||||
return permittedAccounts || null;
|
||||
return permittedAccounts || [];
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2,22 +2,20 @@ import { strict as assert } from 'assert';
|
||||
import { find } from 'lodash';
|
||||
import sinon from 'sinon';
|
||||
|
||||
import {
|
||||
METADATA_STORE_KEY,
|
||||
METADATA_CACHE_MAX_SIZE,
|
||||
} from '../../../../../app/scripts/controllers/permissions/enums';
|
||||
|
||||
import { PermissionsController } from '../../../../../app/scripts/controllers/permissions';
|
||||
|
||||
import { getRequestUserApprovalHelper, grantPermissions } from './helpers';
|
||||
|
||||
import {
|
||||
constants,
|
||||
getters,
|
||||
getNotifyDomain,
|
||||
getNotifyAllDomains,
|
||||
getPermControllerOpts,
|
||||
} from './mocks';
|
||||
} from '../../../../test/mocks/permission-controller';
|
||||
import {
|
||||
getRequestUserApprovalHelper,
|
||||
grantPermissions,
|
||||
} from '../../../../test/helpers/permission-controller-helpers';
|
||||
import { METADATA_STORE_KEY, METADATA_CACHE_MAX_SIZE } from './enums';
|
||||
|
||||
import { PermissionsController } from '.';
|
||||
|
||||
const { ERRORS, NOTIFICATIONS, PERMS } = getters;
|
||||
|
@ -3,16 +3,14 @@ import { ObservableStore } from '@metamask/obs-store';
|
||||
import nanoid from 'nanoid';
|
||||
import { useFakeTimers } from 'sinon';
|
||||
|
||||
import PermissionsLogController from '../../../../../app/scripts/controllers/permissions/permissionsLog';
|
||||
|
||||
import {
|
||||
LOG_LIMIT,
|
||||
LOG_METHOD_TYPES,
|
||||
} from '../../../../../app/scripts/controllers/permissions/enums';
|
||||
|
||||
import { validateActivityEntry } from './helpers';
|
||||
|
||||
import { constants, getters, noop } from './mocks';
|
||||
constants,
|
||||
getters,
|
||||
noop,
|
||||
} from '../../../../test/mocks/permission-controller';
|
||||
import { validateActivityEntry } from '../../../../test/helpers/permission-controller-helpers';
|
||||
import PermissionsLogController from './permissionsLog';
|
||||
import { LOG_LIMIT, LOG_METHOD_TYPES } from './enums';
|
||||
|
||||
const { PERMS, RPC_REQUESTS } = getters;
|
||||
|
||||
@ -50,7 +48,7 @@ const initMiddleware = (permLog) => {
|
||||
const initClock = () => {
|
||||
// useFakeTimers, is in fact, not a react-hook
|
||||
// eslint-disable-next-line
|
||||
clock = useFakeTimers(1)
|
||||
clock = useFakeTimers(1);
|
||||
};
|
||||
|
||||
const tearDownClock = () => {
|
@ -1,18 +1,19 @@
|
||||
import { strict as assert } from 'assert';
|
||||
import sinon from 'sinon';
|
||||
|
||||
import { METADATA_STORE_KEY } from '../../../../../app/scripts/controllers/permissions/enums';
|
||||
|
||||
import { PermissionsController } from '../../../../../app/scripts/controllers/permissions';
|
||||
|
||||
import { getUserApprovalPromise, grantPermissions } from './helpers';
|
||||
|
||||
import {
|
||||
constants,
|
||||
getters,
|
||||
getPermControllerOpts,
|
||||
getPermissionsMiddleware,
|
||||
} from './mocks';
|
||||
} from '../../../../test/mocks/permission-controller';
|
||||
import {
|
||||
getUserApprovalPromise,
|
||||
grantPermissions,
|
||||
} from '../../../../test/helpers/permission-controller-helpers';
|
||||
import { METADATA_STORE_KEY } from './enums';
|
||||
|
||||
import { PermissionsController } from '.';
|
||||
|
||||
const { CAVEATS, ERRORS, PERMS, RPC_REQUESTS } = getters;
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { cloneDeep } from 'lodash';
|
||||
import stringify from 'fast-safe-stringify';
|
||||
import { CAVEAT_NAMES } from '../../../../shared/constants/permissions';
|
||||
import {
|
||||
HISTORY_STORE_KEY,
|
||||
@ -151,7 +151,7 @@ export default class PermissionsLogController {
|
||||
? LOG_METHOD_TYPES.internal
|
||||
: LOG_METHOD_TYPES.restricted,
|
||||
origin: request.origin,
|
||||
request: cloneDeep(request),
|
||||
request: stringify(request, null, 2),
|
||||
requestTime: Date.now(),
|
||||
response: null,
|
||||
responseTime: null,
|
||||
@ -174,7 +174,7 @@ export default class PermissionsLogController {
|
||||
return;
|
||||
}
|
||||
|
||||
entry.response = cloneDeep(response);
|
||||
entry.response = stringify(response, null, 2);
|
||||
entry.responseTime = time;
|
||||
entry.success = !response.error;
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { strict as assert } from 'assert';
|
||||
import pify from 'pify';
|
||||
|
||||
import getRestrictedMethods from '../../../../../app/scripts/controllers/permissions/restrictedMethods';
|
||||
import getRestrictedMethods from './restrictedMethods';
|
||||
|
||||
describe('restricted methods', function () {
|
||||
describe('eth_accounts', function () {
|
@ -67,6 +67,7 @@ export default class PreferencesController {
|
||||
// ENS decentralized website resolution
|
||||
ipfsGateway: 'dweb.link',
|
||||
infuraBlocked: null,
|
||||
useLedgerLive: false,
|
||||
...opts.initState,
|
||||
};
|
||||
|
||||
@ -380,7 +381,7 @@ export default class PreferencesController {
|
||||
*/
|
||||
async addToken(rawAddress, symbol, decimals, image) {
|
||||
const address = normalizeAddress(rawAddress);
|
||||
const newEntry = { address, symbol, decimals };
|
||||
const newEntry = { address, symbol, decimals: Number(decimals) };
|
||||
const { tokens, hiddenTokens } = this.store.getState();
|
||||
const assetImages = this.getAssetImages();
|
||||
const updatedHiddenTokens = hiddenTokens.filter(
|
||||
@ -666,6 +667,24 @@ export default class PreferencesController {
|
||||
return Promise.resolve(domain);
|
||||
}
|
||||
|
||||
/**
|
||||
* A setter for the `useLedgerLive` property
|
||||
* @param {bool} domain - Value for ledger live support
|
||||
* @returns {Promise<string>} A promise of the update to useLedgerLive
|
||||
*/
|
||||
async setLedgerLivePreference(useLedgerLive) {
|
||||
this.store.updateState({ useLedgerLive });
|
||||
return useLedgerLive;
|
||||
}
|
||||
|
||||
/**
|
||||
* A getter for the `useLedgerLive` property
|
||||
* @returns {boolean} User preference of using Ledger Live
|
||||
*/
|
||||
getLedgerLivePreference() {
|
||||
return this.store.getState().useLedgerLive;
|
||||
}
|
||||
|
||||
//
|
||||
// PRIVATE METHODS
|
||||
//
|
||||
@ -820,9 +839,14 @@ export default class PreferencesController {
|
||||
if (typeof symbol !== 'string') {
|
||||
throw ethErrors.rpc.invalidParams(`Invalid symbol: not a string.`);
|
||||
}
|
||||
if (!(symbol.length < 7)) {
|
||||
if (!(symbol.length > 0)) {
|
||||
throw ethErrors.rpc.invalidParams(
|
||||
`Invalid symbol "${symbol}": longer than 6 characters.`,
|
||||
`Invalid symbol "${symbol}": shorter than a character.`,
|
||||
);
|
||||
}
|
||||
if (!(symbol.length < 12)) {
|
||||
throw ethErrors.rpc.invalidParams(
|
||||
`Invalid symbol "${symbol}": longer than 11 characters.`,
|
||||
);
|
||||
}
|
||||
const numDecimals = parseInt(decimals, 10);
|
||||
|
@ -1,10 +1,10 @@
|
||||
import assert from 'assert';
|
||||
import sinon from 'sinon';
|
||||
import PreferencesController from '../../../../app/scripts/controllers/preferences';
|
||||
import {
|
||||
MAINNET_CHAIN_ID,
|
||||
RINKEBY_CHAIN_ID,
|
||||
} from '../../../../shared/constants/network';
|
||||
} from '../../../shared/constants/network';
|
||||
import PreferencesController from './preferences';
|
||||
|
||||
describe('preferences controller', function () {
|
||||
let preferencesController;
|
||||
@ -539,6 +539,14 @@ describe('preferences controller', function () {
|
||||
decimals: 0,
|
||||
}),
|
||||
);
|
||||
assert.doesNotThrow(() =>
|
||||
validate({
|
||||
address: '0xd26114cd6EE289AccF82350c8d8487fedB8A0C07',
|
||||
symbol: 'ABCDEFGHIJK',
|
||||
decimals: 0,
|
||||
}),
|
||||
);
|
||||
|
||||
assert.throws(
|
||||
() => validate({ symbol: 'ABC', decimals: 0 }),
|
||||
'missing address should fail',
|
||||
@ -563,10 +571,19 @@ describe('preferences controller', function () {
|
||||
() =>
|
||||
validate({
|
||||
address: '0xd26114cd6EE289AccF82350c8d8487fedB8A0C07',
|
||||
symbol: 'ABCDEFGHI',
|
||||
symbol: 'ABCDEFGHIJKLM',
|
||||
decimals: 0,
|
||||
}),
|
||||
'invalid symbol should fail',
|
||||
'long symbol should fail',
|
||||
);
|
||||
assert.throws(
|
||||
() =>
|
||||
validate({
|
||||
address: '0xd26114cd6EE289AccF82350c8d8487fedB8A0C07',
|
||||
symbol: '',
|
||||
decimals: 0,
|
||||
}),
|
||||
'empty symbol should fail',
|
||||
);
|
||||
assert.throws(
|
||||
() =>
|
@ -70,7 +70,7 @@ const initialState = {
|
||||
errorKey: '',
|
||||
topAggId: null,
|
||||
routeState: '',
|
||||
swapsFeatureIsLive: false,
|
||||
swapsFeatureIsLive: true,
|
||||
swapsQuoteRefreshTime: FALLBACK_QUOTE_REFRESH_TIME,
|
||||
},
|
||||
};
|
||||
@ -112,8 +112,6 @@ export default class SwapsController {
|
||||
this.ethersProvider = new ethers.providers.Web3Provider(provider);
|
||||
}
|
||||
});
|
||||
|
||||
this._setupSwapsLivenessFetching();
|
||||
}
|
||||
|
||||
// Sets the refresh rate for quote updates from the MetaSwap API
|
||||
@ -478,7 +476,6 @@ export default class SwapsController {
|
||||
swapsState: {
|
||||
...initialState.swapsState,
|
||||
tokens: swapsState.tokens,
|
||||
swapsFeatureIsLive: swapsState.swapsFeatureIsLive,
|
||||
swapsQuoteRefreshTime: swapsState.swapsQuoteRefreshTime,
|
||||
},
|
||||
});
|
||||
@ -686,99 +683,6 @@ export default class SwapsController {
|
||||
SWAPS_CHAINID_CONTRACT_ADDRESS_MAP[chainId],
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets up the fetching of the swaps feature liveness flag from our API.
|
||||
* Performs an initial fetch when called, then fetches on a 10-minute
|
||||
* interval.
|
||||
*
|
||||
* If the browser goes offline, the interval is cleared and swaps are disabled
|
||||
* until the value can be fetched again.
|
||||
*/
|
||||
_setupSwapsLivenessFetching() {
|
||||
const TEN_MINUTES_MS = 10 * 60 * 1000;
|
||||
let intervalId = null;
|
||||
|
||||
const fetchAndSetupInterval = () => {
|
||||
if (window.navigator.onLine && intervalId === null) {
|
||||
// Set the interval first to prevent race condition between listener and
|
||||
// initial call to this function.
|
||||
intervalId = setInterval(
|
||||
this._fetchAndSetSwapsLiveness.bind(this),
|
||||
TEN_MINUTES_MS,
|
||||
);
|
||||
this._fetchAndSetSwapsLiveness();
|
||||
}
|
||||
};
|
||||
|
||||
window.addEventListener('online', fetchAndSetupInterval);
|
||||
window.addEventListener('offline', () => {
|
||||
if (intervalId !== null) {
|
||||
clearInterval(intervalId);
|
||||
intervalId = null;
|
||||
|
||||
const { swapsState } = this.store.getState();
|
||||
if (swapsState.swapsFeatureIsLive) {
|
||||
this.setSwapsLiveness(false);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
fetchAndSetupInterval();
|
||||
}
|
||||
|
||||
/**
|
||||
* This function should only be called via _setupSwapsLivenessFetching.
|
||||
*
|
||||
* Attempts to fetch the swaps feature liveness flag from our API. Tries
|
||||
* to fetch three times at 5-second intervals before giving up, in which
|
||||
* case the value defaults to 'false'.
|
||||
*
|
||||
* Only updates state if the fetched/computed flag value differs from current
|
||||
* state.
|
||||
*/
|
||||
async _fetchAndSetSwapsLiveness() {
|
||||
const { swapsState } = this.store.getState();
|
||||
const { swapsFeatureIsLive: oldSwapsFeatureIsLive } = swapsState;
|
||||
const chainId = this._getCurrentChainId();
|
||||
|
||||
let swapsFeatureIsLive = false;
|
||||
let successfullyFetched = false;
|
||||
let numAttempts = 0;
|
||||
|
||||
const fetchAndIncrementNumAttempts = async () => {
|
||||
try {
|
||||
swapsFeatureIsLive = Boolean(
|
||||
await this._fetchSwapsFeatureLiveness(chainId),
|
||||
);
|
||||
successfullyFetched = true;
|
||||
} catch (err) {
|
||||
log.error(err);
|
||||
numAttempts += 1;
|
||||
}
|
||||
};
|
||||
|
||||
await fetchAndIncrementNumAttempts();
|
||||
|
||||
// The loop conditions are modified by fetchAndIncrementNumAttempts.
|
||||
// eslint-disable-next-line no-unmodified-loop-condition
|
||||
while (!successfullyFetched && numAttempts < 3) {
|
||||
await new Promise((resolve) => {
|
||||
setTimeout(resolve, 5000); // 5 seconds
|
||||
});
|
||||
await fetchAndIncrementNumAttempts();
|
||||
}
|
||||
|
||||
if (!successfullyFetched) {
|
||||
log.error(
|
||||
'Failed to fetch swaps feature flag 3 times. Setting to false and trying again next interval.',
|
||||
);
|
||||
}
|
||||
|
||||
if (swapsFeatureIsLive !== oldSwapsFeatureIsLive) {
|
||||
this.setSwapsLiveness(swapsFeatureIsLive);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -9,13 +9,11 @@ import {
|
||||
ROPSTEN_NETWORK_ID,
|
||||
MAINNET_NETWORK_ID,
|
||||
MAINNET_CHAIN_ID,
|
||||
} from '../../../../shared/constants/network';
|
||||
import { ETH_SWAPS_TOKEN_OBJECT } from '../../../../shared/constants/swaps';
|
||||
import { createTestProviderTools } from '../../../stub/provider';
|
||||
import SwapsController, {
|
||||
utils,
|
||||
} from '../../../../app/scripts/controllers/swaps';
|
||||
import { NETWORK_EVENTS } from '../../../../app/scripts/controllers/network';
|
||||
} from '../../../shared/constants/network';
|
||||
import { ETH_SWAPS_TOKEN_OBJECT } from '../../../shared/constants/swaps';
|
||||
import { createTestProviderTools } from '../../../test/stub/provider';
|
||||
import SwapsController, { utils } from './swaps';
|
||||
import { NETWORK_EVENTS } from './network';
|
||||
|
||||
const MOCK_FETCH_PARAMS = {
|
||||
slippage: 3,
|
||||
@ -126,7 +124,7 @@ const EMPTY_INIT_STATE = {
|
||||
errorKey: '',
|
||||
topAggId: null,
|
||||
routeState: '',
|
||||
swapsFeatureIsLive: false,
|
||||
swapsFeatureIsLive: true,
|
||||
swapsQuoteRefreshTime: 60000,
|
||||
},
|
||||
};
|
||||
@ -899,281 +897,6 @@ describe('SwapsController', function () {
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('_setupSwapsLivenessFetching ', function () {
|
||||
let clock;
|
||||
const EXPECTED_TIME = 600000;
|
||||
|
||||
const getLivenessState = () => {
|
||||
return swapsController.store.getState().swapsState.swapsFeatureIsLive;
|
||||
};
|
||||
|
||||
// We have to do this to overwrite window.navigator.onLine
|
||||
const stubWindow = () => {
|
||||
sandbox.replace(global, 'window', {
|
||||
addEventListener: window.addEventListener,
|
||||
navigator: { onLine: true },
|
||||
dispatchEvent: window.dispatchEvent,
|
||||
Event: window.Event,
|
||||
});
|
||||
};
|
||||
|
||||
beforeEach(function () {
|
||||
stubWindow();
|
||||
clock = sandbox.useFakeTimers();
|
||||
sandbox.spy(clock, 'setInterval');
|
||||
|
||||
sandbox
|
||||
.stub(SwapsController.prototype, '_fetchAndSetSwapsLiveness')
|
||||
.resolves(undefined);
|
||||
|
||||
sandbox.spy(SwapsController.prototype, '_setupSwapsLivenessFetching');
|
||||
|
||||
sandbox.spy(window, 'addEventListener');
|
||||
});
|
||||
|
||||
afterEach(function () {
|
||||
sandbox.restore();
|
||||
});
|
||||
|
||||
it('calls _setupSwapsLivenessFetching in constructor', function () {
|
||||
swapsController = getSwapsController();
|
||||
|
||||
assert.ok(
|
||||
swapsController._setupSwapsLivenessFetching.calledOnce,
|
||||
'should have called _setupSwapsLivenessFetching once',
|
||||
);
|
||||
assert.ok(window.addEventListener.calledWith('online'));
|
||||
assert.ok(window.addEventListener.calledWith('offline'));
|
||||
assert.ok(
|
||||
clock.setInterval.calledOnceWithExactly(
|
||||
sinon.match.func,
|
||||
EXPECTED_TIME,
|
||||
),
|
||||
'should have set an interval',
|
||||
);
|
||||
});
|
||||
|
||||
it('handles browser being offline on boot, then coming online', async function () {
|
||||
window.navigator.onLine = false;
|
||||
|
||||
swapsController = getSwapsController();
|
||||
assert.ok(
|
||||
swapsController._setupSwapsLivenessFetching.calledOnce,
|
||||
'should have called _setupSwapsLivenessFetching once',
|
||||
);
|
||||
assert.ok(
|
||||
swapsController._fetchAndSetSwapsLiveness.notCalled,
|
||||
'should not have called _fetchAndSetSwapsLiveness',
|
||||
);
|
||||
assert.ok(
|
||||
clock.setInterval.notCalled,
|
||||
'should not have set an interval',
|
||||
);
|
||||
assert.strictEqual(
|
||||
getLivenessState(),
|
||||
false,
|
||||
'swaps feature should be disabled',
|
||||
);
|
||||
|
||||
const fetchPromise = new Promise((resolve) => {
|
||||
const originalFunction = swapsController._fetchAndSetSwapsLiveness;
|
||||
swapsController._fetchAndSetSwapsLiveness = () => {
|
||||
originalFunction();
|
||||
resolve();
|
||||
swapsController._fetchAndSetSwapsLiveness = originalFunction;
|
||||
};
|
||||
});
|
||||
|
||||
// browser comes online
|
||||
window.navigator.onLine = true;
|
||||
window.dispatchEvent(new window.Event('online'));
|
||||
await fetchPromise;
|
||||
|
||||
assert.ok(
|
||||
swapsController._fetchAndSetSwapsLiveness.calledOnce,
|
||||
'should have called _fetchAndSetSwapsLiveness once',
|
||||
);
|
||||
assert.ok(
|
||||
clock.setInterval.calledOnceWithExactly(
|
||||
sinon.match.func,
|
||||
EXPECTED_TIME,
|
||||
),
|
||||
'should have set an interval',
|
||||
);
|
||||
});
|
||||
|
||||
it('clears interval if browser goes offline', async function () {
|
||||
swapsController = getSwapsController();
|
||||
|
||||
// set feature to live
|
||||
const { swapsState } = swapsController.store.getState();
|
||||
swapsController.store.updateState({
|
||||
swapsState: { ...swapsState, swapsFeatureIsLive: true },
|
||||
});
|
||||
|
||||
sandbox.spy(swapsController.store, 'updateState');
|
||||
|
||||
assert.ok(
|
||||
clock.setInterval.calledOnceWithExactly(
|
||||
sinon.match.func,
|
||||
EXPECTED_TIME,
|
||||
),
|
||||
'should have set an interval',
|
||||
);
|
||||
|
||||
const clearIntervalPromise = new Promise((resolve) => {
|
||||
const originalFunction = clock.clearInterval;
|
||||
clock.clearInterval = (intervalId) => {
|
||||
originalFunction(intervalId);
|
||||
clock.clearInterval = originalFunction;
|
||||
resolve();
|
||||
};
|
||||
});
|
||||
|
||||
// browser goes offline
|
||||
window.navigator.onLine = false;
|
||||
window.dispatchEvent(new window.Event('offline'));
|
||||
|
||||
// if this resolves, clearInterval was called
|
||||
await clearIntervalPromise;
|
||||
|
||||
assert.ok(
|
||||
swapsController._fetchAndSetSwapsLiveness.calledOnce,
|
||||
'should have called _fetchAndSetSwapsLiveness once',
|
||||
);
|
||||
assert.ok(
|
||||
swapsController.store.updateState.calledOnce,
|
||||
'should have called updateState once',
|
||||
);
|
||||
assert.strictEqual(
|
||||
getLivenessState(),
|
||||
false,
|
||||
'swaps feature should be disabled',
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('_fetchAndSetSwapsLiveness', function () {
|
||||
const getLivenessState = () => {
|
||||
return swapsController.store.getState().swapsState.swapsFeatureIsLive;
|
||||
};
|
||||
|
||||
beforeEach(function () {
|
||||
fetchSwapsFeatureLivenessStub.reset();
|
||||
sandbox.stub(SwapsController.prototype, '_setupSwapsLivenessFetching');
|
||||
swapsController = getSwapsController();
|
||||
});
|
||||
|
||||
afterEach(function () {
|
||||
sandbox.restore();
|
||||
});
|
||||
|
||||
it('fetches feature liveness as expected when API is live', async function () {
|
||||
fetchSwapsFeatureLivenessStub.resolves(true);
|
||||
|
||||
assert.strictEqual(
|
||||
getLivenessState(),
|
||||
false,
|
||||
'liveness should be false on boot',
|
||||
);
|
||||
|
||||
await swapsController._fetchAndSetSwapsLiveness();
|
||||
|
||||
assert.ok(
|
||||
fetchSwapsFeatureLivenessStub.calledOnce,
|
||||
'should have called fetch function once',
|
||||
);
|
||||
assert.strictEqual(
|
||||
getLivenessState(),
|
||||
true,
|
||||
'liveness should be true after call',
|
||||
);
|
||||
});
|
||||
|
||||
it('does not update state if fetched value is same as state value', async function () {
|
||||
fetchSwapsFeatureLivenessStub.resolves(false);
|
||||
sandbox.spy(swapsController.store, 'updateState');
|
||||
|
||||
assert.strictEqual(
|
||||
getLivenessState(),
|
||||
false,
|
||||
'liveness should be false on boot',
|
||||
);
|
||||
|
||||
await swapsController._fetchAndSetSwapsLiveness();
|
||||
|
||||
assert.ok(
|
||||
fetchSwapsFeatureLivenessStub.calledOnce,
|
||||
'should have called fetch function once',
|
||||
);
|
||||
assert.ok(
|
||||
swapsController.store.updateState.notCalled,
|
||||
'should not have called store.updateState',
|
||||
);
|
||||
assert.strictEqual(
|
||||
getLivenessState(),
|
||||
false,
|
||||
'liveness should remain false after call',
|
||||
);
|
||||
});
|
||||
|
||||
it('tries three times before giving up if fetching fails', async function () {
|
||||
const clock = sandbox.useFakeTimers();
|
||||
fetchSwapsFeatureLivenessStub.rejects(new Error('foo'));
|
||||
sandbox.spy(swapsController.store, 'updateState');
|
||||
|
||||
assert.strictEqual(
|
||||
getLivenessState(),
|
||||
false,
|
||||
'liveness should be false on boot',
|
||||
);
|
||||
|
||||
swapsController._fetchAndSetSwapsLiveness();
|
||||
await clock.runAllAsync();
|
||||
|
||||
assert.ok(
|
||||
fetchSwapsFeatureLivenessStub.calledThrice,
|
||||
'should have called fetch function three times',
|
||||
);
|
||||
assert.ok(
|
||||
swapsController.store.updateState.notCalled,
|
||||
'should not have called store.updateState',
|
||||
);
|
||||
assert.strictEqual(
|
||||
getLivenessState(),
|
||||
false,
|
||||
'liveness should remain false after call',
|
||||
);
|
||||
});
|
||||
|
||||
it('sets state after fetching on successful retry', async function () {
|
||||
const clock = sandbox.useFakeTimers();
|
||||
fetchSwapsFeatureLivenessStub.onCall(0).rejects(new Error('foo'));
|
||||
fetchSwapsFeatureLivenessStub.onCall(1).rejects(new Error('foo'));
|
||||
fetchSwapsFeatureLivenessStub.onCall(2).resolves(true);
|
||||
|
||||
assert.strictEqual(
|
||||
getLivenessState(),
|
||||
false,
|
||||
'liveness should be false on boot',
|
||||
);
|
||||
|
||||
swapsController._fetchAndSetSwapsLiveness();
|
||||
await clock.runAllAsync();
|
||||
|
||||
assert.strictEqual(
|
||||
fetchSwapsFeatureLivenessStub.callCount,
|
||||
3,
|
||||
'should have called fetch function three times',
|
||||
);
|
||||
assert.strictEqual(
|
||||
getLivenessState(),
|
||||
true,
|
||||
'liveness should be true after call',
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('utils', function () {
|
@ -1,7 +1,7 @@
|
||||
import assert from 'assert';
|
||||
import sinon from 'sinon';
|
||||
import { ObservableStore } from '@metamask/obs-store';
|
||||
import TokenRatesController from '../../../../app/scripts/controllers/token-rates';
|
||||
import TokenRatesController from './token-rates';
|
||||
|
||||
describe('TokenRatesController', function () {
|
||||
let nativeCurrency;
|
@ -1,7 +1,7 @@
|
||||
import { ObservableStore } from '@metamask/obs-store';
|
||||
import log from 'loglevel';
|
||||
import { normalize as normalizeAddress } from 'eth-sig-util';
|
||||
import ethUtil from 'ethereumjs-util';
|
||||
import { toChecksumAddress } from 'ethereumjs-util';
|
||||
import getFetchWithTimeout from '../../../shared/modules/fetch-with-timeout';
|
||||
|
||||
const fetchWithTimeout = getFetchWithTimeout(30000);
|
||||
@ -45,7 +45,7 @@ export default class TokenRatesController {
|
||||
this._tokens.forEach((token) => {
|
||||
const price =
|
||||
prices[token.address.toLowerCase()] ||
|
||||
prices[ethUtil.toChecksumAddress(token.address)];
|
||||
prices[toChecksumAddress(token.address)];
|
||||
contractExchangeRates[normalizeAddress(token.address)] = price
|
||||
? price[nativeCurrency]
|
||||
: 0;
|
||||
|
@ -1,6 +1,6 @@
|
||||
import EventEmitter from 'safe-event-emitter';
|
||||
import { ObservableStore } from '@metamask/obs-store';
|
||||
import ethUtil from 'ethereumjs-util';
|
||||
import { bufferToHex, keccak, toBuffer } from 'ethereumjs-util';
|
||||
import Transaction from 'ethereumjs-tx';
|
||||
import EthQuery from 'ethjs-query';
|
||||
import { ethErrors } from 'eth-rpc-errors';
|
||||
@ -19,7 +19,6 @@ import {
|
||||
import { TRANSACTION_NO_CONTRACT_ERROR_KEY } from '../../../../ui/app/helpers/constants/error-keys';
|
||||
import { getSwapsTokensReceivedFromTxMeta } from '../../../../ui/app/pages/swaps/swaps.util';
|
||||
import {
|
||||
TRANSACTION_CATEGORIES,
|
||||
TRANSACTION_STATUSES,
|
||||
TRANSACTION_TYPES,
|
||||
} from '../../../../shared/constants/transaction';
|
||||
@ -151,8 +150,8 @@ export default class TransactionController extends EventEmitter {
|
||||
Adds a tx to the txlist
|
||||
@emits ${txMeta.id}:unapproved
|
||||
*/
|
||||
addTx(txMeta) {
|
||||
this.txStateManager.addTx(txMeta);
|
||||
addTransaction(txMeta) {
|
||||
this.txStateManager.addTransaction(txMeta);
|
||||
this.emit(`${txMeta.id}:unapproved`, txMeta);
|
||||
}
|
||||
|
||||
@ -235,11 +234,10 @@ export default class TransactionController extends EventEmitter {
|
||||
`generateTxMeta` adds the default txMeta properties to the passed object.
|
||||
These include the tx's `id`. As we use the id for determining order of
|
||||
txes in the tx-state-manager, it is necessary to call the asynchronous
|
||||
method `this._determineTransactionCategory` after `generateTxMeta`.
|
||||
method `this._determineTransactionType` after `generateTxMeta`.
|
||||
*/
|
||||
let txMeta = this.txStateManager.generateTxMeta({
|
||||
txParams: normalizedTxParams,
|
||||
type: TRANSACTION_TYPES.STANDARD,
|
||||
});
|
||||
|
||||
if (origin === 'metamask') {
|
||||
@ -265,33 +263,38 @@ export default class TransactionController extends EventEmitter {
|
||||
|
||||
txMeta.origin = origin;
|
||||
|
||||
const {
|
||||
transactionCategory,
|
||||
getCodeResponse,
|
||||
} = await this._determineTransactionCategory(txParams);
|
||||
txMeta.transactionCategory = transactionCategory;
|
||||
const { type, getCodeResponse } = await this._determineTransactionType(
|
||||
txParams,
|
||||
);
|
||||
txMeta.type = type;
|
||||
|
||||
// ensure value
|
||||
txMeta.txParams.value = txMeta.txParams.value
|
||||
? addHexPrefix(txMeta.txParams.value)
|
||||
: '0x0';
|
||||
|
||||
this.addTx(txMeta);
|
||||
this.addTransaction(txMeta);
|
||||
this.emit('newUnapprovedTx', txMeta);
|
||||
|
||||
try {
|
||||
txMeta = await this.addTxGasDefaults(txMeta, getCodeResponse);
|
||||
} catch (error) {
|
||||
log.warn(error);
|
||||
txMeta = this.txStateManager.getTx(txMeta.id);
|
||||
txMeta = this.txStateManager.getTransaction(txMeta.id);
|
||||
txMeta.loadingDefaults = false;
|
||||
this.txStateManager.updateTx(txMeta, 'Failed to calculate gas defaults.');
|
||||
this.txStateManager.updateTransaction(
|
||||
txMeta,
|
||||
'Failed to calculate gas defaults.',
|
||||
);
|
||||
throw error;
|
||||
}
|
||||
|
||||
txMeta.loadingDefaults = false;
|
||||
// save txMeta
|
||||
this.txStateManager.updateTx(txMeta, 'Added new unapproved transaction.');
|
||||
this.txStateManager.updateTransaction(
|
||||
txMeta,
|
||||
'Added new unapproved transaction.',
|
||||
);
|
||||
|
||||
return txMeta;
|
||||
}
|
||||
@ -309,7 +312,7 @@ export default class TransactionController extends EventEmitter {
|
||||
} = await this._getDefaultGasLimit(txMeta, getCodeResponse);
|
||||
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
txMeta = this.txStateManager.getTx(txMeta.id);
|
||||
txMeta = this.txStateManager.getTransaction(txMeta.id);
|
||||
if (simulationFails) {
|
||||
txMeta.simulationFails = simulationFails;
|
||||
}
|
||||
@ -347,7 +350,7 @@ export default class TransactionController extends EventEmitter {
|
||||
return {};
|
||||
} else if (
|
||||
txMeta.txParams.to &&
|
||||
txMeta.transactionCategory === TRANSACTION_CATEGORIES.SENT_ETHER
|
||||
txMeta.type === TRANSACTION_TYPES.SENT_ETHER
|
||||
) {
|
||||
// if there's data in the params, but there's no contract code, it's not a valid transaction
|
||||
if (txMeta.txParams.data) {
|
||||
@ -388,8 +391,8 @@ export default class TransactionController extends EventEmitter {
|
||||
* @param {string} [customGasPrice] - the hex value to use for the cancel transaction
|
||||
* @returns {txMeta}
|
||||
*/
|
||||
async createCancelTransaction(originalTxId, customGasPrice) {
|
||||
const originalTxMeta = this.txStateManager.getTx(originalTxId);
|
||||
async createCancelTransaction(originalTxId, customGasPrice, customGasLimit) {
|
||||
const originalTxMeta = this.txStateManager.getTransaction(originalTxId);
|
||||
const { txParams } = originalTxMeta;
|
||||
const { gasPrice: lastGasPrice, from, nonce } = txParams;
|
||||
|
||||
@ -401,7 +404,7 @@ export default class TransactionController extends EventEmitter {
|
||||
from,
|
||||
to: from,
|
||||
nonce,
|
||||
gas: '0x5208',
|
||||
gas: customGasLimit || '0x5208',
|
||||
value: '0x0',
|
||||
gasPrice: newGasPrice,
|
||||
},
|
||||
@ -411,7 +414,7 @@ export default class TransactionController extends EventEmitter {
|
||||
type: TRANSACTION_TYPES.CANCEL,
|
||||
});
|
||||
|
||||
this.addTx(newTxMeta);
|
||||
this.addTransaction(newTxMeta);
|
||||
await this.approveTransaction(newTxMeta.id);
|
||||
return newTxMeta;
|
||||
}
|
||||
@ -427,7 +430,7 @@ export default class TransactionController extends EventEmitter {
|
||||
* @returns {txMeta}
|
||||
*/
|
||||
async createSpeedUpTransaction(originalTxId, customGasPrice, customGasLimit) {
|
||||
const originalTxMeta = this.txStateManager.getTx(originalTxId);
|
||||
const originalTxMeta = this.txStateManager.getTransaction(originalTxId);
|
||||
const { txParams } = originalTxMeta;
|
||||
const { gasPrice: lastGasPrice } = txParams;
|
||||
|
||||
@ -450,7 +453,7 @@ export default class TransactionController extends EventEmitter {
|
||||
newTxMeta.txParams.gas = customGasLimit;
|
||||
}
|
||||
|
||||
this.addTx(newTxMeta);
|
||||
this.addTransaction(newTxMeta);
|
||||
await this.approveTransaction(newTxMeta.id);
|
||||
return newTxMeta;
|
||||
}
|
||||
@ -460,7 +463,10 @@ export default class TransactionController extends EventEmitter {
|
||||
@param {Object} txMeta - the updated txMeta
|
||||
*/
|
||||
async updateTransaction(txMeta) {
|
||||
this.txStateManager.updateTx(txMeta, 'confTx: user updated transaction');
|
||||
this.txStateManager.updateTransaction(
|
||||
txMeta,
|
||||
'confTx: user updated transaction',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -468,7 +474,10 @@ export default class TransactionController extends EventEmitter {
|
||||
@param {Object} txMeta
|
||||
*/
|
||||
async updateAndApproveTransaction(txMeta) {
|
||||
this.txStateManager.updateTx(txMeta, 'confTx: user approved transaction');
|
||||
this.txStateManager.updateTransaction(
|
||||
txMeta,
|
||||
'confTx: user approved transaction',
|
||||
);
|
||||
await this.approveTransaction(txMeta.id);
|
||||
}
|
||||
|
||||
@ -495,7 +504,7 @@ export default class TransactionController extends EventEmitter {
|
||||
// approve
|
||||
this.txStateManager.setTxStatusApproved(txId);
|
||||
// get next nonce
|
||||
const txMeta = this.txStateManager.getTx(txId);
|
||||
const txMeta = this.txStateManager.getTransaction(txId);
|
||||
const fromAddress = txMeta.txParams.from;
|
||||
// wait for a nonce
|
||||
let { customNonceValue } = txMeta;
|
||||
@ -516,7 +525,10 @@ export default class TransactionController extends EventEmitter {
|
||||
if (customNonceValue) {
|
||||
txMeta.nonceDetails.customNonceValue = customNonceValue;
|
||||
}
|
||||
this.txStateManager.updateTx(txMeta, 'transactions#approveTransaction');
|
||||
this.txStateManager.updateTransaction(
|
||||
txMeta,
|
||||
'transactions#approveTransaction',
|
||||
);
|
||||
// sign transaction
|
||||
const rawTx = await this.signTransaction(txId);
|
||||
await this.publishTransaction(txId, rawTx);
|
||||
@ -546,7 +558,7 @@ export default class TransactionController extends EventEmitter {
|
||||
@returns {string} rawTx
|
||||
*/
|
||||
async signTransaction(txId) {
|
||||
const txMeta = this.txStateManager.getTx(txId);
|
||||
const txMeta = this.txStateManager.getTransaction(txId);
|
||||
// add network/chain id
|
||||
const chainId = this.getChainId();
|
||||
const txParams = { ...txMeta.txParams, chainId };
|
||||
@ -557,18 +569,18 @@ export default class TransactionController extends EventEmitter {
|
||||
|
||||
// add r,s,v values for provider request purposes see createMetamaskMiddleware
|
||||
// and JSON rpc standard for further explanation
|
||||
txMeta.r = ethUtil.bufferToHex(ethTx.r);
|
||||
txMeta.s = ethUtil.bufferToHex(ethTx.s);
|
||||
txMeta.v = ethUtil.bufferToHex(ethTx.v);
|
||||
txMeta.r = bufferToHex(ethTx.r);
|
||||
txMeta.s = bufferToHex(ethTx.s);
|
||||
txMeta.v = bufferToHex(ethTx.v);
|
||||
|
||||
this.txStateManager.updateTx(
|
||||
this.txStateManager.updateTransaction(
|
||||
txMeta,
|
||||
'transactions#signTransaction: add r, s, v values',
|
||||
);
|
||||
|
||||
// set state to signed
|
||||
this.txStateManager.setTxStatusSigned(txMeta.id);
|
||||
const rawTx = ethUtil.bufferToHex(ethTx.serialize());
|
||||
const rawTx = bufferToHex(ethTx.serialize());
|
||||
return rawTx;
|
||||
}
|
||||
|
||||
@ -579,19 +591,22 @@ export default class TransactionController extends EventEmitter {
|
||||
@returns {Promise<void>}
|
||||
*/
|
||||
async publishTransaction(txId, rawTx) {
|
||||
const txMeta = this.txStateManager.getTx(txId);
|
||||
const txMeta = this.txStateManager.getTransaction(txId);
|
||||
txMeta.rawTx = rawTx;
|
||||
if (txMeta.transactionCategory === TRANSACTION_CATEGORIES.SWAP) {
|
||||
if (txMeta.type === TRANSACTION_TYPES.SWAP) {
|
||||
const preTxBalance = await this.query.getBalance(txMeta.txParams.from);
|
||||
txMeta.preTxBalance = preTxBalance.toString(16);
|
||||
}
|
||||
this.txStateManager.updateTx(txMeta, 'transactions#publishTransaction');
|
||||
this.txStateManager.updateTransaction(
|
||||
txMeta,
|
||||
'transactions#publishTransaction',
|
||||
);
|
||||
let txHash;
|
||||
try {
|
||||
txHash = await this.query.sendRawTransaction(rawTx);
|
||||
} catch (error) {
|
||||
if (error.message.toLowerCase().includes('known transaction')) {
|
||||
txHash = ethUtil.sha3(addHexPrefix(rawTx)).toString('hex');
|
||||
txHash = keccak(toBuffer(addHexPrefix(rawTx), 'hex')).toString('hex');
|
||||
txHash = addHexPrefix(txHash);
|
||||
} else {
|
||||
throw error;
|
||||
@ -611,7 +626,7 @@ export default class TransactionController extends EventEmitter {
|
||||
async confirmTransaction(txId, txReceipt) {
|
||||
// get the txReceipt before marking the transaction confirmed
|
||||
// to ensure the receipt is gotten before the ui revives the tx
|
||||
const txMeta = this.txStateManager.getTx(txId);
|
||||
const txMeta = this.txStateManager.getTransaction(txId);
|
||||
|
||||
if (!txMeta) {
|
||||
return;
|
||||
@ -632,22 +647,22 @@ export default class TransactionController extends EventEmitter {
|
||||
this.txStateManager.setTxStatusConfirmed(txId);
|
||||
this._markNonceDuplicatesDropped(txId);
|
||||
|
||||
this.txStateManager.updateTx(
|
||||
this.txStateManager.updateTransaction(
|
||||
txMeta,
|
||||
'transactions#confirmTransaction - add txReceipt',
|
||||
);
|
||||
|
||||
if (txMeta.transactionCategory === TRANSACTION_CATEGORIES.SWAP) {
|
||||
if (txMeta.type === TRANSACTION_TYPES.SWAP) {
|
||||
const postTxBalance = await this.query.getBalance(txMeta.txParams.from);
|
||||
const latestTxMeta = this.txStateManager.getTx(txId);
|
||||
const latestTxMeta = this.txStateManager.getTransaction(txId);
|
||||
|
||||
const approvalTxMeta = latestTxMeta.approvalTxId
|
||||
? this.txStateManager.getTx(latestTxMeta.approvalTxId)
|
||||
? this.txStateManager.getTransaction(latestTxMeta.approvalTxId)
|
||||
: null;
|
||||
|
||||
latestTxMeta.postTxBalance = postTxBalance.toString(16);
|
||||
|
||||
this.txStateManager.updateTx(
|
||||
this.txStateManager.updateTransaction(
|
||||
latestTxMeta,
|
||||
'transactions#confirmTransaction - add postTxBalance',
|
||||
);
|
||||
@ -675,9 +690,9 @@ export default class TransactionController extends EventEmitter {
|
||||
*/
|
||||
setTxHash(txId, txHash) {
|
||||
// Add the tx hash to the persisted meta-tx object
|
||||
const txMeta = this.txStateManager.getTx(txId);
|
||||
const txMeta = this.txStateManager.getTransaction(txId);
|
||||
txMeta.hash = txHash;
|
||||
this.txStateManager.updateTx(txMeta, 'transactions#setTxHash');
|
||||
this.txStateManager.updateTransaction(txMeta, 'transactions#setTxHash');
|
||||
}
|
||||
|
||||
//
|
||||
@ -707,8 +722,7 @@ export default class TransactionController extends EventEmitter {
|
||||
this.txStateManager.getPendingTransactions(account).length;
|
||||
|
||||
/** see txStateManager */
|
||||
this.getFilteredTxList = (opts) =>
|
||||
this.txStateManager.getFilteredTxList(opts);
|
||||
this.getTransactions = (opts) => this.txStateManager.getTransactions(opts);
|
||||
}
|
||||
|
||||
// called once on startup
|
||||
@ -727,23 +741,25 @@ export default class TransactionController extends EventEmitter {
|
||||
|
||||
_onBootCleanUp() {
|
||||
this.txStateManager
|
||||
.getFilteredTxList({
|
||||
.getTransactions({
|
||||
searchCriteria: {
|
||||
status: TRANSACTION_STATUSES.UNAPPROVED,
|
||||
loadingDefaults: true,
|
||||
},
|
||||
})
|
||||
.forEach((tx) => {
|
||||
this.addTxGasDefaults(tx)
|
||||
.then((txMeta) => {
|
||||
txMeta.loadingDefaults = false;
|
||||
this.txStateManager.updateTx(
|
||||
this.txStateManager.updateTransaction(
|
||||
txMeta,
|
||||
'transactions: gas estimation for tx on boot',
|
||||
);
|
||||
})
|
||||
.catch((error) => {
|
||||
const txMeta = this.txStateManager.getTx(tx.id);
|
||||
const txMeta = this.txStateManager.getTransaction(tx.id);
|
||||
txMeta.loadingDefaults = false;
|
||||
this.txStateManager.updateTx(
|
||||
this.txStateManager.updateTransaction(
|
||||
txMeta,
|
||||
'failed to estimate gas during boot cleanup.',
|
||||
);
|
||||
@ -752,8 +768,10 @@ export default class TransactionController extends EventEmitter {
|
||||
});
|
||||
|
||||
this.txStateManager
|
||||
.getFilteredTxList({
|
||||
.getTransactions({
|
||||
searchCriteria: {
|
||||
status: TRANSACTION_STATUSES.APPROVED,
|
||||
},
|
||||
})
|
||||
.forEach((txMeta) => {
|
||||
const txSignError = new Error(
|
||||
@ -774,7 +792,7 @@ export default class TransactionController extends EventEmitter {
|
||||
);
|
||||
this._setupBlockTrackerListener();
|
||||
this.pendingTxTracker.on('tx:warning', (txMeta) => {
|
||||
this.txStateManager.updateTx(
|
||||
this.txStateManager.updateTransaction(
|
||||
txMeta,
|
||||
'transactions/pending-tx-tracker#event: tx:warning',
|
||||
);
|
||||
@ -793,7 +811,7 @@ export default class TransactionController extends EventEmitter {
|
||||
this.pendingTxTracker.on('tx:block-update', (txMeta, latestBlockNumber) => {
|
||||
if (!txMeta.firstRetryBlockNumber) {
|
||||
txMeta.firstRetryBlockNumber = latestBlockNumber;
|
||||
this.txStateManager.updateTx(
|
||||
this.txStateManager.updateTransaction(
|
||||
txMeta,
|
||||
'transactions/pending-tx-tracker#event: tx:block-update',
|
||||
);
|
||||
@ -804,7 +822,7 @@ export default class TransactionController extends EventEmitter {
|
||||
txMeta.retryCount = 0;
|
||||
}
|
||||
txMeta.retryCount += 1;
|
||||
this.txStateManager.updateTx(
|
||||
this.txStateManager.updateTransaction(
|
||||
txMeta,
|
||||
'transactions/pending-tx-tracker#event: tx:retry',
|
||||
);
|
||||
@ -812,10 +830,27 @@ export default class TransactionController extends EventEmitter {
|
||||
}
|
||||
|
||||
/**
|
||||
Returns a "type" for a transaction out of the following list: simpleSend, tokenTransfer, tokenApprove,
|
||||
contractDeployment, contractMethodCall
|
||||
* @typedef { 'transfer' | 'approve' | 'transferfrom' | 'contractInteraction'| 'sentEther' } InferrableTransactionTypes
|
||||
*/
|
||||
async _determineTransactionCategory(txParams) {
|
||||
|
||||
/**
|
||||
* @typedef {Object} InferTransactionTypeResult
|
||||
* @property {InferrableTransactionTypes} type - The type of transaction
|
||||
* @property {string} getCodeResponse - The contract code, in hex format if
|
||||
* it exists. '0x0' or '0x' are also indicators of non-existent contract
|
||||
* code
|
||||
*/
|
||||
|
||||
/**
|
||||
* Determines the type of the transaction by analyzing the txParams.
|
||||
* This method will return one of the types defined in shared/constants/transactions
|
||||
* It will never return TRANSACTION_TYPE_CANCEL or TRANSACTION_TYPE_RETRY as these
|
||||
* represent specific events that we control from the extension and are added manually
|
||||
* at transaction creation.
|
||||
* @param {Object} txParams - Parameters for the transaction
|
||||
* @returns {InferTransactionTypeResult}
|
||||
*/
|
||||
async _determineTransactionType(txParams) {
|
||||
const { data, to } = txParams;
|
||||
let name;
|
||||
try {
|
||||
@ -825,16 +860,16 @@ export default class TransactionController extends EventEmitter {
|
||||
}
|
||||
|
||||
const tokenMethodName = [
|
||||
TRANSACTION_CATEGORIES.TOKEN_METHOD_APPROVE,
|
||||
TRANSACTION_CATEGORIES.TOKEN_METHOD_TRANSFER,
|
||||
TRANSACTION_CATEGORIES.TOKEN_METHOD_TRANSFER_FROM,
|
||||
TRANSACTION_TYPES.TOKEN_METHOD_APPROVE,
|
||||
TRANSACTION_TYPES.TOKEN_METHOD_TRANSFER,
|
||||
TRANSACTION_TYPES.TOKEN_METHOD_TRANSFER_FROM,
|
||||
].find((methodName) => methodName === name && name.toLowerCase());
|
||||
|
||||
let result;
|
||||
if (data && tokenMethodName) {
|
||||
result = tokenMethodName;
|
||||
} else if (data && !to) {
|
||||
result = TRANSACTION_CATEGORIES.DEPLOY_CONTRACT;
|
||||
result = TRANSACTION_TYPES.DEPLOY_CONTRACT;
|
||||
}
|
||||
|
||||
let code;
|
||||
@ -849,11 +884,11 @@ export default class TransactionController extends EventEmitter {
|
||||
const codeIsEmpty = !code || code === '0x' || code === '0x0';
|
||||
|
||||
result = codeIsEmpty
|
||||
? TRANSACTION_CATEGORIES.SENT_ETHER
|
||||
: TRANSACTION_CATEGORIES.CONTRACT_INTERACTION;
|
||||
? TRANSACTION_TYPES.SENT_ETHER
|
||||
: TRANSACTION_TYPES.CONTRACT_INTERACTION;
|
||||
}
|
||||
|
||||
return { transactionCategory: result, getCodeResponse: code };
|
||||
return { type: result, getCodeResponse: code };
|
||||
}
|
||||
|
||||
/**
|
||||
@ -864,9 +899,11 @@ export default class TransactionController extends EventEmitter {
|
||||
*/
|
||||
_markNonceDuplicatesDropped(txId) {
|
||||
// get the confirmed transactions nonce and from address
|
||||
const txMeta = this.txStateManager.getTx(txId);
|
||||
const txMeta = this.txStateManager.getTransaction(txId);
|
||||
const { nonce, from } = txMeta.txParams;
|
||||
const sameNonceTxs = this.txStateManager.getFilteredTxList({ nonce, from });
|
||||
const sameNonceTxs = this.txStateManager.getTransactions({
|
||||
searchCriteria: { nonce, from },
|
||||
});
|
||||
if (!sameNonceTxs.length) {
|
||||
return;
|
||||
}
|
||||
@ -876,7 +913,7 @@ export default class TransactionController extends EventEmitter {
|
||||
return;
|
||||
}
|
||||
otherTxMeta.replacedBy = txMeta.hash;
|
||||
this.txStateManager.updateTx(
|
||||
this.txStateManager.updateTransaction(
|
||||
txMeta,
|
||||
'transactions/pending-tx-tracker#event: tx:confirmed reference to confirmed txHash with same nonce',
|
||||
);
|
||||
@ -922,9 +959,9 @@ export default class TransactionController extends EventEmitter {
|
||||
*/
|
||||
_updateMemstore() {
|
||||
const unapprovedTxs = this.txStateManager.getUnapprovedTxList();
|
||||
const currentNetworkTxList = this.txStateManager.getTxList(
|
||||
MAX_MEMSTORE_TX_LIST_SIZE,
|
||||
);
|
||||
const currentNetworkTxList = this.txStateManager.getTransactions({
|
||||
limit: MAX_MEMSTORE_TX_LIST_SIZE,
|
||||
});
|
||||
this.memStore.updateState({ unapprovedTxs, currentNetworkTxList });
|
||||
}
|
||||
|
||||
|
@ -1,26 +1,28 @@
|
||||
import { strict as assert } from 'assert';
|
||||
import EventEmitter from 'events';
|
||||
import ethUtil from 'ethereumjs-util';
|
||||
import { toBuffer } from 'ethereumjs-util';
|
||||
import EthTx from 'ethereumjs-tx';
|
||||
import { ObservableStore } from '@metamask/obs-store';
|
||||
import sinon from 'sinon';
|
||||
import TransactionController from '../../../../../app/scripts/controllers/transactions';
|
||||
|
||||
import {
|
||||
createTestProviderTools,
|
||||
getTestAccounts,
|
||||
} from '../../../../stub/provider';
|
||||
} from '../../../../test/stub/provider';
|
||||
import {
|
||||
TRANSACTION_CATEGORIES,
|
||||
TRANSACTION_STATUSES,
|
||||
TRANSACTION_TYPES,
|
||||
} from '../../../../../shared/constants/transaction';
|
||||
import { METAMASK_CONTROLLER_EVENTS } from '../../../../../app/scripts/metamask-controller';
|
||||
} from '../../../../shared/constants/transaction';
|
||||
import { METAMASK_CONTROLLER_EVENTS } from '../../metamask-controller';
|
||||
import TransactionController from '.';
|
||||
|
||||
const noop = () => true;
|
||||
const currentNetworkId = '42';
|
||||
const currentChainId = '0x2a';
|
||||
|
||||
const VALID_ADDRESS = '0x0000000000000000000000000000000000000000';
|
||||
const VALID_ADDRESS_TWO = '0x0000000000000000000000000000000000000001';
|
||||
|
||||
describe('Transaction Controller', function () {
|
||||
let txController, provider, providerResultStub, fromAccount;
|
||||
|
||||
@ -82,26 +84,35 @@ describe('Transaction Controller', function () {
|
||||
|
||||
describe('#getUnapprovedTxCount', function () {
|
||||
it('should return the number of unapproved txs', function () {
|
||||
txController.txStateManager._saveTxList([
|
||||
txController.txStateManager._addTransactionsToState([
|
||||
{
|
||||
id: 1,
|
||||
status: TRANSACTION_STATUSES.UNAPPROVED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
history: [{}],
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
status: TRANSACTION_STATUSES.UNAPPROVED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
history: [{}],
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
status: TRANSACTION_STATUSES.UNAPPROVED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
history: [{}],
|
||||
},
|
||||
]);
|
||||
@ -112,26 +123,35 @@ describe('Transaction Controller', function () {
|
||||
|
||||
describe('#getPendingTxCount', function () {
|
||||
it('should return the number of pending txs', function () {
|
||||
txController.txStateManager._saveTxList([
|
||||
txController.txStateManager._addTransactionsToState([
|
||||
{
|
||||
id: 1,
|
||||
status: TRANSACTION_STATUSES.SUBMITTED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
history: [{}],
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
status: TRANSACTION_STATUSES.SUBMITTED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
history: [{}],
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
status: TRANSACTION_STATUSES.SUBMITTED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
history: [{}],
|
||||
},
|
||||
]);
|
||||
@ -147,7 +167,7 @@ describe('Transaction Controller', function () {
|
||||
from: address,
|
||||
to: '0xc684832530fcbddae4b4230a47e991ddcec2831d',
|
||||
};
|
||||
txController.txStateManager._saveTxList([
|
||||
txController.txStateManager._addTransactionsToState([
|
||||
{
|
||||
id: 0,
|
||||
status: TRANSACTION_STATUSES.CONFIRMED,
|
||||
@ -233,17 +253,19 @@ describe('Transaction Controller', function () {
|
||||
txParams,
|
||||
history: [{}],
|
||||
};
|
||||
txController.txStateManager._saveTxList([txMeta]);
|
||||
txController.txStateManager._addTransactionsToState([txMeta]);
|
||||
stub = sinon
|
||||
.stub(txController, 'addUnapprovedTransaction')
|
||||
.callsFake(() => {
|
||||
txController.emit('newUnapprovedTx', txMeta);
|
||||
return Promise.resolve(txController.txStateManager.addTx(txMeta));
|
||||
return Promise.resolve(
|
||||
txController.txStateManager.addTransaction(txMeta),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
afterEach(function () {
|
||||
txController.txStateManager._saveTxList([]);
|
||||
txController.txStateManager._addTransactionsToState([]);
|
||||
stub.restore();
|
||||
});
|
||||
|
||||
@ -313,7 +335,7 @@ describe('Transaction Controller', function () {
|
||||
'should have added 0x0 as the value',
|
||||
);
|
||||
|
||||
const memTxMeta = txController.txStateManager.getTx(txMeta.id);
|
||||
const memTxMeta = txController.txStateManager.getTransaction(txMeta.id);
|
||||
assert.deepEqual(txMeta, memTxMeta);
|
||||
});
|
||||
|
||||
@ -354,12 +376,15 @@ describe('Transaction Controller', function () {
|
||||
|
||||
describe('#addTxGasDefaults', function () {
|
||||
it('should add the tx defaults if their are none', async function () {
|
||||
txController.txStateManager._saveTxList([
|
||||
txController.txStateManager._addTransactionsToState([
|
||||
{
|
||||
id: 1,
|
||||
status: TRANSACTION_STATUSES.UNAPPROVED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
history: [{}],
|
||||
},
|
||||
]);
|
||||
@ -387,13 +412,16 @@ describe('Transaction Controller', function () {
|
||||
});
|
||||
});
|
||||
|
||||
describe('#addTx', function () {
|
||||
describe('#addTransaction', function () {
|
||||
it('should emit updates', function (done) {
|
||||
const txMeta = {
|
||||
id: '1',
|
||||
status: TRANSACTION_STATUSES.UNAPPROVED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
};
|
||||
|
||||
const eventNames = [
|
||||
@ -420,7 +448,7 @@ describe('Transaction Controller', function () {
|
||||
done();
|
||||
})
|
||||
.catch(done);
|
||||
txController.addTx(txMeta);
|
||||
txController.addTransaction(txMeta);
|
||||
});
|
||||
});
|
||||
|
||||
@ -432,6 +460,8 @@ describe('Transaction Controller', function () {
|
||||
status: TRANSACTION_STATUSES.UNAPPROVED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
txParams: {
|
||||
to: VALID_ADDRESS_TWO,
|
||||
from: VALID_ADDRESS,
|
||||
nonce: originalValue,
|
||||
gas: originalValue,
|
||||
gasPrice: originalValue,
|
||||
@ -441,7 +471,7 @@ describe('Transaction Controller', function () {
|
||||
this.timeout(15000);
|
||||
const wrongValue = '0x05';
|
||||
|
||||
txController.addTx(txMeta);
|
||||
txController.addTransaction(txMeta);
|
||||
providerResultStub.eth_gasPrice = wrongValue;
|
||||
providerResultStub.eth_estimateGas = '0x5209';
|
||||
|
||||
@ -457,7 +487,7 @@ describe('Transaction Controller', function () {
|
||||
});
|
||||
|
||||
await txController.approveTransaction(txMeta.id);
|
||||
const result = txController.txStateManager.getTx(txMeta.id);
|
||||
const result = txController.txStateManager.getTransaction(txMeta.id);
|
||||
const params = result.txParams;
|
||||
|
||||
assert.equal(params.gas, originalValue, 'gas unmodified');
|
||||
@ -475,17 +505,20 @@ describe('Transaction Controller', function () {
|
||||
|
||||
describe('#sign replay-protected tx', function () {
|
||||
it('prepares a tx with the chainId set', async function () {
|
||||
txController.addTx(
|
||||
txController.addTransaction(
|
||||
{
|
||||
id: '1',
|
||||
status: TRANSACTION_STATUSES.UNAPPROVED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
},
|
||||
noop,
|
||||
);
|
||||
const rawTx = await txController.signTransaction('1');
|
||||
const ethTx = new EthTx(ethUtil.toBuffer(rawTx));
|
||||
const ethTx = new EthTx(toBuffer(rawTx));
|
||||
assert.equal(ethTx.getChainId(), 42);
|
||||
});
|
||||
});
|
||||
@ -504,9 +537,9 @@ describe('Transaction Controller', function () {
|
||||
},
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
};
|
||||
txController.txStateManager.addTx(txMeta);
|
||||
txController.txStateManager.addTransaction(txMeta);
|
||||
const approvalPromise = txController.updateAndApproveTransaction(txMeta);
|
||||
const tx = txController.txStateManager.getTx(1);
|
||||
const tx = txController.txStateManager.getTransaction(1);
|
||||
assert.equal(tx.status, TRANSACTION_STATUSES.APPROVED);
|
||||
await approvalPromise;
|
||||
});
|
||||
@ -521,53 +554,74 @@ describe('Transaction Controller', function () {
|
||||
|
||||
describe('#cancelTransaction', function () {
|
||||
it('should emit a status change to rejected', function (done) {
|
||||
txController.txStateManager._saveTxList([
|
||||
txController.txStateManager._addTransactionsToState([
|
||||
{
|
||||
id: 0,
|
||||
status: TRANSACTION_STATUSES.UNAPPROVED,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
history: [{}],
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
status: TRANSACTION_STATUSES.REJECTED,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
history: [{}],
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
status: TRANSACTION_STATUSES.APPROVED,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
history: [{}],
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
status: TRANSACTION_STATUSES.SIGNED,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
history: [{}],
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
status: TRANSACTION_STATUSES.SUBMITTED,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
history: [{}],
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
status: TRANSACTION_STATUSES.CONFIRMED,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
history: [{}],
|
||||
},
|
||||
{
|
||||
id: 6,
|
||||
status: TRANSACTION_STATUSES.FAILED,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
history: [{}],
|
||||
},
|
||||
@ -592,13 +646,13 @@ describe('Transaction Controller', function () {
|
||||
});
|
||||
|
||||
describe('#createSpeedUpTransaction', function () {
|
||||
let addTxSpy;
|
||||
let addTransactionSpy;
|
||||
let approveTransactionSpy;
|
||||
let txParams;
|
||||
let expectedTxParams;
|
||||
|
||||
beforeEach(function () {
|
||||
addTxSpy = sinon.spy(txController, 'addTx');
|
||||
addTransactionSpy = sinon.spy(txController, 'addTransaction');
|
||||
approveTransactionSpy = sinon.spy(txController, 'approveTransaction');
|
||||
|
||||
txParams = {
|
||||
@ -608,7 +662,7 @@ describe('Transaction Controller', function () {
|
||||
gas: '0x5209',
|
||||
gasPrice: '0xa',
|
||||
};
|
||||
txController.txStateManager._saveTxList([
|
||||
txController.txStateManager._addTransactionsToState([
|
||||
{
|
||||
id: 1,
|
||||
status: TRANSACTION_STATUSES.SUBMITTED,
|
||||
@ -622,18 +676,18 @@ describe('Transaction Controller', function () {
|
||||
});
|
||||
|
||||
afterEach(function () {
|
||||
addTxSpy.restore();
|
||||
addTransactionSpy.restore();
|
||||
approveTransactionSpy.restore();
|
||||
});
|
||||
|
||||
it('should call this.addTx and this.approveTransaction with the expected args', async function () {
|
||||
it('should call this.addTransaction and this.approveTransaction with the expected args', async function () {
|
||||
await txController.createSpeedUpTransaction(1);
|
||||
assert.equal(addTxSpy.callCount, 1);
|
||||
assert.equal(addTransactionSpy.callCount, 1);
|
||||
|
||||
const addTxArgs = addTxSpy.getCall(0).args[0];
|
||||
assert.deepEqual(addTxArgs.txParams, expectedTxParams);
|
||||
const addTransactionArgs = addTransactionSpy.getCall(0).args[0];
|
||||
assert.deepEqual(addTransactionArgs.txParams, expectedTxParams);
|
||||
|
||||
const { lastGasPrice, type } = addTxArgs;
|
||||
const { lastGasPrice, type } = addTransactionArgs;
|
||||
assert.deepEqual(
|
||||
{ lastGasPrice, type },
|
||||
{
|
||||
@ -675,7 +729,10 @@ describe('Transaction Controller', function () {
|
||||
txMeta = {
|
||||
id: 1,
|
||||
status: TRANSACTION_STATUSES.UNAPPROVED,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
};
|
||||
providerResultStub.eth_sendRawTransaction = hash;
|
||||
@ -684,9 +741,9 @@ describe('Transaction Controller', function () {
|
||||
it('should publish a tx, updates the rawTx when provided a one', async function () {
|
||||
const rawTx =
|
||||
'0x477b2e6553c917af0db0388ae3da62965ff1a184558f61b749d1266b2e6d024c';
|
||||
txController.txStateManager.addTx(txMeta);
|
||||
txController.txStateManager.addTransaction(txMeta);
|
||||
await txController.publishTransaction(txMeta.id, rawTx);
|
||||
const publishedTx = txController.txStateManager.getTx(1);
|
||||
const publishedTx = txController.txStateManager.getTransaction(1);
|
||||
assert.equal(publishedTx.hash, hash);
|
||||
assert.equal(publishedTx.status, TRANSACTION_STATUSES.SUBMITTED);
|
||||
});
|
||||
@ -697,9 +754,9 @@ describe('Transaction Controller', function () {
|
||||
};
|
||||
const rawTx =
|
||||
'0xf86204831e848082520894f231d46dd78806e1dd93442cf33c7671f853874880802ca05f973e540f2d3c2f06d3725a626b75247593cb36477187ae07ecfe0a4db3cf57a00259b52ee8c58baaa385fb05c3f96116e58de89bcc165cb3bfdfc708672fed8a';
|
||||
txController.txStateManager.addTx(txMeta);
|
||||
txController.txStateManager.addTransaction(txMeta);
|
||||
await txController.publishTransaction(txMeta.id, rawTx);
|
||||
const publishedTx = txController.txStateManager.getTx(1);
|
||||
const publishedTx = txController.txStateManager.getTransaction(1);
|
||||
assert.equal(
|
||||
publishedTx.hash,
|
||||
'0x2cc5a25744486f7383edebbf32003e5a66e18135799593d6b5cdd2bb43674f09',
|
||||
@ -710,62 +767,92 @@ describe('Transaction Controller', function () {
|
||||
|
||||
describe('#_markNonceDuplicatesDropped', function () {
|
||||
it('should mark all nonce duplicates as dropped without marking the confirmed transaction as dropped', function () {
|
||||
txController.txStateManager._saveTxList([
|
||||
txController.txStateManager._addTransactionsToState([
|
||||
{
|
||||
id: 1,
|
||||
status: TRANSACTION_STATUSES.CONFIRMED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
history: [{}],
|
||||
txParams: { nonce: '0x01' },
|
||||
txParams: {
|
||||
to: VALID_ADDRESS_TWO,
|
||||
from: VALID_ADDRESS,
|
||||
nonce: '0x01',
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
status: TRANSACTION_STATUSES.SUBMITTED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
history: [{}],
|
||||
txParams: { nonce: '0x01' },
|
||||
txParams: {
|
||||
to: VALID_ADDRESS_TWO,
|
||||
from: VALID_ADDRESS,
|
||||
nonce: '0x01',
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
status: TRANSACTION_STATUSES.SUBMITTED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
history: [{}],
|
||||
txParams: { nonce: '0x01' },
|
||||
txParams: {
|
||||
to: VALID_ADDRESS_TWO,
|
||||
from: VALID_ADDRESS,
|
||||
nonce: '0x01',
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
status: TRANSACTION_STATUSES.SUBMITTED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
history: [{}],
|
||||
txParams: { nonce: '0x01' },
|
||||
txParams: {
|
||||
to: VALID_ADDRESS_TWO,
|
||||
from: VALID_ADDRESS,
|
||||
nonce: '0x01',
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
status: TRANSACTION_STATUSES.SUBMITTED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
history: [{}],
|
||||
txParams: { nonce: '0x01' },
|
||||
txParams: {
|
||||
to: VALID_ADDRESS_TWO,
|
||||
from: VALID_ADDRESS,
|
||||
nonce: '0x01',
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 6,
|
||||
status: TRANSACTION_STATUSES.SUBMITTED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
history: [{}],
|
||||
txParams: { nonce: '0x01' },
|
||||
txParams: {
|
||||
to: VALID_ADDRESS_TWO,
|
||||
from: VALID_ADDRESS,
|
||||
nonce: '0x01',
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 7,
|
||||
status: TRANSACTION_STATUSES.SUBMITTED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
history: [{}],
|
||||
txParams: { nonce: '0x01' },
|
||||
txParams: {
|
||||
to: VALID_ADDRESS_TWO,
|
||||
from: VALID_ADDRESS,
|
||||
nonce: '0x01',
|
||||
},
|
||||
},
|
||||
]);
|
||||
txController._markNonceDuplicatesDropped(1);
|
||||
const confirmedTx = txController.txStateManager.getTx(1);
|
||||
const droppedTxs = txController.txStateManager.getFilteredTxList({
|
||||
const confirmedTx = txController.txStateManager.getTransaction(1);
|
||||
const droppedTxs = txController.txStateManager.getTransactions({
|
||||
searchCriteria: {
|
||||
nonce: '0x01',
|
||||
status: TRANSACTION_STATUSES.DROPPED,
|
||||
},
|
||||
});
|
||||
assert.equal(
|
||||
confirmedTx.status,
|
||||
@ -776,76 +863,76 @@ describe('Transaction Controller', function () {
|
||||
});
|
||||
});
|
||||
|
||||
describe('#_determineTransactionCategory', function () {
|
||||
it('should return a simple send transactionCategory when to is truthy but data is falsy', async function () {
|
||||
const result = await txController._determineTransactionCategory({
|
||||
describe('#_determineTransactionType', function () {
|
||||
it('should return a simple send type when to is truthy but data is falsy', async function () {
|
||||
const result = await txController._determineTransactionType({
|
||||
to: '0xabc',
|
||||
data: '',
|
||||
});
|
||||
assert.deepEqual(result, {
|
||||
transactionCategory: TRANSACTION_CATEGORIES.SENT_ETHER,
|
||||
type: TRANSACTION_TYPES.SENT_ETHER,
|
||||
getCodeResponse: null,
|
||||
});
|
||||
});
|
||||
|
||||
it('should return a token transfer transactionCategory when data is for the respective method call', async function () {
|
||||
const result = await txController._determineTransactionCategory({
|
||||
it('should return a token transfer type when data is for the respective method call', async function () {
|
||||
const result = await txController._determineTransactionType({
|
||||
to: '0xabc',
|
||||
data:
|
||||
'0xa9059cbb0000000000000000000000002f318C334780961FB129D2a6c30D0763d9a5C970000000000000000000000000000000000000000000000000000000000000000a',
|
||||
});
|
||||
assert.deepEqual(result, {
|
||||
transactionCategory: TRANSACTION_CATEGORIES.TOKEN_METHOD_TRANSFER,
|
||||
type: TRANSACTION_TYPES.TOKEN_METHOD_TRANSFER,
|
||||
getCodeResponse: undefined,
|
||||
});
|
||||
});
|
||||
|
||||
it('should return a token approve transactionCategory when data is for the respective method call', async function () {
|
||||
const result = await txController._determineTransactionCategory({
|
||||
it('should return a token approve type when data is for the respective method call', async function () {
|
||||
const result = await txController._determineTransactionType({
|
||||
to: '0xabc',
|
||||
data:
|
||||
'0x095ea7b30000000000000000000000002f318C334780961FB129D2a6c30D0763d9a5C9700000000000000000000000000000000000000000000000000000000000000005',
|
||||
});
|
||||
assert.deepEqual(result, {
|
||||
transactionCategory: TRANSACTION_CATEGORIES.TOKEN_METHOD_APPROVE,
|
||||
type: TRANSACTION_TYPES.TOKEN_METHOD_APPROVE,
|
||||
getCodeResponse: undefined,
|
||||
});
|
||||
});
|
||||
|
||||
it('should return a contract deployment transactionCategory when to is falsy and there is data', async function () {
|
||||
const result = await txController._determineTransactionCategory({
|
||||
it('should return a contract deployment type when to is falsy and there is data', async function () {
|
||||
const result = await txController._determineTransactionType({
|
||||
to: '',
|
||||
data: '0xabd',
|
||||
});
|
||||
assert.deepEqual(result, {
|
||||
transactionCategory: TRANSACTION_CATEGORIES.DEPLOY_CONTRACT,
|
||||
type: TRANSACTION_TYPES.DEPLOY_CONTRACT,
|
||||
getCodeResponse: undefined,
|
||||
});
|
||||
});
|
||||
|
||||
it('should return a simple send transactionCategory with a 0x getCodeResponse when there is data and but the to address is not a contract address', async function () {
|
||||
const result = await txController._determineTransactionCategory({
|
||||
it('should return a simple send type with a 0x getCodeResponse when there is data and but the to address is not a contract address', async function () {
|
||||
const result = await txController._determineTransactionType({
|
||||
to: '0x9e673399f795D01116e9A8B2dD2F156705131ee9',
|
||||
data: '0xabd',
|
||||
});
|
||||
assert.deepEqual(result, {
|
||||
transactionCategory: TRANSACTION_CATEGORIES.SENT_ETHER,
|
||||
type: TRANSACTION_TYPES.SENT_ETHER,
|
||||
getCodeResponse: '0x',
|
||||
});
|
||||
});
|
||||
|
||||
it('should return a simple send transactionCategory with a null getCodeResponse when to is truthy and there is data and but getCode returns an error', async function () {
|
||||
const result = await txController._determineTransactionCategory({
|
||||
it('should return a simple send type with a null getCodeResponse when to is truthy and there is data and but getCode returns an error', async function () {
|
||||
const result = await txController._determineTransactionType({
|
||||
to: '0xabc',
|
||||
data: '0xabd',
|
||||
});
|
||||
assert.deepEqual(result, {
|
||||
transactionCategory: TRANSACTION_CATEGORIES.SENT_ETHER,
|
||||
type: TRANSACTION_TYPES.SENT_ETHER,
|
||||
getCodeResponse: null,
|
||||
});
|
||||
});
|
||||
|
||||
it('should return a contract interaction transactionCategory with the correct getCodeResponse when to is truthy and there is data and it is not a token transaction', async function () {
|
||||
it('should return a contract interaction type with the correct getCodeResponse when to is truthy and there is data and it is not a token transaction', async function () {
|
||||
const _providerResultStub = {
|
||||
// 1 gwei
|
||||
eth_gasPrice: '0x0de0b6b3a7640000',
|
||||
@ -875,17 +962,17 @@ describe('Transaction Controller', function () {
|
||||
}),
|
||||
getParticipateInMetrics: () => false,
|
||||
});
|
||||
const result = await _txController._determineTransactionCategory({
|
||||
const result = await _txController._determineTransactionType({
|
||||
to: '0x9e673399f795D01116e9A8B2dD2F156705131ee9',
|
||||
data: 'abd',
|
||||
});
|
||||
assert.deepEqual(result, {
|
||||
transactionCategory: TRANSACTION_CATEGORIES.CONTRACT_INTERACTION,
|
||||
type: TRANSACTION_TYPES.CONTRACT_INTERACTION,
|
||||
getCodeResponse: '0x0a',
|
||||
});
|
||||
});
|
||||
|
||||
it('should return a contract interaction transactionCategory with the correct getCodeResponse when to is a contract address and data is falsy', async function () {
|
||||
it('should return a contract interaction type with the correct getCodeResponse when to is a contract address and data is falsy', async function () {
|
||||
const _providerResultStub = {
|
||||
// 1 gwei
|
||||
eth_gasPrice: '0x0de0b6b3a7640000',
|
||||
@ -915,12 +1002,12 @@ describe('Transaction Controller', function () {
|
||||
}),
|
||||
getParticipateInMetrics: () => false,
|
||||
});
|
||||
const result = await _txController._determineTransactionCategory({
|
||||
const result = await _txController._determineTransactionType({
|
||||
to: '0x9e673399f795D01116e9A8B2dD2F156705131ee9',
|
||||
data: '',
|
||||
});
|
||||
assert.deepEqual(result, {
|
||||
transactionCategory: TRANSACTION_CATEGORIES.CONTRACT_INTERACTION,
|
||||
type: TRANSACTION_TYPES.CONTRACT_INTERACTION,
|
||||
getCodeResponse: '0x0a',
|
||||
});
|
||||
});
|
||||
@ -928,53 +1015,74 @@ describe('Transaction Controller', function () {
|
||||
|
||||
describe('#getPendingTransactions', function () {
|
||||
it('should show only submitted and approved transactions as pending transaction', function () {
|
||||
txController.txStateManager._saveTxList([
|
||||
txController.txStateManager._addTransactionsToState([
|
||||
{
|
||||
id: 1,
|
||||
status: TRANSACTION_STATUSES.UNAPPROVED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
status: TRANSACTION_STATUSES.REJECTED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
history: [{}],
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
status: TRANSACTION_STATUSES.APPROVED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
history: [{}],
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
status: TRANSACTION_STATUSES.SIGNED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
history: [{}],
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
status: TRANSACTION_STATUSES.SUBMITTED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
history: [{}],
|
||||
},
|
||||
{
|
||||
id: 6,
|
||||
status: TRANSACTION_STATUSES.CONFIRMED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
history: [{}],
|
||||
},
|
||||
{
|
||||
id: 7,
|
||||
status: TRANSACTION_STATUSES.FAILED,
|
||||
metamaskNetworkId: currentNetworkId,
|
||||
txParams: {},
|
||||
txParams: {
|
||||
to: VALID_ADDRESS,
|
||||
from: VALID_ADDRESS_TWO,
|
||||
},
|
||||
history: [{}],
|
||||
},
|
||||
]);
|
@ -1,11 +1,11 @@
|
||||
import { strict as assert } from 'assert';
|
||||
import testData from '../../../../../test/data/mock-tx-history.json';
|
||||
import {
|
||||
snapshotFromTxMeta,
|
||||
migrateFromSnapshotsToDiffs,
|
||||
replayHistory,
|
||||
generateHistoryEntry,
|
||||
} from '../../../../../app/scripts/controllers/transactions/lib/tx-state-history-helpers';
|
||||
import testData from '../../../../data/mock-tx-history.json';
|
||||
} from './tx-state-history-helpers';
|
||||
|
||||
describe('Transaction state history helper', function () {
|
||||
describe('#snapshotFromTxMeta', function () {
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user