1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00

Merge pull request #11028 from MetaMask/Version-v9.6.0

Version v9.6.0 RC
This commit is contained in:
ryanml 2021-06-10 14:09:23 -07:00 committed by GitHub
commit bb389686c3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1309 changed files with 11992 additions and 3946 deletions

View File

@ -52,6 +52,9 @@ workflows:
- test-lint-lockfile:
requires:
- prep-deps
- test-lint-changelog:
requires:
- prep-deps
- test-e2e-chrome:
requires:
- prep-build-test
@ -83,6 +86,7 @@ workflows:
- test-lint
- test-lint-shellcheck
- test-lint-lockfile
- test-lint-changelog
- test-unit
- test-unit-global
- validate-source-maps
@ -282,6 +286,33 @@ jobs:
name: lockfile-lint
command: yarn lint:lockfile
test-lint-changelog:
executor: node-browsers
steps:
- checkout
- attach_workspace:
at: .
- when:
condition:
not:
matches:
pattern: /^Version-v(\d+)[.](\d+)[.](\d+)$/
value: << pipeline.git.branch >>
steps:
- run:
name: Validate changelog
command: yarn auto-changelog validate
- when:
condition:
matches:
pattern: /^Version-v(\d+)[.](\d+)[.](\d+)$/
value: << pipeline.git.branch >>
steps:
- run:
name: Validate release candidate changelog
command: yarn auto-changelog validate --rc
test-deps:
executor: node-browsers
steps:
@ -474,7 +505,7 @@ jobs:
at: .
- run:
name: sentry sourcemaps upload
command: yarn sentry:publish
command: SENTRY_ORG=metamask SENTRY_PROJECT=metamask yarn sentry:publish
- run:
name: Create GitHub release
command: |
@ -485,7 +516,7 @@ jobs:
steps:
- add_ssh_keys:
fingerprints:
- "5e:a3:2d:35:b6:25:b5:87:b1:41:11:0d:77:50:96:73"
- "3d:49:29:f4:b2:e8:ea:af:d1:32:eb:2a:fc:15:85:d8"
- checkout
- attach_workspace:
at: .

View File

@ -19,9 +19,7 @@ fi
printf '%s\n' 'Updating the manifest version if needed'
version="${CIRCLE_BRANCH/Version-v/}"
updated_manifest="$(jq ".version = \"$version\"" app/manifest/_base.json)"
printf '%s\n' "$updated_manifest" > app/manifest/_base.json
yarn prettier --write app/manifest/_base.json
yarn version --no-git-tag-version --new-version "${version}"
if [[ -z $(git status --porcelain) ]]
then

View File

@ -16,9 +16,19 @@ then
exit 1
fi
if [[ -z "${GITHUB_TOKEN:-}" ]]
then
printf '%s\n' 'GITHUB_TOKEN environment variable must be set'
exit 1
elif [[ -z "${GITHUB_TOKEN_USER:-}" ]]
then
printf '%s\n' 'GITHUB_TOKEN_USER environment variable must be set'
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;
if git diff --quiet package.json;
then
printf '%s\n' 'No manifest changes to commit'
exit 0
@ -28,7 +38,7 @@ git \
-c user.name='MetaMask Bot' \
-c user.email='metamaskbot@users.noreply.github.com' \
commit --message "${CIRCLE_BRANCH/-/ }" \
CHANGELOG.md app/manifest/_base.json
CHANGELOG.md package.json
repo_slug="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME"
git push "https://$GITHUB_TOKEN_USER:$GITHUB_TOKEN@github.com/$repo_slug" "$CIRCLE_BRANCH"

View File

@ -16,12 +16,6 @@ then
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'

View File

