feature/default_network_editable
commit
2f78fffbdb
@ -1,27 +0,0 @@ |
||||
{ |
||||
"node": true, |
||||
"browser": true, |
||||
"esnext": true, |
||||
"bitwise": true, |
||||
"camelcase": true, |
||||
"curly": true, |
||||
"eqeqeq": true, |
||||
"immed": true, |
||||
"indent": 2, |
||||
"latedef": true, |
||||
"newcap": true, |
||||
"noarg": true, |
||||
"quotmark": "single", |
||||
"regexp": true, |
||||
"undef": true, |
||||
"unused": true, |
||||
"strict": true, |
||||
"trailing": true, |
||||
"smarttabs": true, |
||||
"globals" : { |
||||
"chrome": true, |
||||
"crypto": true, |
||||
"describe": true, |
||||
"it": true |
||||
} |
||||
} |
@ -0,0 +1,912 @@ |
||||
{ |
||||
"accept": { |
||||
"message": "Přijmout" |
||||
}, |
||||
"account": { |
||||
"message": "Účet" |
||||
}, |
||||
"accountDetails": { |
||||
"message": "Detaily účtu" |
||||
}, |
||||
"accountName": { |
||||
"message": "Název účtu" |
||||
}, |
||||
"address": { |
||||
"message": "Adresa" |
||||
}, |
||||
"addCustomToken": { |
||||
"message": "Přidat vlastní token" |
||||
}, |
||||
"addToken": { |
||||
"message": "Přidat token" |
||||
}, |
||||
"addTokens": { |
||||
"message": "Přidat tokeny" |
||||
}, |
||||
"amount": { |
||||
"message": "Částka" |
||||
}, |
||||
"amountPlusGas": { |
||||
"message": "Částka + palivo" |
||||
}, |
||||
"appDescription": { |
||||
"message": "Ethereum rozšíření prohlížeče", |
||||
"description": "The description of the application" |
||||
}, |
||||
"appName": { |
||||
"message": "MetaMask", |
||||
"description": "The name of the application" |
||||
}, |
||||
"approved": { |
||||
"message": "Schváleno" |
||||
}, |
||||
"attemptingConnect": { |
||||
"message": "Pokouším se připojit k blockchainu." |
||||
}, |
||||
"attributions": { |
||||
"message": "Zásluhy" |
||||
}, |
||||
"available": { |
||||
"message": "Dostupné" |
||||
}, |
||||
"back": { |
||||
"message": "Zpět" |
||||
}, |
||||
"balance": { |
||||
"message": "Zůstatek:" |
||||
}, |
||||
"balances": { |
||||
"message": "Zůstatek tokenu" |
||||
}, |
||||
"balanceIsInsufficientGas": { |
||||
"message": "Nedostatek prostředků pro aktuální množství paliva" |
||||
}, |
||||
"beta": { |
||||
"message": "BETA" |
||||
}, |
||||
"betweenMinAndMax": { |
||||
"message": "musí být větší nebo roven $1 a menší nebo roven $2.", |
||||
"description": "helper for inputting hex as decimal input" |
||||
}, |
||||
"blockiesIdenticon": { |
||||
"message": "Použít Blockies Identicon" |
||||
}, |
||||
"borrowDharma": { |
||||
"message": "Pújčit si přes Dharma (Beta)" |
||||
}, |
||||
"builtInCalifornia": { |
||||
"message": "MetaMask je navržen a vytvořen v Kalifornii." |
||||
}, |
||||
"buy": { |
||||
"message": "Koupit" |
||||
}, |
||||
"buyCoinbase": { |
||||
"message": "Nákup na Coinbase" |
||||
}, |
||||
"buyCoinbaseExplainer": { |
||||
"message": "Coinbase je světově nejoblíbenější místo k nákupu a prodeji bitcoinu, etherea nebo litecoinu." |
||||
}, |
||||
"ok": { |
||||
"message": "Ok" |
||||
}, |
||||
"cancel": { |
||||
"message": "Zrušit" |
||||
}, |
||||
"classicInterface": { |
||||
"message": "Použít klasické rozhraní" |
||||
}, |
||||
"clickCopy": { |
||||
"message": "Kliknutím zkopírovat" |
||||
}, |
||||
"confirm": { |
||||
"message": "Potvrdit" |
||||
}, |
||||
"confirmed": { |
||||
"message": "Potvrzeno" |
||||
}, |
||||
"confirmContract": { |
||||
"message": "Potvrdit kontrakt" |
||||
}, |
||||
"confirmPassword": { |
||||
"message": "Potvrdit heslo" |
||||
}, |
||||
"confirmTransaction": { |
||||
"message": "Potvrdit transakci" |
||||
}, |
||||
"continue": { |
||||
"message": "Pokračovat" |
||||
}, |
||||
"continueToCoinbase": { |
||||
"message": "Přejít na Coinbase" |
||||
}, |
||||
"contractDeployment": { |
||||
"message": "Nasazení kontraktu" |
||||
}, |
||||
"conversionProgress": { |
||||
"message": "Provádí se převod" |
||||
}, |
||||
"copiedButton": { |
||||
"message": "Zkopírováno" |
||||
}, |
||||
"copiedClipboard": { |
||||
"message": "Zkopírováno do schránky" |
||||
}, |
||||
"copiedExclamation": { |
||||
"message": "Zkopírováno!" |
||||
}, |
||||
"copiedSafe": { |
||||
"message": "Zkopíroval jsem to na bezpečné místo" |
||||
}, |
||||
"copy": { |
||||
"message": "Kopírovat" |
||||
}, |
||||
"copyToClipboard": { |
||||
"message": "Kopírovat do schránky" |
||||
}, |
||||
"copyButton": { |
||||
"message": " Kopírovat " |
||||
}, |
||||
"copyPrivateKey": { |
||||
"message": "Toto je váš privátní klíč (kliknutím zkopírujte)" |
||||
}, |
||||
"create": { |
||||
"message": "Vytvořit" |
||||
}, |
||||
"createAccount": { |
||||
"message": "Vytvořit účet" |
||||
}, |
||||
"createDen": { |
||||
"message": "Vytvořit" |
||||
}, |
||||
"crypto": { |
||||
"message": "Krypto", |
||||
"description": "Exchange type (cryptocurrencies)" |
||||
}, |
||||
"currentConversion": { |
||||
"message": "Aktuální převod" |
||||
}, |
||||
"currentNetwork": { |
||||
"message": "Aktuální síť" |
||||
}, |
||||
"customGas": { |
||||
"message": "Nastavit palivo" |
||||
}, |
||||
"customToken": { |
||||
"message": "Vlastní token" |
||||
}, |
||||
"customize": { |
||||
"message": "Nastavit" |
||||
}, |
||||
"customRPC": { |
||||
"message": "Vlastní RPC" |
||||
}, |
||||
"decimalsMustZerotoTen": { |
||||
"message": "Desetinných míst musí být od 0 do 36." |
||||
}, |
||||
"decimal": { |
||||
"message": "Počet desetinných míst přesnosti" |
||||
}, |
||||
"defaultNetwork": { |
||||
"message": "Výchozí síť pro Etherové transakce je Main Net." |
||||
}, |
||||
"denExplainer": { |
||||
"message": "Váš DEN je heslem šifrované uložiště v MetaMasku." |
||||
}, |
||||
"deposit": { |
||||
"message": "Vklad" |
||||
}, |
||||
"depositBTC": { |
||||
"message": "Vložte BTC na níže uvedenou adresu:" |
||||
}, |
||||
"depositCoin": { |
||||
"message": "Vložte $1 na níže uvedenou adresu", |
||||
"description": "Tells the user what coin they have selected to deposit with shapeshift" |
||||
}, |
||||
"depositEth": { |
||||
"message": "Vložit Eth" |
||||
}, |
||||
"depositEther": { |
||||
"message": "Vložit Ether" |
||||
}, |
||||
"depositFiat": { |
||||
"message": "Vklad s fiat měnou" |
||||
}, |
||||
"depositFromAccount": { |
||||
"message": "Vložte z jiného účtu" |
||||
}, |
||||
"depositShapeShift": { |
||||
"message": "Vklad přes ShapeShift" |
||||
}, |
||||
"depositShapeShiftExplainer": { |
||||
"message": "Pokud vlastníte jiné kryptoměny, můžete je směnit Ether a vložit ho přímo do peněženky MetaMask. Bez založení účtu." |
||||
}, |
||||
"details": { |
||||
"message": "Podrobnosti" |
||||
}, |
||||
"directDeposit": { |
||||
"message": "Přímý vklad" |
||||
}, |
||||
"directDepositEther": { |
||||
"message": "Vložit Ether přímo" |
||||
}, |
||||
"directDepositEtherExplainer": { |
||||
"message": "Pokud už vlastníte nějaký Ether, nejrychleji ho dostanete do peněženky přímým vkladem." |
||||
}, |
||||
"done": { |
||||
"message": "Hotovo" |
||||
}, |
||||
"downloadStateLogs": { |
||||
"message": "Stáhnout stavové protokoly" |
||||
}, |
||||
"dropped": { |
||||
"message": "Zrušeno" |
||||
}, |
||||
"edit": { |
||||
"message": "Upravit" |
||||
}, |
||||
"editAccountName": { |
||||
"message": "Upravit název účtu" |
||||
}, |
||||
"emailUs": { |
||||
"message": "Napište nám e-mail!" |
||||
}, |
||||
"encryptNewDen": { |
||||
"message": "Zašifrujte svůj nový DEN" |
||||
}, |
||||
"enterPassword": { |
||||
"message": "Zadejte heslo" |
||||
}, |
||||
"enterPasswordConfirm": { |
||||
"message": "Zadejte heslo k potvrzení" |
||||
}, |
||||
"passwordNotLongEnough": { |
||||
"message": "Heslo není dost dlouhé" |
||||
}, |
||||
"passwordsDontMatch": { |
||||
"message": "Hesla nejsou stejná" |
||||
}, |
||||
"etherscanView": { |
||||
"message": "Prohlédněte si účet na Etherscan" |
||||
}, |
||||
"exchangeRate": { |
||||
"message": "Směnný kurz" |
||||
}, |
||||
"exportPrivateKey": { |
||||
"message": "Exportovat privátní klíč" |
||||
}, |
||||
"exportPrivateKeyWarning": { |
||||
"message": "Exportujte privátní klíč na vlastní riziko." |
||||
}, |
||||
"failed": { |
||||
"message": "Neúspěšné" |
||||
}, |
||||
"fiat": { |
||||
"message": "FIAT", |
||||
"description": "Exchange type" |
||||
}, |
||||
"fileImportFail": { |
||||
"message": "Import souboru nefunguje? Klikněte sem!", |
||||
"description": "Helps user import their account from a JSON file" |
||||
}, |
||||
"followTwitter": { |
||||
"message": "Sledujte nás na Twitteru" |
||||
}, |
||||
"from": { |
||||
"message": "Od" |
||||
}, |
||||
"fromToSame": { |
||||
"message": "Adresy odesílatele a příjemce nemohou být stejné" |
||||
}, |
||||
"fromShapeShift": { |
||||
"message": "Z ShapeShift" |
||||
}, |
||||
"gas": { |
||||
"message": "Palivo", |
||||
"description": "Short indication of gas cost" |
||||
}, |
||||
"gasFee": { |
||||
"message": "Poplatek za palivo" |
||||
}, |
||||
"gasLimit": { |
||||
"message": "Limit paliva" |
||||
}, |
||||
"gasLimitCalculation": { |
||||
"message": "Počítáme doporučený limit paliva na základě úspěšnosti v síti." |
||||
}, |
||||
"gasLimitRequired": { |
||||
"message": "Limit paliva je povinný" |
||||
}, |
||||
"gasLimitTooLow": { |
||||
"message": "Limit paliva musí být alespoň 21000" |
||||
}, |
||||
"generatingSeed": { |
||||
"message": "Generuji klíčovou frázi..." |
||||
}, |
||||
"gasPrice": { |
||||
"message": "Cena paliva (GWEI)" |
||||
}, |
||||
"gasPriceCalculation": { |
||||
"message": "Počítáme doporučenou cenu paliva na základě úspěšnosti v síti." |
||||
}, |
||||
"gasPriceRequired": { |
||||
"message": "Cena paliva je povinná" |
||||
}, |
||||
"getEther": { |
||||
"message": "Získejte Ether" |
||||
}, |
||||
"getEtherFromFaucet": { |
||||
"message": "Získejte Ether z faucetu za $1.", |
||||
"description": "Displays network name for Ether faucet" |
||||
}, |
||||
"greaterThanMin": { |
||||
"message": "musí být větší nebo roven $1.", |
||||
"description": "helper for inputting hex as decimal input" |
||||
}, |
||||
"here": { |
||||
"message": "zde", |
||||
"description": "as in -click here- for more information (goes with troubleTokenBalances)" |
||||
}, |
||||
"hereList": { |
||||
"message": "Tady je seznam!!!!" |
||||
}, |
||||
"hide": { |
||||
"message": "Skrýt" |
||||
}, |
||||
"hideToken": { |
||||
"message": "Skrýt token" |
||||
}, |
||||
"hideTokenPrompt": { |
||||
"message": "Skrýt token?" |
||||
}, |
||||
"howToDeposit": { |
||||
"message": "Jakým způsobem chcete vložit Ether?" |
||||
}, |
||||
"holdEther": { |
||||
"message": "Dovoluje vám držet ether a tokeny a slouží jako most k decentralizovaným aplikacím." |
||||
}, |
||||
"import": { |
||||
"message": "Import", |
||||
"description": "Button to import an account from a selected file" |
||||
}, |
||||
"importAccount": { |
||||
"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 " |
||||
}, |
||||
"importAnAccount": { |
||||
"message": "Import účtu" |
||||
}, |
||||
"importDen": { |
||||
"message": "Import existujícího DEN" |
||||
}, |
||||
"imported": { |
||||
"message": "Importováno", |
||||
"description": "status showing that an account has been fully loaded into the keyring" |
||||
}, |
||||
"infoHelp": { |
||||
"message": "Informace a nápověda" |
||||
}, |
||||
"insufficientFunds": { |
||||
"message": "Nedostatek finančních prostředků." |
||||
}, |
||||
"insufficientTokens": { |
||||
"message": "Nedostatek tokenů." |
||||
}, |
||||
"invalidAddress": { |
||||
"message": "Neplatná adresa" |
||||
}, |
||||
"invalidAddressRecipient": { |
||||
"message": "Adresa příjemce je neplatná" |
||||
}, |
||||
"invalidGasParams": { |
||||
"message": "Neplatná parametry paliva" |
||||
}, |
||||
"invalidInput": { |
||||
"message": "Neplatný vstup." |
||||
}, |
||||
"invalidRequest": { |
||||
"message": "Neplatný požadavek" |
||||
}, |
||||
"invalidRPC": { |
||||
"message": "Neplatné RPC URI" |
||||
}, |
||||
"jsonFail": { |
||||
"message": "Něco se pokazilo. Prosím, ujistěte se, že váš JSON soubor má správný formát." |
||||
}, |
||||
"jsonFile": { |
||||
"message": "JSON soubor", |
||||
"description": "format for importing an account" |
||||
}, |
||||
"keepTrackTokens": { |
||||
"message": "Udržujte si záznamy o tokenech, které jste koupili s účtem v MetaMasku." |
||||
}, |
||||
"kovan": { |
||||
"message": "Kovan Test Network" |
||||
}, |
||||
"knowledgeDataBase": { |
||||
"message": "Navštivte naši Knowledge Base" |
||||
}, |
||||
"max": { |
||||
"message": "Max" |
||||
}, |
||||
"learnMore": { |
||||
"message": "Zjistěte více." |
||||
}, |
||||
"lessThanMax": { |
||||
"message": "musí být menší nebo roven $1.", |
||||
"description": "helper for inputting hex as decimal input" |
||||
}, |
||||
"likeToAddTokens": { |
||||
"message": "Chcete přidat tyto tokeny?" |
||||
}, |
||||
"links": { |
||||
"message": "Odkazy" |
||||
}, |
||||
"limit": { |
||||
"message": "Limit" |
||||
}, |
||||
"loading": { |
||||
"message": "Načítám..." |
||||
}, |
||||
"loadingTokens": { |
||||
"message": "Načítám tokeny..." |
||||
}, |
||||
"localhost": { |
||||
"message": "Localhost 8545" |
||||
}, |
||||
"login": { |
||||
"message": "Přihlásit" |
||||
}, |
||||
"logout": { |
||||
"message": "Odhlásit" |
||||
}, |
||||
"loose": { |
||||
"message": "Nevázané" |
||||
}, |
||||
"loweCaseWords": { |
||||
"message": "slova klíčové fráze mají pouze malá písmena" |
||||
}, |
||||
"mainnet": { |
||||
"message": "Main Ethereum Network" |
||||
}, |
||||
"message": { |
||||
"message": "Zpráva" |
||||
}, |
||||
"metamaskDescription": { |
||||
"message": "MetaMask je bezpečný osobní trezor pro Ethereum." |
||||
}, |
||||
"min": { |
||||
"message": "Minimum" |
||||
}, |
||||
"myAccounts": { |
||||
"message": "Moje účty" |
||||
}, |
||||
"mustSelectOne": { |
||||
"message": "Musíte zvolit aspoň 1 token." |
||||
}, |
||||
"needEtherInWallet": { |
||||
"message": "Potřebujete Ether v peněžence, abyste mohli pomocí MetaMasku interagovat s decentralizovanými aplikacemi." |
||||
}, |
||||
"needImportFile": { |
||||
"message": "Musíte zvolit soubor k importu.", |
||||
"description": "User is important an account and needs to add a file to continue" |
||||
}, |
||||
"needImportPassword": { |
||||
"message": "Musíte zadat heslo pro zvolený soubor.", |
||||
"description": "Password and file needed to import an account" |
||||
}, |
||||
"negativeETH": { |
||||
"message": "Nelze odeslat zápornou částku ETH." |
||||
}, |
||||
"networks": { |
||||
"message": "Sítě" |
||||
}, |
||||
"newAccount": { |
||||
"message": "Nový účet" |
||||
}, |
||||
"newAccountNumberName": { |
||||
"message": "Účet $1", |
||||
"description": "Default name of next account to be created on create account screen" |
||||
}, |
||||
"newContract": { |
||||
"message": "Nový kontrakt" |
||||
}, |
||||
"newPassword": { |
||||
"message": "Nové heslo (min 8 znaků)" |
||||
}, |
||||
"newRecipient": { |
||||
"message": "Nový příjemce" |
||||
}, |
||||
"newRPC": { |
||||
"message": "Nová RPC URL" |
||||
}, |
||||
"next": { |
||||
"message": "Další" |
||||
}, |
||||
"noAddressForName": { |
||||
"message": "Pro toto jméno nebyla nastavena žádná adresa." |
||||
}, |
||||
"noDeposits": { |
||||
"message": "Žádný vklad" |
||||
}, |
||||
"noTransactionHistory": { |
||||
"message": "Žádná historie transakcí." |
||||
}, |
||||
"noTransactions": { |
||||
"message": "Žádné transakce" |
||||
}, |
||||
"notStarted": { |
||||
"message": "Nezačalo" |
||||
}, |
||||
"oldUI": { |
||||
"message": "Staré rozhraní" |
||||
}, |
||||
"oldUIMessage": { |
||||
"message": "Vrátili jste se ke starému rozhraní. Můžete přepnout na nové rozhraní v nastavení v pravém horním menu." |
||||
}, |
||||
"or": { |
||||
"message": "nebo", |
||||
"description": "choice between creating or importing a new account" |
||||
}, |
||||
"passwordCorrect": { |
||||
"message": "Ujistěte se, že je vaše heslo správně." |
||||
}, |
||||
"passwordMismatch": { |
||||
"message": "hesla nesouhlasí", |
||||
"description": "in password creation process, the two new password fields did not match" |
||||
}, |
||||
"passwordShort": { |
||||
"message": "heslo je krátké", |
||||
"description": "in password creation process, the password is not long enough to be secure" |
||||
}, |
||||
"pastePrivateKey": { |
||||
"message": "Vložte zde svůj privátní klíč:", |
||||
"description": "For importing an account from a private key" |
||||
}, |
||||
"pasteSeed": { |
||||
"message": "Svou klíčovou frázi vložte zde!" |
||||
}, |
||||
"personalAddressDetected": { |
||||
"message": "Detekována osobní adresa. Zadejte adresu kontraktu tokenu." |
||||
}, |
||||
"pleaseReviewTransaction": { |
||||
"message": "Zkontrolujte si transakci." |
||||
}, |
||||
"popularTokens": { |
||||
"message": "Oblíbené tokeny" |
||||
}, |
||||
"privacyMsg": { |
||||
"message": "Zásady ochrany osobních údajů" |
||||
}, |
||||
"privateKey": { |
||||
"message": "Privátní klíč", |
||||
"description": "select this type of file to use to import an account" |
||||
}, |
||||
"privateKeyWarning": { |
||||
"message": "Upozornění: Nikdy nezveřejněte tento klíč. Kdokoli může s vaším privátním klíčem odcizit vaše aktiva z účtu." |
||||
}, |
||||
"privateNetwork": { |
||||
"message": "Soukromá síť" |
||||
}, |
||||
"qrCode": { |
||||
"message": "Ukázat QR kód" |
||||
}, |
||||
"readdToken": { |
||||
"message": "Tento token můžete v budoucnu přidat zpět s „Přidat token“ v nastavení účtu." |
||||
}, |
||||
"readMore": { |
||||
"message": "Přečtěte si více zde." |
||||
}, |
||||
"readMore2": { |
||||
"message": "Přečtěte si více." |
||||
}, |
||||
"receive": { |
||||
"message": "Obrdžet" |
||||
}, |
||||
"recipientAddress": { |
||||
"message": "Adresa příjemce" |
||||
}, |
||||
"refundAddress": { |
||||
"message": "Adresa pro vrácení peněz" |
||||
}, |
||||
"rejected": { |
||||
"message": "Odmítnuto" |
||||
}, |
||||
"resetAccount": { |
||||
"message": "Resetovat účet" |
||||
}, |
||||
"restoreFromSeed": { |
||||
"message": "Obnovit z seed fráze" |
||||
}, |
||||
"restoreVault": { |
||||
"message": "Obnovit trezor" |
||||
}, |
||||
"required": { |
||||
"message": "Povinné" |
||||
}, |
||||
"retryWithMoreGas": { |
||||
"message": "Opakujte s vyšší cenou paliva" |
||||
}, |
||||
"walletSeed": { |
||||
"message": "Klíčová fráze peněženky" |
||||
}, |
||||
"revealSeedWords": { |
||||
"message": "Zobrazit slova klíčové fráze" |
||||
}, |
||||
"revealSeedWordsWarning": { |
||||
"message": "Nebnovujte slova klíčové fráze na veřejnosti! Tato slova mohou být použita k odcizení veškerých vyašich účtů." |
||||
}, |
||||
"revert": { |
||||
"message": "Zvrátit" |
||||
}, |
||||
"rinkeby": { |
||||
"message": "Rinkeby Test Network" |
||||
}, |
||||
"ropsten": { |
||||
"message": "Ropsten Test Network" |
||||
}, |
||||
"currentRpc": { |
||||
"message": "Současné RPC" |
||||
}, |
||||
"connectingToMainnet": { |
||||
"message": "Připojuji se k Main Ethereum Network" |
||||
}, |
||||
"connectingToRopsten": { |
||||
"message": "Připojuji se k Ropsten Test Network" |
||||
}, |
||||
"connectingToKovan": { |
||||
"message": "Připojuji se k Kovan Test Network" |
||||
}, |
||||
"connectingToRinkeby": { |
||||
"message": "Připojuji se k Rinkeby Test Network" |
||||
}, |
||||
"connectingToUnknown": { |
||||
"message": "Připojuji se k neznámé síti" |
||||
}, |
||||
"sampleAccountName": { |
||||
"message": "Např. můj nový účet", |
||||
"description": "Help user understand concept of adding a human-readable name to their account" |
||||
}, |
||||
"save": { |
||||
"message": "Uložit" |
||||
}, |
||||
"reprice_title": { |
||||
"message": "Změnit cenu transakce" |
||||
}, |
||||
"reprice_subtitle": { |
||||
"message": "Navyšte cenu paliva ve snaze k přepsání a urychlení vyší transakce" |
||||
}, |
||||
"saveAsFile": { |
||||
"message": "Uložit do souboru", |
||||
"description": "Account export process" |
||||
}, |
||||
"saveSeedAsFile": { |
||||
"message": "Uložit slova klíčové fráze do souboru" |
||||
}, |
||||
"search": { |
||||
"message": "Hledat" |
||||
}, |
||||
"secretPhrase": { |
||||
"message": "Zadejte svých 12 slov tajné fráze k obnovení trezoru." |
||||
}, |
||||
"newPassword8Chars": { |
||||
"message": "Nové heslo (min 8 znaků)" |
||||
}, |
||||
"seedPhraseReq": { |
||||
"message": "klíčové fráze mají 12 slov" |
||||
}, |
||||
"select": { |
||||
"message": "Vybrat" |
||||
}, |
||||
"selectCurrency": { |
||||
"message": "Vybrat měnu" |
||||
}, |
||||
"selectService": { |
||||
"message": "Vybrat službu" |
||||
}, |
||||
"selectType": { |
||||
"message": "Vybrat typ" |
||||
}, |
||||
"send": { |
||||
"message": "Odeslat" |
||||
}, |
||||
"sendETH": { |
||||
"message": "Odeslat ETH" |
||||
}, |
||||
"sendTokens": { |
||||
"message": "Odeslat tokeny" |
||||
}, |
||||
"onlySendToEtherAddress": { |
||||
"message": "Posílejte jen ETH na Ethereum adresu." |
||||
}, |
||||
"searchTokens": { |
||||
"message": "Hledat tokeny" |
||||
}, |
||||
"sendTokensAnywhere": { |
||||
"message": "Posílejte tokeny komukoli s Ethereum účtem" |
||||
}, |
||||
"settings": { |
||||
"message": "Nastavení" |
||||
}, |
||||
"info": { |
||||
"message": "Informace" |
||||
}, |
||||
"shapeshiftBuy": { |
||||
"message": "Nakoupit na ShapeShift" |
||||
}, |
||||
"showPrivateKeys": { |
||||
"message": "Zobrazit privátní klíče" |
||||
}, |
||||
"showQRCode": { |
||||
"message": "Zobrazit QR kód" |
||||
}, |
||||
"sign": { |
||||
"message": "Podepsat" |
||||
}, |
||||
"signed": { |
||||
"message": "Podepsáno" |
||||
}, |
||||
"signMessage": { |
||||
"message": "Podepsat zprávu" |
||||
}, |
||||
"signNotice": { |
||||
"message": "Podepsání zprávy může mít \nnebezpečný vedlejší učinek. Podepisujte zprávy pouze ze \nstránek, kterým plně důvěřujete celým svým účtem.\n Tato nebezpečná metoda bude odebrána v budoucí verzi. " |
||||
}, |
||||
"sigRequest": { |
||||
"message": "Požadavek podpisu" |
||||
}, |
||||
"sigRequested": { |
||||
"message": "Požádáno o podpis" |
||||
}, |
||||
"spaceBetween": { |
||||
"message": "mezi slovy může být pouze mezera" |
||||
}, |
||||
"status": { |
||||
"message": "Stav" |
||||
}, |
||||
"stateLogs": { |
||||
"message": "Stavové protokoly" |
||||
}, |
||||
"stateLogsDescription": { |
||||
"message": "Stavové protokoly obsahují vaše veřejné adresy účtů a odeslané transakce." |
||||
}, |
||||
"stateLogError": { |
||||
"message": "Chyba během získávání stavových protokolů." |
||||
}, |
||||
"submit": { |
||||
"message": "Odeslat" |
||||
}, |
||||
"submitted": { |
||||
"message": "Odesláno" |
||||
}, |
||||
"supportCenter": { |
||||
"message": "Navštivte naše centrum podpory" |
||||
}, |
||||
"symbolBetweenZeroTen": { |
||||
"message": "Symbol musí být mezi 0 a 10 znaky." |
||||
}, |
||||
"takesTooLong": { |
||||
"message": "Trvá to dlouho?" |
||||
}, |
||||
"terms": { |
||||
"message": "Podmínky použití" |
||||
}, |
||||
"testFaucet": { |
||||
"message": "Testovací faucet" |
||||
}, |
||||
"to": { |
||||
"message": "Komu: " |
||||
}, |
||||
"toETHviaShapeShift": { |
||||
"message": "$1 na ETH přes ShapeShift", |
||||
"description": "system will fill in deposit type in start of message" |
||||
}, |
||||
"tokenAddress": { |
||||
"message": "Adresa tokenu" |
||||
}, |
||||
"tokenAlreadyAdded": { |
||||
"message": "Token byl už přidán." |
||||
}, |
||||
"tokenBalance": { |
||||
"message": "Váš zůstatek tokenu je:" |
||||
}, |
||||
"tokenSelection": { |
||||
"message": "Vyhledejte token nebo je vyberte z našeho seznamu oblíbených tokenů." |
||||
}, |
||||
"tokenSymbol": { |
||||
"message": "Symbol tokenu" |
||||
}, |
||||
"tokenWarning1": { |
||||
"message": "Mějte přehled o tokenech, které jste koupili s účtem MetaMasku. Pokud jste koupili tokeny s jiným účtem, tyto tokeny se zde nezobrazí." |
||||
}, |
||||
"total": { |
||||
"message": "Celkem" |
||||
}, |
||||
"transactions": { |
||||
"message": "transakce" |
||||
}, |
||||
"transactionError": { |
||||
"message": "Chyba transakce. Vyhozena výjimka v kódu kontraktu." |
||||
}, |
||||
"transactionMemo": { |
||||
"message": "Poznámka transakce (nepovinné)" |
||||
}, |
||||
"transactionNumber": { |
||||
"message": "Číslo transakce" |
||||
}, |
||||
"transfers": { |
||||
"message": "Převody" |
||||
}, |
||||
"troubleTokenBalances": { |
||||
"message": "Měli jsme problém s načtením vašich tokenových zůstatků. Můžete je vidět ", |
||||
"description": "Followed by a link (here) to view token balances" |
||||
}, |
||||
"twelveWords": { |
||||
"message": "Těchto 12 slov je jedinou možností, jak obnovit MetaMask účet. \nUložte je na bezpečné a neveřejné místo." |
||||
}, |
||||
"typePassword": { |
||||
"message": "Zadejte své heslo" |
||||
}, |
||||
"uiWelcome": { |
||||
"message": "Vítejte v novém rozhraní (Beta)" |
||||
}, |
||||
"uiWelcomeMessage": { |
||||
"message": "Používáte nyní nové rozhraní MetaMasku. Rozhlédněte se kolem, vyzkoušejte nové funkce, jako jsou zasílání tokenů, a dejte nám vědět, pokud narazíte na problém." |
||||
}, |
||||
"unapproved": { |
||||
"message": "Neschváleno" |
||||
}, |
||||
"unavailable": { |
||||
"message": "Nedostupné" |
||||
}, |
||||
"unknown": { |
||||
"message": "Neznámé" |
||||
}, |
||||
"unknownNetwork": { |
||||
"message": "Neznámá soukromá síť" |
||||
}, |
||||
"unknownNetworkId": { |
||||
"message": "Neznámé ID sítě" |
||||
}, |
||||
"uriErrorMsg": { |
||||
"message": "URI vyžadují korektní HTTP/HTTPS prefix." |
||||
}, |
||||
"usaOnly": { |
||||
"message": "jen v USA", |
||||
"description": "Using this exchange is limited to people inside the USA" |
||||
}, |
||||
"usedByClients": { |
||||
"message": "Používána různými klienty" |
||||
}, |
||||
"useOldUI": { |
||||
"message": "Použijte staré rozhraní" |
||||
}, |
||||
"validFileImport": { |
||||
"message": "Musíte vybrat validní soubor k importu." |
||||
}, |
||||
"vaultCreated": { |
||||
"message": "Trezor vytvořen" |
||||
}, |
||||
"viewAccount": { |
||||
"message": "Zobrazit účet" |
||||
}, |
||||
"visitWebSite": { |
||||
"message": "Navštivte naši stránku" |
||||
}, |
||||
"warning": { |
||||
"message": "Varování" |
||||
}, |
||||
"welcomeBeta": { |
||||
"message": "Vítejte v MetaMask Beta" |
||||
}, |
||||
"whatsThis": { |
||||
"message": "Co to je?" |
||||
}, |
||||
"yourSigRequested": { |
||||
"message": "Je vyžadován váš podpis" |
||||
}, |
||||
"youSign": { |
||||
"message": "Podepisujete" |
||||
} |
||||
} |
@ -0,0 +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": { |
||||
"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" |
||||
} |
||||
} |
@ -1,44 +0,0 @@ |
||||
const MAINET_RPC_URL = 'https://mainnet.infura.io/metamask' |
||||
const ROPSTEN_RPC_URL = 'https://ropsten.infura.io/metamask' |
||||
const KOVAN_RPC_URL = 'https://kovan.infura.io/metamask' |
||||
const RINKEBY_RPC_URL = 'https://rinkeby.infura.io/metamask' |
||||
const LOCALHOST_RPC_URL = 'http://localhost:8545' |
||||
|
||||
const MAINET_RPC_URL_BETA = 'https://mainnet.infura.io/metamask2' |
||||
const ROPSTEN_RPC_URL_BETA = 'https://ropsten.infura.io/metamask2' |
||||
const KOVAN_RPC_URL_BETA = 'https://kovan.infura.io/metamask2' |
||||
const RINKEBY_RPC_URL_BETA = 'https://rinkeby.infura.io/metamask2' |
||||
|
||||
const DEFAULT_RPC = 'rinkeby' |
||||
const OLD_UI_NETWORK_TYPE = 'network' |
||||
const BETA_UI_NETWORK_TYPE = 'networkBeta' |
||||
|
||||
global.METAMASK_DEBUG = process.env.METAMASK_DEBUG |
||||
|
||||
module.exports = { |
||||
network: { |
||||
localhost: LOCALHOST_RPC_URL, |
||||
mainnet: MAINET_RPC_URL, |
||||
ropsten: ROPSTEN_RPC_URL, |
||||
kovan: KOVAN_RPC_URL, |
||||
rinkeby: RINKEBY_RPC_URL, |
||||
}, |
||||
// Used for beta UI
|
||||
networkBeta: { |
||||
localhost: LOCALHOST_RPC_URL, |
||||
mainnet: MAINET_RPC_URL_BETA, |
||||
ropsten: ROPSTEN_RPC_URL_BETA, |
||||
kovan: KOVAN_RPC_URL_BETA, |
||||
rinkeby: RINKEBY_RPC_URL_BETA, |
||||
}, |
||||
networkNames: { |
||||
3: 'Ropsten', |
||||
4: 'Rinkeby', |
||||
42: 'Kovan', |
||||
}, |
||||
enums: { |
||||
DEFAULT_RPC, |
||||
OLD_UI_NETWORK_TYPE, |
||||
BETA_UI_NETWORK_TYPE, |
||||
}, |
||||
} |
@ -0,0 +1,56 @@ |
||||
const ROPSTEN = 'ropsten' |
||||
const RINKEBY = 'rinkeby' |
||||
const KOVAN = 'kovan' |
||||
const MAINNET = 'mainnet' |
||||
const LOCALHOST = 'localhost' |
||||
|
||||
const ROPSTEN_CODE = 3 |
||||
const RINKEYBY_CODE = 4 |
||||
const KOVAN_CODE = 42 |
||||
|
||||
const ROPSTEN_DISPLAY_NAME = 'Ropsten' |
||||
const RINKEBY_DISPLAY_NAME = 'Rinkeby' |
||||
const KOVAN_DISPLAY_NAME = 'Kovan' |
||||
const MAINNET_DISPLAY_NAME = 'Main Ethereum Network' |
||||
|
||||
const MAINNET_RPC_URL = 'https://mainnet.infura.io/metamask' |
||||
const ROPSTEN_RPC_URL = 'https://ropsten.infura.io/metamask' |
||||
const KOVAN_RPC_URL = 'https://kovan.infura.io/metamask' |
||||
const RINKEBY_RPC_URL = 'https://rinkeby.infura.io/metamask' |
||||
const LOCALHOST_RPC_URL = 'http://localhost:8545' |
||||
|
||||
const MAINNET_RPC_URL_BETA = 'https://mainnet.infura.io/metamask2' |
||||
const ROPSTEN_RPC_URL_BETA = 'https://ropsten.infura.io/metamask2' |
||||
const KOVAN_RPC_URL_BETA = 'https://kovan.infura.io/metamask2' |
||||
const RINKEBY_RPC_URL_BETA = 'https://rinkeby.infura.io/metamask2' |
||||
|
||||
const DEFAULT_NETWORK = 'rinkeby' |
||||
const OLD_UI_NETWORK_TYPE = 'network' |
||||
const BETA_UI_NETWORK_TYPE = 'networkBeta' |
||||
|
||||
module.exports = { |
||||
ROPSTEN, |
||||
RINKEBY, |
||||
KOVAN, |
||||
MAINNET, |
||||
LOCALHOST, |
||||
ROPSTEN_CODE, |
||||
RINKEYBY_CODE, |
||||
KOVAN_CODE, |
||||
ROPSTEN_DISPLAY_NAME, |
||||
RINKEBY_DISPLAY_NAME, |
||||
KOVAN_DISPLAY_NAME, |
||||
MAINNET_DISPLAY_NAME, |
||||
MAINNET_RPC_URL, |
||||
ROPSTEN_RPC_URL, |
||||
KOVAN_RPC_URL, |
||||
RINKEBY_RPC_URL, |
||||
LOCALHOST_RPC_URL, |
||||
MAINNET_RPC_URL_BETA, |
||||
ROPSTEN_RPC_URL_BETA, |
||||
KOVAN_RPC_URL_BETA, |
||||
RINKEBY_RPC_URL_BETA, |
||||
DEFAULT_NETWORK, |
||||
OLD_UI_NETWORK_TYPE, |
||||
BETA_UI_NETWORK_TYPE, |
||||
} |
@ -0,0 +1,2 @@ |
||||
const NetworkController = require('./network') |
||||
module.exports = NetworkController |
@ -0,0 +1,65 @@ |
||||
const { |
||||
ROPSTEN, |
||||
RINKEBY, |
||||
KOVAN, |
||||
MAINNET, |
||||
LOCALHOST, |
||||
ROPSTEN_CODE, |
||||
RINKEYBY_CODE, |
||||
KOVAN_CODE, |
||||
ROPSTEN_DISPLAY_NAME, |
||||
RINKEBY_DISPLAY_NAME, |
||||
KOVAN_DISPLAY_NAME, |
||||
MAINNET_DISPLAY_NAME, |
||||
MAINNET_RPC_URL, |
||||
ROPSTEN_RPC_URL, |
||||
KOVAN_RPC_URL, |
||||
RINKEBY_RPC_URL, |
||||
LOCALHOST_RPC_URL, |
||||
MAINNET_RPC_URL_BETA, |
||||
ROPSTEN_RPC_URL_BETA, |
||||
KOVAN_RPC_URL_BETA, |
||||
RINKEBY_RPC_URL_BETA, |
||||
OLD_UI_NETWORK_TYPE, |
||||
BETA_UI_NETWORK_TYPE, |
||||
} = require('./enums') |
||||
|
||||
const networkToNameMap = { |
||||
[ROPSTEN]: ROPSTEN_DISPLAY_NAME, |
||||
[RINKEBY]: RINKEBY_DISPLAY_NAME, |
||||
[KOVAN]: KOVAN_DISPLAY_NAME, |
||||
[MAINNET]: MAINNET_DISPLAY_NAME, |
||||
[ROPSTEN_CODE]: ROPSTEN_DISPLAY_NAME, |
||||
[RINKEYBY_CODE]: RINKEBY_DISPLAY_NAME, |
||||
[KOVAN_CODE]: KOVAN_DISPLAY_NAME, |
||||
} |
||||
|
||||
const networkEndpointsMap = { |
||||
[OLD_UI_NETWORK_TYPE]: { |
||||
[LOCALHOST]: LOCALHOST_RPC_URL, |
||||
[MAINNET]: MAINNET_RPC_URL, |
||||
[ROPSTEN]: ROPSTEN_RPC_URL, |
||||
[KOVAN]: KOVAN_RPC_URL, |
||||
[RINKEBY]: RINKEBY_RPC_URL, |
||||
}, |
||||
[BETA_UI_NETWORK_TYPE]: { |
||||
[LOCALHOST]: LOCALHOST_RPC_URL, |
||||
[MAINNET]: MAINNET_RPC_URL_BETA, |
||||
[ROPSTEN]: ROPSTEN_RPC_URL_BETA, |
||||
[KOVAN]: KOVAN_RPC_URL_BETA, |
||||
[RINKEBY]: RINKEBY_RPC_URL_BETA, |
||||
}, |
||||
} |
||||
|
||||
const getNetworkDisplayName = key => networkToNameMap[key] |
||||
|
||||
const getNetworkEndpoints = (networkType = OLD_UI_NETWORK_TYPE) => { |
||||
return { |
||||
...networkEndpointsMap[networkType], |
||||
} |
||||
} |
||||
|
||||
module.exports = { |
||||
getNetworkDisplayName, |
||||
getNetworkEndpoints, |
||||
} |
@ -0,0 +1,77 @@ |
||||
const ObservableStore = require('obs-store') |
||||
|
||||
// By default, poll every 3 minutes
|
||||
const DEFAULT_INTERVAL = 180 * 1000 |
||||
|
||||
/** |
||||
* A controller that polls for token exchange |
||||
* rates based on a user's current token list |
||||
*/ |
||||
class TokenRatesController { |
||||
/** |
||||
* Creates a TokenRatesController |
||||
* |
||||
* @param {Object} [config] - Options to configure controller |
||||
*/ |
||||
constructor ({ interval = DEFAULT_INTERVAL, preferences } = {}) { |
||||
this.store = new ObservableStore() |
||||
this.preferences = preferences |
||||
this.interval = interval |
||||
} |
||||
|
||||
/** |
||||
* Updates exchange rates for all tokens |
||||
*/ |
||||
async updateExchangeRates () { |
||||
if (!this.isActive) { return } |
||||
const contractExchangeRates = {} |
||||
for (const i in this._tokens) { |
||||
const address = this._tokens[i].address |
||||
contractExchangeRates[address] = await this.fetchExchangeRate(address) |
||||
} |
||||
this.store.putState({ contractExchangeRates }) |
||||
} |
||||
|
||||
/** |
||||
* Fetches a token exchange rate by address |
||||
* |
||||
* @param {String} address - Token contract address |
||||
*/ |
||||
async fetchExchangeRate (address) { |
||||
try { |
||||
const response = await fetch(`https://metamask.dev.balanc3.net/prices?from=${address}&to=ETH&autoConversion=false&summaryOnly=true`) |
||||
const json = await response.json() |
||||
return json && json.length ? json[0].averagePrice : 0 |
||||
} catch (error) { } |
||||
} |
||||
|
||||
/** |
||||
* @type {Number} |
||||
*/ |
||||
set interval (interval) { |
||||
this._handle && clearInterval(this._handle) |
||||
if (!interval) { return } |
||||
this._handle = setInterval(() => { this.updateExchangeRates() }, interval) |
||||
} |
||||
|
||||
/** |
||||
* @type {Object} |
||||
*/ |
||||
set preferences (preferences) { |
||||
this._preferences && this._preferences.unsubscribe() |
||||
if (!preferences) { return } |
||||
this._preferences = preferences |
||||
this.tokens = preferences.getState().tokens |
||||
preferences.subscribe(({ tokens = [] }) => { this.tokens = tokens }) |
||||
} |
||||
|
||||
/** |
||||
* @type {Array} |
||||
*/ |
||||
set tokens (tokens) { |
||||
this._tokens = tokens |
||||
this.updateExchangeRates() |
||||
} |
||||
} |
||||
|
||||
module.exports = TokenRatesController |
@ -1,69 +1,97 @@ |
||||
const asmcrypto = require('asmcrypto.js') |
||||
const Unibabel = require('browserify-unibabel') |
||||
|
||||
/** |
||||
* A Microsoft Edge-specific encryption class that exposes |
||||
* the interface expected by eth-keykeyring-controller |
||||
*/ |
||||
class EdgeEncryptor { |
||||
/** |
||||
* Encrypts an arbitrary object to ciphertext |
||||
* |
||||
* @param {string} password Used to generate a key to encrypt the data |
||||
* @param {Object} dataObject Data to encrypt |
||||
* @returns {Promise<string>} Promise resolving to an object with ciphertext |
||||
*/ |
||||
encrypt (password, dataObject) { |
||||
var salt = this._generateSalt() |
||||
return this._keyFromPassword(password, salt) |
||||
.then(function (key) { |
||||
var data = JSON.stringify(dataObject) |
||||
var dataBuffer = Unibabel.utf8ToBuffer(data) |
||||
var vector = global.crypto.getRandomValues(new Uint8Array(16)) |
||||
var resultbuffer = asmcrypto.AES_GCM.encrypt(dataBuffer, key, vector) |
||||
|
||||
encrypt (password, dataObject) { |
||||
var buffer = new Uint8Array(resultbuffer) |
||||
var vectorStr = Unibabel.bufferToBase64(vector) |
||||
var vaultStr = Unibabel.bufferToBase64(buffer) |
||||
return JSON.stringify({ |
||||
data: vaultStr, |
||||
iv: vectorStr, |
||||
salt: salt, |
||||
}) |
||||
}) |
||||
} |
||||
|
||||
var salt = this._generateSalt() |
||||
return this._keyFromPassword(password, salt) |
||||
.then(function (key) { |
||||
/** |
||||
* Decrypts an arbitrary object from ciphertext |
||||
* |
||||
* @param {string} password Used to generate a key to decrypt the data |
||||
* @param {string} text Ciphertext of an encrypted object |
||||
* @returns {Promise<Object>} Promise resolving to copy of decrypted object |
||||
*/ |
||||
decrypt (password, text) { |
||||
const payload = JSON.parse(text) |
||||
const salt = payload.salt |
||||
return this._keyFromPassword(password, salt) |
||||
.then(function (key) { |
||||
const encryptedData = Unibabel.base64ToBuffer(payload.data) |
||||
const vector = Unibabel.base64ToBuffer(payload.iv) |
||||
return new Promise((resolve, reject) => { |
||||
var result |
||||
try { |
||||
result = asmcrypto.AES_GCM.decrypt(encryptedData, key, vector) |
||||
} catch (err) { |
||||
return reject(new Error('Incorrect password')) |
||||
} |
||||
const decryptedData = new Uint8Array(result) |
||||
const decryptedStr = Unibabel.bufferToUtf8(decryptedData) |
||||
const decryptedObj = JSON.parse(decryptedStr) |
||||
resolve(decryptedObj) |
||||
}) |
||||
}) |
||||
} |
||||
|
||||
var data = JSON.stringify(dataObject) |
||||
var dataBuffer = Unibabel.utf8ToBuffer(data) |
||||
var vector = global.crypto.getRandomValues(new Uint8Array(16)) |
||||
var resultbuffer = asmcrypto.AES_GCM.encrypt(dataBuffer, key, vector) |
||||
/** |
||||
* Retrieves a cryptographic key using a password |
||||
* |
||||
* @private |
||||
* @param {string} password Password used to unlock a cryptographic key |
||||
* @param {string} salt Random base64 data |
||||
* @returns {Promise<Object>} Promise resolving to a derived key |
||||
*/ |
||||
_keyFromPassword (password, salt) { |
||||
|
||||
var buffer = new Uint8Array(resultbuffer) |
||||
var vectorStr = Unibabel.bufferToBase64(vector) |
||||
var vaultStr = Unibabel.bufferToBase64(buffer) |
||||
return JSON.stringify({ |
||||
data: vaultStr, |
||||
iv: vectorStr, |
||||
salt: salt, |
||||
}) |
||||
}) |
||||
} |
||||
var passBuffer = Unibabel.utf8ToBuffer(password) |
||||
var saltBuffer = Unibabel.base64ToBuffer(salt) |
||||
return new Promise((resolve) => { |
||||
var key = asmcrypto.PBKDF2_HMAC_SHA256.bytes(passBuffer, saltBuffer, 10000) |
||||
resolve(key) |
||||
}) |
||||
} |
||||
|
||||
decrypt (password, text) { |
||||
|
||||
const payload = JSON.parse(text) |
||||
const salt = payload.salt |
||||
return this._keyFromPassword(password, salt) |
||||
.then(function (key) { |
||||
const encryptedData = Unibabel.base64ToBuffer(payload.data) |
||||
const vector = Unibabel.base64ToBuffer(payload.iv) |
||||
return new Promise((resolve, reject) => { |
||||
var result |
||||
try { |
||||
result = asmcrypto.AES_GCM.decrypt(encryptedData, key, vector) |
||||
} catch (err) { |
||||
return reject(new Error('Incorrect password')) |
||||
} |
||||
const decryptedData = new Uint8Array(result) |
||||
const decryptedStr = Unibabel.bufferToUtf8(decryptedData) |
||||
const decryptedObj = JSON.parse(decryptedStr) |
||||
resolve(decryptedObj) |
||||
}) |
||||
}) |
||||
} |
||||
|
||||
_keyFromPassword (password, salt) { |
||||
|
||||
var passBuffer = Unibabel.utf8ToBuffer(password) |
||||
var saltBuffer = Unibabel.base64ToBuffer(salt) |
||||
return new Promise((resolve) => { |
||||
var key = asmcrypto.PBKDF2_HMAC_SHA256.bytes(passBuffer, saltBuffer, 10000) |
||||
resolve(key) |
||||
}) |
||||
} |
||||
|
||||
_generateSalt (byteCount = 32) { |
||||
var view = new Uint8Array(byteCount) |
||||
global.crypto.getRandomValues(view) |
||||
var b64encoded = btoa(String.fromCharCode.apply(null, view)) |
||||
return b64encoded |
||||
} |
||||
/** |
||||
* Generates random base64 encoded data |
||||
* |
||||
* @private |
||||
* @returns {string} Randomized base64 encoded data |
||||
*/ |
||||
_generateSalt (byteCount = 32) { |
||||
var view = new Uint8Array(byteCount) |
||||
global.crypto.getRandomValues(view) |
||||
var b64encoded = btoa(String.fromCharCode.apply(null, view)) |
||||
return b64encoded |
||||
} |
||||
} |
||||
|
||||
module.exports = EdgeEncryptor |
||||
|
@ -1,15 +1,24 @@ |
||||
// test and development environment variables
|
||||
const env = process.env.METAMASK_ENV |
||||
const METAMASK_DEBUG = process.env.METAMASK_DEBUG |
||||
const { DEFAULT_NETWORK, MAINNET } = require('./controllers/network/enums') |
||||
|
||||
//
|
||||
// The default state of MetaMask
|
||||
//
|
||||
module.exports = { |
||||
/** |
||||
* @typedef {Object} FirstTimeState |
||||
* @property {Object} config Initial configuration parameters |
||||
* @property {Object} NetworkController Network controller state |
||||
*/ |
||||
|
||||
/** |
||||
* @type {FirstTimeState} |
||||
*/ |
||||
const initialState = { |
||||
config: {}, |
||||
NetworkController: { |
||||
provider: { |
||||
type: (METAMASK_DEBUG || env === 'test') ? 'rinkeby' : 'mainnet', |
||||
type: (METAMASK_DEBUG || env === 'test') ? DEFAULT_NETWORK : MAINNET, |
||||
}, |
||||
}, |
||||
} |
||||
|
||||
module.exports = initialState |
||||
|
@ -0,0 +1,49 @@ |
||||
const ObservableStore = require('obs-store') |
||||
|
||||
/** |
||||
* An ObservableStore that can composes a flat |
||||
* structure of child stores based on configuration |
||||
*/ |
||||
class ComposableObservableStore extends ObservableStore { |
||||
/** |
||||
* Create a new store |
||||
* |
||||
* @param {Object} [initState] - The initial store state |
||||
* @param {Object} [config] - Map of internal state keys to child stores |
||||
*/ |
||||
constructor (initState, config) { |
||||
super(initState) |
||||
this.updateStructure(config) |
||||
} |
||||
|
||||
/** |
||||
* Composes a new internal store subscription structure |
||||
* |
||||
* @param {Object} [config] - Map of internal state keys to child stores |
||||
*/ |
||||
updateStructure (config) { |
||||
this.config = config |
||||
this.removeAllListeners() |
||||
for (const key in config) { |
||||
config[key].subscribe((state) => { |
||||
this.updateState({ [key]: state }) |
||||
}) |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Merges all child store state into a single object rather than |
||||
* returning an object keyed by child store class name |
||||
* |
||||
* @returns {Object} - Object containing merged child store state |
||||
*/ |
||||
getFlatState () { |
||||
let flatState = {} |
||||
for (const key in this.config) { |
||||
flatState = { ...flatState, ...this.config[key].getState() } |
||||
} |
||||
return flatState |
||||
} |
||||
} |
||||
|
||||
module.exports = ComposableObservableStore |
@ -1,9 +1,13 @@ |
||||
// append dapp origin domain to request
|
||||
module.exports = createOriginMiddleware |
||||
|
||||
function createOriginMiddleware ({ origin }) { |
||||
return function originMiddleware (req, res, next, end) { |
||||
req.origin = origin |
||||
/** |
||||
* Returns a middleware that appends the DApp origin to request |
||||
* @param {{ origin: string }} opts - The middleware options |
||||
* @returns {Function} |
||||
*/ |
||||
function createOriginMiddleware (opts) { |
||||
return function originMiddleware (/** @type {any} */ req, /** @type {any} */ _, /** @type {Function} */ next) { |
||||
req.origin = opts.origin |
||||
next() |
||||
} |
||||
} |
||||
|
@ -0,0 +1,9 @@ |
||||
const ENVIRONMENT_TYPE_POPUP = 'popup' |
||||
const ENVIRONMENT_TYPE_NOTIFICATION = 'notification' |
||||
const ENVIRONMENT_TYPE_FULLSCREEN = 'fullscreen' |
||||
|
||||
module.exports = { |
||||
ENVIRONMENT_TYPE_POPUP, |
||||
ENVIRONMENT_TYPE_NOTIFICATION, |
||||
ENVIRONMENT_TYPE_FULLSCREEN, |
||||
} |
@ -1,10 +0,0 @@ |
||||
module.exports = function environmentType () { |
||||
const url = window.location.href |
||||
if (url.match(/popup.html$/)) { |
||||
return 'popup' |
||||
} else if (url.match(/home.html$/)) { |
||||
return 'responsive' |
||||
} else { |
||||
return 'notification' |
||||
} |
||||
} |
@ -1,11 +0,0 @@ |
||||
module.exports = function isPopupOrNotification () { |
||||
const url = window.location.href |
||||
// if (url.match(/popup.html$/) || url.match(/home.html$/)) {
|
||||
// Below regexes needed for feature toggles (e.g. see line ~340 in ui/app/app.js)
|
||||
// Revert below regexes to above commented out regexes before merge to master
|
||||
if (url.match(/popup.html(?:\?.+)*$/) || url.match(/home.html(?:\?.+)*$/)) { |
||||
return 'popup' |
||||
} else { |
||||
return 'notification' |
||||
} |
||||
} |
@ -0,0 +1,134 @@ |
||||
{ |
||||
"metamask": { |
||||
"isInitialized": true, |
||||
"isUnlocked": true, |
||||
"featureFlags": {"betaUI": true}, |
||||
"rpcTarget": "https://rawtestrpc.metamask.io/", |
||||
"identities": { |
||||
"0xfdea65c8e26263f6d9a1b5de9555d2931a33b825": { |
||||
"address": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825", |
||||
"name": "Send Account 1" |
||||
}, |
||||
"0xc5b8dbac4c1d3f152cdeb400e2313f309c410acb": { |
||||
"address": "0xc5b8dbac4c1d3f152cdeb400e2313f309c410acb", |
||||
"name": "Send Account 2" |
||||
}, |
||||
"0x2f8d4a878cfa04a6e60d46362f5644deab66572d": { |
||||
"address": "0x2f8d4a878cfa04a6e60d46362f5644deab66572d", |
||||
"name": "Send Account 3" |
||||
}, |
||||
"0xd85a4b6a394794842887b8284293d69163007bbb": { |
||||
"address": "0xd85a4b6a394794842887b8284293d69163007bbb", |
||||
"name": "Send Account 4" |
||||
} |
||||
}, |
||||
"unapprovedTxs": {}, |
||||
"currentCurrency": "USD", |
||||
"conversionRate": 19855, |
||||
"conversionDate": 1489013762, |
||||
"noActiveNotices": true, |
||||
"frequentRpcList": [], |
||||
"network": "3", |
||||
"accounts": { |
||||
"0xfdea65c8e26263f6d9a1b5de9555d2931a33b825": { |
||||
"code": "0x", |
||||
"balance": "0x47c9d71831c76efe", |
||||
"nonce": "0x1b", |
||||
"address": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825" |
||||
}, |
||||
"0xc5b8dbac4c1d3f152cdeb400e2313f309c410acb": { |
||||
"code": "0x", |
||||
"balance": "0x37452b1315889f80", |
||||
"nonce": "0xa", |
||||
"address": "0xc5b8dbac4c1d3f152cdeb400e2313f309c410acb" |
||||
}, |
||||
"0x2f8d4a878cfa04a6e60d46362f5644deab66572d": { |
||||
"code": "0x", |
||||
"balance": "0x30c9d71831c76efe", |
||||
"nonce": "0x1c", |
||||
"address": "0x2f8d4a878cfa04a6e60d46362f5644deab66572d" |
||||
}, |
||||
"0xd85a4b6a394794842887b8284293d69163007bbb": { |
||||
"code": "0x", |
||||
"balance": "0x0", |
||||
"nonce": "0x0", |
||||
"address": "0xd85a4b6a394794842887b8284293d69163007bbb" |
||||
} |
||||
}, |
||||
"addressBook": [ |
||||
{ |
||||
"address": "0x06195827297c7a80a443b6894d3bdb8824b43896", |
||||
"name": "Address Book Account 1" |
||||
} |
||||
], |
||||
"tokens": [], |
||||
"transactions": {}, |
||||
"selectedAddressTxList": [], |
||||
"unapprovedMsgs": {}, |
||||
"unapprovedMsgCount": 0, |
||||
"unapprovedPersonalMsgs": {}, |
||||
"unapprovedPersonalMsgCount": 0, |
||||
"keyringTypes": [ |
||||
"Simple Key Pair", |
||||
"HD Key Tree" |
||||
], |
||||
"keyrings": [ |
||||
{ |
||||
"type": "HD Key Tree", |
||||
"accounts": [ |
||||
"fdea65c8e26263f6d9a1b5de9555d2931a33b825", |
||||
"c5b8dbac4c1d3f152cdeb400e2313f309c410acb", |
||||
"2f8d4a878cfa04a6e60d46362f5644deab66572d" |
||||
] |
||||
}, |
||||
{ |
||||
"type": "Simple Key Pair", |
||||
"accounts": [ |
||||
"0xfdea65c8e26263f6d9a1b5de9555d2931a33b825" |
||||
] |
||||
} |
||||
], |
||||
"selectedAddress": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825", |
||||
"currentCurrency": "PHP", |
||||
"provider": { |
||||
"type": "testnet" |
||||
}, |
||||
"shapeShiftTxList": [], |
||||
"lostAccounts": [], |
||||
"send": { |
||||
"gasLimit": null, |
||||
"gasPrice": null, |
||||
"gasTotal": "0xb451dc41b578", |
||||
"tokenBalance": null, |
||||
"from": "", |
||||
"to": "", |
||||
"amount": "0x0", |
||||
"memo": "", |
||||
"errors": {}, |
||||
"maxModeOn": false, |
||||
"editingTransactionId": null |
||||
}, |
||||
"currentLocale": "en" |
||||
}, |
||||
"appState": { |
||||
"menuOpen": false, |
||||
"currentView": { |
||||
"name": "accountDetail", |
||||
"detailView": null, |
||||
"context": "0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc" |
||||
}, |
||||
"accountDetail": { |
||||
"subview": "transactions" |
||||
}, |
||||
"modal": { |
||||
"modalState": {}, |
||||
"previousModalState": {} |
||||
}, |
||||
"transForward": true, |
||||
"isLoading": false, |
||||
"warning": null, |
||||
"scrollToBottom": false, |
||||
"forgottenPassword": null |
||||
}, |
||||
"identities": {} |
||||
} |
@ -0,0 +1,25 @@ |
||||
{ |
||||
"tags": { |
||||
"allowUnknownTags": false |
||||
}, |
||||
"source": { |
||||
"include": "app/scripts/", |
||||
"includePattern": ".js$", |
||||
"excludePattern": "(node_modules/|docs)" |
||||
}, |
||||
"plugins": [ |
||||
"plugins/markdown" |
||||
], |
||||
"opts": { |
||||
"template": "node_modules/radgrad-jsdoc-template/", |
||||
"encoding": "utf8", |
||||
"destination": "docs/jsdocs", |
||||
"recurse": true, |
||||
"verbose": true |
||||
}, |
||||
"templates": { |
||||
"cleverLinks": false, |
||||
"monospaceLinks": false |
||||
} |
||||
} |
||||
|
@ -0,0 +1,15 @@ |
||||
# Development Tools & Configurations |
||||
|
||||
This folder contains configuration files which are used by the the different |
||||
development-tools, like e.g. JsDoc. |
||||
|
||||
|
||||
## Appveyor |
||||
|
||||
|
||||
https://www.appveyor.com/docs/build-configuration/#alternative-yaml-file-location |
||||
|
||||
Withtin the configuration, point to a weblocation of a txt config file: |
||||
|
||||
https://ci.appveyor.com/project/lazaridiscom/mm-vault/settings |
||||
https://raw.githubusercontent.com/lazaridiscom/mm-vault/master/dev/tools/appveyor.txt |
@ -0,0 +1,21 @@ |
||||
# Test against the latest version of this Node.js version |
||||
environment: |
||||
nodejs_version: "8" |
||||
|
||||
# Install scripts. (runs after repo cloning) |
||||
install: |
||||
# Get the latest stable version of Node.js or io.js |
||||
- ps: Install-Product node $env:nodejs_version |
||||
# install modules |
||||
- npm install |
||||
|
||||
# Post-install test scripts. |
||||
test_script: |
||||
# Output useful info for debugging. |
||||
- node --version |
||||
- npm --version |
||||
# run tests |
||||
- npm test |
||||
|
||||
# Don't actually build. |
||||
build: off |
@ -0,0 +1,48 @@ |
||||
# QA Guide |
||||
|
||||
Steps to mark a full pass of QA complete. |
||||
* Browsers: Opera, Chrome, Firefox, Edge. |
||||
* OS: Ubuntu, Mac OSX, Windows |
||||
* Load older version of MetaMask and attempt to simulate updating the extension. |
||||
* Open Developer Console in background and popup, inspect errors. |
||||
* Watch the state logs |
||||
* Transactions (unapproved txs -> rejected/submitted -> confirmed) |
||||
* Nonces/LocalNonces |
||||
* Vault integrity |
||||
* create vault |
||||
* Log out |
||||
* Log in again |
||||
* Log out |
||||
* Restore from seed |
||||
* Create a second account |
||||
* Import a loose account (not related to HD Wallet) |
||||
* Import old existing vault seed phrase (pref with test Ether) |
||||
* Download State Logs, Priv key file, seed phrase file. |
||||
* Send Ether |
||||
* by address |
||||
* by ens name |
||||
* Web3 API Stability |
||||
* Create a contract from a Ðapp (remix) |
||||
* Load a Ðapp that reads using events/logs (ENS) |
||||
* Connect to MEW/MyCypto |
||||
* Send a transaction from any Ðapp |
||||
- MEW |
||||
- EtherDelta |
||||
- Leeroy |
||||
- Aragon |
||||
- (https://tmashuang.github.io/demo-dapp) |
||||
* Check account balances |
||||
* Token Management |
||||
* create a token with tokenfactory (http://tokenfactory.surge.sh/#/factory) |
||||
* Add that token to the token view |
||||
* Send that token to another metamask address. |
||||
* confirm the token arrived. |
||||
* Send a transaction and sign a message (https://danfinlay.github.io/js-eth-personal-sign-examples/) for each keyring type |
||||
* hd keyring |
||||
* imported keyring |
||||
* Change network from mainnet → ropsten → rinkeby → localhost (ganache) |
||||
* Ganache set blocktime to simulate retryTx in MetaMask |
||||
* Copy public key to clipboard |
||||
* Export private key |
||||
|
||||
* Explore changes in master, target features that have been changed and break. |
@ -0,0 +1,78 @@ |
||||
# The Team |
||||
|
||||
Here is an overview of the current MetaMask team, and their primary roles and responsibilities, in the order they joined the team. |
||||
|
||||
## Core Team Members |
||||
|
||||
The core team maintains aspects of the main product (the extension) and the core libraries (the MetaMask Controller, provider-engine, etc). |
||||
|
||||
### Aaron Davis |
||||
|
||||
@kumavis |
||||
Founder / Technical Lead |
||||
|
||||
Especially in charge of connection to the blockchain. Wrote [provider-engine](https://github.com/MetaMask/provider-engine), and is currently working with @hermanjunge on our JavaScript light-client. |
||||
|
||||
### Dan Finlay |
||||
|
||||
@danfinlay |
||||
Software Engineer / Product Lead |
||||
|
||||
Focused on the deliverable, user-valuable aspects of MetaMask, including usability and documentation. Coordinates efforts between different branches of the team, and integrations with other projects. |
||||
|
||||
### Frankie Pangilinan |
||||
|
||||
@frankiebee |
||||
Software Engineer / Transaction Manager Lead |
||||
|
||||
Frankie contributes code throughout MetaMask, but has become especially specialized in the way MetaMask manages transactions. She is also the original lead of the [Mascara](https://github.com/MetaMask/mascara) project. |
||||
|
||||
### Kevin Serrano |
||||
|
||||
@Zanibas |
||||
Software Engineer / Project Management Lead |
||||
|
||||
Kevin is a software engineer, but also spends a lot of his time keeping the team's administrative operations running smoothly. |
||||
|
||||
### Thomas Huang |
||||
|
||||
@tmashuang |
||||
QA Engineer |
||||
|
||||
Thomas is the head of MetaMask Quality Assurance. He both takes the final pass of branches of code before we ship to production, and is also in charge of continuously improving our automated quality assurance process. |
||||
|
||||
### Christian Jeria |
||||
|
||||
@cjeria |
||||
User Experience Designer |
||||
|
||||
Christian is the lead of MetaMask's user experience. He is continuously designing prototypes, testing them with users, and refining them with our developers for production. |
||||
|
||||
### Paul Bouchon |
||||
|
||||
@bitpshr |
||||
Software Engineer |
||||
|
||||
The newest member of the team! Paul is currently being onboarded, and finding his niche within the team. |
||||
|
||||
## Laboratory Team Members |
||||
|
||||
These team members are working on projects that will benefit MetaMask, but are not directly working on the product itself. |
||||
|
||||
### Herman Junge |
||||
|
||||
@hermanjunge |
||||
Software Engineer |
||||
|
||||
Herman is currently leading the Mustekala project, a JavaScript, IPFS-based Ethereum light client. |
||||
|
||||
## Kyokan Team Members |
||||
|
||||
[Kyokan](http://kyokan.io/) is a consulting firm that has been working closely with the MetaMask team on the latest version of our user interface. Their team members are not members of ConsenSys LLC, but they contribute a lot to the project. |
||||
|
||||
- Daniel Tsui (@sdsui) |
||||
- Chi Kei Chan (@chikeichan) |
||||
- Dan Miller (@danjm) |
||||
- David Yoo (@yookd) |
||||
- Whymarrh Whitby (@whymarrh) |
||||
|
@ -0,0 +1,161 @@ |
||||
import React, { Component } from 'react' |
||||
import PropTypes from 'prop-types' |
||||
import { connect } from 'react-redux' |
||||
import { withRouter } from 'react-router-dom' |
||||
import classnames from 'classnames' |
||||
import shuffle from 'lodash.shuffle' |
||||
import { compose } from 'recompose' |
||||
import Identicon from '../../../../ui/app/components/identicon' |
||||
import { confirmSeedWords, showModal } from '../../../../ui/app/actions' |
||||
import Breadcrumbs from './breadcrumbs' |
||||
import LoadingScreen from './loading-screen' |
||||
import { DEFAULT_ROUTE, INITIALIZE_BACKUP_PHRASE_ROUTE } from '../../../../ui/app/routes' |
||||
|
||||
class ConfirmSeedScreen extends Component { |
||||
static propTypes = { |
||||
isLoading: PropTypes.bool, |
||||
address: PropTypes.string, |
||||
seedWords: PropTypes.string, |
||||
confirmSeedWords: PropTypes.func, |
||||
history: PropTypes.object, |
||||
openBuyEtherModal: PropTypes.func, |
||||
}; |
||||
|
||||
static defaultProps = { |
||||
seedWords: '', |
||||
} |
||||
|
||||
constructor (props) { |
||||
super(props) |
||||
const { seedWords } = props |
||||
this.state = { |
||||
selectedSeeds: [], |
||||
shuffledSeeds: seedWords && shuffle(seedWords.split(' ')) || [], |
||||
} |
||||
} |
||||
|
||||
componentWillMount () { |
||||
const { seedWords, history } = this.props |
||||
|
||||
if (!seedWords) { |
||||
history.push(DEFAULT_ROUTE) |
||||
} |
||||
} |
||||
|
||||
handleClick () { |
||||
const { confirmSeedWords, history, openBuyEtherModal } = this.props |
||||
|
||||
confirmSeedWords() |
||||
.then(() => { |
||||
history.push(DEFAULT_ROUTE) |
||||
openBuyEtherModal() |
||||
}) |
||||
} |
||||
|
||||
render () { |
||||
const { seedWords, history } = this.props |
||||
const { selectedSeeds, shuffledSeeds } = this.state |
||||
const isValid = seedWords === selectedSeeds.map(([_, seed]) => seed).join(' ') |
||||
|
||||
return ( |
||||
<div className="first-time-flow"> |
||||
{ |
||||
this.props.isLoading |
||||
? <LoadingScreen loadingMessage="Creating your new account" /> |
||||
: ( |
||||
<div className="first-view-main-wrapper"> |
||||
<div className="first-view-main"> |
||||
<div className="backup-phrase"> |
||||
<a |
||||
className="backup-phrase__back-button" |
||||
onClick={e => { |
||||
e.preventDefault() |
||||
history.push(INITIALIZE_BACKUP_PHRASE_ROUTE) |
||||
}} |
||||
href="#" |
||||
> |
||||
{`< Back`} |
||||
</a> |
||||
<Identicon address={this.props.address} diameter={70} /> |
||||
<div className="backup-phrase__content-wrapper"> |
||||
<div> |
||||
<div className="backup-phrase__title"> |
||||
Confirm your Secret Backup Phrase |
||||
</div> |
||||
<div className="backup-phrase__body-text"> |
||||
Please select each phrase in order to make sure it is correct. |
||||
</div> |
||||
<div className="backup-phrase__confirm-secret"> |
||||
{selectedSeeds.map(([_, word], i) => ( |
||||
<button |
||||
key={i} |
||||
className="backup-phrase__confirm-seed-option" |
||||
> |
||||
{word} |
||||
</button> |
||||
))} |
||||
</div> |
||||
<div className="backup-phrase__confirm-seed-options"> |
||||
{shuffledSeeds.map((word, i) => { |
||||
const isSelected = selectedSeeds |
||||
.filter(([index, seed]) => seed === word && index === i) |
||||
.length |
||||
|
||||
return ( |
||||
<button |
||||
key={i} |
||||
className={classnames('backup-phrase__confirm-seed-option', { |
||||
'backup-phrase__confirm-seed-option--selected': isSelected, |
||||
})} |
||||
onClick={() => { |
||||
if (!isSelected) { |
||||
this.setState({ |
||||
selectedSeeds: [...selectedSeeds, [i, word]], |
||||
}) |
||||
} else { |
||||
this.setState({ |
||||
selectedSeeds: selectedSeeds |
||||
.filter(([index, seed]) => !(seed === word && index === i)), |
||||
}) |
||||
} |
||||
}} |
||||
> |
||||
{word} |
||||
</button> |
||||
) |
||||
})} |
||||
</div> |
||||
<button |
||||
className="first-time-flow__button" |
||||
onClick={() => isValid && this.handleClick()} |
||||
disabled={!isValid} |
||||
> |
||||
Confirm |
||||
</button> |
||||
</div> |
||||
</div> |
||||
<Breadcrumbs total={3} currentIndex={1} /> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
) |
||||
} |
||||
</div> |
||||
) |
||||
} |
||||
} |
||||
|
||||
export default compose( |
||||
withRouter, |
||||
connect( |
||||
({ metamask: { selectedAddress, seedWords }, appState: { isLoading } }) => ({ |
||||
seedWords, |
||||
isLoading, |
||||
address: selectedAddress, |
||||
}), |
||||
dispatch => ({ |
||||
confirmSeedWords: () => dispatch(confirmSeedWords()), |
||||
openBuyEtherModal: () => dispatch(showModal({ name: 'DEPOSIT_ETHER'})), |
||||
}) |
||||
) |
||||
)(ConfirmSeedScreen) |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,28 @@ |
||||
const reactTriggerChange = require('../../lib/react-trigger-change') |
||||
const { |
||||
timeout, |
||||
queryAsync, |
||||
findAsync, |
||||
} = require('../../lib/util') |
||||
|
||||
QUnit.module('currency localization') |
||||
|
||||
QUnit.test('renders localized currency', (assert) => { |
||||
const done = assert.async() |
||||
runCurrencyLocalizationTest(assert).then(done).catch((err) => { |
||||
assert.notOk(err, `Error was thrown: ${err.stack}`) |
||||
done() |
||||
}) |
||||
}) |
||||
|
||||
async function runCurrencyLocalizationTest(assert, done) { |
||||
console.log('*** start runCurrencyLocalizationTest') |
||||
const selectState = await queryAsync($, 'select') |
||||
selectState.val('currency localization') |
||||
reactTriggerChange(selectState[0]) |
||||
await timeout(1000) |
||||
const txView = await queryAsync($, '.tx-view') |
||||
const heroBalance = await findAsync($(txView), '.hero-balance') |
||||
const fiatAmount = await findAsync($(heroBalance), '.fiat-amount') |
||||
assert.equal(fiatAmount[0].textContent, '₱102,707.97') |
||||
} |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue