From 9666eaba668f7b288c42366ba04add951e6aa3b5 Mon Sep 17 00:00:00 2001 From: hahnmichaelf Date: Sun, 12 Aug 2018 18:57:58 -0400 Subject: base - working. fixes #4774 --- app/phishing.html | 22 ++-------------------- app/scripts/contentscript.js | 2 +- app/scripts/esdb-replace.js | 5 +++++ 3 files changed, 8 insertions(+), 21 deletions(-) create mode 100644 app/scripts/esdb-replace.js (limited to 'app') diff --git a/app/phishing.html b/app/phishing.html index e20c9ac9c..588e8ea34 100644 --- a/app/phishing.html +++ b/app/phishing.html @@ -25,27 +25,8 @@ a { color: white; } - - - - + @@ -55,6 +36,7 @@

ATTENTION

MetaMask believes this domain could currently compromise your security and has prevented you from interacting with it.

This is because the site tested positive on the Ethereum Phishing Detector. This includes outright malicious websites and legitimate websites that have been compromised by a malicious actor.

+

You can turn MetaMask off to interact with this site, but it is advised not to.

If you think this domain is incorrectly flagged or if a blocked legitimate website has resolved its security issues, please file an issue.

diff --git a/app/scripts/contentscript.js b/app/scripts/contentscript.js index e0a2b0061..60ef97e5e 100644 --- a/app/scripts/contentscript.js +++ b/app/scripts/contentscript.js @@ -199,5 +199,5 @@ function blacklistedDomainCheck () { function redirectToPhishingWarning () { console.log('MetaMask - routing to Phishing Warning component') const extensionURL = extension.runtime.getURL('phishing.html') - window.location.href = extensionURL + window.location.href = extensionURL + "#" + window.location.hostname } diff --git a/app/scripts/esdb-replace.js b/app/scripts/esdb-replace.js new file mode 100644 index 000000000..ae5991586 --- /dev/null +++ b/app/scripts/esdb-replace.js @@ -0,0 +1,5 @@ +window.onload = function() { + if (window.location.pathname === "/phishing.html") { + document.getElementById("esdbLink").innerHTML = "To read more about this scam, navigate to: https://etherscamdb.info/domain/" + window.location.hash.substring(1) + "" + } +} -- cgit From 7d2d71bcbc9779b7a25f56a67264cac876356869 Mon Sep 17 00:00:00 2001 From: hahnmichaelf Date: Mon, 13 Aug 2018 12:40:16 -0400 Subject: change name --- app/phishing.html | 2 +- app/scripts/esdb-replace.js | 5 ----- app/scripts/phishing-detect.js | 5 +++++ 3 files changed, 6 insertions(+), 6 deletions(-) delete mode 100644 app/scripts/esdb-replace.js create mode 100644 app/scripts/phishing-detect.js (limited to 'app') diff --git a/app/phishing.html b/app/phishing.html index 588e8ea34..36a95b656 100644 --- a/app/phishing.html +++ b/app/phishing.html @@ -26,7 +26,7 @@ color: white; } - + diff --git a/app/scripts/esdb-replace.js b/app/scripts/esdb-replace.js deleted file mode 100644 index ae5991586..000000000 --- a/app/scripts/esdb-replace.js +++ /dev/null @@ -1,5 +0,0 @@ -window.onload = function() { - if (window.location.pathname === "/phishing.html") { - document.getElementById("esdbLink").innerHTML = "To read more about this scam, navigate to: https://etherscamdb.info/domain/" + window.location.hash.substring(1) + "" - } -} diff --git a/app/scripts/phishing-detect.js b/app/scripts/phishing-detect.js new file mode 100644 index 000000000..ae5991586 --- /dev/null +++ b/app/scripts/phishing-detect.js @@ -0,0 +1,5 @@ +window.onload = function() { + if (window.location.pathname === "/phishing.html") { + document.getElementById("esdbLink").innerHTML = "To read more about this scam, navigate to: https://etherscamdb.info/domain/" + window.location.hash.substring(1) + "" + } +} -- cgit From 8fb2dfe3d7c09b013c3e6a3458bf1d9608e48e9a Mon Sep 17 00:00:00 2001 From: hahnmichaelf Date: Mon, 13 Aug 2018 12:47:18 -0400 Subject: Re-added GA script --- app/phishing.html | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'app') diff --git a/app/phishing.html b/app/phishing.html index 36a95b656..e67dfd5f3 100644 --- a/app/phishing.html +++ b/app/phishing.html @@ -26,6 +26,25 @@ color: white; } + + + -- cgit From e454a5e0e883c3653c19e894e2757b79555263d5 Mon Sep 17 00:00:00 2001 From: hahnmichaelf Date: Mon, 13 Aug 2018 12:56:35 -0400 Subject: fixed names --- app/phishing.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/phishing.html b/app/phishing.html index e67dfd5f3..ab96063b5 100644 --- a/app/phishing.html +++ b/app/phishing.html @@ -45,7 +45,7 @@ ga('require', 'linker'); ga('linker:autoLink', ['harrydenley.com', 'metamask.io'], false, true); - + -- cgit From 4808ce25ebdc566a13acbb9cb1c6815368b7c4a1 Mon Sep 17 00:00:00 2001 From: hahnmichaelf Date: Mon, 13 Aug 2018 13:16:37 -0400 Subject: fix for lint-test --- app/scripts/contentscript.js | 2 +- app/scripts/phishing-detect.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'app') diff --git a/app/scripts/contentscript.js b/app/scripts/contentscript.js index 60ef97e5e..b6d5cfe9e 100644 --- a/app/scripts/contentscript.js +++ b/app/scripts/contentscript.js @@ -199,5 +199,5 @@ function blacklistedDomainCheck () { function redirectToPhishingWarning () { console.log('MetaMask - routing to Phishing Warning component') const extensionURL = extension.runtime.getURL('phishing.html') - window.location.href = extensionURL + "#" + window.location.hostname + window.location.href = extensionURL + '#' + window.location.hostname } diff --git a/app/scripts/phishing-detect.js b/app/scripts/phishing-detect.js index ae5991586..a66cdb5ac 100644 --- a/app/scripts/phishing-detect.js +++ b/app/scripts/phishing-detect.js @@ -1,5 +1,5 @@ window.onload = function() { - if (window.location.pathname === "/phishing.html") { - document.getElementById("esdbLink").innerHTML = "To read more about this scam, navigate to: https://etherscamdb.info/domain/" + window.location.hash.substring(1) + "" + if (window.location.pathname === '/phishing.html') { + document.getElementById("esdbLink").innerHTML = 'To read more about this scam, navigate to: https://etherscamdb.info/domain/' + window.location.hash.substring(1) + '' } } -- cgit From e19eb7bc035670d0f05e34840e6565bc1f907de3 Mon Sep 17 00:00:00 2001 From: hahnmichaelf Date: Mon, 13 Aug 2018 13:21:18 -0400 Subject: additional lint-test fix --- app/scripts/phishing-detect.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/scripts/phishing-detect.js b/app/scripts/phishing-detect.js index a66cdb5ac..4168b6618 100644 --- a/app/scripts/phishing-detect.js +++ b/app/scripts/phishing-detect.js @@ -1,5 +1,5 @@ window.onload = function() { if (window.location.pathname === '/phishing.html') { - document.getElementById("esdbLink").innerHTML = 'To read more about this scam, navigate to: https://etherscamdb.info/domain/' + window.location.hash.substring(1) + '' + document.getElementById('esdbLink').innerHTML = 'To read more about this scam, navigate to: https://etherscamdb.info/domain/' + window.location.hash.substring(1) + '' } } -- cgit From 7c3b69e1e495ed0d44cd1ed43db55828f3e05642 Mon Sep 17 00:00:00 2001 From: Whymarrh Whitby Date: Sat, 8 Sep 2018 19:59:50 -0230 Subject: Attach the RPC error value to txMeta --- app/scripts/controllers/transactions/tx-state-manager.js | 1 + 1 file changed, 1 insertion(+) (limited to 'app') diff --git a/app/scripts/controllers/transactions/tx-state-manager.js b/app/scripts/controllers/transactions/tx-state-manager.js index 28a18ca2e..daa6cc388 100644 --- a/app/scripts/controllers/transactions/tx-state-manager.js +++ b/app/scripts/controllers/transactions/tx-state-manager.js @@ -353,6 +353,7 @@ class TransactionStateManager extends EventEmitter { const txMeta = this.getTx(txId) txMeta.err = { message: err.toString(), + rpc: err.value, stack: err.stack, } this.updateTx(txMeta) -- cgit From ee568d5f5a3d04f32969fd2ba3113b9eeb175d63 Mon Sep 17 00:00:00 2001 From: Connor Christie Date: Sun, 9 Sep 2018 19:33:09 -0500 Subject: Upgrade obs-store and fix memory leaks --- app/scripts/metamask-controller.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'app') diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 98cb62bfa..1060f508a 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -177,7 +177,7 @@ module.exports = class MetamaskController extends EventEmitter { blockTracker: this.blockTracker, getGasPrice: this.getGasPrice.bind(this), }) - this.txController.on('newUnapprovedTx', opts.showUnapprovedTx.bind(opts)) + this.txController.on('newUnapprovedTx', () => opts.showUnapprovedTx()) this.txController.on(`tx:status-update`, (txId, status) => { if (status === 'confirmed' || status === 'failed') { @@ -1229,8 +1229,10 @@ module.exports = class MetamaskController extends EventEmitter { ) dnode.on('remote', (remote) => { // push updates to popup - const sendUpdate = remote.sendUpdate.bind(remote) + const sendUpdate = (update) => remote.sendUpdate(update) this.on('update', sendUpdate) + // remove update listener once the connection ends + dnode.on('end', () => this.removeListener('update', sendUpdate)) }) } @@ -1280,10 +1282,12 @@ module.exports = class MetamaskController extends EventEmitter { * @param {*} outStream - The stream to provide public config over. */ setupPublicConfig (outStream) { + const configStream = asStream(this.publicConfigStore) pump( - asStream(this.publicConfigStore), + configStream, outStream, (err) => { + configStream.destroy() if (err) log.error(err) } ) -- cgit From 43de189d067f8cf03cdd97380cbe2487319271eb Mon Sep 17 00:00:00 2001 From: Alexander Tseung Date: Sun, 9 Sep 2018 10:07:23 -0700 Subject: Add createCancelTransaction method --- app/scripts/controllers/transactions/enums.js | 12 +++++++ app/scripts/controllers/transactions/index.js | 49 +++++++++++++++++++++++++-- app/scripts/metamask-controller.js | 14 ++++++++ 3 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 app/scripts/controllers/transactions/enums.js (limited to 'app') diff --git a/app/scripts/controllers/transactions/enums.js b/app/scripts/controllers/transactions/enums.js new file mode 100644 index 000000000..be6f16e0d --- /dev/null +++ b/app/scripts/controllers/transactions/enums.js @@ -0,0 +1,12 @@ +const TRANSACTION_TYPE_CANCEL = 'cancel' +const TRANSACTION_TYPE_RETRY = 'retry' +const TRANSACTION_TYPE_STANDARD = 'standard' + +const TRANSACTION_STATUS_APPROVED = 'approved' + +module.exports = { + TRANSACTION_TYPE_CANCEL, + TRANSACTION_TYPE_RETRY, + TRANSACTION_TYPE_STANDARD, + TRANSACTION_STATUS_APPROVED, +} diff --git a/app/scripts/controllers/transactions/index.js b/app/scripts/controllers/transactions/index.js index 5d7d6d6da..59e30cdde 100644 --- a/app/scripts/controllers/transactions/index.js +++ b/app/scripts/controllers/transactions/index.js @@ -11,6 +11,14 @@ const txUtils = require('./lib/util') const cleanErrorStack = require('../../lib/cleanErrorStack') const log = require('loglevel') const recipientBlacklistChecker = require('./lib/recipient-blacklist-checker') +const { + TRANSACTION_TYPE_CANCEL, + TRANSACTION_TYPE_RETRY, + TRANSACTION_TYPE_STANDARD, + TRANSACTION_STATUS_APPROVED, +} = require('./enums') + +const { hexToBn, bnToHex } = require('../../lib/util') /** Transaction Controller is an aggregate of sub-controllers and trackers @@ -160,7 +168,10 @@ class TransactionController extends EventEmitter { const normalizedTxParams = txUtils.normalizeTxParams(txParams) txUtils.validateTxParams(normalizedTxParams) // construct txMeta - let txMeta = this.txStateManager.generateTxMeta({ txParams: normalizedTxParams }) + let txMeta = this.txStateManager.generateTxMeta({ + txParams: normalizedTxParams, + type: TRANSACTION_TYPE_STANDARD, + }) this.addTx(txMeta) this.emit('newUnapprovedTx', txMeta) @@ -214,12 +225,46 @@ class TransactionController extends EventEmitter { txParams: originalTxMeta.txParams, lastGasPrice, loadingDefaults: false, + type: TRANSACTION_TYPE_RETRY, }) this.addTx(txMeta) this.emit('newUnapprovedTx', txMeta) return txMeta } + /** + * Creates a new approved transaction to attempt to cancel a previously submitted transaction. The + * new transaction contains the same nonce as the previous, is a basic ETH transfer of 0x value to + * the sender's address, and has a higher gasPrice than that of the previous transaction. + * @param {number} originalTxId - the id of the txMeta that you want to attempt to cancel + * @param {string=} customGasPrice - the hex value to use for the cancel transaction + * @returns {txMeta} + */ + async createCancelTransaction (originalTxId, customGasPrice) { + const originalTxMeta = this.txStateManager.getTx(originalTxId) + const { txParams } = originalTxMeta + const { gasPrice: lastGasPrice, from, nonce } = txParams + const newGasPrice = customGasPrice || bnToHex(hexToBn(lastGasPrice).mul(1.1)) + const newTxMeta = this.txStateManager.generateTxMeta({ + txParams: { + from, + to: from, + nonce, + gas: '0x5208', + value: '0x0', + gasPrice: newGasPrice, + }, + lastGasPrice, + loadingDefaults: false, + status: TRANSACTION_STATUS_APPROVED, + type: TRANSACTION_TYPE_CANCEL, + }) + + this.addTx(newTxMeta) + await this.approveTransaction(newTxMeta.id) + return newTxMeta + } + /** updates the txMeta in the txStateManager @param txMeta {Object} - the updated txMeta @@ -393,7 +438,7 @@ class TransactionController extends EventEmitter { }) this.txStateManager.getFilteredTxList({ - status: 'approved', + status: TRANSACTION_STATUS_APPROVED, }).forEach((txMeta) => { const txSignError = new Error('Transaction found as "approved" during boot - possibly stuck during signing') this.txStateManager.setTxStatusFailed(txMeta.id, txSignError) diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 98cb62bfa..9b373de9b 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -407,6 +407,7 @@ module.exports = class MetamaskController extends EventEmitter { updateTransaction: nodeify(txController.updateTransaction, txController), updateAndApproveTransaction: nodeify(txController.updateAndApproveTransaction, txController), retryTransaction: nodeify(this.retryTransaction, this), + createCancelTransaction: nodeify(this.createCancelTransaction, this), getFilteredTxList: nodeify(txController.getFilteredTxList, txController), isNonceTaken: nodeify(txController.isNonceTaken, txController), estimateGas: nodeify(this.estimateGas, this), @@ -1109,6 +1110,19 @@ module.exports = class MetamaskController extends EventEmitter { return state } + /** + * Allows a user to attempt to cancel a previously submitted transaction by creating a new + * transaction. + * @param {number} originalTxId - the id of the txMeta that you want to attempt to cancel + * @param {string=} customGasPrice - the hex value to use for the cancel transaction + * @returns {object} MetaMask state + */ + async createCancelTransaction (originalTxId, customGasPrice, cb) { + await this.txController.createCancelTransaction(originalTxId, customGasPrice) + const state = await this.getState() + return state + } + estimateGas (estimateGasParams) { return new Promise((resolve, reject) => { return this.txController.txGasUtil.query.estimateGas(estimateGasParams, (err, res) => { -- cgit From eb32ccb0c77c6e480c93f02c29faafec3cd93ec0 Mon Sep 17 00:00:00 2001 From: Dan Miller Date: Tue, 11 Sep 2018 12:51:49 -0230 Subject: Ensure account-tracker currentBlockNumber is set on first block update. --- app/scripts/lib/account-tracker.js | 3 +++ 1 file changed, 3 insertions(+) (limited to 'app') diff --git a/app/scripts/lib/account-tracker.js b/app/scripts/lib/account-tracker.js index 3a52d5e8d..2e9340018 100644 --- a/app/scripts/lib/account-tracker.js +++ b/app/scripts/lib/account-tracker.js @@ -45,6 +45,9 @@ class AccountTracker { this._blockTracker = opts.blockTracker // blockTracker.currentBlock may be null this._currentBlockNumber = this._blockTracker.getCurrentBlock() + this._blockTracker.once('latest', blockNumber => { + this._currentBlockNumber = blockNumber + }) // bind function for easier listener syntax this._updateForBlock = this._updateForBlock.bind(this) } -- cgit From d60991ec88fe88be4041eb4a9392df6dfc1aa973 Mon Sep 17 00:00:00 2001 From: Whymarrh Whitby Date: Mon, 10 Sep 2018 17:01:15 -0700 Subject: Delete ConfigManager, replacing its usages with PreferencesController --- app/scripts/controllers/preferences.js | 18 +++ app/scripts/lib/config-manager.js | 254 ------------------------------- app/scripts/metamask-controller.js | 46 ++---- app/scripts/migrations/_multi-keyring.js | 50 ------ 4 files changed, 27 insertions(+), 341 deletions(-) delete mode 100644 app/scripts/lib/config-manager.js delete mode 100644 app/scripts/migrations/_multi-keyring.js (limited to 'app') diff --git a/app/scripts/controllers/preferences.js b/app/scripts/controllers/preferences.js index 464a37017..928ebdf1f 100644 --- a/app/scripts/controllers/preferences.js +++ b/app/scripts/controllers/preferences.js @@ -36,6 +36,8 @@ class PreferencesController { currentLocale: opts.initLangCode, identities: {}, lostIdentities: {}, + seedWords: null, + forgottenPassword: false, }, opts.initState) this.diagnostics = opts.diagnostics @@ -46,6 +48,22 @@ class PreferencesController { } // PUBLIC METHODS + /** + * Sets the {@code forgottenPassword} state property + * @param {boolean} forgottenPassword whether or not the user has forgotten their password + */ + setPasswordForgotten (forgottenPassword) { + this.store.updateState({ forgottenPassword }) + } + + /** + * Sets the {@code seedWords} seed words + * @param {string|null} seedWords the seed words + */ + setSeedWords (seedWords) { + this.store.updateState({ seedWords }) + } + /** * Setter for the `useBlockie` property * diff --git a/app/scripts/lib/config-manager.js b/app/scripts/lib/config-manager.js deleted file mode 100644 index 221746467..000000000 --- a/app/scripts/lib/config-manager.js +++ /dev/null @@ -1,254 +0,0 @@ -const ethUtil = require('ethereumjs-util') -const normalize = require('eth-sig-util').normalize -const { - MAINNET_RPC_URL, - ROPSTEN_RPC_URL, - KOVAN_RPC_URL, - RINKEBY_RPC_URL, -} = require('../controllers/network/enums') - -/* The config-manager is a convenience object - * wrapping a pojo-migrator. - * - * It exists mostly to allow the creation of - * convenience methods to access and persist - * particular portions of the state. - */ -module.exports = ConfigManager -function ConfigManager (opts) { - // ConfigManager is observable and will emit updates - this._subs = [] - this.store = opts.store -} - -ConfigManager.prototype.setConfig = function (config) { - var data = this.getData() - data.config = config - this.setData(data) - this._emitUpdates(config) -} - -ConfigManager.prototype.getConfig = function () { - var data = this.getData() - return data.config -} - -ConfigManager.prototype.setData = function (data) { - this.store.putState(data) -} - -ConfigManager.prototype.getData = function () { - return this.store.getState() -} - -ConfigManager.prototype.setPasswordForgotten = function (passwordForgottenState) { - const data = this.getData() - data.forgottenPassword = passwordForgottenState - this.setData(data) -} - -ConfigManager.prototype.getPasswordForgotten = function (passwordForgottenState) { - const data = this.getData() - return data.forgottenPassword -} - -ConfigManager.prototype.setWallet = function (wallet) { - var data = this.getData() - data.wallet = wallet - this.setData(data) -} - -ConfigManager.prototype.setVault = function (encryptedString) { - var data = this.getData() - data.vault = encryptedString - this.setData(data) -} - -ConfigManager.prototype.getVault = function () { - var data = this.getData() - return data.vault -} - -ConfigManager.prototype.getKeychains = function () { - return this.getData().keychains || [] -} - -ConfigManager.prototype.setKeychains = function (keychains) { - var data = this.getData() - data.keychains = keychains - this.setData(data) -} - -ConfigManager.prototype.getSelectedAccount = function () { - var config = this.getConfig() - return config.selectedAccount -} - -ConfigManager.prototype.setSelectedAccount = function (address) { - var config = this.getConfig() - config.selectedAccount = ethUtil.addHexPrefix(address) - this.setConfig(config) -} - -ConfigManager.prototype.getWallet = function () { - return this.getData().wallet -} - -// Takes a boolean -ConfigManager.prototype.setShowSeedWords = function (should) { - var data = this.getData() - data.showSeedWords = should - this.setData(data) -} - - -ConfigManager.prototype.getShouldShowSeedWords = function () { - var data = this.getData() - return data.showSeedWords -} - -ConfigManager.prototype.setSeedWords = function (words) { - var data = this.getData() - data.seedWords = words - this.setData(data) -} - -ConfigManager.prototype.getSeedWords = function () { - var data = this.getData() - return data.seedWords -} -ConfigManager.prototype.setRpcTarget = function (rpcUrl) { - var config = this.getConfig() - config.provider = { - type: 'rpc', - rpcTarget: rpcUrl, - } - this.setConfig(config) -} - -ConfigManager.prototype.setProviderType = function (type) { - var config = this.getConfig() - config.provider = { - type: type, - } - this.setConfig(config) -} - -ConfigManager.prototype.useEtherscanProvider = function () { - var config = this.getConfig() - config.provider = { - type: 'etherscan', - } - this.setConfig(config) -} - -ConfigManager.prototype.getProvider = function () { - var config = this.getConfig() - return config.provider -} - -ConfigManager.prototype.getCurrentRpcAddress = function () { - var provider = this.getProvider() - if (!provider) return null - switch (provider.type) { - - case 'mainnet': - return MAINNET_RPC_URL - - case 'ropsten': - return ROPSTEN_RPC_URL - - case 'kovan': - return KOVAN_RPC_URL - - case 'rinkeby': - return RINKEBY_RPC_URL - - default: - return provider && provider.rpcTarget ? provider.rpcTarget : RINKEBY_RPC_URL - } -} - -// -// Tx -// - -ConfigManager.prototype.getTxList = function () { - var data = this.getData() - if (data.transactions !== undefined) { - return data.transactions - } else { - return [] - } -} - -ConfigManager.prototype.setTxList = function (txList) { - var data = this.getData() - data.transactions = txList - this.setData(data) -} - - -// wallet nickname methods - -ConfigManager.prototype.getWalletNicknames = function () { - var data = this.getData() - const nicknames = ('walletNicknames' in data) ? data.walletNicknames : {} - return nicknames -} - -ConfigManager.prototype.nicknameForWallet = function (account) { - const address = normalize(account) - const nicknames = this.getWalletNicknames() - return nicknames[address] -} - -ConfigManager.prototype.setNicknameForWallet = function (account, nickname) { - const address = normalize(account) - const nicknames = this.getWalletNicknames() - nicknames[address] = nickname - var data = this.getData() - data.walletNicknames = nicknames - this.setData(data) -} - -// observable - -ConfigManager.prototype.getSalt = function () { - var data = this.getData() - return data.salt -} - -ConfigManager.prototype.setSalt = function (salt) { - var data = this.getData() - data.salt = salt - this.setData(data) -} - -ConfigManager.prototype.subscribe = function (fn) { - this._subs.push(fn) - var unsubscribe = this.unsubscribe.bind(this, fn) - return unsubscribe -} - -ConfigManager.prototype.unsubscribe = function (fn) { - var index = this._subs.indexOf(fn) - if (index !== -1) this._subs.splice(index, 1) -} - -ConfigManager.prototype._emitUpdates = function (state) { - this._subs.forEach(function (handler) { - handler(state) - }) -} - -ConfigManager.prototype.setLostAccounts = function (lostAccounts) { - var data = this.getData() - data.lostAccounts = lostAccounts - this.setData(data) -} - -ConfigManager.prototype.getLostAccounts = function () { - var data = this.getData() - return data.lostAccounts || [] -} diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 3ab256314..f9a12628b 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -36,7 +36,6 @@ const TransactionController = require('./controllers/transactions') const BalancesController = require('./controllers/computed-balances') const TokenRatesController = require('./controllers/token-rates') const DetectTokensController = require('./controllers/detect-tokens') -const ConfigManager = require('./lib/config-manager') const nodeify = require('./lib/nodeify') const accountImporter = require('./account-import-strategies') const getBuyEthUrl = require('./lib/buy-eth-url') @@ -83,11 +82,6 @@ module.exports = class MetamaskController extends EventEmitter { // network store this.networkController = new NetworkController(initState.NetworkController) - // config manager - this.configManager = new ConfigManager({ - store: this.store, - }) - // preferences controller this.preferencesController = new PreferencesController({ initState: initState.PreferencesController, @@ -314,18 +308,15 @@ module.exports = class MetamaskController extends EventEmitter { * @returns {Object} status */ getState () { - const wallet = this.configManager.getWallet() const vault = this.keyringController.store.getState().vault - const isInitialized = (!!wallet || !!vault) + const isInitialized = !!vault return { ...{ isInitialized }, ...this.memStore.getFlatState(), - ...this.configManager.getConfig(), ...{ - lostAccounts: this.configManager.getLostAccounts(), - seedWords: this.configManager.getSeedWords(), - forgottenPassword: this.configManager.getPasswordForgotten(), + // TODO: Remove usages of lost accounts + lostAccounts: [], }, } } @@ -727,7 +718,7 @@ module.exports = class MetamaskController extends EventEmitter { this.verifySeedPhrase() .then((seedWords) => { - this.configManager.setSeedWords(seedWords) + this.preferencesController.setSeedWords(seedWords) return cb(null, seedWords) }) .catch((err) => { @@ -776,7 +767,7 @@ module.exports = class MetamaskController extends EventEmitter { * @param {function} cb Callback function called with the current address. */ clearSeedWordCache (cb) { - this.configManager.setSeedWords(null) + this.preferencesController.setSeedWords(null) cb(null, this.preferencesController.getSelectedAddress()) } @@ -1037,35 +1028,16 @@ module.exports = class MetamaskController extends EventEmitter { /** * A legacy method used to record user confirmation that they understand * that some of their accounts have been recovered but should be backed up. + * This function no longer does anything and will be removed. * * @deprecated * @param {Function} cb - A callback function called with a full state update. */ markAccountsFound (cb) { - this.configManager.setLostAccounts([]) - this.sendUpdate() + // TODO Remove me cb(null, this.getState()) } - /** - * A legacy method (probably dead code) that was used when we swapped out our - * key management library that we depended on. - * - * Described in: - * https://medium.com/metamask/metamask-3-migration-guide-914b79533cdd - * - * @deprecated - * @param {} migratorOutput - */ - restoreOldLostAccounts (migratorOutput) { - const { lostAccounts } = migratorOutput - if (lostAccounts) { - this.configManager.setLostAccounts(lostAccounts.map(acct => acct.address)) - return this.importLostAccounts(migratorOutput) - } - return Promise.resolve(migratorOutput) - } - /** * An account object * @typedef Account @@ -1144,7 +1116,7 @@ module.exports = class MetamaskController extends EventEmitter { * @param {Function} cb - A callback function called when complete. */ markPasswordForgotten (cb) { - this.configManager.setPasswordForgotten(true) + this.preferencesController.setPasswordForgotten(true) this.sendUpdate() cb() } @@ -1154,7 +1126,7 @@ module.exports = class MetamaskController extends EventEmitter { * @param {Function} cb - A callback function called when complete. */ unMarkPasswordForgotten (cb) { - this.configManager.setPasswordForgotten(false) + this.preferencesController.setPasswordForgotten(false) this.sendUpdate() cb() } diff --git a/app/scripts/migrations/_multi-keyring.js b/app/scripts/migrations/_multi-keyring.js deleted file mode 100644 index 7a4578ea7..000000000 --- a/app/scripts/migrations/_multi-keyring.js +++ /dev/null @@ -1,50 +0,0 @@ -const version = 5 - -/* - -This is an incomplete migration bc it requires post-decrypted data -which we dont have access to at the time of this writing. - -*/ - -const ObservableStore = require('obs-store') -const ConfigManager = require('../../app/scripts/lib/config-manager') -const IdentityStoreMigrator = require('../../app/scripts/lib/idStore-migrator') -const KeyringController = require('eth-keyring-controller') - -const password = 'obviously not correct' - -module.exports = { - version, - - migrate: function (versionedData) { - versionedData.meta.version = version - - const store = new ObservableStore(versionedData.data) - const configManager = new ConfigManager({ store }) - const idStoreMigrator = new IdentityStoreMigrator({ configManager }) - const keyringController = new KeyringController({ - configManager: configManager, - }) - - // attempt to migrate to multiVault - return idStoreMigrator.migratedVaultForPassword(password) - .then((result) => { - // skip if nothing to migrate - if (!result) return Promise.resolve(versionedData) - delete versionedData.data.wallet - // create new keyrings - const privKeys = result.lostAccounts.map(acct => acct.privateKey) - return Promise.all([ - keyringController.restoreKeyring(result.serialized), - keyringController.restoreKeyring({ type: 'Simple Key Pair', data: privKeys }), - ]).then(() => { - return keyringController.persistAllKeyrings(password) - }).then(() => { - // copy result on to state object - versionedData.data = store.get() - return Promise.resolve(versionedData) - }) - }) - }, -} -- cgit From 13bc46d8243b434268db04b58500720b4884a969 Mon Sep 17 00:00:00 2001 From: Whymarrh Whitby Date: Tue, 11 Sep 2018 12:12:35 -0700 Subject: Default NoticeController ctor opts to empty obj --- app/scripts/notice-controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/scripts/notice-controller.js b/app/scripts/notice-controller.js index 2def4371e..ce686d9d1 100644 --- a/app/scripts/notice-controller.js +++ b/app/scripts/notice-controller.js @@ -7,7 +7,7 @@ const uniqBy = require('lodash.uniqby') module.exports = class NoticeController extends EventEmitter { - constructor (opts) { + constructor (opts = {}) { super() this.noticePoller = null this.firstVersion = opts.firstVersion -- cgit From 930dac110aa9127380673e119b0eaab9d45b1198 Mon Sep 17 00:00:00 2001 From: Alexander Tseung Date: Sat, 25 Aug 2018 18:00:38 -0700 Subject: Add ActivityLog component --- app/_locales/en/messages.json | 3 +++ 1 file changed, 3 insertions(+) (limited to 'app') diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 14e867b33..ad276306f 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -17,6 +17,9 @@ "accountSelectionRequired": { "message": "You need to select an account!" }, + "activityLog": { + "message": "activity log" + }, "address": { "message": "Address" }, -- cgit From 084158f1a2af9d117c054420e895f4ae76a94df0 Mon Sep 17 00:00:00 2001 From: Alexander Tseung Date: Fri, 31 Aug 2018 12:34:22 -0700 Subject: Add tests for TransactionActivityLog. Make changes to rendering events --- app/_locales/en/messages.json | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'app') diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index ad276306f..dc5f5dc58 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -860,6 +860,9 @@ "save": { "message": "Save" }, + "speedUp": { + "message": "speed up" + }, "speedUpTitle": { "message": "Speed Up Transaction" }, @@ -1088,6 +1091,24 @@ "total": { "message": "Total" }, + "transaction": { + "message": "transaction" + }, + "transactionConfirmed": { + "message": "Transaction confirmed." + }, + "transactionCreated": { + "message": "Transaction created with a value of $1." + }, + "transactionDropped": { + "message": "Transaction dropped." + }, + "transactionSubmitted": { + "message": "Transaction submitted." + }, + "transactionUpdatedGas": { + "message": "Transaction updated with a gas price of $1." + }, "transactions": { "message": "transactions" }, @@ -1134,6 +1155,9 @@ "unavailable": { "message": "Unavailable" }, + "units": { + "message": "units" + }, "unknown": { "message": "Unknown" }, -- cgit From 5beb34aa521efe50057b494ec3b52004a9cb5817 Mon Sep 17 00:00:00 2001 From: Alexander Tseung Date: Fri, 31 Aug 2018 12:36:36 -0700 Subject: Add TransactionListItemDetails component --- app/images/arrow-popout.svg | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 app/images/arrow-popout.svg (limited to 'app') diff --git a/app/images/arrow-popout.svg b/app/images/arrow-popout.svg new file mode 100644 index 000000000..7e25f7cd2 --- /dev/null +++ b/app/images/arrow-popout.svg @@ -0,0 +1,3 @@ + + + -- cgit From f1a309e0cc110060cc56252ec5f7626ca6403fab Mon Sep 17 00:00:00 2001 From: Alexander Tseung Date: Fri, 7 Sep 2018 13:59:05 -0700 Subject: Fix identicon address. Fix styling of New Contract recipient. Fix Activity Log initial ETH value. Add timestamps to Activity Log events --- app/_locales/en/messages.json | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'app') diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index dc5f5dc58..2cfd15f50 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -1095,19 +1095,22 @@ "message": "transaction" }, "transactionConfirmed": { - "message": "Transaction confirmed." + "message": "Transaction confirmed on $2." }, "transactionCreated": { - "message": "Transaction created with a value of $1." + "message": "Transaction created with a value of $1 on $2." }, "transactionDropped": { - "message": "Transaction dropped." + "message": "Transaction dropped on $2." }, "transactionSubmitted": { - "message": "Transaction submitted." + "message": "Transaction submitted on $2." + }, + "transactionUpdated": { + "message": "Transaction updated on $2." }, "transactionUpdatedGas": { - "message": "Transaction updated with a gas price of $1." + "message": "Transaction updated with a gas price of $1 on $2." }, "transactions": { "message": "transactions" -- cgit From 36dd0354e777e6786ae0d2284ffcb1adbc6d85f7 Mon Sep 17 00:00:00 2001 From: bitpshr Date: Mon, 10 Sep 2018 17:11:57 -0400 Subject: Implement latest EIP-712 protocol --- app/scripts/lib/typed-message-manager.js | 74 +++++++++++++++++++++--------- app/scripts/metamask-controller.js | 77 +++++++++++++++++++++++++------- 2 files changed, 112 insertions(+), 39 deletions(-) (limited to 'app') diff --git a/app/scripts/lib/typed-message-manager.js b/app/scripts/lib/typed-message-manager.js index e5e1c94b3..3e97023f5 100644 --- a/app/scripts/lib/typed-message-manager.js +++ b/app/scripts/lib/typed-message-manager.js @@ -4,6 +4,7 @@ const createId = require('./random-id') const assert = require('assert') const sigUtil = require('eth-sig-util') const log = require('loglevel') +const jsonschema = require('jsonschema') /** * Represents, and contains data about, an 'eth_signTypedData' type signature request. These are created when a @@ -17,7 +18,7 @@ const log = require('loglevel') * @property {Object} msgParams.from The address that is making the signature request. * @property {string} msgParams.data A hex string conversion of the raw buffer data of the signature request * @property {number} time The epoch time at which the this message was created - * @property {string} status Indicates whether the signature request is 'unapproved', 'approved', 'signed' or 'rejected' + * @property {string} status Indicates whether the signature request is 'unapproved', 'approved', 'signed', 'rejected', or 'errored' * @property {string} type The json-prc signing method for which a signature request has been made. A 'Message' will * always have a 'eth_signTypedData' type. * @@ -26,17 +27,10 @@ const log = require('loglevel') module.exports = class TypedMessageManager extends EventEmitter { /** * Controller in charge of managing - storing, adding, removing, updating - TypedMessage. - * - * @typedef {Object} TypedMessage - * @param {Object} opts @deprecated - * @property {Object} memStore The observable store where TypedMessage are saved. - * @property {Object} memStore.unapprovedTypedMessages A collection of all TypedMessages in the 'unapproved' state - * @property {number} memStore.unapprovedTypedMessagesCount The count of all TypedMessages in this.memStore.unapprobedMsgs - * @property {array} messages Holds all messages that have been created by this TypedMessage - * */ - constructor (opts) { + constructor ({ networkController }) { super() + this.networkController = networkController this.memStore = new ObservableStore({ unapprovedTypedMessages: {}, unapprovedTypedMessagesCount: 0, @@ -76,15 +70,17 @@ module.exports = class TypedMessageManager extends EventEmitter { * @returns {promise} When the message has been signed or rejected * */ - addUnapprovedMessageAsync (msgParams, req) { + addUnapprovedMessageAsync (msgParams, req, version) { return new Promise((resolve, reject) => { - const msgId = this.addUnapprovedMessage(msgParams, req) + const msgId = this.addUnapprovedMessage(msgParams, req, version) this.once(`${msgId}:finished`, (data) => { switch (data.status) { case 'signed': return resolve(data.rawSig) case 'rejected': return reject(new Error('MetaMask Message Signature: User denied message signature.')) + case 'errored': + return reject(new Error(`MetaMask Message Signature: ${data.error}`)) default: return reject(new Error(`MetaMask Message Signature: Unknown problem: ${JSON.stringify(msgParams)}`)) } @@ -102,7 +98,8 @@ module.exports = class TypedMessageManager extends EventEmitter { * @returns {number} The id of the newly created TypedMessage. * */ - addUnapprovedMessage (msgParams, req) { + addUnapprovedMessage (msgParams, req, version) { + msgParams.version = version this.validateParams(msgParams) // add origin from request if (req) msgParams.origin = req.origin @@ -132,14 +129,33 @@ module.exports = class TypedMessageManager extends EventEmitter { * */ validateParams (params) { - assert.equal(typeof params, 'object', 'Params should ben an object.') - assert.ok('data' in params, 'Params must include a data field.') - assert.ok('from' in params, 'Params must include a from field.') - assert.ok(Array.isArray(params.data), 'Data should be an array.') - assert.equal(typeof params.from, 'string', 'From field must be a string.') - assert.doesNotThrow(() => { - sigUtil.typedSignatureHash(params.data) - }, 'Expected EIP712 typed data') + switch (params.version) { + case 'V1': + assert.equal(typeof params, 'object', 'Params should ben an object.') + assert.ok('data' in params, 'Params must include a data field.') + assert.ok('from' in params, 'Params must include a from field.') + assert.ok(Array.isArray(params.data), 'Data should be an array.') + assert.equal(typeof params.from, 'string', 'From field must be a string.') + assert.doesNotThrow(() => { + sigUtil.typedSignatureHash(params.data) + }, 'Expected EIP712 typed data') + break + case 'V2': + let data + assert.equal(typeof params, 'object', 'Params should be an object.') + assert.ok('data' in params, 'Params must include a data field.') + assert.ok('from' in params, 'Params must include a from field.') + assert.equal(typeof params.from, 'string', 'From field must be a string.') + assert.equal(typeof params.data, 'string', 'Data must be passed as a valid JSON string.') + assert.doesNotThrow(() => { data = JSON.parse(params.data) }, 'Data must be passed as a valid JSON string.') + const validation = jsonschema.validate(data, sigUtil.TYPED_MESSAGE_SCHEMA) + assert.ok(data.primaryType in data.types, `Primary type of "${data.primaryType}" has no type definition.`) + assert.equal(validation.errors.length, 0, 'Data must conform to EIP-712 schema. See https://git.io/fNtcx.') + const chainId = data.domain.chainId + const activeChainId = parseInt(this.networkController.getNetworkState()) + chainId && assert.equal(chainId, activeChainId, `Provided chainId (${activeChainId}) must match the active chainId (${activeChainId})`) + break + } } /** @@ -214,6 +230,7 @@ module.exports = class TypedMessageManager extends EventEmitter { */ prepMsgForSigning (msgParams) { delete msgParams.metamaskId + delete msgParams.version return Promise.resolve(msgParams) } @@ -227,6 +244,19 @@ module.exports = class TypedMessageManager extends EventEmitter { this._setMsgStatus(msgId, 'rejected') } + /** + * Sets a TypedMessage status to 'errored' via a call to this._setMsgStatus. + * + * @param {number} msgId The id of the TypedMessage to error + * + */ + errorMessage (msgId, error) { + const msg = this.getMsg(msgId) + msg.error = error + this._updateMsg(msg) + this._setMsgStatus(msgId, 'errored') + } + // // PRIVATE METHODS // @@ -250,7 +280,7 @@ module.exports = class TypedMessageManager extends EventEmitter { msg.status = status this._updateMsg(msg) this.emit(`${msgId}:${status}`, msg) - if (status === 'rejected' || status === 'signed') { + if (status === 'rejected' || status === 'signed' || status === 'errored') { this.emit(`${msgId}:finished`, msg) } } diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index f9a12628b..d5005d977 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -49,6 +49,8 @@ const log = require('loglevel') const TrezorKeyring = require('eth-trezor-keyring') const LedgerBridgeKeyring = require('eth-ledger-bridge-keyring') const EthQuery = require('eth-query') +const ethUtil = require('ethereumjs-util') +const sigUtil = require('eth-sig-util') module.exports = class MetamaskController extends EventEmitter { @@ -205,7 +207,7 @@ module.exports = class MetamaskController extends EventEmitter { this.networkController.lookupNetwork() this.messageManager = new MessageManager() this.personalMessageManager = new PersonalMessageManager() - this.typedMessageManager = new TypedMessageManager() + this.typedMessageManager = new TypedMessageManager({ networkController: this.networkController }) this.publicConfigStore = this.initPublicConfigStore() this.store.updateStructure({ @@ -266,7 +268,6 @@ module.exports = class MetamaskController extends EventEmitter { // msg signing processEthSignMessage: this.newUnsignedMessage.bind(this), processPersonalMessage: this.newUnsignedPersonalMessage.bind(this), - processTypedMessage: this.newUnsignedTypedMessage.bind(this), } const providerProxy = this.networkController.initializeProvider(providerOpts) return providerProxy @@ -975,22 +976,31 @@ module.exports = class MetamaskController extends EventEmitter { * @param {Object} msgParams - The params passed to eth_signTypedData. * @returns {Object} Full state update. */ - signTypedMessage (msgParams) { - log.info('MetaMaskController - signTypedMessage') + async signTypedMessage (msgParams) { + log.info('MetaMaskController - eth_signTypedData') const msgId = msgParams.metamaskId - // sets the status op the message to 'approved' - // and removes the metamaskId for signing - return this.typedMessageManager.approveMessage(msgParams) - .then((cleanMsgParams) => { - // signs the message - return this.keyringController.signTypedMessage(cleanMsgParams) - }) - .then((rawSig) => { - // tells the listener that the message has been signed - // and can be returned to the dapp - this.typedMessageManager.setMsgStatusSigned(msgId, rawSig) - return this.getState() - }) + const version = msgParams.version + try { + const cleanMsgParams = await this.typedMessageManager.approveMessage(msgParams) + const address = sigUtil.normalize(cleanMsgParams.from) + const keyring = await this.keyringController.getKeyringForAccount(address) + const wallet = keyring._getWalletForAccount(address) + const privKey = ethUtil.toBuffer(wallet.getPrivateKey()) + let signature + switch (version) { + case 'V1': + signature = sigUtil.signTypedDataLegacy(privKey, { data: cleanMsgParams.data }) + break + case 'V2': + signature = sigUtil.signTypedData(privKey, { data: JSON.parse(cleanMsgParams.data) }) + break + } + this.typedMessageManager.setMsgStatusSigned(msgId, signature) + return this.getState() + } catch (error) { + log.info('MetaMaskController - eth_signTypedData failed.', error) + this.typedMessageManager.errorMessage(msgId, error) + } } /** @@ -1241,6 +1251,9 @@ module.exports = class MetamaskController extends EventEmitter { engine.push(createLoggerMiddleware({ origin })) engine.push(filterMiddleware) engine.push(this.preferencesController.requestWatchAsset.bind(this.preferencesController)) + engine.push(this.createTypedDataMiddleware('eth_signTypedData', 'V1').bind(this)) + engine.push(this.createTypedDataMiddleware('eth_signTypedData_v1', 'V1').bind(this)) + engine.push(this.createTypedDataMiddleware('eth_signTypedData_v2', 'V2').bind(this)) engine.push(createProviderMiddleware({ provider: this.provider })) // setup connection @@ -1474,4 +1487,34 @@ module.exports = class MetamaskController extends EventEmitter { set isClientOpenAndUnlocked (active) { this.tokenRatesController.isActive = active } + + /** + * Creates RPC engine middleware for processing eth_signTypedData requests + * + * @param {Object} req - request object + * @param {Object} res - response object + * @param {Function} - next + * @param {Function} - end + */ + createTypedDataMiddleware (methodName, version) { + return async (req, res, next, end) => { + const { method, params } = req + if (method === methodName) { + const promise = this.typedMessageManager.addUnapprovedMessageAsync({ + data: params.length >= 1 && params[0], + from: params.length >= 2 && params[1], + }, req, version) + this.sendUpdate() + this.opts.showUnconfirmedMessage() + try { + res.result = await promise + end() + } catch (error) { + end(error) + } + } else { + next() + } + } + } } -- cgit From 68c25542965ae89badc284bf30e1f426f27aa5ae Mon Sep 17 00:00:00 2001 From: bitpshr Date: Tue, 11 Sep 2018 09:33:37 -0400 Subject: Update error message for chainId mis-match --- app/scripts/lib/typed-message-manager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/scripts/lib/typed-message-manager.js b/app/scripts/lib/typed-message-manager.js index 3e97023f5..01e1c9331 100644 --- a/app/scripts/lib/typed-message-manager.js +++ b/app/scripts/lib/typed-message-manager.js @@ -153,7 +153,7 @@ module.exports = class TypedMessageManager extends EventEmitter { assert.equal(validation.errors.length, 0, 'Data must conform to EIP-712 schema. See https://git.io/fNtcx.') const chainId = data.domain.chainId const activeChainId = parseInt(this.networkController.getNetworkState()) - chainId && assert.equal(chainId, activeChainId, `Provided chainId (${activeChainId}) must match the active chainId (${activeChainId})`) + chainId && assert.equal(chainId, activeChainId, `Provided chainId (${chainId}) must match the active chainId (${activeChainId})`) break } } -- cgit From 42fdcf6239fc9278cfa85b6ae6cc025cef0e35ae Mon Sep 17 00:00:00 2001 From: bitpshr Date: Thu, 13 Sep 2018 15:12:08 -0400 Subject: Update new method namespace from v2 to v3 --- app/scripts/lib/typed-message-manager.js | 2 +- app/scripts/metamask-controller.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'app') diff --git a/app/scripts/lib/typed-message-manager.js b/app/scripts/lib/typed-message-manager.js index 01e1c9331..b10145f3b 100644 --- a/app/scripts/lib/typed-message-manager.js +++ b/app/scripts/lib/typed-message-manager.js @@ -140,7 +140,7 @@ module.exports = class TypedMessageManager extends EventEmitter { sigUtil.typedSignatureHash(params.data) }, 'Expected EIP712 typed data') break - case 'V2': + case 'V3': let data assert.equal(typeof params, 'object', 'Params should be an object.') assert.ok('data' in params, 'Params must include a data field.') diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index d5005d977..431a49dde 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -991,7 +991,7 @@ module.exports = class MetamaskController extends EventEmitter { case 'V1': signature = sigUtil.signTypedDataLegacy(privKey, { data: cleanMsgParams.data }) break - case 'V2': + case 'V3': signature = sigUtil.signTypedData(privKey, { data: JSON.parse(cleanMsgParams.data) }) break } @@ -1253,7 +1253,7 @@ module.exports = class MetamaskController extends EventEmitter { engine.push(this.preferencesController.requestWatchAsset.bind(this.preferencesController)) engine.push(this.createTypedDataMiddleware('eth_signTypedData', 'V1').bind(this)) engine.push(this.createTypedDataMiddleware('eth_signTypedData_v1', 'V1').bind(this)) - engine.push(this.createTypedDataMiddleware('eth_signTypedData_v2', 'V2').bind(this)) + engine.push(this.createTypedDataMiddleware('eth_signTypedData_v3', 'V3').bind(this)) engine.push(createProviderMiddleware({ provider: this.provider })) // setup connection -- cgit From 2ec09362c59958a457939724003312024f97393c Mon Sep 17 00:00:00 2001 From: Paul Bouchon Date: Fri, 14 Sep 2018 19:26:03 -0400 Subject: EIP-1102: Transitionary API (#5256) --- app/scripts/inpage.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'app') diff --git a/app/scripts/inpage.js b/app/scripts/inpage.js index 1a170c617..d9fda1feb 100644 --- a/app/scripts/inpage.js +++ b/app/scripts/inpage.js @@ -22,6 +22,25 @@ var metamaskStream = new LocalMessageDuplexStream({ // compose the inpage provider var inpageProvider = new MetamaskInpageProvider(metamaskStream) +// Augment the provider with its enable method +inpageProvider.enable = function (options = {}) { + return new Promise((resolve, reject) => { + if (options.mockRejection) { + reject('User rejected account access') + } else { + inpageProvider.sendAsync({ method: 'eth_accounts', params: [] }, (error, response) => { + if (error) { + reject(error) + } else { + resolve(response.result) + } + }) + } + }) +} + +window.ethereum = inpageProvider + // // setup web3 // -- cgit From 906628e54b97a374c3128b197c4c59a25a1e0363 Mon Sep 17 00:00:00 2001 From: Farah Brunache Date: Sat, 15 Sep 2018 18:12:22 -0400 Subject: added Haitian Creole translations --- app/_locales/ht/messages.json | 1245 +++++++++++++++++++++++++++++++++++++++++ app/_locales/index.json | 41 +- 2 files changed, 1266 insertions(+), 20 deletions(-) create mode 100644 app/_locales/ht/messages.json (limited to 'app') diff --git a/app/_locales/ht/messages.json b/app/_locales/ht/messages.json new file mode 100644 index 000000000..e77e774b1 --- /dev/null +++ b/app/_locales/ht/messages.json @@ -0,0 +1,1245 @@ +{ + "accept": { + "message": "Aksepte" + }, + "accessingYourCamera": { + "message": "Aksè a Kamera" + }, + "account": { + "message": "Kont" + }, + "accountDetails": { + "message": "Detay Kont" + }, + "accountName": { + "message": "Non Kont" + }, + "accountSelectionRequired": { + "message": "Ou bezwen chwazi yon kont!" + }, + "activityLog": { + "message": "aktivite ki fèt" + }, + "address": { + "message": "Adrès" + }, + "addCustomToken": { + "message": "Ajoute token" + }, + "addToken": { + "message": "Ajoute Token" + }, + "addTokens": { + "message": "Ajoute Token" + }, + "addSuggestedTokens": { + "message": "Ajoute Token Yo Sikjere W" + }, + "addAcquiredTokens": { + "message": "Ajoute tokens yo ou te achte lè l sèvi avèk MetaMask" + }, + "amount": { + "message": "Kantite lajan" + }, + "amountPlusGas": { + "message": "Kantite lajan + Gaz" + }, + "appDescription": { + "message": "Ethereum Ekstansyon Navigatè", + "description": "The description of the application" + }, + "appName": { + "message": "MetaMask", + "description": "The name of the application" + }, + "approve": { + "message": "Apwouve" + }, + "approved": { + "message": "Apwouve" + }, + "attemptingConnect": { + "message": "Eseye konekte nan blockchain." + }, + "attributions": { + "message": "Atribisyon" + }, + "available": { + "message": "Disponib" + }, + "back": { + "message": "Retounen" + }, + "balance": { + "message": "Balans" + }, + "balances": { + "message": "Balans Token" + }, + "balanceIsInsufficientGas": { + "message": "Ensifizan balans pou total gaz aktyèl la" + }, + "beta": { + "message": "BETA" + }, + "betweenMinAndMax": { + "message": "dwe plis pase oswa egal a $ 1 mwens ke oswa egal a $ 2.", + "description": "helper for inputting hex as decimal input" + }, + "blockiesIdenticon": { + "message": "Itilize Blockies Identicon" + }, + "borrowDharma": { + "message": "Prete Avèk Dharma (Beta)" + }, + "browserNotSupported": { + "message": "Navigatè ou a pa sipòte..." + }, + "builtInCalifornia": { + "message": "MetaMask fèt e bati nan California." + }, + "buy": { + "message": "Achte" + }, + "buyCoinbase": { + "message": "Achte sou Coinbase" + }, + "buyCoinbaseExplainer": { + "message": "Coinbase se fason ki pi popilè nan mond lan yo achte ak vann Bitcoin, Ethereum, ak Litecoin." + }, + "bytes": { + "message": "Bytes" + }, + "ok": { + "message": "Oke" + }, + "cancel": { + "message": "Anile" + }, + "classicInterface": { + "message": "Sèvi ak fas klasik la" + }, + "clickCopy": { + "message": "Klike sou kopi" + }, + "close": { + "message": "Fèmen" + }, + "chromeRequiredForHardwareWallets": { + "message": "Ou bezwen sèvi ak MetaMask sou Google Chrome yo nan lòd yo konekte sou Hardware Wallet." + }, + "confirm": { + "message": "Konfime" + }, + "confirmed": { + "message": "Konfime" + }, + "confirmContract": { + "message": "Konfime Kontra" + }, + "confirmPassword": { + "message": "Konfime Modpas" + }, + "confirmTransaction": { + "message": "Konfime Tranzaksyon" + }, + "connectHardwareWallet": { + "message": "Konekte Hardware Wallet" + }, + "connect": { + "message": "Konekte" + }, + "connecting": { + "message": "Koneksyon..." + }, + "connectToLedger": { + "message": "Konekte ak Ledger" + }, + "connectToTrezor": { + "message": "Konekte ak Trezor" + }, + "continue": { + "message": "Kontinye" + }, + "continueToCoinbase": { + "message": "Kontinye Coinbase" + }, + "contractDeployment": { + "message": "Kontra Deplwaman" + }, + "conversionProgress": { + "message": "Konvèsyon nan Pwogrè" + }, + "copiedButton": { + "message": "Kopye" + }, + "copiedClipboard": { + "message": "Kopi nan Clipboard" + }, + "copiedExclamation": { + "message": "Kopye!" + }, + "copiedSafe": { + "message": "Mwen te kopye li yon kote ki san danje" + }, + "copy": { + "message": "Kopye" + }, + "copyContractAddress": { + "message": "Kopi Kontra Adrès" + }, + "copyAddress": { + "message": "Kopi adrès clipboard" + }, + "copyToClipboard": { + "message": "Kopi clipboard" + }, + "copyButton": { + "message": " Kopi " + }, + "copyPrivateKey": { + "message": "Sa a se kle prive ou (klike pou ou kopye)" + }, + "create": { + "message": "Kreye" + }, + "createAccount": { + "message": "Kreye Kont" + }, + "createDen": { + "message": "Kreye" + }, + "crypto": { + "message": "Crypto", + "description": "Change tip (cryptocurrencies)" + }, + "currentConversion": { + "message": "Konvèsyon aktyèl" + }, + "currentNetwork": { + "message": "Rezo aktyèl" + }, + "customGas": { + "message": "Customize Gaz" + }, + "customToken": { + "message": "Koutim Token" + }, + "customize": { + "message": "Customize" + }, + "customRPC": { + "message": "Koutim RPC" + }, + "decimalsMustZerotoTen": { + "message": "Desimal yo dwe omwen 0, epi pa dwe plis pase 36." + }, + "decimal": { + "message": "Presizyon desimal la" + }, + "defaultNetwork": { + "message": "Dfo rezo a pou tranzaksyon Ether se Mainnet." + }, + "denExplainer": { + "message": "DEN ou se depo modpas avèk chif ou nan MetaMask." + }, + "deposit": { + "message": "Depo" + }, + "depositBTC": { + "message": "Depoze BTC ou nan adrès ki anba a:" + }, + "depositCoin": { + "message": "Depoze $ 1 ou nan adrès ki anba a", + "description": "Tells the user what coin they have selected to deposit with shapeshift" + }, + "depositEth": { + "message": "Depo Eth" + }, + "depositEther": { + "message": "Depo Ether" + }, + "depositFiat": { + "message": "Depo ak Fiat" + }, + "depositFromAccount": { + "message": "Depo nan yon lòt kont" + }, + "depositShapeShift": { + "message": "Depo avèk ShapeShift" + }, + "depositShapeShiftExplainer": { + "message": "Si ou posede lòt cryptocurrencies, ou ka chanje ak depo Ether dirèkteman nan Wallet MetaMask ou. Pa gen kont ki nesesè." + }, + "details": { + "message": "Detay yo" + }, + "directDeposit": { + "message": "Depo Dirèk" + }, + "directDepositEther": { + "message": "Dirèkteman Depo Ether" + }, + "directDepositEtherExplainer": { + "message": "Si ou deja gen kèk Ether, fason ki pi rapid yo ka resevwa Ether nan nouvo Wallet ou pa depo dirèk." + }, + "done": { + "message": "Fini" + }, + "downloadGoogleChrome": { + "message": "Telechaje Google Chrome" + }, + "downloadStateLogs": { + "message": "Telechaje State Logs" + }, + "dontHaveAHardwareWallet": { + "message": "Pa gen yon materyèl bous?" + }, + "dropped": { + "message": "Tonbe" + }, + "edit": { + "message": "Korije" + }, + "editAccountName": { + "message": "Korije Non Kont" + }, + "editingTransaction": { + "message": "Fè chanjman nan tranzaksyon ou" + }, + "emailUs": { + "message": "Imèl nou!" + }, + "encryptNewDen": { + "message": "Ankripte nouvo DEN ou" + }, + "ensNameNotFound": { + "message": "Nou pa jwenn non ENS ou a" + }, + "enterPassword": { + "message": "Mete modpas" + }, + "enterPasswordConfirm": { + "message": "Antre nan modpas ou a konfime" + }, + "enterPasswordContinue": { + "message": "Mete modpas pou kontinye" + }, + "parameters": { + "message": "Paramèt" + }, + "passwordNotLongEnough": { + "message": "Modpas la pa ase" + }, + "passwordsDontMatch": { + "message": "Modpas Pa Koresponn ak" + }, + "etherscanView": { + "message": "Gade kont sou Etherscan" + }, + "exchangeRate": { + "message": "Chanje to" + }, + "exportPrivateKey": { + "message": "Voye Kòd Prive" + }, + "exportPrivateKeyWarning": { + "message": "Voye kle prive ak pwòp risk ou." + }, + "failed": { + "message": "Tonbe" + }, + "fiat": { + "message": "FIAT", + "description": "Exchange type" + }, + "fileImportFail": { + "message": "Enpòte dosye ki pa travay? Klike la a!", + "description": "Helps user import their account from a JSON file" + }, + "followTwitter": { + "message": "Swiv nou sou Twitter" + }, + "forgetDevice": { + "message": "Bliye aparèy sa a" + }, + "from": { + "message": "Soti nan" + }, + "fromToSame": { + "message": "Adrès orijinal le ak sa ou resevwa pake menm" + }, + "fromShapeShift": { + "message": "Soti nan ShapeShift" + }, + "functionType": { + "message": "Kalite Fonksyon" + }, + "gas": { + "message": "Gaz", + "description": "Short indication of gas cost" + }, + "gasFee": { + "message": "Frè gaz" + }, + "gasLimit": { + "message": "Limit gaz" + }, + "gasLimitCalculation": { + "message": "Nou kalkile gaz limit sijere a ki baze sou pousantaj siksè rezo a." + }, + "gasLimitRequired": { + "message": "Limit gaz nesesè" + }, + "gasLimitTooLow": { + "message": "Limit gaz dwe omwen 21000" + }, + "generatingSeed": { + "message": "Génération Seed..." + }, + "gasPrice": { + "message": "Pri gaz (GWEI)" + }, + "gasPriceCalculation": { + "message": "Nou kalkile pri yo gaz ki sijere ki baze sou pousantaj siksè rezo." + }, + "gasPriceRequired": { + "message": "Pri Gaz la Egzije" + }, + "generatingTransaction": { + "message": "Tranzaksyon kap fè" + }, + "getEther": { + "message": "Jwenn Ether" + }, + "getEtherFromFaucet": { + "message": "Jwenn Ether nan yon tiyo pou $ 1 la", + "description": "Displays network name for Ether faucet" + }, + "getHelp": { + "message": "Jwenn èd." + }, + "greaterThanMin": { + "message": "dwe pi gran pase oswa egal a $ 1.", + "description": "helper for inputting hex as decimal input" + }, + "hardware": { + "message": "hardware" + }, + "hardwareWalletConnected": { + "message": "Hardware Wallet konekte" + }, + "hardwareWallets": { + "message": "Hardware Wallet konekte" + }, + "hardwareWalletsMsg": { + "message": "Chwazi yon Hardware Wallet ou ta renmen itilize ak MetaMask" + }, + "havingTroubleConnecting": { + "message": "Èske w gen pwoblèm pou konekte?" + }, + "here": { + "message": "isit la", + "description": "as in -click here- for more information (goes with troubleTokenBalances)" + }, + "hereList": { + "message": "Isit la nan yon lis !!!!" + }, + "hexData": { + "message": "Hex Data" + }, + "hide": { + "message": "Kache" + }, + "hideToken": { + "message": "Kache Token" + }, + "hideTokenPrompt": { + "message": "Kache Token?" + }, + "history": { + "message": "Istwa" + }, + "howToDeposit": { + "message": "Ki jan ou ta renmen depo Ether?" + }, + "holdEther": { + "message": "Li pèmèt ou kenbe ether & tokens, epi sèvi kòm on pon pou desantralize aplikasyon." + }, + "import": { + "message": "Pòte", + "description": "Button to import an account from a selected file" + }, + "importAccount": { + "message": "Pòte Kont" + }, + "importAccountMsg": { + "message": " Kont pòte pa pral asosye avèk orijinal ou te kreye nan kont MetaMask seed phrase. Aprann plis sou kont enpòte " + }, + "importAnAccount": { + "message": "Pòte yon kont" + }, + "importDen": { + "message": "Pòte ki deja egziste DEN" + }, + "imported": { + "message": "Pòte", + "description": "status showing that an account has been fully loaded into the keyring" + }, + "importUsingSeed": { + "message": "Pòte lè sèvi avèk seed phrase" + }, + "infoHelp": { + "message": "Enfo & Èd" + }, + "initialTransactionConfirmed": { + "message": "Premye tranzaksyon ou konfime sou rezo a. Klike sou OK pou tounen." + }, + "insufficientFunds": { + "message": "Lajan ensifizan." + }, + "insufficientTokens": { + "message": "Tokens pa valab." + }, + "invalidAddress": { + "message": "Adrès pa valab" + }, + "invalidAddressRecipient": { + "message": "Moun ki resevwa adrès la pa valab" + }, + "invalidGasParams": { + "message": "Gaz Paramèt la pa valab" + }, + "invalidInput": { + "message": "Sa ou rantre a pa valab" + }, + "invalidRequest": { + "message": "Demann pa valab" + }, + "invalidRPC": { + "message": "RPC URI pa valab" + }, + "invalidSeedPhrase": { + "message": "Seed phrase pa valab" + }, + "jsonFail": { + "message": "Yon bagay ale mal. Tanpri, asire w ke dosye JSON ou an byen fòmate." + }, + "jsonFile": { + "message": "JSON Dosye", + "description": "format for importing an account" + }, + "keepTrackTokens": { + "message": "Gade tokens yo ou te achte ak kont MetaMask ou." + }, + "kovan": { + "message": "Kovan Tès Rezo" + }, + "knowledgeDataBase": { + "message": "Vizite baz nou an" + }, + "max": { + "message": "Maksimòm" + }, + "learnMore": { + "message": "Aprann plis" + }, + "ledgerAccountRestriction": { + "message": "Ou bezwen sèvi ak dènye kont ou anvan ou ka ajoute yon nouvo." + }, + "lessThanMax": { + "message": "dwe mwens pase oswa egal a $ 1.", + "description": "helper for inputting hex as decimal input" + }, + "likeToAddTokens": { + "message": "Èske ou ta renmen ajoute sa nan tokens?" + }, + "links": { + "message": "Lyen" + }, + "limit": { + "message": "Limitasyon" + }, + "loading": { + "message": "Telechaje..." + }, + "loadingTokens": { + "message": "Telechaje Tokens..." + }, + "localhost": { + "message": "Localhost 8545" + }, + "login": { + "message": "Ouvri" + }, + "logout": { + "message": "Dekonekte" + }, + "loose": { + "message": "Pèdi" + }, + "loweCaseWords": { + "message": "seed words sèlman gen karaktè miniskil" + }, + "mainnet": { + "message": "Main Ethereum Network" + }, + "menu": { + "message": "Opsyon" + }, + "message": { + "message": "Mesaje" + }, + "metamaskDescription": { + "message": "MetaMask sekirize idantite pou Ethereum." + }, + "metamaskSeedWords": { + "message": "MetaMask Seed Words" + }, + "min": { + "message": "Minimòm" + }, + "myAccounts": { + "message": "Kont mwen" + }, + "mustSelectOne": { + "message": "Ou dwe chwazi omwen 1 token." + }, + "needEtherInWallet": { + "message": "Pou kominike avèk aplikasyon desantralize ou dwe itilize MetaMask, ou pral bezwen Ether nan Wallet ou." + }, + "needImportFile": { + "message": "Ou dwe chwazi yon dosye pou enpòte.", + "description": "User is important an account and needs to add a file to continue" + }, + "needImportPassword": { + "message": "Ou dwe antre nan yon modpas pou dosye ou te chwazi a.", + "description": "Password and file needed to import an account" + }, + "negativeETH": { + "message": "Pa ka voye kantite lajan negatif ETH." + }, + "networks": { + "message": "Rezo" + }, + "nevermind": { + "message": "Pa pwoblèm" + }, + "newAccount": { + "message": "Nouvo Kont" + }, + "newAccountNumberName": { + "message": "Kont $1", + "description": "Default name of next account to be created on create account screen" + }, + "newContract": { + "message": "Nouvo Kontra" + }, + "newPassword": { + "message": "Nouvo modpas (minit 8)" + }, + "newRecipient": { + "message": "Nouvo Benefisyè" + }, + "newRPC": { + "message": "Nouvo RPC URL" + }, + "next": { + "message": "Aprè sa" + }, + "noAddressForName": { + "message": "Pa gen adrès ki etabli pou non sa a." + }, + "noDeposits": { + "message": "Pa gen depo ou te resevwa" + }, + "noConversionRateAvailable": { + "message": "Pa gen okenn Konvèsyon Disponib" + }, + "noTransactionHistory": { + "message": "Pa gen istwa tranzaksyon." + }, + "noTransactions": { + "message": "Pa gen tranzaksyon" + }, + "notFound": { + "message": "Pa jwenn" + }, + "notStarted": { + "message": "Pa kòmanse" + }, + "noWebcamFoundTitle": { + "message": "Pa jwenn webcam" + }, + "noWebcamFound": { + "message": "Nou pakay jwenn webcam òdinatè ou. Tanpri eseye ankò." + }, + "oldUI": { + "message": "Ansyen Itilizatè kouòdone" + }, + "oldUIMessage": { + "message": "Ou te retounen nan Ansyen Itilizatè kouòdone. Ou ka chanje tounen nan nouvo Ansyen Itilizatè nan opsyon a nan meni an tèt la." + }, + "openInTab": { + "message": "Louvri nan etikèt" + }, + "or": { + "message": "oubyen", + "description": "choice between creating or importing a new account" + }, + "origin": { + "message": "Orijin" + }, + "password": { + "message": "Modpas" + }, + "passwordCorrect": { + "message": "Tanpri asire ke modpas ou kòrèk." + }, + "passwordMismatch": { + "message": "modpas sa pa menm", + "description": "in password creation process, the two new password fields did not match" + }, + "passwordShort": { + "message": "modpas pa sifi", + "description": "in password creation process, the password is not long enough to be secure" + }, + "pastePrivateKey": { + "message": "Kole fraz prive ou a la:", + "description": "For importing an account from a private key" + }, + "pasteSeed": { + "message": "Kole seed phrase ou a la!" + }, + "pending": { + "message": "l ap mache" + }, + "personalAddressDetected": { + "message": "Adrès pèsonèl detekte. Antre adrès kontra token la." + }, + "pleaseReviewTransaction": { + "message": "Tanpri revize tranzaksyon ou." + }, + "popularTokens": { + "message": "Popilè Tokens" + }, + "prev": { + "message": "Avan" + }, + "privacyMsg": { + "message": "Règleman sou enfòmasyon prive" + }, + "privateKey": { + "message": "Prive kle", + "description": "select this type of file to use to import an account" + }, + "privateKeyWarning": { + "message": "Atansyon: pa janm divilge kle sa. Nenpòt moun kapab avèk kle prive ou a vòlè sa ou gen ou sou kont ou a." + }, + "privateNetwork": { + "message": "Rezo Prive" + }, + "qrCode": { + "message": "Montre QR Kòd" + }, + "queue": { + "message": "Queue" + }, + "readdToken": { + "message": "Ou ka ajoute token sa aprè sa ankò ou prale nan " + Add Token " nan opsyon meni kont ou an." + }, + "readMore": { + "message": "Li plis isit la." + }, + "readMore2": { + "message": "Li plis isit la." + }, + "receive": { + "message": "Resevwa" + }, + "recipientAddress": { + "message": "Adrès pou resevwa" + }, + "refundAddress": { + "message": "Adrès pou resevwa" + }, + "rejected": { + "message": "Rejte" + }, + "reset": { + "message": "Repwograme" + }, + "resetAccount": { + "message": "Repwograme Kont" + }, + "resetAccountDescription": { + "message": "Repwograme kont a netwaye tranzaksyon ou yo." + }, + "restoreFromSeed": { + "message": "Restore kont?" + }, + "restoreVault": { + "message": "Retabli kazye" + }, + "restoreAccountWithSeed": { + "message": "Retabli kont ou avèk yo Seed Phrase" + }, + "required": { + "message": "Egzije" + }, + "retryWithMoreGas": { + "message": "Reseye ak yon pri gaz pi wo isit la" + }, + "walletSeed": { + "message": "Wallet Seed" + }, + "restore": { + "message": "Retabli" + }, + "revealSeedWords": { + "message": "Revele Seed Mo Yo" + }, + "revealSeedWordsTitle": { + "message": "Seed Fraz" + }, + "revealSeedWordsDescription": { + "message": "Si ou pa janm chanje navigatè ou deplase òdinatè, ou pral bezwen fraz seed la pou ka gen aksè a kont ou. Sere yo on kote an sekirite e an sekrè." + }, + "revealSeedWordsWarningTitle": { + "message": "PA pataje fraz sa a avèk nenpòt moun!" + }, + "revealSeedWordsWarning": { + "message": "Yo ka itilize mo sa pou vòlè kont ou." + }, + "revert": { + "message": "Retounen" + }, + "remove": { + "message": "retire" + }, + "removeAccount": { + "message": "Retire kont" + }, + "removeAccountDescription": { + "message": "Kont sa a pral retire nan Wallet ou. Tanpri, asire ou ke ou gen orijinal fraz seed la oubyen kle prive pou rantre kont lan avan ou kontinye. Oubyen ou ka rantre kont ou ankò apati kont " + drop - down " ou an." + }, + "readyToConnect": { + "message": "Pare pou konekte?" + }, + "rinkeby": { + "message": "Rinkeby Tès Rezo" + }, + "ropsten": { + "message": "Ropsten Tès Rezo" + }, + "rpc": { + "message": "Koutim RPC" + }, + "currentRpc": { + "message": "Kounya RPC" + }, + "connectingToMainnet": { + "message": "Konekte ak Main (Prensipal) Ethereum Rezo a" + }, + "connectingToRopsten": { + "message": "Konekte ak Ropsten Tès Rezo a" + }, + "connectingToKovan": { + "message": "Konekte nan Kovan Tès Rezo a" + }, + "connectingToRinkeby": { + "message": "Konekte nan Rinkeby Tès Rezo a" + }, + "connectingToUnknown": { + "message": "Konekte nan rezo enkoni" + }, + "sampleAccountName": { + "message": "Pa egzanp, Nouvo kont mwen an", + "description": "Help user understand concept of adding a human-readable name to their account" + }, + "save": { + "message": "Sove" + }, + "speedUp": { + "message": "pi vit" + }, + "speedUpTitle": { + "message": "Monte vitès tranzaksyon" + }, + "speedUpSubtitle": { + "message": "Ogmante pri gaz ou pou eseye efase tranzaksyon ou pi vit" + }, + "saveAsCsvFile": { + "message": "Sove kòm dosye CSV" + }, + "saveAsFile": { + "message": "Sove kòm dosye", + "description": "Account export process" + }, + "saveSeedAsFile": { + "message": "Sove pawòl seed kòm dosye" + }, + "search": { + "message": "Rechèch" + }, + "searchResults": { + "message": "Rezilta rechèch" + }, + "secretPhrase": { + "message": "Antre fraz sekrè douz mo ou a pou w restore kòf ou a." + }, + "showHexData": { + "message": "Montre Hex Data" + }, + "showHexDataDescription": { + "message": "Pran sa pouw ka montre chan entèfas hex data a" + }, + "newPassword8Chars": { + "message": "Nouvo modpas (pou pi pit 8)" + }, + "seedPhraseReq": { + "message": "Seed fraz yo se 12 long mo" + }, + "select": { + "message": "Chwazi" + }, + "selectCurrency": { + "message": "Chwazi Lajan" + }, + "selectService": { + "message": "Chwazi Sèvis" + }, + "selectType": { + "message": "Chwazi Kalite" + }, + "send": { + "message": "Voye" + }, + "sendETH": { + "message": "Voye ETH" + }, + "sendTokens": { + "message": "Voye Tokens" + }, + "sentEther": { + "message": "Voye ether" + }, + "sentTokens": { + "message": "tokens deja voye" + }, + "separateEachWord": { + "message": "Separe chak mo ak yon sèl espas" + }, + "onlySendToEtherAddress": { + "message": "Sèlman voye ETH nan yon adrès Ethereum." + }, + "onlySendTokensToAccountAddress": { + "message": "Sèlman voye $ 1 nan yon adrès kont Ethereum.", + "description": "displays token symbol" + }, + "orderOneHere": { + "message": "Mete nan lòd on Trezor oswa Ledger epi kenbe lajan ou nan yon stòk frèt." + }, + "outgoing": { + "message": "Ap kite" + }, + "searchTokens": { + "message": "Rechèch Tokens" + }, + "selectAnAddress": { + "message": "Chwazi yon adrès" + }, + "selectAnAccount": { + "message": "Chwazi yon kont" + }, + "selectAnAccountHelp": { + "message": "Chwazi kont pou wè nan MetaMask" + }, + "selectHdPath": { + "message": "Chwazi chemen HD" + }, + "selectPathHelp": { + "message": "Si ou pa wè kont Ledger ou te genyen an anba a, eseye chanje chemen an \"Eritaj (MEW / MyCrypto)\"" + }, + "sendTokensAnywhere": { + "message": "Voye Tokens pou nenpòt moun ki gen yon kont Ethereum" + }, + "settings": { + "message": "Paramèt" + }, + "step1HardwareWallet": { + "message": "1. Konekte Materyèl bous" + }, + "step1HardwareWalletMsg": { + "message": "Konekte materyèl bous ou dirèkteman nan òdinatè ou." + }, + "step2HardwareWallet": { + "message": "2. Chwazi yon kont" + }, + "step2HardwareWalletMsg": { + "message": "Chwazi kont ou vle wè a. Ou ka chwazi youn sèlman nan yon moman." + }, + "step3HardwareWallet": { + "message": "3. Kòmanse itilize dApps ak plis ankò!" + }, + "step3HardwareWalletMsg": { + "message": "Sèvi ak kont materyèl ou menm jan ou t ap fè pou kont Etherum. Ouvri sesyon an nan dApps, voye Eth, achte ak stòke ERC20 tokens ak e ki pake chanje tokens tankou CryptoKitties." + }, + "info": { + "message": "Enfòmasyon" + }, + "scanInstructions": { + "message": "Mete kòd QR la devan kamera ou" + }, + "scanQrCode": { + "message": "Enspeksyon QR Kòd" + }, + "shapeshiftBuy": { + "message": "Achte avèk Shapeshift" + }, + "showPrivateKeys": { + "message": "Montre Kle Prive" + }, + "showQRCode": { + "message": "Montre Kòd QR" + }, + "sign": { + "message": "Siyen" + }, + "signatureRequest": { + "message": "Siyati Mande" + }, + "signed": { + "message": "Te Siyen" + }, + "signMessage": { + "message": "Siyen mesaj" + }, + "signNotice": { + "message": "Lè w siyen mesaj sa a ka gen efè segondè ki \ndanjere. Sèlman \nsit mesaj ki soti nan sit ou konplètman fè konfyans ak tout kont ou. \n Metòd danjere sa yo pral retire nan yon vèsyon fiti. " + }, + "sigRequest": { + "message": "Demann Siyati" + }, + "sigRequested": { + "message": "Demann Siyati" + }, + "spaceBetween": { + "message": "ka gen sèlman yon espas ant mo yo" + }, + "status": { + "message": "Kondisyon" + }, + "stateLogs": { + "message": "State Logs" + }, + "stateLogsDescription": { + "message": "State logs gen adrès kont piblik ou yo epi tranzaksyon ou te voye yo." + }, + "stateLogError": { + "message": "Erè nan retwouve State Logs yo." + }, + "submit": { + "message": "Soumèt" + }, + "submitted": { + "message": "Te Soumèt" + }, + "supportCenter": { + "message": "Vizite Sant Sipò Nou" + }, + "symbolBetweenZeroTen": { + "message": "Senbòl yo dwe ant 0 ak 10 karaktè." + }, + "takesTooLong": { + "message": "Pran twò lontan?" + }, + "terms": { + "message": "Tèm pou itilize" + }, + "testFaucet": { + "message": "Tès Tiyo" + }, + "to": { + "message": "Pou" + }, + "toETHviaShapeShift": { + "message": "$1 pou ETH pa ShapeShift", + "description": "system will fill in deposit type in start of message" + }, + "token": { + "message": "Token" + }, + "tokenAddress": { + "message": "Adrès Token" + }, + "tokenAlreadyAdded": { + "message": "Ou te deja ajoute token." + }, + "tokenBalance": { + "message": "Balans Token ou se:" + }, + "tokenSelection": { + "message": "Chache Tokens oswa chwazi nan lis Tokens popilè nou an." + }, + "tokenSymbol": { + "message": "Token Senbòl" + }, + "tokenWarning1": { + "message": "Kenbe tras token yo ou te achte ak kont MetaMask ou. Si ou te achte tokens pandan wap itilize yon kont diferan tokens sa yo pa pral parèt la." + }, + "total": { + "message": "Total" + }, + "transactions": { + "message": "tranzaksyon yo" + }, + "transactionConfirmed": { + "message": "Tranzaksyon ou te konfime pou $2." + }, + "transactionCreated": { + "message": "Tranzaksyon ou te kreye avèk on valè de $1 pou $2." + }, + "transactionDropped": { + "message": "Tranzaksyon ou te tonbe a $2." + }, + "transactionSubmitted": { + "message": "Tranzaksyon ou te soumèt a $2." + }, + "transactionUpdated": { + "message": "Tranzaksyon ou te aktyalize a $2." + }, + "transactionUpdatedGas": { + "message": "Tranzaksyon ou te aktyalize avèk on pri gaz de $1 a $2." + }, + "transactions": { + "message": "tranzaksyon yo" + }, + "transactionError": { + "message": "Erè tranzaksyon. Eksepsyon jete nan kòd kontra." + }, + "transactionMemo": { + "message": "Memo tranzaksyon (opsyonèl)" + }, + "transactionNumber": { + "message": "Nimewo Tranzaksyon" + }, + "transfer": { + "message": "Transfè" + }, + "transfers": { + "message": "Transfè yo" + }, + "trezorHardwareWallet": { + "message": "TREZOR Materyèl Bous" + }, + "troubleTokenBalances": { + "message": "Nou te gen pwoblèm chaje balans token ou. Ou ka wè yo ", + "description": "Followed by a link (here) to view token balances" + }, + "tryAgain": { + "message": "Eseye anko" + }, + "twelveWords": { + "message": "12 mo sa yo se sèl fason pou retabli kont MetaMask ou yo. \nKenbe yo yon kote ki an sekirite ak sekrè." + }, + "typePassword": { + "message": "Tape modpas ou" + }, + "uiWelcome": { + "message": "Byenveni nan New itilizatè koòdone (Beta)" + }, + "uiWelcomeMessage": { + "message": "Kounya w ap itilize nouvo MetaMask UI (itilizatè koòdone) a." + }, + "unapproved": { + "message": "Pa apwouve" + }, + "unavailable": { + "message": "Pa disponib" + }, + "units": { + "message": "inite yo" + }, + "unknown": { + "message": "Enkoni" + }, + "unknownFunction": { + "message": "Fonksyon enkoni" + }, + "unknownNetwork": { + "message": "Rezo Prive Enkoni" + }, + "unknownNetworkId": { + "message": "Rezo ID Enkoni" + }, + "unknownQrCode": { + "message": "Erè: Nou pa t kapab idantifye QR kòd sa" + }, + "unknownCameraErrorTitle": { + "message": "Ooops! Yon bagay te ale mal...." + }, + "unknownCameraError": { + "message": "Te gen yon erè pandan y ap eseye jwenn aksè nan kamera ou. Tanpri eseye ankò..." + }, + "unlock": { + "message": "Debloke" + }, + "unlockMessage": { + "message": "Entènèt desantralize a ap tann" + }, + "uriErrorMsg": { + "message": "URIs mande pou apwopriye prefiks HTTP / HTTPS a." + }, + "usaOnly": { + "message": "USA sèlman", + "description": "Using this exchange is limited to people inside the USA" + }, + "usedByClients": { + "message": "Itilize pa yon varyete de kliyan diferan" + }, + "useOldUI": { + "message": "Itilizasyon ansyen UI (itilizatè koòdone)" + }, + "validFileImport": { + "message": "Ou dwe chwazi yon dosye ki valab pou enpòte." + }, + "vaultCreated": { + "message": "Kòf Kreye" + }, + "viewAccount": { + "message": "Wè Kont" + }, + "viewOnEtherscan": { + "message": "Wè sou Etherscan" + }, + "visitWebSite": { + "message": "Vizite sit entènèt nou an" + }, + "warning": { + "message": "Avètisman" + }, + "welcomeBack": { + "message": "Bon retou!" + }, + "welcomeBeta": { + "message": "Byenveni nan MetaMask Beta" + }, + "whatsThis": { + "message": "Kisa sa ye?" + }, + "youNeedToAllowCameraAccess": { + "message": "Ou bezwen bay kamera aksè pou sèvi ak fonksyon sa." + }, + "yourSigRequested": { + "message": "Yo mande siyati ou" + }, + "youSign": { + "message": "Ou ap siyen kounya" + }, + "yourPrivateSeedPhrase": { + "message": "Seed fraz prive ou a" + } +} diff --git a/app/_locales/index.json b/app/_locales/index.json index f50c09f88..b0b53c903 100644 --- a/app/_locales/index.json +++ b/app/_locales/index.json @@ -1,22 +1,23 @@ [ - { "code": "cs", "name": "Czech" }, - { "code": "de", "name": "German" }, - { "code": "en", "name": "English" }, - { "code": "es", "name": "Spanish" }, - { "code": "fr", "name": "French" }, - { "code": "hn", "name": "Hindi" }, - { "code": "it", "name": "Italian" }, - { "code": "ja", "name": "Japanese" }, - { "code": "ko", "name": "Korean" }, - { "code": "nl", "name": "Dutch" }, - { "code": "ph", "name": "Tagalog" }, - { "code": "pt", "name": "Portuguese" }, - { "code": "ru", "name": "Russian" }, - { "code": "sl", "name": "Slovenian" }, - { "code": "th", "name": "Thai" }, - { "code": "tml", "name": "Tamil" }, - { "code": "tr", "name": "Turkish" }, - { "code": "vi", "name": "Vietnamese" }, - { "code": "zh_CN", "name": "Chinese (Simplified)" }, - { "code": "zh_TW", "name": "Chinese (Traditional)" } + { "code": "cs", "name": "Czech" }, + { "code": "de", "name": "German" }, + { "code": "en", "name": "English" }, + { "code": "es", "name": "Spanish" }, + { "code": "fr", "name": "French" }, + { "code": "hn", "name": "Hindi" }, + { "code": "ht", "name": "Haitian Creole" }, + { "code": "it", "name": "Italian" }, + { "code": "ja", "name": "Japanese" }, + { "code": "ko", "name": "Korean" }, + { "code": "nl", "name": "Dutch" }, + { "code": "ph", "name": "Tagalog" }, + { "code": "pt", "name": "Portuguese" }, + { "code": "ru", "name": "Russian" }, + { "code": "sl", "name": "Slovenian" }, + { "code": "th", "name": "Thai" }, + { "code": "tml", "name": "Tamil" }, + { "code": "tr", "name": "Turkish" }, + { "code": "vi", "name": "Vietnamese" }, + { "code": "zh_CN", "name": "Chinese (Simplified)" }, + { "code": "zh_TW", "name": "Chinese (Traditional)" } ] -- cgit From b2a93ba278e12138500b32b478a64f28d62fc941 Mon Sep 17 00:00:00 2001 From: Farah Brunache Date: Sun, 16 Sep 2018 12:36:44 -0400 Subject: fixed some grammatical errors --- app/_locales/ht/messages.json | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) (limited to 'app') diff --git a/app/_locales/ht/messages.json b/app/_locales/ht/messages.json index e77e774b1..839b077f2 100644 --- a/app/_locales/ht/messages.json +++ b/app/_locales/ht/messages.json @@ -220,13 +220,13 @@ "message": "Rezo aktyèl" }, "customGas": { - "message": "Customize Gaz" + "message": "Koutim Gaz" }, "customToken": { "message": "Koutim Token" }, "customize": { - "message": "Customize" + "message": "Koutim" }, "customRPC": { "message": "Koutim RPC" @@ -250,7 +250,7 @@ "message": "Depoze BTC ou nan adrès ki anba a:" }, "depositCoin": { - "message": "Depoze $ 1 ou nan adrès ki anba a", + "message": "Depoze $1 ou nan adrès ki anba a", "description": "Tells the user what coin they have selected to deposit with shapeshift" }, "depositEth": { @@ -413,7 +413,7 @@ "message": "Jwenn Ether" }, "getEtherFromFaucet": { - "message": "Jwenn Ether nan yon tiyo pou $ 1 la", + "message": "Jwenn Ether nan yon tiyo pou $1 la", "description": "Displays network name for Ether faucet" }, "getHelp": { @@ -474,7 +474,7 @@ "message": "Pòte Kont" }, "importAccountMsg": { - "message": " Kont pòte pa pral asosye avèk orijinal ou te kreye nan kont MetaMask seed phrase. Aprann plis sou kont enpòte " + "message": " Kont pòte pa pral asosye avèk orijinal ou te kreye nan kont MetaMask seed fraz. Aprann plis sou kont enpòte " }, "importAnAccount": { "message": "Pòte yon kont" @@ -487,7 +487,7 @@ "description": "status showing that an account has been fully loaded into the keyring" }, "importUsingSeed": { - "message": "Pòte lè sèvi avèk seed phrase" + "message": "Pòte lè sèvi avèk seed fraz" }, "infoHelp": { "message": "Enfo & Èd" @@ -520,7 +520,7 @@ "message": "RPC URI pa valab" }, "invalidSeedPhrase": { - "message": "Seed phrase pa valab" + "message": "Seed fraz pa valab" }, "jsonFail": { "message": "Yon bagay ale mal. Tanpri, asire w ke dosye JSON ou an byen fòmate." @@ -579,7 +579,7 @@ "message": "Pèdi" }, "loweCaseWords": { - "message": "seed words sèlman gen karaktè miniskil" + "message": "seed mo sèlman gen karaktè miniskil" }, "mainnet": { "message": "Main Ethereum Network" @@ -594,7 +594,7 @@ "message": "MetaMask sekirize idantite pou Ethereum." }, "metamaskSeedWords": { - "message": "MetaMask Seed Words" + "message": "MetaMask Seed Mo" }, "min": { "message": "Minimòm" @@ -709,7 +709,7 @@ "description": "For importing an account from a private key" }, "pasteSeed": { - "message": "Kole seed phrase ou a la!" + "message": "Kole seed fraz ou a la!" }, "pending": { "message": "l ap mache" @@ -746,8 +746,7 @@ "message": "Queue" }, "readdToken": { - "message": "Ou ka ajoute token sa aprè sa ankò ou prale nan " - Add Token " nan opsyon meni kont ou an." + "message": "Ou ka ajoute token sa aprè sa ankò ou prale nan "Ajoute Token" nan opsyon meni kont ou an." }, "readMore": { "message": "Li plis isit la." @@ -783,7 +782,7 @@ "message": "Retabli kazye" }, "restoreAccountWithSeed": { - "message": "Retabli kont ou avèk yo Seed Phrase" + "message": "Retabli kont ou avèk yo Seed Fraz" }, "required": { "message": "Egzije" @@ -822,8 +821,7 @@ "message": "Retire kont" }, "removeAccountDescription": { - "message": "Kont sa a pral retire nan Wallet ou. Tanpri, asire ou ke ou gen orijinal fraz seed la oubyen kle prive pou rantre kont lan avan ou kontinye. Oubyen ou ka rantre kont ou ankò apati kont " - drop - down " ou an." + "message": "Kont sa a pral retire nan Wallet ou. Tanpri, asire ou ke ou gen orijinal fraz seed la oubyen kle prive pou rantre kont lan avan ou kontinye. Oubyen ou ka rantre kont ou ankò apati kont "drop-down" ou an." }, "readyToConnect": { "message": "Pare pou konekte?" -- cgit From f0f798f7e10d4f3ffac329d4b582c2ae65be2161 Mon Sep 17 00:00:00 2001 From: tmashuang Date: Mon, 17 Sep 2018 14:42:04 -0500 Subject: Version 4.10.0 --- app/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/manifest.json b/app/manifest.json index 3718f5c8a..31b9ac9dd 100644 --- a/app/manifest.json +++ b/app/manifest.json @@ -1,7 +1,7 @@ { "name": "__MSG_appName__", "short_name": "__MSG_appName__", - "version": "4.9.3", + "version": "4.10.0", "manifest_version": 2, "author": "https://metamask.io", "description": "__MSG_appDescription__", -- cgit From 5a6c333506e4000602c1a1106cee6d06fe83afa8 Mon Sep 17 00:00:00 2001 From: Alexander Tseung Date: Mon, 17 Sep 2018 10:34:29 -0700 Subject: Switch existing modals from using Notification to Modal. Remove Notification component. Add CancelTransaction modal --- app/_locales/en/messages.json | 15 +++++++++++++++ app/scripts/controllers/transactions/index.js | 5 +++-- 2 files changed, 18 insertions(+), 2 deletions(-) (limited to 'app') diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 2cfd15f50..ed2e7a119 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -61,6 +61,12 @@ "attemptingConnect": { "message": "Attempting to connect to blockchain." }, + "attemptToCancel": { + "message": "Attempt to Cancel?" + }, + "attemptToCancelDescription": { + "message": "Attempting to cancel does not guarantee your original transaction will be cancelled. If cancelled, you are still required to pay a transaction fee to the network." + }, "attributions": { "message": "Attributions" }, @@ -116,6 +122,12 @@ "cancel": { "message": "Cancel" }, + "cancelAttempt": { + "message": "Cancel Attempt" + }, + "cancellationGasFee": { + "message": "Cancellation Gas Fee" + }, "classicInterface": { "message": "Use classic interface" }, @@ -1228,6 +1240,9 @@ "whatsThis": { "message": "What's this?" }, + "yesLetsTry": { + "message": "yes, let's try" + }, "youNeedToAllowCameraAccess": { "message": "You need to allow camera access to use this feature." }, diff --git a/app/scripts/controllers/transactions/index.js b/app/scripts/controllers/transactions/index.js index 59e30cdde..e2965ceb6 100644 --- a/app/scripts/controllers/transactions/index.js +++ b/app/scripts/controllers/transactions/index.js @@ -18,7 +18,7 @@ const { TRANSACTION_STATUS_APPROVED, } = require('./enums') -const { hexToBn, bnToHex } = require('../../lib/util') +const { hexToBn, bnToHex, BnMultiplyByFraction } = require('../../lib/util') /** Transaction Controller is an aggregate of sub-controllers and trackers @@ -244,7 +244,8 @@ class TransactionController extends EventEmitter { const originalTxMeta = this.txStateManager.getTx(originalTxId) const { txParams } = originalTxMeta const { gasPrice: lastGasPrice, from, nonce } = txParams - const newGasPrice = customGasPrice || bnToHex(hexToBn(lastGasPrice).mul(1.1)) + + const newGasPrice = customGasPrice || bnToHex(BnMultiplyByFraction(hexToBn(lastGasPrice), 11, 10)) const newTxMeta = this.txStateManager.generateTxMeta({ txParams: { from, -- cgit From 95e1eff4ca3d784d6fcba21035a535f8f3398cdc Mon Sep 17 00:00:00 2001 From: Alexander Tseung Date: Mon, 17 Sep 2018 18:32:35 -0700 Subject: Add TransactionDetails modal --- app/_locales/en/messages.json | 3 +++ 1 file changed, 3 insertions(+) (limited to 'app') diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index ed2e7a119..570284126 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -1112,6 +1112,9 @@ "transactionCreated": { "message": "Transaction created with a value of $1 on $2." }, + "transactionWithNonce": { + "message": "Transaction $1" + }, "transactionDropped": { "message": "Transaction dropped on $2." }, -- cgit From b579ee9619d5d775484f382b800c3426311da19d Mon Sep 17 00:00:00 2001 From: Alexander Tseung Date: Tue, 11 Sep 2018 17:32:37 -0700 Subject: Refactor settings page to use JSX and follow component file folder structure --- app/_locales/en/messages.json | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'app') diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 2cfd15f50..359eee9ef 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -216,6 +216,9 @@ "currentConversion": { "message": "Current Conversion" }, + "currentLanguage": { + "message": "current language" + }, "currentNetwork": { "message": "Current Network" }, @@ -596,6 +599,9 @@ "metamaskSeedWords": { "message": "MetaMask Seed Words" }, + "metamaskVersion": { + "message": "metamask version" + }, "min": { "message": "Minimum" }, @@ -906,6 +912,9 @@ "selectCurrency": { "message": "Select Currency" }, + "selectLocale": { + "message": "Select Locale" + }, "selectService": { "message": "Select Service" }, -- cgit From 9088fd1de49197d0e436f989c6698f2d4c36d456 Mon Sep 17 00:00:00 2001 From: Alexander Tseung Date: Wed, 19 Sep 2018 16:55:58 -0700 Subject: Add Current Conversion Updated string to translations --- app/_locales/en/messages.json | 3 +++ 1 file changed, 3 insertions(+) (limited to 'app') diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 359eee9ef..779608809 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -1197,6 +1197,9 @@ "unlockMessage": { "message": "The decentralized web awaits" }, + "updatedWithDate": { + "message": "Updated $1" + }, "uriErrorMsg": { "message": "URIs require the appropriate HTTP/HTTPS prefix." }, -- cgit From d8067072b5bad11da8d26636f72f73072c46e4d7 Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Thu, 20 Sep 2018 07:58:21 -0700 Subject: Update messages.json (#5280) Added some translations for Chinese Traditional via Chainsights! --- app/_locales/zh_CN/messages.json | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'app') diff --git a/app/_locales/zh_CN/messages.json b/app/_locales/zh_CN/messages.json index a39bba9da..8ce0671a4 100644 --- a/app/_locales/zh_CN/messages.json +++ b/app/_locales/zh_CN/messages.json @@ -23,6 +23,9 @@ "addTokens": { "message": "添加代币" }, + "addAcquiredTokens": { + "message": "在Metamask上添加已用的代币" + }, "amount": { "message": "数量" }, @@ -116,6 +119,9 @@ "confirmTransaction": { "message": "确认交易" }, + "connectHardwareWallet": { + "message": "链接硬件钱包" + }, "continue": { "message": "继续" }, @@ -714,6 +720,9 @@ "search": { "message": "搜索" }, + "searchResults": { + "message": "搜索结果" + }, "secretPhrase": { "message": "输入12位助记词以恢复金库." }, -- cgit From d493ec6dc44ce53265c757a1a57dc23baca1efca Mon Sep 17 00:00:00 2001 From: Dan Finlay <542863+danfinlay@users.noreply.github.com> Date: Thu, 20 Sep 2018 07:59:03 -0700 Subject: Remove EAL google analytics link. (#5081) Harry said he's not using this for Ether-Address-Lookup anymore, so removing it. --- app/phishing.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/phishing.html b/app/phishing.html index e20c9ac9c..dc8f61a93 100644 --- a/app/phishing.html +++ b/app/phishing.html @@ -43,7 +43,7 @@ ga('create', 'UA-68598031-1', 'auto' {'allowLinker':true}); ga('send', 'pageview'); ga('require', 'linker'); - ga('linker:autoLink', ['harrydenley.com', 'metamask.io'], false, true); + ga('linker:autoLink', ['metamask.io'], false, true); -- cgit From 250b4a3e0a2835ae360048f56a08c3fb2fd3725a Mon Sep 17 00:00:00 2001 From: Farah Brunache Date: Thu, 20 Sep 2018 13:00:37 -0400 Subject: fixed quotes in line 749 --- app/_locales/ht/messages.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/_locales/ht/messages.json b/app/_locales/ht/messages.json index 839b077f2..293368851 100644 --- a/app/_locales/ht/messages.json +++ b/app/_locales/ht/messages.json @@ -746,7 +746,7 @@ "message": "Queue" }, "readdToken": { - "message": "Ou ka ajoute token sa aprè sa ankò ou prale nan "Ajoute Token" nan opsyon meni kont ou an." + "message": "Ou ka ajoute token sa aprè sa ankò ou prale nan \"Ajoute token\" nan opsyon meni kont ou an." }, "readMore": { "message": "Li plis isit la." -- cgit From 01166b26edc5b979e5cbc7fe76df6fbfc272bea7 Mon Sep 17 00:00:00 2001 From: Alexander Tseung Date: Thu, 20 Sep 2018 15:53:53 -0700 Subject: Fix translation casing --- app/_locales/en/messages.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app') diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 779608809..951e24ec1 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -217,7 +217,7 @@ "message": "Current Conversion" }, "currentLanguage": { - "message": "current language" + "message": "Current Language" }, "currentNetwork": { "message": "Current Network" @@ -600,7 +600,7 @@ "message": "MetaMask Seed Words" }, "metamaskVersion": { - "message": "metamask version" + "message": "MetaMask Version" }, "min": { "message": "Minimum" -- cgit From 431beb943675f2e9b7b5e5ce9c7f55d45f10905f Mon Sep 17 00:00:00 2001 From: Alexander Tseung Date: Thu, 20 Sep 2018 19:35:45 -0700 Subject: Fix multiplyCurrencies. Add onClose prop for Modal component. Remove hideModal from modal components. --- app/_locales/en/messages.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 570284126..bcd897bba 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -1244,7 +1244,7 @@ "message": "What's this?" }, "yesLetsTry": { - "message": "yes, let's try" + "message": "Yes, let's try" }, "youNeedToAllowCameraAccess": { "message": "You need to allow camera access to use this feature." -- cgit From 19d72c9b0b4539f55624f6e9d41ded46c31d38d5 Mon Sep 17 00:00:00 2001 From: Dan Miller Date: Fri, 21 Sep 2018 15:04:21 -0230 Subject: Adds getPendingNonce method to provider initialization options in metamask-controller. --- .../controllers/network/createMetamaskMiddleware.js | 2 +- app/scripts/metamask-controller.js | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'app') diff --git a/app/scripts/controllers/network/createMetamaskMiddleware.js b/app/scripts/controllers/network/createMetamaskMiddleware.js index 8b17829b7..9e6a45888 100644 --- a/app/scripts/controllers/network/createMetamaskMiddleware.js +++ b/app/scripts/controllers/network/createMetamaskMiddleware.js @@ -38,6 +38,6 @@ function createPendingNonceMiddleware ({ getPendingNonce }) { const address = req.params[0] const blockRef = req.params[1] if (blockRef !== 'pending') return next() - req.result = await getPendingNonce(address) + res.result = await getPendingNonce(address) }) } diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 431a49dde..f11626c78 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -268,6 +268,7 @@ module.exports = class MetamaskController extends EventEmitter { // msg signing processEthSignMessage: this.newUnsignedMessage.bind(this), processPersonalMessage: this.newUnsignedPersonalMessage.bind(this), + getPendingNonce: this.getPendingNonce.bind(this), } const providerProxy = this.networkController.initializeProvider(providerOpts) return providerProxy @@ -1362,6 +1363,19 @@ module.exports = class MetamaskController extends EventEmitter { return '0x' + percentileNumBn.mul(GWEI_BN).toString(16) } + /** + * Returns the nonce that will be associated with a transaction once approved + * @param address {string} - The hex string address for the transaction + * @returns Promise + */ + async getPendingNonce (address) { + const { nonceDetails, releaseLock} = await this.txController.nonceTracker.getNonceLock(address) + const pendingNonce = nonceDetails.params.highestSuggested + + releaseLock() + return pendingNonce + } + //============================================================================= // CONFIG //============================================================================= -- cgit From 69204293436608388f0c50f1ceb236b5cc84708d Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Fri, 21 Sep 2018 14:54:37 -0700 Subject: Version 4.11.0 --- app/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app') diff --git a/app/manifest.json b/app/manifest.json index 086d5ba00..6c9f78a08 100644 --- a/app/manifest.json +++ b/app/manifest.json @@ -1,7 +1,7 @@ { "name": "__MSG_appName__", "short_name": "__MSG_appName__", - "version": "4.9.3", + "version": "4.11.0", "manifest_version": 2, "author": "https://metamask.io", "description": "__MSG_appDescription__", @@ -78,4 +78,4 @@ "*" ] } -} +} \ No newline at end of file -- cgit From e1c6306f838177249b96ab20882968f521a5b59f Mon Sep 17 00:00:00 2001 From: brunobar79 Date: Tue, 25 Sep 2018 11:57:28 -0400 Subject: bump to v4.11.1 --- app/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/manifest.json b/app/manifest.json index 086d5ba00..23085e1fd 100644 --- a/app/manifest.json +++ b/app/manifest.json @@ -1,7 +1,7 @@ { "name": "__MSG_appName__", "short_name": "__MSG_appName__", - "version": "4.9.3", + "version": "4.11.1", "manifest_version": 2, "author": "https://metamask.io", "description": "__MSG_appDescription__", -- cgit From 4d82df69959ab370ba4bf6acc324ed756322ef4f Mon Sep 17 00:00:00 2001 From: Esteban Miño Date: Tue, 25 Sep 2018 16:14:37 -0300 Subject: Fix MetaMask web3 version (#5352) --- app/scripts/metamask-controller.js | 1 + 1 file changed, 1 insertion(+) (limited to 'app') diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index f11626c78..ddc13c918 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -252,6 +252,7 @@ module.exports = class MetamaskController extends EventEmitter { eth_syncing: false, web3_clientVersion: `MetaMask/v${version}`, }, + version, // account mgmt getAccounts: async () => { const isUnlocked = this.keyringController.memStore.getState().isUnlocked -- cgit From 9285d369254f26af1aaa880b1d45a269c88d57bf Mon Sep 17 00:00:00 2001 From: David da Silva Rosa <712580+dasilvarosa@users.noreply.github.com> Date: Wed, 26 Sep 2018 13:15:38 +0200 Subject: Update ledger-logo.svg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Noticed the implementation used the old Ledger logo. Simply replaced the .svg without testing, so hope someone can test the extension before merging 😄 . --- app/images/ledger-logo.svg | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'app') diff --git a/app/images/ledger-logo.svg b/app/images/ledger-logo.svg index 21b99d0e5..5ca90e16e 100644 --- a/app/images/ledger-logo.svg +++ b/app/images/ledger-logo.svg @@ -1 +1,33 @@ - \ No newline at end of file + + +Fichier 8 + + + + + + + + + + + + + + + + + -- cgit From c4caba131776ff7397d3a4071d7cc84907ac9a43 Mon Sep 17 00:00:00 2001 From: bitpshr Date: Wed, 26 Sep 2018 10:00:12 -0400 Subject: bugfix: update eth_signTypedData_v3 parameter order --- app/scripts/metamask-controller.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'app') diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index ddc13c918..123e17569 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -1255,7 +1255,7 @@ module.exports = class MetamaskController extends EventEmitter { engine.push(this.preferencesController.requestWatchAsset.bind(this.preferencesController)) engine.push(this.createTypedDataMiddleware('eth_signTypedData', 'V1').bind(this)) engine.push(this.createTypedDataMiddleware('eth_signTypedData_v1', 'V1').bind(this)) - engine.push(this.createTypedDataMiddleware('eth_signTypedData_v3', 'V3').bind(this)) + engine.push(this.createTypedDataMiddleware('eth_signTypedData_v3', 'V3', true).bind(this)) engine.push(createProviderMiddleware({ provider: this.provider })) // setup connection @@ -1511,13 +1511,13 @@ module.exports = class MetamaskController extends EventEmitter { * @param {Function} - next * @param {Function} - end */ - createTypedDataMiddleware (methodName, version) { + createTypedDataMiddleware (methodName, version, reverse) { return async (req, res, next, end) => { const { method, params } = req if (method === methodName) { const promise = this.typedMessageManager.addUnapprovedMessageAsync({ - data: params.length >= 1 && params[0], - from: params.length >= 2 && params[1], + data: reverse ? params[1] : params[0], + from: reverse ? params[0] : params[1], }, req, version) this.sendUpdate() this.opts.showUnconfirmedMessage() -- cgit From 9359fc875df061c39807d90c3ca92356960ec4c3 Mon Sep 17 00:00:00 2001 From: Paul Bouchon Date: Wed, 26 Sep 2018 10:48:17 -0400 Subject: EIP-1102: Add deprecation message (#5353) --- app/scripts/inpage.js | 6 ++++++ app/scripts/lib/auto-reload.js | 6 ------ 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'app') diff --git a/app/scripts/inpage.js b/app/scripts/inpage.js index d9fda1feb..d924be516 100644 --- a/app/scripts/inpage.js +++ b/app/scripts/inpage.js @@ -9,6 +9,11 @@ restoreContextAfterImports() log.setDefaultLevel(process.env.METAMASK_DEBUG ? 'debug' : 'warn') +console.warn('ATTENTION: In an effort to improve user privacy, MetaMask will ' + +'stop exposing user accounts to dapps by default beginning November 2nd, 2018. ' + +'Dapps should call provider.enable() in order to view and use accounts. Please see ' + +'https://bit.ly/2QQHXvF for complete information and up-to-date example code.') + // // setup plugin communication // @@ -52,6 +57,7 @@ if (typeof window.web3 !== 'undefined') { or MetaMask and another web3 extension. Please remove one and try again.`) } + var web3 = new Web3(inpageProvider) web3.setProvider = function () { log.debug('MetaMask - overrode web3.setProvider') diff --git a/app/scripts/lib/auto-reload.js b/app/scripts/lib/auto-reload.js index cce31c3d2..558391a06 100644 --- a/app/scripts/lib/auto-reload.js +++ b/app/scripts/lib/auto-reload.js @@ -2,18 +2,12 @@ module.exports = setupDappAutoReload function setupDappAutoReload (web3, observable) { // export web3 as a global, checking for usage - let hasBeenWarned = false let reloadInProgress = false let lastTimeUsed let lastSeenNetwork global.web3 = new Proxy(web3, { get: (_web3, key) => { - // show warning once on web3 access - if (!hasBeenWarned && key !== 'currentProvider') { - console.warn('MetaMask: web3 will be deprecated in the near future in favor of the ethereumProvider \nhttps://github.com/MetaMask/faq/blob/master/detecting_metamask.md#web3-deprecation') - hasBeenWarned = true - } // get the time of use lastTimeUsed = Date.now() // return value normally -- cgit From 386110ef0fda622e87fef0f82bb6282f35c420e9 Mon Sep 17 00:00:00 2001 From: Phyrex Tsai Date: Thu, 27 Sep 2018 23:21:50 +0800 Subject: fix tld bug (#5250) --- app/scripts/lib/ipfsContent.js | 2 ++ 1 file changed, 2 insertions(+) (limited to 'app') diff --git a/app/scripts/lib/ipfsContent.js b/app/scripts/lib/ipfsContent.js index 38682b916..62a808b90 100644 --- a/app/scripts/lib/ipfsContent.js +++ b/app/scripts/lib/ipfsContent.js @@ -5,6 +5,8 @@ module.exports = function (provider) { function ipfsContent (details) { const name = details.url.substring(7, details.url.length - 1) let clearTime = null + if (/^.+\.eth$/.test(name) === false) return + extension.tabs.query({active: true}, tab => { extension.tabs.update(tab.id, { url: 'loading.html' }) -- cgit From 83666e8d28d7bf7aa6cea140be359622ec781bd8 Mon Sep 17 00:00:00 2001 From: Whymarrh Whitby Date: Tue, 25 Sep 2018 11:05:17 -0230 Subject: Update extension badge with correct signTypedData count --- app/scripts/background.js | 1 + 1 file changed, 1 insertion(+) (limited to 'app') diff --git a/app/scripts/background.js b/app/scripts/background.js index 546fef569..ae450352e 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -406,6 +406,7 @@ function setupController (initState, initLangCode) { controller.txController.on('update:badge', updateBadge) controller.messageManager.on('updateBadge', updateBadge) controller.personalMessageManager.on('updateBadge', updateBadge) + controller.typedMessageManager.on('updateBadge', updateBadge) /** * Updates the Web Extension's "badge" number, on the little fox in the toolbar. -- cgit From 9d8f4d547cfe57be4aa50b245cabca65b909ca5e Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Thu, 27 Sep 2018 10:12:44 -0700 Subject: Version 4.12.0 --- app/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app') diff --git a/app/manifest.json b/app/manifest.json index 37911fc6a..7c554f1ac 100644 --- a/app/manifest.json +++ b/app/manifest.json @@ -1,7 +1,7 @@ { "name": "__MSG_appName__", "short_name": "__MSG_appName__", - "version": "4.11.1", + "version": "4.12.0", "manifest_version": 2, "author": "https://metamask.io", "description": "__MSG_appDescription__", @@ -77,4 +77,4 @@ "*" ] } -} +} \ No newline at end of file -- cgit From 78709499da08104620cd852637a6f05eb95f0902 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Thu, 27 Sep 2018 10:33:10 -0700 Subject: Version 4.13.0 --- app/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app') diff --git a/app/manifest.json b/app/manifest.json index 655c9ed10..8fef4562b 100644 --- a/app/manifest.json +++ b/app/manifest.json @@ -1,7 +1,7 @@ { "name": "__MSG_appName__", "short_name": "__MSG_appName__", - "version": "4.11.1", + "version": "4.13.0", "manifest_version": 2, "author": "https://metamask.io", "description": "__MSG_appDescription__", @@ -78,4 +78,4 @@ "*" ] } -} \ No newline at end of file +} -- cgit From 1f30ff5e47910336b9c5cf2f5b217ff922f5a61f Mon Sep 17 00:00:00 2001 From: kumavis Date: Fri, 28 Sep 2018 02:36:40 -0400 Subject: i18n - index - fix whitespace --- app/_locales/index.json | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) (limited to 'app') diff --git a/app/_locales/index.json b/app/_locales/index.json index b0b53c903..0598aa9ec 100644 --- a/app/_locales/index.json +++ b/app/_locales/index.json @@ -1,23 +1,23 @@ [ - { "code": "cs", "name": "Czech" }, - { "code": "de", "name": "German" }, - { "code": "en", "name": "English" }, - { "code": "es", "name": "Spanish" }, - { "code": "fr", "name": "French" }, - { "code": "hn", "name": "Hindi" }, - { "code": "ht", "name": "Haitian Creole" }, - { "code": "it", "name": "Italian" }, - { "code": "ja", "name": "Japanese" }, - { "code": "ko", "name": "Korean" }, - { "code": "nl", "name": "Dutch" }, - { "code": "ph", "name": "Tagalog" }, - { "code": "pt", "name": "Portuguese" }, - { "code": "ru", "name": "Russian" }, - { "code": "sl", "name": "Slovenian" }, - { "code": "th", "name": "Thai" }, - { "code": "tml", "name": "Tamil" }, - { "code": "tr", "name": "Turkish" }, - { "code": "vi", "name": "Vietnamese" }, - { "code": "zh_CN", "name": "Chinese (Simplified)" }, - { "code": "zh_TW", "name": "Chinese (Traditional)" } + { "code": "cs", "name": "Czech" }, + { "code": "de", "name": "German" }, + { "code": "en", "name": "English" }, + { "code": "es", "name": "Spanish" }, + { "code": "fr", "name": "French" }, + { "code": "ht", "name": "Haitian Creole" }, + { "code": "hn", "name": "Hindi" }, + { "code": "it", "name": "Italian" }, + { "code": "ja", "name": "Japanese" }, + { "code": "ko", "name": "Korean" }, + { "code": "nl", "name": "Dutch" }, + { "code": "ph", "name": "Tagalog" }, + { "code": "pt", "name": "Portuguese" }, + { "code": "ru", "name": "Russian" }, + { "code": "sl", "name": "Slovenian" }, + { "code": "th", "name": "Thai" }, + { "code": "tml", "name": "Tamil" }, + { "code": "tr", "name": "Turkish" }, + { "code": "vi", "name": "Vietnamese" }, + { "code": "zh_CN", "name": "Chinese (Simplified)" }, + { "code": "zh_TW", "name": "Chinese (Traditional)" } ] -- cgit From 0df8e40702d045b824f4e4cf4fcce37763a44003 Mon Sep 17 00:00:00 2001 From: kumavis Date: Fri, 28 Sep 2018 02:40:48 -0400 Subject: i18n - ht - fix json formatting --- app/_locales/ht/messages.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'app') diff --git a/app/_locales/ht/messages.json b/app/_locales/ht/messages.json index 293368851..2b9c93d3f 100644 --- a/app/_locales/ht/messages.json +++ b/app/_locales/ht/messages.json @@ -821,7 +821,7 @@ "message": "Retire kont" }, "removeAccountDescription": { - "message": "Kont sa a pral retire nan Wallet ou. Tanpri, asire ou ke ou gen orijinal fraz seed la oubyen kle prive pou rantre kont lan avan ou kontinye. Oubyen ou ka rantre kont ou ankò apati kont "drop-down" ou an." + "message": "Kont sa a pral retire nan Wallet ou. Tanpri, asire ou ke ou gen orijinal fraz seed la oubyen kle prive pou rantre kont lan avan ou kontinye. Oubyen ou ka rantre kont ou ankò apati kont \"drop-down\" ou an." }, "readyToConnect": { "message": "Pare pou konekte?" @@ -1112,9 +1112,6 @@ "transactionUpdatedGas": { "message": "Tranzaksyon ou te aktyalize avèk on pri gaz de $1 a $2." }, - "transactions": { - "message": "tranzaksyon yo" - }, "transactionError": { "message": "Erè tranzaksyon. Eksepsyon jete nan kòd kontra." }, -- cgit From 13a1d4672045371f6366bf1fc48b77cb880eb4f8 Mon Sep 17 00:00:00 2001 From: HackyMiner Date: Sat, 29 Sep 2018 04:53:58 +0900 Subject: support editable customRPC (#5267) * support editable customRPC #5246 * remove rpcList size restriction --- app/scripts/controllers/preferences.js | 13 ++++++------- app/scripts/metamask-controller.js | 9 +++++++++ 2 files changed, 15 insertions(+), 7 deletions(-) (limited to 'app') diff --git a/app/scripts/controllers/preferences.js b/app/scripts/controllers/preferences.js index 928ebdf1f..fd6a4866d 100644 --- a/app/scripts/controllers/preferences.js +++ b/app/scripts/controllers/preferences.js @@ -375,11 +375,12 @@ class PreferencesController { * Gets an updated rpc list from this.addToFrequentRpcList() and sets the `frequentRpcList` to this update list. * * @param {string} _url The the new rpc url to add to the updated list + * @param {bool} remove Remove selected url * @returns {Promise} Promise resolves with undefined * */ - updateFrequentRpcList (_url) { - return this.addToFrequentRpcList(_url) + updateFrequentRpcList (_url, remove = false) { + return this.addToFrequentRpcList(_url, remove) .then((rpcList) => { this.store.updateState({ frequentRpcList: rpcList }) return Promise.resolve() @@ -406,21 +407,19 @@ class PreferencesController { * end of the list. The current list is modified and returned as a promise. * * @param {string} _url The rpc url to add to the frequentRpcList. + * @param {bool} remove Remove selected url * @returns {Promise} The updated frequentRpcList. * */ - addToFrequentRpcList (_url) { + addToFrequentRpcList (_url, remove = false) { const rpcList = this.getFrequentRpcList() const index = rpcList.findIndex((element) => { return element === _url }) if (index !== -1) { rpcList.splice(index, 1) } - if (_url !== 'http://localhost:8545') { + if (!remove && _url !== 'http://localhost:8545') { rpcList.push(_url) } - if (rpcList.length > 3) { - rpcList.shift() - } return Promise.resolve(rpcList) } diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 123e17569..1f0527c7e 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -376,6 +376,7 @@ module.exports = class MetamaskController extends EventEmitter { // network management setProviderType: nodeify(networkController.setProviderType, networkController), setCustomRpc: nodeify(this.setCustomRpc, this), + delCustomRpc: nodeify(this.delCustomRpc, this), // PreferencesController setSelectedAddress: nodeify(preferencesController.setSelectedAddress, preferencesController), @@ -1439,6 +1440,14 @@ module.exports = class MetamaskController extends EventEmitter { return rpcTarget } + /** + * A method for deleting a selected custom URL. + * @param {string} rpcTarget - A RPC URL to delete. + */ + async delCustomRpc (rpcTarget) { + await this.preferencesController.updateFrequentRpcList(rpcTarget, true) + } + /** * Sets whether or not to use the blockie identicon format. * @param {boolean} val - True for bockie, false for jazzicon. -- cgit From 0fa9299cd150ff81095da76352a55da4909bf812 Mon Sep 17 00:00:00 2001 From: Whymarrh Whitby Date: Wed, 19 Sep 2018 22:18:28 -0230 Subject: Add "Cancel All" button to confirm footer --- app/_locales/en/messages.json | 3 +++ 1 file changed, 3 insertions(+) (limited to 'app') diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index f6cf7cf69..c48c5cc6d 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -128,6 +128,9 @@ "cancellationGasFee": { "message": "Cancellation Gas Fee" }, + "cancelN": { + "message": "Cancel all $1 transactions" + }, "classicInterface": { "message": "Use classic interface" }, -- cgit From 7610248f8c09f9fb86da700ae2818e9b4bd07832 Mon Sep 17 00:00:00 2001 From: Whymarrh Whitby Date: Mon, 24 Sep 2018 01:46:52 -0230 Subject: s/Cancel/Reject/ on confirm screen for clarity --- app/_locales/en/messages.json | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'app') diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index c48c5cc6d..6f99c50e1 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -784,6 +784,12 @@ "refundAddress": { "message": "Your Refund Address" }, + "reject": { + "message": "Reject" + }, + "rejectTxsN": { + "message": "Reject $1 transactions" + }, "rejected": { "message": "Rejected" }, -- cgit From 2e35c05f148a823d04b5a0009afd45b3fcd1d3fa Mon Sep 17 00:00:00 2001 From: Whymarrh Whitby Date: Mon, 24 Sep 2018 02:37:19 -0230 Subject: Confirm rejecting multiple transactions with modal --- app/_locales/en/messages.json | 3 +++ 1 file changed, 3 insertions(+) (limited to 'app') diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 6f99c50e1..e963fc5bd 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -790,6 +790,9 @@ "rejectTxsN": { "message": "Reject $1 transactions" }, + "rejectTxsDescription": { + "message": "You are about to batch reject $1 transactions." + }, "rejected": { "message": "Rejected" }, -- cgit From d28453234c795dc94e99b2ffea9006a6338eca2a Mon Sep 17 00:00:00 2001 From: Whymarrh Whitby Date: Thu, 27 Sep 2018 16:34:58 -0230 Subject: Reword batch reject confirm as "Reject All" --- app/_locales/en/messages.json | 3 +++ 1 file changed, 3 insertions(+) (limited to 'app') diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index e963fc5bd..89abb0e76 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -787,6 +787,9 @@ "reject": { "message": "Reject" }, + "rejectAll": { + "message": "Reject All" + }, "rejectTxsN": { "message": "Reject $1 transactions" }, -- cgit From 343ae7c143c4a729e2d94cf6dd95661d2e5f73ba Mon Sep 17 00:00:00 2001 From: Whymarrh Whitby Date: Mon, 1 Oct 2018 20:09:16 -0230 Subject: Update title and copy of phishing warning page --- app/phishing.html | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'app') diff --git a/app/phishing.html b/app/phishing.html index eabb363b3..c941fe5d2 100644 --- a/app/phishing.html +++ b/app/phishing.html @@ -3,7 +3,7 @@ - Dangerous Website Warning + Ethereum Phishing Detection - MetMask -- cgit From 5539494a5ead91fc4b35654a620ec915ce482f4d Mon Sep 17 00:00:00 2001 From: Whymarrh Whitby Date: Mon, 1 Oct 2018 21:34:29 -0230 Subject: Style links on phishing page with an underline --- app/phishing.html | 1 + 1 file changed, 1 insertion(+) (limited to 'app') diff --git a/app/phishing.html b/app/phishing.html index a1bce00fe..309021dc2 100644 --- a/app/phishing.html +++ b/app/phishing.html @@ -25,6 +25,7 @@ a { color: white; cursor: pointer; + text-decoration: underline; } -- cgit From ba39fbeb49c0691885a92e3df70b3df912144531 Mon Sep 17 00:00:00 2001 From: Whymarrh Whitby Date: Tue, 2 Oct 2018 11:27:47 -0230 Subject: Don't open metamask.io after install anymore --- app/scripts/background.js | 9 --------- 1 file changed, 9 deletions(-) (limited to 'app') diff --git a/app/scripts/background.js b/app/scripts/background.js index ae450352e..0343e134c 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -38,7 +38,6 @@ const { const firstTimeState = Object.assign({}, rawFirstTimeState, global.METAMASK_TEST_CONFIG) const STORAGE_KEY = 'metamask-config' -const METAMASK_DEBUG = process.env.METAMASK_DEBUG log.setDefaultLevel(process.env.METAMASK_DEBUG ? 'debug' : 'warn') @@ -462,11 +461,3 @@ function showWatchAssetUi () { } ) } - -// On first install, open a window to MetaMask website to how-it-works. -extension.runtime.onInstalled.addListener(function (details) { - if ((details.reason === 'install') && (!METAMASK_DEBUG)) { - extension.tabs.create({url: 'https://metamask.io/#how-it-works'}) - } -}) - -- cgit From 2c5fb11b374b36638997e1225f397f2dccb2b1e7 Mon Sep 17 00:00:00 2001 From: Whymarrh Whitby Date: Wed, 3 Oct 2018 13:49:03 -0230 Subject: Remove "Copy Contract Address" from token options --- app/_locales/en/messages.json | 3 --- app/_locales/ht/messages.json | 3 --- app/_locales/ja/messages.json | 7 ++----- app/_locales/ko/messages.json | 3 --- 4 files changed, 2 insertions(+), 14 deletions(-) (limited to 'app') diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 89abb0e76..d7431fc2c 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -200,9 +200,6 @@ "copy": { "message": "Copy" }, - "copyContractAddress": { - "message": "Copy Contract Address" - }, "copyAddress": { "message": "Copy address to clipboard" }, diff --git a/app/_locales/ht/messages.json b/app/_locales/ht/messages.json index 2b9c93d3f..50a0ec2bb 100644 --- a/app/_locales/ht/messages.json +++ b/app/_locales/ht/messages.json @@ -185,9 +185,6 @@ "copy": { "message": "Kopye" }, - "copyContractAddress": { - "message": "Kopi Kontra Adrès" - }, "copyAddress": { "message": "Kopi adrès clipboard" }, diff --git a/app/_locales/ja/messages.json b/app/_locales/ja/messages.json index c9d192139..2088ae270 100644 --- a/app/_locales/ja/messages.json +++ b/app/_locales/ja/messages.json @@ -16,7 +16,7 @@ }, "addCustomToken": { "message": "カスタムトークンを追加" - }, + }, "addToken": { "message": "トークンを追加" }, @@ -122,9 +122,6 @@ "copy": { "message": "コピー" }, - "copyContractAddress": { - "message": "コントラクトアドレスをコピー" - }, "copyToClipboard": { "message": "クリップボードへコピー" }, @@ -164,7 +161,7 @@ }, "decimal": { "message": "小数点桁数" - }, + }, "defaultNetwork": { "message": "デフォルトのEther送受信ネットワークはメインネットです。" }, diff --git a/app/_locales/ko/messages.json b/app/_locales/ko/messages.json index 30d032357..754aeca6e 100644 --- a/app/_locales/ko/messages.json +++ b/app/_locales/ko/messages.json @@ -146,9 +146,6 @@ "copy": { "message": "복사" }, - "copyContractAddress": { - "message": "컨트랙트 주소 복사" - }, "copyToClipboard": { "message": "클립보드로 복사" }, -- cgit From 41db5d0570a69450a077174742aab24f1308ed6a Mon Sep 17 00:00:00 2001 From: Alexander Tseung Date: Thu, 4 Oct 2018 10:56:58 -0700 Subject: Update "cancel" copy --- app/_locales/en/messages.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index d7431fc2c..c26dc7ecd 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -65,7 +65,7 @@ "message": "Attempt to Cancel?" }, "attemptToCancelDescription": { - "message": "Attempting to cancel does not guarantee your original transaction will be cancelled. If cancelled, you are still required to pay a transaction fee to the network." + "message": "Submitting this attempt does not guarantee your original transaction will be cancelled. If the cancellation attempt is successful, you will be charged the transaction fee above." }, "attributions": { "message": "Attributions" -- cgit From c49d854b55b3efd34c7fd0414b76f7feaa2eec7c Mon Sep 17 00:00:00 2001 From: Dan Finlay <542863+danfinlay@users.noreply.github.com> Date: Thu, 4 Oct 2018 14:08:05 -0700 Subject: Increase suggested gas percentile to 65 (#5359) * Increase suggested gas percentile to 65 I keep submitting transactions then waiting a long time. Apparently 50th percentile isn't enough. * Update test for getGasPrice --- app/scripts/metamask-controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 34ca80dd7..78dc57972 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -1363,7 +1363,7 @@ module.exports = class MetamaskController extends EventEmitter { }) .map(number => number.div(GWEI_BN).toNumber()) - const percentileNum = percentile(50, lowestPrices) + const percentileNum = percentile(65, lowestPrices) const percentileNumBn = new BN(percentileNum) return '0x' + percentileNumBn.mul(GWEI_BN).toString(16) } -- cgit From 50d91f998d0dc228c1d5dac7966df89d6c3fe6c4 Mon Sep 17 00:00:00 2001 From: Alexander Tseung Date: Thu, 4 Oct 2018 19:26:41 -0700 Subject: Translate method names in the transaction list only when applicable --- app/_locales/en/messages.json | 3 +++ 1 file changed, 3 insertions(+) (limited to 'app') diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index d7431fc2c..f19b6cd4d 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -1163,6 +1163,9 @@ "transfer": { "message": "Transfer" }, + "transferFrom": { + "message": "Transfer From" + }, "transfers": { "message": "Transfers" }, -- cgit From bc6d32e51eef892f30d9913f3f62472df490f7d9 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Fri, 5 Oct 2018 10:32:28 -0700 Subject: Update all balances on password unlock --- app/scripts/metamask-controller.js | 1 + 1 file changed, 1 insertion(+) (limited to 'app') diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 78dc57972..a7754c388 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -555,6 +555,7 @@ module.exports = class MetamaskController extends EventEmitter { } await this.preferencesController.syncAddresses(accounts) + await this.balancesController.updateAllBalances() return this.keyringController.fullUpdate() } -- cgit From 507397f6c366d570af5c6846d7e6a6f6ad3117ed Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Thu, 4 Oct 2018 15:57:38 -0700 Subject: Fix updating of pending transactions Transaction statuses were not being properly updated when: - MetaMask was unlocked - The network was changed This PR fixes both of those. Fixes #5174 --- app/scripts/controllers/transactions/index.js | 1 + app/scripts/metamask-controller.js | 1 + 2 files changed, 2 insertions(+) (limited to 'app') diff --git a/app/scripts/controllers/transactions/index.js b/app/scripts/controllers/transactions/index.js index e2965ceb6..ebd49f882 100644 --- a/app/scripts/controllers/transactions/index.js +++ b/app/scripts/controllers/transactions/index.js @@ -530,6 +530,7 @@ class TransactionController extends EventEmitter { Updates the memStore in transaction controller */ _updateMemstore () { + this.pendingTxTracker.updatePendingTxs() const unapprovedTxs = this.txStateManager.getUnapprovedTxList() const selectedAddressTxList = this.txStateManager.getFilteredTxList({ from: this.getSelectedAddress(), diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 78dc57972..921a58e91 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -555,6 +555,7 @@ module.exports = class MetamaskController extends EventEmitter { } await this.preferencesController.syncAddresses(accounts) + await this.txController.pendingTxTracker.updatePendingTxs() return this.keyringController.fullUpdate() } -- cgit From 354f8c0d7de8ff2611988f9839c2072295c955ae Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 8 Oct 2018 11:55:07 -0400 Subject: provider - enable subscription support (newHeads, logs) --- .../controllers/network/createInfuraClient.js | 10 ++++++---- app/scripts/metamask-controller.js | 20 +++++++++++++++----- 2 files changed, 21 insertions(+), 9 deletions(-) (limited to 'app') diff --git a/app/scripts/controllers/network/createInfuraClient.js b/app/scripts/controllers/network/createInfuraClient.js index 41af4d9f9..326bcb355 100644 --- a/app/scripts/controllers/network/createInfuraClient.js +++ b/app/scripts/controllers/network/createInfuraClient.js @@ -1,5 +1,6 @@ const mergeMiddleware = require('json-rpc-engine/src/mergeMiddleware') -const createBlockReEmitMiddleware = require('eth-json-rpc-middleware/block-reemit') +const createBlockReRefMiddleware = require('eth-json-rpc-middleware/block-ref') +const createRetryOnEmptyMiddleware = require('eth-json-rpc-middleware/retryOnEmpty') const createBlockCacheMiddleware = require('eth-json-rpc-middleware/block-cache') const createInflightMiddleware = require('eth-json-rpc-middleware/inflight-cache') const createBlockTrackerInspectorMiddleware = require('eth-json-rpc-middleware/block-tracker-inspector') @@ -11,13 +12,14 @@ module.exports = createInfuraClient function createInfuraClient ({ network }) { const infuraMiddleware = createInfuraMiddleware({ network }) - const blockProvider = providerFromMiddleware(infuraMiddleware) - const blockTracker = new BlockTracker({ provider: blockProvider }) + const infuraProvider = providerFromMiddleware(infuraMiddleware) + const blockTracker = new BlockTracker({ provider: infuraProvider }) const networkMiddleware = mergeMiddleware([ createBlockCacheMiddleware({ blockTracker }), createInflightMiddleware(), - createBlockReEmitMiddleware({ blockTracker, provider: blockProvider }), + createBlockReRefMiddleware({ blockTracker, provider: infuraProvider }), + createRetryOnEmptyMiddleware({ blockTracker, provider: infuraProvider }), createBlockTrackerInspectorMiddleware({ blockTracker }), infuraMiddleware, ]) diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 34ca80dd7..a59be7744 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -15,6 +15,7 @@ const RpcEngine = require('json-rpc-engine') const debounce = require('debounce') const createEngineStream = require('json-rpc-middleware-stream/engineStream') const createFilterMiddleware = require('eth-json-rpc-filters') +const createSubscriptionManager = require('eth-json-rpc-filters/subscriptionManager') const createOriginMiddleware = require('./lib/createOriginMiddleware') const createLoggerMiddleware = require('./lib/createLoggerMiddleware') const createProviderMiddleware = require('./lib/createProviderMiddleware') @@ -1246,24 +1247,33 @@ module.exports = class MetamaskController extends EventEmitter { setupProviderConnection (outStream, origin) { // setup json rpc engine stack const engine = new RpcEngine() + const provider = this.provider + const blockTracker = this.blockTracker // create filter polyfill middleware - const filterMiddleware = createFilterMiddleware({ - provider: this.provider, - blockTracker: this.blockTracker, - }) + const filterMiddleware = createFilterMiddleware({ provider, blockTracker }) + // create subscription polyfill middleware + const subscriptionManager = createSubscriptionManager({ provider, blockTracker }) + subscriptionManager.events.on('notification', (message) => engine.emit('notification', message)) + // metadata engine.push(createOriginMiddleware({ origin })) engine.push(createLoggerMiddleware({ origin })) + // filter and subscription polyfills engine.push(filterMiddleware) + engine.push(subscriptionManager.middleware) + // watch asset engine.push(this.preferencesController.requestWatchAsset.bind(this.preferencesController)) + // sign typed data middleware engine.push(this.createTypedDataMiddleware('eth_signTypedData', 'V1').bind(this)) engine.push(this.createTypedDataMiddleware('eth_signTypedData_v1', 'V1').bind(this)) engine.push(this.createTypedDataMiddleware('eth_signTypedData_v3', 'V3', true).bind(this)) - engine.push(createProviderMiddleware({ provider: this.provider })) + // forward to metamask primary provider + engine.push(createProviderMiddleware({ provider })) // setup connection const providerStream = createEngineStream({ engine }) + pump( outStream, providerStream, -- cgit From fe82c4a9fbf3b543779ebc980fedc178777fed12 Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 8 Oct 2018 12:39:18 -0400 Subject: provider - network - restore block-ref-rewrite middleware references --- app/scripts/controllers/network/createJsonRpcClient.js | 4 ++-- app/scripts/controllers/network/createLocalhostClient.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'app') diff --git a/app/scripts/controllers/network/createJsonRpcClient.js b/app/scripts/controllers/network/createJsonRpcClient.js index 40c353f7f..a8cbf2aaf 100644 --- a/app/scripts/controllers/network/createJsonRpcClient.js +++ b/app/scripts/controllers/network/createJsonRpcClient.js @@ -1,6 +1,6 @@ const mergeMiddleware = require('json-rpc-engine/src/mergeMiddleware') const createFetchMiddleware = require('eth-json-rpc-middleware/fetch') -const createBlockRefMiddleware = require('eth-json-rpc-middleware/block-ref') +const createBlockRefRewriteMiddleware = require('eth-json-rpc-middleware/block-ref-rewrite') const createBlockCacheMiddleware = require('eth-json-rpc-middleware/block-cache') const createInflightMiddleware = require('eth-json-rpc-middleware/inflight-cache') const createBlockTrackerInspectorMiddleware = require('eth-json-rpc-middleware/block-tracker-inspector') @@ -15,7 +15,7 @@ function createJsonRpcClient ({ rpcUrl }) { const blockTracker = new BlockTracker({ provider: blockProvider }) const networkMiddleware = mergeMiddleware([ - createBlockRefMiddleware({ blockTracker }), + createBlockRefRewriteMiddleware({ blockTracker }), createBlockCacheMiddleware({ blockTracker }), createInflightMiddleware(), createBlockTrackerInspectorMiddleware({ blockTracker }), diff --git a/app/scripts/controllers/network/createLocalhostClient.js b/app/scripts/controllers/network/createLocalhostClient.js index fecc512e8..09b1d3c1c 100644 --- a/app/scripts/controllers/network/createLocalhostClient.js +++ b/app/scripts/controllers/network/createLocalhostClient.js @@ -1,6 +1,6 @@ const mergeMiddleware = require('json-rpc-engine/src/mergeMiddleware') const createFetchMiddleware = require('eth-json-rpc-middleware/fetch') -const createBlockRefMiddleware = require('eth-json-rpc-middleware/block-ref') +const createBlockRefRewriteMiddleware = require('eth-json-rpc-middleware/block-ref-rewrite') const createBlockTrackerInspectorMiddleware = require('eth-json-rpc-middleware/block-tracker-inspector') const providerFromMiddleware = require('eth-json-rpc-middleware/providerFromMiddleware') const BlockTracker = require('eth-block-tracker') @@ -13,7 +13,7 @@ function createLocalhostClient () { const blockTracker = new BlockTracker({ provider: blockProvider, pollingInterval: 1000 }) const networkMiddleware = mergeMiddleware([ - createBlockRefMiddleware({ blockTracker }), + createBlockRefRewriteMiddleware({ blockTracker }), createBlockTrackerInspectorMiddleware({ blockTracker }), fetchMiddleware, ]) -- cgit From 8279916ee415157dbda89578e6fd1b934e9d344e Mon Sep 17 00:00:00 2001 From: Eduardo Antuña Díez Date: Mon, 8 Oct 2018 21:50:15 +0200 Subject: Added webRequest.RequestFilter to filter main_frame .eth requests --- app/scripts/lib/ipfsContent.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/scripts/lib/ipfsContent.js b/app/scripts/lib/ipfsContent.js index 62a808b90..8b08453c4 100644 --- a/app/scripts/lib/ipfsContent.js +++ b/app/scripts/lib/ipfsContent.js @@ -36,7 +36,7 @@ module.exports = function (provider) { return { cancel: true } } - extension.webRequest.onErrorOccurred.addListener(ipfsContent, {urls: ['*://*.eth/']}) + extension.webRequest.onErrorOccurred.addListener(ipfsContent, {urls: ['*://*.eth/'], types: ['main_frame']}) return { remove () { -- cgit From 45feb43f306f4b21ef007e0c8897cda384c28fc5 Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 8 Oct 2018 16:54:13 -0400 Subject: workaround - fix for drizzle --- app/scripts/inpage.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'app') diff --git a/app/scripts/inpage.js b/app/scripts/inpage.js index d924be516..431702d63 100644 --- a/app/scripts/inpage.js +++ b/app/scripts/inpage.js @@ -5,6 +5,7 @@ const log = require('loglevel') const LocalMessageDuplexStream = require('post-message-stream') const setupDappAutoReload = require('./lib/auto-reload.js') const MetamaskInpageProvider = require('metamask-inpage-provider') + restoreContextAfterImports() log.setDefaultLevel(process.env.METAMASK_DEBUG ? 'debug' : 'warn') @@ -44,7 +45,15 @@ inpageProvider.enable = function (options = {}) { }) } -window.ethereum = inpageProvider +// Work around for web3@1.0 deleting the bound `sendAsync` but not the unbound +// `sendAsync` method on the prototype, causing `this` reference issues with drizzle +const proxiedInpageProvider = new Proxy(inpageProvider, { + // straight up lie that we deleted the property so that it doesnt + // throw an error in strict mode + deleteProperty: () => true, +}) + +window.ethereum = proxiedInpageProvider // // setup web3 @@ -58,7 +67,7 @@ if (typeof window.web3 !== 'undefined') { and try again.`) } -var web3 = new Web3(inpageProvider) +var web3 = new Web3(proxiedInpageProvider) web3.setProvider = function () { log.debug('MetaMask - overrode web3.setProvider') } -- cgit From ebdefe81a10595bb3341afa2ab0851c8269c19d8 Mon Sep 17 00:00:00 2001 From: Noel Yoo Date: Tue, 9 Oct 2018 21:02:48 +0900 Subject: Refactor buffer constructor (#5468) --- app/scripts/lib/message-manager.js | 2 +- app/scripts/lib/personal-message-manager.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'app') diff --git a/app/scripts/lib/message-manager.js b/app/scripts/lib/message-manager.js index 47925b94b..e86629590 100644 --- a/app/scripts/lib/message-manager.js +++ b/app/scripts/lib/message-manager.js @@ -272,6 +272,6 @@ function normalizeMsgData (data) { return data } else { // data is unicode, convert to hex - return ethUtil.bufferToHex(new Buffer(data, 'utf8')) + return ethUtil.bufferToHex(Buffer.from(data, 'utf8')) } } diff --git a/app/scripts/lib/personal-message-manager.js b/app/scripts/lib/personal-message-manager.js index fc2cccdf1..fdb94f5ec 100644 --- a/app/scripts/lib/personal-message-manager.js +++ b/app/scripts/lib/personal-message-manager.js @@ -285,7 +285,7 @@ module.exports = class PersonalMessageManager extends EventEmitter { log.debug(`Message was not hex encoded, interpreting as utf8.`) } - return ethUtil.bufferToHex(new Buffer(data, 'utf8')) + return ethUtil.bufferToHex(Buffer.from(data, 'utf8')) } } -- cgit From cd91b45686864c5d38fc95e3a561ca66b36ade7c Mon Sep 17 00:00:00 2001 From: Vincent Date: Tue, 9 Oct 2018 16:47:38 +0200 Subject: 100% French locale, reordering of English locale, fixes #5457 (#5470) * french locales: fix typos and improve wording * french locales: more fixes and rewording * fixed typo * fixed typo * added missing translations * fixed alphabetical order * fixed alphabetical order * added missing translations for FR * fixed verify-locale-strings.js * fixed indentation * fixed indentation * updated french locale * updated changelog with changes logs * a few fixes after receiving comments, mostly Caps removing and adding --- app/_locales/en/messages.json | 176 +++++----- app/_locales/fr/messages.json | 749 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 802 insertions(+), 123 deletions(-) (limited to 'app') diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 14ba158df..66f378ab8 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -3,7 +3,7 @@ "message": "Accept" }, "accessingYourCamera": { - "message": "Accesing your camera..." + "message": "Accessing your camera..." }, "account": { "message": "Account" @@ -99,7 +99,7 @@ "message": "Borrow With Dharma (Beta)" }, "browserNotSupported": { - "message": "Your Browser is not supported..." + "message": "Your Browser is not supported..." }, "builtInCalifornia": { "message": "MetaMask is designed and built in California." @@ -167,6 +167,21 @@ "connecting": { "message": "Connecting..." }, + "connectingToKovan": { + "message": "Connecting to Kovan Test Network" + }, + "connectingToMainnet": { + "message": "Connecting to Main Ethereum Network" + }, + "connectingToRopsten": { + "message": "Connecting to Ropsten Test Network" + }, + "connectingToRinkeby": { + "message": "Connecting to Rinkeby Test Network" + }, + "connectingToUnknown": { + "message": "Connecting to Unknown Network" + }, "connectToLedger": { "message": "Connect to Ledger" }, @@ -234,6 +249,9 @@ "currentNetwork": { "message": "Current Network" }, + "currentRpc": { + "message": "Current RPC" + }, "customGas": { "message": "Customize Gas" }, @@ -340,15 +358,6 @@ "enterPasswordContinue": { "message": "Enter password to continue" }, - "parameters": { - "message": "Parameters" - }, - "passwordNotLongEnough": { - "message": "Password not long enough" - }, - "passwordsDontMatch": { - "message": "Passwords Don't Match" - }, "etherscanView": { "message": "View account on Etherscan" }, @@ -504,6 +513,9 @@ "importUsingSeed": { "message": "Import using account seed phrase" }, + "info": { + "message": "Info" + }, "infoHelp": { "message": "Info & Help" }, @@ -532,7 +544,7 @@ "message": "Invalid Request" }, "invalidRPC": { - "message": "Invalid RPC URI" + "message": "Invalid RPC URL" }, "invalidSeedPhrase": { "message": "Invalid seed phrase" @@ -656,6 +668,9 @@ "newPassword": { "message": "New Password (min 8 chars)" }, + "newPassword8Chars": { + "message": "New Password (min 8 chars)" + }, "newRecipient": { "message": "New Recipient" }, @@ -698,6 +713,13 @@ "oldUIMessage": { "message": "You have returned to the old UI. You can switch back to the New UI through the option in the top right dropdown menu." }, + "onlySendToEtherAddress": { + "message": "Only send ETH to an Ethereum address." + }, + "onlySendTokensToAccountAddress": { + "message": "Only send $1 to an Ethereum account address.", + "description": "displays token symbol" + }, "openInTab": { "message": "Open in tab" }, @@ -705,9 +727,24 @@ "message": "or", "description": "choice between creating or importing a new account" }, + "orderOneHere": { + "message": "Order a Trezor or Ledger and keep your funds in cold storage" + }, "origin": { "message": "Origin" }, + "outgoing": { + "message": "Outgoing" + }, + "parameters": { + "message": "Parameters" + }, + "passwordNotLongEnough": { + "message": "Password not long enough" + }, + "passwordsDontMatch": { + "message": "Passwords Don't Match" + }, "password": { "message": "Password" }, @@ -865,24 +902,6 @@ "rpc": { "message": "Custom RPC" }, - "currentRpc": { - "message": "Current RPC" - }, - "connectingToMainnet": { - "message": "Connecting to Main Ethereum Network" - }, - "connectingToRopsten": { - "message": "Connecting to Ropsten Test Network" - }, - "connectingToKovan": { - "message": "Connecting to Kovan Test Network" - }, - "connectingToRinkeby": { - "message": "Connecting to Rinkeby Test Network" - }, - "connectingToUnknown": { - "message": "Connecting to Unknown Network" - }, "sampleAccountName": { "message": "E.g. My new account", "description": "Help user understand concept of adding a human-readable name to their account" @@ -890,15 +909,6 @@ "save": { "message": "Save" }, - "speedUp": { - "message": "speed up" - }, - "speedUpTitle": { - "message": "Speed Up Transaction" - }, - "speedUpSubtitle": { - "message": "Increase your gas price to attempt to overwrite and speed up your transaction" - }, "saveAsCsvFile": { "message": "Save as CSV File" }, @@ -909,6 +919,12 @@ "saveSeedAsFile": { "message": "Save Seed Words As File" }, + "scanInstructions": { + "message": "Place the QR code in front of your camera" + }, + "scanQrCode": { + "message": "Scan QR Code" + }, "search": { "message": "Search" }, @@ -918,15 +934,6 @@ "secretPhrase": { "message": "Enter your secret twelve word phrase here to restore your vault." }, - "showHexData": { - "message": "Show Hex Data" - }, - "showHexDataDescription": { - "message": "Select this to show the hex data field on the send screen" - }, - "newPassword8Chars": { - "message": "New Password (min 8 chars)" - }, "seedPhraseReq": { "message": "Seed phrases are 12 words long" }, @@ -963,19 +970,6 @@ "separateEachWord": { "message": "Separate each word with a single space" }, - "onlySendToEtherAddress": { - "message": "Only send ETH to an Ethereum address." - }, - "onlySendTokensToAccountAddress": { - "message": "Only send $1 to an Ethereum account address.", - "description": "displays token symbol" - }, - "orderOneHere": { - "message": "Order a Trezor or Ledger and keep your funds in cold storage" - }, - "outgoing": { - "message": "Outgoing" - }, "searchTokens": { "message": "Search Tokens" }, @@ -1000,33 +994,6 @@ "settings": { "message": "Settings" }, - "step1HardwareWallet": { - "message": "1. Connect Hardware Wallet" - }, - "step1HardwareWalletMsg": { - "message": "Connect your hardware wallet directly to your computer." - }, - "step2HardwareWallet": { - "message": "2. Select an Account" - }, - "step2HardwareWalletMsg": { - "message": "Select the account you want to view. You can only choose one at a time." - }, - "step3HardwareWallet": { - "message": "3. Start using dApps and more!" - }, - "step3HardwareWalletMsg": { - "message": "Use your hardware account like you would with any Ethereum account. Log in to dApps, send Eth, buy and store ERC20 tokens and Non-Fungible tokens like CryptoKitties." - }, - "info": { - "message": "Info" - }, - "scanInstructions": { - "message": "Place the QR code in front of your camera" - }, - "scanQrCode": { - "message": "Scan QR Code" - }, "shapeshiftBuy": { "message": "Buy with Shapeshift" }, @@ -1036,6 +1003,12 @@ "showQRCode": { "message": "Show QR Code" }, + "showHexData": { + "message": "Show Hex Data" + }, + "showHexDataDescription": { + "message": "Select this to show the hex data field on the send screen" + }, "sign": { "message": "Sign" }, @@ -1060,6 +1033,15 @@ "spaceBetween": { "message": "there can only be a space between words" }, + "speedUp": { + "message": "speed up" + }, + "speedUpTitle": { + "message": "Speed Up Transaction" + }, + "speedUpSubtitle": { + "message": "Increase your gas price to attempt to overwrite and speed up your transaction" + }, "status": { "message": "Status" }, @@ -1072,6 +1054,24 @@ "stateLogError": { "message": "Error in retrieving state logs." }, + "step1HardwareWallet": { + "message": "1. Connect Hardware Wallet" + }, + "step1HardwareWalletMsg": { + "message": "Connect your hardware wallet directly to your computer." + }, + "step2HardwareWallet": { + "message": "2. Select an Account" + }, + "step2HardwareWalletMsg": { + "message": "Select the account you want to view. You can only choose one at a time." + }, + "step3HardwareWallet": { + "message": "3. Start using dApps and more!" + }, + "step3HardwareWalletMsg": { + "message": "Use your hardware account like you would with any Ethereum account. Log in to dApps, send Eth, buy and store ERC20 tokens and Non-Fungible tokens like CryptoKitties." + }, "submit": { "message": "Submit" }, diff --git a/app/_locales/fr/messages.json b/app/_locales/fr/messages.json index 6f850d89b..55a7582ce 100644 --- a/app/_locales/fr/messages.json +++ b/app/_locales/fr/messages.json @@ -2,6 +2,9 @@ "accept": { "message": "Accepter" }, + "accessingYourCamera": { + "message": "Accès à votre appareil photo..." + }, "account": { "message": "Compte" }, @@ -11,12 +14,30 @@ "accountName": { "message": "Nom du compte" }, + "accountSelectionRequired": { + "message": "Vous devez selectionner un compte !" + }, + "activityLog": { + "message": "Log d'activité" + }, "address": { "message": "Adresse" }, + "addCustomToken": { + "message": "Ajouter un jeton personnalisé" + }, "addToken": { "message": "Ajouter un jeton" }, + "addTokens": { + "message": "Ajouter des jetons" + }, + "addSuggestedTokens": { + "message": "Ajouter les jetons suggérés" + }, + "addAcquiredTokens": { + "message": "Ajouter les jetons que vous avez acquis par l'intermédiaire de MetaMask" + }, "amount": { "message": "Montant" }, @@ -31,8 +52,23 @@ "message": "MetaMask", "description": "Le nom de l'application" }, + "approve": { + "message": "Approuver" + }, + "approved": { + "message": "Approuvé" + }, "attemptingConnect": { - "message": "Tentative de connexion à blockchain." + "message": "Tentative de connexion au réseau" + }, + "attemptToCancel": { + "message": "Tenter d'annuler ?" + }, + "attemptToCancelDescription": { + "message": "Faire une demande d'annulation ne garantit pas que votre transaction originale sera bien annulée. Dans le cas où l'annulation réussit, vous payerez les frais de transaction indiqués ci-dessus." + }, + "attributions": { + "message": "Attributions" }, "available": { "message": "Disponible" @@ -43,6 +79,9 @@ "balance": { "message": "Balance:" }, + "balances": { + "message": "Balance(s) de(s) jeton(s)" + }, "balanceIsInsufficientGas": { "message": "Solde insuffisant pour le total actuel de gaz" }, @@ -53,9 +92,18 @@ "message": "doit être supérieur ou égal à $1 et inférieur ou égal à $2", "description": "helper pour la saisie hexadécimale en entrée décimale" }, + "blockiesIdenticon": { + "message": "Utiliser les Identicon Blockies" + }, "borrowDharma": { "message": "Emprunter avec Dharma (Bêta)" }, + "browserNotSupported": { + "message": "Votre navigateur internet n'est pas supporté..." + }, + "builtInCalifornia": { + "message": "MetaMask est designé et developpé en Californie." + }, "buy": { "message": "Acheter" }, @@ -63,17 +111,44 @@ "message": "Acheter sur Coinbase" }, "buyCoinbaseExplainer": { - "message": "Coinbase est le moyen le plus populaire au monde d'acheter et de vendre du Bitcoin, de l'Ethereum et du Litecoin." + "message": "Coinbase est le moyen le plus populaire d'acheter et de vendre des Ethers." + }, + "bytes": { + "message": "Bytes" + }, + "ok": { + "message": "Ok" }, "cancel": { "message": "Annuler" }, + "cancelAttempt": { + "message": "Annuler la tentative." + }, + "cancellationGasFee": { + "message": "Frais en gas de l'annulation" + }, + "cancelN": { + "message": "Annuler toutes les transactions $1" + }, + "classicInterface": { + "message": "Utiliser l'interface classique" + }, "clickCopy": { "message": "Cliquer pour copier" }, + "close": { + "message": "Fermer" + }, + "chromeRequiredForHardwareWallets":{ + "message": "Pour connecter votre portefeuille hardware, vous devez utiliser MetaMask pour Google Chrome." + }, "confirm": { "message": "Confirmer" }, + "confirmed": { + "message": "Confirmé" + }, "confirmContract": { "message": "Confirmer le contrat" }, @@ -83,6 +158,39 @@ "confirmTransaction": { "message": "Confirmer la transaction" }, + "connectHardwareWallet": { + "message": "Connecter un portefeuille hardware" + }, + "connect": { + "message": "Connecter" + }, + "connecting": { + "message": "Connection..." + }, + "connectingToKovan": { + "message": "Connection au réseau de test Kovan" + }, + "connectingToMainnet": { + "message": "Connection au Réseau principal Ethereum" + }, + "connectingToRopsten": { + "message": "Connection au réseau de test Ropsten" + }, + "connectingToRinkeby": { + "message": "Connection au réseau de test Rinkeby" + }, + "connectingToUnknown": { + "message": "Connection à un réseau inconnu" + }, + "connectToLedger": { + "message": "Connecter un Ledger" + }, + "connectToTrezor": { + "message": "Connecter un Trezor" + }, + "continue": { + "message": "Continuer" + }, "continueToCoinbase": { "message": "Continuer vers Coinbase" }, @@ -101,9 +209,15 @@ "copiedExclamation": { "message": "Copié!" }, + "copiedSafe": { + "message": "Copié de manière sécurisé" + }, "copy": { "message": "Copier" }, + "copyAddress": { + "message": "Copier l'addresse dans le presse-papier" + }, "copyToClipboard": { "message": "Copier dans le presse-papier" }, @@ -120,14 +234,29 @@ "message": "Créer un compte" }, "createDen": { - "message": "Créer" + "message": "Créer un antre" }, "crypto": { "message": "Crypto", "description": "Type d'échange (cryptocurrencies)" }, + "currentConversion": { + "message": "Conversion actuelle" + }, + "currentLanguage": { + "message": "Langue actuelle" + }, + "currentNetwork": { + "message": "Réseau actuel" + }, + "currentRpc": { + "message": "RPC Actuel" + }, "customGas": { - "message": "Personnaliser le Gaz" + "message": "Personnaliser le gaz" + }, + "customToken": { + "message": "Jeton personnalisé" }, "customize": { "message": "Personnaliser" @@ -135,39 +264,45 @@ "customRPC": { "message": "RPC personnalisé" }, + "decimalsMustZerotoTen": { + "message": "Les décimales doivent être plus grandes que 0 et inférieures à 36." + }, + "decimal": { + "message": "Décimales de précision" + }, "defaultNetwork": { - "message": "Le réseau par défaut pour les transactions Ether est Main Net." + "message": "Le réseau par défaut pour les transactions Ether est le \"Réseau principal Ethereum\"." }, "denExplainer": { "message": "Votre DEN est votre stockage crypté par mot de passe dans MetaMask." }, "deposit": { - "message": "Dépôt" + "message": "Déposer" }, "depositBTC": { "message": "Déposez vos BTC à l'adresse ci-dessous:" }, "depositCoin": { - "message": "Déposez votre $1 à l'adresse ci-dessous", - "description": "Indique à l'utilisateur quelle monnaie il a choisi de déposer avec shapeshift" + "message": "Déposer votre $1 à l'adresse ci-dessous", + "description": "Indique à l'utilisateur quelle monnaie il a choisi de déposer avec Shapeshift" }, "depositEth": { - "message": "Dépôt Eth" + "message": "Déposer Eth" }, "depositEther": { - "message": "Dépôt Ether" + "message": "Déposer de l'Ether" }, "depositFiat": { - "message": "Dépôt de monnaie-fiat" + "message": "Déposer de la monnaie-fiat" }, "depositFromAccount": { - "message": "Dépôt d'un autre compte" + "message": "Déposer depuis un autre compte" }, "depositShapeShift": { - "message": "Déposez avec ShapeShift" + "message": "Déposer avec ShapeShift" }, "depositShapeShiftExplainer": { - "message": "Si vous possédez d'autres crypto-monnaies, vous pouvez échanger et déposer de l'Ether directement dans votre portefeuille MetaMask. Aucun compte n'est requis." + "message": "Si vous possédez d'autres crypto-monnaies, vous pouvez échanger et déposer de l'Ether directement dans votre portefeuille MetaMask via Shapeshift. Aucun compte n'est requis." }, "details": { "message": "Détails" @@ -182,7 +317,19 @@ "message": "Si vous avez déjà de l'Ether, le moyen le plus rapide d'obtenir des Ether dans votre nouveau portefeuille est par dépôt direct." }, "done": { - "message": "Fait" + "message": "Terminé" + }, + "downloadGoogleChrome": { + "message": "Télécharger Google Chrome" + }, + "downloadStateLogs": { + "message": "Télécharger les Logs d'état" + }, + "dontHaveAHardwareWallet": { + "message": "Vous n'avez pas de portefeuille hardware ?" + }, + "dropped": { + "message": "Déconnecté" }, "edit": { "message": "Modifier" @@ -190,12 +337,27 @@ "editAccountName": { "message": "Modifier le nom du compte" }, + "editingTransaction": { + "message": "Modifier votre transaction" + }, + "emailUs": { + "message": "Envoyez-nous un email !" + }, "encryptNewDen": { "message": "Chiffrer votre nouveau DEN" }, + "ensNameNotFound": { + "message": "Nom ENS inconnu" + }, "enterPassword": { "message": "Entrer le mot de passe" }, + "enterPasswordConfirm": { + "message": "Enter your password to confirm" + }, + "enterPasswordContinue": { + "message": "Enter password to continue" + }, "etherscanView": { "message": "Afficher le compte sur Etherscan" }, @@ -219,30 +381,45 @@ "message": "L'importation de fichier ne fonctionne pas? Cliquez ici!", "description": "Aide l'utilisateur à importer son compte à partir d'un fichier JSON" }, + "followTwitter": { + "message": "Suivez-nous sur Twitter" + }, + "forgetDevice": { + "message": "Oublier cet appareil" + }, "from": { "message": "de" }, + "fromToSame": { + "message": "Les addresses d'origine et de destination doivent être différentes" + }, "fromShapeShift": { - "message": "ShapeShift de" + "message": "de ShapeShift" + }, + "functionType": { + "message": "Type de fonction" }, "gas": { "message": "Gas", - "description": "Indication courte du coût du gaz" + "description": "Indication brève du coût du gaz" }, "gasFee": { - "message": "Frais de gaz" + "message": "Coût en gaz" }, "gasLimit": { - "message": "Limite de gaz" + "message": "Quantité max. de gaz" }, "gasLimitCalculation": { - "message": "Nous calculons la limite de gaz suggérée en fonction des taux de réussite du réseau." + "message": "Nous calculons la quantité max. de gaz suggérée en fonction du code exécuté." }, "gasLimitRequired": { - "message": "Limite de gaz requise" + "message": "Quantité max. de gaz requise" }, "gasLimitTooLow": { - "message": "La limite de gaz doit être d'au moins 21000" + "message": "La quantité max. de gaz doit être d'au moins 21000" + }, + "generatingSeed": { + "message": "Generation de la Seed..." }, "gasPrice": { "message": "Prix du gaz (GWEI)" @@ -253,6 +430,9 @@ "gasPriceRequired": { "message": "Prix du gaz requis" }, + "generatingTransaction": { + "message": "Préparation de la transaction" + }, "getEther": { "message": "Obtenir des Ether" }, @@ -260,14 +440,38 @@ "message": "Obtenir de l'Ether d'une faucet pour $1", "description": "Affiche le nom du réseau pour la faucet d'Ether" }, + "getHelp": { + "message": "Obtenir de l'aide." + }, "greaterThanMin": { "message": "doit être supérieur ou égal à $1.", "description": "helper pour la saisie hexadécimale en entrée décimale" }, + "hardware": { + "message": "hardware" + }, + "hardwareWalletConnected": { + "message": "Portefeuille hardware connecté" + }, + "hardwareWallets": { + "message": "Connecter un portefeuille hardware" + }, + "hardwareWalletsMsg": { + "message": "Selectionnez le portefeuille hardware que vous voulez utiliser avec MetaMask" + }, + "havingTroubleConnecting": { + "message": "Un problème de connection ?" + }, "here": { "message": "ici", "description": "comme dans -cliquer ici- pour plus d'informations (en rapport avec troubleTokenBalances)" }, + "hereList": { + "message": "Voici une liste !!!!" + }, + "hexData": { + "message": "Data Hex" + }, "hide": { "message": "Cacher" }, @@ -277,15 +481,24 @@ "hideTokenPrompt": { "message": "Masquer le jeton?" }, + "history": { + "message": "Historique" + }, "howToDeposit": { "message": "Comment voulez-vous déposer de l'Ether?" }, + "holdEther": { + "message": "Cela vous permet de conserver vos Ethers et vos jetons afin d'utiliser directement des applications décentralisées." + }, "import": { "message": "Importer", "description": "Bouton pour importer un compte à partir d'un fichier sélectionné" }, "importAccount": { - "message": "Importer compte" + "message": "Importer un compte" + }, + "importAccountMsg": { + "message":" Les comptes importés ne seront pas associés avec votre phrase Seed que vous avez créé au départ dans MetaMask. Obtenir plus d'information sur les comptes importés" }, "importAnAccount": { "message": "Importer un compte" @@ -297,32 +510,80 @@ "message": "Importé", "description": "statut indiquant qu'un compte a été entièrement chargé dans le trousseau de clés" }, + "importUsingSeed": { + "message": "Importer à partir de la phrase Seed du compte" + }, + "info": { + "message": "Info" + }, "infoHelp": { "message": "Info & Aide" }, + "initialTransactionConfirmed": { + "message": "Votre transaction initiale a été confirmée par le réseau. Cliquez sur OK pour retourner à l'écran précédent." + }, + "insufficientFunds": { + "message": "Insufficient funds." + }, + "insufficientTokens": { + "message": "Insufficient tokens." + }, "invalidAddress": { "message": "Adresse invalide" }, + "invalidAddressRecipient": { + "message": "L'adresse du destinataire n'est pas valide" + }, "invalidGasParams": { "message": "Paramètres de gaz invalides" }, "invalidInput": { - "message": "Entrée non valide." + "message": "Saisie non valide." }, "invalidRequest": { "message": "Requête invalide" }, + "invalidRPC": { + "message": "URL RPC invalide" + }, + "invalidSeedPhrase": { + "message": "Phrase Seed invalide" + }, + "jsonFail": { + "message": "Il y a eu un problème. Veuillez vérifier que votre fichier json a le bon format." + }, "jsonFile": { "message": "Fichier JSON", "description": "format d'importation d'un compte" }, + "keepTrackTokens": { + "message": "Garder la trace des jetons que vous avez acheté avec votre compte MetaMask." + }, "kovan": { "message": "Réseau de test Kovan" }, + "knowledgeDataBase": { + "message": "Visitez notre base de connaissances" + }, + "max": { + "message": "Max" + }, + "learnMore": { + "message": "En savoir plus" + }, + "ledgerAccountRestriction": { + "message": "Vous devez d'abord utiliser le dernier compte que vous avez créé avant de pouvoir en créer un autre." + }, "lessThanMax": { "message": "doit être inférieur ou égal à $1.", "description": "helper pour la saisie hexadécimale en entrée décimale" }, + "likeToAddTokens": { + "message": "Souhaitez-vous ajouter ces jetons ?" + }, + "links": { + "message": "Liens" + }, "limit": { "message": "Limite" }, @@ -335,26 +596,47 @@ "localhost": { "message": "Localhost 8545" }, + "login": { + "message": "Connexion" + }, "logout": { "message": "Déconnexion" }, "loose": { "message": "Vacant" }, + "loweCaseWords": { + "message": "Les mots seed n'ont que des caractères en minuscules" + }, "mainnet": { "message": "Réseau principal Ethereum" }, + "menu": { + "message": "Menu" + }, "message": { "message": "Message" }, + "metamaskDescription": { + "message": "MetaMask est un coffre sécurisé pour votre identité sur Ethereum." + }, + "metamaskSeedWords": { + "message": "Mots Seed pour MetaMask" + }, + "metamaskVersion": { + "message": "Version de MetaMask" + }, "min": { "message": "Minimum" }, "myAccounts": { "message": "Mes comptes" }, + "mustSelectOne": { + "message": "Vous devez selectionner au moins 1 jeton." + }, "needEtherInWallet": { - "message": "Pour interagir avec des applications décentralisées à l'aide de MetaMask, vous aurez besoin d'Ether dans votre portefeuille." + "message": "Pour interagir avec des applications décentralisées à l'aide de MetaMask, vous avez besoin d'Ether dans votre portefeuille." }, "needImportFile": { "message": "Vous devez sélectionner un fichier à importer.", @@ -364,9 +646,15 @@ "message": "Vous devez entrer un mot de passe pour le fichier sélectionné.", "description": "Mot de passe et fichier requis pour importer un compte" }, + "negativeETH": { + "message": "Vous ne pouvez envoyer des montants négatifs d'ETH." + }, "networks": { "message": "Réseaux" }, + "nevermind": { + "message": "Abandonner" + }, "newAccount": { "message": "Nouveau compte" }, @@ -380,9 +668,15 @@ "newPassword": { "message": "Nouveau mot de passe (min 8 caractères)" }, + "newPassword8Chars": { + "message": "Nouveau mot de passe (min 8 caractères)" + }, "newRecipient": { "message": "Nouveau destinataire" }, + "newRPC": { + "message": "Nouvelle URL RPC" + }, "next": { "message": "Suivant" }, @@ -392,31 +686,77 @@ "noDeposits": { "message": "Aucun dépôt reçu" }, + "noConversionRateAvailable":{ + "message": "Aucun taux de conversion disponible" + }, "noTransactionHistory": { "message": "Aucun historique de transaction." }, "noTransactions": { "message": "Aucune transaction" }, + "notFound": { + "message": "Non trouvé" + }, "notStarted": { "message": "Pas démarré" }, + "noWebcamFoundTitle": { + "message": "Webcam introuvable" + }, + "noWebcamFound": { + "message": "La caméra de votre ordinateur n'a pas été trouvée. Veuillez réessayer." + }, "oldUI": { "message": "Ancienne interface utilisateur" }, "oldUIMessage": { - "message": "Vous êtes revenu à l'ancienne interface utilisateur.Vous pouvez revenir à la nouvelle interface via l'option dans le menu déroulant en haut à droite." + "message": "Vous êtes revenu à l'ancienne interface utilisateur. Vous pouvez revenir à la nouvelle interface via l'option dans le menu déroulant en haut à droite." + }, + "onlySendToEtherAddress": { + "message": "N'envoyez de l'Ether que sur une adresse Ethereum." + }, + "onlySendTokensToAccountAddress": { + "message": "N'envoyez des $1 que sur une adresse Ethereum.", + "description": "displays token symbol" + }, + "openInTab": { + "message": "Ouvrir dans un onglet" }, "or": { "message": "ou", "description": "choix entre la création ou l'importation d'un nouveau compte" }, + "orderOneHere": { + "message": "Commander un Trezor ou un Ledger et conserver vos fonds en \"cold storage\"" + }, + "origin": { + "message": "Origine" + }, + "outgoing": { + "message": "Sortie" + }, + "parameters": { + "message": "Paramètres" + }, + "passwordNotLongEnough": { + "message": "Mot de passe trop court" + }, + "passwordsDontMatch": { + "message": "Les mots de passe ne correspondent pas" + }, + "password": { + "message": "Mot de passe" + }, + "passwordCorrect": { + "message": "Veuillez vérifier votre mot de passe." + }, "passwordMismatch": { "message": "les mots de passe ne correspondent pas", - "description": "dans le processus de création de mot de passe, les deux nouveaux champs de mot de passe ne correspondent pas" + "description": "dans le processus de création de mot de passe, les deux mot de passe saisis ne sont pas identiques." }, "passwordShort": { - "message": "mot de passe pas assez long", + "message": "Mot de passe trop court", "description": "dans le processus de création de mot de passe, le mot de passe n'est pas assez long pour être sécurisé" }, "pastePrivateKey": { @@ -426,9 +766,24 @@ "pasteSeed": { "message": "Collez votre seed phrase ici!" }, + "pending": { + "message": "En attente" + }, + "personalAddressDetected": { + "message": "Votre adresse personnelle a été détectée. Veuillez saisir à la place l'adresse du contrat du jeton." + }, "pleaseReviewTransaction": { "message": "Veuillez vérifier votre transaction." }, + "popularTokens": { + "message": "Jetons populaires" + }, + "prev": { + "message": "Préc." + }, + "privacyMsg": { + "message": "Politique de Confidentialité" + }, "privateKey": { "message": "Clé privée", "description": "sélectionnez ce type de fichier à utiliser pour importer un compte" @@ -442,12 +797,18 @@ "qrCode": { "message": "Afficher le QR Code" }, + "queue": { + "message": "File d'attente" + }, "readdToken": { - "message": "Vous pouvez ajouter ce jeton dans le futur en allant sur “Ajouter un jeton” dans le menu des options de votre compte." + "message": "Vous pourrez ajouter à nouveau ce jeton en allant sur “Ajouter un jeton” dans le menu des options de votre compte." }, "readMore": { "message": "En savoir plus ici." }, + "readMore2": { + "message": "En savoir plus." + }, "receive": { "message": "Recevoir" }, @@ -457,44 +818,176 @@ "refundAddress": { "message": "Votre adresse de remboursement" }, + "reject": { + "message": "Rejeter" + }, + "rejectAll": { + "message": "Tout rejeter" + }, + "rejectTxsN": { + "message": "Rejeter les transactions $1" + }, + "rejectTxsDescription": { + "message": "Vous êtes sur le point de rejetter en groupe les transactions $1." + }, "rejected": { "message": "Rejeté" }, + "reset": { + "message": "Reinitialiser" + }, + "resetAccount": { + "message": "Reinitialiser le compte" + }, + "resetAccountDescription": { + "message": "Reinitialiser votre compte va effacer votre historique de transactions." + }, + "restoreFromSeed": { + "message": "Restaurer le compte ?" + }, + "restoreVault": { + "message": "Restaurer le Coffre" + }, + "restoreAccountWithSeed": { + "message": "Restaurer votre compte avec une phrase Seed." + }, "required": { "message": "Obligatoire" }, "retryWithMoreGas": { - "message": "Réessayez avec un prix plus élevé du gaz ici" + "message": "Réessayer avec un prix de gaz plus élevé" + }, + "walletSeed": { + "message": "Seed du portefeuille" + }, + "restore": { + "message": "Restaurer" + }, + "revealSeedWords": { + "message": "Révéler les mots Seed" + }, + "revealSeedWordsTitle": { + "message": "Phrase Seed" + }, + "revealSeedWordsDescription": { + "message": "Si jamais vous changez de navigateur ou d'ordinateur, vos aurez besoin de cette phrase seed pour accéder à vos comptes. Sauvegardez la quelque part de sûr et secret." + }, + "revealSeedWordsWarningTitle": { + "message": "Ne communiquez PAS cette phrase à quelqu'un !" + }, + "revealSeedWordsWarning": { + "message": "Ces mots peuvent être utilisés pour voler tous vos comptes." }, "revert": { "message": "Rétablir" }, + "remove": { + "message": "Supprimer" + }, + "removeAccount": { + "message": "Suprimer le compte" + }, + "removeAccountDescription": { + "message": "Ce compte va être supprimé de votre portefeuille. Veuillez vérifier que vous avez la phrase Seed originale de ce compte ou la clé privée pour ce compte importé avant de continuer. Vous pouvez importer ou créer à nouveau des comptes à partir du menu des comptes." + }, + "readyToConnect": { + "message": "Prêt à se connecter ?" + }, "rinkeby": { "message": "Réseau de test Rinkeby" }, "ropsten": { "message": "Réseau de test Ropsten" }, + "rpc": { + "message": "RPC Personnalisé" + }, "sampleAccountName": { - "message": "Par exemple mon nouveau compte", + "message": "Par exemple: \"mon nouveau compte\" ", "description": "Aidez l'utilisateur à comprendre le concept d'ajout d'un nom lisible par un humain à son compte" }, "save": { "message": "Enregistrer" }, + "saveAsCsvFile": { + "message": "Enregistrer comme fichier CSV" + }, "saveAsFile": { "message": "Enregistrer dans un fichier", "description": "Processus d'exportation de compte" }, + "saveSeedAsFile": { + "message": "Enregistrer la phrase Seed dans un fichier" + }, + "scanInstructions": { + "message": "Placez le QR code devant votre appareil photo" + }, + "scanQrCode": { + "message": "Scannez le QR Code" + }, + "search": { + "message": "Rechercher" + }, + "searchResults": { + "message": "Resultats de la recherche" + }, + "secretPhrase": { + "message": "Entrez vos 12 mots secrets de votre phrase Seed pour restaurer votre coffre." + }, + "seedPhraseReq": { + "message": "Les phrases Seed sont composées de 12 mots" + }, + "select": { + "message": "Selectionner" + }, + "selectCurrency": { + "message": "Selectionner Devise" + }, + "selectLocale": { + "message": "Selectionner la localisation" + }, "selectService": { "message": "Sélectionner un service" }, + "selectType": { + "message": "Selectionner le type" + }, "send": { "message": "Envoyer" }, + "sendETH": { + "message": "Envoyer des ETH" + }, "sendTokens": { "message": "Envoyer des jetons" }, + "sentEther": { + "message": "Ether envoyé" + }, + "sentTokens": { + "message": "Jetons envoyés" + }, + "separateEachWord": { + "message": "Separez chaque mot avec un espace simple" + }, + "searchTokens": { + "message": "Rechercher des jetons" + }, + "selectAnAddress": { + "message": "Selectionner une adresse" + }, + "selectAnAccount": { + "message": "Selectionner un compte" + }, + "selectAnAccountHelp": { + "message": "Selectionner le compte à afficher dans MetaMask" + }, + "selectHdPath": { + "message": "Selectioner le \"Path HD\"" + }, + "selectPathHelp": { + "message": "Si vos comptes Ledger n'apparaissent pas ci-dessous, essayez de selectionner le path \"Legacy (MEW / MyCrypto)\"" + }, "sendTokensAnywhere": { "message": "Envoyer des jetons à toute personne possédant un compte Ethereum" }, @@ -510,9 +1003,21 @@ "showQRCode": { "message": "Afficher le QR Code" }, + "showHexData": { + "message": "Afficher les données Hex" + }, + "showHexDataDescription": { + "message": "Selectionner ici pour afficher le champs de données hex dans l'écran d'envoi" + }, "sign": { "message": "Signer" }, + "signatureRequest": { + "message": "Demande de Signature" + }, + "signed": { + "message": "Signé" + }, "signMessage": { "message": "Signer le message" }, @@ -525,17 +1030,68 @@ "sigRequested": { "message": "Signature demandée" }, + "spaceBetween": { + "message": "il ne peut y avoir qu'un seul espace entre les mots" + }, + "speedUp": { + "message": "accélérer" + }, + "speedUpTitle": { + "message": "Accélérer la Transaction" + }, + "speedUpSubtitle": { + "message": "Augmenter le prix du gas pour tenter de remplacer et d'accélérer votre transaction" + }, "status": { "message": "Statut" }, + "stateLogs": { + "message": "Logs d'Etat" + }, + "stateLogsDescription": { + "message": "Les logs d'Etat contiennent les adresses publiques de vos comptes et vos transactions envoyées." + }, + "stateLogError": { + "message": "Erreur lors du chargement des logs d'Etat." + }, + "step1HardwareWallet": { + "message": "1. Connecter le portefeuille hardware" + }, + "step1HardwareWalletMsg": { + "message": "Connectez votre portefeuille hardware directement à votre ordinateur." + }, + "step2HardwareWallet": { + "message": "2. Selectionnez un compte" + }, + "step2HardwareWalletMsg": { + "message": "Selectionnez le compte que vous voulez afficher. Vous ne pouvez en afficher qu'un seul à la fois." + }, + "step3HardwareWallet": { + "message": "3. Vous pouvez maintenant utiliser des dApps et autres... !" + }, + "step3HardwareWalletMsg": { + "message": "Utilisez ce compte de votre portefeuille hardware comme n'importe quel compte Ethereum. Connectez vous à des dApps, envoyez de l'Eth, achetez et conservez des jetons ERC20 et Non-Fungible comme CryptoKitties." + }, "submit": { "message": "Soumettre" }, + "submitted": { + "message": "Envoyé" + }, + "supportCenter": { + "message": "Visitez notre centre d'aide" + }, + "symbolBetweenZeroTen": { + "message": "Le symbol doit avoir entre 0 et 10 caractères." + }, "takesTooLong": { - "message": "Prend trop de temps?" + "message": "Cela prend trop de temps ?" + }, + "terms": { + "message": "Conditions d'Utilisation" }, "testFaucet": { - "message": "Test Faucet" + "message": "Faucet Testnet" }, "to": { "message": "Destinataire" @@ -544,25 +1100,88 @@ "message": "$1 à ETH via ShapeShift", "description": "le système remplira le type de dépôt au début du message" }, + "token": { + "message": "Jeton" + }, + "tokenAddress": { + "message": "Addresse du Jeton" + }, + "tokenAlreadyAdded": { + "message": "Ce Jeton a déjà été ajouté." + }, "tokenBalance": { - "message": "Votre solde de jeton est:" + "message": "Votre solde de jeton est :" + }, + "tokenSelection": { + "message": "Recherchez des tokens or sélectionnez en parmi notre liste de jetons populaires." + }, + "tokenSymbol": { + "message": "Symbole du Jeton" + }, + "tokenWarning1": { + "message": "Garder la trace des jetons achetésvia MetaMask. Si vous en avez acheté avec un autre compte, ces jetons n'apparaîtront pas ici." }, "total": { "message": "Total" }, + "transaction": { + "message": "transaction" + }, + "transactionConfirmed": { + "message": "Transaction confirmée sur $2." + }, + "transactionCreated": { + "message": "Transaction crée avec une valeur de $1 sur $2." + }, + "transactionWithNonce": { + "message": "Transaction $1" + }, + "transactionDropped": { + "message": "Transaction abandonnée sur $2." + }, + "transactionSubmitted": { + "message": "Transaction envoyée sur $2." + }, + "transactionUpdated": { + "message": "Transaction mise à jour sur $2." + }, + "transactionUpdatedGas": { + "message": "Transaction mise à jour avec un prix de gaz de $1 sur $2." + }, + "transactions": { + "message": "transactions" + }, + "transactionError": { + "message": "Erreur de Transaction. Une Exception a été rencontrée dans l'exécution du code du contrat." + }, "transactionMemo": { "message": "Mémo de transaction (optionnel)" }, "transactionNumber": { "message": "Numéro de transaction" }, + "transfer": { + "message": "Transfert" + }, + "transferFrom": { + "message": "Transfert Depuis" + }, "transfers": { "message": "Transferts" }, + "trezorHardwareWallet": { + "message": "Portefeuille hardware TREZOR" + }, "troubleTokenBalances": { - "message": "Nous avons eu du mal à charger votre balance de jetons, vous pouvez la consulter ", + "message": "Nous avons eu du mal à charger votre balance de jetons, vous pouvez la consulter ici :", "description": "Suivi par un lien (ici) pour voir les soldes des jetons" }, + "tryAgain": { + "message": "Essayez à nouveau" + }, + "twelveWords": { + "message": "Ces 12 mots sont la seule manière de restaurer vos comptes MetaMask.\nEnregistrez les quelquepart de sûr et secret." + }, "typePassword": { "message": "Entrez votre mot de passe" }, @@ -572,18 +1191,48 @@ "uiWelcomeMessage": { "message": "Vous utilisez maintenant la nouvelle interface utilisateur MetaMask. Jetez un coup d'oeil, essayez de nouvelles fonctionnalités comme l'envoi de jetons, et faites-nous savoir si vous avez des problèmes." }, + "unapproved": { + "message": "Non autorisé" + }, "unavailable": { "message": "Indisponible" }, + "units": { + "message": "unités" + }, "unknown": { "message": "Inconnu" }, + "unknownFunction": { + "message": "Fonction inconnue" + }, "unknownNetwork": { "message": "Réseau privé inconnu" }, "unknownNetworkId": { "message": "ID réseau inconnu" }, + "unknownQrCode": { + "message": "Erreur: Nous n'avons pas pu identifier le QR code" + }, + "unknownCameraErrorTitle": { + "message": "Ooops ! Il y a eu un problème...." + }, + "unknownCameraError": { + "message": "Une erreur s'est produite lors de l'accès à votre appareil photo. Veuillez reessayer..." + }, + "unlock": { + "message": "Déverrouiller" + }, + "unlockMessage": { + "message": "Le web décentralisé vous attend" + }, + "updatedWithDate": { + "message": "Mis à jour $1" + }, + "uriErrorMsg": { + "message": "Les URLs requièrent un préfixe HTTP/HTTPS approprié." + }, "usaOnly": { "message": "Etats-Unis seulement", "description": "Utiliser cet échange est limité aux personnes à l'intérieur des Etats-Unis" @@ -591,19 +1240,49 @@ "usedByClients": { "message": "Utilisé par une variété de clients différents" }, + "useOldUI": { + "message": "Utiliser l'ancienne interface." + }, + "validFileImport": { + "message": "Vous devez selectionner un fichier valide à importer." + }, + "vaultCreated": { + "message": "Coffre créé" + }, "viewAccount": { "message": "Afficher le compte" }, + "viewOnEtherscan": { + "message": "Voir sur Etherscan" + }, + "visitWebSite": { + "message": "Visitez notre site web" + }, "warning": { "message": "Avertissement" }, + "welcomeBack": { + "message": "Bienvenue à nouveau !" + }, + "welcomeBeta": { + "message": "Bienvenue dans la Beta de MetaMask" + }, "whatsThis": { "message": "Qu'est-ce que c'est?" }, + "yesLetsTry": { + "message": "Oui, essayons" + }, + "youNeedToAllowCameraAccess": { + "message": "Vous devez autoriser l'accès à votre appareil pour utiliser cette fonctionnalité." + }, "yourSigRequested": { "message": "Votre signature est demandée" }, "youSign": { "message": "Vous signez" + }, + "yourPrivateSeedPhrase": { + "message": "Votre phrase Seed privée" } } -- cgit From d46d382b1f077cb0e6105ff013536a0908a33384 Mon Sep 17 00:00:00 2001 From: Noel Yoo Date: Wed, 10 Oct 2018 03:37:49 +0900 Subject: Fix Korean typos (#5472) --- app/_locales/ko/messages.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'app') diff --git a/app/_locales/ko/messages.json b/app/_locales/ko/messages.json index 754aeca6e..5bc539e70 100644 --- a/app/_locales/ko/messages.json +++ b/app/_locales/ko/messages.json @@ -34,11 +34,11 @@ }, "appDescription": { "message": "이더리움 브라우저 확장 프로그램", - "description": "어플리케이션 설명" + "description": "애플리케이션 설명" }, "appName": { "message": "메타마스크", - "description": "어플리케이션 이름" + "description": "애플리케이션 이름" }, "approved": { "message": "수락" @@ -202,7 +202,7 @@ "message": "입금" }, "depositBTC": { - "message": "다음 주소로 BTC를 입급해주세요." + "message": "다음 주소로 BTC를 입금해주세요." }, "depositCoin": { "message": "다음 주소로 $1 만큼 입금해주세요.", @@ -468,10 +468,10 @@ "message": "한도" }, "loading": { - "message": "로딩중..." + "message": "로딩 중..." }, "loadingTokens": { - "message": "토큰 로딩중..." + "message": "토큰 로딩 중..." }, "localhost": { "message": "로컬호스트 8545" @@ -845,7 +845,7 @@ "message": "심볼은 0에서 10개 사이의 문자여야 합니다." }, "takesTooLong": { - "message": "너무 오래걸리나요?" + "message": "너무 오래 걸리나요?" }, "terms": { "message": "사용 지침" @@ -900,7 +900,7 @@ "message": "전송" }, "troubleTokenBalances": { - "message": "토큰 잔액을 가져오는데에 문제가 생겼습니다. 링크에서 상세내용을 볼 수 있습니다.", + "message": "토큰 잔액을 가져오는 데에 문제가 생겼습니다. 링크에서 상세내용을 볼 수 있습니다.", "description": "토큰 잔액을 보려면 (here) 링크를 따라가세요" }, "twelveWords": { -- cgit From f88373237bebbaf286cab9085871166307ae9ab1 Mon Sep 17 00:00:00 2001 From: Santiago Gonzalez Toral Date: Tue, 2 Oct 2018 20:29:03 -0500 Subject: Added account options on home screen --- app/_locales/en/messages.json | 6 ++++++ app/images/expand.svg | 13 +++++++++++++ app/images/hide.svg | 16 ++++++++++++++++ app/images/info.svg | 17 +++++++++++++++++ app/images/open-etherscan.svg | 12 ++++++++++++ 5 files changed, 64 insertions(+) create mode 100644 app/images/expand.svg create mode 100644 app/images/hide.svg create mode 100644 app/images/info.svg create mode 100644 app/images/open-etherscan.svg (limited to 'app') diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 66f378ab8..97fc402fa 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -364,6 +364,9 @@ "exchangeRate": { "message": "Exchange Rate" }, + "expandView": { + "message": "Expand View" + }, "exportPrivateKey": { "message": "Export Private Key" }, @@ -723,6 +726,9 @@ "openInTab": { "message": "Open in tab" }, + "accountOptions": { + "message": "Account Options" + }, "or": { "message": "or", "description": "choice between creating or importing a new account" diff --git a/app/images/expand.svg b/app/images/expand.svg new file mode 100644 index 000000000..65f6cbfd7 --- /dev/null +++ b/app/images/expand.svg @@ -0,0 +1,13 @@ + + + + expand + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/app/images/hide.svg b/app/images/hide.svg new file mode 100644 index 000000000..d7ba01572 --- /dev/null +++ b/app/images/hide.svg @@ -0,0 +1,16 @@ + + + + hide + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/app/images/info.svg b/app/images/info.svg new file mode 100644 index 000000000..1ebae8ee4 --- /dev/null +++ b/app/images/info.svg @@ -0,0 +1,17 @@ + + + + info + Created with Sketch. + + + + + + + + + + + + \ No newline at end of file diff --git a/app/images/open-etherscan.svg b/app/images/open-etherscan.svg new file mode 100644 index 000000000..84c5687ce --- /dev/null +++ b/app/images/open-etherscan.svg @@ -0,0 +1,12 @@ + + + + open-etherscan + Created with Sketch. + + + + + + + \ No newline at end of file -- cgit From 1eec21b94525cc8ba07b733c0c7989fa70bff37f Mon Sep 17 00:00:00 2001 From: Vincent Date: Wed, 10 Oct 2018 07:10:53 +0200 Subject: i18n - fr - improvements * french locales: fix typos and improve wording * french locales: more fixes and rewording * fixed typo * fixed typo * added missing translations * fixed alphabetical order * fixed alphabetical order * added missing translations for FR * fixed verify-locale-strings.js * fixed indentation * fixed indentation * updated french locale * updated changelog with changes logs * a few fixes after receiving comments, mostly Caps removing and adding * translated 2 missing french locale words and also remove a caps * Update messages.json * Update messages.json --- app/_locales/fr/messages.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'app') diff --git a/app/_locales/fr/messages.json b/app/_locales/fr/messages.json index 55a7582ce..64ba13b5d 100644 --- a/app/_locales/fr/messages.json +++ b/app/_locales/fr/messages.json @@ -171,7 +171,7 @@ "message": "Connection au réseau de test Kovan" }, "connectingToMainnet": { - "message": "Connection au Réseau principal Ethereum" + "message": "Connection au réseau principal Ethereum" }, "connectingToRopsten": { "message": "Connection au réseau de test Ropsten" @@ -350,13 +350,13 @@ "message": "Nom ENS inconnu" }, "enterPassword": { - "message": "Entrer le mot de passe" + "message": "Entrez votre mot de passe" }, "enterPasswordConfirm": { - "message": "Enter your password to confirm" + "message": "Entrez votre mot de passe pour confirmer" }, "enterPasswordContinue": { - "message": "Enter password to continue" + "message": "Entrez votre mot de passe pour continuer" }, "etherscanView": { "message": "Afficher le compte sur Etherscan" -- cgit From ccab4ee1a408d93f38765e9b6ef3dc33a18befa9 Mon Sep 17 00:00:00 2001 From: Bruno Barbieri Date: Wed, 10 Oct 2018 01:12:43 -0400 Subject: tests - integration - Add Drizzle tests (#5467) * added drizzle app for testing * working * clean up * clean up script * make build step required * add drizzle-tests to .eslintignore * clean up drizzle run script * lint * use truffle unbox * undo eslintignore changes * revert change * dont use global * dont need this steps * use the new account flow * restore package-lock.json --- app/scripts/phishing-detect.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/scripts/phishing-detect.js b/app/scripts/phishing-detect.js index 6baf868c0..0889c831e 100644 --- a/app/scripts/phishing-detect.js +++ b/app/scripts/phishing-detect.js @@ -1,4 +1,4 @@ -window.onload = function() { +window.onload = function () { if (window.location.pathname === '/phishing.html') { const {hostname} = parseHash() document.getElementById('esdbLink').innerHTML = 'To read more about this scam, navigate to: https://etherscamdb.info/domain/' + hostname + '' -- cgit From 999a599a78ce742a209d37bf831b89a96e6cc3e5 Mon Sep 17 00:00:00 2001 From: Noel Yoo Date: Wed, 10 Oct 2018 20:55:11 +0900 Subject: Fix formatting of locale files (#5479) --- app/_locales/cs/messages.json | 4 +- app/_locales/de/messages.json | 14 +- app/_locales/en/messages.json | 6 +- app/_locales/fr/messages.json | 6 +- app/_locales/it/messages.json | 24 +- app/_locales/ja/messages.json | 2 +- app/_locales/nl/messages.json | 2 +- app/_locales/pt/messages.json | 6 +- app/_locales/ru/messages.json | 2 +- app/_locales/sl/messages.json | 6 +- app/_locales/th/messages.json | 2 +- app/_locales/tml/messages.json | 4 +- app/_locales/tr/messages.json | 1818 +++++++++++++++++++------------------- app/_locales/zh_CN/messages.json | 14 +- app/_locales/zh_TW/messages.json | 2 +- 15 files changed, 956 insertions(+), 956 deletions(-) (limited to 'app') diff --git a/app/_locales/cs/messages.json b/app/_locales/cs/messages.json index 55344f3e1..ae2413ad9 100644 --- a/app/_locales/cs/messages.json +++ b/app/_locales/cs/messages.json @@ -372,7 +372,7 @@ "message": "Import účtu" }, "importAccountMsg": { - "message":"Importované účty nebudou spojeny s vaší původní MetaMaskovou klíčovou frází. Zjistěte více o importovaných účtech " + "message": "Importované účty nebudou spojeny s vaší původní MetaMaskovou klíčovou frází. Zjistěte více o importovaných účtech " }, "importAnAccount": { "message": "Import účtu" @@ -730,7 +730,7 @@ "message": "Nastavení" }, "info": { - "message": "Informace" + "message": "Informace" }, "shapeshiftBuy": { "message": "Nakoupit na ShapeShift" diff --git a/app/_locales/de/messages.json b/app/_locales/de/messages.json index 352d5ad7d..9e1eb9eac 100644 --- a/app/_locales/de/messages.json +++ b/app/_locales/de/messages.json @@ -68,13 +68,13 @@ "message": "Muss größer oder gleich $1 und kleiner oder gleich $2 sein.", "description": "Helfer für die Eingabe von hex als dezimal" }, - "blockiesIdenticon": { + "blockiesIdenticon": { "message": "Blockies Identicon verwenden" }, "borrowDharma": { "message": "Mit Dharma ausleihen (Beta)" }, - "builtInCalifornia": { + "builtInCalifornia": { "message": "MetaMask wurde in Kalifornien entwickelt und gebaut." }, "buy": { @@ -86,13 +86,13 @@ "buyCoinbaseExplainer": { "message": "Coinbase ist die weltweit bekannteste Art und Weise um Bitcoin, Ethereum und Litecoin zu kaufen und verkaufen." }, - "ok": { + "ok": { "message": "Ok" }, "cancel": { "message": "Abbrechen" }, - "classicInterface": { + "classicInterface": { "message": "Klassische Oberfläche verwenden" }, "clickCopy": { @@ -101,7 +101,7 @@ "confirm": { "message": "Bestätigen" }, - "confirmed": { + "confirmed": { "message": "Bestätigt" }, "confirmContract": { @@ -369,7 +369,7 @@ "message": "Account importieren" }, "importAccountMsg": { - "message":" Importierte Accounts werden nicht mit der Seed-Wörterfolge deines ursprünglichen MetaMask Accounts verknüpft. Erfahre mehr über importierte Accounts." + "message": " Importierte Accounts werden nicht mit der Seed-Wörterfolge deines ursprünglichen MetaMask Accounts verknüpft. Erfahre mehr über importierte Accounts." }, "importAnAccount": { "message": "Einen Account importieren" @@ -709,7 +709,7 @@ "message": "Einstellungen" }, "info": { - "message": "Info" + "message": "Info" }, "shapeshiftBuy": { "message": "Mit Shapeshift kaufen" diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 97fc402fa..6b76140f2 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -140,7 +140,7 @@ "close": { "message": "Close" }, - "chromeRequiredForHardwareWallets":{ + "chromeRequiredForHardwareWallets": { "message": "You need to use MetaMask on Google Chrome in order to connect to your Hardware Wallet." }, "confirm": { @@ -501,7 +501,7 @@ "message": "Import Account" }, "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 seedphrase. Learn more about imported accounts " }, "importAnAccount": { "message": "Import an account" @@ -689,7 +689,7 @@ "noDeposits": { "message": "No deposits received" }, - "noConversionRateAvailable":{ + "noConversionRateAvailable": { "message": "No Conversion Rate Available" }, "noTransactionHistory": { diff --git a/app/_locales/fr/messages.json b/app/_locales/fr/messages.json index 64ba13b5d..d418cd9aa 100644 --- a/app/_locales/fr/messages.json +++ b/app/_locales/fr/messages.json @@ -140,7 +140,7 @@ "close": { "message": "Fermer" }, - "chromeRequiredForHardwareWallets":{ + "chromeRequiredForHardwareWallets": { "message": "Pour connecter votre portefeuille hardware, vous devez utiliser MetaMask pour Google Chrome." }, "confirm": { @@ -498,7 +498,7 @@ "message": "Importer un compte" }, "importAccountMsg": { - "message":" Les comptes importés ne seront pas associés avec votre phrase Seed que vous avez créé au départ dans MetaMask. Obtenir plus d'information sur les comptes importés" + "message": " Les comptes importés ne seront pas associés avec votre phrase Seed que vous avez créé au départ dans MetaMask. Obtenir plus d'information sur les comptes importés" }, "importAnAccount": { "message": "Importer un compte" @@ -686,7 +686,7 @@ "noDeposits": { "message": "Aucun dépôt reçu" }, - "noConversionRateAvailable":{ + "noConversionRateAvailable": { "message": "Aucun taux de conversion disponible" }, "noTransactionHistory": { diff --git a/app/_locales/it/messages.json b/app/_locales/it/messages.json index 2ae5fae72..492bcc3de 100644 --- a/app/_locales/it/messages.json +++ b/app/_locales/it/messages.json @@ -126,7 +126,7 @@ "message": "Copiato!" }, "copiedSafe": { - "message": "Le ho copiate in un posto sicuro" + "message": "Le ho copiate in un posto sicuro" }, "copy": { "message": "Copia" @@ -169,11 +169,11 @@ "message": "RPC Personalizzata" }, "decimalsMustZerotoTen": { - "message": "Il numero di decimali deve essere almeno 0, e non oltre 36." + "message": "Il numero di decimali deve essere almeno 0, e non oltre 36." }, "decimal": { "message": "Precisione Decimali" - }, + }, "defaultNetwork": { "message": "La rete predefinita per transazioni in Ether è la Rete Ethereum Principale." }, @@ -218,7 +218,7 @@ "message": "Deposita Direttamente Ether" }, "directDepositEtherExplainer": { - "message": "Se possiedi già degli Ether, questa è la via più veloce per aggiungere Ether al tuo portafoglio con un deposito diretto." + "message": "Se possiedi già degli Ether, questa è la via più veloce per aggiungere Ether al tuo portafoglio con un deposito diretto." }, "done": { "message": "Finito" @@ -341,7 +341,7 @@ "message": "Come vuoi depositare Ether?" }, "holdEther": { - "message": "Ti permette di tenere ether & token, e serve da ponte per le applicazioni decentralizzate." + "message": "Ti permette di tenere ether & token, e serve da ponte per le applicazioni decentralizzate." }, "import": { "message": "Importa", @@ -351,7 +351,7 @@ "message": "Importa Account" }, "importAccountMsg": { - "message":" Gli account importati non saranno associati alla frase seed originariamente creata con MetaMask. Impara di più sugli account importati " + "message": " Gli account importati non saranno associati alla frase seed originariamente creata con MetaMask. Impara di più sugli account importati " }, "importAnAccount": { "message": "Importa un account" @@ -391,7 +391,7 @@ "message": "URI RPC invalido" }, "jsonFail": { - "message": "Qualcosa è andato storto. Assicurati che il file JSON sia formattato correttamente." + "message": "Qualcosa è andato storto. Assicurati che il file JSON sia formattato correttamente." }, "jsonFile": { "message": "File JSON", @@ -557,7 +557,7 @@ "message": "Mostra Codice QR" }, "readdToken": { - "message": "Puoi aggiungere nuovamente questo token in futuro andando in “Aggiungi token” nel menu delle opzioni del tuo account." + "message": "Puoi aggiungere nuovamente questo token in futuro andando in “Aggiungi token” nel menu delle opzioni del tuo account." }, "readMore": { "message": "Leggi di più qui." @@ -670,7 +670,7 @@ "message": "Firma Messaggio" }, "signNotice": { - "message": "Firmare questo messaggio può avere effetti collaterali pericolosi. \nFirma messaggi da siti di cui ti fidi totalmente. \nQuesto metodo pericoloso sarà rimosso in versioni future." + "message": "Firmare questo messaggio può avere effetti collaterali pericolosi. \nFirma messaggi da siti di cui ti fidi totalmente. \nQuesto metodo pericoloso sarà rimosso in versioni future." }, "sigRequest": { "message": "Firma Richiesta" @@ -752,7 +752,7 @@ "message": "Abbiamo avuto un problema a caricare il bilancio dei tuoi token. Puoi vederlo ", "description": "Seguito da un link (qui) per vedere il bilancio dei token" }, - "twelveWords": { + "twelveWords": { "message": "Queste 12 parole sono l'unico modo per ripristinare i tuoi account MetaMask. \nSalvale in un posto sicuro e segreto." }, "typePassword": { @@ -762,7 +762,7 @@ "message": "Benvenuto alla nuova interfaccia (Beta)" }, "uiWelcomeMessage": { - "message": "Stai utilizzanto la nuova interfaccia di MetaMask. Guarda in giro, prova nuove funzionalità come inviare token, e facci sapere se hai dei problemi." + "message": "Stai utilizzanto la nuova interfaccia di MetaMask. Guarda in giro, prova nuove funzionalità come inviare token, e facci sapere se hai dei problemi." }, "unavailable": { "message": "Non Disponibile" @@ -800,7 +800,7 @@ }, "visitWebSite": { "message": "Visita il nostro sito web" - }, + }, "warning": { "message": "Attenzione" }, diff --git a/app/_locales/ja/messages.json b/app/_locales/ja/messages.json index 2088ae270..7b25f386a 100644 --- a/app/_locales/ja/messages.json +++ b/app/_locales/ja/messages.json @@ -315,7 +315,7 @@ "message": "アカウントのインポート" }, "importAccountMsg": { - "message":"追加したアカウントはMetaMaskのアカウントパスフレーズとは関連付けられません。インポートしたアカウントについての詳細は" + "message": "追加したアカウントはMetaMaskのアカウントパスフレーズとは関連付けられません。インポートしたアカウントについての詳細は" }, "importAnAccount": { "message": "アカウントをインポート" diff --git a/app/_locales/nl/messages.json b/app/_locales/nl/messages.json index 46847f1bf..e6d09c123 100644 --- a/app/_locales/nl/messages.json +++ b/app/_locales/nl/messages.json @@ -351,7 +351,7 @@ "message": "Account importeren" }, "importAccountMsg": { - "message":" Geïmporteerde accounts worden niet gekoppeld aan de seedphrase van uw oorspronkelijk gemaakte MetaMask-account. Meer informatie over geïmporteerde accounts" + "message": " Geïmporteerde accounts worden niet gekoppeld aan de seedphrase van uw oorspronkelijk gemaakte MetaMask-account. Meer informatie over geïmporteerde accounts" }, "importAnAccount": { "message": "Importeer een account" diff --git a/app/_locales/pt/messages.json b/app/_locales/pt/messages.json index 6f0bb1584..287ae0400 100644 --- a/app/_locales/pt/messages.json +++ b/app/_locales/pt/messages.json @@ -173,7 +173,7 @@ }, "decimal": { "message": "Precisão em Decimais" - }, + }, "defaultNetwork": { "message": "A rede pré definida para transações em Ether é a Main Net." }, @@ -351,7 +351,7 @@ "message": "Importar Conta" }, "importAccountMsg": { - "message":"Contas importadas não irão ser associadas com a frase seed da conta criada originalmente pelo MetaMask. Saiba mais sobre contas importadas." + "message": "Contas importadas não irão ser associadas com a frase seed da conta criada originalmente pelo MetaMask. Saiba mais sobre contas importadas." }, "importAnAccount": { "message": "Importar uma conta" @@ -800,7 +800,7 @@ }, "visitWebSite": { "message": "Visite o nosso site" - }, + }, "warning": { "message": "Aviso" }, diff --git a/app/_locales/ru/messages.json b/app/_locales/ru/messages.json index 6344e1beb..45bb09683 100644 --- a/app/_locales/ru/messages.json +++ b/app/_locales/ru/messages.json @@ -366,7 +366,7 @@ "message": "Импортировать счет" }, "importAccountMsg": { - "message":" Импортированные счета не будут ассоциированы с вашей ключевой фразой, созданной MetaMask. Узнать больше про импорт счетов " + "message": " Импортированные счета не будут ассоциированы с вашей ключевой фразой, созданной MetaMask. Узнать больше про импорт счетов " }, "importAnAccount": { "message": "Импортировать аккаунт" diff --git a/app/_locales/sl/messages.json b/app/_locales/sl/messages.json index 25bd0bcbb..a4b04d34b 100644 --- a/app/_locales/sl/messages.json +++ b/app/_locales/sl/messages.json @@ -173,7 +173,7 @@ }, "decimal": { "message": "Decimalke natančnosti" - }, + }, "defaultNetwork": { "message": "Privzeto omrežje za transakcije je Main Net." }, @@ -351,7 +351,7 @@ "message": "Uvozi račun" }, "importAccountMsg": { - "message":" Uvoženi računi ne bodo povezani s prvotnim seedphaseom. Preberite več o uvoženih računih " + "message": " Uvoženi računi ne bodo povezani s prvotnim seedphaseom. Preberite več o uvoženih računih " }, "importAnAccount": { "message": "Uvozi račun" @@ -800,7 +800,7 @@ }, "visitWebSite": { "message": "Obiščite našo spletno stran" - }, + }, "warning": { "message": "Opozorilo" }, diff --git a/app/_locales/th/messages.json b/app/_locales/th/messages.json index c9aaa0394..a9f2f1022 100644 --- a/app/_locales/th/messages.json +++ b/app/_locales/th/messages.json @@ -351,7 +351,7 @@ "message": "นำเข้าบัญชี" }, "importAccountMsg": { - "message":"บัญชีที่นำเข้าจะไม่ถูกรวมกับบัญชีที่สร้างด้วยคำเเริ่มต้นบนเมต้ามาร์สในตอนแรก เรียนรู้เพิ่มเติมเกี่ยวกับบัญชีที่นำเข้า" + "message": "บัญชีที่นำเข้าจะไม่ถูกรวมกับบัญชีที่สร้างด้วยคำเเริ่มต้นบนเมต้ามาร์สในตอนแรก เรียนรู้เพิ่มเติมเกี่ยวกับบัญชีที่นำเข้า" }, "importAnAccount": { "message": "นำเข้าบัญชี" diff --git a/app/_locales/tml/messages.json b/app/_locales/tml/messages.json index 4f733458e..8dc242c10 100644 --- a/app/_locales/tml/messages.json +++ b/app/_locales/tml/messages.json @@ -372,7 +372,7 @@ "message": "கணக்கை இறக்குமதி செய்க" }, "importAccountMsg": { - "message":" இறக்குமதி செய்யப்பட்ட கணக்கு உங்கள் முதலில் உருவாக்கப்பட்ட மெட்டாமாஸ்க் கணக்கு விதை மூலம் தொடர்புடையதாக இருக்காது. இறக்குமதி செய்யப்பட்ட கணக்குகள் பற்றி மேலும் அறிக " + "message": " இறக்குமதி செய்யப்பட்ட கணக்கு உங்கள் முதலில் உருவாக்கப்பட்ட மெட்டாமாஸ்க் கணக்கு விதை மூலம் தொடர்புடையதாக இருக்காது. இறக்குமதி செய்யப்பட்ட கணக்குகள் பற்றி மேலும் அறிக " }, "importAnAccount": { "message": "ஒரு கணக்கை இறக்குமதி செய்க" @@ -730,7 +730,7 @@ "message": "அமைப்புகள்" }, "info": { - "message": "தகவல்" + "message": "தகவல்" }, "shapeshiftBuy": { "message": "Shapeshift உடன் வாங்கவும்" diff --git a/app/_locales/tr/messages.json b/app/_locales/tr/messages.json index 8be695108..0dac139dd 100644 --- a/app/_locales/tr/messages.json +++ b/app/_locales/tr/messages.json @@ -1,912 +1,912 @@ { - "accept": { - "message": "Kabul et" - }, - "account": { - "message": "Hesap" - }, - "accountDetails": { - "message": "Hesap Detayları" - }, - "accountName": { - "message": "Hesap İsmi" - }, - "address": { - "message": "Adres" - }, - "addCustomToken": { - "message": "Özel jeton ekle" - }, - "addToken": { - "message": "Jeton ekle" - }, - "addTokens": { - "message": "Jetonlar ekle" - }, - "amount": { - "message": "Tutar" - }, - "amountPlusGas": { - "message": "Tutar + Gas" - }, - "appDescription": { - "message": "Ethereum Tarayıcı Uzantısı", - "description": "Uygulama açıklaması" - }, - "appName": { - "message": "MetaMask", - "description": "Uygulama ismi" - }, - "approved": { - "message": "Onaylandı" - }, - "attemptingConnect": { - "message": "Blockchain'e bağlanmayı deniyor" - }, - "attributions": { - "message": "Atıflar" - }, - "available": { - "message": "Müsait" - }, - "back": { - "message": "Geri" - }, - "balance": { - "message": "Bakiye:" - }, - "balances": { - "message": "Jeton bakiyesi" - }, - "balanceIsInsufficientGas": { - "message": "Toplam gas için yetersiz bakiye" - }, - "beta": { - "message": "BETA" - }, - "betweenMinAndMax": { - "message": "$1'e eşit veya daha büyük olmalı ve $2'den küçük veya eşit olmalı", - "description": "Onaltılık sayının ondalık sayı olarak girişi için yardımcı" - }, - "blockiesIdenticon": { - "message": "Blockies Identicon kullan" - }, - "borrowDharma": { - "message": "Dharma (Beta) ile ödünç al" - }, - "builtInCalifornia": { - "message": "MetaMask California'da tasarlandı ve yaratıldı" - }, - "buy": { - "message": "Satın al" - }, - "buyCoinbase": { - "message": "Coinbase'de satın al" - }, - "buyCoinbaseExplainer": { - "message": "Coinbase Bitcoin, Ethereum, and Litecoin alıp satmanın dünyadaki en popüler yolu" - }, - "ok": { - "message": "Tamam" - }, - "cancel": { - "message": "Vazgeç" - }, - "classicInterface": { - "message": "Klasik arayüzü kullan" - }, - "clickCopy": { - "message": "Kopyalamak için tıkla" - }, - "confirm": { - "message": "Onayla" - }, - "confirmed": { - "message": "Onaylandı" - }, - "confirmContract": { - "message": "Sözleşmeyi onayla" - }, - "confirmPassword": { - "message": "Şifreyi onayla" - }, - "confirmTransaction": { - "message": "İşlemi onayla" - }, - "continue": { - "message": "Devam et" - }, - "continueToCoinbase": { - "message": "Coinbase'e devam et" - }, - "contractDeployment": { - "message": "Sözleşme kurulumu" - }, - "conversionProgress": { - "message": "Çevirim devam ediyor" - }, - "copiedButton": { - "message": "Kopyalandı" - }, - "copiedClipboard": { - "message": "Panoya kopyalandı" - }, - "copiedExclamation": { - "message": "Kopyalandı!" - }, - "copiedSafe": { - "message": "Güvenli bir yere kopyaladım" - }, - "copy": { - "message": "Kopyala" - }, - "copyToClipboard": { - "message": "Panoya kopyala" - }, - "copyButton": { - "message": " Kopyala " - }, - "copyPrivateKey": { - "message": "Bu sizin özel anahtarınız (kopyalamak için tıklayın)" - }, - "create": { - "message": "Yarat" - }, - "createAccount": { - "message": "Hesap Oluştur" - }, - "createDen": { - "message": "Yarat" - }, - "crypto": { - "message": "Kripto", - "description": "Kambiyo tipi (kripto para)" - }, - "currentConversion": { - "message": "Geçerli çevirme" - }, - "currentNetwork": { - "message": "Geçerli Ağ" - }, - "customGas": { - "message": "Gas'i özelleştir" - }, - "customToken": { - "message": "Özel Jeton" - }, - "customize": { - "message": "Özelleştir" - }, - "customRPC": { - "message": "Özel RPC" - }, - "decimalsMustZerotoTen": { - "message": "Ondalıklar en azından 0 olmalı ve 36'dan büyük olmamalı." - }, - "decimal": { - "message": "Ondalık hassasiyeti" - }, - "defaultNetwork": { - "message": "Ether işlemleri için varsayılan ağ Main Net." - }, - "denExplainer": { - "message": "DEN'iniz MetaMask içersinde parola-şifrelenmiş deponuzdur." - }, - "deposit": { - "message": "Yatır" - }, - "depositBTC": { - "message": "BTC'inizi aşağıdaki adrese yatırın:" - }, - "depositCoin": { - "message": "$1'nızı aşağıdaki adrese yatırın", - "description": "Kullanıcıya hangi jetonu seçtiyse onu yatırmasını shapeshift ile söyler." - }, - "depositEth": { - "message": "Eth yatır" - }, - "depositEther": { - "message": "Ether yatır" - }, - "depositFiat": { - "message": "Para yatır" - }, - "depositFromAccount": { - "message": "Başka bir hesaptan yatır" - }, - "depositShapeShift": { - "message": "ShapeShift ile yatır" - }, - "depositShapeShiftExplainer": { - "message": "Eğer başka kripto paralara sahipseniz, MetaMask cüzdanınıza direk olarak Ether yatırabilirsiniz. Hesaba gerek yoktur." - }, - "details": { - "message": "Ayrıntılar" - }, - "directDeposit": { - "message": "Direk Yatırma" - }, - "directDepositEther": { - "message": "Direk Ether Yatırma" - }, - "directDepositEtherExplainer": { - "message": "Eğer çoktan Etheriniz varsa, yeni hesabınıza Ether aktarmanın en kolay yolu direk yatırmadır." - }, - "done": { - "message": "Bitti" - }, - "downloadStateLogs": { - "message": "Durum kayıtlarını indir" - }, - "dropped": { - "message": "Bırakıldı" - }, - "edit": { - "message": "Düzenle" - }, - "editAccountName": { - "message": "Hesap ismini düzenle" - }, - "emailUs": { - "message": "Bize e-posta atın!" - }, - "encryptNewDen": { - "message": "Yeni DEN'inizi şifreleyin" - }, - "enterPassword": { - "message": "Parolanızı girin" - }, - "enterPasswordConfirm": { - "message": "Onaylamak için parolanızı girin" - }, - "passwordNotLongEnough": { - "message": "Parola yeterince uzun değil" - }, - "passwordsDontMatch": { - "message": "Parolalar eşleşmiyor" - }, - "etherscanView": { - "message": "Hesabı Etherscan üzerinde izle" - }, - "exchangeRate": { - "message": "Döviz kuru" - }, - "exportPrivateKey": { - "message": "Özel anahtarı ver" - }, - "exportPrivateKeyWarning": { - "message": "Özel anahtarınızı vermek sizin sorumluluğunuzdadır." - }, - "failed": { - "message": "Başarısız oldu" - }, - "fiat": { - "message": "Para", - "description": "Döviz türü" - }, - "fileImportFail": { - "message": "Dosya alma çalışmıyor mu? Buraya tıklayın!", - "description": "Kullanıcıların hesaplarını JSON dosyasından almalarına yardım eder" - }, - "followTwitter": { - "message": "Bizi twitter'da takip edin" - }, - "from": { - "message": "Kimden" - }, - "fromToSame": { - "message": "Kimden ve kime adresi aynı olamaz" - }, - "fromShapeShift": { - "message": "ShapeShift'den" - }, - "gas": { - "message": "Gas", - "description": "Gas maliyetinin kısa indikatörü" - }, - "gasFee": { - "message": "Gas Ücreti" - }, - "gasLimit": { - "message": "Gas Limiti" - }, - "gasLimitCalculation": { - "message": "Önerilen gas limitini ağ başarı oranını baz alarak hesaplıyoruz." - }, - "gasLimitRequired": { - "message": "Gas limiti gereklidir" - }, - "gasLimitTooLow": { - "message": "Gas limiti en az 21000 olmalıdır" - }, - "generatingSeed": { - "message": "Kaynak Oluşturuyor..." - }, - "gasPrice": { - "message": "Gas Fiyatı (GWEI)" - }, - "gasPriceCalculation": { - "message": "Önerilen gas fiyatını ağ başarı oranını baz alarak hesaplıyoruz." - }, - "gasPriceRequired": { - "message": "Gas Fiyatı Gereklidir" - }, - "getEther": { - "message": "Ether Al" - }, - "getEtherFromFaucet": { - "message": "Musluktan $1 karşılığı Ether alın", - "description": "Ether musluğunun ağ ismini gösterir" - }, - "greaterThanMin": { - "message": "must be greater than or equal to $1.", - "description": "helper for inputting hex as decimal input" - }, - "here": { - "message": "burada", - "description": "daha fazla bilgi için -buraya tıklayın- (troubleTokenBalances ile gidiyor)" - }, - "hereList": { - "message": "İşte bir liste!!!!" - }, - "hide": { - "message": "Gizle" - }, - "hideToken": { - "message": "Jetonu gizle" - }, - "hideTokenPrompt": { - "message": "Jetonu gizle?" - }, - "howToDeposit": { - "message": "Ether'i nasıl yatırmak istersiniz?" - }, - "holdEther": { - "message": "Ether ve jeton tutmanızı sağlar ve merkezi olmayan uygulamalar ve sizin aranızda köprü vazifesi görür." - }, - "import": { - "message": "Al", - "description": "Seçilen dosyadan hesap alma düğmesi. " - }, - "importAccount": { - "message": "Hesap Al" - }, - "importAccountMsg": { - "message":" Alınan hesaplar orjinal kaynakifadenizle yarattığınız MetaMask hesabınızla ilişkilendirilmez. Alınan hesaplar ile ilgili daha fazla bilgi edinin " - }, - "importAnAccount": { - "message": "Hesap al" - }, - "importDen": { - "message": "Varolan DEN al" - }, - "imported": { - "message": "Alındı", - "description": "Hesabın keyringe başarı ile alındığını gösteren durum" - }, - "infoHelp": { - "message": "Bilgi ve yardım" - }, - "insufficientFunds": { - "message": "Yetersiz kaynak." - }, - "insufficientTokens": { - "message": "Yetersiz Jeton." - }, - "invalidAddress": { - "message": "Geçersiz adres" - }, - "invalidAddressRecipient": { - "message": "Alıcı adresi geçersiz" - }, - "invalidGasParams": { - "message": "Geçersiz gas parametreleri" - }, - "invalidInput": { - "message": "Geçersiz giriş." - }, - "invalidRequest": { - "message": "Geçersiz istek" - }, - "invalidRPC": { - "message": "Geçersiz RPC URI" - }, - "jsonFail": { - "message": "Birşeyler yanlış gitti. JSON dosyanızın düzgün derlendiğinden emin olun." - }, - "jsonFile": { - "message": "JSON Dosyası", - "description": "Hesap alımı için düzenle" - }, - "keepTrackTokens": { - "message": "MetaMask hesabınızla satın aldığınız jetonların kaydını tutun." - }, - "kovan": { - "message": "Kovan Test Ağı" - }, - "knowledgeDataBase": { - "message": "Bilgi veritabanımızı ziyaret edin" - }, - "max": { - "message": "Maksimum" - }, - "learnMore": { - "message": "Daha fazla bilgi." - }, - "lessThanMax": { - "message": "$1'den az veya eşit olmalıdır.", - "description": "Onaltılık sayıyı ondalık olarak girmek için yardımcı" - }, - "likeToAddTokens": { - "message": "Bu jetonlara adres eklemek ister misiniz?" - }, - "links": { - "message": "Bağlantılar" - }, - "limit": { - "message": "Limit" - }, - "loading": { - "message": "Yükleniyor..." - }, - "loadingTokens": { - "message": "Jetonlar yükleniyor..." - }, - "localhost": { - "message": "Localhost 8545" - }, - "login": { - "message": "Giriş yap" - }, - "logout": { - "message": "Çıkış" - }, - "loose": { - "message": "Gevşek" - }, - "loweCaseWords": { - "message": "kaynak kelimeleri sadece küçük harflerden oluşabilir." - }, - "mainnet": { - "message": "Main Ethereum Ağı" - }, - "message": { - "message": "Mesaj" - }, - "metamaskDescription": { - "message": "MetaMask Ethereum için güvenli bir kimlik kasasıdır." - }, - "min": { - "message": "Minimum" - }, - "myAccounts": { - "message": "Hesaplarım" - }, - "mustSelectOne": { - "message": "En az bir jeton seçilmeli" - }, - "needEtherInWallet": { - "message": "MetaMask kullanarak merkezi olamayan uygulamalarla etkileşmek için cüzdanınızda Ether bulunmalıdır." - }, - "needImportFile": { - "message": "Almak için bir dosya seçmelisiniz.", - "description": "Kullanıcı bir hesap alır ve devam etmek içinbir dosya seçmelidir." - }, - "needImportPassword": { - "message": "Seçilen dosya için bir parola girmelisiniz.", - "description": "Hesap almak için parola ve dosya gerekiyor." - }, - "negativeETH": { - "message": "Negatif ETH miktarları gönderilemez." - }, - "networks": { - "message": "Ağlar" - }, - "newAccount": { - "message": "Yeni Hesap" - }, - "newAccountNumberName": { - "message": "Hesap $1", - "description": "Hesap yaratma ekranındaki bir sonraki hesabın varsayılan ismi" - }, - "newContract": { - "message": "Yeni Sözleşme" - }, - "newPassword": { - "message": "Yeni Parola (min 8 karakter)" - }, - "newRecipient": { - "message": "Yeni alıcı" - }, - "newRPC": { - "message": "Yeni RPC URL" - }, - "next": { - "message": "Sonraki" - }, - "noAddressForName": { - "message": "Bu isim için bir adres tanımlanmamış." - }, - "noDeposits": { - "message": "Yatırma alınmadı" - }, - "noTransactionHistory": { - "message": "İşlem geçmişi yok." - }, - "noTransactions": { - "message": "İşlem yok" - }, - "notStarted": { - "message": "Başlamadı" - }, - "oldUI": { - "message": "Eski UI" - }, - "oldUIMessage": { - "message": "Eski UI'a döndünüz. Yeni UI'a üst sağ sekme menüsündeki seçenek ile dönebilirsiniz." - }, - "or": { - "message": "veya", - "description": "Yeni bir hesap yaratmak veya almak arasındaki seçim" - }, - "passwordCorrect": { - "message": "Lütfen parolanın doğru olduğuna emin olun." - }, - "passwordMismatch": { - "message": "parolalar eşleşmiyor", - "description": "parola yaratma işleminde, iki yeni parola alanı eşleşmiyor." - }, - "passwordShort": { - "message": "parola yeterince uzun değil", - "description": "parola yaratma işleminde, parola güvenli olacak kadar uzun değil." - }, - "pastePrivateKey": { - "message": "Özel anahtar dizinizi buraya yapıştırın:", - "description": "Özel anahtardan hesap almak için" - }, - "pasteSeed": { - "message": "Kaynak ifadenizi buraya yapıştırın!" - }, - "personalAddressDetected": { - "message": "Kişisel adres tespit edilidi. Jeton sözleşme adresini girin." - }, - "pleaseReviewTransaction": { - "message": "Lütfen işleminizi gözden geçirin." - }, - "popularTokens": { - "message": "Popüler Jetonlar" - }, - "privacyMsg": { - "message": "Gizlilik Şartları" - }, - "privateKey": { - "message": "Özel Anahtar", - "description": "Hesap alırken bu tip bir dosya seçin" - }, - "privateKeyWarning": { - "message": "Uyarı: Bu anahtarı kimse ile paylaşmayın. Özel anahtarlarınıza sahip herkes hesaplarınızıdaki tüm varlığınızı çalabilir." - }, - "privateNetwork": { - "message": "Özel Ağ" - }, - "qrCode": { - "message": "QR Kodunu göster" - }, - "readdToken": { - "message": "Gelecekte Bu jetonu hesap seçenekleri menüsünde “Jeton ekle”'ye giderek geri ekleyebilirsiniz." - }, - "readMore": { - "message": "Burada daha fazla okuyun." - }, - "readMore2": { - "message": "Daha fazla okuyun." - }, - "receive": { - "message": "Al" - }, - "recipientAddress": { - "message": "Alıcı adresi" - }, - "refundAddress": { - "message": "İade adresiniz" - }, - "rejected": { - "message": "Rededildi" - }, - "resetAccount": { - "message": "Hesabı sıfıla" - }, - "restoreFromSeed": { - "message": "Kaynak ifadeden geri getir. Restore from seed phrase" - }, - "restoreVault": { - "message": "Kasayı geri getir" - }, - "required": { - "message": "Gerekli" - }, - "retryWithMoreGas": { - "message": "Daha yüksek bir gas fiyatı ile tekrar dene" - }, - "walletSeed": { - "message": "Cüzdan Kaynağı" - }, - "revealSeedWords": { - "message": "Kaynak kelimelerini göster" - }, - "revealSeedWordsWarning": { - "message": "Açık bir yerde kaynak kelimeliriniz geri getirmeyin! Bu kelimeler tüm hesaplarınızı çalmak için kullanılabilir." - }, - "revert": { - "message": "Geri döndür" - }, - "rinkeby": { - "message": "Rinkeby Test Ağı" - }, - "ropsten": { - "message": "Ropsten Test Ağı" - }, - "currentRpc": { - "message": "Geçerli RPC" - }, - "connectingToMainnet": { - "message": "Main Ethereum Ağına bağlanıyor" - }, - "connectingToRopsten": { - "message": "Ropsten Test Ağına bağlanıyor" - }, - "connectingToKovan": { - "message": "Kovan Test Ağına bağlanıyor" - }, - "connectingToRinkeby": { - "message": "Rinkeby Test Ağına bağlanıyor" - }, - "connectingToUnknown": { - "message": "Bilinmeyen Ağa bağlanıyor" - }, - "sampleAccountName": { - "message": "E.g. Yeni hesabım", - "description": "Kullanıcının hesabına okunabilir isim ekleme konseptini anlamasına yardımcı olmak." - }, - "save": { - "message": "Kaydet" - }, - "reprice_title": { - "message": "İşlemi Yeniden Fiyatlandır" - }, - "reprice_subtitle": { - "message": "İşlemizi hızlandırmayı denemek için gas fiyatınızı yükseltin." - }, - "saveAsFile": { - "message": "Dosya olarak kaydet", - "description": "Hesap verme işlemi" - }, - "saveSeedAsFile": { - "message": "Kaynak Kelimelerini Dosya olarak Kaydet" - }, - "search": { - "message": "Ara" - }, - "secretPhrase": { - "message": "Kasanızı geri getirmek için gizli 12 kelimelik ifadenizi giriniz." - }, - "newPassword8Chars": { - "message": "Yeni Parola (minumum 8 karakter)" - }, - "seedPhraseReq": { - "message": "Kaynak ifadeleri 12 kelimedir." - }, - "select": { - "message": "Seç" - }, - "selectCurrency": { - "message": "Döviz Seç" - }, - "selectService": { - "message": "Servis Seç" - }, - "selectType": { - "message": "Tip Seç" - }, - "send": { - "message": "Gönder" - }, - "sendETH": { - "message": "ETH Gönder" - }, - "sendTokens": { - "message": "Jeton Gönder" - }, - "onlySendToEtherAddress": { - "message": "Ethereum adresine sadece ETH gönder." - }, - "searchTokens": { - "message": "Jeton ara" - }, - "sendTokensAnywhere": { - "message": "Ethereum hesabı olan birine Jeton gönder" - }, - "settings": { - "message": "Ayarlar" - }, - "info": { + "accept": { + "message": "Kabul et" + }, + "account": { + "message": "Hesap" + }, + "accountDetails": { + "message": "Hesap Detayları" + }, + "accountName": { + "message": "Hesap İsmi" + }, + "address": { + "message": "Adres" + }, + "addCustomToken": { + "message": "Özel jeton ekle" + }, + "addToken": { + "message": "Jeton ekle" + }, + "addTokens": { + "message": "Jetonlar ekle" + }, + "amount": { + "message": "Tutar" + }, + "amountPlusGas": { + "message": "Tutar + Gas" + }, + "appDescription": { + "message": "Ethereum Tarayıcı Uzantısı", + "description": "Uygulama açıklaması" + }, + "appName": { + "message": "MetaMask", + "description": "Uygulama ismi" + }, + "approved": { + "message": "Onaylandı" + }, + "attemptingConnect": { + "message": "Blockchain'e bağlanmayı deniyor" + }, + "attributions": { + "message": "Atıflar" + }, + "available": { + "message": "Müsait" + }, + "back": { + "message": "Geri" + }, + "balance": { + "message": "Bakiye:" + }, + "balances": { + "message": "Jeton bakiyesi" + }, + "balanceIsInsufficientGas": { + "message": "Toplam gas için yetersiz bakiye" + }, + "beta": { + "message": "BETA" + }, + "betweenMinAndMax": { + "message": "$1'e eşit veya daha büyük olmalı ve $2'den küçük veya eşit olmalı", + "description": "Onaltılık sayının ondalık sayı olarak girişi için yardımcı" + }, + "blockiesIdenticon": { + "message": "Blockies Identicon kullan" + }, + "borrowDharma": { + "message": "Dharma (Beta) ile ödünç al" + }, + "builtInCalifornia": { + "message": "MetaMask California'da tasarlandı ve yaratıldı" + }, + "buy": { + "message": "Satın al" + }, + "buyCoinbase": { + "message": "Coinbase'de satın al" + }, + "buyCoinbaseExplainer": { + "message": "Coinbase Bitcoin, Ethereum, and Litecoin alıp satmanın dünyadaki en popüler yolu" + }, + "ok": { + "message": "Tamam" + }, + "cancel": { + "message": "Vazgeç" + }, + "classicInterface": { + "message": "Klasik arayüzü kullan" + }, + "clickCopy": { + "message": "Kopyalamak için tıkla" + }, + "confirm": { + "message": "Onayla" + }, + "confirmed": { + "message": "Onaylandı" + }, + "confirmContract": { + "message": "Sözleşmeyi onayla" + }, + "confirmPassword": { + "message": "Şifreyi onayla" + }, + "confirmTransaction": { + "message": "İşlemi onayla" + }, + "continue": { + "message": "Devam et" + }, + "continueToCoinbase": { + "message": "Coinbase'e devam et" + }, + "contractDeployment": { + "message": "Sözleşme kurulumu" + }, + "conversionProgress": { + "message": "Çevirim devam ediyor" + }, + "copiedButton": { + "message": "Kopyalandı" + }, + "copiedClipboard": { + "message": "Panoya kopyalandı" + }, + "copiedExclamation": { + "message": "Kopyalandı!" + }, + "copiedSafe": { + "message": "Güvenli bir yere kopyaladım" + }, + "copy": { + "message": "Kopyala" + }, + "copyToClipboard": { + "message": "Panoya kopyala" + }, + "copyButton": { + "message": " Kopyala " + }, + "copyPrivateKey": { + "message": "Bu sizin özel anahtarınız (kopyalamak için tıklayın)" + }, + "create": { + "message": "Yarat" + }, + "createAccount": { + "message": "Hesap Oluştur" + }, + "createDen": { + "message": "Yarat" + }, + "crypto": { + "message": "Kripto", + "description": "Kambiyo tipi (kripto para)" + }, + "currentConversion": { + "message": "Geçerli çevirme" + }, + "currentNetwork": { + "message": "Geçerli Ağ" + }, + "customGas": { + "message": "Gas'i özelleştir" + }, + "customToken": { + "message": "Özel Jeton" + }, + "customize": { + "message": "Özelleştir" + }, + "customRPC": { + "message": "Özel RPC" + }, + "decimalsMustZerotoTen": { + "message": "Ondalıklar en azından 0 olmalı ve 36'dan büyük olmamalı." + }, + "decimal": { + "message": "Ondalık hassasiyeti" + }, + "defaultNetwork": { + "message": "Ether işlemleri için varsayılan ağ Main Net." + }, + "denExplainer": { + "message": "DEN'iniz MetaMask içersinde parola-şifrelenmiş deponuzdur." + }, + "deposit": { + "message": "Yatır" + }, + "depositBTC": { + "message": "BTC'inizi aşağıdaki adrese yatırın:" + }, + "depositCoin": { + "message": "$1'nızı aşağıdaki adrese yatırın", + "description": "Kullanıcıya hangi jetonu seçtiyse onu yatırmasını shapeshift ile söyler." + }, + "depositEth": { + "message": "Eth yatır" + }, + "depositEther": { + "message": "Ether yatır" + }, + "depositFiat": { + "message": "Para yatır" + }, + "depositFromAccount": { + "message": "Başka bir hesaptan yatır" + }, + "depositShapeShift": { + "message": "ShapeShift ile yatır" + }, + "depositShapeShiftExplainer": { + "message": "Eğer başka kripto paralara sahipseniz, MetaMask cüzdanınıza direk olarak Ether yatırabilirsiniz. Hesaba gerek yoktur." + }, + "details": { + "message": "Ayrıntılar" + }, + "directDeposit": { + "message": "Direk Yatırma" + }, + "directDepositEther": { + "message": "Direk Ether Yatırma" + }, + "directDepositEtherExplainer": { + "message": "Eğer çoktan Etheriniz varsa, yeni hesabınıza Ether aktarmanın en kolay yolu direk yatırmadır." + }, + "done": { + "message": "Bitti" + }, + "downloadStateLogs": { + "message": "Durum kayıtlarını indir" + }, + "dropped": { + "message": "Bırakıldı" + }, + "edit": { + "message": "Düzenle" + }, + "editAccountName": { + "message": "Hesap ismini düzenle" + }, + "emailUs": { + "message": "Bize e-posta atın!" + }, + "encryptNewDen": { + "message": "Yeni DEN'inizi şifreleyin" + }, + "enterPassword": { + "message": "Parolanızı girin" + }, + "enterPasswordConfirm": { + "message": "Onaylamak için parolanızı girin" + }, + "passwordNotLongEnough": { + "message": "Parola yeterince uzun değil" + }, + "passwordsDontMatch": { + "message": "Parolalar eşleşmiyor" + }, + "etherscanView": { + "message": "Hesabı Etherscan üzerinde izle" + }, + "exchangeRate": { + "message": "Döviz kuru" + }, + "exportPrivateKey": { + "message": "Özel anahtarı ver" + }, + "exportPrivateKeyWarning": { + "message": "Özel anahtarınızı vermek sizin sorumluluğunuzdadır." + }, + "failed": { + "message": "Başarısız oldu" + }, + "fiat": { + "message": "Para", + "description": "Döviz türü" + }, + "fileImportFail": { + "message": "Dosya alma çalışmıyor mu? Buraya tıklayın!", + "description": "Kullanıcıların hesaplarını JSON dosyasından almalarına yardım eder" + }, + "followTwitter": { + "message": "Bizi twitter'da takip edin" + }, + "from": { + "message": "Kimden" + }, + "fromToSame": { + "message": "Kimden ve kime adresi aynı olamaz" + }, + "fromShapeShift": { + "message": "ShapeShift'den" + }, + "gas": { + "message": "Gas", + "description": "Gas maliyetinin kısa indikatörü" + }, + "gasFee": { + "message": "Gas Ücreti" + }, + "gasLimit": { + "message": "Gas Limiti" + }, + "gasLimitCalculation": { + "message": "Önerilen gas limitini ağ başarı oranını baz alarak hesaplıyoruz." + }, + "gasLimitRequired": { + "message": "Gas limiti gereklidir" + }, + "gasLimitTooLow": { + "message": "Gas limiti en az 21000 olmalıdır" + }, + "generatingSeed": { + "message": "Kaynak Oluşturuyor..." + }, + "gasPrice": { + "message": "Gas Fiyatı (GWEI)" + }, + "gasPriceCalculation": { + "message": "Önerilen gas fiyatını ağ başarı oranını baz alarak hesaplıyoruz." + }, + "gasPriceRequired": { + "message": "Gas Fiyatı Gereklidir" + }, + "getEther": { + "message": "Ether Al" + }, + "getEtherFromFaucet": { + "message": "Musluktan $1 karşılığı Ether alın", + "description": "Ether musluğunun ağ ismini gösterir" + }, + "greaterThanMin": { + "message": "must be greater than or equal to $1.", + "description": "helper for inputting hex as decimal input" + }, + "here": { + "message": "burada", + "description": "daha fazla bilgi için -buraya tıklayın- (troubleTokenBalances ile gidiyor)" + }, + "hereList": { + "message": "İşte bir liste!!!!" + }, + "hide": { + "message": "Gizle" + }, + "hideToken": { + "message": "Jetonu gizle" + }, + "hideTokenPrompt": { + "message": "Jetonu gizle?" + }, + "howToDeposit": { + "message": "Ether'i nasıl yatırmak istersiniz?" + }, + "holdEther": { + "message": "Ether ve jeton tutmanızı sağlar ve merkezi olmayan uygulamalar ve sizin aranızda köprü vazifesi görür." + }, + "import": { + "message": "Al", + "description": "Seçilen dosyadan hesap alma düğmesi. " + }, + "importAccount": { + "message": "Hesap Al" + }, + "importAccountMsg": { + "message": " Alınan hesaplar orjinal kaynakifadenizle yarattığınız MetaMask hesabınızla ilişkilendirilmez. Alınan hesaplar ile ilgili daha fazla bilgi edinin " + }, + "importAnAccount": { + "message": "Hesap al" + }, + "importDen": { + "message": "Varolan DEN al" + }, + "imported": { + "message": "Alındı", + "description": "Hesabın keyringe başarı ile alındığını gösteren durum" + }, + "infoHelp": { + "message": "Bilgi ve yardım" + }, + "insufficientFunds": { + "message": "Yetersiz kaynak." + }, + "insufficientTokens": { + "message": "Yetersiz Jeton." + }, + "invalidAddress": { + "message": "Geçersiz adres" + }, + "invalidAddressRecipient": { + "message": "Alıcı adresi geçersiz" + }, + "invalidGasParams": { + "message": "Geçersiz gas parametreleri" + }, + "invalidInput": { + "message": "Geçersiz giriş." + }, + "invalidRequest": { + "message": "Geçersiz istek" + }, + "invalidRPC": { + "message": "Geçersiz RPC URI" + }, + "jsonFail": { + "message": "Birşeyler yanlış gitti. JSON dosyanızın düzgün derlendiğinden emin olun." + }, + "jsonFile": { + "message": "JSON Dosyası", + "description": "Hesap alımı için düzenle" + }, + "keepTrackTokens": { + "message": "MetaMask hesabınızla satın aldığınız jetonların kaydını tutun." + }, + "kovan": { + "message": "Kovan Test Ağı" + }, + "knowledgeDataBase": { + "message": "Bilgi veritabanımızı ziyaret edin" + }, + "max": { + "message": "Maksimum" + }, + "learnMore": { + "message": "Daha fazla bilgi." + }, + "lessThanMax": { + "message": "$1'den az veya eşit olmalıdır.", + "description": "Onaltılık sayıyı ondalık olarak girmek için yardımcı" + }, + "likeToAddTokens": { + "message": "Bu jetonlara adres eklemek ister misiniz?" + }, + "links": { + "message": "Bağlantılar" + }, + "limit": { + "message": "Limit" + }, + "loading": { + "message": "Yükleniyor..." + }, + "loadingTokens": { + "message": "Jetonlar yükleniyor..." + }, + "localhost": { + "message": "Localhost 8545" + }, + "login": { + "message": "Giriş yap" + }, + "logout": { + "message": "Çıkış" + }, + "loose": { + "message": "Gevşek" + }, + "loweCaseWords": { + "message": "kaynak kelimeleri sadece küçük harflerden oluşabilir." + }, + "mainnet": { + "message": "Main Ethereum Ağı" + }, + "message": { + "message": "Mesaj" + }, + "metamaskDescription": { + "message": "MetaMask Ethereum için güvenli bir kimlik kasasıdır." + }, + "min": { + "message": "Minimum" + }, + "myAccounts": { + "message": "Hesaplarım" + }, + "mustSelectOne": { + "message": "En az bir jeton seçilmeli" + }, + "needEtherInWallet": { + "message": "MetaMask kullanarak merkezi olamayan uygulamalarla etkileşmek için cüzdanınızda Ether bulunmalıdır." + }, + "needImportFile": { + "message": "Almak için bir dosya seçmelisiniz.", + "description": "Kullanıcı bir hesap alır ve devam etmek içinbir dosya seçmelidir." + }, + "needImportPassword": { + "message": "Seçilen dosya için bir parola girmelisiniz.", + "description": "Hesap almak için parola ve dosya gerekiyor." + }, + "negativeETH": { + "message": "Negatif ETH miktarları gönderilemez." + }, + "networks": { + "message": "Ağlar" + }, + "newAccount": { + "message": "Yeni Hesap" + }, + "newAccountNumberName": { + "message": "Hesap $1", + "description": "Hesap yaratma ekranındaki bir sonraki hesabın varsayılan ismi" + }, + "newContract": { + "message": "Yeni Sözleşme" + }, + "newPassword": { + "message": "Yeni Parola (min 8 karakter)" + }, + "newRecipient": { + "message": "Yeni alıcı" + }, + "newRPC": { + "message": "Yeni RPC URL" + }, + "next": { + "message": "Sonraki" + }, + "noAddressForName": { + "message": "Bu isim için bir adres tanımlanmamış." + }, + "noDeposits": { + "message": "Yatırma alınmadı" + }, + "noTransactionHistory": { + "message": "İşlem geçmişi yok." + }, + "noTransactions": { + "message": "İşlem yok" + }, + "notStarted": { + "message": "Başlamadı" + }, + "oldUI": { + "message": "Eski UI" + }, + "oldUIMessage": { + "message": "Eski UI'a döndünüz. Yeni UI'a üst sağ sekme menüsündeki seçenek ile dönebilirsiniz." + }, + "or": { + "message": "veya", + "description": "Yeni bir hesap yaratmak veya almak arasındaki seçim" + }, + "passwordCorrect": { + "message": "Lütfen parolanın doğru olduğuna emin olun." + }, + "passwordMismatch": { + "message": "parolalar eşleşmiyor", + "description": "parola yaratma işleminde, iki yeni parola alanı eşleşmiyor." + }, + "passwordShort": { + "message": "parola yeterince uzun değil", + "description": "parola yaratma işleminde, parola güvenli olacak kadar uzun değil." + }, + "pastePrivateKey": { + "message": "Özel anahtar dizinizi buraya yapıştırın:", + "description": "Özel anahtardan hesap almak için" + }, + "pasteSeed": { + "message": "Kaynak ifadenizi buraya yapıştırın!" + }, + "personalAddressDetected": { + "message": "Kişisel adres tespit edilidi. Jeton sözleşme adresini girin." + }, + "pleaseReviewTransaction": { + "message": "Lütfen işleminizi gözden geçirin." + }, + "popularTokens": { + "message": "Popüler Jetonlar" + }, + "privacyMsg": { + "message": "Gizlilik Şartları" + }, + "privateKey": { + "message": "Özel Anahtar", + "description": "Hesap alırken bu tip bir dosya seçin" + }, + "privateKeyWarning": { + "message": "Uyarı: Bu anahtarı kimse ile paylaşmayın. Özel anahtarlarınıza sahip herkes hesaplarınızıdaki tüm varlığınızı çalabilir." + }, + "privateNetwork": { + "message": "Özel Ağ" + }, + "qrCode": { + "message": "QR Kodunu göster" + }, + "readdToken": { + "message": "Gelecekte Bu jetonu hesap seçenekleri menüsünde “Jeton ekle”'ye giderek geri ekleyebilirsiniz." + }, + "readMore": { + "message": "Burada daha fazla okuyun." + }, + "readMore2": { + "message": "Daha fazla okuyun." + }, + "receive": { + "message": "Al" + }, + "recipientAddress": { + "message": "Alıcı adresi" + }, + "refundAddress": { + "message": "İade adresiniz" + }, + "rejected": { + "message": "Rededildi" + }, + "resetAccount": { + "message": "Hesabı sıfıla" + }, + "restoreFromSeed": { + "message": "Kaynak ifadeden geri getir. Restore from seed phrase" + }, + "restoreVault": { + "message": "Kasayı geri getir" + }, + "required": { + "message": "Gerekli" + }, + "retryWithMoreGas": { + "message": "Daha yüksek bir gas fiyatı ile tekrar dene" + }, + "walletSeed": { + "message": "Cüzdan Kaynağı" + }, + "revealSeedWords": { + "message": "Kaynak kelimelerini göster" + }, + "revealSeedWordsWarning": { + "message": "Açık bir yerde kaynak kelimeliriniz geri getirmeyin! Bu kelimeler tüm hesaplarınızı çalmak için kullanılabilir." + }, + "revert": { + "message": "Geri döndür" + }, + "rinkeby": { + "message": "Rinkeby Test Ağı" + }, + "ropsten": { + "message": "Ropsten Test Ağı" + }, + "currentRpc": { + "message": "Geçerli RPC" + }, + "connectingToMainnet": { + "message": "Main Ethereum Ağına bağlanıyor" + }, + "connectingToRopsten": { + "message": "Ropsten Test Ağına bağlanıyor" + }, + "connectingToKovan": { + "message": "Kovan Test Ağına bağlanıyor" + }, + "connectingToRinkeby": { + "message": "Rinkeby Test Ağına bağlanıyor" + }, + "connectingToUnknown": { + "message": "Bilinmeyen Ağa bağlanıyor" + }, + "sampleAccountName": { + "message": "E.g. Yeni hesabım", + "description": "Kullanıcının hesabına okunabilir isim ekleme konseptini anlamasına yardımcı olmak." + }, + "save": { + "message": "Kaydet" + }, + "reprice_title": { + "message": "İşlemi Yeniden Fiyatlandır" + }, + "reprice_subtitle": { + "message": "İşlemizi hızlandırmayı denemek için gas fiyatınızı yükseltin." + }, + "saveAsFile": { + "message": "Dosya olarak kaydet", + "description": "Hesap verme işlemi" + }, + "saveSeedAsFile": { + "message": "Kaynak Kelimelerini Dosya olarak Kaydet" + }, + "search": { + "message": "Ara" + }, + "secretPhrase": { + "message": "Kasanızı geri getirmek için gizli 12 kelimelik ifadenizi giriniz." + }, + "newPassword8Chars": { + "message": "Yeni Parola (minumum 8 karakter)" + }, + "seedPhraseReq": { + "message": "Kaynak ifadeleri 12 kelimedir." + }, + "select": { + "message": "Seç" + }, + "selectCurrency": { + "message": "Döviz Seç" + }, + "selectService": { + "message": "Servis Seç" + }, + "selectType": { + "message": "Tip Seç" + }, + "send": { + "message": "Gönder" + }, + "sendETH": { + "message": "ETH Gönder" + }, + "sendTokens": { + "message": "Jeton Gönder" + }, + "onlySendToEtherAddress": { + "message": "Ethereum adresine sadece ETH gönder." + }, + "searchTokens": { + "message": "Jeton ara" + }, + "sendTokensAnywhere": { + "message": "Ethereum hesabı olan birine Jeton gönder" + }, + "settings": { + "message": "Ayarlar" + }, + "info": { "message": "Bilgi" - }, - "shapeshiftBuy": { - "message": "Shapeshift ile satın al" - }, - "showPrivateKeys": { - "message": "Özel anahtarları göster" - }, - "showQRCode": { - "message": "QR Kodu göster" - }, - "sign": { - "message": "İmza" - }, - "signed": { - "message": "İmzalandı" - }, - "signMessage": { - "message": "Mesajı İmzala" - }, - "signNotice": { - "message": "Bu mesajı imzalamanın tehlikeli \nyan etkileri olabilir. Tamamen güvendiğiniz sitelerden \ngelen mesajları hesabınızla imzalayınız.\n Bu tehlikeli metod gelecek versiyonlarda çıkarılacaktır. " - }, - "sigRequest": { - "message": "İmza isteği" - }, - "sigRequested": { - "message": "İmza isteniyor" - }, - "spaceBetween": { - "message": "Kelimeler arası sadece bir boşluk olabilir." - }, - "status": { - "message": "Durum" - }, - "stateLogs": { - "message": "Durum Kayıtları" - }, - "stateLogsDescription": { - "message": "Durum kayıtları açık hesap adresinizi ve gönderilen işlemleri içerir." - }, - "stateLogError": { - "message": "Durum kayıtlarını alma hatası" - }, - "submit": { - "message": "Gönder" - }, - "submitted": { - "message": "Gönderildi" - }, - "supportCenter": { - "message": "Destek merkezimizi ziyaret edin" - }, - "symbolBetweenZeroTen": { - "message": "Sembol 0 ve 10 karakter aralığında olmalıdır." - }, - "takesTooLong": { - "message": "Çok mu uzun sürüyor?" - }, - "terms": { - "message": "Kullanım şartları" - }, - "testFaucet": { - "message": "Test Musluğu" - }, - "to": { - "message": "Kime" - }, - "toETHviaShapeShift": { - "message": "ShapeShift üstünden $1'dan ETH'e", - "description": "system will fill in deposit type in start of message" - }, - "tokenAddress": { - "message": "Jeton Adresi" - }, - "tokenAlreadyAdded": { - "message": "Jeton çoktan eklenmiş." - }, - "tokenBalance": { - "message": "Jeton bakiyeniz:" - }, - "tokenSelection": { - "message": "Jeton arayın veya popüler jeton listemizden seçin." - }, - "tokenSymbol": { - "message": "Jeton Sembolü" - }, - "tokenWarning1": { - "message": "MetaMask hesabınızla aldığınız jetonların kaydını tutun. Başka bir hesapla jetonlar satın aldıysanız, o jetonlar burada gözükmeyecektir." - }, - "total": { - "message": "Toplam" - }, - "transactions": { - "message": "işlemler" - }, - "transactionError": { - "message": "İşlem Hatası. Sözleşme kodundan kural dışı durum fırlatıldı." - }, - "transactionMemo": { - "message": "İşlem notu (opsiyonel)" - }, - "transactionNumber": { - "message": "İşlem numarası" - }, - "transfers": { - "message": "Transferler" - }, - "troubleTokenBalances": { - "message": "Jeton bakiyelerinizi yüklerken sorun yaşadık. Buradan izleyebilirsiniz ", - "description": "Jeton bakiyelerini görmek için bir link (burası) ile takip ediliyor" - }, - "twelveWords": { - "message": "MetaMask hesaplarınızı geri getirmenin tek yolu bu 12 kelimedir.\nBu kelimeleri güvenli ve gizli bir yerde saklayın." - }, - "typePassword": { - "message": "Parolanızı girin" - }, - "uiWelcome": { - "message": "Yeni UI (Beta)'ya hoşgeldiniz" - }, - "uiWelcomeMessage": { - "message": "Şu anda yeni MetaMask UI kullanmaktasınız. Gözatın, jeton gönderme gibi yeni özellikleri deneyin ve herhangi bir sorunlar karşılaşırsanız bize haber verin" - }, - "unapproved": { - "message": "Onaylanmadı" - }, - "unavailable": { - "message": "Mevcut değil" - }, - "unknown": { - "message": "Bilinmeyen" - }, - "unknownNetwork": { - "message": "Bilinmeyen özel ağ" - }, - "unknownNetworkId": { - "message": "Bilinmeyen ağ IDsi" - }, - "uriErrorMsg": { - "message": "URIler için HTTP/HTTPS öneki gerekmektedir." - }, - "usaOnly": { - "message": "Sadece ABD", - "description": "Bu dövizi sadece ABD ikamet edenler kullanabilir" - }, - "usedByClients": { - "message": "Farklı istemciler tarafından kullanılmakta" - }, - "useOldUI": { - "message": "Eski UI kullan" - }, - "validFileImport": { - "message": "Almak için geçerli bir dosya seçmelisiniz" - }, - "vaultCreated": { - "message": "Kasa Yaratıldı" - }, - "viewAccount": { - "message": "Hesabı İncele" - }, - "visitWebSite": { - "message": "Web sitemizi ziyaret edin" - }, - "warning": { - "message": "Uyarı" - }, - "welcomeBeta": { - "message": "MetaMask Beta'ya Hoşgeldiniz" - }, - "whatsThis": { - "message": "Bu nedir?" - }, - "yourSigRequested": { - "message": "İmzanız isteniyor" - }, - "youSign": { - "message": "İmzalıyorsunuz" - } + }, + "shapeshiftBuy": { + "message": "Shapeshift ile satın al" + }, + "showPrivateKeys": { + "message": "Özel anahtarları göster" + }, + "showQRCode": { + "message": "QR Kodu göster" + }, + "sign": { + "message": "İmza" + }, + "signed": { + "message": "İmzalandı" + }, + "signMessage": { + "message": "Mesajı İmzala" + }, + "signNotice": { + "message": "Bu mesajı imzalamanın tehlikeli \nyan etkileri olabilir. Tamamen güvendiğiniz sitelerden \ngelen mesajları hesabınızla imzalayınız.\n Bu tehlikeli metod gelecek versiyonlarda çıkarılacaktır. " + }, + "sigRequest": { + "message": "İmza isteği" + }, + "sigRequested": { + "message": "İmza isteniyor" + }, + "spaceBetween": { + "message": "Kelimeler arası sadece bir boşluk olabilir." + }, + "status": { + "message": "Durum" + }, + "stateLogs": { + "message": "Durum Kayıtları" + }, + "stateLogsDescription": { + "message": "Durum kayıtları açık hesap adresinizi ve gönderilen işlemleri içerir." + }, + "stateLogError": { + "message": "Durum kayıtlarını alma hatası" + }, + "submit": { + "message": "Gönder" + }, + "submitted": { + "message": "Gönderildi" + }, + "supportCenter": { + "message": "Destek merkezimizi ziyaret edin" + }, + "symbolBetweenZeroTen": { + "message": "Sembol 0 ve 10 karakter aralığında olmalıdır." + }, + "takesTooLong": { + "message": "Çok mu uzun sürüyor?" + }, + "terms": { + "message": "Kullanım şartları" + }, + "testFaucet": { + "message": "Test Musluğu" + }, + "to": { + "message": "Kime" + }, + "toETHviaShapeShift": { + "message": "ShapeShift üstünden $1'dan ETH'e", + "description": "system will fill in deposit type in start of message" + }, + "tokenAddress": { + "message": "Jeton Adresi" + }, + "tokenAlreadyAdded": { + "message": "Jeton çoktan eklenmiş." + }, + "tokenBalance": { + "message": "Jeton bakiyeniz:" + }, + "tokenSelection": { + "message": "Jeton arayın veya popüler jeton listemizden seçin." + }, + "tokenSymbol": { + "message": "Jeton Sembolü" + }, + "tokenWarning1": { + "message": "MetaMask hesabınızla aldığınız jetonların kaydını tutun. Başka bir hesapla jetonlar satın aldıysanız, o jetonlar burada gözükmeyecektir." + }, + "total": { + "message": "Toplam" + }, + "transactions": { + "message": "işlemler" + }, + "transactionError": { + "message": "İşlem Hatası. Sözleşme kodundan kural dışı durum fırlatıldı." + }, + "transactionMemo": { + "message": "İşlem notu (opsiyonel)" + }, + "transactionNumber": { + "message": "İşlem numarası" + }, + "transfers": { + "message": "Transferler" + }, + "troubleTokenBalances": { + "message": "Jeton bakiyelerinizi yüklerken sorun yaşadık. Buradan izleyebilirsiniz ", + "description": "Jeton bakiyelerini görmek için bir link (burası) ile takip ediliyor" + }, + "twelveWords": { + "message": "MetaMask hesaplarınızı geri getirmenin tek yolu bu 12 kelimedir.\nBu kelimeleri güvenli ve gizli bir yerde saklayın." + }, + "typePassword": { + "message": "Parolanızı girin" + }, + "uiWelcome": { + "message": "Yeni UI (Beta)'ya hoşgeldiniz" + }, + "uiWelcomeMessage": { + "message": "Şu anda yeni MetaMask UI kullanmaktasınız. Gözatın, jeton gönderme gibi yeni özellikleri deneyin ve herhangi bir sorunlar karşılaşırsanız bize haber verin" + }, + "unapproved": { + "message": "Onaylanmadı" + }, + "unavailable": { + "message": "Mevcut değil" + }, + "unknown": { + "message": "Bilinmeyen" + }, + "unknownNetwork": { + "message": "Bilinmeyen özel ağ" + }, + "unknownNetworkId": { + "message": "Bilinmeyen ağ IDsi" + }, + "uriErrorMsg": { + "message": "URIler için HTTP/HTTPS öneki gerekmektedir." + }, + "usaOnly": { + "message": "Sadece ABD", + "description": "Bu dövizi sadece ABD ikamet edenler kullanabilir" + }, + "usedByClients": { + "message": "Farklı istemciler tarafından kullanılmakta" + }, + "useOldUI": { + "message": "Eski UI kullan" + }, + "validFileImport": { + "message": "Almak için geçerli bir dosya seçmelisiniz" + }, + "vaultCreated": { + "message": "Kasa Yaratıldı" + }, + "viewAccount": { + "message": "Hesabı İncele" + }, + "visitWebSite": { + "message": "Web sitemizi ziyaret edin" + }, + "warning": { + "message": "Uyarı" + }, + "welcomeBeta": { + "message": "MetaMask Beta'ya Hoşgeldiniz" + }, + "whatsThis": { + "message": "Bu nedir?" + }, + "yourSigRequested": { + "message": "İmzanız isteniyor" + }, + "youSign": { + "message": "İmzalıyorsunuz" + } } diff --git a/app/_locales/zh_CN/messages.json b/app/_locales/zh_CN/messages.json index 8ce0671a4..90ac2a55b 100644 --- a/app/_locales/zh_CN/messages.json +++ b/app/_locales/zh_CN/messages.json @@ -387,7 +387,7 @@ "message": "导入账户" }, "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 seedphrase. Learn more about imported accounts " }, "importAnAccount": { "message": "导入一个账户" @@ -511,7 +511,7 @@ "description": "User is important an account and needs to add a file to continue" }, "needImportPassword": { - "message": "必须为已选择的文件输入密码。", + "message": "必须为已选择的文件输入密码。", "description": "Password and file needed to import an account" }, "negativeETH": { @@ -561,7 +561,7 @@ "message": "旧版界面" }, "oldUIMessage": { - "message": "你已经切换到旧版界面。 你可以通过右上方下拉菜单中的选项切换回新的用户界面。" + "message": "你已经切换到旧版界面。 你可以通过右上方下拉菜单中的选项切换回新的用户界面。" }, "or": { "message": "或", @@ -605,7 +605,7 @@ "description": "select this type of file to use to import an account" }, "privateKeyWarning": { - "message": "注意:永远不要公开这个私钥。任何拥有你的私钥的人都可以窃取你帐户中的任何资产。" + "message": "注意:永远不要公开这个私钥。任何拥有你的私钥的人都可以窃取你帐户中的任何资产。" }, "privateNetwork": { "message": "私有网络" @@ -614,7 +614,7 @@ "message": "显示二维码" }, "readdToken": { - "message": "之后你还可以通过帐户选项菜单中的“添加代币”来添加此代币。" + "message": "之后你还可以通过帐户选项菜单中的“添加代币”来添加此代币。" }, "readMore": { "message": "了解更多。" @@ -766,7 +766,7 @@ "message": "设置" }, "info": { - "message": "信息" + "message": "信息" }, "shapeshiftBuy": { "message": "使用 Shapeshift 购买" @@ -888,7 +888,7 @@ "message": "欢迎使用新版界面 (Beta)" }, "uiWelcomeMessage": { - "message": "你现在正在使用新的 MetaMask 界面。 尝试发送代币等新功能,有任何问题请告知我们。" + "message": "你现在正在使用新的 MetaMask 界面。 尝试发送代币等新功能,有任何问题请告知我们。" }, "unapproved": { "message": "未批准" diff --git a/app/_locales/zh_TW/messages.json b/app/_locales/zh_TW/messages.json index 200c75c3c..f71ce311f 100644 --- a/app/_locales/zh_TW/messages.json +++ b/app/_locales/zh_TW/messages.json @@ -372,7 +372,7 @@ "message": "導入帳戶" }, "importAccountMsg": { - "message":" 匯入的帳戶與您原有 MetaMask 帳戶的助憶詞並無關聯. 請查看與導入帳戶相關的資料 " + "message": " 匯入的帳戶與您原有 MetaMask 帳戶的助憶詞並無關聯. 請查看與導入帳戶相關的資料 " }, "importAnAccount": { "message": "導入一個帳戶" -- cgit From fa228f1c7ed263807f0969119f73c0faad63eb5e Mon Sep 17 00:00:00 2001 From: noelyoo Date: Wed, 10 Oct 2018 22:49:04 +0900 Subject: Alphabetize en locale json keys --- app/_locales/en/messages.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'app') diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 6b76140f2..d7cec0619 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -14,6 +14,9 @@ "accountName": { "message": "Account Name" }, + "accountOptions": { + "message": "Account Options" + }, "accountSelectionRequired": { "message": "You need to select an account!" }, @@ -726,9 +729,6 @@ "openInTab": { "message": "Open in tab" }, - "accountOptions": { - "message": "Account Options" - }, "or": { "message": "or", "description": "choice between creating or importing a new account" @@ -745,22 +745,22 @@ "parameters": { "message": "Parameters" }, - "passwordNotLongEnough": { - "message": "Password not long enough" - }, - "passwordsDontMatch": { - "message": "Passwords Don't Match" - }, "password": { "message": "Password" }, "passwordCorrect": { "message": "Please make sure your password is correct." }, + "passwordsDontMatch": { + "message": "Passwords Don't Match" + }, "passwordMismatch": { "message": "passwords don't match", "description": "in password creation process, the two new password fields did not match" }, + "passwordNotLongEnough": { + "message": "Password not long enough" + }, "passwordShort": { "message": "password not long enough", "description": "in password creation process, the password is not long enough to be secure" @@ -863,9 +863,6 @@ "retryWithMoreGas": { "message": "Retry with a higher gas price here" }, - "walletSeed": { - "message": "Wallet Seed" - }, "restore": { "message": "Restore" }, @@ -1264,6 +1261,9 @@ "visitWebSite": { "message": "Visit our web site" }, + "walletSeed": { + "message": "Wallet Seed" + }, "warning": { "message": "Warning" }, -- cgit From 63ba8b56fc1150ad20a6cb570604d133ed9ccba4 Mon Sep 17 00:00:00 2001 From: noelyoo Date: Wed, 10 Oct 2018 22:49:08 +0900 Subject: Alphabetize ko locale json keys --- app/_locales/ko/messages.json | 448 +++++++++++++++++++++--------------------- 1 file changed, 224 insertions(+), 224 deletions(-) (limited to 'app') diff --git a/app/_locales/ko/messages.json b/app/_locales/ko/messages.json index 5bc539e70..ffea86d4e 100644 --- a/app/_locales/ko/messages.json +++ b/app/_locales/ko/messages.json @@ -2,6 +2,9 @@ "accept": { "message": "수락" }, + "accessingYourCamera": { + "message": "카메라에 접근중..." + }, "account": { "message": "계정" }, @@ -11,6 +14,9 @@ "accountName": { "message": "계정 이름" }, + "accountSelectionRequired": { + "message": "계정을 선택하셔야 합니다!" + }, "address": { "message": "주소" }, @@ -40,6 +46,9 @@ "message": "메타마스크", "description": "애플리케이션 이름" }, + "approve": { + "message": "수락" + }, "approved": { "message": "수락" }, @@ -77,6 +86,9 @@ "borrowDharma": { "message": "Dharma에서 대여하기(Beta)" }, + "browserNotSupported": { + "message": "브라우저를 지원하지 않습니다..." + }, "builtInCalifornia": { "message": "메타마스크는 캘리포니아에서 디자인되고 만들어졌습니다." }, @@ -89,6 +101,9 @@ "buyCoinbaseExplainer": { "message": "코인베이스는 비트코인, 이더리움, 라이트코인을 거래할 수 있는 유명한 거래소입니다." }, + "bytes": { + "message": "바이트" + }, "ok": { "message": "확인" }, @@ -104,6 +119,9 @@ "close": { "message": "닫기" }, + "chromeRequiredForHardwareWallets": { + "message": "하드웨어 지갑을 연결하기 위해서는 구글 크롬에서 메타마스크를 사용하셔야 합니다." + }, "confirm": { "message": "승인" }, @@ -119,6 +137,36 @@ "confirmTransaction": { "message": "트랜잭션 승인" }, + "connectHardwareWallet": { + "message": "하드웨어 지갑 연결" + }, + "connect": { + "message": "연결" + }, + "connecting": { + "message": "연결중..." + }, + "connectingToMainnet": { + "message": "이더리움 메인넷 접속중" + }, + "connectingToRopsten": { + "message": "Ropsten 테스트넷 접속중" + }, + "connectingToKovan": { + "message": "Kovan 테스트넷 접속중" + }, + "connectingToRinkeby": { + "message": "Rinkeby 테스트넷 접속중" + }, + "connectingToUnknown": { + "message": "알려지지 않은 네트워크 접속중" + }, + "connectToLedger": { + "message": "Ledger 연결" + }, + "connectToTrezor": { + "message": "Trezor 연결" + }, "continue": { "message": "계속" }, @@ -146,6 +194,9 @@ "copy": { "message": "복사" }, + "copyAddress": { + "message": "클립보드로 주소 복사" + }, "copyToClipboard": { "message": "클립보드로 복사" }, @@ -174,6 +225,9 @@ "currentNetwork": { "message": "현재 네트워크" }, + "currentRpc": { + "message": "현재 RPC" + }, "customGas": { "message": "가스 설정" }, @@ -241,9 +295,15 @@ "done": { "message": "완료" }, + "downloadGoogleChrome": { + "message": "구글 크롬 다운로드" + }, "downloadStateLogs": { "message": "상태 로그 다운로드" }, + "dontHaveAHardwareWallet": { + "message": "하드웨어 지갑이 없나요?" + }, "dropped": { "message": "중단됨" }, @@ -262,6 +322,9 @@ "encryptNewDen": { "message": "새로운 DEN을 암호화" }, + "ensNameNotFound": { + "message": "ENS 이름을 찾을 수 없습니다" + }, "enterPassword": { "message": "비밀번호를 입력해주세요" }, @@ -271,12 +334,6 @@ "enterPasswordContinue": { "message": "계속하기 위해 비밀번호 입력" }, - "passwordNotLongEnough": { - "message": "비밀번호가 충분히 길지 않습니다" - }, - "passwordsDontMatch": { - "message": "비밀번호가 맞지 않습니다" - }, "etherscanView": { "message": "이더스캔에서 계정보기" }, @@ -303,6 +360,9 @@ "followTwitter": { "message": "트위터에서 팔로우하세요" }, + "forgetDevice": { + "message": "장치 연결 해제" + }, "from": { "message": "보내는 이" }, @@ -312,6 +372,9 @@ "fromShapeShift": { "message": "ShapeShift로 부터" }, + "functionType": { + "message": "함수 유형" + }, "gas": { "message": "가스", "description": "가스 가격의 줄임" @@ -353,10 +416,28 @@ "message": "파우셋에서 $1에 달하는 이더를 얻으세요.", "description": "이더 파우셋에 대한 네트워크 이름을 표시합니다" }, + "getHelp": { + "message": "도움말" + }, "greaterThanMin": { "message": "$1 이상이어야 합니다.", "description": "10진수 입력으로 hex값 입력을 도와줍니다" }, + "hardware": { + "message": "하드웨어" + }, + "hardwareWalletConnected": { + "message": "하드웨어 지갑이 연결됨" + }, + "hardwareWallets": { + "message": "하드웨어 지갑 연결" + }, + "hardwareWalletsMsg": { + "message": "메타마스크에서 사용할 하드웨어 지갑을 선택해주세요" + }, + "havingTroubleConnecting": { + "message": "연결에 문제가 있나요?" + }, "here": { "message": "여기", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -364,6 +445,9 @@ "hereList": { "message": "리스트가 있습니다!!!!" }, + "hexData": { + "message": "Hex 데이터" + }, "hide": { "message": "숨기기" }, @@ -432,6 +516,9 @@ "invalidRPC": { "message": "올바르지 않은 RPC URI" }, + "invalidSeedPhrase": { + "message": "잘못된 시드 구문" + }, "jsonFail": { "message": "이상이 있습니다. JSON 파일이 올바른 파일인지 확인해주세요." }, @@ -454,6 +541,9 @@ "learnMore": { "message": "더 배우기." }, + "ledgerAccountRestriction": { + "message": "새 계정을 추가하려면 최소 마지막 계정을 사용해야 합니다." + }, "lessThanMax": { "message": "$1 이하여야합니다.", "description": "10진수 입력으로 hex값 입력을 도와줍니다" @@ -491,6 +581,9 @@ "mainnet": { "message": "이더리움 메인넷" }, + "menu": { + "message": "메뉴" + }, "message": { "message": "메시지" }, @@ -557,35 +650,72 @@ "noDeposits": { "message": "입금 내역이 없습니다." }, + "noConversionRateAvailable": { + "message": "변환 비율을 찾을 수 없습니다" + }, "noTransactionHistory": { "message": "트랜잭션 기록이 없습니다." }, "noTransactions": { "message": "트랜잭션이 없습니다" }, + "notFound": { + "message": "찾을 수 없음" + }, "notStarted": { "message": "시작 안됨" }, + "noWebcamFound": { + "message": "컴퓨터의 웹캠을 찾을 수 없습니다. 다시 시도해보세요." + }, + "noWebcamFoundTitle": { + "message": "웹캠이 없습니다" + }, "oldUI": { "message": "구버전 UI" }, "oldUIMessage": { "message": "구버전 UI로 변경하셨습니다. 우 상단 드롭다운 메뉴에서 새 UI로 변경하실 수 있습니다." }, + "onlySendToEtherAddress": { + "message": "이더리움 주소로 ETH만 송금하세요." + }, + "onlySendTokensToAccountAddress": { + "message": "이더리움계정 주소로 $1 만 보내기.", + "description": "토큰 심볼 보이기" + }, + "openInTab": { + "message": "탭으로 열기" + }, "or": { "message": "또는", "description": "새 계정을 만들거나 가져오기중에 선택하기" }, + "orderOneHere": { + "message": "Trezor 혹은 Ledger를 구입하고 자금을 콜드 스토리지에 저장합니다" + }, + "origin": { + "message": "Origin" + }, + "parameters": { + "message": "매개변수" + }, "password": { "message": "비밀번호" }, "passwordCorrect": { "message": "비밀번호가 맞는지 확인해주세요." }, + "passwordsDontMatch": { + "message": "비밀번호가 맞지 않습니다" + }, "passwordMismatch": { "message": "비밀번호가 일치하지 않습니다.", "description": "비밀번호를 생성하는 과정에서 두개의 새 비밀번호 입력란이 일치하지 않습니다" }, + "passwordNotLongEnough": { + "message": "비밀번호가 충분히 길지 않습니다" + }, "passwordShort": { "message": "비밀번호가 짧습니다.", "description": "비밀번호를 생성하는 과정에서 비밀번호가 짧으면 안전하지 않습니다" @@ -606,6 +736,9 @@ "popularTokens": { "message": "인기있는 토큰" }, + "prev": { + "message": "이전" + }, "privacyMsg": { "message": "개인정보 보호 정책" }, @@ -658,14 +791,17 @@ "restoreVault": { "message": "저장소 복구" }, + "restoreAccountWithSeed": { + "message": "시드 구문으로 계정 복구하기" + }, "required": { "message": "필요함" }, "retryWithMoreGas": { "message": "더 높은 가스 가격으로 다시 시도해주세요" }, - "walletSeed": { - "message": "지갑 시드값" + "restore": { + "message": "복구" }, "revealSeedWords": { "message": "시드 단어 보이기" @@ -685,6 +821,18 @@ "revert": { "message": "되돌림" }, + "remove": { + "message": "제거" + }, + "removeAccount": { + "message": "계정 제거" + }, + "removeAccountDescription": { + "message": "이 계정한 지갑에서 삭제될 것입니다. 지우기 전에 이 계정에 대한 개인 키 혹은 시드 구문을 가지고 있는지 확인하세요. 계정 드랍다운 메뉴를 통해서 계정을 가져오거나 생성할 수 있습니다." + }, + "readyToConnect": { + "message": "접속 준비되었나요?" + }, "rinkeby": { "message": "Rinkeby 테스트넷" }, @@ -694,24 +842,6 @@ "rpc": { "message": "사용자 정의 RPC" }, - "currentRpc": { - "message": "현재 RPC" - }, - "connectingToMainnet": { - "message": "이더리움 메인넷 접속중" - }, - "connectingToRopsten": { - "message": "Ropsten 테스트넷 접속중" - }, - "connectingToKovan": { - "message": "Kovan 테스트넷 접속중" - }, - "connectingToRinkeby": { - "message": "Rinkeby 테스트넷 접속중" - }, - "connectingToUnknown": { - "message": "알려지지 않은 네트워크 접속중" - }, "sampleAccountName": { "message": "예) 나의 새 계정", "description": "각 계정에 대해서 구별하기 쉬운 이름을 지정하여 사용자가 쉽게 이해할 수 있게 합니다" @@ -735,6 +865,12 @@ "saveSeedAsFile": { "message": "시드 단어를 파일로 저장하기" }, + "scanInstructions": { + "message": "QR 코드를 카메라 앞에 가져다 놓아주세요" + }, + "scanQrCode": { + "message": "QR 코드 스캔" + }, "search": { "message": "검색" }, @@ -771,16 +907,27 @@ "sendTokens": { "message": "토큰 전송" }, - "onlySendToEtherAddress": { - "message": "이더리움 주소로 ETH만 송금하세요." - }, - "onlySendTokensToAccountAddress": { - "message": "이더리움계정 주소로 $1 만 보내기.", - "description": "토큰 심볼 보이기" + "separateEachWord": { + "message": "각 단어는 공백 한칸으로 분리합니다" }, "searchTokens": { "message": "토큰 검색" }, + "selectAnAddress": { + "message": "주소 선택" + }, + "selectAnAccount": { + "message": "계정 선택" + }, + "selectAnAccountHelp": { + "message": "메타마스크에서 보기위한 계정 선택" + }, + "selectHdPath": { + "message": "HD 경로 지정" + }, + "selectPathHelp": { + "message": "하단에서 Ledger지갑 계정을 찾지 못하겠으면 \"Legacy (MEW / MyCrypto)\" 경로로 바꿔보세요" + }, "sendTokensAnywhere": { "message": "이더 계정로 토큰 전송" }, @@ -832,6 +979,24 @@ "stateLogError": { "message": "상태 로그 받기 실패." }, + "step1HardwareWallet": { + "message": "1. 하드웨어 지갑 연결" + }, + "step1HardwareWalletMsg": { + "message": "하드웨어 지갑을 컴퓨터에 연결해주세요." + }, + "step2HardwareWallet": { + "message": "2. 계정 선택" + }, + "step2HardwareWalletMsg": { + "message": "보고 싶은 계정을 선택합니다. 한번에 하나의 계정만 선택할 수 있습니다." + }, + "step3HardwareWallet": { + "message": "3. dApps을 사용하거나 다른 것을 합니다!" + }, + "step3HardwareWalletMsg": { + "message": "다른 이더리움 계정을 사용하듯 하드웨어 계정을 사용합니다. dApps을 로그인하거나, 이더를 보내거나, ERC20토큰 혹은 대체가능하지 않은 토큰 (예를 들어 CryptoKitties)을 사거나 저장하거나 합니다." + }, "submit": { "message": "제출" }, @@ -896,13 +1061,22 @@ "transactionNumber": { "message": "트랜잭션 번호" }, + "transfer": { + "message": "전송" + }, "transfers": { "message": "전송" }, + "trezorHardwareWallet": { + "message": "TREZOR 하드웨어 지갑" + }, "troubleTokenBalances": { "message": "토큰 잔액을 가져오는 데에 문제가 생겼습니다. 링크에서 상세내용을 볼 수 있습니다.", "description": "토큰 잔액을 보려면 (here) 링크를 따라가세요" }, + "tryAgain": { + "message": "다시 시도하세요" + }, "twelveWords": { "message": "12개의 단어는 메타마스크 계정을 복구하기 위한 유일한 방법입니다.\n안전한 장소에 보관하시기 바랍니다." }, @@ -924,12 +1098,27 @@ "unknown": { "message": "알려지지 않음" }, + "unknownFunction": { + "message": "알려지지 않은 함수" + }, "unknownNetwork": { "message": "알려지지 않은 프라이빗 네트워크" }, "unknownNetworkId": { "message": "알려지지 않은 네트워크 ID" }, + "unknownQrCode": { + "message": "오류: QR 코드를 확인할 수 없습니다" + }, + "unknownCameraErrorTitle": { + "message": "이런! 뭔가 잘못되었습니다...." + }, + "unknownCameraError": { + "message": "카메라를 접근하는 중 오류가 발생했습니다. 다시 시도해 주세요..." + }, + "unlock": { + "message": "잠금 해제" + }, "unlockMessage": { "message": "우리가 기다리던 분권형 웹입니다" }, @@ -961,6 +1150,9 @@ "visitWebSite": { "message": "웹사이트 방문" }, + "walletSeed": { + "message": "지갑 시드값" + }, "warning": { "message": "경고" }, @@ -982,198 +1174,6 @@ "yourPrivateSeedPhrase": { "message": "개인 시드 구문" }, - "accessingYourCamera": { - "message": "카메라 접근중..." - }, - "accountSelectionRequired": { - "message": "계정을 선택하셔야 합니다!" - }, - "approve": { - "message": "수락" - }, - "browserNotSupported": { - "message": "브라우저가 지원하지 않습니다..." - }, - "bytes": { - "message": "바이트" - }, - "chromeRequiredForHardwareWallets": { - "message": "하드웨어 지갑을 연결하기 위해서는 구글 크롬에서 메타마스크를 사용하셔야 합니다." - }, - "connectHardwareWallet": { - "message": "하드웨어 지갑 연결" - }, - "connect": { - "message": "연결" - }, - "connecting": { - "message": "연결중..." - }, - "connectToLedger": { - "message": "Ledger 연결" - }, - "connectToTrezor": { - "message": "Trezor 연결" - }, - "copyAddress": { - "message": "클립보드로 주소 복사" - }, - "downloadGoogleChrome": { - "message": "구글 크롬 다운로드" - }, - "dontHaveAHardwareWallet": { - "message": "하드웨어 지갑이 없나요?" - }, - "ensNameNotFound": { - "message": "ENS 이름을 찾을 수 없습니다" - }, - "parameters": { - "message": "매개변수" - }, - "forgetDevice": { - "message": "장치 연결 해제" - }, - "functionType": { - "message": "함수 유형" - }, - "getHelp": { - "message": "도움말" - }, - "hardware": { - "message": "하드웨어" - }, - "hardwareWalletConnected": { - "message": "하드웨어 지갑이 연결됨" - }, - "hardwareWallets": { - "message": "하드웨어 지갑 연결" - }, - "hardwareWalletsMsg": { - "message": "메타마스크에서 사용할 하드웨어 지갑을 선택해주세요" - }, - "havingTroubleConnecting": { - "message": "연결에 문제가 있나요?" - }, - "hexData": { - "message": "Hex 데이터" - }, - "invalidSeedPhrase": { - "message": "잘못된 시드 구문" - }, - "ledgerAccountRestriction": { - "message": "새 계정을 추가하려면 최소 마지막 계정을 사용해야 합니다." - }, - "menu": { - "message": "메뉴" - }, - "noConversionRateAvailable": { - "message": "변환 비율을 찾을 수 없습니다" - }, - "notFound": { - "message": "찾을 수 없음" - }, - "noWebcamFoundTitle": { - "message": "웹캠이 없습니다" - }, - "noWebcamFound": { - "message": "컴퓨터의 웹캠을 찾을 수 없습니다. 다시 시도해보세요." - }, - "openInTab": { - "message": "탭으로 열기" - }, - "origin": { - "message": "Origin" - }, - "prev": { - "message": "이전" - }, - "restoreAccountWithSeed": { - "message": "시드 구문으로 계정 복구하기" - }, - "restore": { - "message": "복구" - }, - "remove": { - "message": "제거" - }, - "removeAccount": { - "message": "계정 제거" - }, - "removeAccountDescription": { - "message": "이 계정한 지갑에서 삭제될 것입니다. 지우기 전에 이 계정에 대한 개인 키 혹은 시드 구문을 가지고 있는지 확인하세요. 계정 드랍다운 메뉴를 통해서 계정을 가져오거나 생성할 수 있습니다." - }, - "readyToConnect": { - "message": "접속 준비되었나요?" - }, - "separateEachWord": { - "message": "각 단어는 공백 한칸으로 분리합니다" - }, - "orderOneHere": { - "message": "Trezor 혹은 Ledger를 구입하고 자금을 콜드 스토리지에 저장합니다" - }, - "selectAnAddress": { - "message": "주소 선택" - }, - "selectAnAccount": { - "message": "계정 선택" - }, - "selectAnAccountHelp": { - "message": "메타마스크에서 보기위한 계정 선택" - }, - "selectHdPath": { - "message": "HD 경로 지정" - }, - "selectPathHelp": { - "message": "하단에서 Ledger지갑 계정을 찾지 못하겠으면 \"Legacy (MEW / MyCrypto)\" 경로로 바꿔보세요" - }, - "step1HardwareWallet": { - "message": "1. 하드웨어 지갑 연결" - }, - "step1HardwareWalletMsg": { - "message": "하드웨어 지갑을 컴퓨터에 연결해주세요." - }, - "step2HardwareWallet": { - "message": "2. 계정 선택" - }, - "step2HardwareWalletMsg": { - "message": "보고 싶은 계정을 선택합니다. 한번에 하나의 계정만 선택할 수 있습니다." - }, - "step3HardwareWallet": { - "message": "3. dApps을 사용하거나 다른 것을 합니다!" - }, - "step3HardwareWalletMsg": { - "message": "다른 이더리움 계정을 사용하듯 하드웨어 계정을 사용합니다. dApps을 로그인하거나, 이더를 보내거나, ERC20토큰 혹은 대체가능하지 않은 토큰 (예를 들어 CryptoKitties)을 사거나 저장하거나 합니다." - }, - "scanInstructions": { - "message": "QR 코드를 카메라 앞에 가져다 놓아주세요" - }, - "scanQrCode": { - "message": "QR 코드 스캔" - }, - "transfer": { - "message": "전송" - }, - "trezorHardwareWallet": { - "message": "TREZOR 하드웨어 지갑" - }, - "tryAgain": { - "message": "다시 시도하세요" - }, - "unknownFunction": { - "message": "알 수 없는 함수" - }, - "unknownQrCode": { - "message": "오류: QR 코드를 확인할 수 없습니다" - }, - "unknownCameraErrorTitle": { - "message": "이런! 뭔가 잘못되었습니다...." - }, - "unknownCameraError": { - "message": "카메라를 접근하는 중 오류가 발생했습니다. 다시 시도해 주세요..." - }, - "unlock": { - "message": "잠금 해제" - }, "youNeedToAllowCameraAccess": { "message": "이 기능을 사용하려면 카메라 접근을 허용해야 합니다." } -- cgit From ff67293a8ef61308d602d09f26b163b9b9ec90d3 Mon Sep 17 00:00:00 2001 From: Frankie Date: Wed, 10 Oct 2018 04:26:38 -1000 Subject: transactions - add txReceipt to the txMeta body for confirmed txs (#5375) --- app/scripts/controllers/transactions/index.js | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'app') diff --git a/app/scripts/controllers/transactions/index.js b/app/scripts/controllers/transactions/index.js index ebd49f882..1d566522c 100644 --- a/app/scripts/controllers/transactions/index.js +++ b/app/scripts/controllers/transactions/index.js @@ -362,7 +362,29 @@ class TransactionController extends EventEmitter { this.txStateManager.setTxStatusSubmitted(txId) } - confirmTransaction (txId) { + /** + Sets the status of the transaction to confirmed + and sets the status of nonce duplicates as dropped + if the txParams have data it will fetch the txReceipt + @param txId {number} - the tx's Id + @returns {Promise} + */ + + async confirmTransaction (txId) { + // get the txReceipt before marking the transaction confirmed + // to ensure the receipt is gotten before the ui revives the tx + const txMeta = this.txStateManager.getTx(txId) + if (txMeta.txParams.data) { + try { + const txReceipt = await this.query.getTransactionReceipt() + txMeta.txReceipt = txReceipt + this.txStateManager.updateTx(txMeta, 'transactions#confirmTransaction - add txReceipt') + + } catch (err) { + log.error(err) + } + } + this.txStateManager.setTxStatusConfirmed(txId) this._markNonceDuplicatesDropped(txId) } -- cgit From 428a7cacdfbb3080a860bf1fdb774cc8ae218c04 Mon Sep 17 00:00:00 2001 From: Whymarrh Whitby Date: Wed, 10 Oct 2018 15:28:56 -0230 Subject: Revert "transactions - add txReceipt to the txMeta body for confirmed txs (#5375)" This reverts commit ff67293a8ef61308d602d09f26b163b9b9ec90d3. --- app/scripts/controllers/transactions/index.js | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) (limited to 'app') diff --git a/app/scripts/controllers/transactions/index.js b/app/scripts/controllers/transactions/index.js index 1d566522c..ebd49f882 100644 --- a/app/scripts/controllers/transactions/index.js +++ b/app/scripts/controllers/transactions/index.js @@ -362,29 +362,7 @@ class TransactionController extends EventEmitter { this.txStateManager.setTxStatusSubmitted(txId) } - /** - Sets the status of the transaction to confirmed - and sets the status of nonce duplicates as dropped - if the txParams have data it will fetch the txReceipt - @param txId {number} - the tx's Id - @returns {Promise} - */ - - async confirmTransaction (txId) { - // get the txReceipt before marking the transaction confirmed - // to ensure the receipt is gotten before the ui revives the tx - const txMeta = this.txStateManager.getTx(txId) - if (txMeta.txParams.data) { - try { - const txReceipt = await this.query.getTransactionReceipt() - txMeta.txReceipt = txReceipt - this.txStateManager.updateTx(txMeta, 'transactions#confirmTransaction - add txReceipt') - - } catch (err) { - log.error(err) - } - } - + confirmTransaction (txId) { this.txStateManager.setTxStatusConfirmed(txId) this._markNonceDuplicatesDropped(txId) } -- cgit From af43b7d6c97e10018e564ce8ee37bc9ad380234c Mon Sep 17 00:00:00 2001 From: Whymarrh Whitby Date: Wed, 10 Oct 2018 16:11:17 -0230 Subject: Ensure that new transactions added are using the selected address --- app/scripts/controllers/transactions/index.js | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'app') diff --git a/app/scripts/controllers/transactions/index.js b/app/scripts/controllers/transactions/index.js index ebd49f882..a57c85f50 100644 --- a/app/scripts/controllers/transactions/index.js +++ b/app/scripts/controllers/transactions/index.js @@ -166,6 +166,10 @@ class TransactionController extends EventEmitter { async addUnapprovedTransaction (txParams) { // validate const normalizedTxParams = txUtils.normalizeTxParams(txParams) + // Assert the from address is the selected address + if (normalizedTxParams.from !== this.getSelectedAddress()) { + throw new Error(`Transaction from address isn't valid for this account`) + } txUtils.validateTxParams(normalizedTxParams) // construct txMeta let txMeta = this.txStateManager.generateTxMeta({ -- cgit From ba21606dfb15a5ce767f1225b32738a2ecdd80ee Mon Sep 17 00:00:00 2001 From: Noel Yoo Date: Fri, 12 Oct 2018 00:50:59 +0900 Subject: Fix en, ko locales (#5483) * Fix en typo * Fix ko typo * Remove unnecessary space * Fix ko typo * Improve translation in ko --- app/_locales/en/messages.json | 2 +- app/_locales/ko/messages.json | 96 +++++++++++++++++++++---------------------- 2 files changed, 49 insertions(+), 49 deletions(-) (limited to 'app') diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index d7cec0619..d8467e9eb 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -1222,7 +1222,7 @@ "message": "Ooops! Something went wrong...." }, "unknownCameraError": { - "message": "There was an error while trying to access you camera. Please try again..." + "message": "There was an error while trying to access your camera. Please try again..." }, "unlock": { "message": "Unlock" diff --git a/app/_locales/ko/messages.json b/app/_locales/ko/messages.json index ffea86d4e..55549bb87 100644 --- a/app/_locales/ko/messages.json +++ b/app/_locales/ko/messages.json @@ -3,7 +3,7 @@ "message": "수락" }, "accessingYourCamera": { - "message": "카메라에 접근중..." + "message": "카메라에 접근 중..." }, "account": { "message": "계정" @@ -84,7 +84,7 @@ "message": "Blockies 아이덴티콘 사용" }, "borrowDharma": { - "message": "Dharma에서 대여하기(Beta)" + "message": "Dharma에서 대출받기 (Beta)" }, "browserNotSupported": { "message": "브라우저를 지원하지 않습니다..." @@ -144,22 +144,22 @@ "message": "연결" }, "connecting": { - "message": "연결중..." + "message": "연결 중..." }, "connectingToMainnet": { - "message": "이더리움 메인넷 접속중" + "message": "이더리움 메인넷 접속 중" }, "connectingToRopsten": { - "message": "Ropsten 테스트넷 접속중" + "message": "Ropsten 테스트넷 접속 중" }, "connectingToKovan": { - "message": "Kovan 테스트넷 접속중" + "message": "Kovan 테스트넷 접속 중" }, "connectingToRinkeby": { - "message": "Rinkeby 테스트넷 접속중" + "message": "Rinkeby 테스트넷 접속 중" }, "connectingToUnknown": { - "message": "알려지지 않은 네트워크 접속중" + "message": "알 수 없는 네트워크 접속 중" }, "connectToLedger": { "message": "Ledger 연결" @@ -177,7 +177,7 @@ "message": "컨트랙트 배포" }, "conversionProgress": { - "message": "변환 진행중" + "message": "변환 진행 중" }, "copiedButton": { "message": "복사됨" @@ -235,7 +235,7 @@ "message": "사용자 정의 토큰" }, "customize": { - "message": "맞춤화 하기" + "message": "맞춤화하기" }, "customRPC": { "message": "사용자 정의 RPC" @@ -278,7 +278,7 @@ "message": "ShapeShift를 통해 입금하기" }, "depositShapeShiftExplainer": { - "message": "다른 암호화폐를 가지고 있으면, 계정을 생성할 필요없이 메타마스크 지갑에 이더리움을 바로 거래하거나 입금할 수 있습니다." + "message": "다른 암호화폐를 가지고 있으면, 계정을 생성할 필요 없이 메타마스크 지갑에 이더리움을 바로 거래하거나 입금할 수 있습니다." }, "details": { "message": "세부사항" @@ -314,7 +314,7 @@ "message": "계정 이름 수정" }, "editingTransaction": { - "message": "트랜젝션을 변경합니다" + "message": "트랜잭션을 변경합니다" }, "emailUs": { "message": "저자에게 메일 보내기!" @@ -367,10 +367,10 @@ "message": "보내는 이" }, "fromToSame": { - "message": "보내고 받는 주소는 동일할 수 없습니다" + "message": "보내고 받는 주소는 같을 수 없습니다" }, "fromShapeShift": { - "message": "ShapeShift로 부터" + "message": "ShapeShift로부터" }, "functionType": { "message": "함수 유형" @@ -392,10 +392,10 @@ "message": "가스 한도가 필요합니다." }, "gasLimitTooLow": { - "message": "가스 한도는 최소 21000 이상이여야 합니다." + "message": "가스 한도는 최소 21000 이상이어야 합니다." }, "generatingSeed": { - "message": "시드 생성중..." + "message": "시드 생성 중..." }, "gasPrice": { "message": "가스 가격 (GWEI)" @@ -407,7 +407,7 @@ "message": "가스 가격이 필요합니다." }, "generatingTransaction": { - "message": "트랜잭션 생성중" + "message": "트랜잭션 생성 중" }, "getEther": { "message": "이더 얻기" @@ -481,7 +481,7 @@ }, "imported": { "message": "가져온 계정", - "description": "이 상태는 해당 계정이 keyring으로 완전히 적재된 상태임을 표시합니다" + "description": "이 상태는 해당 계정이 keyring으로 완전히 로드된 상태임을 표시합니다" }, "importUsingSeed": { "message": "계정 시드 구문으로 가져오기" @@ -490,7 +490,7 @@ "message": "정보 및 도움말" }, "initialTransactionConfirmed": { - "message": "초기 트랜잭션이 네트워크를 통해 확정되었습니다. 확인을 누르고 이전으로 돌아갑니다." + "message": "초기 트랜잭션이 네트워크를 통해 확정되었습니다. 확인을 누르면 이전으로 돌아갑니다." }, "insufficientFunds": { "message": "충분하지 않은 자금." @@ -620,14 +620,14 @@ "message": "네트워크" }, "nevermind": { - "message": "상관안함" + "message": "상관 안 함" }, "newAccount": { "message": "새 계정" }, "newAccountNumberName": { "message": "새 계정 $1", - "description": "계정 생성시 볼 수 있는 새 계정의 기본 이름" + "description": "계정 생성 시 볼 수 있는 새 계정의 기본 이름" }, "newContract": { "message": "새 컨트랙트" @@ -663,7 +663,7 @@ "message": "찾을 수 없음" }, "notStarted": { - "message": "시작 안됨" + "message": "시작 안 됨" }, "noWebcamFound": { "message": "컴퓨터의 웹캠을 찾을 수 없습니다. 다시 시도해보세요." @@ -675,13 +675,13 @@ "message": "구버전 UI" }, "oldUIMessage": { - "message": "구버전 UI로 변경하셨습니다. 우 상단 드롭다운 메뉴에서 새 UI로 변경하실 수 있습니다." + "message": "구버전 UI로 변경하셨습니다. 오른쪽 위 드롭다운 메뉴에서 새 UI로 변경하실 수 있습니다." }, "onlySendToEtherAddress": { "message": "이더리움 주소로 ETH만 송금하세요." }, "onlySendTokensToAccountAddress": { - "message": "이더리움계정 주소로 $1 만 보내기.", + "message": "이더리움 계정 주소로 $1만 보내기.", "description": "토큰 심볼 보이기" }, "openInTab": { @@ -689,7 +689,7 @@ }, "or": { "message": "또는", - "description": "새 계정을 만들거나 가져오기중에 선택하기" + "description": "새 계정을 만들거나 가져오기 중에 선택하기" }, "orderOneHere": { "message": "Trezor 혹은 Ledger를 구입하고 자금을 콜드 스토리지에 저장합니다" @@ -711,7 +711,7 @@ }, "passwordMismatch": { "message": "비밀번호가 일치하지 않습니다.", - "description": "비밀번호를 생성하는 과정에서 두개의 새 비밀번호 입력란이 일치하지 않습니다" + "description": "비밀번호를 생성하는 과정에서 두 개의 새 비밀번호 입력란이 일치하지 않습니다" }, "passwordNotLongEnough": { "message": "비밀번호가 충분히 길지 않습니다" @@ -725,7 +725,7 @@ "description": "개인키로부터 계정을 가져오는 것입니다" }, "pasteSeed": { - "message": "시드 구문을 이곳에 붙여넣어주세요!" + "message": "시드 구문을 이곳에 붙여넣어 주세요!" }, "personalAddressDetected": { "message": "개인 주소가 탐지됨. 토큰 컨트랙트 주소를 입력하세요." @@ -747,7 +747,7 @@ "description": "이 형식의 파일을 선택하여 계정을 가져올 수 있습니다" }, "privateKeyWarning": { - "message": " 절대 이 키를 노출하지 마십시오. 개인키가 노출되면 누구나 당신의 계정에서 자산을 빼갈 수 있습니다." + "message": "절대 이 키를 노출하지 마십시오. 개인키가 노출되면 누구나 당신의 계정에서 자산을 빼갈 수 있습니다." }, "privateNetwork": { "message": "프라이빗 네트워크" @@ -813,10 +813,10 @@ "message": "브라우저를 바꾸거나 컴퓨터를 옮기는 경우 이 시드 구문이 필요하며 이를 통해 계정에 접근할 수 있습니다. 시드 구문을 안전한 곳에 보관하세요." }, "revealSeedWordsWarningTitle": { - "message": "이 구문을 다른사람과 절대로 공유하지 마세요!" + "message": "이 구문을 다른 사람과 절대로 공유하지 마세요!" }, "revealSeedWordsWarning": { - "message": "이 단어모음은 당신의 모든 계정을 훔치는데 사용할 수 있습니다." + "message": "이 단어 모음은 당신의 모든 계정을 훔치는데 사용할 수 있습니다." }, "revert": { "message": "되돌림" @@ -828,7 +828,7 @@ "message": "계정 제거" }, "removeAccountDescription": { - "message": "이 계정한 지갑에서 삭제될 것입니다. 지우기 전에 이 계정에 대한 개인 키 혹은 시드 구문을 가지고 있는지 확인하세요. 계정 드랍다운 메뉴를 통해서 계정을 가져오거나 생성할 수 있습니다." + "message": "이 계정은 지갑에서 삭제될 것입니다. 지우기 전에 이 계정에 대한 개인 키 혹은 시드 구문을 가지고 있는지 확인하세요. 계정 드롭다운 메뉴를 통해서 계정을 가져오거나 생성할 수 있습니다." }, "readyToConnect": { "message": "접속 준비되었나요?" @@ -853,7 +853,7 @@ "message": "트랜잭션 속도 향상하기" }, "speedUpSubtitle": { - "message": "트랜잭션 가스 가격을 늘려서 해당 트랙잭션에 덮어쓰기 하여 속도를 빠르게 합니다" + "message": "트랜잭션 가스 가격을 올려서 해당 트랜잭션에 덮어쓰고 속도를 빠르게 합니다" }, "saveAsCsvFile": { "message": "CSV 파일로 저장" @@ -920,16 +920,16 @@ "message": "계정 선택" }, "selectAnAccountHelp": { - "message": "메타마스크에서 보기위한 계정 선택" + "message": "메타마스크에서 보기 위한 계정 선택" }, "selectHdPath": { "message": "HD 경로 지정" }, "selectPathHelp": { - "message": "하단에서 Ledger지갑 계정을 찾지 못하겠으면 \"Legacy (MEW / MyCrypto)\" 경로로 바꿔보세요" + "message": "하단에서 Ledger 지갑 계정을 찾지 못하겠으면 \"Legacy (MEW / MyCrypto)\" 경로로 바꿔보세요" }, "sendTokensAnywhere": { - "message": "이더 계정로 토큰 전송" + "message": "이더 계정으로 토큰 전송" }, "settings": { "message": "설정" @@ -989,13 +989,13 @@ "message": "2. 계정 선택" }, "step2HardwareWalletMsg": { - "message": "보고 싶은 계정을 선택합니다. 한번에 하나의 계정만 선택할 수 있습니다." + "message": "보고 싶은 계정을 선택합니다. 한 번에 하나의 계정만 선택할 수 있습니다." }, "step3HardwareWallet": { "message": "3. dApps을 사용하거나 다른 것을 합니다!" }, "step3HardwareWalletMsg": { - "message": "다른 이더리움 계정을 사용하듯 하드웨어 계정을 사용합니다. dApps을 로그인하거나, 이더를 보내거나, ERC20토큰 혹은 대체가능하지 않은 토큰 (예를 들어 CryptoKitties)을 사거나 저장하거나 합니다." + "message": "다른 이더리움 계정을 사용하듯 하드웨어 계정을 사용합니다. dApps을 로그인하거나, 이더를 보내거나, ERC20 토큰 혹은 대체 가능하지 않은 토큰 (예를 들어 CryptoKitties)을 사거나 저장하거나 합니다." }, "submit": { "message": "제출" @@ -1044,7 +1044,7 @@ "message": "토큰 기호" }, "tokenWarning1": { - "message": "메타마스크 계좌를 통해 구입한 토큰을 추적합니다. 다른 계정으로 토큰을 구입한 경우 이곳에 나타나지 않습니다." + "message": "메타마스크 계정을 통해 구입한 토큰을 추적합니다. 다른 계정으로 토큰을 구입한 경우 이곳에 나타나지 않습니다." }, "total": { "message": "합계" @@ -1090,22 +1090,22 @@ "message": "새로운 메타마스크 UI를 사용하고 계십니다. 토큰 전송과 같은 새 기능들을 사용해보시면서 문제가 있다면 알려주세요." }, "unapproved": { - "message": "허가안됨" + "message": "허가 안 됨" }, "unavailable": { - "message": "유효하지 않음" + "message": "이용할 수 없음" }, "unknown": { - "message": "알려지지 않음" + "message": "알 수 없음" }, "unknownFunction": { - "message": "알려지지 않은 함수" + "message": "알 수 없는 함수" }, "unknownNetwork": { - "message": "알려지지 않은 프라이빗 네트워크" + "message": "알 수 없는 프라이빗 네트워크" }, "unknownNetworkId": { - "message": "알려지지 않은 네트워크 ID" + "message": "알 수 없는 네트워크 ID" }, "unknownQrCode": { "message": "오류: QR 코드를 확인할 수 없습니다" @@ -1114,7 +1114,7 @@ "message": "이런! 뭔가 잘못되었습니다...." }, "unknownCameraError": { - "message": "카메라를 접근하는 중 오류가 발생했습니다. 다시 시도해 주세요..." + "message": "카메라에 접근하는 중 오류가 발생했습니다. 다시 시도해 주세요..." }, "unlock": { "message": "잠금 해제" @@ -1127,7 +1127,7 @@ }, "usaOnly": { "message": "USA 거주자 한정", - "description": "해당 거래소는 USA거주자에 한해서만 사용가능합니다" + "description": "해당 거래소는 USA 거주자에 한해서만 사용 가능합니다" }, "usedByClients": { "message": "다양한 클라이언트에서 사용되고 있습니다" @@ -1145,7 +1145,7 @@ "message": "계정 보기" }, "viewOnEtherscan": { - "message": "이터스캔에서 보기" + "message": "이더스캔에서 보기" }, "visitWebSite": { "message": "웹사이트 방문" @@ -1166,7 +1166,7 @@ "message": "이것은 무엇인가요?" }, "yourSigRequested": { - "message": "서명이 요청되고 있습니다." + "message": "서명을 요청 중입니다." }, "youSign": { "message": "서명 중입니다" -- cgit From 837eb796e517d69f67094453695a5ca995da72a2 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Thu, 11 Oct 2018 09:42:21 -0700 Subject: Version 4.14.0 --- app/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/manifest.json b/app/manifest.json index 7c554f1ac..2729bd551 100644 --- a/app/manifest.json +++ b/app/manifest.json @@ -1,7 +1,7 @@ { "name": "__MSG_appName__", "short_name": "__MSG_appName__", - "version": "4.12.0", + "version": "4.13.0", "manifest_version": 2, "author": "https://metamask.io", "description": "__MSG_appDescription__", -- cgit From 1bbc55a53379294a9d92a3648798b1a400050176 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Thu, 11 Oct 2018 10:06:57 -0700 Subject: Correct 4.14.0 version --- app/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/manifest.json b/app/manifest.json index 2729bd551..e223171d3 100644 --- a/app/manifest.json +++ b/app/manifest.json @@ -1,7 +1,7 @@ { "name": "__MSG_appName__", "short_name": "__MSG_appName__", - "version": "4.13.0", + "version": "4.14.0", "manifest_version": 2, "author": "https://metamask.io", "description": "__MSG_appDescription__", -- cgit From 61dec4ea464607d32a5727bdf343a7d8a9af66fc Mon Sep 17 00:00:00 2001 From: matteopey Date: Mon, 15 Oct 2018 23:37:18 +0200 Subject: Update Italian translations (#5502) * Add new english messages * Update translation * Update changelog * Fix casing of MetaMask --- app/_locales/it/messages.json | 485 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 480 insertions(+), 5 deletions(-) (limited to 'app') diff --git a/app/_locales/it/messages.json b/app/_locales/it/messages.json index 492bcc3de..06e3dc855 100644 --- a/app/_locales/it/messages.json +++ b/app/_locales/it/messages.json @@ -2,6 +2,9 @@ "accept": { "message": "Accetta" }, + "accessingYourCamera": { + "message": "Accesso alla fotocamera..." + }, "account": { "message": "Account" }, @@ -11,6 +14,15 @@ "accountName": { "message": "Nome Account" }, + "accountOptions": { + "message": "Account Options" + }, + "accountSelectionRequired": { + "message": "Devi selezionare un account!" + }, + "activityLog": { + "message": "log attività" + }, "address": { "message": "Indirizzo" }, @@ -23,6 +35,12 @@ "addTokens": { "message": "Aggiungi più token" }, + "addSuggestedTokens": { + "message": "Aggiungi Token Suggeriti" + }, + "addAcquiredTokens": { + "message": "Aggiungi i token che hai acquistato usando MetaMask" + }, "amount": { "message": "Importo" }, @@ -37,9 +55,21 @@ "message": "MetaMask", "description": "Il nome dell'applicazione" }, + "approve": { + "message": "Approva" + }, + "approved": { + "message": "Approvato" + }, "attemptingConnect": { "message": "Tentativo di connessione alla blockchain." }, + "attemptToCancel": { + "message": "Tentativo di Annullamento?" + }, + "attemptToCancelDescription": { + "message": "Tentare di annullare non garantisce che la transazione verrà annullata. Se annullata, è comunque richiesto pagare alla rete la commissione sulla transazione." + }, "attributions": { "message": "Attribuzioni" }, @@ -71,8 +101,11 @@ "borrowDharma": { "message": "Prendi in presisito con Dharma (Beta)" }, + "browserNotSupported": { + "message": "Il tuo Browser non è supportato..." + }, "builtInCalifornia": { - "message": "MetaMask è progettato e costruito in California." + "message": "MetaMask è progettato e realizzato in California." }, "buy": { "message": "Compra" @@ -83,8 +116,23 @@ "buyCoinbaseExplainer": { "message": "Coinbase è il servizio più popolare al mondo per comprare e vendere Bitcoin, Ethereum e Litecoin." }, + "bytes": { + "message": "Bytes" + }, + "ok": { + "message": "Ok" + }, "cancel": { - "message": "Cancella" + "message": "Annulla" + }, + "cancelAttempt": { + "message": "Tentativo di Annullamento" + }, + "cancellationGasFee": { + "message": "Commissione di Annullamento in Gas" + }, + "cancelN": { + "message": "Cancel all $1 transactions" }, "classicInterface": { "message": "Usa l'interfaccia classica" @@ -92,9 +140,18 @@ "clickCopy": { "message": "Clicca per Copiare" }, + "close": { + "message": "Chiudi" + }, + "chromeRequiredForHardwareWallets": { + "message": "Devi usare MetaMask con Google Chrome per connettere il tuo Portafoglio Hardware" + }, "confirm": { "message": "Conferma" }, + "confirmed": { + "message": "Confermata" + }, "confirmContract": { "message": "Conferma Contratto" }, @@ -104,6 +161,36 @@ "confirmTransaction": { "message": "Conferma Transazione" }, + "connectHardwareWallet": { + "message": "Connetti Portafoglio Hardware" + }, + "connect": { + "message": "Connetti" + }, + "connecting": { + "message": "Connessione..." + }, + "connectingToKovan": { + "message": "Connessione alla Rete di test Kovan" + }, + "connectingToMainnet": { + "message": "Connessione alla Rete Ethereum Principale" + }, + "connectingToRopsten": { + "message": "Connessione alla Rete di test Ropsten" + }, + "connectingToRinkeby": { + "message": "Connessione alla Rete di test Rinkeby" + }, + "connectingToUnknown": { + "message": "Connessione ad una Rete Sconosciuta" + }, + "connectToLedger": { + "message": "Connettersi al Ledger" + }, + "connectToTrezor": { + "message": "Connettersi al Trezor" + }, "continue": { "message": "Continua" }, @@ -131,6 +218,9 @@ "copy": { "message": "Copia" }, + "copyAddress": { + "message": "Copia l'indirizzo" + }, "copyToClipboard": { "message": "Copia negli appunti" }, @@ -156,12 +246,21 @@ "currentConversion": { "message": "Cambio Corrente" }, + "currentLanguage": { + "message": "Lingua Corrente" + }, "currentNetwork": { "message": "Rete Corrente" }, + "currentRpc": { + "message": "RPC Corrente" + }, "customGas": { "message": "Personalizza Gas" }, + "customToken": { + "message": "Token Personalizzato" + }, "customize": { "message": "Personalizza" }, @@ -223,33 +322,54 @@ "done": { "message": "Finito" }, + "downloadGoogleChrome": { + "message": "Scarica Google Chrome" + }, "downloadStateLogs": { "message": "Scarica i log di Stato" }, + "dontHaveAHardwareWallet": { + "message": "Non hai un portafoglio hardware?" + }, + "dropped": { + "message": "Abbandonata" + }, "edit": { "message": "Modifica" }, "editAccountName": { "message": "Modifica Nome Account" }, + "editingTransaction": { + "message": "Modifica la transazione" + }, "emailUs": { "message": "Mandaci una mail!" }, "encryptNewDen": { "message": "Cripta il tuo nuovo DEN" }, + "ensNameNotFound": { + "message": "Nome ENS non trovato" + }, "enterPassword": { "message": "Inserisci password" }, "enterPasswordConfirm": { "message": "Inserisci la tua password per confermare" }, + "enterPasswordContinue": { + "message": "Inserisci la tua password per continuare" + }, "etherscanView": { "message": "Vedi account su Etherscan" }, "exchangeRate": { "message": "Tasso di cambio" }, + "expandView": { + "message": "Expand View" + }, "exportPrivateKey": { "message": "Esporta Chiave Privata" }, @@ -257,7 +377,7 @@ "message": "Esporta chiave privata a tuo rischio." }, "failed": { - "message": "Fallito" + "message": "Fallita" }, "fiat": { "message": "FIAT", @@ -270,6 +390,9 @@ "followTwitter": { "message": "Seguici su Twitter" }, + "forgetDevice": { + "message": "Dimentica questo dispositivo" + }, "from": { "message": "Da" }, @@ -279,6 +402,9 @@ "fromShapeShift": { "message": "Da ShapeShift" }, + "functionType": { + "message": "Tipo della Funzione" + }, "gas": { "message": "Gas", "description": "Piccola indicazione del costo del gas" @@ -310,6 +436,9 @@ "gasPriceRequired": { "message": "Prezzo Gas Richiesto" }, + "generatingTransaction": { + "message": "Generando la transazione" + }, "getEther": { "message": "Ottieni Ether" }, @@ -317,10 +446,28 @@ "message": "Ottieni Get Ether da un faucet per $1", "description": "Visualizza il nome della rete per il faucet Ether" }, + "getHelp": { + "message": "Aiuto." + }, "greaterThanMin": { "message": "deve essere maggiore o uguale a $1.", "description": "aiuto per inserire un input esadecimale come decimale" }, + "hardware": { + "message": "hardware" + }, + "hardwareWalletConnected": { + "message": "Portafoglio hardware connesso" + }, + "hardwareWallets": { + "message": "Connetti portafoglio hardware" + }, + "hardwareWalletsMsg": { + "message": "Selezione un portafoglio hardware che vuoi utilizzare con MetaMask" + }, + "havingTroubleConnecting": { + "message": "Problemi di connessione?" + }, "here": { "message": "qui", "description": "per intendere -clicca qui- per maggiori informazioni (va con troubleTokenBalances)" @@ -328,6 +475,9 @@ "hereList": { "message": "Questa è una lista!!!!" }, + "hexData": { + "message": "Dati Hex" + }, "hide": { "message": "Nascondi" }, @@ -337,6 +487,9 @@ "hideTokenPrompt": { "message": "Nascondi Token?" }, + "history": { + "message": "Storico" + }, "howToDeposit": { "message": "Come vuoi depositare Ether?" }, @@ -363,9 +516,18 @@ "message": "Importato", "description": "stato che conferma che un account è stato totalmente caricato nel portachiavi" }, + "importUsingSeed": { + "message": "Importa account con frase seed" + }, + "info": { + "message": "Informazioni" + }, "infoHelp": { "message": "Informazioni & Aiuto" }, + "initialTransactionConfirmed": { + "message": "La transazione iniziale è stata confermata dalla rete. Clicca OK per tornare indietro." + }, "insufficientFunds": { "message": "Fondi non sufficienti." }, @@ -390,6 +552,9 @@ "invalidRPC": { "message": "URI RPC invalido" }, + "invalidSeedPhrase": { + "message": "Frase seed non valida" + }, "jsonFail": { "message": "Qualcosa è andato storto. Assicurati che il file JSON sia formattato correttamente." }, @@ -397,12 +562,24 @@ "message": "File JSON", "description": "formato per importare un account" }, + "keepTrackTokens": { + "message": "Tieni traccia dei tokens che hai acquistato con il tuo account MetaMask." + }, "kovan": { "message": "Rete di test Kovan" }, "knowledgeDataBase": { "message": "Visita la nostra Knowledge Base" }, + "max": { + "message": "Massimo" + }, + "learnMore": { + "message": "Scopri di più" + }, + "ledgerAccountRestriction": { + "message": "E' necessario utilizzare l'ultimo account prima di poterne aggiungere uno nuovo." + }, "lessThanMax": { "message": "deve essere minore o uguale a $1.", "description": "aiuto per inserire un input esadecimale come decimale" @@ -410,6 +587,9 @@ "likeToAddTokens": { "message": "Vorresti aggiungere questi token?" }, + "links": { + "message": "Collegamenti" + }, "limit": { "message": "Limite" }, @@ -437,17 +617,26 @@ "mainnet": { "message": "Rete Ethereum Principale" }, + "menu": { + "message": "Menu" + }, "message": { "message": "Messaggio" }, "metamaskDescription": { "message": "MetaMask è una cassaforte sicura per identità su Ethereum." }, + "metamaskSeedWords": { + "message": "Parole Seed di MetaMask" + }, + "metamaskVersion": { + "message": "versione di MetaMask" + }, "min": { "message": "Minimo" }, "myAccounts": { - "message": "Account Miei" + "message": "Miei Account" }, "mustSelectOne": { "message": "Devi selezionare almeno un token." @@ -469,6 +658,9 @@ "networks": { "message": "Reti" }, + "nevermind": { + "message": "Non importa" + }, "newAccount": { "message": "Nuovo Account" }, @@ -482,6 +674,9 @@ "newPassword": { "message": "Nuova Password (minimo 8 caratteri)" }, + "newPassword8Chars": { + "message": "Nuova Password (minimo 8 caratteri)" + }, "newRecipient": { "message": "Nuovo Destinatario" }, @@ -489,7 +684,7 @@ "message": "Nuovo URL RPC" }, "next": { - "message": "Prossimo" + "message": "Avanti" }, "noAddressForName": { "message": "Nessun indirizzo è stato impostato per questo nome." @@ -497,32 +692,75 @@ "noDeposits": { "message": "Nessun deposito ricevuto" }, + "noConversionRateAvailable": { + "message": "Tasso di Conversione non Disponibile" + }, "noTransactionHistory": { "message": "Nessuna cronologia delle transazioni." }, "noTransactions": { "message": "Nessuna Transazione" }, + "notFound": { + "message": "Non Trovata" + }, "notStarted": { "message": "Non Iniziato" }, + "noWebcamFoundTitle": { + "message": "Webcam non trovata" + }, + "noWebcamFound": { + "message": "La webcam del tuo computer non è stata trovata. Per favore riprovaci." + }, "oldUI": { "message": "Vecchia interfaccia" }, "oldUIMessage": { "message": "Sei ritornato alla vecchia interfaccia. Puoi ritornare alla nuova interfaccia tramite l'opzione nel menu a discesa in alto a destra." }, + "onlySendToEtherAddress": { + "message": "Invia ETH solamente ad un account Ethereum." + }, + "onlySendTokensToAccountAddress": { + "message": "Invia solamente $1 ad un account Ethereum.", + "description": "mostra il simbolo del token" + }, + "openInTab": { + "message": "Apri in una scheda" + }, "or": { "message": "o", "description": "scelta tra creare o importare un nuovo account" }, + "orderOneHere": { + "message": "Compra un Trezor o un Ledger e tieni i tuoi soldi al sicuro" + }, + "origin": { + "message": "Origine" + }, + "outgoing": { + "message": "In Uscita" + }, + "parameters": { + "message": "Parametri" + }, + "password": { + "message": "Password" + }, "passwordCorrect": { "message": "Assicurati che la password sia corretta." }, + "passwordsDontMatch": { + "message": "Le Password Non Corrispondonos" + }, "passwordMismatch": { "message": "le password non corrispondono", "description": "nella creazione della password, le due password all'interno dei campi non corrispondono" }, + "passwordNotLongEnough": { + "message": "Password non abbastanza lunga" + }, "passwordShort": { "message": "password non sufficientemente lunga", "description": "nella creazione della password, la password non è lunga abbastanza" @@ -534,12 +772,21 @@ "pasteSeed": { "message": "Incolla la tua frase seed qui!" }, + "pending": { + "message": "in corso" + }, "personalAddressDetected": { "message": "Rilevato indirizzo personale. Inserisci l'indirizzo del contratto del token." }, "pleaseReviewTransaction": { "message": "Ricontrolla la tua transazione." }, + "popularTokens": { + "message": "Tokens Popolari" + }, + "prev": { + "message": "Precedente" + }, "privacyMsg": { "message": "Politica sulla Privacy" }, @@ -556,6 +803,9 @@ "qrCode": { "message": "Mostra Codice QR" }, + "queue": { + "message": "Coda" + }, "readdToken": { "message": "Puoi aggiungere nuovamente questo token in futuro andando in “Aggiungi token” nel menu delle opzioni del tuo account." }, @@ -574,36 +824,87 @@ "refundAddress": { "message": "Indirizzo di Rimborso" }, + "reject": { + "message": "Reject" + }, + "rejectAll": { + "message": "Reject All" + }, + "rejectTxsN": { + "message": "Reject $1 transactions" + }, + "rejectTxsDescription": { + "message": "You are about to batch reject $1 transactions." + }, "rejected": { "message": "Respinta" }, + "reset": { + "message": "Reset" + }, "resetAccount": { "message": "Resetta Account" }, + "resetAccountDescription": { + "message": "Resettare il tuo account cancellerà lo storico delle transazioni." + }, "restoreFromSeed": { "message": "Ripristina da una frase seed" }, + "restoreVault": { + "message": "Ripristina Cassaforte" + }, + "restoreAccountWithSeed": { + "message": "Ripristina Account con la Frase Seed" + }, "required": { "message": "Richiesto" }, "retryWithMoreGas": { "message": "Riprova con un prezzo del Gas maggiore qui" }, + "restore": { + "message": "Ripristina" + }, "revealSeedWords": { "message": "Rivela Frase Seed" }, + "revealSeedWordsTitle": { + "message": "Frase Seed" + }, + "revealSeedWordsDescription": { + "message": "Se cambierai browser o computer, ti servirà questa frase seed per accedere ai tuoi account. Salvala in un posto sicuro e segreto." + }, + "revealSeedWordsWarningTitle": { + "message": "NON CONDIVIDERE questa frase con nessuno!" + }, "revealSeedWordsWarning": { "message": "Non ripristinare la tua frase seed in pubblico!. Queste parole possono essere usate per rubare il tuo account." }, "revert": { "message": "Annulla" }, + "remove": { + "message": "rimuovi" + }, + "removeAccount": { + "message": "Rimuovi account" + }, + "removeAccountDescription": { + "message": "Questo account sarà rimosso dal tuo portafoglio. Per favore assicurati che hai la frase seed originale o la chiave privata per questo account importato prima di continuare. Puoi nuovamente importare o creare un account dal menù a tendina. " + }, + "readyToConnect": { + "message": "Pronto a Connetterti?" + }, "rinkeby": { "message": "Rete di test Rinkeby" }, "ropsten": { "message": "Rete di test Ropsten" }, + "rpc": { + "message": "RPC Personalizzata" + }, "sampleAccountName": { "message": "Es: Il mio nuovo account", "description": "Aiuta l'utente a capire il concetto di aggiungere un nome leggibile al loro account" @@ -611,6 +912,9 @@ "save": { "message": "Salva" }, + "saveAsCsvFile": { + "message": "Salva Come File CSV" + }, "saveAsFile": { "message": "Salva come File", "description": "Processo per esportare un account" @@ -618,9 +922,18 @@ "saveSeedAsFile": { "message": "Salva la Frase Seed come File" }, + "scanInstructions": { + "message": "Posizione il codice QR davanti alla fotocamera" + }, + "scanQrCode": { + "message": "Scansiona Codice QR" + }, "search": { "message": "Cerca" }, + "searchResults": { + "message": "Risultati Ricerca" + }, "secretPhrase": { "message": "Inserisci la tua frase segreta di dodici parole per ripristinare la cassaforte." }, @@ -633,6 +946,9 @@ "selectCurrency": { "message": "Seleziona Moneta" }, + "selectLocale": { + "message": "Selezione Lingua" + }, "selectService": { "message": "Seleziona Servizio" }, @@ -648,6 +964,33 @@ "sendTokens": { "message": "Invia Tokens" }, + "sentEther": { + "message": "ether inviati" + }, + "sentTokens": { + "message": "tokens inviati" + }, + "separateEachWord": { + "message": "Separa ogni parola con un solo spazio" + }, + "searchTokens": { + "message": "Cerca Tokens" + }, + "selectAnAddress": { + "message": "Seleziona un Indirizzo" + }, + "selectAnAccount": { + "message": "Seleziona un Account" + }, + "selectAnAccountHelp": { + "message": "Selezione l'account da visualizzare in MetaMask" + }, + "selectHdPath": { + "message": "Seleziona Percorso HD" + }, + "selectPathHelp": { + "message": "Se non vedi il tuo account Ledger esistente di seguito, prova a cambiare il percorso in \"Legacy (MEW / MyCrypto)\"" + }, "sendTokensAnywhere": { "message": "Invia Tokens a chiunque abbia un account Ethereum" }, @@ -663,9 +1006,21 @@ "showQRCode": { "message": "Mostra Codie QR" }, + "showHexData": { + "message": "Mostra Dati Hex" + }, + "showHexDataDescription": { + "message": "Seleziona per mostrare il campo dei dati hex nella schermata di invio" + }, "sign": { "message": "Firma" }, + "signatureRequest": { + "message": "Firma Richiesta" + }, + "signed": { + "message": "Firmata" + }, "signMessage": { "message": "Firma Messaggio" }, @@ -681,6 +1036,15 @@ "spaceBetween": { "message": "ci può essere solo uno spazio tra le parole" }, + "speedUp": { + "message": "velocizza" + }, + "speedUpTitle": { + "message": "Velocizza Transazione" + }, + "speedUpSubtitle": { + "message": "Aumenta il prezzo del gas per tentare di sovrascrivere e velocizzare la transazione" + }, "status": { "message": "Stato" }, @@ -690,9 +1054,33 @@ "stateLogsDescription": { "message": "I log di stato contengono i tuoi indirizzi pubblici e le transazioni effettuate." }, + "stateLogError": { + "message": "Errore nel recupero dei log di stato." + }, + "step1HardwareWallet": { + "message": "1. Connetti Portafoglio Hardware" + }, + "step1HardwareWalletMsg": { + "message": "Connetti il tuo portafoglio hardware al tuo computer." + }, + "step2HardwareWallet": { + "message": "2. Seleziona un Account" + }, + "step2HardwareWalletMsg": { + "message": "Selezione l'account che vuoi vedere. Puoi selezionarne solo uno alla volta." + }, + "step3HardwareWallet": { + "message": "3. Inizia a usare dApps e molto altro ancora!" + }, + "step3HardwareWalletMsg": { + "message": "Usa il tuo account hardware come utilizzeresti qualsiasi account Ethereum. Accedi alle dApps, invia Eth, compra e conserva token ERC20 e token non fungibili come CryptoKitties" + }, "submit": { "message": "Invia" }, + "submitted": { + "message": "Inviata" + }, "supportCenter": { "message": "Visita il nostro Centro di Supporto" }, @@ -715,6 +1103,9 @@ "message": "$1 a ETH via ShapeShift", "description": "il sistema riempirà il tipo di deposito all'inizio del messaggio" }, + "token": { + "message": "Token" + }, "tokenAddress": { "message": "Indirizzo Token" }, @@ -736,22 +1127,61 @@ "total": { "message": "Totale" }, + "transaction": { + "message": "transazione" + }, + "transactionConfirmed": { + "message": "Transazione confermata il $2." + }, + "transactionCreated": { + "message": "Transazione di valore $1 creata il $2." + }, + "transactionWithNonce": { + "message": "Transazione $1" + }, + "transactionDropped": { + "message": "Transazione abbandonata il $2." + }, + "transactionSubmitted": { + "message": "Transazione inviata il $2." + }, + "transactionUpdated": { + "message": "Transazione aggiornata il $2." + }, + "transactionUpdatedGas": { + "message": "Transazione aggiornata con un prezzo del gas di $1 il $2." + }, "transactions": { "message": "transazioni" }, + "transactionError": { + "message": "Errore Transazione. Eccceziona generata nel codice del contratto." + }, "transactionMemo": { "message": "Promemoria Transazione (opzionale)" }, "transactionNumber": { "message": "Numero Transazione" }, + "transfer": { + "message": "Trasferisci" + }, + "transferFrom": { + "message": "Transfer From" + }, "transfers": { "message": "Trasferimenti" }, + "trezorHardwareWallet": { + "message": "TREZOR Portafoglio Hardware" + }, "troubleTokenBalances": { "message": "Abbiamo avuto un problema a caricare il bilancio dei tuoi token. Puoi vederlo ", "description": "Seguito da un link (qui) per vedere il bilancio dei token" }, + "tryAgain": { + "message": "Prova di nuovo" + }, "twelveWords": { "message": "Queste 12 parole sono l'unico modo per ripristinare i tuoi account MetaMask. \nSalvale in un posto sicuro e segreto." }, @@ -764,18 +1194,45 @@ "uiWelcomeMessage": { "message": "Stai utilizzanto la nuova interfaccia di MetaMask. Guarda in giro, prova nuove funzionalità come inviare token, e facci sapere se hai dei problemi." }, + "unapproved": { + "message": "Non approvata" + }, "unavailable": { "message": "Non Disponibile" }, + "units": { + "message": "unità" + }, "unknown": { "message": "Sconosciuto" }, + "unknownFunction": { + "message": "Funzione Sconosciuta" + }, "unknownNetwork": { "message": "Rete Privata Sconosciuta" }, "unknownNetworkId": { "message": "ID rete sconosciuto" }, + "unknownQrCode": { + "message": "Errore: Non siamo riusciti a identificare il codice QR" + }, + "unknownCameraErrorTitle": { + "message": "Ooops! Qualcosa è andato storto...." + }, + "unknownCameraError": { + "message": "C'è stato un errore nel tentativo di accedere alla fotocamera. Per favore prova di nuovo..." + }, + "unlock": { + "message": "Sblocca" + }, + "unlockMessage": { + "message": "Il web decentralizzato ti attende" + }, + "updatedWithDate": { + "message": "Aggiornata $1" + }, "uriErrorMsg": { "message": "Gli URI richiedono un prefisso HTTP/HTTPS." }, @@ -798,22 +1255,40 @@ "viewAccount": { "message": "Vedi Account" }, + "viewOnEtherscan": { + "message": "Vedi su Etherscan" + }, "visitWebSite": { "message": "Visita il nostro sito web" }, + "walletSeed": { + "message": "Seed del Portafoglio" + }, "warning": { "message": "Attenzione" }, + "welcomeBack": { + "message": "Bentornato!" + }, "welcomeBeta": { "message": "Benvenuto nella Beta di MetaMask" }, "whatsThis": { "message": "Cos'è questo?" }, + "yesLetsTry": { + "message": "Si, proviamo" + }, + "youNeedToAllowCameraAccess": { + "message": "Devi consentire l'accesso alla fotocamera per usare questa funzionalità." + }, "yourSigRequested": { "message": "E' richiesta la tua firma" }, "youSign": { "message": "Ti stai connettendo" + }, + "yourPrivateSeedPhrase": { + "message": "La tua frase seed privata" } } -- cgit From c821a8354c8eba05885ca219f39aedafbd4f8052 Mon Sep 17 00:00:00 2001 From: Alexander Tseung Date: Tue, 16 Oct 2018 06:00:47 +0800 Subject: Add txReceipt data to transaction details (#5513) --- app/_locales/en/messages.json | 3 ++ app/scripts/controllers/transactions/index.js | 35 +++++++++++++++++++++- .../controllers/transactions/tx-state-manager.js | 5 ++++ 3 files changed, 42 insertions(+), 1 deletion(-) (limited to 'app') diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index d8467e9eb..13b0da230 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -424,6 +424,9 @@ "gasLimitTooLow": { "message": "Gas limit must be at least 21000" }, + "gasUsed": { + "message": "Gas Used" + }, "generatingSeed": { "message": "Generating Seed..." }, diff --git a/app/scripts/controllers/transactions/index.js b/app/scripts/controllers/transactions/index.js index a57c85f50..9f2290924 100644 --- a/app/scripts/controllers/transactions/index.js +++ b/app/scripts/controllers/transactions/index.js @@ -366,7 +366,40 @@ class TransactionController extends EventEmitter { this.txStateManager.setTxStatusSubmitted(txId) } - confirmTransaction (txId) { + /** + * Sets the status of the transaction to confirmed and sets the status of nonce duplicates as + * dropped if the txParams have data it will fetch the txReceipt + * @param {number} txId - The tx's ID + * @returns {Promise} + */ + async confirmTransaction (txId) { + // get the txReceipt before marking the transaction confirmed + // to ensure the receipt is gotten before the ui revives the tx + const txMeta = this.txStateManager.getTx(txId) + + if (!txMeta) { + return + } + + try { + const txReceipt = await this.query.getTransactionReceipt(txMeta.hash) + + // It seems that sometimes the numerical values being returned from + // this.query.getTransactionReceipt are BN instances and not strings. + const gasUsed = typeof txReceipt.gasUsed !== 'string' + ? txReceipt.gasUsed.toString(16) + : txReceipt.gasUsed + + txMeta.txReceipt = { + ...txReceipt, + gasUsed, + } + + this.txStateManager.updateTx(txMeta, 'transactions#confirmTransaction - add txReceipt') + } catch (err) { + log.error(err) + } + this.txStateManager.setTxStatusConfirmed(txId) this._markNonceDuplicatesDropped(txId) } diff --git a/app/scripts/controllers/transactions/tx-state-manager.js b/app/scripts/controllers/transactions/tx-state-manager.js index daa6cc388..58c48e34e 100644 --- a/app/scripts/controllers/transactions/tx-state-manager.js +++ b/app/scripts/controllers/transactions/tx-state-manager.js @@ -400,6 +400,11 @@ class TransactionStateManager extends EventEmitter { */ _setTxStatus (txId, status) { const txMeta = this.getTx(txId) + + if (!txMeta) { + return + } + txMeta.status = status setTimeout(() => { try { -- cgit From e997285a07a5c940d41f387998e3d046af87314e Mon Sep 17 00:00:00 2001 From: Pedro Gutiérrez Date: Tue, 16 Oct 2018 00:10:00 +0200 Subject: Fixed wrong Spanish translation of `key` (#5517) --- app/_locales/es/messages.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'app') diff --git a/app/_locales/es/messages.json b/app/_locales/es/messages.json index 3e43a7b43..be2a29ab5 100644 --- a/app/_locales/es/messages.json +++ b/app/_locales/es/messages.json @@ -156,7 +156,7 @@ "message": " Copiar " }, "copyPrivateKey": { - "message": "Ésta es tu llave privada (haz click para copiar)" + "message": "Ésta es tu clave privada (haz click para copiar)" }, "copyToClipboard": { "message": "Copiar al portapapeles" @@ -278,10 +278,10 @@ "message": "Tipo de cambio" }, "exportPrivateKey": { - "message": "Exportar llave privada" + "message": "Exportar clave privada" }, "exportPrivateKeyWarning": { - "message": "Exportar llaves privadas bajo TU PROPIO riesgo" + "message": "Exportar claves privadas bajo TU PROPIO riesgo" }, "failed": { "message": "Fallo" @@ -579,8 +579,8 @@ "description": "En el proceso de creación de contraseña, esta no es lo suficientemente larga para ser segura" }, "pastePrivateKey": { - "message": "Pega tu llave privada aqui", - "description": "Para importar una cuenta desde una llave privada" + "message": "Pega tu clave privada aqui", + "description": "Para importar una cuenta desde una clave privada" }, "pasteSeed": { "message": "¡Pega tu frase semilla aquí!" @@ -595,7 +595,7 @@ "message": "Política de privacidad" }, "privateKey": { - "message": "Llave privada", + "message": "Clave privada", "description": "Selecciona este tupo de archivo para importar una cuenta" }, "privateKeyWarning": { @@ -712,7 +712,7 @@ "message": "Comprar con ShapeShift" }, "showPrivateKeys": { - "message": "Mostrar llaves privadas" + "message": "Mostrar claves privadas" }, "showQRCode": { "message": "Mostrar codigo QR" -- cgit From c7758ebd15f1b5638102bfa913a69aa7abb7b7fc Mon Sep 17 00:00:00 2001 From: Noel Yoo Date: Tue, 16 Oct 2018 07:13:32 +0900 Subject: Improve Korean translations (#5515) * Add more korean translation * Improve korean translation --- app/_locales/ko/messages.json | 92 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 85 insertions(+), 7 deletions(-) (limited to 'app') diff --git a/app/_locales/ko/messages.json b/app/_locales/ko/messages.json index 55549bb87..c8d470188 100644 --- a/app/_locales/ko/messages.json +++ b/app/_locales/ko/messages.json @@ -14,9 +14,15 @@ "accountName": { "message": "계정 이름" }, + "accountOptions": { + "message": "계정 옵션" + }, "accountSelectionRequired": { "message": "계정을 선택하셔야 합니다!" }, + "activityLog": { + "message": "활동 로그" + }, "address": { "message": "주소" }, @@ -29,6 +35,9 @@ "addTokens": { "message": "토큰 추가" }, + "addSuggestedTokens": { + "message": "제안된 토큰 추가" + }, "addAcquiredTokens": { "message": "메타마스크를 통해 획득한 토큰 추가" }, @@ -55,6 +64,9 @@ "attemptingConnect": { "message": "블록체인에 접속을 시도하는 중입니다." }, + "attemptToCancel": { + "message": "취소 하시겠습니까?" + }, "attributions": { "message": "속성" }, @@ -110,6 +122,15 @@ "cancel": { "message": "취소" }, + "cancelAttempt": { + "message": "취소 시도" + }, + "cancellationGasFee": { + "message": "취소 가스 수수료" + }, + "cancelN": { + "message": "모든 $1 트랜잭션 취소" + }, "classicInterface": { "message": "예전 인터페이스" }, @@ -220,7 +241,10 @@ "description": "거래 유형 (암호화폐)" }, "currentConversion": { - "message": "선택된 단위" + "message": "현재 통화" + }, + "currentLanguage": { + "message": "현재 언어" }, "currentNetwork": { "message": "현재 네트워크" @@ -340,6 +364,9 @@ "exchangeRate": { "message": "환율" }, + "expandView": { + "message": "큰 화면으로 보기" + }, "exportPrivateKey": { "message": "개인키 내보내기" }, @@ -457,6 +484,9 @@ "hideTokenPrompt": { "message": "토큰 숨기기?" }, + "history": { + "message": "히스토리" + }, "howToDeposit": { "message": "어떤 방법으로 이더를 입금하시겠습니까?" }, @@ -486,6 +516,9 @@ "importUsingSeed": { "message": "계정 시드 구문으로 가져오기" }, + "info": { + "message": "정보" + }, "infoHelp": { "message": "정보 및 도움말" }, @@ -539,7 +572,7 @@ "message": "최대" }, "learnMore": { - "message": "더 배우기." + "message": "더 알아보기." }, "ledgerAccountRestriction": { "message": "새 계정을 추가하려면 최소 마지막 계정을 사용해야 합니다." @@ -590,6 +623,9 @@ "metamaskDescription": { "message": "메타마스크는 이더리움을 위한 안전한 신분 저장소입니다." }, + "metamaskVersion": { + "message": "메타마스크 버전" + }, "metamaskSeedWords": { "message": "메타마스크 시드 단어" }, @@ -610,7 +646,7 @@ "description": "사용자는 계정을 가져오기 위해서 파일을 추가후 계속 진행해야 합니다" }, "needImportPassword": { - "message": "선택 된 파일에 대한 비밀번호를 입력해주세요.", + "message": "선택된 파일에 대한 비밀번호를 입력해주세요.", "description": "계정을 가져오기 위해서 비밀번호와 파일이 필요합니다." }, "negativeETH": { @@ -727,6 +763,9 @@ "pasteSeed": { "message": "시드 구문을 이곳에 붙여넣어 주세요!" }, + "pending": { + "message": "펜딩 중" + }, "personalAddressDetected": { "message": "개인 주소가 탐지됨. 토큰 컨트랙트 주소를 입력하세요." }, @@ -755,6 +794,9 @@ "qrCode": { "message": "QR 코드 보기" }, + "queue": { + "message": "큐" + }, "readdToken": { "message": "옵션 메뉴에서 “토큰 추가”를 눌러서 추후에 다시 이 토큰을 추가하실 수 있습니다." }, @@ -773,6 +815,18 @@ "refundAddress": { "message": "환불받을 주소" }, + "reject": { + "message": "거부" + }, + "rejectAll": { + "message": "모두 거부" + }, + "rejectTxsN": { + "message": "$1 트랜잭션 거부" + }, + "rejectTxsDescription": { + "message": "$1 트랜잭션을 거부합니다." + }, "rejected": { "message": "거부됨" }, @@ -892,6 +946,9 @@ "selectCurrency": { "message": "통화 선택" }, + "selectLocale": { + "message": "언어 선택" + }, "selectService": { "message": "서비스 선택" }, @@ -907,6 +964,12 @@ "sendTokens": { "message": "토큰 전송" }, + "sentEther": { + "message": "전송된 이더" + }, + "sentTokens": { + "message": "전송된 토큰" + }, "separateEachWord": { "message": "각 단어는 공백 한칸으로 분리합니다" }, @@ -934,9 +997,6 @@ "settings": { "message": "설정" }, - "info": { - "message": "정보" - }, "shapeshiftBuy": { "message": "Shapeshift를 통해서 구매하기" }, @@ -946,12 +1006,21 @@ "showQRCode": { "message": "QR 코드 보기" }, + "showHexData": { + "message": "Hex 데이터 보기" + }, + "showHexDataDescription": { + "message": "선택하면 전송화면의 hex 데이터 필드 값을 보여줍니다." + }, "sign": { "message": "서명" }, "signed": { "message": "서명됨" }, + "signatureRequest": { + "message": "서명 요청" + }, "signMessage": { "message": "메시지 서명" }, @@ -1049,6 +1118,9 @@ "total": { "message": "합계" }, + "transaction": { + "message": "트랜잭션" + }, "transactions": { "message": "트랜잭션" }, @@ -1095,6 +1167,9 @@ "unavailable": { "message": "이용할 수 없음" }, + "units": { + "message": "단위" + }, "unknown": { "message": "알 수 없음" }, @@ -1165,11 +1240,14 @@ "whatsThis": { "message": "이것은 무엇인가요?" }, + "yesLetsTry": { + "message": "네, 시도해보겠습니다." + }, "yourSigRequested": { "message": "서명을 요청 중입니다." }, "youSign": { - "message": "서명 중입니다" + "message": "서명합니다" }, "yourPrivateSeedPhrase": { "message": "개인 시드 구문" -- cgit From d44b7ef3da36d3d4c1d91fc779ecb9eb034c4ea5 Mon Sep 17 00:00:00 2001 From: Whymarrh Whitby Date: Mon, 15 Oct 2018 21:56:51 -0230 Subject: Fix document extension check when injecting web3 --- app/scripts/contentscript.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'app') diff --git a/app/scripts/contentscript.js b/app/scripts/contentscript.js index d870741d6..33523eb46 100644 --- a/app/scripts/contentscript.js +++ b/app/scripts/contentscript.js @@ -135,17 +135,22 @@ function doctypeCheck () { } /** - * Checks the current document extension + * Returns whether or not the extension (suffix) of the current document is prohibited * - * @returns {boolean} {@code true} if the current extension is not prohibited + * This checks {@code window.location.pathname} against a set of file extensions + * that should not have web3 injected into them. This check is indifferent of query parameters + * in the location. + * + * @returns {boolean} whether or not the extension of the current document is prohibited */ function suffixCheck () { - var prohibitedTypes = ['xml', 'pdf'] - var currentUrl = window.location.href - var currentRegex + const prohibitedTypes = [ + /\.xml$/, + /\.pdf$/, + ] + const currentUrl = window.location.pathname for (let i = 0; i < prohibitedTypes.length; i++) { - currentRegex = new RegExp(`\\.${prohibitedTypes[i]}$`) - if (currentRegex.test(currentUrl)) { + if (prohibitedTypes[i].test(currentUrl)) { return false } } -- cgit