@ -108,7 +108,7 @@ module.exports = {
},
{
files: ['**/*.test.js'],
excludedFiles: ['ui/**/*.test.js', 'ui/app/__mocks__/*.js'],
excludedFiles: ['ui/**/*.test.js', 'ui/__mocks__/*.js'],
extends: ['@metamask/eslint-config-mocha'],
rules: {
'mocha/no-setup-in-describe': 'off',
@ -125,7 +125,7 @@ module.exports = {
},
},
{
files: ['ui/**/*.test.js', 'ui/app/__mocks__/*.js'],
files: ['ui/**/*.test.js', 'ui/__mocks__/*.js'],
extends: ['@metamask/eslint-config-jest'],
rules: {
'jest/no-restricted-matchers': 'off',

2
.gitignore vendored
View File

@ -39,7 +39,7 @@ test-builds
build-artifacts
#ignore css output and sourcemaps
ui/app/css/output/
ui/css/output/
notes.txt

View File

@ -1,12 +1,12 @@
import React, { Component, createContext, useMemo } from 'react';
import PropTypes from 'prop-types';
import { getMessage } from '../ui/app/helpers/utils/i18n-helper';
import { I18nContext } from '../ui/app/contexts/i18n';
import { getMessage } from '../ui/helpers/utils/i18n-helper';
import { I18nContext } from '../ui/contexts/i18n';
export { I18nContext }
export { I18nContext };
export const I18nProvider = (props) => {
const { currentLocale, current, en } = props
const { currentLocale, current, en } = props;
const t = useMemo(() => {
return (key, ...args) =>

View File

@ -1,9 +1,9 @@
const path = require('path')
const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin')
const CopyWebpackPlugin = require('copy-webpack-plugin');
module.exports = {
stories: ['../ui/app/**/*.stories.js'],
stories: ['../ui/**/*.stories.js'],
addons: [
'@storybook/addon-knobs',
'@storybook/addon-actions',
@ -12,7 +12,7 @@ module.exports = {
'./i18n-party-addon/register.js',
],
webpackFinal: async (config) => {
config.module.strictExportPresence = true
config.module.strictExportPresence = true;
config.module.rules.push({
test: /\.scss$/,
loaders: [
@ -31,12 +31,12 @@ module.exports = {
sourceMap: true,
implementation: require('sass'),
sassOptions: {
includePaths: ['ui/app/css/'],
includePaths: ['ui/css/'],
},
},
},
],
})
});
config.plugins.push(
new CopyWebpackPlugin({
patterns: [
@ -51,7 +51,7 @@ module.exports = {
},
],
}),
)
return config
);
return config;
},
}
};

View File

@ -3,12 +3,12 @@ import { addDecorator, addParameters } from '@storybook/react';
import { useGlobals } from '@storybook/api';
import { withKnobs } from '@storybook/addon-knobs';
import { Provider } from 'react-redux';
import configureStore from '../ui/app/store/store';
import '../ui/app/css/index.scss';
import configureStore from '../ui/store/store';
import '../ui/css/index.scss';
import localeList from '../app/_locales/index.json';
import * as allLocales from './locales';
import { I18nProvider, LegacyI18nProvider } from './i18n';
import testData from './test-data.js'
import testData from './test-data.js';
addParameters({
backgrounds: {
@ -41,7 +41,7 @@ const styles = {
alignItems: 'center',
};
const store = configureStore(testData)
const store = configureStore(testData);
const metamaskDecorator = (story, context) => {
const currentLocale = context.globals.locale;

View File

@ -6,8 +6,42 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [9.5.9]
## [9.6.0]
### Added
- [#10905](https://github.com/MetaMask/metamask-extension/pull/10905): Implemented basic switchEthereumChain feature
- [#10967](https://github.com/MetaMask/metamask-extension/pull/10967): Add setting to dismiss seed phrase backup reminder
- [#11131](https://github.com/MetaMask/metamask-extension/pull/11131): What's New: Adding notification for updated seed phrase wording
- [#11083](https://github.com/MetaMask/metamask-extension/pull/11083): Adding BSC Swaps notification when a user is on BSC Mainnet
- [#11088](https://github.com/MetaMask/metamask-extension/pull/11088): Swaps: Add specific error content if Contract data are not enabled on Ledger
- [#11064](https://github.com/MetaMask/metamask-extension/pull/11064): Supporting EIP-712 signing for Ledger accounts
- [#10717](https://github.com/MetaMask/metamask-extension/pull/10717): Adding recovery phrase video to onboarding process
### Changed
- [#11007](https://github.com/MetaMask/metamask-extension/pull/11007): Hide basic tab in advanced gas modal when on testnets.
- [#10994](https://github.com/MetaMask/metamask-extension/pull/10994): Replacing the text "Seed Phrase" with "Secret Recovery Phrase" throughout the application.
- [#10987](https://github.com/MetaMask/metamask-extension/pull/10987): Swaps: Improve hardware wallet UX
- [#10936](https://github.com/MetaMask/metamask-extension/pull/10936): Swaps: Allow 0% slippage, show a warning for 0 < slippage <= 1, disallows Reviews when negative slippage occurs.
- [#10946](https://github.com/MetaMask/metamask-extension/pull/10946): Send user to activity view after transaction is complete
- [#10767](https://github.com/MetaMask/metamask-extension/pull/10767): Improving error handling when gas prices are unavailable.
- [#11118](https://github.com/MetaMask/metamask-extension/pull/11118): Removing support survey notification from What's New
- [#11115](https://github.com/MetaMask/metamask-extension/pull/11115): Hide basic tab in advanced gas modal for speedup and cancel when on testnets
- [#11030](https://github.com/MetaMask/metamask-extension/pull/11030): Return a specific error (code 4902) for switchEthereumChain requests for chains that aren't already in the user's wallet.
- [#11093](https://github.com/MetaMask/metamask-extension/pull/11093): Update all uses of "Seed Phrase" to "Secret Recovery Phrase"
### Fixed
- [#11025](https://github.com/MetaMask/metamask-extension/pull/11025): Fixed redirection to the build quotes page from the swaps page when failure has occured
- [#11015](https://github.com/MetaMask/metamask-extension/pull/11015): Prevent an undefined gas price from breaking the transaction list
- [#11013](https://github.com/MetaMask/metamask-extension/pull/11013): Prevent signature request component from canceling hardware wallet signing
- [#10982](https://github.com/MetaMask/metamask-extension/pull/10982): Re-validating chain id when rpc url changes [custom network form]
- [#10988](https://github.com/MetaMask/metamask-extension/pull/10988): Allowing for scroll overflow when swaps content is too tall
- [#10971](https://github.com/MetaMask/metamask-extension/pull/10971): Removing gray background from contact address input
- [#10952](https://github.com/MetaMask/metamask-extension/pull/10952): Prevent lag in external monitors when using Mac + Chrome
- [#11127](https://github.com/MetaMask/metamask-extension/pull/11127): Fixes token removal when cancelling a swaps quote
- [#10956](https://github.com/MetaMask/metamask-extension/pull/10956): Fixes intermittent token display rounding error, better handling network errors for token fetches.
- [#11097](https://github.com/MetaMask/metamask-extension/pull/11097): Fixes account search results ordering
- [#11031](https://github.com/MetaMask/metamask-extension/pull/11031): Fixes error behavior of addEthereumChain
## [9.5.9]
### Fixed
- [#11225](https://github.com/MetaMask/metamask-extension/pull/11225) - Fix persistent display of chrome ledger What's New popup message
@ -2263,7 +2297,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Uncategorized
- Added the ability to restore accounts from seed words.
[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v9.5.9...HEAD
[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v9.6.0...HEAD
[9.6.0]: https://github.com/MetaMask/metamask-extension/compare/v9.5.9...v9.6.0
[9.5.9]: https://github.com/MetaMask/metamask-extension/compare/v9.5.8...v9.5.9
[9.5.8]: https://github.com/MetaMask/metamask-extension/compare/v9.5.7...v9.5.8
[9.5.7]: https://github.com/MetaMask/metamask-extension/compare/v9.5.6...v9.5.7

View File

@ -486,7 +486,7 @@
"message": "Some of your account data was backed up during a previous installation of MetaMask. This could include your settings, contacts, and tokens. Would you like to restore this data now?"
},
"decimal": {
"message": "Decimals of Precision"
"message": "Token Decimal"
},
"decimalsMustZerotoTen": {
"message": "Decimals must be at least 0, and not over 36."
@ -556,6 +556,15 @@
"dismiss": {
"message": "Dismiss"
},
"dismissReminderDescriptionField": {
"message": "Turn this on to dismiss the recovery phrase backup reminder message. We highly recommend that you back up your Secret Recovery Phrase to avoid loss of funds"
},
"dismissReminderField": {
"message": "Dismiss recovery phrase backup reminder"
},
"domain": {
"message": "Domain"
},
"done": {
"message": "Done"
},
@ -597,7 +606,7 @@
"message": "Request encryption public key"
},
"endOfFlowMessage1": {
"message": "You passed the test - keep your seedphrase safe, it's your responsibility!"
"message": "You passed the test - keep your Secret Recovery Phrase safe, it's your responsibility!"
},
"endOfFlowMessage10": {
"message": "All Done"
@ -612,17 +621,17 @@
"message": "Never share the phrase with anyone."
},
"endOfFlowMessage5": {
"message": "Be careful of phishing! MetaMask will never spontaneously ask for your seed phrase."
"message": "Be careful of phishing! MetaMask will never spontaneously ask for your Secret Recovery Phrase."
},
"endOfFlowMessage6": {
"message": "If you need to back up your seed phrase again, you can find it in Settings -> Security."
"message": "If you need to back up your Secret Recovery Phrase again, you can find it in Settings -> Security."
},
"endOfFlowMessage7": {
"message": "If you ever have questions or see something fishy, contact our support $1.",
"description": "$1 is a clickable link with text defined by the 'here' key. The link will open to a form where users can file support tickets."
},
"endOfFlowMessage8": {
"message": "MetaMask cannot recover your seedphrase."
"message": "MetaMask cannot recover your Secret Recovery Phrase."
},
"endOfFlowMessage9": {
"message": "Learn more."
@ -684,6 +693,9 @@
"estimatedProcessingTimes": {
"message": "Estimated Processing Times"
},
"ethGasPriceFetchWarning": {
"message": "Backup gas price is provided as the main gas estimation service is unavailable right now."
},
"eth_accounts": {
"message": "View the addresses of your permitted accounts (required)",
"description": "The description for the `eth_accounts` permission"
@ -780,6 +792,9 @@
"gasPriceExtremelyLow": {
"message": "Gas Price Extremely Low"
},
"gasPriceFetchFailed": {
"message": "Gas price estimation failed due to network error."
},
"gasPriceInfoTooltipContent": {
"message": "Gas price specifies the amount of Ether you are willing to pay for each unit of gas."
},
@ -866,13 +881,13 @@
"message": "Import Account"
},
"importAccountLinkText": {
"message": "import using seed phrase"
"message": "import using Secret Recovery Phrase"
},
"importAccountMsg": {
"message": " Imported accounts will not be associated with your originally created MetaMask account seedphrase. Learn more about imported accounts "
"message": " Imported accounts will not be associated with your originally created MetaMask account Secret Recovery Phrase. Learn more about imported accounts "
},
"importAccountSeedPhrase": {
"message": "Import an account with seed phrase"
"message": "Import an account with Secret Recovery Phrase"
},
"importAccountText": {
"message": "or $1",
@ -882,7 +897,7 @@
"message": "Import wallet"
},
"importYourExisting": {
"message": "Import your existing wallet using a seed phrase"
"message": "Import your existing wallet using a Secret Recovery Phrase"
},
"imported": {
"message": "Imported",
@ -952,7 +967,7 @@
"message": "Invalid RPC URL"
},
"invalidSeedPhrase": {
"message": "Invalid seed phrase"
"message": "Invalid Secret Recovery Phrase"
},
"ipfsGateway": {
"message": "IPFS Gateway"
@ -1105,6 +1120,9 @@
"myAccounts": {
"message": "My Accounts"
},
"name": {
"message": "Name"
},
"needEtherInWallet": {
"message": "To interact with decentralized applications using MetaMask, youll need Ether in your wallet."
},
@ -1203,7 +1221,7 @@
"message": "No address has been set for this name."
},
"noAlreadyHaveSeed": {
"message": "No, I already have a seed phrase"
"message": "No, I already have a Secret Recovery Phrase"
},
"noConversionRateAvailable": {
"message": "No Conversion Rate Available"
@ -1246,18 +1264,6 @@
"message": "Swapping on mobile is here!",
"description": "Title for a notification in the 'See What's New' popup. Tells users that they can now use MetaMask Swaps on Mobile."
},
"notifications2ActionText": {
"message": "Start survey",
"description": "The 'call to action' label on the button, or link, of the 'Help improve MetaMask' 'See What's New' notification. Upon clicking, users will be taken to an external page where they can complete a survey."
},
"notifications2Description": {
"message": "Please share your experience in this 5 minute survey.",
"description": "Description of a notification in the 'See What's New' popup. Further clarifies how the users can help: by completing a 5 minute survey about MetaMask."
},
"notifications2Title": {
"message": "Help improve MetaMask",
"description": "Title for a notification in the 'See What's New' popup. Asks users to take action to make MetaMask better."
},
"notifications3ActionText": {
"message": "Read more",
"description": "The 'call to action' on the button, or link, of the 'Stay secure' notification. Upon clicking, users will be taken to a page about security on the metamask support website."
@ -1270,6 +1276,22 @@
"message": "Stay secure",
"description": "Title for a notification in the 'See What's New' popup. Encourages users to consider security."
},
"notifications4ActionText": {
"message": "Start swapping",
"description": "The 'call to action' on the button, or link, of the 'Swap on Binance Smart Chain!' notification. Upon clicking, users will be taken to a page where then can swap tokens on Binance Smart Chain."
},
"notifications4Description": {
"message": "Get the best prices on token swaps right inside your wallet. MetaMask now connects you to multiple decentralized exchange aggregators and professional market makers on Binance Smart Chain.",
"description": "Description of a notification in the 'See What's New' popup."
},
"notifications4Title": {
"message": "Swap on Binance Smart Chain",
"description": "Title for a notification in the 'See What's New' popup. Encourages users to do swaps on Binance Smart Chain."
},
"notifications5Description": {
"message": "Your \"Seed Phrase\" is now called your \"Secret Recovery Phrase.\"",
"description": "Description of a notification in the 'See What's New' popup. Describes the seed phrase wording update."
},
"notifications6DescriptionOne": {
"message": "As of Chrome version 91, the API that enabled our Ledger support (U2F) no longer supports hardware wallets. MetaMask has implemented a new Ledger Live support that allows you to continue to connect to your Ledger device via the Ledger Live desktop app.",
"description": "Description of a notification in the 'See What's New' popup. Describes the Ledger support update."
@ -1392,6 +1414,9 @@
"provide": {
"message": "Provide"
},
"publicAddress": {
"message": "Public Address"
},
"queue": {
"message": "Queue"
},
@ -1438,7 +1463,7 @@
"message": "Remove account"
},
"removeAccountDescription": {
"message": "This account will be removed from your wallet. Please make sure you have the original seed phrase or private key for this imported account before continuing. You can import or create accounts again from the account drop-down. "
"message": "This account will be removed from your wallet. Please make sure you have the original Secret Recovery Phrase or private key for this imported account before continuing. You can import or create accounts again from the account drop-down. "
},
"requestsAwaitingAcknowledgement": {
"message": "requests waiting to be acknowledged"
@ -1453,13 +1478,13 @@
"message": "Reset Account"
},
"resetAccountDescription": {
"message": "Resetting your account will clear your transaction history. This will not change the balances in your accounts or require you to re-enter your seed phrase."
"message": "Resetting your account will clear your transaction history. This will not change the balances in your accounts or require you to re-enter your Secret Recovery Phrase."
},
"restore": {
"message": "Restore"
},
"restoreAccountWithSeed": {
"message": "Restore your Account with Seed Phrase"
"message": "Restore your Account with Secret Recovery Phrase"
},
"restoreWalletPreferences": {
"message": "A backup of your data from $1 has been found. Would you like to restore your wallet preferences?",
@ -1472,13 +1497,13 @@
"message": "A token here reuses a symbol from another token you watch, this can be confusing or deceptive."
},
"revealSeedWords": {
"message": "Reveal Seed Phrase"
"message": "Reveal Secret Recovery Phrase"
},
"revealSeedWordsDescription": {
"message": "If you ever change browsers or move computers, you will need this seed phrase to access your accounts. Save them somewhere safe and secret."
"message": "If you ever change browsers or move computers, you will need this Secret Recovery Phrase to access your accounts. Save them somewhere safe and secret."
},
"revealSeedWordsTitle": {
"message": "Seed Phrase"
"message": "Secret Recovery Phrase"
},
"revealSeedWordsWarning": {
"message": "These words can be used to steal all your accounts."
@ -1538,16 +1563,52 @@
"message": "Security & Privacy"
},
"securitySettingsDescription": {
"message": "Privacy settings and wallet seed phrase"
"message": "Privacy settings and wallet Secret Recovery 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"
},
"seedPhrasePlaceholderPaste": {
"message": "Paste seed phrase from clipboard"
"message": "Paste Secret Recovery Phrase from clipboard"
},
"seedPhraseReq": {
"message": "Seed phrases contain 12, 15, 18, 21, or 24 words"
"message": "Secret Recovery Phrases contain 12, 15, 18, 21, or 24 words"
},
"selectAHigherGasFee": {
"message": "Select a higher gas fee to accelerate the processing of your transaction.*"
@ -1639,7 +1700,7 @@
"message": "Show Private Keys"
},
"showSeedPhrase": {
"message": "Show seed phrase"
"message": "Show Secret Recovery Phrase"
},
"sigRequest": {
"message": "Signature Request"
@ -1756,6 +1817,10 @@
"swapAggregator": {
"message": "Aggregator"
},
"swapAllowSwappingOf": {
"message": "Allow swapping of $1",
"description": "Shows a user that they need to allow a token for swapping on their hardware wallet"
},
"swapAmountReceived": {
"message": "Guaranteed amount"
},
@ -1781,6 +1846,15 @@
"message": "Checking $1",
"description": "Shown to the user during quote loading. $1 is the name of an aggregator. The message indicates that metamask is currently checking if that aggregator has a trade/quote for their requested swap."
},
"swapConfirmWithHwWallet": {
"message": "Confirm with your hardware wallet"
},
"swapContractDataDisabledErrorDescription": {
"message": "In the Ethereum app on your Ledger, go to \"Settings\" and allow contract data. Then, try your swap again."
},
"swapContractDataDisabledErrorTitle": {
"message": "Contract data is not enabled on your Ledger"
},
"swapCustom": {
"message": "custom"
},
@ -1826,8 +1900,15 @@
"swapFinalizing": {
"message": "Finalizing..."
},
"swapFromTo": {
"message": "The swap of $1 to $2",
"description": "Tells a user that they need to confirm on their hardware wallet a swap of 2 tokens. $1 is a source token and $2 is a destination token"
},
"swapGasFeesSplit": {
"message": "Gas fees on the previous screen are split between these two transactions."
},
"swapHighSlippageWarning": {
"message": "Slippage amount is very high. Make sure you know what you are doing!"
"message": "Slippage amount is very high."
},
"swapLowSlippageError": {
"message": "Transaction may fail, max slippage too low."
@ -1946,8 +2027,8 @@
"swapSelectQuotePopoverDescription": {
"message": "Below are all the quotes gathered from multiple liquidity sources."
},
"swapSlippageTooLow": {
"message": "Slippage must be greater than zero"
"swapSlippageNegative": {
"message": "Slippage must be greater or equal to zero"
},
"swapSource": {
"message": "Liquidity source"
@ -1967,6 +2048,9 @@
"swapThisWillAllowApprove": {
"message": "This will allow $1 to be swapped."
},
"swapToConfirmWithHwWallet": {
"message": "to confirm with your hardware wallet"
},
"swapTokenAvailable": {
"message": "Your $1 has been added to your account.",
"description": "This message is shown after a swap is successful and communicates the exact amount of tokens the user has received for a swap. The $1 is a decimal number of tokens followed by the token symbol."
@ -1996,6 +2080,9 @@
"swapTransactionComplete": {
"message": "Transaction complete"
},
"swapTwoTransactions": {
"message": "2 transactions"
},
"swapUnknown": {
"message": "Unknown"
},
@ -2102,7 +2189,7 @@
"message": "Test Faucet"
},
"thisWillCreate": {
"message": "This will create a new wallet and seed phrase"
"message": "This will create a new wallet and Secret Recovery Phrase"
},
"tips": {
"message": "Tips"
@ -2126,6 +2213,9 @@
"tokenContractAddress": {
"message": "Token Contract Address"
},
"tokenDecimalFetchFailed": {
"message": "Token decimal required."
},
"tokenSymbol": {
"message": "Token Symbol"
},
@ -2257,6 +2347,10 @@
"userName": {
"message": "Username"
},
"verifyThisTokenDecimalOn": {
"message": "Token decimal can be found on $1",
"description": "Points the user to etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"etherscan\""
},
"verifyThisTokenOn": {
"message": "Verify this token on $1",
"description": "Points the user to etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"etherscan\""
@ -2270,6 +2364,9 @@
"viewContact": {
"message": "View Contact"
},
"viewMore": {
"message": "View More"
},
"viewOnCustomBlockExplorer": {
"message": "View at $1"
},
@ -2286,10 +2383,10 @@
"message": "our hardware wallet connection guide"
},
"walletSeed": {
"message": "Seed phrase"
"message": "Secret Recovery Phrase"
},
"walletSeedRestore": {
"message": "Wallet Seed"
"message": "Wallet Secret Recovery Phrase"
},
"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.",
@ -2329,7 +2426,7 @@
"message": "You are signing"
},
"yourPrivateSeedPhrase": {
"message": "Your private seed phrase"
"message": "Your private Secret Recovery Phrase"
},
"zeroGasPriceOnSpeedUpError": {
"message": "Zero gas price on speed up"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -49,6 +49,29 @@
"addAlias": {
"message": "उपनाम जोड़ें"
},
"addContact": {
"message": "संपर्क जोड़ें"
},
"addEthereumChainConfirmationDescription": {
"message": "इससे इस नेटवर्क को MetaMask के अंदर उपयोग करने की अनुमति मिलेगी।"
},
"addEthereumChainConfirmationRisks": {
"message": "MetaMask कस्टम नेटवर्क को सत्यापित नहीं करता है।"
},
"addEthereumChainConfirmationRisksLearnMore": {
"message": "$1 के बारे में जानें।",
"description": "$1 is a link with text that is provided by the 'addEthereumChainConfirmationRisksLearnMoreLink' key"
},
"addEthereumChainConfirmationRisksLearnMoreLink": {
"message": "धोखाधड़ी और नेटवर्क सुरक्षा जोखिम",
"description": "Link text for the 'addEthereumChainConfirmationRisksLearnMore' translation key"
},
"addEthereumChainConfirmationTitle": {
"message": "इस साइट को नेटवर्क जोड़ने की अनुमति दें?"
},
"addFriendsAndAddresses": {
"message": "उन मित्रों और पतों को जोड़ें, जिन पर आप भरोसा करते हैं"
},
"addNetwork": {
"message": "नेटवर्क जोड़ें"
},
@ -92,7 +115,13 @@
"message": "चयनित असंबद्ध खाते के साथ कोई वेबसाइट ब्राउज़ करना"
},
"alertSettingsUnconnectedAccountDescription": {
"message": "यह चेतावनी पॉपअप में तब दिखाई जाती है, जब आप कनेक्टेड Web3 साइट ब्राउज़ कर रहे होते हैं, लेकिन वर्तमान में चयनित खाता कनेक्ट नहीं होता है।"
"message": "यह चेतावनी पॉपअप में तब दिखाई जाती है, जब आप कनेक्टेड web3 साइट ब्राउज़ कर रहे होते हैं, लेकिन वर्तमान में चयनित खाता कनेक्ट नहीं होता है।"
},
"alertSettingsWeb3ShimUsage": {
"message": "जब कोई वेबसाइट हटाए गए window.web3 API का उपयोग करने का प्रयास करती है"
},
"alertSettingsWeb3ShimUsageDescription": {
"message": "यह चेतावनी पॉपअप में तब दिखाई जाती है, जब आप ऐसी साइट ब्राउज़ कर रहे होते हैं, जो हटाए गए window.web3 API का उपयोग करने का प्रयास करती है और परिणामस्वरूप उसमें गड़बड़ी आ सकती है।"
},
"alerts": {
"message": "चेतावनियाँ"
@ -137,6 +166,9 @@
"approve": {
"message": "खर्च सीमा अनुमोदित करें"
},
"approveButtonText": {
"message": "अनुमोदित करें"
},
"approveSpendLimit": {
"message": "$1 खर्च सीमा को अनुमोदित करें",
"description": "The token symbol that is being approved"
@ -147,6 +179,9 @@
"asset": {
"message": "परिसंपत्ति"
},
"assetOptions": {
"message": "एसेट विकल्प"
},
"assets": {
"message": "परिसंपत्तियाँ"
},
@ -199,7 +234,10 @@
"message": "बेसिक"
},
"blockExplorerUrl": {
"message": "ब्लॉक एक्सप्लोरर"
"message": "ब्लॉक एक्सप्लोरर URL"
},
"blockExplorerUrlDefinition": {
"message": "इस नेटवर्क के लिए ब्लॉक एक्सप्लोरर के रूप में उपयोग किया जाने वाला URL।"
},
"blockExplorerView": {
"message": "$1 पर खाता देखें",
@ -211,6 +249,9 @@
"browserNotSupported": {
"message": "आपका ब्राउज़र समर्थित नहीं है..."
},
"builContactList": {
"message": "अपनी संपर्क सूची बनाएं"
},
"builtInCalifornia": {
"message": "MetaMask को कैलिफोर्निया में डिज़ाइन और निर्मित किया गया है।"
},
@ -226,6 +267,9 @@
"bytes": {
"message": "बाइट"
},
"canToggleInSettings": {
"message": "आप इस अधिसूचना को सेटिंग्स -> अलर्ट में पुनः सक्षम कर सकते हैं।"
},
"cancel": {
"message": "रद्द करें"
},
@ -238,6 +282,9 @@
"chainId": {
"message": "चेन ID"
},
"chainIdDefinition": {
"message": "इस नेटवर्क के लिए लेन-देन पर हस्ताक्षर करने के लिए उपयोग की जाने वाली चेन ID।"
},
"chromeRequiredForHardwareWallets": {
"message": "अपने हार्डवेयर वॉलेट से कनेक्ट करने के लिए आपको Google Chrome पर MetaMask का उपयोग करने की आवश्यकता है।"
},
@ -259,6 +306,15 @@
"confirmed": {
"message": "पुष्टि की गई"
},
"confusableUnicode": {
"message": "'$1', '$2' के समान है।"
},
"confusableZeroWidthUnicode": {
"message": "शून्य-चौड़ाई वाला वर्ण मिला।"
},
"confusingEnsDomain": {
"message": "हमने ENS नाम में एक भ्रमित करने योग्य वर्ण का पता लगाया है। संभावित धोखाधड़ी से बचने के लिए ENS नाम की जाँच करें।"
},
"congratulations": {
"message": "बधाइयाँ"
},
@ -348,9 +404,15 @@
"contactsSettingsDescription": {
"message": "अपने संपर्कों को जोड़ें, संपादित करें, निकालें और प्रबंधित करें"
},
"continue": {
"message": "जारी रखें"
},
"continueToWyre": {
"message": "Wyre पर जारी रखें"
},
"contractAddressError": {
"message": "आप टोकन के अनुबंध पते पर टोकन भेज रहे हैं। इसके परिणामस्वरूप इन टोकनों का नुकसान हो सकता है।"
},
"contractDeployment": {
"message": "अनुबंध परिनियोजन"
},
@ -390,6 +452,12 @@
"currencyConversion": {
"message": "मुद्रा रूपांतरण"
},
"currencySymbol": {
"message": "मुद्रा प्रतीक"
},
"currencySymbolDefinition": {
"message": "इस नेटवर्क की मुद्रा के लिए प्रदर्शित टिकर प्रतीक।"
},
"currentAccountNotConnected": {
"message": "आपका चालू खाता कनेक्ट नहीं है"
},
@ -418,7 +486,7 @@
"message": "MetaMask की पिछली स्थापना के दौरान आपके कुछ खाता डेटा का बैकअप लिया गया था। इसमें आपकी सेटिंग, संपर्क और टोकन शामिल हो सकते हैं। क्या आप अब इस डेटा को पुनर्स्थापित करना चाहेंगे?"
},
"decimal": {
"message": "दशमलव परिशुद्धता"
"message": "टोकन दशमलव"
},
"decimalsMustZerotoTen": {
"message": "दशमलव में कम से कम 0 होना चाहिए और 36 से अधिक न हो।"
@ -488,6 +556,15 @@
"dismiss": {
"message": "खारिज करें"
},
"dismissReminderDescriptionField": {
"message": "रिकवरी फ्रेज़ बैकअप अनुस्मारक संदेश को खारिज करने के लिए इसे चालू करें। हम ज़ोर देकर अनुशंसा करते हैं कि आप धन के नुकसान से बचने के लिए अपने गुप्त रिकवरी फ्रेज़ का बैकअप लें"
},
"dismissReminderField": {
"message": "रिकवरी फ्रेज़ बैकअप अनुस्मारक खारिज करें"
},
"domain": {
"message": "डोमेन"
},
"done": {
"message": "संपन्न"
},
@ -512,6 +589,12 @@
"editContact": {
"message": "संपर्क संपादित करें"
},
"editNonceField": {
"message": "नॉन्स संपादित करें"
},
"editNonceMessage": {
"message": "यह एक उन्नत सुविधा है, सावधानी से उपयोग करें।"
},
"editPermission": {
"message": "अनुमति संपादित करें"
},
@ -523,7 +606,7 @@
"message": "एन्क्रिप्शन सार्वजनिक कुंजी का अनुरोध करें"
},
"endOfFlowMessage1": {
"message": "आप टेस्ट में उत्तीर्ण हो गए हैं - अपने सीडफ्रेज़ को सुरक्षित रखें, यह आपकी ज़िम्मेदारी है!"
"message": "आप टेस्ट में उत्तीर्ण हो गए हैं - अपने गुप्त रिकवरी फ्रेज़ को सुरक्षित रखें, यह आपकी ज़िम्मेदारी है!"
},
"endOfFlowMessage10": {
"message": "सब कुछ हो गया"
@ -538,13 +621,13 @@
"message": "वाक्यांश को कभी भी किसी के साथ साझा न करें।"
},
"endOfFlowMessage5": {
"message": "फ़िशिंग से सावधान रहें! MetaMask कभी भी अनायास ही आपके सीड फ्रेज़ के बारे में नहीं पूछेगा।"
"message": "फ़िशिंग से सावधान रहें! MetaMask कभी भी अनायास ही आपके गुप्त रिकवरी फ्रेज़ के बारे में नहीं पूछेगा।"
},
"endOfFlowMessage6": {
"message": "यदि आपको अपने सीड फ्रेज़ को फिर से बैकअप लेने की आवश्यकता है, तो आप इसे सेटिंग्स -> सुरक्षा में पा सकते हैं।"
"message": "यदि आपको अपने गुप्त रिकवरी फ्रेज़ को फिर से बैकअप लेने की आवश्यकता है, तो आप इसे सेटिंग्स -> सुरक्षा में पा सकते हैं।"
},
"endOfFlowMessage8": {
"message": "MetaMask आपके सीडफ्रेज़ को पुनर्प्राप्त नहीं कर सकता है।"
"message": "MetaMask आपके गुप्त रिकवरी फ्रेज़ को पुनर्प्राप्त नहीं कर सकता है।"
},
"endOfFlowMessage9": {
"message": "अधिक जानें।"
@ -587,6 +670,14 @@
"message": "कोड: $1",
"description": "Displayed error name for debugging purposes. $1 is the error name"
},
"errorPageMessage": {
"message": "पृष्ठ को पुनः लोड करके पुनः प्रयास करें या सहायता $1 से संपर्क करें।",
"description": "Message displayed on generic error page in the fullscreen or notification UI, $1 is a clickable link with text defined by the 'here' key. The link will open to a form where users can file support tickets."
},
"errorPagePopupMessage": {
"message": "पॉपअप को बंद करके और फिर से खोलने की कोशिश करें या $1 पर सहायता से संपर्क करें।",
"description": "Message displayed on generic error page in the popup UI, $1 is a clickable link with text defined by the 'here' key. The link will open to a form where users can file support tickets."
},
"errorPageTitle": {
"message": "MetaMask में कोई त्रुटि हुई",
"description": "Title of generic error page"
@ -598,6 +689,9 @@
"estimatedProcessingTimes": {
"message": "अनुमानित प्रसंस्करण समय"
},
"ethGasPriceFetchWarning": {
"message": "बैकअप गैस की कीमत प्रदान की जाती है क्योंकि मुख्य गैस अनुमान सर्विस अभी उपलब्ध नहीं है।"
},
"eth_accounts": {
"message": "अपने अनुमत खातों के पते देखें (आवश्यक)",
"description": "The description for the `eth_accounts` permission"
@ -685,9 +779,18 @@
"gasPrice": {
"message": "गैस मूल्य (GWEI)"
},
"gasPriceExcessive": {
"message": "आपका गैस शुल्क अनावश्यक रूप से अधिक निर्धारित किया गया है। राशि को कम करने पर विचार करें।"
},
"gasPriceExcessiveInput": {
"message": "गैस का मूल्य अधिक है"
},
"gasPriceExtremelyLow": {
"message": "गैस मूल्य अत्यंत कम है"
},
"gasPriceFetchFailed": {
"message": "गैस मूल्य अनुमान नेटवर्क त्रुटि के कारण विफल रहा है।"
},
"gasPriceInfoTooltipContent": {
"message": "गैस मूल्य, Ether की उस राशि को निर्दिष्ट करता है, जिसे आप गैस की प्रत्येक इकाई के लिए भुगतान करना चाहते हैं।"
},
@ -730,14 +833,21 @@
"hardwareWalletConnected": {
"message": "हार्डवेयर वॉलेट कनेक्ट किया गया"
},
"hardwareWalletLegacyDescription": {
"message": "(लीगेसी)",
"description": "Text representing the MEW path"
},
"hardwareWalletSupportLinkConversion": {
"message": "यहाँ क्लिक करें"
},
"hardwareWallets": {
"message": "हार्डवेयर वॉलेट कनेक्ट करें"
},
"hardwareWalletsMsg": {
"message": "किसी हार्डवेयर वॉलेट का चयन करें, जिसे आप MetaMask के साथ उपयोग करना चाहते हैं"
"message": "किसी हार्डवेयर वॉलेट का चयन करें, जिसे आप MetaMask के साथ उपयोग करना चाहते हैं"
},
"here": {
"message": "यहाँ",
"message": "देखें",
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
},
"hexData": {
@ -753,6 +863,9 @@
"message": "$1 छिपाएँ",
"description": "$1 is the symbol for a token (e.g. 'DAI')"
},
"hideZeroBalanceTokens": {
"message": "बिना शेष राशि वाले टोकन छिपाएं"
},
"history": {
"message": "इतिहास"
},
@ -763,19 +876,29 @@
"importAccount": {
"message": "खाता आयात करें"
},
"importAccountLinkText": {
"message": "गुप्त रिकवरी फ्रेज़ का उपयोग करके आयात करें"
},
"importAccountMsg": {
"message": " आयातित खाते आपके मूल रूप से बनाए गए MetaMask खाते सीडफ्रेज़ से संबद्ध नहीं होंगे। आयातित खातों के बारे में अधिक जानें "
"message": " आयातित खाते आपके मूल रूप से बनाए गए MetaMask खाते के गुप्त रिकवरी फ्रेज़ से संबद्ध नहीं होंगे। आयातित खातों के बारे में अधिक जानें "
},
"importAccountSeedPhrase": {
"message": "सीडफ्रेज़ के साथ कोई खाता आयात करें"
"message": "गुप्त रिकवरी फ्रेज़ के साथ एक खाता आयात करें"
},
"importWallet": {
"message": "वॉलेट आयात करें"
},
"importYourExisting": {
"message": "गुप्त रिकवरी फ्रेज़ का उपयोग करके अपने मौजूदा वॉलेट को आयात करें"
},
"imported": {
"message": "आयातित",
"description": "status showing that an account has been fully loaded into the keyring"
},
"infuraBlockedNotification": {
"message": "MetaMask ब्लॉकचेन होस्ट से कनेक्ट करने में असमर्थ है। संभावित कारणों $1 की समीक्षा करें।",
"description": "$1 is a clickable link with with text defined by the 'here' key"
},
"initialTransactionConfirmed": {
"message": "नेटवर्क द्वारा आपके प्रारंभिक लेनदेन की पुष्टि की गई थी। वापस जाने के लिए ठीक पर क्लिक करें।"
},
@ -800,6 +923,9 @@
"invalidBlockExplorerURL": {
"message": "अमान्य ब्लॉक एक्सप्लोरर URL"
},
"invalidChainIdTooBig": {
"message": "अमान्य चेन ID। चेन ID बहुत बड़ी है।"
},
"invalidCustomNetworkAlertContent1": {
"message": "कस्टम नेटवर्क '$1' के लिए चेन ID को फिर से दर्ज करना होगा।",
"description": "$1 is the name/identifier of the network."
@ -833,7 +959,7 @@
"message": "अमान्य RPC URL"
},
"invalidSeedPhrase": {
"message": "अमान्य सीड फ्रेज़"
"message": "अमान्य गुप्त रिकवरी फ्रेज़"
},
"ipfsGateway": {
"message": "IPFS गेटवे"
@ -863,6 +989,21 @@
"ledgerAccountRestriction": {
"message": "नया खाता जोड़ने से पहले आपको अपने अंतिम खाते का उपयोग करना होगा।"
},
"ledgerLiveAdvancedSetting": {
"message": "Ledger Live का उपयोग करें"
},
"ledgerLiveAdvancedSettingDescription": {
"message": "नया Ledger Live ब्रिज आपको अपने लेजर का अधिक आसानी से उपयोग करने की अनुमति देता है। केवल Chrome में उपलब्ध है।"
},
"ledgerLiveApp": {
"message": "Ledger Live ऐप"
},
"ledgerLocked": {
"message": "लेजर डिवाइस से कनेक्ट नहीं हो सकता। कृपया सुनिश्चित करें कि आपका डिवाइस अनलॉक है और Ethereum ऐप खुला है।"
},
"ledgerTimeout": {
"message": "Ledger Live जवाब देने में बहुत अधिक समय ले रहा है या कनेक्शन समयबाह्य हो गया है। सुनिश्चित करें कि Ledger Live ऐप खुला है और आपका डिवाइस अनलॉक है।"
},
"letsGoSetUp": {
"message": "हाँ, आइए सेट करते हैं!"
},
@ -924,7 +1065,7 @@
"message": "MetaMask संस्करण"
},
"metametricsCommitmentsAllowOptOut": {
"message": "हमेशा आपको सेटिंग्स के माध्यम से ऑप्ट-आउट करने की अनुमति दे"
"message": "हमेशा आपको सेटिंग्स के माध्यम से ऑप्ट-आउट करने की अनुमति देगा"
},
"metametricsCommitmentsBoldNever": {
"message": "कभी नहीं",
@ -946,7 +1087,7 @@
"description": "The $1 is the bolded word 'Never', from 'metametricsCommitmentsBoldNever'"
},
"metametricsCommitmentsSendAnonymizedEvents": {
"message": "बेनाम क्लिक और पेजव्यू ईवेंट भेजे"
"message": "बेनाम क्लिक और पेजव्यू ईवेंट भेजेगा"
},
"metametricsHelpImproveMetaMask": {
"message": "MetaMask को बेहतर बनाने में हमारी मदद करें"
@ -954,6 +1095,14 @@
"metametricsOptInDescription": {
"message": "MetaMask इस बात की बेहतर समझ प्राप्त करने के लिए डेटा एकत्र करना चाहता है कि हमारे उपयोगकर्ता विस्तार के साथ कैसे सहभागिता करते हैं। इस डेटा का उपयोग हमारे उत्पाद और Ethereum पारिस्थितिकी तंत्र की उपयोगिता और उपयोगकर्ता अनुभव को लगातार सुधारने के लिए किया जाएगा।"
},
"mismatchedChain": {
"message": "इस चेन ID के लिए नेटवर्क विवरण हमारे रिकॉर्ड से मेल नहीं खाता। हम अनुशंसा करते हैं कि आप आगे बढ़ने से पहले $1।",
"description": "$1 is a clickable link with text defined by the 'mismatchedChainLinkText' key"
},
"mismatchedChainLinkText": {
"message": "नेटवर्क विवरण सत्यापित करें",
"description": "Serves as link text for the 'mismatchedChain' key. This text will be embedded inside the translation for that key."
},
"mobileSyncText": {
"message": "कृपया यह पुष्टि करने के लिए अपना पासवर्ड दर्ज करें कि यह आप ही हैं!"
},
@ -963,9 +1112,19 @@
"myAccounts": {
"message": "मेरे खाते"
},
"name": {
"message": "नाम"
},
"needEtherInWallet": {
"message": "MetaMask का उपयोग करके विकेंद्रीकृत एप्लिकेशन के साथ सहभागिता करने के लिए, आपको अपने वॉलेट में Ether की आवश्यकता होगी।"
},
"needHelp": {
"message": "मदद चाहिए? $1 से संपर्क करें",
"description": "$1 represents `needHelpLinkText`, the text which goes in the help link"
},
"needHelpLinkText": {
"message": "MetaMask सहायता"
},
"needImportFile": {
"message": "आयात करने के लिए आपको एक फ़ाइल का चयन करना होगा।",
"description": "User is important an account and needs to add a file to continue"
@ -973,15 +1132,36 @@
"negativeETH": {
"message": "ETH की ऋणात्मक राशियां नहीं भेज सकते।"
},
"networkDetails": {
"message": "नेटवर्क विवरण"
},
"networkName": {
"message": "नेटवर्क का नाम"
},
"networkNameBSC": {
"message": "BSC"
},
"networkNameDefinition": {
"message": "नाम इस नेटवर्क के साथ संबद्ध है।"
},
"networkNameEthereum": {
"message": "Ethereum"
},
"networkNameTestnet": {
"message": "Testnet"
},
"networkSettingsChainIdDescription": {
"message": "चेन ID का उपयोग लेनदेन पर हस्ताक्षर करने के लिए किया जाता है। इसे नेटवर्क द्वारा दी गई चेन ID से मेल खाना चाहिए। आप दशमलव या '0x'-उपसर्ग वाली हेक्साडेसिमल संख्या दर्ज कर सकते हैं, लेकिन हम संख्या को दशमलव में प्रदर्शित करेंगे।"
},
"networkSettingsDescription": {
"message": "कस्टम RPC नेटवर्क जोड़ें और संपादित करें"
},
"networkURL": {
"message": "नेटवर्क URL"
},
"networkURLDefinition": {
"message": "URL का उपयोग इस नेटवर्क तक पहुँचने के लिए किया जाता है।"
},
"networks": {
"message": "नेटवर्क"
},
@ -1033,7 +1213,7 @@
"message": "इस नाम के लिए कोई पता नहीं सेट किया गया है।"
},
"noAlreadyHaveSeed": {
"message": "नहीं, मेरे पास पहले से ही एक सीड फ्रेज़ है"
"message": "नहीं, मेरे पास पहले से ही एक गुप्त रिकवरी फ्रेज़ है"
},
"noConversionRateAvailable": {
"message": "कोई भी रूपांतरण दर उपलब्ध नहीं है"
@ -1050,6 +1230,9 @@
"noWebcamFoundTitle": {
"message": "वेबकैम नहीं मिला"
},
"nonce": {
"message": "नॉन्स"
},
"nonceField": {
"message": "लेनदेन नॉन्स अनुकूलित करें"
},
@ -1065,6 +1248,42 @@
"notEnoughGas": {
"message": "पर्याप्त गैस नहीं"
},
"notifications1Description": {
"message": "MetaMask Mobile उपयोगकर्ता अब अपने मोबाइल वॉलेट के अंदर टोकन स्वैप कर सकते हैं। मोबाइल ऐप प्राप्त करने के लिए QR कोड को स्कैन करें और स्वैप करना शुरू करें।",
"description": "Description of a notification in the 'See What's New' popup. Describes the swapping on mobile feature."
},
"notifications1Title": {
"message": "मोबाइल पर स्वैपिंग यहाँ है!",
"description": "Title for a notification in the 'See What's New' popup. Tells users that they can now use MetaMask Swaps on Mobile."
},
"notifications3ActionText": {
"message": "और पढ़ें",
"description": "The 'call to action' on the button, or link, of the 'Stay secure' notification. Upon clicking, users will be taken to a page about security on the metamask support website."
},
"notifications3Description": {
"message": "MetaMask सुरक्षा की सर्वोत्तम प्रथाओं पर अद्यतित रहें और आधिकारिक MetaMask सहायता से नवीनतम सुरक्षा युक्तियां प्राप्त करें।",
"description": "Description of a notification in the 'See What's New' popup. Describes the information they can get on security from the linked support page."
},
"notifications3Title": {
"message": "सुरक्षित रहें",
"description": "Title for a notification in the 'See What's New' popup. Encourages users to consider security."
},
"notifications4ActionText": {
"message": "स्वैप करना शुरू करें",
"description": "The 'call to action' on the button, or link, of the 'Swap on Binance Smart Chain!' notification. Upon clicking, users will be taken to a page where then can swap tokens on Binance Smart Chain."
},
"notifications4Description": {
"message": "अपने वॉलेट के अंदर ही टोकन स्वैप पर सर्वोत्तम मूल्य प्राप्त करें। MetaMask अब आपको Binance Smart Chain पर कई विकेन्द्रीकृत एक्सचेंज एग्रीगेटर और पेशेवर बाजार निर्माताओं से जोड़ता है।",
"description": "Description of a notification in the 'See What's New' popup."
},
"notifications4Title": {
"message": "Binance Smart Chain पर स्वैप करें",
"description": "Title for a notification in the 'See What's New' popup. Encourages users to do swaps on Binance Smart Chain."
},
"notifications5Description": {
"message": "आपके \"सीड फ्रेज़\" को अब आपका \"गुप्त रिकवरी फ्रेज़\" कहा जाता है।",
"description": "Description of a notification in the 'See What's New' popup. Describes the seed phrase wording update."
},
"ofTextNofM": {
"message": "/"
},
@ -1085,7 +1304,7 @@
"description": "Return the user to the site that initiated onboarding"
},
"onlyAddTrustedNetworks": {
"message": "दुर्भावनापूर्ण Ethereum नेटवर्क प्रदाता ब्लॉकचेन की स्थिति के बारे में झूठ बोल सकता है और आपकी नेटवर्क गतिविधि रिकॉर्ड कर सकता है। केवल उन कस्टम नेटवर्क को जोड़ें, जिन पर आप भरोसा करते हैं।"
"message": "एक दुर्भावनापूर्ण नेटवर्क प्रदाता ब्लॉकचेन की स्थिति के बारे में झूठ बोल सकता है और आपकी नेटवर्क गतिविधि को रिकॉर्ड कर सकता है। केवल उन कस्टम नेटवर्क को जोड़ें, जिन पर आप भरोसा करते हैं।"
},
"onlyAvailableOnMainnet": {
"message": "केवल मेननेट पर उपलब्ध है"
@ -1171,6 +1390,9 @@
"provide": {
"message": "प्रदान करें"
},
"publicAddress": {
"message": "सार्वजनिक पता"
},
"queue": {
"message": "कतार"
},
@ -1178,7 +1400,7 @@
"message": "कतारबद्ध"
},
"readdToken": {
"message": "आप अपने खातों के विकल्प मेनू में \"टोकन जोड़ें\" पर जाकर भविष्य में इस टोकन को वापस जोड़ सकते हैं।"
"message": "आप अपने खातों के विकल्प मेनू में “टोकन जोड़ें” पर जाकर भविष्य में इस टोकन को वापस जोड़ सकते हैं।"
},
"receive": {
"message": "प्राप्त करें"
@ -1217,7 +1439,7 @@
"message": "खाता निकालें"
},
"removeAccountDescription": {
"message": "यह खाता आपके वॉलेट से निकाल दिया जाएगा। कृपया सुनिश्चित करें कि जारी रखने से पहले आपके पास इस आयातित खाते के लिए मूल सीड फ्रेज़ या निजी कुंजी है। आप खाता ड्रॉप-डाउन से फिर से खाते आयात कर सकते हैं या बना सकते हैं। "
"message": "यह खाता आपके वॉलेट से निकाल दिया जाएगा। कृपया सुनिश्चित करें कि जारी रखने से पहले आपके पास इस आयातित खाते के लिए मूल गुप्त रिकवरी फ्रेज़ या निजी कुंजी है। आप खाता ड्रॉप-डाउन से फिर से खाते आयात कर सकते हैं या बना सकते हैं। "
},
"requestsAwaitingAcknowledgement": {
"message": "अनुरोधों के स्वीकार किए जाने की प्रतीक्षा की जा रही है"
@ -1232,13 +1454,13 @@
"message": "खाता रीसेट करें"
},
"resetAccountDescription": {
"message": "आपके खाते को रीसेट करने से आपका लेनदेन इतिहास साफ़ हो जाएगा। इससे आपके खातों में शेषराशि नहीं बदलेगी या आपको अपने सीड फ्रेज़ को फिर से दर्ज करने की आवश्यकता नहीं होगी।"
"message": "आपके खाते को रीसेट करने से आपका लेनदेन इतिहास साफ़ हो जाएगा। इससे आपके खातों में शेषराशि नहीं बदलेगी या आपको अपने गुप्त रिकवरी फ्रेज़ को फिर से दर्ज करने की आवश्यकता नहीं होगी।"
},
"restore": {
"message": "पुनर्स्थापित करें"
},
"restoreAccountWithSeed": {
"message": "सीड फ्रेज़ के साथ अपने खाते को पुनर्स्थापित करें"
"message": "गुप्त रिकवरी फ्रेज़ के साथ अपने खाते को पुनर्स्थापित करें"
},
"restoreWalletPreferences": {
"message": "$1 से आपके डेटा का बैकअप मिला है। क्या आप अपनी वॉलेट वरीयताओं को पुनर्स्थापित करना चाहते हैं?",
@ -1251,13 +1473,13 @@
"message": "यहाँ पर एक टोकन आपके द्वारा देखे जाने वाले दूसरे टोकन से प्रतीक का पुनः उपयोग करता है, यह भ्रामक या धोखाधड़ी वाला हो सकता है।"
},
"revealSeedWords": {
"message": "सीड फ्रेज़ प्रकट करें"
"message": "गुप्त रिकवरी फ्रेज़ प्रकट करें"
},
"revealSeedWordsDescription": {
"message": "यदि आप कभी ब्राउज़र बदलते हैं या कंप्यूटर को स्थानांतरित करते हैं, तो आपको अपने खातों तक पहुँचने के लिए इस सीड फ्रेज़ की आवश्यकता होगी। उन्हें कहीं सुरक्षित और गोपनीय तरीके से सहेजें।"
"message": "यदि आप कभी ब्राउज़र बदलते हैं या कंप्यूटर को स्थानांतरित करते हैं, तो आपको अपने खातों तक पहुँचने के लिए इस गुप्त रिकवरी फ्रेज़ की आवश्यकता होगी। उन्हें कहीं सुरक्षित और गोपनीय तरीके से सहेजें।"
},
"revealSeedWordsTitle": {
"message": "सीड फ्रेज़"
"message": "गुप्त रिकवरी फ्रेज़"
},
"revealSeedWordsWarning": {
"message": "इन शब्दों का उपयोग आपके सभी खातों को चुराने के लिए किया जा सकता है।"
@ -1310,20 +1532,23 @@
"secretBackupPhraseWarning": {
"message": "चेतावनी: कभी भी अपने बैकअप वाक्यांश का खुलासा न करें। इस वाक्यांश के साथ कोई भी आपके Ether को हमेशा के लिए ले सकता है।"
},
"secretPhrase": {
"message": "अपनी तिजोरी को पुनर्स्थापित करने के लिए अपने गुप्त फ्रेज़ को यहाँ दर्ज करें।"
},
"securityAndPrivacy": {
"message": "सुरक्षा और गोपनीयता"
},
"securitySettingsDescription": {
"message": "गोपनीयता सेटिंग और वॉलेट सीड फ्रेज़"
"message": "गोपनीयता सेटिंग्स और वॉलेट का गुप्त रिकवरी फ्रेज़"
},
"seedPhrasePlaceholder": {
"message": "प्रत्येक शब्द को एक रिक्ति से अलग करें"
},
"seedPhrasePlaceholderPaste": {
"message": "क्लिपबोर्ड से सीड फ्रेज़ को चिपकाएँ"
"message": "क्लिपबोर्ड से गुप्त रिकवरी फ्रेज़ को चिपकाएँ"
},
"seedPhraseReq": {
"message": "सीड फ्रेज़ में 12, 15, 18, 21 या 24 शब्द हैं"
"message": "गुप्त रिकवरी फ्रेज़ में 12, 15, 18, 21 या 24 शब्द होते हैं"
},
"selectAHigherGasFee": {
"message": "अपने लेनदेन की प्रक्रिया में तेज़ी लाने के लिए उच्च गैस शुल्क का चयन करें। *"
@ -1337,8 +1562,15 @@
"selectAnAccount": {
"message": "किसी खाते का चयन करें"
},
"selectAnAccountAlreadyConnected": {
"message": "यह खाता पहले ही MetaMask से जुड़ा हुआ है"
},
"selectAnAccountHelp": {
"message": "MetaMask में देखने के लिए खाते का चयन करें"
"message": "MetaMask में देखने के लिए खाते का चयन करें।"
},
"selectAnAccountHelpDirections": {
"message": "अपना खाता नहीं देख पा रहे हैं? $1",
"description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key"
},
"selectEachPhrase": {
"message": "कृपया प्रत्येक वाक्यांश का चयन करें, ताकि यह सुनिश्चित हो सके कि यह सही है।"
@ -1347,7 +1579,7 @@
"message": "HD पथ का चयन करें"
},
"selectPathHelp": {
"message": "यदि आपको अपने मौजूदा लेजर खाते नीचे नहीं दिखाई देते हैं, तो पथ को \"Legacy (MEW / MyCrypto)\" पर स्विच करने का प्रयास करें"
"message": "यदि आपको नीचे आपके मौजूदा लेजर खाते दिखाई नहीं देते हैं, तो पथ को \"लीगेसी (MEW / MyCrypto)\" पर स्विच करने का प्रयास करें"
},
"selectType": {
"message": "प्रकार का चयन करें"
@ -1408,7 +1640,7 @@
"message": "निजी कुंजियाँ दिखाएँ"
},
"showSeedPhrase": {
"message": "सीड फ्रेज़ दिखाएँ"
"message": "गुप्त रिकवरी फ्रेज़ दिखाएँ"
},
"sigRequest": {
"message": "हस्ताक्षर का अनुरोध"
@ -1480,6 +1712,27 @@
"statusNotConnected": {
"message": "कनेक्ट नहीं है"
},
"step1LedgerWallet": {
"message": "Ledger ऐप डाउनलोड करें"
},
"step1LedgerWalletMsg": {
"message": "डाउनलोड करें, सेट करें और अनलॉक करने के लिए अपना पासवर्ड दर्ज करें $1।",
"description": "$1 represents the `ledgerLiveApp` localization value"
},
"step1TrezorWallet": {
"message": "Trezor वॉलेट प्लग इन करें"
},
"step1TrezorWalletMsg": {
"message": "अपने वॉलेट को सीधे अपने कंप्यूटर से कनेक्ट करें। अपने हार्डवेयर वॉलेट डिवाइस के उपयोग के बारे में अधिक जानकारी के लिए, $1",
"description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key"
},
"step2LedgerWallet": {
"message": "Ledger वॉलेट प्लग इन करें"
},
"step2LedgerWalletMsg": {
"message": "अपने वॉलेट को सीधे अपने कंप्यूटर से कनेक्ट करें। अपने Ledger को अनलॉक करें और Ethereum ऐप खोलें। अपने हार्डवेयर वॉलेट डिवाइस के उपयोग के बारे में अधिक जानकारी के लिए, $1।",
"description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key"
},
"storePhrase": {
"message": "इस वाक्यांश को 1Password जैसे किसी पासवर्ड मैनेजर में संग्रहीत करें।"
},
@ -1489,6 +1742,9 @@
"submitted": {
"message": "सबमिट किया गया"
},
"support": {
"message": "सहायता"
},
"supportCenter": {
"message": "हमारे सहायता केंद्र पर जाएँ"
},
@ -1496,11 +1752,15 @@
"message": "स्वैप करें"
},
"swapAdvancedSlippageInfo": {
"message": "यदि आपके ऑर्डर किए जाने और पुष्टि किए जाने के समय के बीच मूल्य में परिवर्तन होता है, तो इसे \"स्लिपेज\" कहा जाता है। यदि आपका स्लिपेज आपकी \"अधिकतम स्लिपेज\" सेटिंग से अधिक हो जाता है, तो आपका स्वैप स्वतः रद्द हो जाएगा।"
"message": "यदि आपके ऑर्डर किए जाने और पुष्टि किए जाने के समय के बीच मूल्य में परिवर्तन होता है, तो इसे “स्लिपेज” कहा जाता है। यदि आपका स्लिपेज आपकी “अधिकतम स्लिपेज” सेटिंग से अधिक हो जाता है, तो आपका स्वैप स्वतः रद्द हो जाएगा।"
},
"swapAggregator": {
"message": "एग्रीगेटर"
},
"swapAllowSwappingOf": {
"message": "$1 स्वैप करने की अनुमति दें",
"description": "Shows a user that they need to allow a token for swapping on their hardware wallet"
},
"swapAmountReceived": {
"message": "गारंटीकृत राशि"
},
@ -1515,6 +1775,9 @@
"message": "इस स्वैप को पूरा करने के लिए आपको $1 और $2 की आवश्यकता होगी",
"description": "Tells the user how many more of a given token they need for a specific swap. $1 is an amount of tokens and $2 is the token symbol."
},
"swapBetterQuoteAvailable": {
"message": "एक बेहतर उद्धरण उपलब्ध है"
},
"swapBuildQuotePlaceHolderText": {
"message": "$1 के मिलान वाले कोई भी टोकन उपलब्ध नहीं हैं",
"description": "Tells the user that a given search string does not match any tokens in our token lists. $1 can be any string of text"
@ -1523,6 +1786,15 @@
"message": "$1 की जाँच की जा रही है",
"description": "Shown to the user during quote loading. $1 is the name of an aggregator. The message indicates that metamask is currently checking if that aggregator has a trade/quote for their requested swap."
},
"swapConfirmWithHwWallet": {
"message": "अपने हार्डवेयर वॉलेट से पुष्टि करें"
},
"swapContractDataDisabledErrorDescription": {
"message": "अपने Ledger पर Ethereum ऐप में, \"सेटिंग\" पर जाएं और अनुबंध डेटा की अनुमति दें। फिर, अपने स्वैप का पुनः प्रयास करें।"
},
"swapContractDataDisabledErrorTitle": {
"message": "आपके Ledger पर अनुबंध डेटा सक्षम नहीं है"
},
"swapCustom": {
"message": "कस्टम"
},
@ -1549,6 +1821,10 @@
"swapEstimatedNetworkFeesInfo": {
"message": "यह नेटवर्क शुल्क का एक अनुमान है, जिसे आपके स्वैप को पूरा करने के लिए उपयोग किया जाएगा। नेटवर्क की स्थितियों के अनुसार वास्तविक राशि बदल सकती है।"
},
"swapFailedErrorDescriptionWithSupportLink": {
"message": "लेन-देन विफल हो जाता है और हम मदद करने के लिए उपलब्ध हैं। यदि यह समस्या बनी रहती है, तो आप आगे की सहायता के लिए $1 पर हमारे ग्राहक सहायता से संपर्क कर सकते हैं।",
"description": "This message is shown to a user if their swap fails. The $1 will be replaced by support.metamask.io"
},
"swapFailedErrorTitle": {
"message": "स्वैप विफल रहा"
},
@ -1564,8 +1840,15 @@
"swapFinalizing": {
"message": "अंतिम रूप दिया जा रहा है..."
},
"swapFromTo": {
"message": "$1 से $2 का स्वैप",
"description": "Tells a user that they need to confirm on their hardware wallet a swap of 2 tokens. $1 is a source token and $2 is a destination token"
},
"swapGasFeesSplit": {
"message": "पिछली स्क्रीन पर गैस शुल्क इन दो लेनदेन के बीच विभाजित हैं।"
},
"swapHighSlippageWarning": {
"message": "स्लिपेज राशि बहुत अधिक है। सुनिश्चित करें कि आप जानते हैं कि आप क्या कर रहे हैं!"
"message": "स्लिपेज राशि बहुत अधिक है।"
},
"swapLowSlippageError": {
"message": "लेनदेन विफल हो सकता है, अधिकतम स्लिपेज बहुत कम हो सकता है।"
@ -1584,9 +1867,13 @@
"message": "MetaMask शुल्क"
},
"swapMetaMaskFeeDescription": {
"message": "हम हर बार शीर्ष चलनिधि स्रोतों से सबसे अच्छे मूल्य पाते हैं। $1% का शुल्क स्वचालित रूप से प्रत्येक उद्धरण में शामिल होता है, जो MetaMask को और बेहतर बनाने के लिए चालू विकास का समर्थन करता है।",
"message": "हम हर बार शीर्ष चलनिधि स्रोतों से सबसे अच्छे मूल्य पाते हैं। इस उद्धरण में $1% का शुल्क स्वतः ही शामिल हो जाता है।",
"description": "Provides information about the fee that metamask takes for swaps. $1 is a decimal number."
},
"swapNQuotes": {
"message": "$1 उद्धरण",
"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": "नेटवर्क शुल्क आपके स्वैप को संसाधित करने के शुल्क और उसे $1 नेटवर्क पर संग्रह करने को कवर करता है। MetaMask इस शुल्क से लाभ नहीं कमाता है।"
},
@ -1598,6 +1885,14 @@
"message": "यह लेनदेन संसाधित होने के बाद आपका $1 आपके खाते में जोड़ दिया जाएगा।",
"description": "This message communicates the token that is being transferred. It is shown on the awaiting swap screen. The $1 will be a token symbol."
},
"swapPriceDifference": {
"message": "आप $1 $2 (~$3) को $4 $5 (~$6) में स्वैप करने वाले हैं।",
"description": "This message represents the price slippage for the swap. $1 and $4 are a number (ex: 2.89), $2 and $5 are symbols (ex: ETH), and $3 and $6 are fiat currency amounts."
},
"swapPriceDifferenceTitle": {
"message": "~$1% का मूल्य अंतर",
"description": "$1 is a number (ex: 1.23) that represents the price difference."
},
"swapProcessing": {
"message": "प्रसंस्करण"
},
@ -1605,7 +1900,7 @@
"message": "उद्धरण का विवरण"
},
"swapQuoteDetailsSlippageInfo": {
"message": "यदि आपके ऑर्डर किए जाने और पुष्टि किए जाने के समय के बीच मूल्य में परिवर्तन होता है, तो इसे \"स्लिपेज\" कहा जाता है। यदि आपका स्लिपेज आपकी \"अधिकतम स्लिपेज\" सेटिंग से अधिक हो जाता है, तो आपका स्वैप स्वतः रद्द हो जाएगा।"
"message": "यदि आपके ऑर्डर किए जाने और पुष्टि किए जाने के समय के बीच मूल्य में परिवर्तन होता है, तो इसे \"स्लिपेज\" कहा जाता है। यदि स्लिपेज आपकी \"स्लिपेज टॉलरेंस\" सेटिंग से अधिक हो जाता है, तो आपका स्वैप स्वतः रद्द हो जाएगा।"
},
"swapQuoteIncludesRate": {
"message": "उद्धरण में $1% का MetaMask शुल्क शामिल है",
@ -1645,6 +1940,9 @@
"swapRequestForQuotation": {
"message": "उद्धरण के लिए अनुरोध"
},
"swapReviewSwap": {
"message": "स्वैप की समीक्षा करें"
},
"swapSearchForAToken": {
"message": "एक टोकन की खोज करें"
},
@ -1660,8 +1958,8 @@
"swapSelectQuotePopoverDescription": {
"message": "नीचे दिए गए सभी उद्धरण कई चलनिधि स्रोतों से एकत्र किए गए हैं।"
},
"swapSlippageTooLow": {
"message": "स्लिपेज शून्य से अधिक होना चाहिए"
"swapSlippageNegative": {
"message": "स्लिपेज शून्य से अधिक या बराबर होना चाहिए"
},
"swapSource": {
"message": "चलनिधि का स्रोत"
@ -1681,20 +1979,44 @@
"swapThisWillAllowApprove": {
"message": "यह $1 को स्वैप करने की अनुमति देगा।"
},
"swapToConfirmWithHwWallet": {
"message": "अपने हार्डवेयर वॉलेट से पुष्टि करने के लिए"
},
"swapTokenAvailable": {
"message": "आपके खाते में आपका $1 जोड़ दिया गया है।",
"description": "This message is shown after a swap is successful and communicates the exact amount of tokens the user has received for a swap. The $1 is a decimal number of tokens followed by the token symbol."
},
"swapTokenBalanceUnavailable": {
"message": "हम आपके $1 बैलेंस को पुनः प्राप्त करने में असमर्थ रहे",
"description": "This message communicates to the user that their balance of a given token is currently unavailable. $1 will be replaced by a token symbol"
},
"swapTokenToToken": {
"message": "$1 से $2 में स्वैप करें",
"description": "Used in the transaction display list to describe a swap. $1 and $2 are the symbols of tokens in involved in a swap."
},
"swapTokenVerificationMessage": {
"message": "हमेशा $1 पर टोकन पते की पुष्टि करें।",
"description": "Points the user to Etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"Etherscan\" followed by an info icon that shows more info on hover."
},
"swapTokenVerificationOnlyOneSource": {
"message": "केवल 1 स्रोत पर सत्यापित।"
},
"swapTokenVerificationSources": {
"message": "$1 स्रोतों पर सत्यापित।",
"description": "Indicates the number of token information sources that recognize the symbol + address. $1 is a decimal number."
},
"swapTransactionComplete": {
"message": "लेनदेन पूर्ण"
},
"swapTwoTransactions": {
"message": "2 लेन-देन"
},
"swapUnknown": {
"message": "अज्ञात"
},
"swapUsingBestQuote": {
"message": "सर्वोत्तम उद्धरण का उपयोग करना"
},
"swapVerifyTokenExplanation": {
"message": "एकाधिक टोकन एक ही नाम और प्रतीक का उपयोग कर सकते हैं। यह सत्यापित करने के लिए $1 की जाँच करें कि यह वही टोकन है, जिसकी आप तलाश कर रहे हैं।",
"description": "This appears in a tooltip next to the verifyThisTokenOn message. It gives the user more information about why they should check the token on a block explorer. $1 will be the name or url of the block explorer, which will be the translation of 'etherscan' or a block explorer url specified for a custom network."
@ -1712,8 +2034,11 @@
"swapsAdvancedOptions": {
"message": "उन्नत विकल्प"
},
"swapsExcessiveSlippageWarning": {
"message": "स्लिपेज राशि बहुत अधिक है और इसके परिणामस्वरूप खराब दर होगी। कृपया अपने स्लिपेज टॉलरेंस को 15% से कम के मान तक कम करें।"
},
"swapsMaxSlippage": {
"message": "अधिकतम स्लिपेज"
"message": "स्लिपेज टॉलरेंस"
},
"swapsNotEnoughForTx": {
"message": "इस लेनदेन को पूरा करने के लिए पर्याप्त $1 नहीं है",
@ -1722,12 +2047,30 @@
"swapsViewInActivity": {
"message": "गतिविधि में देखें"
},
"switchEthereumChainConfirmationDescription": {
"message": "इससे चयनित नेटवर्क को MetaMask के भीतर पहले से जोड़े गए नेटवर्क में बदल दिया जाएगा:"
},
"switchEthereumChainConfirmationTitle": {
"message": "इस साइट को नेटवर्क स्विच करने की अनुमति दें?"
},
"switchLedgerPaths": {
"message": "Ledger पथ स्विच करें"
},
"switchLedgerPathsText": {
"message": "अन्य खाते देखने के लिए Ledger पथ का चयन करें"
},
"switchNetwork": {
"message": "नेटवर्क स्विच करें"
},
"switchNetworks": {
"message": "नेटवर्क स्विच करें"
},
"switchToThisAccount": {
"message": "इस खाते पर स्विच करें"
},
"switchingNetworksCancelsPendingConfirmations": {
"message": "नेटवर्क स्विच करने से सभी लंबित पुष्टिकरण रद्द हो जाएंगे"
},
"symbol": {
"message": "प्रतीक"
},
@ -1744,7 +2087,7 @@
"message": "आपका डेटा सफलतापूर्वक सिंक कर लिया गया है। MetaMask मोबाइल ऐप का आनंद लें!"
},
"syncWithMobileDesc": {
"message": "आप अपने खाते और जानकारी को अपने मोबाइल डिवाइस के साथ सिंक कर सकते हैं। MetaMask मोबाइल ऐप खोलें, \"सेटिंग\" पर जाए और \"ब्राउज़र एक्सटेंशन से सिंक करें\" पर टैप करें"
"message": "आप अपने खाते और जानकारी को अपने मोबाइल डिवाइस के साथ सिंक कर सकते हैं। MetaMask मोबाइल ऐप खोलें, \"सेटिंग\" पर जाए और \"ब्राउज़र एक्सटेंशन से सिंक करें\" पर टैप करें"
},
"syncWithMobileDescNewUsers": {
"message": "यदि आप पहली बार MetaMask मोबाइल ऐप खोलते हैं, तो बस अपने फ़ोन में दिए गए चरणों का पालन करें।"
@ -1774,7 +2117,7 @@
"message": "फ़ॉसेट का परीक्षण करें"
},
"thisWillCreate": {
"message": "यह एक नया वॉलेट और सीड फ्रेज़ बनाएगा"
"message": "यह एक नया वॉलेट और गुप्त रिकवरी फ्रेज़ बनाएगा"
},
"tips": {
"message": "युक्तियाँ"
@ -1798,6 +2141,9 @@
"tokenContractAddress": {
"message": "टोकन अनुबंध पता"
},
"tokenDecimalFetchFailed": {
"message": "टोकन दशमलव आवश्यक है।"
},
"tokenSymbol": {
"message": "टोकन का प्रतीक"
},
@ -1900,6 +2246,14 @@
"unlockMessage": {
"message": "विकेंद्रीकृत वेब प्रतीक्षारत है"
},
"unrecognizedChain": {
"message": "यह कस्टम नेटवर्क पहचाना नहीं गया है। हम अनुशंसा करते हैं कि आप आगे बढ़ने से पहले $1",
"description": "$1 is a clickable link with text defined by the 'unrecognizedChanLinkText' key. The link will open to instructions for users to validate custom network details."
},
"unrecognizedChainLinkText": {
"message": "नेटवर्क विवरण सत्यापित करें",
"description": "Serves as link text for the 'unrecognizedChain' key. This text will be embedded inside the translation for that key."
},
"updatedWithDate": {
"message": "अपडेट किया गया $1"
},
@ -1921,6 +2275,10 @@
"userName": {
"message": "उपयोगकर्ता"
},
"verifyThisTokenDecimalOn": {
"message": "टोकन दशमलव $1 पर पाया जा सकता है",
"description": "Points the user to etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"etherscan\""
},
"verifyThisTokenOn": {
"message": "इस टोकन को $1 पर सत्यापित करें",
"description": "Points the user to etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"etherscan\""
@ -1928,9 +2286,15 @@
"viewAccount": {
"message": "खाता देखें"
},
"viewAllDetails": {
"message": "सभी विवरण देखें"
},
"viewContact": {
"message": "संपर्क देखें"
},
"viewMore": {
"message": "और देखें"
},
"viewOnCustomBlockExplorer": {
"message": "$1 पर देखें"
},
@ -1947,7 +2311,10 @@
"message": "हमारी हार्डवेयर वॉलेट कनेक्शन गाइड"
},
"walletSeed": {
"message": "सीड फ्रेज़"
"message": "गुप्त रिकवरी फ्रेज़"
},
"walletSeedRestore": {
"message": "वॉलेट का गुप्त रिकवरी फ्रेज़"
},
"welcome": {
"message": "MetaMask में आपका स्वागत है"
@ -1955,6 +2322,10 @@
"welcomeBack": {
"message": "वापसी पर स्वागत है!"
},
"whatsNew": {
"message": "नया क्या है",
"description": "This is the title of a popup that gives users notifications about new features and updates to MetaMask."
},
"whatsThis": {
"message": "यह क्या है?"
},
@ -1965,6 +2336,10 @@
"message": "$2 में से $1",
"description": "$1 and $2 are intended to be two numbers, where $2 is a total, and $1 is a count towards that total"
},
"xOfYPending": {
"message": "$2 में से $1 लंबित",
"description": "$1 and $2 are intended to be two numbers, where $2 is a total number of pending confirmations, and $1 is a count towards that total"
},
"yesLetsTry": {
"message": "हाँ, आइए आज़माते हैं"
},
@ -1975,7 +2350,7 @@
"message": "आप हस्ताक्षर कर रहे हैं"
},
"yourPrivateSeedPhrase": {
"message": "आपका निजी सीड फ्रेज़"
"message": "आपका निजी गुप्त रिकवरी फ्रेज़"
},
"zeroGasPriceOnSpeedUpError": {
"message": "ज़ीरो गैस मूल्य में तेज़ी"

View File

@ -6,7 +6,7 @@
"message": "Versi, pusat dukungan, dan informasi kontak"
},
"acceleratingATransaction": {
"message": "* Mempercepat transaksi dengan menggunakan biaya jaringan yang lebih tinggi akan meningkatkan peluang untuk diproses oleh jaringan lebih cepat, namun tidak selalu terjamin."
"message": "* Mempercepat transaksi dengan biaya jaringan yang lebih tinggi akan meningkatkan peluang untuk diproses oleh jaringan lebih cepat, namun tidak selalu terjamin."
},
"acceptTermsOfUse": {
"message": "Saya telah membaca dan menyetujui $1",
@ -49,6 +49,29 @@
"addAlias": {
"message": "Tambahkan alias"
},
"addContact": {
"message": "Tambah kontak"
},
"addEthereumChainConfirmationDescription": {
"message": "Ini akan memungkinkan jaringan ini digunakan dengan MetaMask."
},
"addEthereumChainConfirmationRisks": {
"message": "MetaMask tidak memverifikasi jaringan kustom."
},
"addEthereumChainConfirmationRisksLearnMore": {
"message": "Pelajari tentang $1.",
"description": "$1 is a link with text that is provided by the 'addEthereumChainConfirmationRisksLearnMoreLink' key"
},
"addEthereumChainConfirmationRisksLearnMoreLink": {
"message": "risiko keamanan jaringan dan scam",
"description": "Link text for the 'addEthereumChainConfirmationRisksLearnMore' translation key"
},
"addEthereumChainConfirmationTitle": {
"message": "Izinkan situs ini untuk menambahkan jaringan?"
},
"addFriendsAndAddresses": {
"message": "Tambahkan teman dan alamat yang Anda percayai"
},
"addNetwork": {
"message": "Tambahkan Jaringan"
},
@ -92,7 +115,13 @@
"message": "Menjelajahi situs web dengan akun yang tidak terhubung dipilih"
},
"alertSettingsUnconnectedAccountDescription": {
"message": "Peringatan ini ditampilkan dalam popup saat Anda menelusuri situs Web3 yang terhubung, namun akun yang baru saja dipilih tidak terhubung."
"message": "Peringatan ini ditampilkan dalam popup saat Anda menelusuri situs web3 yang terhubung, tetapi akun yang baru saja dipilih tidak terhubung."
},
"alertSettingsWeb3ShimUsage": {
"message": "Saat situs web mencoba menggunakan API window.web3 yang dihapus"
},
"alertSettingsWeb3ShimUsageDescription": {
"message": "Peringatan ini ditampilkan dalam popup saat Anda menelusuri situs yang mencoba menggunakan API window.web3 yang dihapus, dan mungkin rusak sebagai akibatnya."
},
"alerts": {
"message": "Peringatan"
@ -137,6 +166,9 @@
"approve": {
"message": "Setujui batas penggunaan"
},
"approveButtonText": {
"message": "Setujui"
},
"approveSpendLimit": {
"message": "Setujui batas penggunaan $1",
"description": "The token symbol that is being approved"
@ -147,6 +179,9 @@
"asset": {
"message": "Aset"
},
"assetOptions": {
"message": "Opsi aset"
},
"assets": {
"message": "Aset"
},
@ -199,7 +234,10 @@
"message": "Dasar"
},
"blockExplorerUrl": {
"message": "Block Explorer"
"message": "URL Block Explorer"
},
"blockExplorerUrlDefinition": {
"message": "URL digunakan sebagai blok explorer untuk jaringan ini."
},
"blockExplorerView": {
"message": "Lihat akun di $1",
@ -211,6 +249,9 @@
"browserNotSupported": {
"message": "Browser Anda tidak didukung..."
},
"builContactList": {
"message": "Buat daftar kontak Anda"
},
"builtInCalifornia": {
"message": "MetaMask didesain dan didirikan di California."
},
@ -226,6 +267,9 @@
"bytes": {
"message": "Byte"
},
"canToggleInSettings": {
"message": "Anda dapat mengaktifkan kembali pemberitahuan ini di Pengaturan -> Peringatan."
},
"cancel": {
"message": "Batal"
},
@ -238,6 +282,9 @@
"chainId": {
"message": "ID Rantai"
},
"chainIdDefinition": {
"message": "ID rantai digunakan untuk menandatangani transaksi untuk jaringan ini."
},
"chromeRequiredForHardwareWallets": {
"message": "Anda perlu menggunakan MetaMask di Google Chrome untuk terhubung ke Dompet Perangkat Keras Anda."
},
@ -259,6 +306,15 @@
"confirmed": {
"message": "Dikonfirmasikan"
},
"confusableUnicode": {
"message": "'$1' serupa dengan '$2'."
},
"confusableZeroWidthUnicode": {
"message": "Karakter Zero-width ditemukan."
},
"confusingEnsDomain": {
"message": "Kami telah mendeteksi karakter yang membingungkan di nama ENS. Periksa nama ENS untuk menghindari kemungkinan scam."
},
"congratulations": {
"message": "Selamat"
},
@ -348,9 +404,15 @@
"contactsSettingsDescription": {
"message": "Tambah, edit, hapus, dan kelola kontak Anda"
},
"continue": {
"message": "Lanjutkan"
},
"continueToWyre": {
"message": "Lanjutkan ke Wyre"
},
"contractAddressError": {
"message": "Anda mengirim token ke alamat kontrak token. Ini dapat mengakibatkan token ini hilang."
},
"contractDeployment": {
"message": "Penerapan Kontrak"
},
@ -390,6 +452,12 @@
"currencyConversion": {
"message": "Konversi Mata Uang"
},
"currencySymbol": {
"message": "Simbol Mata Uang"
},
"currencySymbolDefinition": {
"message": "Simbol ticker ditampilkan untuk mata uang jaringan ini."
},
"currentAccountNotConnected": {
"message": "Akun Anda saat ini tidak terhubung"
},
@ -418,7 +486,7 @@
"message": "Beberapa data akun Anda telah dicadangkan selama penginstalan MetaMask yang lalu. Ini bisa mencakup pengaturan, kontak, dan token Anda. Apakah Anda ingin memulihkan data ini sekarang?"
},
"decimal": {
"message": "Desimal Presisi"
"message": "Desimal Token"
},
"decimalsMustZerotoTen": {
"message": "Desimal harus sekurangnya 0, dan tidak lebih dari 36."
@ -488,6 +556,15 @@
"dismiss": {
"message": "Lewatkan"
},
"dismissReminderDescriptionField": {
"message": "Aktifkan ini untuk melewatkan pesan pengingat pencadangan frasa pemulihan. Kami sangat merekomendasikan agar Anda mencadangkan Frasa Pemulihan Rahasia Anda untuk menghindari hilangnya dana"
},
"dismissReminderField": {
"message": "Lewatkan pengingat pencadangan frasa pemulihan"
},
"domain": {
"message": "Domain"
},
"done": {
"message": "Selesai"
},
@ -512,6 +589,12 @@
"editContact": {
"message": "Edit Kontak"
},
"editNonceField": {
"message": "Edit Nonce"
},
"editNonceMessage": {
"message": "Ini adalah fitur lanjutan, gunakan dengan hati-hati."
},
"editPermission": {
"message": "Edit Izin"
},
@ -523,7 +606,7 @@
"message": "Minta kunci publik enkripsi"
},
"endOfFlowMessage1": {
"message": "Anda lulus ujian - jaga frasa pemulihan Anda tetap aman, ini tanggung jawab Anda!"
"message": "Anda lulus ujian - jaga Frasa Pemulihan Rahasia Anda tetap aman, ini tanggung jawab Anda!"
},
"endOfFlowMessage10": {
"message": "Semua Selesai"
@ -538,13 +621,13 @@
"message": "Jangan bagikan frasa kepada siapa pun."
},
"endOfFlowMessage5": {
"message": "Berhati-hatilah dengan phishing! MetaMask tidak pernah secara spontan meminta frasa pemulihan Anda."
"message": "Berhati-hatilah dengan phishing! MetaMask tidak pernah secara spontan meminta Frasa Pemulihan Rahasia Anda."
},
"endOfFlowMessage6": {
"message": "Jika Anda perlu mencadangkan frasa pemulihan lagi, Anda dapat menemukannya di Pengaturan -> Keamanan."
"message": "Jika Anda perlu mencadangkan Frasa Pemulihan Rahasia lagi, Anda dapat menemukannya di Pengaturan -> Keamanan."
},
"endOfFlowMessage8": {
"message": "MetaMask tidak dapat memulihkan frasa pemulihan Anda."
"message": "MetaMask tidak dapat memulihkan Frasa Pemulihan Rahasia Anda."
},
"endOfFlowMessage9": {
"message": "Pelajari selengkapnya."
@ -587,6 +670,14 @@
"message": "Kode: $1",
"description": "Displayed error name for debugging purposes. $1 is the error name"
},
"errorPageMessage": {
"message": "Coba lagi dengan memuat kembali halaman, atau hubungi dukungan $1.",
"description": "Message displayed on generic error page in the fullscreen or notification UI, $1 is a clickable link with text defined by the 'here' key. The link will open to a form where users can file support tickets."
},
"errorPagePopupMessage": {
"message": "Coba lagi dengan menutup dan membuka kembali popup, atau hubungi dukungan $1.",
"description": "Message displayed on generic error page in the popup UI, $1 is a clickable link with text defined by the 'here' key. The link will open to a form where users can file support tickets."
},
"errorPageTitle": {
"message": "MetaMask menemukan kesalahan",
"description": "Title of generic error page"
@ -598,6 +689,9 @@
"estimatedProcessingTimes": {
"message": "Waktu Pemrosesan yang Diperkirakan"
},
"ethGasPriceFetchWarning": {
"message": "Biaya jaringan cadangan diberikan karena layanan estimasi biaya jaringan utama tidak tersedia saat ini."
},
"eth_accounts": {
"message": "Lihat alamat akun Anda yang diizinkan (wajib)",
"description": "The description for the `eth_accounts` permission"
@ -685,9 +779,18 @@
"gasPrice": {
"message": "Biaya Jaringan (GWEI)"
},
"gasPriceExcessive": {
"message": "Biaya jaringan Anda diatur terlalu tinggi. Pertimbangkan untuk menurunkan jumlahnya."
},
"gasPriceExcessiveInput": {
"message": "Biaya Jaringan Berlebihan"
},
"gasPriceExtremelyLow": {
"message": "Biaya Jaringan Sangat Rendah"
},
"gasPriceFetchFailed": {
"message": "Estimasi biaya jaringan gagal karena kesalahan jaringan."
},
"gasPriceInfoTooltipContent": {
"message": "Biaya jaringan menentukan jumlah Ether yang ingin Anda bayar untuk masing-masing unit biaya jaringan."
},
@ -730,11 +833,18 @@
"hardwareWalletConnected": {
"message": "Dompet perangkat keras terhubung"
},
"hardwareWalletLegacyDescription": {
"message": "(warisan)",
"description": "Text representing the MEW path"
},
"hardwareWalletSupportLinkConversion": {
"message": "klik di sini"
},
"hardwareWallets": {
"message": "Hubungkan dompet perangkat keras"
},
"hardwareWalletsMsg": {
"message": "Pilih dompet perangkat keras yang ingin Anda gunakan dengan MetaMask"
"message": "Pilih dompet perangkat keras yang ingin Anda gunakan dengan MetaMask."
},
"here": {
"message": "di sini",
@ -753,6 +863,9 @@
"message": "Sembunyikan $1",
"description": "$1 is the symbol for a token (e.g. 'DAI')"
},
"hideZeroBalanceTokens": {
"message": "Menyembunyikan Token Tanpa Saldo"
},
"history": {
"message": "Riwayat"
},
@ -761,21 +874,31 @@
"description": "Button to import an account from a selected file"
},
"importAccount": {
"message": "Impor Akun"
"message": "Mengimpor Akun"
},
"importAccountLinkText": {
"message": "impor menggunakan Frasa Pemulihan Rahasia"
},
"importAccountMsg": {
"message": " Akun yang diimpor tidak akan dikaitkan dengan frasa pemulihan akun MetaMask yang asli dibuat. Pelajari selengkapnya tentang akun yang diimpor "
"message": " Akun yang diimpor tidak akan dikaitkan dengan Frasa Pemulihan Rahasia akun MetaMask yang asli dibuat. Pelajari selengkapnya tentang akun yang diimpor "
},
"importAccountSeedPhrase": {
"message": "Impor akun dengan frasa pemulihan"
"message": "Impor akun dengan Frasa Pemulihan Rahasia"
},
"importWallet": {
"message": "Impor dompet"
},
"importYourExisting": {
"message": "Impor dompet Anda yang ada menggunakan Frasa Pemulihan Rahasia"
},
"imported": {
"message": "Diimpor",
"description": "status showing that an account has been fully loaded into the keyring"
},
"infuraBlockedNotification": {
"message": "MetaMask tidak dapat terhubung ke host blockchain. Tinjau alasan yang mungkin $1.",
"description": "$1 is a clickable link with with text defined by the 'here' key"
},
"initialTransactionConfirmed": {
"message": "Transaksi awal Anda dikonfirmasikan oleh jaringan. Klik Oke untuk kembali."
},
@ -800,6 +923,9 @@
"invalidBlockExplorerURL": {
"message": "URL Block Explorer Tidak Valid"
},
"invalidChainIdTooBig": {
"message": "ID rantai tidak valid. ID rantai terlalu besar."
},
"invalidCustomNetworkAlertContent1": {
"message": "ID rantai untuk jaringan kustom '$1' harus dimasukkan kembali.",
"description": "$1 is the name/identifier of the network."
@ -833,7 +959,7 @@
"message": "URL RPC Tidak Valid"
},
"invalidSeedPhrase": {
"message": "Frasa pemulihan tidak valid"
"message": "Frasa Pemulihan Rahasia Tidak Valid"
},
"ipfsGateway": {
"message": "Gateway IPFS"
@ -863,6 +989,21 @@
"ledgerAccountRestriction": {
"message": "Anda perlu memanfaatkan akun terakhir Anda sebelum menambahkan yang baru."
},
"ledgerLiveAdvancedSetting": {
"message": "Gunakan Ledger Live"
},
"ledgerLiveAdvancedSettingDescription": {
"message": "Jembatan Ledger Live baru memungkinkan Anda untuk menggunakan Ledger Anda dengan lebih mudah. Hanya tersedia di Chrome."
},
"ledgerLiveApp": {
"message": "Aplikasi Ledger Live"
},
"ledgerLocked": {
"message": "Tidak dapat terhubung ke perangkat Ledger. Pastikan perangkat Anda tidak terkunci dan aplikasi Ethereum dibuka."
},
"ledgerTimeout": {
"message": "Ledger Live terlalu lama untuk merespons atau waktu koneksi habis. Pastikan aplikasi Ledger Live terbuka dan perangkat Anda tidak terkunci."
},
"letsGoSetUp": {
"message": "Ya, mari siap-siap!"
},
@ -954,6 +1095,14 @@
"metametricsOptInDescription": {
"message": "MetaMask ingin mengumpulkan data penggunaan untuk lebih memahami cara pengguna berinteraksi dengan ekstensi. Data ini akan digunakan untuk secara kontinu memperbaiki kegunaan dan pengalaman pengguna atas produk kami dan ekosistem Ethereum."
},
"mismatchedChain": {
"message": "Detail jaringan untuk ID rantai ini tidak cocok dengan catatan kami. Kami menyarankan agar Anda $1 sebelum melanjutkan.",
"description": "$1 is a clickable link with text defined by the 'mismatchedChainLinkText' key"
},
"mismatchedChainLinkText": {
"message": "verifikasi detail jaringan",
"description": "Serves as link text for the 'mismatchedChain' key. This text will be embedded inside the translation for that key."
},
"mobileSyncText": {
"message": "Masukkan kata sandi Anda untuk memastikan ini adalah Anda!"
},
@ -963,9 +1112,19 @@
"myAccounts": {
"message": "Akun Saya"
},
"name": {
"message": "Nama"
},
"needEtherInWallet": {
"message": "Untuk berinteraksi dengan aplikasi yang terdesentralisasi menggunakan MetaMask, Anda memerlukan Ether di dompet Anda."
},
"needHelp": {
"message": "Butuh bantuan? Hubungi $1",
"description": "$1 represents `needHelpLinkText`, the text which goes in the help link"
},
"needHelpLinkText": {
"message": "Dukungan MetaMask"
},
"needImportFile": {
"message": "Anda harus memilih file untuk diimpor.",
"description": "User is important an account and needs to add a file to continue"
@ -973,15 +1132,36 @@
"negativeETH": {
"message": "Tidak dapat mengirim jumlah negatif ETH."
},
"networkDetails": {
"message": "Detail Jaringan"
},
"networkName": {
"message": "Nama Jaringan"
},
"networkNameBSC": {
"message": "BSC"
},
"networkNameDefinition": {
"message": "Nama dikaitkan dengan jaringan ini."
},
"networkNameEthereum": {
"message": "Ethereum"
},
"networkNameTestnet": {
"message": "Testnet"
},
"networkSettingsChainIdDescription": {
"message": "ID rantai digunakan untuk menandatangani transaksi. Harus cocok dengan ID rantai yang dikembalikan oleh jaringan. Anda dapat memasukkan bilangan heksadesimal berawalan '0x' atau desimal, namun kami akan menampilkan bilangan tersebut dalam desimal."
},
"networkSettingsDescription": {
"message": "Tambahkan dan edit jaringan RPC kustom"
},
"networkURL": {
"message": "URL Jaringan"
},
"networkURLDefinition": {
"message": "URL digunakan untuk mengakses jaringan ini."
},
"networks": {
"message": "Jaringan"
},
@ -1033,7 +1213,7 @@
"message": "Tidak ada alamat yang ditetapkan untuk nama ini."
},
"noAlreadyHaveSeed": {
"message": "Tidak, saya sudah memiliki frasa pemulihan"
"message": "Tidak, saya sudah memiliki Frasa Pemulihan Rahasia"
},
"noConversionRateAvailable": {
"message": "Tidak Ada Nilai Konversi yang Tersedia"
@ -1050,6 +1230,9 @@
"noWebcamFoundTitle": {
"message": "Webcam tidak ditemukan"
},
"nonce": {
"message": "Nonce"
},
"nonceField": {
"message": "Sesuaikan nonce transaksi"
},
@ -1065,6 +1248,42 @@
"notEnoughGas": {
"message": "Biaya Jaringan Tidak Cukup"
},
"notifications1Description": {
"message": "Pengguna MetaMask Mobile sekarang bisa menukar token di dalam dompet seluler mereka. Pindai kode QR untuk mendapatkan aplikasi seluler dan mulai menukar.",
"description": "Description of a notification in the 'See What's New' popup. Describes the swapping on mobile feature."
},
"notifications1Title": {
"message": "Penukaran di seluler ada di sini!",
"description": "Title for a notification in the 'See What's New' popup. Tells users that they can now use MetaMask Swaps on Mobile."
},
"notifications3ActionText": {
"message": "Baca selengkapnya",
"description": "The 'call to action' on the button, or link, of the 'Stay secure' notification. Upon clicking, users will be taken to a page about security on the metamask support website."
},
"notifications3Description": {
"message": "Dapatkan informasi terbaru tentang praktik terbaik keamanan MetaMask dan dapatkan kiat-kiat keamanan terkini dari dukungan MetaMask resmi.",
"description": "Description of a notification in the 'See What's New' popup. Describes the information they can get on security from the linked support page."
},
"notifications3Title": {
"message": "Tetap aman",
"description": "Title for a notification in the 'See What's New' popup. Encourages users to consider security."
},
"notifications4ActionText": {
"message": "Mulai menukar",
"description": "The 'call to action' on the button, or link, of the 'Swap on Binance Smart Chain!' notification. Upon clicking, users will be taken to a page where then can swap tokens on Binance Smart Chain."
},
"notifications4Description": {
"message": "Dapatkan harga terbaik di penukaran token langsung di dompet Anda. MetaMask kini menghubungkan Anda ke berbagai agregator penukaran terdesentralisasi dan pembuat pasar profesional di Binance Smart Chain.",
"description": "Description of a notification in the 'See What's New' popup."
},
"notifications4Title": {
"message": "Tukar di Binance Smart Chain",
"description": "Title for a notification in the 'See What's New' popup. Encourages users to do swaps on Binance Smart Chain."
},
"notifications5Description": {
"message": "\"Frasa Pemulihan\" Anda kini disebut \"Frasa Pemulihan Rahasia.\"",
"description": "Description of a notification in the 'See What's New' popup. Describes the seed phrase wording update."
},
"ofTextNofM": {
"message": "dari"
},
@ -1171,6 +1390,9 @@
"provide": {
"message": "Berikan"
},
"publicAddress": {
"message": "Alamat Publik"
},
"queue": {
"message": "Antrean"
},
@ -1217,7 +1439,7 @@
"message": "Hapus akun"
},
"removeAccountDescription": {
"message": "Akun ini akan dihapus dari dompet Anda. Pastikan Anda memiliki frasa pemulihan asli atau kunci privat untuk akun impor ini sebelum melanjutkan. Anda dapat mengimpor atau membuat akun lagi dari akun drop down. "
"message": "Akun ini akan dihapus dari dompet Anda. Pastikan Anda memiliki Frasa Pemulihan Rahasia asli atau kunci privat untuk akun impor ini sebelum melanjutkan. Anda dapat mengimpor atau membuat akun lagi dari drop down akun. "
},
"requestsAwaitingAcknowledgement": {
"message": "permintaan menunggu untuk diakui"
@ -1232,13 +1454,13 @@
"message": "Atur Ulang Akun"
},
"resetAccountDescription": {
"message": "Mengatur ulang akun akan mengosongkan riwayat transaksi Anda. Ini tidak akan mengubah saldo di akun atau mengharuskan Anda untuk memasukkan kembali frasa pemulihan Anda."
"message": "Mengatur ulang akun akan mengosongkan riwayat transaksi Anda. Ini tidak akan mengubah saldo di akun atau mengharuskan Anda untuk memasukkan kembali Frasa Pemulihan Rahasia Anda."
},
"restore": {
"message": "Pulihkan"
},
"restoreAccountWithSeed": {
"message": "Memulihkan Akun dengan Frasa Pemulihan"
"message": "Memulihkan Akun dengan Frasa Pemulihan Rahasia"
},
"restoreWalletPreferences": {
"message": "Cadangan data Anda dari $1 telah ditemukan. Apakah Anda ingin memulihkan preferensi dompet Anda?",
@ -1251,13 +1473,13 @@
"message": "Token di sini menggunakan kembali simbol dari token lain yang Anda lihat, ini bisa jadi membingungkan atau menipu."
},
"revealSeedWords": {
"message": "Mengungkapkan Frasa Pemulihan"
"message": "Mengungkapkan Frasa Pemulihan Rahasia"
},
"revealSeedWordsDescription": {
"message": "Jika Anda pernah mengubah browser atau mengganti komputer, Anda akan memerlukan frasa pemulihan ini untuk mengakses akun Anda. Simpan di tempat yang aman dan rahasia."
"message": "Jika Anda pernah mengubah browser atau mengganti komputer, Anda akan memerlukan Frasa Pemulihan Rahasia ini untuk mengakses akun Anda. Simpan di tempat yang aman dan rahasia."
},
"revealSeedWordsTitle": {
"message": "Frasa Pemulihan"
"message": "Frasa Pemulihan Rahasia"
},
"revealSeedWordsWarning": {
"message": "Kata-kata ini dapat digunakan untuk mencuri semua akun Anda."
@ -1310,20 +1532,23 @@
"secretBackupPhraseWarning": {
"message": "PERINGATAN: Jangan pernah ungkapkan frasa cadangan Anda. Siapa pun yang memiliki frasa ini dapat mengambil Ether Anda selamanya."
},
"secretPhrase": {
"message": "Masukkan frasa rahasia Anda untuk memulihkan vault Anda."
},
"securityAndPrivacy": {
"message": "Keamanan & Privasi"
},
"securitySettingsDescription": {
"message": "Pengaturan privasi dan frasa pemulihan dompet"
"message": "Pengaturan privasi dan Frasa Pemulihan Rahasia dompet"
},
"seedPhrasePlaceholder": {
"message": "Pisahkan setiap kata dengan satu spasi"
},
"seedPhrasePlaceholderPaste": {
"message": "Tempel frasa pemulihan dari clipboard"
"message": "Tempel Frasa Pemulihan Rahasia dari clipboard"
},
"seedPhraseReq": {
"message": "Frasa pemulihan berisi 12, 15, 18, 21, atau 24 kata"
"message": "Frasa Pemulihan Rahasia berisi 12, 15, 18, 21, atau 24 kata"
},
"selectAHigherGasFee": {
"message": "Pilih biaya jaringan yang lebih tinggi untuk mempercepat pemrosesan transaksi Anda.*"
@ -1337,8 +1562,15 @@
"selectAnAccount": {
"message": "Pilih Akun"
},
"selectAnAccountAlreadyConnected": {
"message": "Akun ini sudah terhubung ke MetaMask."
},
"selectAnAccountHelp": {
"message": "Pilih akun untuk dilihat di MetaMask"
"message": "Pilih akun untuk dilihat di MetaMask."
},
"selectAnAccountHelpDirections": {
"message": "Tidak melihat akun Anda? $1",
"description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key"
},
"selectEachPhrase": {
"message": "Pilih masing-masing frasa untuk memastikan kebenarannya."
@ -1408,7 +1640,7 @@
"message": "Tampilkan Kunci Privat"
},
"showSeedPhrase": {
"message": "Tampilkan frasa pemulihan"
"message": "Menampilkan Frasa Pemulihan Rahasia"
},
"sigRequest": {
"message": "Permintaan Tanda Tangan"
@ -1480,6 +1712,27 @@
"statusNotConnected": {
"message": "Tidak terhubung"
},
"step1LedgerWallet": {
"message": "Unduh aplikasi Ledger"
},
"step1LedgerWalletMsg": {
"message": "Unduh, siapkan, dan masukkan kata sandi Anda untuk membuka $1.",
"description": "$1 represents the `ledgerLiveApp` localization value"
},
"step1TrezorWallet": {
"message": "Sambungkan dompet Trezor"
},
"step1TrezorWalletMsg": {
"message": "Hubungkan dompet Anda langsung ke komputer. Untuk selengkapnya tentang penggunaan perangkat dompet perangkat keras Anda, $1",
"description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key"
},
"step2LedgerWallet": {
"message": "Sambungkan dompet Ledger"
},
"step2LedgerWalletMsg": {
"message": "Hubungkan dompet Anda langsung ke komputer. Buka Ledger dan buka aplikasi Ethereum. Untuk selengkapnya tentang penggunaan perangkat dompet perangkat keras Anda, $1.",
"description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key"
},
"storePhrase": {
"message": "Simpan frasa ini dalam pengelola kata sandi seperti 1Password."
},
@ -1489,6 +1742,9 @@
"submitted": {
"message": "Terkirim"
},
"support": {
"message": "Dukungan"
},
"supportCenter": {
"message": "Kunjungi Pusat Dukungan kami"
},
@ -1501,6 +1757,10 @@
"swapAggregator": {
"message": "Agregator"
},
"swapAllowSwappingOf": {
"message": "Izinkan penukaran $1",
"description": "Shows a user that they need to allow a token for swapping on their hardware wallet"
},
"swapAmountReceived": {
"message": "Jumlah yang dijamin"
},
@ -1515,6 +1775,9 @@
"message": "Anda memerlukan $1 lagi $2 untuk menyelesaikan penukaran ini",
"description": "Tells the user how many more of a given token they need for a specific swap. $1 is an amount of tokens and $2 is the token symbol."
},
"swapBetterQuoteAvailable": {
"message": "Kuota yang lebih baik tersedia"
},
"swapBuildQuotePlaceHolderText": {
"message": "Tidak ada token yang cocok yang tersedia $1",
"description": "Tells the user that a given search string does not match any tokens in our token lists. $1 can be any string of text"
@ -1523,6 +1786,15 @@
"message": "Memeriksa $1",
"description": "Shown to the user during quote loading. $1 is the name of an aggregator. The message indicates that metamask is currently checking if that aggregator has a trade/quote for their requested swap."
},
"swapConfirmWithHwWallet": {
"message": "Konfirmasikan dengan dompet perangkat keras Anda"
},
"swapContractDataDisabledErrorDescription": {
"message": "Di aplikasi Ethereum di Ledger Anda, buka \"Pengaturan\" dan izinkan data kontrak. Lalu, coba penukaran Anda kembali."
},
"swapContractDataDisabledErrorTitle": {
"message": "Data kontrak tidak diaktifkan di Ledger Anda"
},
"swapCustom": {
"message": "kustom"
},
@ -1549,6 +1821,10 @@
"swapEstimatedNetworkFeesInfo": {
"message": "Ini adalah perkiraan biaya jaringan yang akan digunakan untuk menyelesaikan penukaran Anda. Jumlah aktual dapat berubah sesuai dengan kondisi jaringan."
},
"swapFailedErrorDescriptionWithSupportLink": {
"message": "Kegagalan transaksi terjadi dan kami di sini untuk membantu. Jika masalah tetap ada, Anda dapat menghubungi dukungan pelanggan kami di $1 untuk mendapatkan bantuan lebih jauh.",
"description": "This message is shown to a user if their swap fails. The $1 will be replaced by support.metamask.io"
},
"swapFailedErrorTitle": {
"message": "Penukaran gagal"
},
@ -1564,8 +1840,15 @@
"swapFinalizing": {
"message": "Menyelesaikan..."
},
"swapFromTo": {
"message": "Penukaran dari $1 ke $2",
"description": "Tells a user that they need to confirm on their hardware wallet a swap of 2 tokens. $1 is a source token and $2 is a destination token"
},
"swapGasFeesSplit": {
"message": "Biaya jaringan di layar sebelumnya dibagi antara kedua transaksi ini."
},
"swapHighSlippageWarning": {
"message": "Jumlah slippage sangat tinggi. Pastikan Anda mengetahui yang Anda kerjakan!"
"message": "Jumlah slippage sangat tinggi."
},
"swapLowSlippageError": {
"message": "Transaksi bisa gagal, slippage maks. terlalu rendah."
@ -1584,9 +1867,13 @@
"message": "Biaya MetaMask"
},
"swapMetaMaskFeeDescription": {
"message": "Kami menemukan harga terbaik dari sumber likuiditas teratas, setiap waktu. Biaya sebesar $1% secara otomatis diperhitungkan ke dalam setiap kuota, yang mendukung pengembangan berkelanjutan untuk membuat MetaMask lebih baik lagi.",
"message": "Kami menemukan harga terbaik dari sumber likuiditas teratas, setiap waktu. Biaya sebesar $1% otomatis diperhitungkan ke kuota ini.",
"description": "Provides information about the fee that metamask takes for swaps. $1 is a decimal number."
},
"swapNQuotes": {
"message": "$1 kuota",
"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": "Biaya jaringan mencakup biaya pemrosesan penukaran Anda dan menyimpannya di jaringan $1. MetaMask tidak mendapatkan keuntungan dari biaya ini."
},
@ -1598,6 +1885,14 @@
"message": "$1 akan ditambahkan ke akun Anda setelah transaksi ini diproses.",
"description": "This message communicates the token that is being transferred. It is shown on the awaiting swap screen. The $1 will be a token symbol."
},
"swapPriceDifference": {
"message": "Anda akan menukar $1 $2 (~$3) untuk $4 $5 (~$6).",
"description": "This message represents the price slippage for the swap. $1 and $4 are a number (ex: 2.89), $2 and $5 are symbols (ex: ETH), and $3 and $6 are fiat currency amounts."
},
"swapPriceDifferenceTitle": {
"message": "Perbedaan harga ~$1%",
"description": "$1 is a number (ex: 1.23) that represents the price difference."
},
"swapProcessing": {
"message": "Memproses"
},
@ -1605,7 +1900,7 @@
"message": "Detail kuota"
},
"swapQuoteDetailsSlippageInfo": {
"message": "Jika harga berubah antara waktu pesanan Anda ditempatkan dan dikonfirmasi, ini disebut \"slippage\". Penukaran Anda akan otomatis dibatalkan jika slippage melebihi pengaturan \"slippage maks.\"."
"message": "Jika harga berubah antara waktu pesanan Anda ditempatkan dan dikonfirmasi, ini disebut \"slippage\". Penukaran Anda akan otomatis dibatalkan jika slippage melebihi pengaturan \"toleransi slippage\"."
},
"swapQuoteIncludesRate": {
"message": "Kuota mencakup biaya MetaMask $1%",
@ -1645,6 +1940,9 @@
"swapRequestForQuotation": {
"message": "Meminta penawaran"
},
"swapReviewSwap": {
"message": "Meninjau Penukaran"
},
"swapSearchForAToken": {
"message": "Cari token"
},
@ -1660,8 +1958,8 @@
"swapSelectQuotePopoverDescription": {
"message": "Di bawah ini adalah semua kuota yang dikumpulkan dari beberapa sumber likuiditas."
},
"swapSlippageTooLow": {
"message": "Slippage harus lebih besar dari nol"
"swapSlippageNegative": {
"message": "Slippage harus lebih besar atau sama dengan nol"
},
"swapSource": {
"message": "Sumber likuiditas"
@ -1681,20 +1979,44 @@
"swapThisWillAllowApprove": {
"message": "Ini akan memungkinkan $1 untuk ditukar."
},
"swapToConfirmWithHwWallet": {
"message": "untuk mengonfirmasikan dengan dompet perangkat keras Anda"
},
"swapTokenAvailable": {
"message": "$1 Anda telah ditambahkan ke akun Anda.",
"description": "This message is shown after a swap is successful and communicates the exact amount of tokens the user has received for a swap. The $1 is a decimal number of tokens followed by the token symbol."
},
"swapTokenBalanceUnavailable": {
"message": "Kami tidak dapat mengambil saldo $1 Anda",
"description": "This message communicates to the user that their balance of a given token is currently unavailable. $1 will be replaced by a token symbol"
},
"swapTokenToToken": {
"message": "Tukar $1 untuk $2",
"description": "Used in the transaction display list to describe a swap. $1 and $2 are the symbols of tokens in involved in a swap."
},
"swapTokenVerificationMessage": {
"message": "Selalu konfirmasikan alamat token di $1.",
"description": "Points the user to Etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"Etherscan\" followed by an info icon that shows more info on hover."
},
"swapTokenVerificationOnlyOneSource": {
"message": "Hanya diverifikasi di 1 sumber."
},
"swapTokenVerificationSources": {
"message": "Diverifikasi di $1 sumber.",
"description": "Indicates the number of token information sources that recognize the symbol + address. $1 is a decimal number."
},
"swapTransactionComplete": {
"message": "Transaksi selesai"
},
"swapTwoTransactions": {
"message": "2 transaksi"
},
"swapUnknown": {
"message": "Tidak diketahui"
},
"swapUsingBestQuote": {
"message": "Menggunakan kuota terbaik"
},
"swapVerifyTokenExplanation": {
"message": "Beberapa token dapat menggunakan simbol dan nama yang sama. Periksa $1 untuk memverifikasi inilah token yang Anda cari.",
"description": "This appears in a tooltip next to the verifyThisTokenOn message. It gives the user more information about why they should check the token on a block explorer. $1 will be the name or url of the block explorer, which will be the translation of 'etherscan' or a block explorer url specified for a custom network."
@ -1712,8 +2034,11 @@
"swapsAdvancedOptions": {
"message": "Opsi Tingkat Lanjut"
},
"swapsExcessiveSlippageWarning": {
"message": "Jumlah slippage terlalu tinggi dan akan mengakibatkan tarif yang buruk. Kurangi toleransi slippage Anda ke nilai di bawah 15%."
},
"swapsMaxSlippage": {
"message": "Maks. slippage"
"message": "Toleransi Slippage"
},
"swapsNotEnoughForTx": {
"message": "Tidak cukup $1 untuk menyelesaikan transaksi ini",
@ -1722,12 +2047,30 @@
"swapsViewInActivity": {
"message": "Lihat dalam aktivitas"
},
"switchEthereumChainConfirmationDescription": {
"message": "Ini akan mengalihkan jaringan yang dipilih dalam MetaMask ke jaringan yang ditambahkan sebelumnya:"
},
"switchEthereumChainConfirmationTitle": {
"message": "Izinkan situs ini untuk beralih jaringan?"
},
"switchLedgerPaths": {
"message": "Beralih jalur Ledger"
},
"switchLedgerPathsText": {
"message": "Pilih jalur Ledger untuk melihat akun lain"
},
"switchNetwork": {
"message": "Beralih jaringan"
},
"switchNetworks": {
"message": "Beralih Jaringan"
},
"switchToThisAccount": {
"message": "Beralih ke akun ini"
},
"switchingNetworksCancelsPendingConfirmations": {
"message": "Mengalihkan jaringan akan membatalkan semua konfirmasi yang tertunda"
},
"symbol": {
"message": "Simbol"
},
@ -1774,7 +2117,7 @@
"message": "Uji Fungsi"
},
"thisWillCreate": {
"message": "Ini akan membuat frasa pemulihan dan dompet baru"
"message": "Ini akan membuat Frasa Pemulihan Rahasia dan dompet baru"
},
"tips": {
"message": "Kiat"
@ -1798,6 +2141,9 @@
"tokenContractAddress": {
"message": "Alamat Kontrak Token"
},
"tokenDecimalFetchFailed": {
"message": "Desimal token diperlukan."
},
"tokenSymbol": {
"message": "Simbol Token"
},
@ -1900,6 +2246,14 @@
"unlockMessage": {
"message": "Web terdesentralisasi menunggu"
},
"unrecognizedChain": {
"message": "Jaringan kustom ini tidak dikenali. Kami menyarankan agar Anda $1 sebelum melanjutkan",
"description": "$1 is a clickable link with text defined by the 'unrecognizedChanLinkText' key. The link will open to instructions for users to validate custom network details."
},
"unrecognizedChainLinkText": {
"message": "verifikasi detail jaringan",
"description": "Serves as link text for the 'unrecognizedChain' key. This text will be embedded inside the translation for that key."
},
"updatedWithDate": {
"message": "Diperbarui $1"
},
@ -1921,6 +2275,10 @@
"userName": {
"message": "Nama pengguna"
},
"verifyThisTokenDecimalOn": {
"message": "Desimal token dapat ditemukan di $1",
"description": "Points the user to etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"etherscan\""
},
"verifyThisTokenOn": {
"message": "Verifikasikan token ini di $1",
"description": "Points the user to etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"etherscan\""
@ -1928,9 +2286,15 @@
"viewAccount": {
"message": "Lihat Akun"
},
"viewAllDetails": {
"message": "Lihat semua detail"
},
"viewContact": {
"message": "Lihat Kontak"
},
"viewMore": {
"message": "Lihat Selengkapnya"
},
"viewOnCustomBlockExplorer": {
"message": "Lihat di $1"
},
@ -1947,7 +2311,10 @@
"message": "panduan koneksi dompet perangkat keras kami"
},
"walletSeed": {
"message": "Frasa pemulihan"
"message": "Frasa Pemulihan Rahasia"
},
"walletSeedRestore": {
"message": "Frasa Pemulihan Rahasia Dompet"
},
"welcome": {
"message": "Selamat datang di MetaMask"
@ -1955,6 +2322,10 @@
"welcomeBack": {
"message": "Selamat Datang Kembali!"
},
"whatsNew": {
"message": "Apa yang baru",
"description": "This is the title of a popup that gives users notifications about new features and updates to MetaMask."
},
"whatsThis": {
"message": "Apa ini?"
},
@ -1965,6 +2336,10 @@
"message": "$1 dari $2",
"description": "$1 and $2 are intended to be two numbers, where $2 is a total, and $1 is a count towards that total"
},
"xOfYPending": {
"message": "$1 dari $2 tertunda",
"description": "$1 and $2 are intended to be two numbers, where $2 is a total number of pending confirmations, and $1 is a count towards that total"
},
"yesLetsTry": {
"message": "Ya, mari kita coba"
},
@ -1975,7 +2350,7 @@
"message": "Anda sudah masuk"
},
"yourPrivateSeedPhrase": {
"message": "Frasa pemulihan privat Anda"
"message": "Frasa Pemulihan Rahasia pribadi Anda"
},
"zeroGasPriceOnSpeedUpError": {
"message": "Biaya jaringan nol dipercepat"

View File

@ -1582,9 +1582,6 @@
"swapFinalizing": {
"message": "Finalizzando..."
},
"swapHighSlippageWarning": {
"message": "L'importo di slippage è molto alto. Assicurati di sapere cosa stai facendo!"
},
"swapLowSlippageError": {
"message": "La transazione può fallire, il massimo slippage è troppo basso."
},
@ -1702,9 +1699,6 @@
"swapSelectQuotePopoverDescription": {
"message": "Sotto trovi tutte le quotazioni raccolte da multiple sorgenti di liquidità."
},
"swapSlippageTooLow": {
"message": "Lo slippage deve essere maggiore di zero"
},
"swapSource": {
"message": "Sorgente di liquidità"
},

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -41,7 +41,7 @@
"message": "Активность"
},
"activityLog": {
"message": "Журнал активности"
"message": "журнал активности"
},
"addAcquiredTokens": {
"message": "Добавьте токены, которые вы приобрели с помощью MetaMask"
@ -49,6 +49,29 @@
"addAlias": {
"message": "Добавить псевдоним"
},
"addContact": {
"message": "Добавить контакт"
},
"addEthereumChainConfirmationDescription": {
"message": "Это позволит использовать ее в MetaMask."
},
"addEthereumChainConfirmationRisks": {
"message": "MetaMask не проверяет пользовательские сети."
},
"addEthereumChainConfirmationRisksLearnMore": {
"message": "Подробнее о $1.",
"description": "$1 is a link with text that is provided by the 'addEthereumChainConfirmationRisksLearnMoreLink' key"
},
"addEthereumChainConfirmationRisksLearnMoreLink": {
"message": "мошенничестве и угрозах безопасности сети",
"description": "Link text for the 'addEthereumChainConfirmationRisksLearnMore' translation key"
},
"addEthereumChainConfirmationTitle": {
"message": "Разрешить этому сайту добавить сеть?"
},
"addFriendsAndAddresses": {
"message": "Добавьте друзей и адреса, которым доверяете"
},
"addNetwork": {
"message": "Добавить сеть"
},
@ -86,13 +109,19 @@
"message": "Комиссия сети агрегатора"
},
"alertDisableTooltip": {
"message": "Это можно изменить в \"Настройки > Оповещения\""
"message": "Это можно изменить в разделе «Настройки» > «Предупреждения»"
},
"alertSettingsUnconnectedAccount": {
"message": "Просмотр веб-сайта с выбранным неподключенным счетом"
},
"alertSettingsUnconnectedAccountDescription": {
"message": "Это предупреждение отображается во всплывающем окне, когда вы просматриваете подключенный сайт Web3, но текущий выбранный счет не подключен."
"message": "Это предупреждение отображается во всплывающем окне, когда вы просматриваете подключенный сайт web3, но текущий выбранный счет не подключен."
},
"alertSettingsWeb3ShimUsage": {
"message": "Когда веб-сайт пытается использовать удаленный API window.web3"
},
"alertSettingsWeb3ShimUsageDescription": {
"message": "Это предупреждение отображается во всплывающем окне, когда вы просматриваете сайт, который пытается использовать удаленный API window.web3 и из-за этого может не работать."
},
"alerts": {
"message": "Предупреждения"
@ -137,6 +166,9 @@
"approve": {
"message": "Утвердить предел расходов"
},
"approveButtonText": {
"message": "Одобрить"
},
"approveSpendLimit": {
"message": "Утвердить предел расходов $1",
"description": "The token symbol that is being approved"
@ -147,6 +179,9 @@
"asset": {
"message": "Актив"
},
"assetOptions": {
"message": "Варианты активов"
},
"assets": {
"message": "Активы"
},
@ -199,7 +234,10 @@
"message": "Базовый"
},
"blockExplorerUrl": {
"message": "Проводник блока"
"message": "URL-адрес проводника блока"
},
"blockExplorerUrlDefinition": {
"message": "URL-адрес, используемый как проводник блоков для этой сети."
},
"blockExplorerView": {
"message": "Посмотреть счет на $1",
@ -211,6 +249,9 @@
"browserNotSupported": {
"message": "Ваш браузер не поддерживается..."
},
"builContactList": {
"message": "Создайте список контактов"
},
"builtInCalifornia": {
"message": "MetaMask разработан и построен в Калифорнии."
},
@ -226,6 +267,9 @@
"bytes": {
"message": "Байт"
},
"canToggleInSettings": {
"message": "Вы можете повторно включить это уведомление в разделе «Настройки» -> «Предупреждения»."
},
"cancel": {
"message": "Отмена"
},
@ -238,6 +282,9 @@
"chainId": {
"message": "Идентификатор цепи"
},
"chainIdDefinition": {
"message": "Идентификатор цепочки, используемый для подписания транзакций для этой сети."
},
"chromeRequiredForHardwareWallets": {
"message": "Вам необходимо использовать MetaMask в Google Chrome, чтобы подключиться к аппаратному кошельку."
},
@ -259,6 +306,15 @@
"confirmed": {
"message": "Подтверждено"
},
"confusableUnicode": {
"message": "«$1» соответствует «$2»."
},
"confusableZeroWidthUnicode": {
"message": "Найден символ нулевой ширины."
},
"confusingEnsDomain": {
"message": "В имени ENS обнаружен непонятный символ. Убедитесь, что это не обманчивое имя."
},
"congratulations": {
"message": "Поздравляем"
},
@ -348,9 +404,15 @@
"contactsSettingsDescription": {
"message": "Добавляйте, редактируйте, удаляйте и управляйте своими контактами"
},
"continue": {
"message": "Продолжить"
},
"continueToWyre": {
"message": "Продолжить к Wyre"
},
"contractAddressError": {
"message": "Вы отправляете токены на адрес контракта токена. Это может привести к потере токенов."
},
"contractDeployment": {
"message": "Развертывание контракта"
},
@ -390,6 +452,12 @@
"currencyConversion": {
"message": "Обмен валюты"
},
"currencySymbol": {
"message": "Символ валюты"
},
"currencySymbolDefinition": {
"message": "Тикер, который отображается для валюты этой сети."
},
"currentAccountNotConnected": {
"message": "Ваша текущий счет не подключен"
},
@ -418,7 +486,7 @@
"message": "Некоторые данные вашего счета были скопированы во время предыдущей установки MetaMask. Они могли включать ваши настройки, контакты и токены. Хотите восстановить эти данные сейчас?"
},
"decimal": {
"message": "Десятичных знаков точности"
"message": "Число десятичных знаков токена"
},
"decimalsMustZerotoTen": {
"message": "Число десятичных знаков должно быть не менее 0, но не более 36."
@ -488,6 +556,15 @@
"dismiss": {
"message": "Отклонить"
},
"dismissReminderDescriptionField": {
"message": "Включите этот параметр, чтобы отклонить сообщение с напоминанием о резервном копировании фразы восстановления. Мы настоятельно рекомендуем сделать резервную копию секретной фразы восстановления, чтобы избежать потери средств"
},
"dismissReminderField": {
"message": "Отклонить напоминание о резервном копировании фразы восстановления"
},
"domain": {
"message": "Домен"
},
"done": {
"message": "Выполнено"
},
@ -512,6 +589,12 @@
"editContact": {
"message": "Изменить контакт"
},
"editNonceField": {
"message": "Изменить одноразовый номер"
},
"editNonceMessage": {
"message": "Это расширенная функция, используйте ее с осторожностью."
},
"editPermission": {
"message": "Изменить разрешение"
},
@ -523,7 +606,7 @@
"message": "Запросить открытый ключ шифрования."
},
"endOfFlowMessage1": {
"message": "Вы прошли тест — храните свою исходную фразу в безопасности, это ваша ответственность!"
"message": "Вы прошли тест — храните свою секретную фразу восстановления в безопасности, это ваша ответственность!"
},
"endOfFlowMessage10": {
"message": "Выполнено"
@ -538,16 +621,16 @@
"message": "Никогда не говорите никому эту фразу."
},
"endOfFlowMessage5": {
"message": "Остерегайтесь фишинга! MetaMask никогда неожиданно не запросит вашу исходную фразу."
"message": "Остерегайтесь фишинга! MetaMask никогда неожиданно не запросит вашу секретную фразу восстановления."
},
"endOfFlowMessage6": {
"message": "Если вам нужно снова создать резервную копию исходной фразы, вы можете найти ее в Настройки -> Безопасность."
"message": "Если вам нужно снова создать резервную копию секретной фразы восстановления, вы можете найти ее в Настройки -> Безопасность."
},
"endOfFlowMessage8": {
"message": "Просто помните, что MetaMask не может восстановить исходную фразу."
"message": "Просто помните, что MetaMask не может восстановить секретную фразу восстановления."
},
"endOfFlowMessage9": {
"message": "Дополнительная информация"
"message": "Дополнительная информация."
},
"endpointReturnedDifferentChainId": {
"message": "Конечная точка вернула другой идентификатор цепочки: $1",
@ -587,6 +670,14 @@
"message": "Код: $1",
"description": "Displayed error name for debugging purposes. $1 is the error name"
},
"errorPageMessage": {
"message": "Повторите попытку, перезагрузив страницу, или обратитесь в службу поддержки $1.",
"description": "Message displayed on generic error page in the fullscreen or notification UI, $1 is a clickable link with text defined by the 'here' key. The link will open to a form where users can file support tickets."
},
"errorPagePopupMessage": {
"message": "Повторите попытку, закрыв и вновь открыв всплывающее окно, или обратитесь в службу поддержки $1.",
"description": "Message displayed on generic error page in the popup UI, $1 is a clickable link with text defined by the 'here' key. The link will open to a form where users can file support tickets."
},
"errorPageTitle": {
"message": "MetaMask обнаружил ошибку",
"description": "Title of generic error page"
@ -598,6 +689,9 @@
"estimatedProcessingTimes": {
"message": "Расчетное время обработки"
},
"ethGasPriceFetchWarning": {
"message": "Указана вспомогательная цена газа, поскольку сервис определения основной стоимости сейчас недоступен."
},
"eth_accounts": {
"message": "Просмотр адресов ваших разрешенных счетов (обязательно)",
"description": "The description for the `eth_accounts` permission"
@ -685,9 +779,18 @@
"gasPrice": {
"message": "Цена топлива (GWEI)"
},
"gasPriceExcessive": {
"message": "Установлена неоправданно высокая плата за газ. Рекомендуем снизить ее."
},
"gasPriceExcessiveInput": {
"message": "Цена газа очень высокая"
},
"gasPriceExtremelyLow": {
"message": "Цена топлива очень низкая"
},
"gasPriceFetchFailed": {
"message": "Не удалось определить цену газа из-за ошибки сети."
},
"gasPriceInfoTooltipContent": {
"message": "Цена топлива указывает количество Ether, которое вы готовы платить за каждую единицу топлива."
},
@ -730,11 +833,18 @@
"hardwareWalletConnected": {
"message": "Аппаратный кошелек подключен"
},
"hardwareWalletLegacyDescription": {
"message": "(Legacy)",
"description": "Text representing the MEW path"
},
"hardwareWalletSupportLinkConversion": {
"message": "нажмите здесь"
},
"hardwareWallets": {
"message": "Подключить аппаратный кошелек"
},
"hardwareWalletsMsg": {
"message": "Выберите аппаратный кошелек, который вы хотите использовать с MetaMask"
"message": "Выберите аппаратный кошелек, который хотите использовать с MetaMask."
},
"here": {
"message": "здесь",
@ -753,6 +863,9 @@
"message": "Скрыть $1",
"description": "$1 is the symbol for a token (e.g. 'DAI')"
},
"hideZeroBalanceTokens": {
"message": "Скрыть токены без баланса"
},
"history": {
"message": "История"
},
@ -763,19 +876,29 @@
"importAccount": {
"message": "Импортировать счет"
},
"importAccountLinkText": {
"message": "импортировать с использованием секретной фразы восстановления"
},
"importAccountMsg": {
"message": " Импортированные счета не будут связаны с исходной фразой вашей изначально созданного счета MetaMask. Узнайте больше об импортированных счетах "
"message": " Импортированные счета не будут связаны с секретной фразой восстановления вашего изначально созданного счета MetaMask. Узнайте больше об импортированных счетах "
},
"importAccountSeedPhrase": {
"message": "Импортировать счет с исходной фразой"
"message": "Импортировать счет с секретной фразой восстановления"
},
"importWallet": {
"message": "Импортировать кошелек"
},
"importYourExisting": {
"message": "Импортируйте существующий кошелек, используя начальную секретную фразу восстановления"
},
"imported": {
"message": "Импортированный",
"description": "status showing that an account has been fully loaded into the keyring"
},
"infuraBlockedNotification": {
"message": "MetaMask не удалось подключиться к хосту блокчейна. Узнать возможные причины можно $1.",
"description": "$1 is a clickable link with with text defined by the 'here' key"
},
"initialTransactionConfirmed": {
"message": "Ваша первоначальная транзакция была подтверждена сетью. Нажмите ОК, чтобы вернуться."
},
@ -800,6 +923,9 @@
"invalidBlockExplorerURL": {
"message": "Недействительный URL-адрес проводника блока"
},
"invalidChainIdTooBig": {
"message": "Недействительный идентификатор цепочки. Он слишком длинный."
},
"invalidCustomNetworkAlertContent1": {
"message": "Необходимо повторно ввести идентификатор цепочки для пользовательской сети «$1».",
"description": "$1 is the name/identifier of the network."
@ -824,7 +950,7 @@
"message": "Неверный шлюз IPFS: Значение должно быть действительным URL"
},
"invalidNumber": {
"message": "Недопустимое число. Введите десятичное число или шестнадцатеричное число с префиксом \"0x\"."
"message": "Недопустимое число. Введите десятичное число или шестнадцатеричное число с префиксом “0x”."
},
"invalidNumberLeadingZeros": {
"message": "Недопустимое число. Удалите все начальные нули."
@ -833,7 +959,7 @@
"message": "Недействительный URL-адрес RPC"
},
"invalidSeedPhrase": {
"message": "Неверная исходная фраза"
"message": "Недействительная секретная фраза восстановления"
},
"ipfsGateway": {
"message": "Шлюз IPFS"
@ -863,6 +989,21 @@
"ledgerAccountRestriction": {
"message": "Вам необходимо использовать свой последний счет, прежде чем вы сможете добавить новый."
},
"ledgerLiveAdvancedSetting": {
"message": "Использовать Ledger Live"
},
"ledgerLiveAdvancedSettingDescription": {
"message": "Новое решение Ledger Live Bridge упрощает использование Ledger. Доступно только в Chrome."
},
"ledgerLiveApp": {
"message": "Приложение Ledger Live"
},
"ledgerLocked": {
"message": "Не удалось подключиться к устройству Ledger. Убедитесь, что устройство разблокировано и приложение Ethereum открыто."
},
"ledgerTimeout": {
"message": "Ledger Live слишком долго не отвечает, или время ожидания подключения истекло. Убедитесь, что приложение Ledger Live открыто и устройство разблокировано."
},
"letsGoSetUp": {
"message": "Да, давайте настроим!"
},
@ -954,6 +1095,14 @@
"metametricsOptInDescription": {
"message": "MetaMask хотел бы собрать основные данные об использовании, чтобы лучше понять, как наши пользователи взаимодействуют с расширением. Эти данные будут использоваться для постоянного улучшения удобства и опыта использования нашего продукта и экосистемы Ethereum."
},
"mismatchedChain": {
"message": "Сведения о сети для этого идентификатора цепочки не совпадают с указанными в записях. Мы рекомендуем $1, прежде чем продолжить.",
"description": "$1 is a clickable link with text defined by the 'mismatchedChainLinkText' key"
},
"mismatchedChainLinkText": {
"message": "проверить сведения о сети",
"description": "Serves as link text for the 'mismatchedChain' key. This text will be embedded inside the translation for that key."
},
"mobileSyncText": {
"message": "Введите свой пароль, чтобы подтвердить ваш личность!"
},
@ -963,9 +1112,19 @@
"myAccounts": {
"message": "Мои счета"
},
"name": {
"message": "Название"
},
"needEtherInWallet": {
"message": "Для взаимодействия с децентрализованными приложениями с помощью MetaMask вам понадобится Ether в вашем кошельке."
},
"needHelp": {
"message": "Нужна помощь? Обратитесь в $1",
"description": "$1 represents `needHelpLinkText`, the text which goes in the help link"
},
"needHelpLinkText": {
"message": "Поддержка MetaMask"
},
"needImportFile": {
"message": "Вы должны выбрать файл для импорта.",
"description": "User is important an account and needs to add a file to continue"
@ -973,15 +1132,36 @@
"negativeETH": {
"message": "Невозможно отправить отрицательное количество ETH."
},
"networkDetails": {
"message": "Сведения о сети"
},
"networkName": {
"message": "Имя сети"
},
"networkNameBSC": {
"message": "BSC"
},
"networkNameDefinition": {
"message": "Имя, связанное с этой сетью."
},
"networkNameEthereum": {
"message": "Ethereum"
},
"networkNameTestnet": {
"message": "Тестовая сеть"
},
"networkSettingsChainIdDescription": {
"message": "Идентификатор цепочки используется для подписания транзакций. Он должен соответствовать идентификатору цепочки, возвращаемому сетью. Вы можете ввести десятичное число или шестнадцатеричное число с префиксом «0x», но мы будем отображать число в десятичном виде."
},
"networkSettingsDescription": {
"message": "Добавление и редактирование пользовательских сетей RPC"
},
"networkURL": {
"message": "URL-адрес сети"
},
"networkURLDefinition": {
"message": "URL-адрес, используемый для доступа к этой сети."
},
"networks": {
"message": "Сети"
},
@ -1033,7 +1213,7 @@
"message": "Для этого имени не задан адрес."
},
"noAlreadyHaveSeed": {
"message": "Нет, у меня уже есть исходная фраза"
"message": "Нет, у меня уже есть секретная фраза восстановления"
},
"noConversionRateAvailable": {
"message": "Нет доступного курса обмена"
@ -1050,6 +1230,9 @@
"noWebcamFoundTitle": {
"message": "Веб-камера не найдена"
},
"nonce": {
"message": "Случайный код"
},
"nonceField": {
"message": "Настроить одноразовый номер транзакции"
},
@ -1065,6 +1248,42 @@
"notEnoughGas": {
"message": "Недостаточно топлива"
},
"notifications1Description": {
"message": "Теперь пользователи MetaMask Mobile могут обменивать токены в своем мобильном кошельке. Отсканируйте QR-код, чтобы скачать мобильное приложение и начать обмен.",
"description": "Description of a notification in the 'See What's New' popup. Describes the swapping on mobile feature."
},
"notifications1Title": {
"message": "Обмен на мобильном устройстве уже доступен!",
"description": "Title for a notification in the 'See What's New' popup. Tells users that they can now use MetaMask Swaps on Mobile."
},
"notifications3ActionText": {
"message": "Подробнее",
"description": "The 'call to action' on the button, or link, of the 'Stay secure' notification. Upon clicking, users will be taken to a page about security on the metamask support website."
},
"notifications3Description": {
"message": "Ознакомьтесь с методами безопасной работы в MetaMask и актуальными советами по безопасности на официальном сайте поддержки MetaMask.",
"description": "Description of a notification in the 'See What's New' popup. Describes the information they can get on security from the linked support page."
},
"notifications3Title": {
"message": "Следуйте рекомендациям по безопасности",
"description": "Title for a notification in the 'See What's New' popup. Encourages users to consider security."
},
"notifications4ActionText": {
"message": "Начать обмен",
"description": "The 'call to action' on the button, or link, of the 'Swap on Binance Smart Chain!' notification. Upon clicking, users will be taken to a page where then can swap tokens on Binance Smart Chain."
},
"notifications4Description": {
"message": "Получайте лучшие ценовые предложения на обмен токенов прямо в своем кошельке. Теперь через MetaMask можно взаимодействовать с несколькими децентрализованными агрегаторами обменов и профессиональными маркет-мейкерами в Binance Smart Chain.",
"description": "Description of a notification in the 'See What's New' popup."
},
"notifications4Title": {
"message": "Обменивайте токены в Binance Smart Chain",
"description": "Title for a notification in the 'See What's New' popup. Encourages users to do swaps on Binance Smart Chain."
},
"notifications5Description": {
"message": "Исходная фраза теперь называется секретной фразой восстановления.",
"description": "Description of a notification in the 'See What's New' popup. Describes the seed phrase wording update."
},
"ofTextNofM": {
"message": "из"
},
@ -1081,11 +1300,11 @@
"message": "Вкл."
},
"onboardingReturnNotice": {
"message": "\"$1\" закроет эту вкладку и вернется к $2",
"message": "Кнопка «$1» закрывает эту вкладку и возвращает на сайт $2",
"description": "Return the user to the site that initiated onboarding"
},
"onlyAddTrustedNetworks": {
"message": "Вредоносный сетевой провайдер Ethereum может дезинформировать о состоянии блокчейн и записывать ваши действия в сети. Добавляйте только те пользовательские сети, которым доверяете."
"message": "Вредоносный сетевой провайдер может дезинформировать о состоянии блокчейна и записывать ваши действия в сети. Добавляйте только те пользовательские сети, которым доверяете."
},
"onlyAvailableOnMainnet": {
"message": "Доступно только в mainnet"
@ -1106,7 +1325,7 @@
"message": "Параметры"
},
"participateInMetaMetrics": {
"message": "Участвуйте в MetaMetrics"
"message": "Участие в MetaMetrics"
},
"participateInMetaMetricsDescription": {
"message": "Участвуйте в MetaMetrics, чтобы помочь нам улучшить его"
@ -1153,7 +1372,7 @@
"message": "Выберите Native, чтобы установить приоритет отображения значений в собственной валюте цепи (например, ETH). Выберите Fiat, чтобы установить приоритет отображения значений в выбранной валюте конвертации."
},
"privacyMsg": {
"message": "Политикой конфиденциальности"
"message": "Политика конфиденциальности"
},
"privateKey": {
"message": "Закрытый ключ",
@ -1171,6 +1390,9 @@
"provide": {
"message": "Предоставить"
},
"publicAddress": {
"message": "Публичный адрес"
},
"queue": {
"message": "Очередь"
},
@ -1217,7 +1439,7 @@
"message": "Удалить счет"
},
"removeAccountDescription": {
"message": "Этот счет будет удален из вашего кошелька. Перед продолжением убедитесь, что у вас есть исходная фраза или закрытый ключ для этой импортированного счета. Вы можете импортировать или снова создать счета из раскрывающегося списка. "
"message": "Этот счет будет удален из вашего кошелька. Перед продолжением убедитесь, что у вас есть секретная фраза восстановления или закрытый ключ для этой импортированного счета. Вы можете импортировать или снова создать счета из раскрывающегося списка. "
},
"requestsAwaitingAcknowledgement": {
"message": "запросы, ожидающие подтверждения"
@ -1232,13 +1454,13 @@
"message": "Сбросить счет"
},
"resetAccountDescription": {
"message": "Сброс вашего счета удалит историю транзакций. Это не изменит остатки на ваших счетах и не потребует повторного ввода исходной фразы."
"message": "Сброс вашего счета удалит историю транзакций. Это не изменит остатки на ваших счетах и не потребует повторного ввода секретной фразы восстановления."
},
"restore": {
"message": "Восстановить"
},
"restoreAccountWithSeed": {
"message": "Восстановите свой счет с помощью исходной фразы"
"message": "Восстановите свой счет с помощью секретной фразы восстановления"
},
"restoreWalletPreferences": {
"message": "Найдена резервная копия ваших данных из $1. Хотите восстановить настройки кошелька?",
@ -1251,13 +1473,13 @@
"message": "Токен здесь повторно использует символ из другого токена, который вы смотрите, это может запутать или ввести в заблуждение."
},
"revealSeedWords": {
"message": "Раскрыть исходную фразу"
"message": "Показать секретную фразу восстановления"
},
"revealSeedWordsDescription": {
"message": "Если вы меняете браузер или переходите на другой компьютер, вам понадобится эта исходная фраза для доступа к своим счетам. Сохраните ее в безопасном секретном месте."
"message": "Если вы меняете браузер или переходите на другой компьютер, вам понадобится эта секретная фраза восстановления для доступа к своим счетам. Сохраните ее в безопасном секретном месте."
},
"revealSeedWordsTitle": {
"message": "Исходная фраза"
"message": "Секретная фраза восстановления"
},
"revealSeedWordsWarning": {
"message": "Эти слова можно использовать для кражи всех ваших счетов."
@ -1310,20 +1532,23 @@
"secretBackupPhraseWarning": {
"message": "ПРЕДУПРЕЖДЕНИЕ: Никогда не разглашайте резервную фразу. Любой, у кого есть эта фраза, может забрать ваш Ether навсегда."
},
"secretPhrase": {
"message": "Введите здесь секретную фразу, чтобы восстановить хранилище."
},
"securityAndPrivacy": {
"message": "Безопасность и конфиденциальность"
},
"securitySettingsDescription": {
"message": "Настройки конфиденциальности и исходная фраза кошелька"
"message": "Настройки конфиденциальности и секретная фраза восстановления кошелька"
},
"seedPhrasePlaceholder": {
"message": "Отделяйте каждое слово одним пробелом"
},
"seedPhrasePlaceholderPaste": {
"message": "Вставить исходную фразу из буфера обмена"
"message": "Вставить секретную фразу восстановления из буфера обмена"
},
"seedPhraseReq": {
"message": "Исходные фразы содержат 12, 15, 18, 21 или 24 слова"
"message": "Секретные фразы восстановления содержат 12, 15, 18, 21 или 24 слова"
},
"selectAHigherGasFee": {
"message": "Выберите более высокую плату за топливо, чтобы ускорить обработку транзакции. *"
@ -1337,8 +1562,15 @@
"selectAnAccount": {
"message": "Выберите счет"
},
"selectAnAccountAlreadyConnected": {
"message": "Этот счет уже подключен к MetaMask"
},
"selectAnAccountHelp": {
"message": "Выберите счет для просмотра в MetaMask"
"message": "Выберите счет для просмотра в MetaMask."
},
"selectAnAccountHelpDirections": {
"message": "Не видите свой счет? $1",
"description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key"
},
"selectEachPhrase": {
"message": "Выберите каждую фразу, чтобы убедиться, что она верна."
@ -1347,7 +1579,7 @@
"message": "Выберите путь HD"
},
"selectPathHelp": {
"message": "Если вы не видите свои существующие книги счетов ниже, попробуйте переключить проход на \"Legacy (MEW / MyCrypto)\""
"message": "Если вы не видите имеющиеся счета Ledger ниже, попробуйте изменить путь на «Legacy (MEW / MyCrypto)»"
},
"selectType": {
"message": "Выбрать тип"
@ -1408,7 +1640,7 @@
"message": "Показать закрытые ключи"
},
"showSeedPhrase": {
"message": "Показать исходную фразу"
"message": "Показать секретную фразу восстановления"
},
"sigRequest": {
"message": "Запрос на подпись"
@ -1480,6 +1712,27 @@
"statusNotConnected": {
"message": "Не подключен"
},
"step1LedgerWallet": {
"message": "Скачать приложение Ledger"
},
"step1LedgerWalletMsg": {
"message": "Скачайте $1, настройте его и введите пароль для разблокировки.",
"description": "$1 represents the `ledgerLiveApp` localization value"
},
"step1TrezorWallet": {
"message": "Подключить кошелек Trezor"
},
"step1TrezorWalletMsg": {
"message": "Подключите кошелек напрямую к компьютеру. Для получения дополнительной информации об использовании аппаратного ключа $1",
"description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key"
},
"step2LedgerWallet": {
"message": "Подключить кошелек Ledger"
},
"step2LedgerWalletMsg": {
"message": "Подключите кошелек напрямую к компьютеру. Разблокируйте устройство Ledger и откройте приложение Ethereum. Для получения дополнительной информации об использовании аппаратного ключа $1.",
"description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key"
},
"storePhrase": {
"message": "Сохраните эту фразу в диспетчере паролей, например в 1Password."
},
@ -1489,6 +1742,9 @@
"submitted": {
"message": "Отправлено"
},
"support": {
"message": "Поддержка"
},
"supportCenter": {
"message": "Посетите наш центр поддержки"
},
@ -1496,11 +1752,15 @@
"message": "Своп"
},
"swapAdvancedSlippageInfo": {
"message": "Если цена меняется в период между размещением вашего заказа и подтверждением, это называется «проскальзыванием». Ваш своп будет автоматически отменен, если проскальзывание превысит вашу настройку «максимального проскальзывания»."
"message": "Изменение цены в период между размещением заказа и подтверждением называется проскальзыванием. Ваш своп будет автоматически отменен, если проскальзывание превысит вашу настройку «максимального проскальзывания»."
},
"swapAggregator": {
"message": "Агрегатор"
},
"swapAllowSwappingOf": {
"message": "Разрешите своп $1",
"description": "Shows a user that they need to allow a token for swapping on their hardware wallet"
},
"swapAmountReceived": {
"message": "Гарантированная сумма"
},
@ -1515,6 +1775,9 @@
"message": "Вам нужно еще $1 $2 для завершения этого свопа",
"description": "Tells the user how many more of a given token they need for a specific swap. $1 is an amount of tokens and $2 is the token symbol."
},
"swapBetterQuoteAvailable": {
"message": "Есть лучшая котировка"
},
"swapBuildQuotePlaceHolderText": {
"message": "Нет доступных токенов соответствующих $1",
"description": "Tells the user that a given search string does not match any tokens in our token lists. $1 can be any string of text"
@ -1523,6 +1786,15 @@
"message": "Проверка $1",
"description": "Shown to the user during quote loading. $1 is the name of an aggregator. The message indicates that metamask is currently checking if that aggregator has a trade/quote for their requested swap."
},
"swapConfirmWithHwWallet": {
"message": "Подтвердить с помощью аппаратного кошелька"
},
"swapContractDataDisabledErrorDescription": {
"message": "В приложении Ethereum на устройстве Ledger перейдите в раздел «Настройки» и разрешите использование данных о контракте. Затем попробуйте выполнить своп повторно."
},
"swapContractDataDisabledErrorTitle": {
"message": "На устройстве Ledger не включены данные о контракте"
},
"swapCustom": {
"message": "специальный"
},
@ -1549,6 +1821,10 @@
"swapEstimatedNetworkFeesInfo": {
"message": "Это оценочная сетевая комиссия, которая будет использована для завершения вашего свопа. Фактическая сумма может меняться в зависимости от условий сети."
},
"swapFailedErrorDescriptionWithSupportLink": {
"message": "Иногда транзакции завершаются неудачей. Мы рады помочь вам в таких случаях. Если проблема не исчезнет, обратитесь в нашу службу поддержки на сайте $1.",
"description": "This message is shown to a user if their swap fails. The $1 will be replaced by support.metamask.io"
},
"swapFailedErrorTitle": {
"message": "Своп не удался"
},
@ -1564,8 +1840,15 @@
"swapFinalizing": {
"message": "Завершение..."
},
"swapFromTo": {
"message": "Своп $1 на $2",
"description": "Tells a user that they need to confirm on their hardware wallet a swap of 2 tokens. $1 is a source token and $2 is a destination token"
},
"swapGasFeesSplit": {
"message": "Плата за газ, указанная на предыдущем экране, распределяется между этими двумя транзакциями."
},
"swapHighSlippageWarning": {
"message": "Величина проскальзывания очень велика. Убедитесь, что вы знаете, что делаете!"
"message": "Величина проскальзывания очень велика."
},
"swapLowSlippageError": {
"message": "Транзакции могут завершиться неудачей, максимальное проскальзывание слишком мало."
@ -1584,9 +1867,13 @@
"message": "Комиссия MetaMask"
},
"swapMetaMaskFeeDescription": {
"message": "Мы всегда находим лучшую цену из лучших источников ликвидности. Комиссия в размере $1% автоматически включается в каждую котировку на поддержку текущих разработок, чтобы сделать MetaMask еще лучше.",
"message": "Мы всегда находим лучшую цену из лучших источников ликвидности. В эту котировку автоматически включается комиссия в размере $1%.",
"description": "Provides information about the fee that metamask takes for swaps. $1 is a decimal number."
},
"swapNQuotes": {
"message": "Котировок: $1",
"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": "Сетевая комиссия покрывает стоимость обработки вашего свопа и его хранения в сети $1. MetaMask не получает прибыли от этой комиссии."
},
@ -1598,6 +1885,14 @@
"message": "Ваш $1 будет добавлен к вашему счету после обработки этой транзакции.",
"description": "This message communicates the token that is being transferred. It is shown on the awaiting swap screen. The $1 will be a token symbol."
},
"swapPriceDifference": {
"message": "Вы собираетесь обменять $1 $2 (~$3) на $4 $5 (~$6).",
"description": "This message represents the price slippage for the swap. $1 and $4 are a number (ex: 2.89), $2 and $5 are symbols (ex: ETH), and $3 and $6 are fiat currency amounts."
},
"swapPriceDifferenceTitle": {
"message": "Разница в цене составляет ~$1%",
"description": "$1 is a number (ex: 1.23) that represents the price difference."
},
"swapProcessing": {
"message": "Обработка"
},
@ -1605,7 +1900,7 @@
"message": "Детали котировки"
},
"swapQuoteDetailsSlippageInfo": {
"message": "Если цена меняется в период между размещением вашего заказа и подтверждением, это называется \"проскальзыванием\". Ваш своп будет автоматически отменен, если проскальзывание превысит вашу настройку \"максимального проскальзывания\"."
"message": "Изменение цены в период между размещением заказа и подтверждением называется проскальзыванием. Своп будет автоматически отменен, если фактическое проскальзывание превысит установленное допустимое значение."
},
"swapQuoteIncludesRate": {
"message": "Котировка включает $1% MetaMask fee",
@ -1645,6 +1940,9 @@
"swapRequestForQuotation": {
"message": "Запрос котировки"
},
"swapReviewSwap": {
"message": "Проверить своп"
},
"swapSearchForAToken": {
"message": "Поиск токена"
},
@ -1660,8 +1958,8 @@
"swapSelectQuotePopoverDescription": {
"message": "Ниже приведены все котировки, собранные из нескольких источников ликвидности."
},
"swapSlippageTooLow": {
"message": "Проскальзывание должно быть больше нуля"
"swapSlippageNegative": {
"message": "Проскальзывание должно быть больше или равно нулю"
},
"swapSource": {
"message": "Источник ликвидности"
@ -1681,22 +1979,46 @@
"swapThisWillAllowApprove": {
"message": "Это позволит обмен $1."
},
"swapToConfirmWithHwWallet": {
"message": "подтвердить с помощью аппаратного кошелька"
},
"swapTokenAvailable": {
"message": "Ваш $1 был добавлен в ваш счет.",
"description": "This message is shown after a swap is successful and communicates the exact amount of tokens the user has received for a swap. The $1 is a decimal number of tokens followed by the token symbol."
},
"swapTokenBalanceUnavailable": {
"message": "Не удалось получить количество токенов $1 на балансе",
"description": "This message communicates to the user that their balance of a given token is currently unavailable. $1 will be replaced by a token symbol"
},
"swapTokenToToken": {
"message": "Своп $1 на $2",
"description": "Used in the transaction display list to describe a swap. $1 and $2 are the symbols of tokens in involved in a swap."
},
"swapTokenVerificationMessage": {
"message": "Всегда проверяйте адрес токена на $1.",
"description": "Points the user to Etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"Etherscan\" followed by an info icon that shows more info on hover."
},
"swapTokenVerificationOnlyOneSource": {
"message": "Токен проверен только в 1 источнике."
},
"swapTokenVerificationSources": {
"message": "Токен проверен в таком количестве источников: $1.",
"description": "Indicates the number of token information sources that recognize the symbol + address. $1 is a decimal number."
},
"swapTransactionComplete": {
"message": "Транзакция завершена"
},
"swapTwoTransactions": {
"message": "2 транзакции"
},
"swapUnknown": {
"message": "Неизвестный"
},
"swapUsingBestQuote": {
"message": "Используется лучшая котировка"
},
"swapVerifyTokenExplanation": {
"message": "Несколько токенов могут использовать одно и то же имя и символ. Проверьте $1, чтобы убедиться, что это именно тот токен, который вы ищете.",
"message": "Несколько токенов могут использовать одно и то же имя и символ. Убедитесь, что это именно тот токен, который вы ищете, на $1.",
"description": "This appears in a tooltip next to the verifyThisTokenOn message. It gives the user more information about why they should check the token on a block explorer. $1 will be the name or url of the block explorer, which will be the translation of 'etherscan' or a block explorer url specified for a custom network."
},
"swapViewToken": {
@ -1712,8 +2034,11 @@
"swapsAdvancedOptions": {
"message": "Расширенные опции"
},
"swapsExcessiveSlippageWarning": {
"message": "Величина проскальзывания очень велика. Сделка будет невыгодной. Снизьте допустимое проскальзывание ниже 15%."
},
"swapsMaxSlippage": {
"message": "Максимальное проскальзывание"
"message": "Допустимое проскальзывание"
},
"swapsNotEnoughForTx": {
"message": "Недостаточно $1 для завершения этой транзакции",
@ -1722,12 +2047,30 @@
"swapsViewInActivity": {
"message": "Посмотреть в журнале активности"
},
"switchEthereumChainConfirmationDescription": {
"message": "В результате сеть, выбранная в MetaMask, будет переключена на ранее добавленную:"
},
"switchEthereumChainConfirmationTitle": {
"message": "Разрешить этому сайту переключить сеть?"
},
"switchLedgerPaths": {
"message": "Переключить пути Ledger"
},
"switchLedgerPathsText": {
"message": "Выберите путь Ledger для просмотра других счетов"
},
"switchNetwork": {
"message": "Переключить сеть"
},
"switchNetworks": {
"message": "Переключить сети"
},
"switchToThisAccount": {
"message": "Переключить на этот счет"
},
"switchingNetworksCancelsPendingConfirmations": {
"message": "В случае переключения сетей все ожидающие подтверждения будут отменены"
},
"symbol": {
"message": "Символ"
},
@ -1735,7 +2078,7 @@
"message": "Символ должен состоять из 11 или менее знаков."
},
"syncWithMobile": {
"message": "Синхронизировать с мобильным приложением"
"message": "Синхронизировать с мобильным устройством"
},
"syncWithMobileBeCareful": {
"message": "Убедитесь, что никто не смотрит на ваш экран, когда вы сканируете этот код"
@ -1744,7 +2087,7 @@
"message": "Ваши данные были успешно синхронизированы. Наслаждайтесь мобильным приложением MetaMask!"
},
"syncWithMobileDesc": {
"message": "Вы можете синхронизировать свои счета и информацию со своим мобильным устройством. Откройте мобильное приложение MetaMask, перейдите в \"Настройки\" и нажмите \"Синхронизировать из расширения браузера\""
"message": "Вы можете синхронизировать свои счета и информацию со своим мобильным устройством. Откройте мобильное приложение MetaMask, перейдите в раздел «Настройки» и нажмите «Синхронизировать из расширения браузера»"
},
"syncWithMobileDescNewUsers": {
"message": "Если вы открываете приложение MetaMask Mobile в первый раз, просто следуйте инструкциям на телефоне."
@ -1753,7 +2096,7 @@
"message": "Отсканируйте этот код с помощью мобильного приложения MetaMask"
},
"syncWithMobileTitle": {
"message": "Синхронизировать с мобильным приложением"
"message": "Синхронизировать с мобильным устройством"
},
"syncWithThreeBox": {
"message": "Синхронизация данных с 3Box (экспериментальная)"
@ -1774,7 +2117,7 @@
"message": "Тестовый кран"
},
"thisWillCreate": {
"message": "Это создаст новый кошелек и начальную фразу"
"message": "Это создаст новый кошелек и секретную фразу восстановления"
},
"tips": {
"message": "Советы"
@ -1798,6 +2141,9 @@
"tokenContractAddress": {
"message": "Адрес контракта токена"
},
"tokenDecimalFetchFailed": {
"message": "Укажите число десятичных знаков токена."
},
"tokenSymbol": {
"message": "Символ токена"
},
@ -1900,6 +2246,14 @@
"unlockMessage": {
"message": "Ожидание децентрализованной сети"
},
"unrecognizedChain": {
"message": "Эта пользовательская сеть не распознана. Мы рекомендуем $1, прежде чем продолжить",
"description": "$1 is a clickable link with text defined by the 'unrecognizedChanLinkText' key. The link will open to instructions for users to validate custom network details."
},
"unrecognizedChainLinkText": {
"message": "проверить сведения о сети",
"description": "Serves as link text for the 'unrecognizedChain' key. This text will be embedded inside the translation for that key."
},
"updatedWithDate": {
"message": "Обновлено $1"
},
@ -1921,6 +2275,10 @@
"userName": {
"message": "Имя пользователя"
},
"verifyThisTokenDecimalOn": {
"message": "Число десятичных знаков токена можно найти на $1",
"description": "Points the user to etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"etherscan\""
},
"verifyThisTokenOn": {
"message": "Проверить этот токен на $1",
"description": "Points the user to etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"etherscan\""
@ -1928,9 +2286,15 @@
"viewAccount": {
"message": "Посмотреть счет"
},
"viewAllDetails": {
"message": "Просмотреть все сведения"
},
"viewContact": {
"message": "Посмотреть контакт"
},
"viewMore": {
"message": "Посмотреть больше"
},
"viewOnCustomBlockExplorer": {
"message": "Посмотреть на $1"
},
@ -1947,7 +2311,10 @@
"message": "наше руководство по подключению аппаратного кошелька"
},
"walletSeed": {
"message": "Исходная фраза"
"message": "Секретная фраза восстановления"
},
"walletSeedRestore": {
"message": "Секретная фраза восстановления кошелька"
},
"welcome": {
"message": "Добро пожаловать в MetaMask"
@ -1955,6 +2322,10 @@
"welcomeBack": {
"message": "Добро пожаловать обратно!"
},
"whatsNew": {
"message": "Узнайте что нового",
"description": "This is the title of a popup that gives users notifications about new features and updates to MetaMask."
},
"whatsThis": {
"message": "Что это?"
},
@ -1965,6 +2336,10 @@
"message": "$1 из $2",
"description": "$1 and $2 are intended to be two numbers, where $2 is a total, and $1 is a count towards that total"
},
"xOfYPending": {
"message": "$1 из $2 в ожидании",
"description": "$1 and $2 are intended to be two numbers, where $2 is a total number of pending confirmations, and $1 is a count towards that total"
},
"yesLetsTry": {
"message": "Да, давайте попробуем"
},
@ -1975,7 +2350,7 @@
"message": "Вы подписываете"
},
"yourPrivateSeedPhrase": {
"message": "Ваша личная исходная фраза"
"message": "Ваша личная секретная фраза восстановления"
},
"zeroGasPriceOnSpeedUpError": {
"message": "Нулевая цена на топливо при ускорении"

View File

@ -488,6 +488,9 @@
"dismiss": {
"message": "I-dismiss"
},
"dismissReminderDescriptionField": {
"message": "I-on ito para i-dismiss ang mensahe ng paalala ng pag-back up ng recovery phrase. Lubos naming inirerekomendang i-back up mo ang iyong Secret Recovery Phrase para maiwasan ang pagkawala ng pondo"
},
"done": {
"message": "Tapos na"
},
@ -523,7 +526,7 @@
"message": "Mag-request ng pampublikong encryption key"
},
"endOfFlowMessage1": {
"message": "Naipasa mo ang pagsusulit - panatilihing ligtas ang iyong seedphrase, responsibilidad mo ito!"
"message": "Pumasa ka sa test - panatilihing ligtas ang iyong Secret Recovery Phrase, responsibilidad mo ito!"
},
"endOfFlowMessage10": {
"message": "Tapos Na Lahat"
@ -538,13 +541,13 @@
"message": "Huwag kailanmang ibahagi ang parirala sa sinuman."
},
"endOfFlowMessage5": {
"message": "Mag-ingat sa phishing! Hindi kailanman basta na lang hihingin ng MetaMask ang iyong seed phrase."
"message": "Mag-ingat sa phishing! Hindi kailanman basta na lang hihingin ng MetaMask ang iyong Secret Recovery Phrase."
},
"endOfFlowMessage6": {
"message": "Kung kailangan mong i-back up ulit ang iyong seed phrase, makikita mo ito sa Mga Setting -> Seguridad."
"message": "Kung kailangan mong i-back up ulit ang iyong Secret Recovery Phrase, makikita mo ito sa Mga Setting -> Seguridad."
},
"endOfFlowMessage8": {
"message": "Hindi mababawi ng MetaMask ang iyong seedphrase."
"message": "Hindi mababawi ng MetaMask ang iyong Secret Recovery Phrase."
},
"endOfFlowMessage9": {
"message": "Matuto pa."
@ -763,15 +766,21 @@
"importAccount": {
"message": "Mag-import ng Account"
},
"importAccountLinkText": {
"message": "i-import gamit ang Secret Recovery Phrase"
},
"importAccountMsg": {
"message": " Ang mga na-import na account ay hindi mauugnay sa orihinal mong nagawang seedphrase ng MetaMask account. Matuto pa tungkol sa mga na-import account "
"message": " Ang mga na-import na account ay hindi mauugnay sa orihinal mong nagawang Secret Recovery Phrase ng MetaMask account. Matuto pa tungkol sa mga na-import account "
},
"importAccountSeedPhrase": {
"message": "Mag-import ng account gamit ang seed phrase"
"message": "Mag-import ng account gamit ang Secret Recovery Phrase"
},
"importWallet": {
"message": "I-import ang wallet"
},
"importYourExisting": {
"message": "I-import ang iyong kasalukuyang wallet gamit ang isang Secret Recovery Phrase"
},
"imported": {
"message": "Na-import",
"description": "status showing that an account has been fully loaded into the keyring"
@ -833,7 +842,7 @@
"message": "Hindi valid ang RPC URL"
},
"invalidSeedPhrase": {
"message": "Hindi valid ang seed phrase"
"message": "Hindi valid ang Secret Recovery Phrase"
},
"ipfsGateway": {
"message": "IPFS Gateway"
@ -1033,7 +1042,7 @@
"message": "Walang naitakdang address para sa pangalang ito."
},
"noAlreadyHaveSeed": {
"message": "May seed phrase na ako"
"message": "Hindi, may Secret Recovery Phrase na ako"
},
"noConversionRateAvailable": {
"message": "Hindi Available ang Rate ng Conversion"
@ -1214,7 +1223,7 @@
"message": "Tanggalin ang account"
},
"removeAccountDescription": {
"message": "Tatanggalin ang account na ito sa iyong wallet. Tiyaking nasa iyo ang orihinal na seed phrase o pribadong key para sa na-import na account na ito bago magpatuloy. Puwede kang mag-import o gumawa ulit ng mga account mula sa drop-down ng account. "
"message": "Tatanggalin ang account na ito sa iyong wallet. Tiyaking nasa iyo ang orihinal na Secret Recovery Phrase o private key para sa na-import na account na ito bago magpatuloy. Puwede kang mag-import o gumawa ulit ng mga account mula sa drop-down ng account. "
},
"requestsAwaitingAcknowledgement": {
"message": "mga request na hinihintay na tanggapin"
@ -1229,13 +1238,13 @@
"message": "I-reset ang Account"
},
"resetAccountDescription": {
"message": "Kapag ni-reset ang iyong account, maki-clear ang history ng iyong transaksyon. Hindi nito babaguhin ang mga balanse sa iyong mga account o hindi mo kakailanganing ilagay ulit ang iyong seed phrase."
"message": "Kapag ni-reset ang iyong account, maki-clear ang history ng iyong transaksyon. Hindi nito babaguhin ang mga balanse sa iyong mga account o hindi mo kakailanganing ilagay ulit ang iyong Secret Recovery Phrase."
},
"restore": {
"message": "I-restore"
},
"restoreAccountWithSeed": {
"message": "I-restore ang iyong Account gamit ang Seed Phrase"
"message": "I-restore ang iyong Account gamit ang Secret Recovery Phrase"
},
"restoreWalletPreferences": {
"message": "Nakita ang backup ng iyong data mula sa $1. Gusto mo bang i-restore ang mga kagustuhan mo sa wallet?",
@ -1248,13 +1257,13 @@
"message": "Ang isang token dito ay muling ginagamit ang isang simbolo mula sa ibang token na tinitingnan mo, maaari itong maging nakakalito."
},
"revealSeedWords": {
"message": "Ipakita ang Seed Phrase"
"message": "Ipakita ang Secret Recovery Phrase"
},
"revealSeedWordsDescription": {
"message": "Kung papalitan mo ang iyong browser o ililipat ang mga computer, kakailanganin mo ang seed phrase na ito para ma-access ang iyong mga account. I-save ang mga iyon sa isang ligtas at sikretong lugar."
"message": "Kung magpapalit ka man ng browser o computer, kakailanganin mo ang Secret Recovery Phrase na ito para ma-access ang iyong mga account. I-save ang mga iyon sa isang ligtas at sikretong lugar."
},
"revealSeedWordsTitle": {
"message": "Seed Phrase"
"message": "Secret Recovery Phrase"
},
"revealSeedWordsWarning": {
"message": "Magagamit ang mga salitang ito para manakaw ang lahat ng iyong account."
@ -1311,16 +1320,16 @@
"message": "Seguridad at Pagkapribado"
},
"securitySettingsDescription": {
"message": "Mga setting ng pagkapribado at seed phrase ng wallet"
"message": "Mga setting ng privacy at Secret Recovery Phrase ng wallet"
},
"seedPhrasePlaceholder": {
"message": "Paghiwa-hiwalayin ang bawat salita gamit ang espasyo"
},
"seedPhrasePlaceholderPaste": {
"message": "I-paste ang seed phrase mula sa clipboard"
"message": "I-paste ang Secret Recovery Phrase mula sa clipboard"
},
"seedPhraseReq": {
"message": "Ang mga seed phrase ay naglalaman ng 12, 15, 18, 21, o 24 na salita"
"message": "Ang mga Secret Recovery Phrase ay naglalaman ng 12, 15, 18, 21, o 24 na salita"
},
"selectAHigherGasFee": {
"message": "Pumili ng mas malaking bayarin sa gas para mapabilis ang pagproseso ng iyong transaksyon.*"
@ -1405,7 +1414,7 @@
"message": "Ipakita ang Mga Pribadong Key"
},
"showSeedPhrase": {
"message": "Ipakita ang seed phrase"
"message": "Ipakita ang Secret Recovery Phrase"
},
"sigRequest": {
"message": "Request na Paglagda"
@ -1561,9 +1570,6 @@
"swapFinalizing": {
"message": "Isinasapinal..."
},
"swapHighSlippageWarning": {
"message": "Sobrang laki ng halaga ng slippage. Tiyaking alam mo ang ginagawa mo!"
},
"swapLowSlippageError": {
"message": "Maaaring hindi magtagumpay ang transaksyon, masyadong mababa ang max na slippage."
},
@ -1657,9 +1663,6 @@
"swapSelectQuotePopoverDescription": {
"message": "Makikita sa ibaba ang lahat ng quote na nakuha mula sa maraming pinagkukunan ng liquidity."
},
"swapSlippageTooLow": {
"message": "Dapat ay mas malaki sa zero ang slippage"
},
"swapSource": {
"message": "Pinagkunan ng liquidity"
},
@ -1771,7 +1774,7 @@
"message": "Test Faucet"
},
"thisWillCreate": {
"message": "Gagawa ito ng bagong wallet at seed phrase"
"message": "Gagawa ito ng bagong wallet at Secret Recovery Phrase"
},
"tips": {
"message": "Mga Tip"
@ -1944,7 +1947,10 @@
"message": "ang aming gabay sa pagkonekta ng hardware wallet"
},
"walletSeed": {
"message": "Seed phrase"
"message": "Secret Recovery Phrase"
},
"walletSeedRestore": {
"message": "Recovery Phrase ng Wallet Secret"
},
"welcome": {
"message": "Welcome sa MetaMask"

View File

@ -49,6 +49,29 @@
"addAlias": {
"message": "Thêm biệt danh"
},
"addContact": {
"message": "Thêm người liên hệ"
},
"addEthereumChainConfirmationDescription": {
"message": "Thao tác này sẽ cho phép sử dụng mạng này trong MetaMask."
},
"addEthereumChainConfirmationRisks": {
"message": "MetaMask không xác minh mạng tùy chỉnh."
},
"addEthereumChainConfirmationRisksLearnMore": {
"message": "Tìm hiểu về $1.",
"description": "$1 is a link with text that is provided by the 'addEthereumChainConfirmationRisksLearnMoreLink' key"
},
"addEthereumChainConfirmationRisksLearnMoreLink": {
"message": "lừa đảo và các nguy cơ về an ninh mạng",
"description": "Link text for the 'addEthereumChainConfirmationRisksLearnMore' translation key"
},
"addEthereumChainConfirmationTitle": {
"message": "Cho phép trang này thêm một mạng?"
},
"addFriendsAndAddresses": {
"message": "Thêm bạn bè và địa chỉ bạn tin cậy"
},
"addNetwork": {
"message": "Thêm mạng"
},
@ -86,13 +109,19 @@
"message": "Phí mạng cho trình tổng hợp"
},
"alertDisableTooltip": {
"message": "Bạn có thể thay đổi tùy chọn này trong phần \"Cài đặt > Cảnh báo\""
"message": "Bạn có thể thay đổi trong phần \"Cài đặt > Cảnh báo\""
},
"alertSettingsUnconnectedAccount": {
"message": "Đang duyệt trang web khi chọn một tài khoản không được kết nối"
},
"alertSettingsUnconnectedAccountDescription": {
"message": "Cảnh báo này hiển thị trong cửa sổ bật lên khi bạn đang duyệt một trang web đã được kết nối trên Web3, nhưng tài khoản đang chọn không được kết nối."
"message": "Cảnh báo này hiển thị trong cửa sổ bật lên khi bạn đang duyệt một trang web đã được kết nối trên web3, nhưng tài khoản đang chọn không được kết nối."
},
"alertSettingsWeb3ShimUsage": {
"message": "Khi một trang web cố dùng API window.web3 đã bị xóa"
},
"alertSettingsWeb3ShimUsageDescription": {
"message": "Cảnh báo này hiển thị trong cửa sổ bật lên khi bạn đang duyệt một trang web cố sử dụng API window.web3 đã bị xóa nên có thể bị lỗi."
},
"alerts": {
"message": "Cảnh báo"
@ -137,6 +166,9 @@
"approve": {
"message": "Phê duyệt giới hạn chi tiêu"
},
"approveButtonText": {
"message": "Phê duyệt"
},
"approveSpendLimit": {
"message": "Phê duyệt giới hạn chi tiêu $1",
"description": "The token symbol that is being approved"
@ -147,6 +179,9 @@
"asset": {
"message": "Tài sản"
},
"assetOptions": {
"message": "Tùy chọn tài sản"
},
"assets": {
"message": "Tài sản"
},
@ -199,7 +234,10 @@
"message": "Cơ bản"
},
"blockExplorerUrl": {
"message": "Trình khám phá khối"
"message": "URL trình khám phá khối"
},
"blockExplorerUrlDefinition": {
"message": "URL được dùng làm trình khám phá khối cho mạng này."
},
"blockExplorerView": {
"message": "Xem tài khoản tại $1",
@ -211,6 +249,9 @@
"browserNotSupported": {
"message": "Trình duyệt của bạn không được hỗ trợ..."
},
"builContactList": {
"message": "Xây dựng danh sách liên hệ của bạn"
},
"builtInCalifornia": {
"message": "MetaMask được thiết kế và phát triển tại California."
},
@ -226,6 +267,9 @@
"bytes": {
"message": "Byte"
},
"canToggleInSettings": {
"message": "Bạn có thể bật lại thông báo này trong phần Cài đặt -> Cảnh báo."
},
"cancel": {
"message": "Hủy"
},
@ -238,6 +282,9 @@
"chainId": {
"message": "Mã chuỗi"
},
"chainIdDefinition": {
"message": "Mã chuỗi được dùng để ký các giao dịch cho mạng này."
},
"chromeRequiredForHardwareWallets": {
"message": "Bạn cần sử dụng MetaMask trên Google Chrome để kết nối với Ví cứng của bạn."
},
@ -259,6 +306,15 @@
"confirmed": {
"message": "Đã xác nhận"
},
"confusableUnicode": {
"message": "“$1” tương tự với “$2”."
},
"confusableZeroWidthUnicode": {
"message": "Tìm thấy ký tự có độ rộng bằng 0."
},
"confusingEnsDomain": {
"message": "Chúng tôi đã phát hiện thấy một ký tự có thể gây nhầm lẫn trong tên ENS. Hãy kiểm tra tên ENS để tránh khả năng bị lừa đảo."
},
"congratulations": {
"message": "Chúc mừng bạn"
},
@ -266,7 +322,7 @@
"message": "Kết nối"
},
"connectAccountOrCreate": {
"message": "Tạo tài khoản hoặc tạo tài khoản mới"
"message": "Kết nối tài khoản hoặc tạo tài khoản mới"
},
"connectHardwareWallet": {
"message": "Kết nối với ví cứng"
@ -348,9 +404,15 @@
"contactsSettingsDescription": {
"message": "Thêm, chỉnh sửa, xóa và quản lý danh bạ của bạn"
},
"continue": {
"message": "Tiếp tục"
},
"continueToWyre": {
"message": "Tiếp tục chuyển đến Wyre"
},
"contractAddressError": {
"message": "Bạn đang gửi token đến địa chỉ hợp đồng của token. Điều này có thể khiến bạn bị mất những token này."
},
"contractDeployment": {
"message": "Triển khai hợp đồng"
},
@ -390,6 +452,12 @@
"currencyConversion": {
"message": "Quy đổi tiền"
},
"currencySymbol": {
"message": "Ký hiệu tiền tệ"
},
"currencySymbolDefinition": {
"message": "Mã chứng khoán hiển thị cho tiền tệ của mạng này."
},
"currentAccountNotConnected": {
"message": "Tài khoản hiện tại của bạn chưa được kết nối"
},
@ -418,13 +486,13 @@
"message": "Một số dữ liệu tài khoản của bạn đã được sao lưu trong lần cài đặt MetaMask trước đó. Dữ liệu này có thể bao gồm các tùy chọn cài đặt, danh bạ và token. Bạn có muốn khôi phục dữ liệu này bây giờ không?"
},
"decimal": {
"message": "Số vị trí thập phân của độ chính xác"
"message": "Vị trí thập phân của token"
},
"decimalsMustZerotoTen": {
"message": "Số vị trí thập phân ít nhất phải bằng 0 và không được quá 36."
},
"decrypt": {
"message": "Decrypt"
"message": "Giải mã"
},
"decryptCopy": {
"message": "Sao chép thông báo đã mã hóa"
@ -488,6 +556,15 @@
"dismiss": {
"message": "Đóng"
},
"dismissReminderDescriptionField": {
"message": "Bật tùy chọn này để tắt thông báo nhắc sao lưu cụm mật khẩu khôi phục. Bạn nên sao lưu Cụm mật khẩu khôi phục bí mật của mình để tránh mất tiền"
},
"dismissReminderField": {
"message": "Tắt lời nhắc sao lưu cụm mật khẩu khôi phục"
},
"domain": {
"message": "Miền"
},
"done": {
"message": "Hoàn tất"
},
@ -512,6 +589,12 @@
"editContact": {
"message": "Chỉnh sửa người liên hệ"
},
"editNonceField": {
"message": "Chỉnh sửa số chỉ dùng một lần"
},
"editNonceMessage": {
"message": "Đây là tính năng nâng cao, hãy dùng một cách thận trọng."
},
"editPermission": {
"message": "Chỉnh sửa quyền"
},
@ -523,7 +606,7 @@
"message": "Yêu cầu khóa mã hóa công khai"
},
"endOfFlowMessage1": {
"message": "Bạn đã vượt qua bài kiểm tra. Hãy lưu giữ cụm mật khẩu gốc của bạn an toàn, đó là trách nhiệm của bạn!"
"message": "Bạn đã vượt qua bài kiểm tra. Hãy lưu giữ Cụm mật khẩu khôi phục bí mật của bạn an toàn, đó là trách nhiệm của bạn!"
},
"endOfFlowMessage10": {
"message": "Tất cả đã hoàn tất"
@ -538,13 +621,13 @@
"message": "Tuyệt đối không chia sẻ cụm mật khẩu với bất kỳ ai."
},
"endOfFlowMessage5": {
"message": "Hãy cẩn thận với hoạt động lừa đảo! MetaMask sẽ không bao giờ tự ý hỏi cụm mật khẩu gốc của bạn."
"message": "Hãy cẩn thận với hoạt động lừa đảo! MetaMask sẽ không bao giờ tự ý hỏi Cụm mật khẩu khôi phục bí mật của bạn."
},
"endOfFlowMessage6": {
"message": "Nếu cần sao lưu lại cụm mật khẩu gốc của mình, bạn có thể tìm thấy cụm mật khẩu này trong phần Cài đặt -> Bảo mật."
"message": "Nếu bạn cần sao lưu lại Cụm mật khẩu khôi phục bí mật, bạn có thể tìm thấy chức năng này trong Cài đặt -> Bảo mật."
},
"endOfFlowMessage8": {
"message": "MetaMask không thể khôi phục cụm mật khẩu gốc của bạn."
"message": "MetaMask không thể khôi phục Cụm mật khẩu khôi phục bí mật của bạn."
},
"endOfFlowMessage9": {
"message": "Tìm hiểu thêm."
@ -587,6 +670,14 @@
"message": "Mã: $1",
"description": "Displayed error name for debugging purposes. $1 is the error name"
},
"errorPageMessage": {
"message": "Hãy thử lại bằng cách tải lại trang hoặc liên hệ với bộ phận hỗ trợ $1.",
"description": "Message displayed on generic error page in the fullscreen or notification UI, $1 is a clickable link with text defined by the 'here' key. The link will open to a form where users can file support tickets."
},
"errorPagePopupMessage": {
"message": "Hãy thử lại bằng cách đóng và mở lại cửa sổ bật lên hoặc liên hệ với bộ phận hỗ trợ $1.",
"description": "Message displayed on generic error page in the popup UI, $1 is a clickable link with text defined by the 'here' key. The link will open to a form where users can file support tickets."
},
"errorPageTitle": {
"message": "MetaMask đã gặp lỗi",
"description": "Title of generic error page"
@ -598,6 +689,9 @@
"estimatedProcessingTimes": {
"message": "Thời gian xử lý ước tính"
},
"ethGasPriceFetchWarning": {
"message": "Giá gas dự phòng được cung cấp vì dịch vụ ước tính giá gas chính hiện không hoạt động."
},
"eth_accounts": {
"message": "Xem địa chỉ của các tài khoản được cho phép của bạn (bắt buộc)",
"description": "The description for the `eth_accounts` permission"
@ -685,9 +779,18 @@
"gasPrice": {
"message": "Giá gas (GWEI)"
},
"gasPriceExcessive": {
"message": "Bạn đã đặt phí gas cao một cách không cần thiết. Hãy cân nhắc giảm mức phí này."
},
"gasPriceExcessiveInput": {
"message": "Giá gas quá cao"
},
"gasPriceExtremelyLow": {
"message": "Giá gas cực kỳ thấp"
},
"gasPriceFetchFailed": {
"message": "Không ước tính được giá gas do lỗi mạng."
},
"gasPriceInfoTooltipContent": {
"message": "Giá gas xác định khoản Ether mà bạn sẵn sàng thanh toán cho mỗi đơn vị gas."
},
@ -730,11 +833,18 @@
"hardwareWalletConnected": {
"message": "Đã kết nối với ví cứng"
},
"hardwareWalletLegacyDescription": {
"message": "(cũ)",
"description": "Text representing the MEW path"
},
"hardwareWalletSupportLinkConversion": {
"message": "nhấp vào đây"
},
"hardwareWallets": {
"message": "Kết nối với một ví cứng"
},
"hardwareWalletsMsg": {
"message": "Chọn một ví cứng mà bạn muốn sử dụng với MetaMask"
"message": "Chọn một ví cứng mà bạn muốn sử dụng với MetaMask."
},
"here": {
"message": "tại đây",
@ -753,6 +863,9 @@
"message": "Ẩn $1",
"description": "$1 is the symbol for a token (e.g. 'DAI')"
},
"hideZeroBalanceTokens": {
"message": "Ẩn các token không có số dư"
},
"history": {
"message": "Lịch sử"
},
@ -763,19 +876,29 @@
"importAccount": {
"message": "Nhập tài khoản"
},
"importAccountLinkText": {
"message": "nhập bằng Cụm mật khẩu khôi phục bí mật"
},
"importAccountMsg": {
"message": " Tài khoản đã nhập sẽ không được liên kết với cụm mật khẩu gốc cho tài khoản MetaMask đã tạo ban đầu của bạn. Tìm hiểu thêm về các tài khoản đã nhập "
"message": " Tài khoản đã nhập sẽ không được liên kết với Cụm mật khẩu khôi phục bí mật cho tài khoản MetaMask đã tạo ban đầu của bạn. Tìm hiểu thêm về các tài khoản đã nhập "
},
"importAccountSeedPhrase": {
"message": "Nhập một tài khoản bằng cụm mật khẩu gốc"
"message": "Nhập một tài khoản bằng Cụm mật khẩu khôi phục bí mật"
},
"importWallet": {
"message": "Nhập ví"
},
"importYourExisting": {
"message": "Nhập ví hiện tại của bạn bằng Cụm mật khẩu khôi phục bí mật"
},
"imported": {
"message": "Đã nhập",
"description": "status showing that an account has been fully loaded into the keyring"
},
"infuraBlockedNotification": {
"message": "MetaMask không thể kết nối với máy chủ chuỗi khối. Hãy xem xét các lý do tiềm ẩn $1.",
"description": "$1 is a clickable link with with text defined by the 'here' key"
},
"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."
},
@ -800,6 +923,9 @@
"invalidBlockExplorerURL": {
"message": "URL trình khám phá khối không hợp lệ"
},
"invalidChainIdTooBig": {
"message": "Mã chuỗi không hợp lệ. Mã chuỗi quá to."
},
"invalidCustomNetworkAlertContent1": {
"message": "Phải nhập lại mã chuỗi cho mạng tùy chỉnh “$1”.",
"description": "$1 is the name/identifier of the network."
@ -821,7 +947,7 @@
"message": "Số thập lục phân không hợp lệ. Xóa mọi chữ số 0 ở đầu."
},
"invalidIpfsGateway": {
"message": "Cổng kết nối IPFS không hợp lệ. Giá trị phải là URL hợp lệ"
"message": "Cổng kết nối IPFS không hợp lệ: Giá trị phải là URL hợp lệ"
},
"invalidNumber": {
"message": "Số không hợp lệ. Hãy nhập một số thập phân hoặc số thập lục phân bắt đầu bằng “0x”."
@ -833,7 +959,7 @@
"message": "URL RPC không hợp lệ"
},
"invalidSeedPhrase": {
"message": "Cụm mật khẩu gốc không hợp lệ"
"message": "Cụm mật khẩu khôi phục bí mật không hợp lệ"
},
"ipfsGateway": {
"message": "Cổng kết nối IPFS"
@ -863,6 +989,21 @@
"ledgerAccountRestriction": {
"message": "Bạn cần sử dụng tài khoản gần đây nhất thì mới có thể thêm một tài khoản mới."
},
"ledgerLiveAdvancedSetting": {
"message": "Dùng Ledger Live"
},
"ledgerLiveAdvancedSettingDescription": {
"message": "Cầu Ledger Live mới cho phép bạn dùng Ledger dễ dàng hơn. Chỉ có trong Chrome."
},
"ledgerLiveApp": {
"message": "Ứng dụng Ledger Live"
},
"ledgerLocked": {
"message": "Không thể kết nối với thiết bị Ledger. Vui lòng đảm bảo bạn đã mở khóa thiết bị và mở ứng dụng Ethereum."
},
"ledgerTimeout": {
"message": "Ledger Live mất quá nhiều thời gian để phản hồi hoặc đã hết thời gian chờ kết nối. Hãy đảm bảo bạn đã mở ứng dụng Ledger Live và đã mở khóa thiết bị."
},
"letsGoSetUp": {
"message": "Có, hãy thiết lập!"
},
@ -897,7 +1038,7 @@
"message": "Tối đa"
},
"memo": {
"message": "memo"
"message": "thư báo"
},
"memorizePhrase": {
"message": "Lưu cụm mật khẩu này."
@ -954,6 +1095,14 @@
"metametricsOptInDescription": {
"message": "MetaMask muốn thu thập dữ liệu sử dụng để hiểu rõ hơn về cách người dùng tương tác với tiện ích. Chúng tôi sẽ dùng dữ liệu này để liên tục cải thiện độ hữu ích và trải nghiệm người dùng trên sản phẩm của mình và hệ sinh thái Ethereum."
},
"mismatchedChain": {
"message": "Thông tin về mạng cho mã chuỗi này không khớp với hồ sơ của chúng tôi. Bạn nên $1 trước khi tiếp tục.",
"description": "$1 is a clickable link with text defined by the 'mismatchedChainLinkText' key"
},
"mismatchedChainLinkText": {
"message": "xác minh thông tin về mạng",
"description": "Serves as link text for the 'mismatchedChain' key. This text will be embedded inside the translation for that key."
},
"mobileSyncText": {
"message": "Vui lòng nhập mật khẩu để xác nhận đây là bạn!"
},
@ -963,9 +1112,19 @@
"myAccounts": {
"message": "Tài khoản của tôi"
},
"name": {
"message": "Tên"
},
"needEtherInWallet": {
"message": "Để tương tác với các ứng dụng phi tập trung bằng MetaMask, bạn sẽ cần phải có Ether trong ví của mình."
},
"needHelp": {
"message": "Bạn cần trợ giúp? Liên hệ $1",
"description": "$1 represents `needHelpLinkText`, the text which goes in the help link"
},
"needHelpLinkText": {
"message": "Hỗ trợ về MetaMask"
},
"needImportFile": {
"message": "Bạn phải chọn tệp để nhập.",
"description": "User is important an account and needs to add a file to continue"
@ -973,15 +1132,36 @@
"negativeETH": {
"message": "Không thể gửi khoản ETH âm."
},
"networkDetails": {
"message": "Thông tin về mạng"
},
"networkName": {
"message": "Tên mạng"
},
"networkNameBSC": {
"message": "BSC"
},
"networkNameDefinition": {
"message": "Tên liên kết với mạng này."
},
"networkNameEthereum": {
"message": "Ethereum"
},
"networkNameTestnet": {
"message": "Mạng thử nghiệm"
},
"networkSettingsChainIdDescription": {
"message": "Mã chuỗi được dùng để ký các giao dịch. Giá trị này phải khớp với mã chuỗi do mạng trả về. Bạn có thể nhập một số thập phân hoặc số thập lục phân bắt đầu bằng “0x” nhưng chúng tôi sẽ hiển thị số ở dạng thập phân."
},
"networkSettingsDescription": {
"message": "Thêm và chỉnh sửa mạng RPC tùy chỉnh"
},
"networkURL": {
"message": "URL mạng"
},
"networkURLDefinition": {
"message": "URL dùng để truy cập vào mạng này."
},
"networks": {
"message": "Mạng"
},
@ -1033,7 +1213,7 @@
"message": "Chưa có địa chỉ nào được đặt cho tên này."
},
"noAlreadyHaveSeed": {
"message": "Không, tôi đã có cụm mật khẩu gốc"
"message": "Không, tôi đã có Cụm mật khẩu bí mật"
},
"noConversionRateAvailable": {
"message": "Không có sẵn tỷ lệ quy đổi nào"
@ -1050,6 +1230,9 @@
"noWebcamFoundTitle": {
"message": "Không tìm thấy webcam"
},
"nonce": {
"message": "Số chỉ dùng một lần"
},
"nonceField": {
"message": "Tùy chỉnh số chỉ dùng một lần của giao dịch"
},
@ -1065,6 +1248,42 @@
"notEnoughGas": {
"message": "Không đủ gas"
},
"notifications1Description": {
"message": "Giờ đây, người dùng MetaMask trên điện thoại di động có thể hoán đổi token trong ví di động của họ. Quét mã QR để tải ứng dụng di động và bắt đầu hoán đổi.",
"description": "Description of a notification in the 'See What's New' popup. Describes the swapping on mobile feature."
},
"notifications1Title": {
"message": "Tính năng hoán đổi trên điện thoại di động đã sẵn sàng!",
"description": "Title for a notification in the 'See What's New' popup. Tells users that they can now use MetaMask Swaps on Mobile."
},
"notifications3ActionText": {
"message": "Đọc thêm",
"description": "The 'call to action' on the button, or link, of the 'Stay secure' notification. Upon clicking, users will be taken to a page about security on the metamask support website."
},
"notifications3Description": {
"message": "Luôn cập nhật các phương pháp bảo mật hay nhất của MetaMask và nhận các mẹo mới nhất về bảo mật từ nhóm hỗ trợ chính thức của MetaMask.",
"description": "Description of a notification in the 'See What's New' popup. Describes the information they can get on security from the linked support page."
},
"notifications3Title": {
"message": "Luôn bảo mật",
"description": "Title for a notification in the 'See What's New' popup. Encourages users to consider security."
},
"notifications4ActionText": {
"message": "Bắt đầu hoán đổi",
"description": "The 'call to action' on the button, or link, of the 'Swap on Binance Smart Chain!' notification. Upon clicking, users will be taken to a page where then can swap tokens on Binance Smart Chain."
},
"notifications4Description": {
"message": "Nhận giá hoán đổi token tốt nhất ngay trong ví của bạn. Giờ đây, MetaMask sẽ kết nối bạn với nhiều trình tổng hợp sàn giao dịch phi tập trung và nhà tạo lập thị trường chuyên nghiệp trên Binance Smart Chain.",
"description": "Description of a notification in the 'See What's New' popup."
},
"notifications4Title": {
"message": "Hoán đổi trên Binance Smart Chain",
"description": "Title for a notification in the 'See What's New' popup. Encourages users to do swaps on Binance Smart Chain."
},
"notifications5Description": {
"message": "Từ giờ, \"Cụm mật khẩu gốc\" sẽ được gọi là \"Cụm mật khẩu khôi phục bí mật.\"",
"description": "Description of a notification in the 'See What's New' popup. Describes the seed phrase wording update."
},
"ofTextNofM": {
"message": "trên"
},
@ -1081,7 +1300,7 @@
"message": "Bật"
},
"onboardingReturnNotice": {
"message": "\"$1\" sẽ đóng tab này và chuyển về $2",
"message": "\"$1\" sẽ đóng tab này và quay về $2",
"description": "Return the user to the site that initiated onboarding"
},
"onlyAddTrustedNetworks": {
@ -1171,6 +1390,9 @@
"provide": {
"message": "Cung cấp"
},
"publicAddress": {
"message": "Địa chỉ công khai"
},
"queue": {
"message": "Hàng đợi"
},
@ -1217,7 +1439,7 @@
"message": "Xóa tài khoản"
},
"removeAccountDescription": {
"message": "Tài khoản này sẽ được xóa khỏi ví của bạn. Xin đảm bảo rằng bạn có cụm mật khẩu gốc ban đầu hoặc khóa riêng tư cho tài khoản được nhập trước khi tiếp tục. Bạn có thể nhập hoặc tạo lại tài khoản từ trình đơn tài khoản thả xuống. "
"message": "Tài khoản này sẽ được xóa khỏi ví của bạn. Xin đảm bảo rằng bạn có Cụm mật khẩu khôi phục bí mật ban đầu hoặc khóa riêng tư cho tài khoản được nhập trước khi tiếp tục. Bạn có thể nhập hoặc tạo lại tài khoản từ trình đơn tài khoản thả xuống. "
},
"requestsAwaitingAcknowledgement": {
"message": "yêu cầu đang chờ xác nhận"
@ -1232,13 +1454,13 @@
"message": "Đặt lại tài khoản"
},
"resetAccountDescription": {
"message": "Nếu đặt lại tài khoản của bạn, toàn bộ lịch sử giao dịch sẽ bị xóa. Việc này sẽ không làm thay đổi số dư trong tài khoản của bạn hoặc yêu cầu bạn phải nhập lại cụm mật khẩu gốc."
"message": "Nếu đặt lại tài khoản của bạn, toàn bộ lịch sử giao dịch sẽ bị xóa. Việc này sẽ không làm thay đổi số dư trong tài khoản của bạn hoặc yêu cầu bạn phải nhập lại Cụm mật khẩu khôi phục bí mật."
},
"restore": {
"message": "Khôi phục"
},
"restoreAccountWithSeed": {
"message": "Khôi phục tài khoản của bạn bằng cụm mật khẩu gốc"
"message": "Khôi phục tài khoản của bạn bằng cụm mật khẩu khôi phục bí mật"
},
"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?",
@ -1251,13 +1473,13 @@
"message": "Một token trong đây sử dụng lại ký hiệu của một token khác mà bạn thấy, điều này có thể gây nhầm lẫn hoặc mang tính lừa dối."
},
"revealSeedWords": {
"message": "Hiện cụm mật khẩu gốc"
"message": "Hiện cụm mật khẩu khôi phục bí mật"
},
"revealSeedWordsDescription": {
"message": "Nếu thay đổi trình duyệt hoặc chuyển máy tính, bạn sẽ cần cụm mật khẩu gốc này để truy cập tài khoản của mình. Hãy lưu cụm mật khẩu gốc này ở nơi an toàn và bí mật."
"message": "Nếu thay đổi trình duyệt hoặc chuyển máy tính, bạn sẽ cần Cụm mật khẩu khôi phục bí mật này để truy cập tài khoản của mình. Hãy lưu cụm mật khẩu gốc này ở nơi an toàn và bí mật."
},
"revealSeedWordsTitle": {
"message": "Cụm mật khẩu gốc"
"message": "Cụm mật khẩu khôi phục bí mật"
},
"revealSeedWordsWarning": {
"message": "Kẻ xấu có thể dùng các từ này để đánh cắp tất cả các tài khoản của bạn."
@ -1310,20 +1532,23 @@
"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 của bạn 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ư"
},
"securitySettingsDescription": {
"message": "Cụm mật khẩu gốc của ví và các tùy chọn cài đặt quyền riêng tư"
"message": "Các cài đặt quyền riêng tư và Cụm mật khẩu khôi phục bí mật của ví"
},
"seedPhrasePlaceholder": {
"message": "Phân tách mỗi từ bằng một dấu cách"
},
"seedPhrasePlaceholderPaste": {
"message": "Dán cụm mật khẩu gốc từ khay nhớ tạm"
"message": "Dán Cụm mật khẩu khôi phục bí mật từ khay nhớ tạm"
},
"seedPhraseReq": {
"message": "Cụm mật khẩu gốc gồm 12, 15, 18, 21 hoặc 24 từ"
"message": "Cụm mật khẩu khôi phục bí mật gồm 12, 15, 18, 21 hoặc 24 từ"
},
"selectAHigherGasFee": {
"message": "Chọn phí gas cao hơn để tăng tốc quá trình xử lý giao dịch của bạn.*"
@ -1337,8 +1562,15 @@
"selectAnAccount": {
"message": "Chọn một tài khoản"
},
"selectAnAccountAlreadyConnected": {
"message": "Tài khoản này đã được kết nối với MetaMask"
},
"selectAnAccountHelp": {
"message": "Chọn tài khoản để xem trong MetaMask"
"message": "Chọn một tài khoản để xem trong MetaMask."
},
"selectAnAccountHelpDirections": {
"message": "Bạn không thấy tài khoản của mình? $1",
"description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key"
},
"selectEachPhrase": {
"message": "Vui lòng chọn từng cụm mật khẩu theo thứ tự để đảm bảo sự chính xác."
@ -1408,7 +1640,7 @@
"message": "Hiện khóa riêng tư"
},
"showSeedPhrase": {
"message": "Hiển thị cụm mật khẩu gốc"
"message": "Hiển thị Cụm mật khẩu khôi phục bí mật"
},
"sigRequest": {
"message": "Yêu cầu chữ ký"
@ -1480,6 +1712,27 @@
"statusNotConnected": {
"message": "Chưa kết nối"
},
"step1LedgerWallet": {
"message": "Tải ứng dụng Ledger xuống"
},
"step1LedgerWalletMsg": {
"message": "Tải xuống, thiết lập và nhập mật khẩu của bạn để mở khóa $1.",
"description": "$1 represents the `ledgerLiveApp` localization value"
},
"step1TrezorWallet": {
"message": "Kết nối ví Trezor"
},
"step1TrezorWalletMsg": {
"message": "Kết nối ví của bạn trực tiếp với máy tính. Để biết thêm thông tin về cách sử dụng thiết bị ví cứng của bạn, $1",
"description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key"
},
"step2LedgerWallet": {
"message": "Kết nối ví Ledger"
},
"step2LedgerWalletMsg": {
"message": "Kết nối ví của bạn trực tiếp với máy tính. Mở khóa Ledger của bạn và mở ứng dụng Ethereum. Để biết thêm thông tin về cách sử dụng thiết bị ví cứng của bạn, $1.",
"description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key"
},
"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."
},
@ -1489,6 +1742,9 @@
"submitted": {
"message": "Đã gửi"
},
"support": {
"message": "Hỗ trợ"
},
"supportCenter": {
"message": "Truy cập Trung tâm hỗ trợ của chúng tôi"
},
@ -1496,11 +1752,15 @@
"message": "Hoán đổi"
},
"swapAdvancedSlippageInfo": {
"message": "Giá thay đổi giữa thời điểm đặt và xác nhận lệnh, việc này được gọi là “trượt giá”. Giao dịch hoán đổi của bạn sẽ tự động hủy nếu mức trượt giá vượt quá “mức trượt giá tối đa” đã cài đặt."
"message": "Khi giá giữa thời điểm đặt lệnh và thời điểm xác nhận lệnh thay đổi, hiện tượng này được gọi là “trượt giá”. Giao dịch hoán đổi của bạn sẽ tự động hủy nếu mức trượt giá vượt quá “mức trượt giá tối đa” đã cài đặt."
},
"swapAggregator": {
"message": "Trình tổng hợp"
},
"swapAllowSwappingOf": {
"message": "Cho phép hoán đổi $1",
"description": "Shows a user that they need to allow a token for swapping on their hardware wallet"
},
"swapAmountReceived": {
"message": "Số tiền được đảm bảo"
},
@ -1515,6 +1775,9 @@
"message": "Bạn cần $1 $2 nữa để hoàn tất giao dịch hoán đổi này",
"description": "Tells the user how many more of a given token they need for a specific swap. $1 is an amount of tokens and $2 is the token symbol."
},
"swapBetterQuoteAvailable": {
"message": "Có một báo giá tốt hơn"
},
"swapBuildQuotePlaceHolderText": {
"message": "Không có token nào khớp với $1",
"description": "Tells the user that a given search string does not match any tokens in our token lists. $1 can be any string of text"
@ -1523,6 +1786,15 @@
"message": "Đang kiểm tra $1",
"description": "Shown to the user during quote loading. $1 is the name of an aggregator. The message indicates that metamask is currently checking if that aggregator has a trade/quote for their requested swap."
},
"swapConfirmWithHwWallet": {
"message": "Xác nhận ví cứng của bạn"
},
"swapContractDataDisabledErrorDescription": {
"message": "Trong ứng dụng Ethereum trên Ledger của bạn, hãy chuyển đến phần \"Cài đặt\" và cho phép dữ liệu hợp đồng. Sau đó, thử hoán đổi lại."
},
"swapContractDataDisabledErrorTitle": {
"message": "Chưa bật dữ liệu hợp đồng trên Ledger của bạn"
},
"swapCustom": {
"message": "tùy chỉnh"
},
@ -1549,6 +1821,10 @@
"swapEstimatedNetworkFeesInfo": {
"message": "Đây là giá trị ước tính của phí mạng sẽ dùng để hoàn thành giao dịch hoán đổi của bạn. Số tiền thực tế có thể thay đổi tùy theo tình trạng mạng."
},
"swapFailedErrorDescriptionWithSupportLink": {
"message": "Đã xảy ra lỗi giao dịch và chúng tôi sẵn sàng trợ giúp bạn. Nếu vấn đề này tiếp diễn, bạn có thể liên hệ với bộ phận hỗ trợ khách hàng tại $1 để được hỗ trợ thêm.",
"description": "This message is shown to a user if their swap fails. The $1 will be replaced by support.metamask.io"
},
"swapFailedErrorTitle": {
"message": "Hoán đổi không thành công"
},
@ -1564,8 +1840,15 @@
"swapFinalizing": {
"message": "Đang hoàn tất..."
},
"swapFromTo": {
"message": "Hoán đổi $1 sang $2",
"description": "Tells a user that they need to confirm on their hardware wallet a swap of 2 tokens. $1 is a source token and $2 is a destination token"
},
"swapGasFeesSplit": {
"message": "Phí gas trên màn hình trước được chia đôi giữa hai giao dịch này."
},
"swapHighSlippageWarning": {
"message": "Số tiền trượt giá rất cao. Hãy chắc chắn rằng bạn hiểu những gì mình đang làm!"
"message": "Số tiền trượt giá rất cao."
},
"swapLowSlippageError": {
"message": "Giao dịch có thể không thành công, mức trượt giá tối đa quá thấp."
@ -1584,9 +1867,13 @@
"message": "Phí của MetaMask"
},
"swapMetaMaskFeeDescription": {
"message": "Chúng tôi luôn tìm giá tốt nhất từ các nguồn thanh khoản hàng đầu. Khoản phí $1% tự động được tính vào mỗi báo giá để hỗ trợ sự phát triển liên tục và giúp MetaMask hoàn thiện hơn nữa.",
"message": "Chúng tôi luôn tìm giá tốt nhất từ các nguồn thanh khoản hàng đầu. Phí $1% được tự động tính vào báo giá này.",
"description": "Provides information about the fee that metamask takes for swaps. $1 is a decimal number."
},
"swapNQuotes": {
"message": "$1 báo giá",
"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": "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."
},
@ -1598,6 +1885,14 @@
"message": "$1 của bạn sẽ được thêm vào tài khoản sau khi xử lý xong giao dịch.",
"description": "This message communicates the token that is being transferred. It is shown on the awaiting swap screen. The $1 will be a token symbol."
},
"swapPriceDifference": {
"message": "Bạn sắp hoán đổi $1 $2 (~$3) lấy $4 $5 (~$6).",
"description": "This message represents the price slippage for the swap. $1 and $4 are a number (ex: 2.89), $2 and $5 are symbols (ex: ETH), and $3 and $6 are fiat currency amounts."
},
"swapPriceDifferenceTitle": {
"message": "Chênh lệch giá ~$1%",
"description": "$1 is a number (ex: 1.23) that represents the price difference."
},
"swapProcessing": {
"message": "Đang xử lý"
},
@ -1605,7 +1900,7 @@
"message": "Chi tiết báo giá"
},
"swapQuoteDetailsSlippageInfo": {
"message": "Giá thay đổi giữa thời điểm đặt và xác nhận lệnh, việc này được gọi là \"trượt giá\". Giao dịch Hoán đổi của bạn sẽ tự động hủy nếu mức trượt giá vượt quá \"mức trượt giá tối đa\" đã cài đặt."
"message": "Khi giá giữa thời điểm đặt lệnh và thời điểm xác nhận lệnh thay đổi, hiện tượng này được gọi là \"trượt giá\". Giao dịch hoán đổi của bạn sẽ tự động hủy nếu mức trượt giá vượt quá \"mức trượt giá cho phép\" đã đặt."
},
"swapQuoteIncludesRate": {
"message": "Báo giá có bao gồm khoản phí $1% cho MetaMask",
@ -1645,6 +1940,9 @@
"swapRequestForQuotation": {
"message": "Yêu cầu báo giá"
},
"swapReviewSwap": {
"message": "Xem xét giao dịch hoán đổi"
},
"swapSearchForAToken": {
"message": "Tìm kiếm token"
},
@ -1660,8 +1958,8 @@
"swapSelectQuotePopoverDescription": {
"message": "Dưới đây là tất cả các báo giá thu thập từ nhiều nguồn thanh khoản."
},
"swapSlippageTooLow": {
"message": "Mức trượt giá phải lớn hơn 0"
"swapSlippageNegative": {
"message": "Mức trượt giá phải lớn hơn hoặc bằng 0"
},
"swapSource": {
"message": "Nguồn thanh khoản"
@ -1679,24 +1977,48 @@
"message": "Hoán đổi sang"
},
"swapThisWillAllowApprove": {
"message": "Thao tác này sẽ cho phép hoán đổi $1"
"message": "Thao tác này sẽ cho phép hoán đổi $1."
},
"swapToConfirmWithHwWallet": {
"message": "để xác nhận ví cứng của bạn"
},
"swapTokenAvailable": {
"message": "Đã thêm $1 vào tài khoản của bạn.",
"description": "This message is shown after a swap is successful and communicates the exact amount of tokens the user has received for a swap. The $1 is a decimal number of tokens followed by the token symbol."
},
"swapTokenBalanceUnavailable": {
"message": "Chúng tôi không truy xuất được số dư $1 của bạn",
"description": "This message communicates to the user that their balance of a given token is currently unavailable. $1 will be replaced by a token symbol"
},
"swapTokenToToken": {
"message": "Hoán đổi $1 sang $2",
"description": "Used in the transaction display list to describe a swap. $1 and $2 are the symbols of tokens in involved in a swap."
},
"swapTokenVerificationMessage": {
"message": "Luôn xác nhận địa chỉ token trên $1.",
"description": "Points the user to Etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"Etherscan\" followed by an info icon that shows more info on hover."
},
"swapTokenVerificationOnlyOneSource": {
"message": "Chỉ được xác minh trên 1 nguồn."
},
"swapTokenVerificationSources": {
"message": "Đã xác minh trên $1 nguồn.",
"description": "Indicates the number of token information sources that recognize the symbol + address. $1 is a decimal number."
},
"swapTransactionComplete": {
"message": "Đã hoàn tất giao dịch"
},
"swapTwoTransactions": {
"message": "2 giao dịch"
},
"swapUnknown": {
"message": "Không xác định"
},
"swapUsingBestQuote": {
"message": "Sử dụng báo giá tốt nhất"
},
"swapVerifyTokenExplanation": {
"message": "Nhiều token có thể dùng cùng một tên và ký hiệu. Hãy kiểm tra trên $1 để xác minh xem đây có phải là token bạn đang tìm kiếm không.",
"message": "Nhiều token có thể dùng cùng một tên và ký hiệu. Hãy kiểm tra $1 để xác minh xem đây có phải là token bạn đang tìm kiếm không.",
"description": "This appears in a tooltip next to the verifyThisTokenOn message. It gives the user more information about why they should check the token on a block explorer. $1 will be the name or url of the block explorer, which will be the translation of 'etherscan' or a block explorer url specified for a custom network."
},
"swapViewToken": {
@ -1712,8 +2034,11 @@
"swapsAdvancedOptions": {
"message": "Tùy chọn nâng cao"
},
"swapsExcessiveSlippageWarning": {
"message": "Mức trượt giá quá cao và sẽ dẫn đến tỷ giá không sinh lời. Vui lòng giảm giới hạn trượt giá xuống một giá trị thấp hơn 15%."
},
"swapsMaxSlippage": {
"message": "Mức trượt giá tối đa"
"message": "Giới hạn trượt giá"
},
"swapsNotEnoughForTx": {
"message": "Không đủ $1 để hoàn thành giao dịch này",
@ -1722,12 +2047,30 @@
"swapsViewInActivity": {
"message": "Xem hoạt động"
},
"switchEthereumChainConfirmationDescription": {
"message": "Thao tác này sẽ chuyển mạng được chọn trong MetaMask sang một mạng đã thêm trước đó:"
},
"switchEthereumChainConfirmationTitle": {
"message": "Cho phép trang web này chuyển mạng?"
},
"switchLedgerPaths": {
"message": "Chuyển đường dẫn Ledger"
},
"switchLedgerPathsText": {
"message": "Chọn đường dẫn Ledger để xem các tài khoản khác"
},
"switchNetwork": {
"message": "Chuyển mạng"
},
"switchNetworks": {
"message": "Thay đổi mạng"
"message": "Chuyển mạng"
},
"switchToThisAccount": {
"message": "Chuyển sang tài khoản này"
},
"switchingNetworksCancelsPendingConfirmations": {
"message": "Khi bạn chuyển mạng, mọi xác nhận đang chờ xử lý sẽ bị hủy"
},
"symbol": {
"message": "Ký hiệu"
},
@ -1774,7 +2117,7 @@
"message": "Vòi thử nghiệm"
},
"thisWillCreate": {
"message": "Thao tác này sẽ tạo một ví mới và cụm mật khẩu gốc"
"message": "Thao tác này sẽ tạo một ví mới và Cụm mật khẩu khôi phục bí mật"
},
"tips": {
"message": "Mẹo"
@ -1798,6 +2141,9 @@
"tokenContractAddress": {
"message": "Địa chỉ hợp đồng token"
},
"tokenDecimalFetchFailed": {
"message": "Cần có vị trí thập phân của token."
},
"tokenSymbol": {
"message": "Ký hiệu token"
},
@ -1817,7 +2163,7 @@
"message": "Đã xác nhận giao dịch lúc $2."
},
"transactionCreated": {
"message": "Đã tạo giao dịch với giá trị $1 lúc $2"
"message": "Đã tạo giao dịch với giá trị $1 lúc $2."
},
"transactionDropped": {
"message": "Đã ngừng giao dịch lúc $2."
@ -1900,6 +2246,14 @@
"unlockMessage": {
"message": "Web phi tập trung đang chờ đón bạn"
},
"unrecognizedChain": {
"message": "Không nhận ra mạng tùy chỉnh này. Bạn nên $1 trước khi tiếp tục",
"description": "$1 is a clickable link with text defined by the 'unrecognizedChanLinkText' key. The link will open to instructions for users to validate custom network details."
},
"unrecognizedChainLinkText": {
"message": "xác minh thông tin về mạng",
"description": "Serves as link text for the 'unrecognizedChain' key. This text will be embedded inside the translation for that key."
},
"updatedWithDate": {
"message": "Đã cập nhật vào $1"
},
@ -1921,6 +2275,10 @@
"userName": {
"message": "Tên người dùng"
},
"verifyThisTokenDecimalOn": {
"message": "Không tìm thấy vị trí thập phân của token trên $1",
"description": "Points the user to etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"etherscan\""
},
"verifyThisTokenOn": {
"message": "Xác minh token này trên $1",
"description": "Points the user to etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"etherscan\""
@ -1928,9 +2286,15 @@
"viewAccount": {
"message": "Xem tài khoản"
},
"viewAllDetails": {
"message": "Xem toàn bộ chi tiết"
},
"viewContact": {
"message": "Xem người liên hệ"
},
"viewMore": {
"message": "Xem thêm"
},
"viewOnCustomBlockExplorer": {
"message": "Xem tại $1"
},
@ -1947,7 +2311,10 @@
"message": "hướng dẫn của chúng tôi về cách kết nối ví cứng"
},
"walletSeed": {
"message": "Cụm mật khẩu gốc"
"message": "Cụm mật khẩu khôi phục bí mật"
},
"walletSeedRestore": {
"message": "Cụm mật khẩu khôi phục bí mật của ví"
},
"welcome": {
"message": "Chào mừng bạn đến với MetaMask"
@ -1955,6 +2322,10 @@
"welcomeBack": {
"message": "Chào mừng bạn trở lại!"
},
"whatsNew": {
"message": "Xem tính năng mới",
"description": "This is the title of a popup that gives users notifications about new features and updates to MetaMask."
},
"whatsThis": {
"message": "Đây là gì?"
},
@ -1965,6 +2336,10 @@
"message": "$1/$2",
"description": "$1 and $2 are intended to be two numbers, where $2 is a total, and $1 is a count towards that total"
},
"xOfYPending": {
"message": "$1/$2 đang chờ xử lý",
"description": "$1 and $2 are intended to be two numbers, where $2 is a total number of pending confirmations, and $1 is a count towards that total"
},
"yesLetsTry": {
"message": "Có, hãy thử"
},
@ -1975,7 +2350,7 @@
"message": "Bạn đang ký"
},
"yourPrivateSeedPhrase": {
"message": "Cụm mật khẩu gốc riêng tư của bạn"
"message": "Cụm mật khẩu bí mật, riêng tư của bạn"
},
"zeroGasPriceOnSpeedUpError": {
"message": "Giá gas bằng 0 khi tăng tốc"

View File

@ -1576,9 +1576,6 @@
"swapFinalizing": {
"message": "确定中……"
},
"swapHighSlippageWarning": {
"message": "滑点数量非常大。确保您知道您的操作!"
},
"swapLowSlippageError": {
"message": "交易可能失败,最大滑点过低。"
},
@ -1690,9 +1687,6 @@
"swapSelectQuotePopoverDescription": {
"message": "以下是从多个流动资金来源收集到的所有报价。"
},
"swapSlippageTooLow": {
"message": "滑点必须大于零"
},
"swapSource": {
"message": "流动资金来源"
},

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 99 KiB

View 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.

Binary file not shown.

View File

@ -71,6 +71,5 @@
"notifications"
],
"short_name": "__MSG_appName__",
"version": "9.5.9",
"web_accessible_resources": ["inpage.js", "phishing.html"]
}

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import { stripHexPrefix } from 'ethereumjs-util';
import accountImporter from '.';

View File

@ -1,6 +1,6 @@
import querystring from 'querystring';
import pump from 'pump';
import LocalMessageDuplexStream from 'post-message-stream';
import { WindowPostMessageStream } from '@metamask/post-message-stream';
import ObjectMultiplex from 'obj-multiplex';
import extension from 'extensionizer';
import PortStream from 'extension-port-stream';
@ -57,7 +57,7 @@ function injectScript(content) {
*/
async function setupStreams() {
// the transport-specific streams for communication between inpage and background
const pageStream = new LocalMessageDuplexStream({
const pageStream = new WindowPostMessageStream({
name: CONTENT_SCRIPT,
target: INPAGE,
});
@ -89,7 +89,7 @@ async function setupStreams() {
// TODO:LegacyProvider: Delete
// handle legacy provider
const legacyPageStream = new LocalMessageDuplexStream({
const legacyPageStream = new WindowPostMessageStream({
name: LEGACY_CONTENT_SCRIPT,
target: LEGACY_INPAGE,
});

View File

@ -23,6 +23,7 @@ export default class AppStateController extends EventEmitter {
timeoutMinutes: 0,
connectedStatusPopoverHasBeenShown: true,
defaultHomeActiveTabName: null,
browserEnvironment: {},
...initState,
});
this.timer = null;
@ -158,4 +159,12 @@ export default class AppStateController extends EventEmitter {
timeoutMinutes * 60 * 1000,
);
}
/**
* Sets the current browser and OS environment
* @returns {void}
*/
setBrowserEnvironment(os, browser) {
this.store.updateState({ browserEnvironment: { os, browser } });
}
}

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import sinon from 'sinon';
import { KOVAN_CHAIN_ID } from '../../../shared/constants/network';
import CachedBalancesController from './cached-balances';

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import sinon from 'sinon';
import { ObservableStore } from '@metamask/obs-store';
import contracts from '@metamask/contract-metadata';

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import sinon from 'sinon';
import EnsController from '.';

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import sinon from 'sinon';
import proxyquire from 'proxyquire';
import nock from 'nock';

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import EventEmitter from 'events';
import { ComposedStore, ObservableStore } from '@metamask/obs-store';
import { JsonRpcEngine } from 'json-rpc-engine';

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import { txMetaStub } from '../../../../test/stub/tx-meta-stub';
import {
createPendingNonceMiddleware,

View File

@ -43,6 +43,7 @@ export default class PreferencesController {
useBlockie: false,
useNonceField: false,
usePhishDetect: true,
dismissSeedBackUpReminder: false,
// WARNING: Do not use feature flags for security-sensitive things.
// Feature flag toggling is available in the global namespace
@ -669,7 +670,7 @@ export default class PreferencesController {
/**
* A setter for the `useLedgerLive` property
* @param {bool} domain - Value for ledger live support
* @param {bool} useLedgerLive - Value for ledger live support
* @returns {Promise<string>} A promise of the update to useLedgerLive
*/
async setLedgerLivePreference(useLedgerLive) {
@ -685,6 +686,17 @@ export default class PreferencesController {
return this.store.getState().useLedgerLive;
}
/**
* A setter for the user preference to dismiss the seed phrase backup reminder
* @param {bool} dismissBackupReminder- User preference for dismissing the back up reminder
* @returns {void}
*/
async setDismissSeedBackUpReminder(dismissSeedBackUpReminder) {
await this.store.updateState({
dismissSeedBackUpReminder,
});
}
//
// PRIVATE METHODS
//

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import sinon from 'sinon';
import {
MAINNET_CHAIN_ID,

View File

@ -4,9 +4,9 @@ import BigNumber from 'bignumber.js';
import { ObservableStore } from '@metamask/obs-store';
import { mapValues, cloneDeep } from 'lodash';
import abi from 'human-standard-token-abi';
import { calcTokenAmount } from '../../../ui/app/helpers/utils/token-util';
import { calcGasTotal } from '../../../ui/app/pages/send/send.utils';
import { conversionUtil } from '../../../ui/app/helpers/utils/conversion-util';
import { calcTokenAmount } from '../../../ui/helpers/utils/token-util';
import { calcGasTotal } from '../../../ui/pages/send/send.utils';
import { conversionUtil } from '../../../ui/helpers/utils/conversion-util';
import {
DEFAULT_ERC20_APPROVE_GAS,
QUOTES_EXPIRED_ERROR,
@ -20,7 +20,7 @@ import {
fetchTradesInfo as defaultFetchTradesInfo,
fetchSwapsFeatureLiveness as defaultFetchSwapsFeatureLiveness,
fetchSwapsQuoteRefreshTime as defaultFetchSwapsQuoteRefreshTime,
} from '../../../ui/app/pages/swaps/swaps.util';
} from '../../../ui/pages/swaps/swaps.util';
import { NETWORK_EVENTS } from './network';
// The MAX_GAS_LIMIT is a number that is higher than the maximum gas costs we have observed on any aggregator

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import sinon from 'sinon';
import { ethers } from 'ethers';
@ -645,7 +645,7 @@ describe('SwapsController', function () {
topAggId,
resultQuotes,
] = await swapsController._findTopQuoteAndCalculateSavings(testInput);
assert.equal(topAggId, [TEST_AGG_ID_2]);
assert.equal(topAggId, TEST_AGG_ID_2);
assert.deepStrictEqual(resultQuotes, expectedResultQuotes);
});
});

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import sinon from 'sinon';
import { ObservableStore } from '@metamask/obs-store';
import TokenRatesController from './token-rates';

View File

@ -16,8 +16,8 @@ import {
BnMultiplyByFraction,
addHexPrefix,
} from '../../lib/util';
import { TRANSACTION_NO_CONTRACT_ERROR_KEY } from '../../../../ui/app/helpers/constants/error-keys';
import { getSwapsTokensReceivedFromTxMeta } from '../../../../ui/app/pages/swaps/swaps.util';
import { TRANSACTION_NO_CONTRACT_ERROR_KEY } from '../../../../ui/helpers/constants/error-keys';
import { getSwapsTokensReceivedFromTxMeta } from '../../../../ui/pages/swaps/swaps.util';
import {
TRANSACTION_STATUSES,
TRANSACTION_TYPES,

View File

@ -32,8 +32,8 @@ cleanContextForImports();
/* eslint-disable import/first */
import log from 'loglevel';
import LocalMessageDuplexStream from 'post-message-stream';
import { initializeProvider } from '@metamask/inpage-provider';
import { WindowPostMessageStream } from '@metamask/post-message-stream';
import { initializeProvider } from '@metamask/providers/dist/initializeInpageProvider';
restoreContextAfterImports();
@ -44,7 +44,7 @@ log.setDefaultLevel(process.env.METAMASK_DEBUG ? 'debug' : 'warn');
//
// setup background connection
const metamaskStream = new LocalMessageDuplexStream({
const metamaskStream = new WindowPostMessageStream({
name: 'metamask-inpage',
target: 'metamask-contentscript',
});

View File

@ -13,7 +13,9 @@ export default class ComposableObservableStore extends ObservableStore {
*/
constructor(initState, config) {
super(initState);
this.updateStructure(config);
if (config) {
this.updateStructure(config);
}
}
/**
@ -24,12 +26,10 @@ export default class ComposableObservableStore extends ObservableStore {
updateStructure(config) {
this.config = config;
this.removeAllListeners();
for (const key in config) {
if (Object.prototype.hasOwnProperty.call(config, key)) {
config[key].subscribe((state) => {
this.updateState({ [key]: state });
});
}
for (const key of Object.keys(this.config)) {
config[key].subscribe((state) => {
this.updateState({ [key]: state });
});
}
}
@ -40,15 +40,16 @@ export default class ComposableObservableStore extends ObservableStore {
* @returns {Object} Object containing merged child store state
*/
getFlatState() {
if (!this.config) {
return {};
}
let flatState = {};
for (const key in this.config) {
if (Object.prototype.hasOwnProperty.call(this.config, key)) {
const controller = this.config[key];
const state = controller.getState
? controller.getState()
: controller.state;
flatState = { ...flatState, ...state };
}
for (const key of Object.keys(this.config)) {
const controller = this.config[key];
const state = controller.getState
? controller.getState()
: controller.state;
flatState = { ...flatState, ...state };
}
return flatState;
}

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import { ObservableStore } from '@metamask/obs-store';
import ComposableObservableStore from './ComposableObservableStore';
@ -32,4 +32,9 @@ describe('ComposableObservableStore', function () {
});
assert.deepEqual(store.getFlatState(), { foo: 'foo', bar: 'bar' });
});
it('should return empty flattened state when not configured', function () {
const store = new ComposableObservableStore();
assert.deepEqual(store.getFlatState(), {});
});
});

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import {
KOVAN_CHAIN_ID,
MAINNET_CHAIN_ID,

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import cleanErrorStack from './cleanErrorStack';
describe('Clean Error Stack', function () {
@ -14,7 +14,7 @@ describe('Clean Error Stack', function () {
});
it('tests error with message', function () {
assert.equal(cleanErrorStack(testError), 'Error: Test Message');
assert.equal(cleanErrorStack(testError).toString(), 'Error: Test Message');
});
it('tests error with undefined name', function () {
@ -29,6 +29,6 @@ describe('Clean Error Stack', function () {
});
it('tests error with blank message', function () {
assert.equal(cleanErrorStack(blankMsgError), 'Error');
assert.equal(cleanErrorStack(blankMsgError).toString(), 'Error');
});
});

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import { obj as createThoughStream } from 'through2';
import createMetaRPCHandler from './createMetaRPCHandler';

View File

@ -40,9 +40,7 @@ export default async function getFirstPreferredLangCode() {
const firstPreferredLangCode = userPreferredLocaleCodes
.map((code) => code.toLowerCase().replace('_', '-'))
.find((code) =>
Object.prototype.hasOwnProperty.call(existingLocaleCodes, code),
);
.find((code) => existingLocaleCodes[code] !== undefined);
return existingLocaleCodes[firstPreferredLangCode] || 'en';
}

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction';
import MessageManager from './message-manager';

View File

@ -6,6 +6,7 @@ class MetaRPCClient {
constructor(connectionStream) {
this.connectionStream = connectionStream;
this.notificationChannel = new SafeEventEmitter();
this.uncaughtErrorChannel = new SafeEventEmitter();
this.requests = new Map();
this.connectionStream.on('data', this.handleResponse.bind(this));
this.connectionStream.on('end', this.close.bind(this));
@ -17,34 +18,47 @@ class MetaRPCClient {
});
}
onUncaughtError(handler) {
this.uncaughtErrorChannel.addListener('error', (error) => {
handler(error);
});
}
close() {
this.notificationChannel.removeAllListeners();
this.uncaughtErrorChannel.removeAllListeners();
}
handleResponse(data) {
const { id, result, error, method, params } = data;
const isNotification = id === undefined && error === undefined;
const cb = this.requests.get(id);
if (method && params && id) {
if (method && params && !isNotification) {
// dont handle server-side to client-side requests
return;
}
if (method && params && !id) {
if (method && params && isNotification) {
// handle servier-side to client-side notification
this.notificationChannel.emit('notification', data);
return;
}
if (!cb) {
// not found in request list
return;
}
if (error) {
const e = new EthereumRpcError(error.code, error.message, error.data);
// preserve the stack from serializeError
e.stack = error.stack;
this.requests.delete(id);
cb(e);
if (cb) {
this.requests.delete(id);
cb(e);
return;
}
this.uncaughtErrorChannel.emit('error', e);
return;
}
if (!cb) {
// not found in request list
return;
}

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import { obj as createThoughStream } from 'through2';
import metaRPCClientFactory from './metaRPCClientFactory';
@ -85,4 +85,58 @@ describe('metaRPCClientFactory', function () {
});
});
});
it('should be able to handle notifications', function (done) {
const streamTest = createThoughStream();
const metaRPCClient = metaRPCClientFactory(streamTest);
metaRPCClient.onNotification((notification) => {
assert(notification.method, 'foobarbaz');
done();
});
// send a notification
streamTest.write({
jsonrpc: '2.0',
method: 'foobarbaz',
params: ['bar'],
});
});
it('should be able to handle errors with no id', function (done) {
const streamTest = createThoughStream();
const metaRPCClient = metaRPCClientFactory(streamTest);
metaRPCClient.onUncaughtError((error) => {
assert(error.code, 1);
done();
});
streamTest.write({
jsonrpc: '2.0',
error: {
code: 1,
message: 'error msg',
},
});
});
it('should be able to handle errors with null id', function (done) {
const streamTest = createThoughStream();
const metaRPCClient = metaRPCClientFactory(streamTest);
metaRPCClient.onUncaughtError((error) => {
assert(error.code, 1);
done();
});
streamTest.write({
jsonrpc: '2.0',
id: null,
error: {
code: 1,
message: 'error msg',
},
});
});
});

View File

@ -1,5 +1,5 @@
import fs from 'fs';
import assert from 'assert';
import { strict as assert } from 'assert';
import { cloneDeep } from 'lodash';
import liveMigrations from '../../migrations';
import data from '../../first-time-state';

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import nodeify from './nodeify';
describe('nodeify', function () {

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction';
import PersonalMessageManager from './personal-message-manager';

View File

@ -1,4 +1,4 @@
import { ethErrors } from 'eth-rpc-errors';
import { ethErrors, errorCodes } from 'eth-rpc-errors';
import validUrl from 'valid-url';
import { omit } from 'lodash';
import { MESSAGE_TYPE } from '../../../../../shared/constants/app';
@ -123,12 +123,16 @@ async function addEthereumChainHandler(
const existingNetwork = findCustomRpcBy({ chainId: _chainId });
if (existingNetwork !== null) {
if (existingNetwork) {
// If the network already exists, the request is considered successful
res.result = null;
const currentChainId = getCurrentChainId();
if (currentChainId === _chainId) {
res.result = null;
return end();
}
// Ask the user to switch the network
try {
await updateRpcTarget(
await requestUserApproval({
@ -144,7 +148,12 @@ async function addEthereumChainHandler(
);
res.result = null;
} catch (error) {
return end(error);
// For the purposes of this method, it does not matter if the user
// declines to switch the selected network. However, other errors indicate
// that something is wrong.
if (error.code !== errorCodes.provider.userRejectedRequest) {
return end(error);
}
}
return end();
}
@ -251,6 +260,14 @@ async function addEthereumChainHandler(
},
});
// Once the network has been added, the requested is considered successful
res.result = null;
} catch (error) {
return end(error);
}
// Ask the user to switch the network
try {
await updateRpcTarget(
await requestUserApproval({
origin,
@ -263,10 +280,13 @@ async function addEthereumChainHandler(
},
}),
);
res.result = null;
} catch (error) {
return end(error);
// For the purposes of this method, it does not matter if the user
// declines to switch the selected network. However, other errors indicate
// that something is wrong.
if (error.code !== errorCodes.provider.userRejectedRequest) {
return end(error);
}
}
return end();
}

View File

@ -1,10 +1,12 @@
import addEthereumChain from './add-ethereum-chain';
import switchEthereumChain from './switch-ethereum-chain';
import getProviderState from './get-provider-state';
import logWeb3ShimUsage from './log-web3-shim-usage';
import watchAsset from './watch-asset';
const handlers = [
addEthereumChain,
switchEthereumChain,
getProviderState,
logWeb3ShimUsage,
watchAsset,

View File

@ -0,0 +1,120 @@
import { ethErrors } from 'eth-rpc-errors';
import { omit } from 'lodash';
import { MESSAGE_TYPE } from '../../../../../shared/constants/app';
import {
ETH_SYMBOL,
CHAIN_ID_TO_TYPE_MAP,
NETWORK_TO_NAME_MAP,
CHAIN_ID_TO_RPC_URL_MAP,
} from '../../../../../shared/constants/network';
import {
isPrefixedFormattedHexString,
isSafeChainId,
} from '../../../../../shared/modules/network.utils';
const switchEthereumChain = {
methodNames: [MESSAGE_TYPE.SWITCH_ETHEREUM_CHAIN],
implementation: switchEthereumChainHandler,
};
export default switchEthereumChain;
function findExistingNetwork(chainId, findCustomRpcBy) {
if (chainId in CHAIN_ID_TO_TYPE_MAP) {
return {
chainId,
ticker: ETH_SYMBOL,
nickname: NETWORK_TO_NAME_MAP[chainId],
rpcUrl: CHAIN_ID_TO_RPC_URL_MAP[chainId],
type: CHAIN_ID_TO_TYPE_MAP[chainId],
};
}
return findCustomRpcBy({ chainId });
}
async function switchEthereumChainHandler(
req,
res,
_next,
end,
{
getCurrentChainId,
findCustomRpcBy,
setProviderType,
updateRpcTarget,
requestUserApproval,
},
) {
if (!req.params?.[0] || typeof req.params[0] !== 'object') {
return end(
ethErrors.rpc.invalidParams({
message: `Expected single, object parameter. Received:\n${JSON.stringify(
req.params,
)}`,
}),
);
}
const { origin } = req;
const { chainId } = req.params[0];
const otherKeys = Object.keys(omit(req.params[0], ['chainId']));
if (otherKeys.length > 0) {
return end(
ethErrors.rpc.invalidParams({
message: `Received unexpected keys on object parameter. Unsupported keys:\n${otherKeys}`,
}),
);
}
const _chainId = typeof chainId === 'string' && chainId.toLowerCase();
if (!isPrefixedFormattedHexString(_chainId)) {
return end(
ethErrors.rpc.invalidParams({
message: `Expected 0x-prefixed, unpadded, non-zero hexadecimal string 'chainId'. Received:\n${chainId}`,
}),
);
}
if (!isSafeChainId(parseInt(_chainId, 16))) {
return end(
ethErrors.rpc.invalidParams({
message: `Invalid chain ID "${_chainId}": numerical value greater than max safe value. Received:\n${chainId}`,
}),
);
}
const requestData = findExistingNetwork(_chainId, findCustomRpcBy);
if (requestData) {
const currentChainId = getCurrentChainId();
if (currentChainId === _chainId) {
res.result = null;
return end();
}
try {
const approvedRequestData = await requestUserApproval({
origin,
type: MESSAGE_TYPE.SWITCH_ETHEREUM_CHAIN,
requestData,
});
if (chainId in CHAIN_ID_TO_TYPE_MAP) {
setProviderType(approvedRequestData.type);
} else {
await updateRpcTarget(approvedRequestData);
}
res.result = null;
} catch (error) {
return end(error);
}
return end();
}
return end(
ethErrors.provider.custom({
code: 4902, // To-be-standardized "unrecognized chain ID" error
message: `Unrecognized chain ID "${chainId}". Try adding the chain using ${MESSAGE_TYPE.ADD_ETHEREUM_CHAIN} first.`,
}),
);
}

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import { cloneDeep } from 'lodash';
import KeyringController from 'eth-keyring-controller';
import firstTimeState from '../first-time-state';

View File

@ -7,9 +7,8 @@ import extractEthjsErrorMessage from './extractEthjsErrorMessage';
// Destructuring breaks the inlining of the environment variables
const METAMASK_DEBUG = process.env.METAMASK_DEBUG;
const METAMASK_ENVIRONMENT = process.env.METAMASK_ENVIRONMENT;
const SENTRY_DSN_DEV = process.env.SENTRY_DSN_DEV;
/* eslint-enable prefer-destructuring */
const SENTRY_DSN_DEV =
'https://f59f3dd640d2429d9d0e2445a87ea8e1@sentry.io/273496';
// This describes the subset of Redux state attached to errors sent to Sentry
// These properties have some potential to be useful for debugging, and they do

View File

@ -1,5 +1,5 @@
import EventEmitter from 'events';
import assert from 'assert';
import { strict as assert } from 'assert';
import { ObservableStore } from '@metamask/obs-store';
import { ethErrors } from 'eth-rpc-errors';
import { typedSignatureHash, TYPED_MESSAGE_SCHEMA } from 'eth-sig-util';

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import sinon from 'sinon';
import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction';
import TypedMessageManager from './typed-message-manager';

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import extension from 'extensionizer';
import { stripHexPrefix } from 'ethereumjs-util';
import BN from 'bn.js';

View File

@ -478,6 +478,17 @@ export default class MetamaskController extends EventEmitter {
this.submitPassword(password);
}
// Lazily update the store with the current extension environment
this.extension.runtime.getPlatformInfo(({ os }) => {
this.appStateController.setBrowserEnvironment(
os,
// This method is presently only supported by Firefox
this.extension.runtime.getBrowserInfo === undefined
? 'chrome'
: 'firefox',
);
});
// TODO:LegacyProvider: Delete
this.publicConfigStore = this.createPublicConfigStore();
}
@ -724,6 +735,10 @@ export default class MetamaskController extends EventEmitter {
preferencesController.addKnownMethodData,
preferencesController,
),
setDismissSeedBackUpReminder: nodeify(
this.preferencesController.setDismissSeedBackUpReminder,
this.preferencesController,
),
// AddressController
setAddressBook: nodeify(
@ -1922,7 +1937,7 @@ export default class MetamaskController extends EventEmitter {
return reject(err);
}
return resolve(res);
return resolve(res.toString(16));
},
);
});
@ -2177,6 +2192,9 @@ export default class MetamaskController extends EventEmitter {
nickname,
);
},
setProviderType: this.networkController.setProviderType.bind(
this.networkController,
),
addCustomRpc: async ({
chainId,
blockExplorerUrl,
@ -2507,7 +2525,7 @@ export default class MetamaskController extends EventEmitter {
};
this.currencyRateController.update(currencyState);
this.currencyRateController.configure(currencyState);
cb(null, this.currencyRateController.state);
cb(null);
return;
} catch (err) {
cb(err);

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import sinon from 'sinon';
import { cloneDeep } from 'lodash';
import nock from 'nock';
@ -52,6 +52,7 @@ const ExtensionizerMock = {
onInstalled: {
addListener: () => undefined,
},
getPlatformInfo: async () => 'mac',
},
};
@ -492,8 +493,8 @@ describe('MetaMaskController', function () {
);
} catch (e) {
assert.equal(
e,
'Error: MetamaskController:getKeyringForDevice - Unknown device',
e.message,
'MetamaskController:getKeyringForDevice - Unknown device',
);
}
});
@ -534,8 +535,8 @@ describe('MetaMaskController', function () {
);
} catch (e) {
assert.equal(
e,
'Error: MetamaskController:getKeyringForDevice - Unknown device',
e.message,
'MetamaskController:getKeyringForDevice - Unknown device',
);
}
});
@ -553,8 +554,8 @@ describe('MetaMaskController', function () {
await metamaskController.forgetDevice('Some random device name');
} catch (e) {
assert.equal(
e,
'Error: MetamaskController:getKeyringForDevice - Unknown device',
e.message,
'MetamaskController:getKeyringForDevice - Unknown device',
);
}
});

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import wallet2 from '../../../test/lib/migrations/002.json';
import migration21 from './021';

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction';
import migration22 from './022';

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction';
import migration23 from './023';

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import data from '../first-time-state';
import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction';
import migration24 from './024';

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import data from '../first-time-state';
import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction';
import migration25 from './025';

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import firstTimeState from '../first-time-state';
import migration26 from './026';

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import firstTimeState from '../first-time-state';
import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction';
import migration27 from './027';

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import firstTimeState from '../first-time-state';
import migration28 from './028';

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction';
import migration29 from './029';

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import migrationTemplate from './030';
const storage = {

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import migration31 from './031';
describe('migration #31', function () {

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import migration33 from './033';
describe('Migration to delete notice controller', function () {

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import migration34 from './034';
describe('migration #34', function () {

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import migration35 from './035';
describe('migration #35', function () {

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import migration36 from './036';
describe('migration #36', function () {

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import migration37 from './037';
describe('migration #37', function () {

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import migration39 from './039';
describe('migration #39', function () {

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import migration40 from './040';
describe('migration #40', function () {

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import migration41 from './041';
describe('migration #41', function () {

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import migration42 from './042';
describe('migration #42', function () {

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import migration45 from './045';
describe('migration #45', function () {

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import migration49 from './049';
describe('migration #49', function () {

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import {
GOERLI,
GOERLI_CHAIN_ID,

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import migration56 from './056';
const BAD_TOKEN_DATA = { symbol: null, decimals: null };

View File

@ -0,0 +1,35 @@
import { cloneDeep, isPlainObject } from 'lodash';
const version = 60;
const SUPPORT_NOTIFICATION_KEY = 2;
const SUPPORT_NOTIFICATION_DATE = '2020-08-31';
/**
* Removes the support survey notification
*/
export default {
version,
async migrate(originalVersionedData) {
const versionedData = cloneDeep(originalVersionedData);
versionedData.meta.version = version;
const state = versionedData.data;
const newState = transformState(state);
versionedData.data = newState;
return versionedData;
},
};
function transformState(state) {
const notifications = state?.NotificationController?.notifications;
if (isPlainObject(notifications)) {
if (
notifications[SUPPORT_NOTIFICATION_KEY]?.date ===
SUPPORT_NOTIFICATION_DATE
) {
delete state.NotificationController.notifications[
SUPPORT_NOTIFICATION_KEY
];
}
}
return state;
}

View File

@ -0,0 +1,143 @@
import { strict as assert } from 'assert';
import migration60 from './060';
describe('migration #60', function () {
it('should update the version metadata', async function () {
const oldStorage = {
meta: {
version: 59,
},
data: {},
};
const newStorage = await migration60.migrate(oldStorage);
assert.deepEqual(newStorage.meta, {
version: 60,
});
});
it('prunes the support notification', async function () {
const oldStorage = {
meta: {},
data: {
NotificationController: {
notifications: {
1: {
id: 1,
date: '2021-03-17',
image: {
src: 'images/mobile-link-qr.svg',
height: '230px',
width: '230px',
placeImageBelowDescription: true,
},
},
2: {
id: 2,
date: '2020-08-31',
},
3: {
id: 3,
date: '2021-03-08',
},
4: {
id: 4,
date: '2021-05-11',
image: {
src: 'images/source-logos-bsc.svg',
width: '100%',
},
},
},
},
},
};
const newStorage = await migration60.migrate(oldStorage);
const { notifications } = newStorage.data.NotificationController;
const notificationKeys = Object.keys(notifications);
// Assert support notification is removed
assert.equal(notificationKeys.length, 3);
notificationKeys.forEach((key) => {
assert.notEqual(notifications[key].date, '2020-08-31');
});
});
it('does not modify state when the support notification does not exist', async function () {
const oldStorage = {
meta: {},
data: {
NotificationController: {
notifications: {
1: {
id: 1,
date: '2021-03-17',
image: {
src: 'images/mobile-link-qr.svg',
height: '230px',
width: '230px',
placeImageBelowDescription: true,
},
},
3: {
id: 3,
date: '2021-03-08',
},
4: {
id: 4,
date: '2021-05-11',
image: {
src: 'images/source-logos-bsc.svg',
width: '100%',
},
},
},
},
},
};
const newStorage = await migration60.migrate(oldStorage);
assert.deepEqual(oldStorage.data, newStorage.data);
});
it('does not modify state when NotificationsController is undefined', async function () {
const oldStorage = {
meta: {},
data: {
arbitraryPropOne: 1,
arbitraryPropTwo: 2,
},
};
const newStorage = await migration60.migrate(oldStorage);
assert.deepEqual(oldStorage.data, newStorage.data);
});
it('does not modify state when notifications are undefined', async function () {
const oldStorage = {
meta: {},
data: {
NotificationController: {
arbitraryControllerProp: 'foo',
},
},
};
const newStorage = await migration60.migrate(oldStorage);
assert.deepEqual(oldStorage.data, newStorage.data);
});
it('does not modify state when notifications are not an object', async function () {
const oldStorage = {
meta: {},
data: {
NotificationController: {
notifications: [],
},
},
};
const newStorage = await migration60.migrate(oldStorage);
assert.deepEqual(oldStorage.data, newStorage.data);
});
});

View File

@ -64,6 +64,7 @@ const migrations = [
require('./057').default,
require('./058').default,
require('./059').default,
require('./060').default,
];
export default migrations;

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import wallet1 from '../../../test/lib/migrations/001.json';
import vault4 from '../../../test/lib/migrations/004.json';
import migration2 from './002';
@ -52,7 +52,7 @@ describe('wallet1 is migrated successfully', function () {
const fourthData = fourthResult.data;
assert.equal(
fourthData.config.provider.rpcTarget,
null,
undefined,
'old rpcTarget should not exist.',
);
assert.equal(
@ -65,15 +65,15 @@ describe('wallet1 is migrated successfully', function () {
})
.then((fifthResult) => {
const fifthData = fifthResult.data;
assert.equal(fifthData.vault, null, 'old vault should not exist');
assert.equal(fifthData.vault, undefined, 'old vault should not exist');
assert.equal(
fifthData.walletNicknames,
null,
undefined,
'old walletNicknames should not exist',
);
assert.equal(
fifthData.config.selectedAccount,
null,
undefined,
'old config.selectedAccount should not exist',
);
assert.equal(
@ -102,7 +102,7 @@ describe('wallet1 is migrated successfully', function () {
.then((sixthResult) => {
assert.equal(
sixthResult.data.KeyringController.selectedAccount,
null,
undefined,
'old selectedAccount should not exist',
);
assert.equal(
@ -117,12 +117,12 @@ describe('wallet1 is migrated successfully', function () {
.then((seventhResult) => {
assert.equal(
seventhResult.data.transactions,
null,
undefined,
'old transactions should not exist',
);
assert.equal(
seventhResult.data.gasMultiplier,
null,
undefined,
'old gasMultiplier should not exist',
);
assert.equal(
@ -142,7 +142,7 @@ describe('wallet1 is migrated successfully', function () {
.then((eighthResult) => {
assert.equal(
eighthResult.data.noticesList,
null,
undefined,
'old noticesList should not exist',
);
assert.equal(
@ -157,22 +157,22 @@ describe('wallet1 is migrated successfully', function () {
.then((ninthResult) => {
assert.equal(
ninthResult.data.currentFiat,
null,
undefined,
'old currentFiat should not exist',
);
assert.equal(
ninthResult.data.fiatCurrency,
null,
undefined,
'old fiatCurrency should not exist',
);
assert.equal(
ninthResult.data.conversionRate,
null,
undefined,
'old conversionRate should not exist',
);
assert.equal(
ninthResult.data.conversionDate,
null,
undefined,
'old conversionDate should not exist',
);
@ -198,7 +198,7 @@ describe('wallet1 is migrated successfully', function () {
.then((tenthResult) => {
assert.equal(
tenthResult.data.shapeShiftTxList,
null,
undefined,
'old shapeShiftTxList should not exist',
);
assert.equal(
@ -211,12 +211,12 @@ describe('wallet1 is migrated successfully', function () {
.then((eleventhResult) => {
assert.equal(
eleventhResult.data.isDisclaimerConfirmed,
null,
undefined,
'isDisclaimerConfirmed should not exist',
);
assert.equal(
eleventhResult.data.TOSHash,
null,
undefined,
'TOSHash should not exist',
);

View File

@ -1,4 +1,4 @@
import assert from 'assert';
import { strict as assert } from 'assert';
import migrationTemplate from './template';
const storage = {

View File

@ -1,6 +1,6 @@
const fs = require('fs');
const path = require('path');
const { version } = require('../app/manifest/_base.json');
const { version } = require('../package.json');
const changelog = fs.readFileSync(
path.join(__dirname, '..', 'CHANGELOG.md'),

View File

@ -1,67 +0,0 @@
#!/usr/bin/env node
const fs = require('fs').promises;
const path = require('path');
const { version } = require('../app/manifest/_base.json');
const { updateChangelog } = require('./lib/changelog/updateChangelog');
const { unreleased } = require('./lib/changelog/constants');
const REPO_URL = 'https://github.com/MetaMask/metamask-extension';
const command = 'yarn update-changelog';
const helpText = `Usage: ${command} [--rc] [-h|--help]
Update CHANGELOG.md with any changes made since the most recent release.
Options:
--rc Add new changes to the current release header, rather than to the
'${unreleased}' section.
-h, --help Display this help and exit.
New commits will be added to the "${unreleased}" section (or to the section for the
current release if the '--rc' flag is used) in reverse chronological order. Any
commits for PRs that are represented already in the changelog will be ignored.
If the '--rc' flag is used and the section for the current release does not yet
exist, it will be created.
`;
async function main() {
const args = process.argv.slice(2);
let isReleaseCandidate = false;
for (const arg of args) {
if (arg === '--rc') {
isReleaseCandidate = true;
} else if (['--help', '-h'].includes(arg)) {
console.log(helpText);
process.exit(0);
} else {
console.error(
`Unrecognized argument: ${arg}\nTry '${command} --help' for more information.\n`,
);
process.exit(1);
}
}
const changelogFilename = path.resolve(__dirname, '..', 'CHANGELOG.md');
const changelogContent = await fs.readFile(changelogFilename, {
encoding: 'utf8',
});
const newChangelogContent = await updateChangelog({
changelogContent,
currentVersion: version,
repoUrl: REPO_URL,
isReleaseCandidate,
});
await fs.writeFile(changelogFilename, newChangelogContent);
console.log('CHANGELOG updated');
}
main().catch((error) => {
console.error(error);
process.exit(1);
});

View File

@ -4,7 +4,7 @@ const gulpZip = require('gulp-zip');
const del = require('del');
const pify = require('pify');
const pump = pify(require('pump'));
const baseManifest = require('../../app/manifest/_base.json');
const { version } = require('../../package.json');
const { createTask, composeParallel } = require('./task');
module.exports = createEtcTasks;
@ -38,7 +38,7 @@ function createZipTask(target) {
return async () => {
await pump(
gulp.src(`dist/${target}/**`),
gulpZip(`metamask-${target}-${baseManifest.version}.zip`),
gulpZip(`metamask-${target}-${version}.zip`),
gulp.dest('builds'),
);
};

View File

@ -3,6 +3,7 @@ const path = require('path');
const { merge, cloneDeep } = require('lodash');
const baseManifest = require('../../app/manifest/_base.json');
const { version } = require('../../package.json');
const { createTask, composeSeries } = require('./task');
@ -23,7 +24,11 @@ function createManifestTasks({ browserPlatforms }) {
`${platform}.json`,
),
);
const result = merge(cloneDeep(baseManifest), platformModifications);
const result = merge(
cloneDeep(baseManifest),
{ version },
platformModifications,
);
const dir = path.join('.', 'dist', platform);
await fs.mkdir(dir, { recursive: true });
await writeJson(result, path.join(dir, 'manifest.json'));

View File

@ -20,9 +20,12 @@ const metamaskrc = require('rc')('metamask', {
SEGMENT_HOST: process.env.SEGMENT_HOST,
SEGMENT_WRITE_KEY: process.env.SEGMENT_WRITE_KEY,
SEGMENT_LEGACY_WRITE_KEY: process.env.SEGMENT_LEGACY_WRITE_KEY,
SENTRY_DSN_DEV:
process.env.SENTRY_DSN_DEV ||
'https://f59f3dd640d2429d9d0e2445a87ea8e1@sentry.io/273496',
});
const baseManifest = require('../../app/manifest/_base.json');
const { version } = require('../../package.json');
const packageJSON = require('../../package.json');
const {
@ -424,13 +427,14 @@ function getEnvironmentVariables({ devMode, testing }) {
return {
METAMASK_DEBUG: devMode,
METAMASK_ENVIRONMENT: environment,
METAMASK_VERSION: baseManifest.version,
METAMASK_VERSION: version,
NODE_ENV: devMode ? 'development' : 'production',
IN_TEST: testing ? 'true' : false,
PUBNUB_SUB_KEY: process.env.PUBNUB_SUB_KEY || '',
PUBNUB_PUB_KEY: process.env.PUBNUB_PUB_KEY || '',
CONF: devMode ? metamaskrc : {},
SENTRY_DSN: process.env.SENTRY_DSN,
SENTRY_DSN_DEV: metamaskrc.SENTRY_DSN_DEV,
INFURA_PROJECT_ID: testing
? '00000000000000000000000000000000'
: metamaskrc.INFURA_PROJECT_ID,

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