diff options
author | brunobar79 <brunobar79@gmail.com> | 2018-10-21 13:59:53 +0800 |
---|---|---|
committer | brunobar79 <brunobar79@gmail.com> | 2018-10-21 13:59:53 +0800 |
commit | 9c1b2108f69334884473eb95758e2d1c02c984d6 (patch) | |
tree | 93f5255399307a28cb9380dc23c275b406403929 /app | |
parent | 13820b6cc1801a420f39cdfecd7ccb5309dc597b (diff) | |
parent | b0c649a4e3c68293e08e764bbf4d53939df88e2d (diff) | |
download | tangerine-wallet-browser-9c1b2108f69334884473eb95758e2d1c02c984d6.tar tangerine-wallet-browser-9c1b2108f69334884473eb95758e2d1c02c984d6.tar.gz tangerine-wallet-browser-9c1b2108f69334884473eb95758e2d1c02c984d6.tar.bz2 tangerine-wallet-browser-9c1b2108f69334884473eb95758e2d1c02c984d6.tar.lz tangerine-wallet-browser-9c1b2108f69334884473eb95758e2d1c02c984d6.tar.xz tangerine-wallet-browser-9c1b2108f69334884473eb95758e2d1c02c984d6.tar.zst tangerine-wallet-browser-9c1b2108f69334884473eb95758e2d1c02c984d6.zip |
fix merge conflicts
Diffstat (limited to 'app')
-rw-r--r-- | app/_locales/en/messages.json | 21 | ||||
-rw-r--r-- | app/_locales/index.json | 41 | ||||
-rw-r--r-- | app/_locales/pl/messages.json | 1213 | ||||
-rw-r--r-- | app/images/eth.svg | 14 | ||||
-rw-r--r-- | app/manifest.json | 4 | ||||
-rw-r--r-- | app/scripts/background.js | 3 | ||||
-rw-r--r-- | app/scripts/controllers/preferences.js | 83 | ||||
-rw-r--r-- | app/scripts/inpage.js | 2 | ||||
-rw-r--r-- | app/scripts/lib/setupFetchDebugging.js | 34 | ||||
-rw-r--r-- | app/scripts/metamask-controller.js | 13 |
10 files changed, 1373 insertions, 55 deletions
diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 13b0da230..bf5854a31 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -140,6 +140,9 @@ "clickCopy": { "message": "Click to Copy" }, + "clickToAdd": { + "message": "Click on $1 to add them to your account" + }, "close": { "message": "Close" }, @@ -361,6 +364,9 @@ "enterPasswordContinue": { "message": "Enter password to continue" }, + "eth": { + "message": "ETH" + }, "etherscanView": { "message": "View account on Etherscan" }, @@ -380,7 +386,7 @@ "message": "Failed" }, "fiat": { - "message": "FIAT", + "message": "Fiat", "description": "Exchange type" }, "fileImportFail": { @@ -638,6 +644,9 @@ "min": { "message": "Minimum" }, + "missingYourTokens": { + "message": "Don't see your tokens?" + }, "myAccounts": { "message": "My Accounts" }, @@ -790,6 +799,12 @@ "prev": { "message": "Prev" }, + "primaryCurrencySetting": { + "message": "Primary Currency" + }, + "primaryCurrencySettingDescription": { + "message": "Select ETH to prioritize displaying values in ETH. Select Fiat to prioritize displaying values in your selected currency." + }, "privacyMsg": { "message": "Privacy Policy" }, @@ -798,7 +813,7 @@ "description": "select this type of file to use to import an account" }, "privateKeyWarning": { - "message": "Warning: Never disclose this key. Anyone with your private keys can take steal any assets held in your account." + "message": "Warning: Never disclose this key. Anyone with your private keys can steal any assets held in your account." }, "privateNetwork": { "message": "Private Network" @@ -1189,7 +1204,7 @@ "message": "These 12 words are the only way to restore your MetaMask accounts.\nSave them somewhere safe and secret." }, "typePassword": { - "message": "Type Your Password" + "message": "Type your MetaMask password" }, "uiWelcome": { "message": "Welcome to the New UI (Beta)" diff --git a/app/_locales/index.json b/app/_locales/index.json index 0598aa9ec..234215e39 100644 --- a/app/_locales/index.json +++ b/app/_locales/index.json @@ -1,23 +1,24 @@ [ - { "code": "cs", "name": "Czech" }, - { "code": "de", "name": "German" }, + { "code": "cs", "name": "Čeština" }, + { "code": "de", "name": "Deutsche" }, { "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)" } + { "code": "es", "name": "Español" }, + { "code": "fr", "name": "Français" }, + { "code": "ht", "name": "Kreyòl ayisyen" }, + { "code": "hn", "name": "हिन्दी" }, + { "code": "it", "name": "Italiano" }, + { "code": "ja", "name": "日本語" }, + { "code": "ko", "name": "한국어" }, + { "code": "nl", "name": "Nederlands" }, + { "code": "ph", "name": "Pilipino" }, + { "code": "pl", "name": "Polskie" }, + { "code": "pt", "name": "Português" }, + { "code": "ru", "name": "Русский" }, + { "code": "sl", "name": "Slovenščina" }, + { "code": "th", "name": "ไทย" }, + { "code": "tml", "name": "தமிழ்" }, + { "code": "tr", "name": "Türkçe" }, + { "code": "vi", "name": "Tiếng Việt" }, + { "code": "zh_CN", "name": "中文(简体)" }, + { "code": "zh_TW", "name": "中文(繁體)" } ] diff --git a/app/_locales/pl/messages.json b/app/_locales/pl/messages.json new file mode 100644 index 000000000..c6d797c34 --- /dev/null +++ b/app/_locales/pl/messages.json @@ -0,0 +1,1213 @@ +{ + "accept": { + "message": "Akceptacja" + }, + "accessingYourCamera": { + "message": "Uruchamianie kamery..." + }, + "account": { + "message": "Konto" + }, + "accountDetails": { + "message": "Szczegóły konta" + }, + "accountName": { + "message": "Nazwa konta" + }, + "accountSelectionRequired": { + "message": "Należy wybrać konto!" + }, + "address": { + "message": "Adres" + }, + "addCustomToken": { + "message": "Dodaj token" + }, + "addToken": { + "message": "Dodaj token" + }, + "addTokens": { + "message": "Dodaj tokeny" + }, + "addSuggestedTokens": { + "message": "Dodaj sugerowane tokeny." + }, + "addAcquiredTokens": { + "message": "Dodaj tokeny pozyskane przy pomocy MetaMask" + }, + "amount": { + "message": "Ilość" + }, + "amountPlusGas": { + "message": "Ilość + gaz" + }, + "appDescription": { + "message": "Wtyczka przeglądarki do Ethereum", + "description": "Opis aplikacji" + }, + "appName": { + "message": "MetaMask", + "description": "Nazwa aplikacji" + }, + "approve": { + "message": "Zatwierdź" + }, + "approved": { + "message": "Zatwierdzone" + }, + "attemptingConnect": { + "message": "Próba połączenia z blockchainem." + }, + "attributions": { + "message": "Atrybuty" + }, + "available": { + "message": "Dostępne" + }, + "back": { + "message": "Wstecz" + }, + "balance": { + "message": "Ilość środków" + }, + "balances": { + "message": "Ilość tokenów" + }, + "balanceIsInsufficientGas": { + "message": "Niewystarczająca ilość środków na opłatę za gaz" + }, + "beta": { + "message": "BETA" + }, + "betweenMinAndMax": { + "message": "musi być większe lub równe $1 i mniejsze lub równe $2,", + "description": "pomoc przy wpisywaniu hex jako dane dziesiętne" + }, + "blockiesIdenticon": { + "message": "Użyj Blockies Identicon" + }, + "borrowDharma": { + "message": "Pożycz z Dharma (Beta)" + }, + "browserNotSupported": { + "message": "Twoja przeglądarka nie jest obsługiwana..." + }, + "builtInCalifornia": { + "message": "MetaMask został zaprojektowany i stworzony w Kaliforni." + }, + "buy": { + "message": "Kup" + }, + "buyCoinbase": { + "message": "Kup na Coinbase" + }, + "buyCoinbaseExplainer": { + "message": "Coinbase to najpopularniejszy sposób na kupno i sprzedaż Bitcoin, Ethereum i Litecoin." + }, + "bytes": { + "message": "Bajty" + }, + "ok": { + "message": "Ok" + }, + "cancel": { + "message": "Anuluj" + }, + "classicInterface": { + "message": "Użyj klasycznego interfejsu" + }, + "clickCopy": { + "message": "Kliknij żeby skopiować" + }, + "close": { + "message": "Zamknij" + }, + "chromeRequiredForHardwareWallets": { + "message": "Żeby połączyć się z portfelem sprzętowym, należy uruchomić MetaMask z przeglądarką Google Chrome." + }, + "confirm": { + "message": "Potwierdź" + }, + "confirmed": { + "message": "Potwierdzone" + }, + "confirmContract": { + "message": "Zatwierdź kontrakt" + }, + "confirmPassword": { + "message": "Potwierdź hasło" + }, + "confirmTransaction": { + "message": "Potwierdź transakcję" + }, + "connectHardwareWallet": { + "message": "Podłącz portfel sprzętowy" + }, + "connect": { + "message": "Połącz" + }, + "connecting": { + "message": "Łączenie..." + }, + "connectToLedger": { + "message": "Połącz z Ledger" + }, + "connectToTrezor": { + "message": "Połącz z Trezor" + }, + "continue": { + "message": "Kontynuuj" + }, + "continueToCoinbase": { + "message": "Przejdź do Coinbase" + }, + "contractDeployment": { + "message": "Uruchomienie kontraktu" + }, + "conversionProgress": { + "message": "Przeliczanie w toku" + }, + "copiedButton": { + "message": "Skopiowane" + }, + "copiedClipboard": { + "message": "Skopiowane do schowka" + }, + "copiedExclamation": { + "message": "Skopiowane!" + }, + "copiedSafe": { + "message": "Skopiowałem to w bezpieczne miejsce" + }, + "copy": { + "message": "Skopiuj" + }, + "copyContractAddress": { + "message": "Skopiuj adres kontaktowy" + }, + "copyAddress": { + "message": "Skopiuj adres do schowka" + }, + "copyToClipboard": { + "message": "Skopiuj do schowka" + }, + "copyButton": { + "message": " Skopiuj " + }, + "copyPrivateKey": { + "message": "To jest Twój prywatny klucz (kliknij żeby skopiować)" + }, + "create": { + "message": "Utwórz" + }, + "createAccount": { + "message": "Utwórz konto" + }, + "createDen": { + "message": "Utwórz" + }, + "crypto": { + "message": "Krypto", + "description": "Tym platformy wymiany (kryptowaluty)" + }, + "currentConversion": { + "message": "Obecny kurs" + }, + "currentNetwork": { + "message": "Bieżąca sieć" + }, + "customGas": { + "message": "Ustaw gaz" + }, + "customToken": { + "message": "Własny token" + }, + "customize": { + "message": "Ustaw" + }, + "customRPC": { + "message": "Własne RPC" + }, + "decimalsMustZerotoTen": { + "message": "Liczb po przecinku musi być co najmniej 0 i nie więcej niż 36." + }, + "decimal": { + "message": "Dokładność liczb po przecinku" + }, + "defaultNetwork": { + "message": "Domyślna sieć dla Eteru to Main Net." + }, + "denExplainer": { + "message": "Twój DEN to chroniony hasłem schowek w MetaMasku." + }, + "deposit": { + "message": "Zdeponuj" + }, + "depositBTC": { + "message": "Zdeponuj swoje BTC na poniższy adres:" + }, + "depositCoin": { + "message": "Zdeponuj $1 na poniższy adres", + "description": "Pokazuje użytkownikowi jakie waluty wybrał do zdeponowania w ShapeShift" + }, + "depositEth": { + "message": "Zdeponuj Eth" + }, + "depositEther": { + "message": "Zdeponuj Eter" + }, + "depositFiat": { + "message": "Zdeponuj w Fiat" + }, + "depositFromAccount": { + "message": "Zdeponuj z innego konta" + }, + "depositShapeShift": { + "message": "Zdeponuj przez ShapeShift" + }, + "depositShapeShiftExplainer": { + "message": "Jeśli posiadasz inne kryptowaluty, możesz nimi handlować i deponować Eter bezpośrednio do swojego portfela MetaMask. Nie trzeba żadnego konta." + }, + "details": { + "message": "Szczegóły" + }, + "directDeposit": { + "message": "Bezpośredni depozyt" + }, + "directDepositEther": { + "message": "Zdeponuj Eter bezpośrednio" + }, + "directDepositEtherExplainer": { + "message": "Jeśli już masz Eter, najszybciej umieścisz go w swoim nowym portfelu przy pomocy bezpośredniego depozytu." + }, + "done": { + "message": "Gotowe" + }, + "downloadGoogleChrome": { + "message": "Ściągnij Google Chrome" + }, + "downloadStateLogs": { + "message": "Załaduj logi stanów" + }, + "dontHaveAHardwareWallet": { + "message": "Nie masz portfela sprzętowego?" + }, + "dropped": { + "message": "Odrzucone" + }, + "edit": { + "message": "Edytuj" + }, + "editAccountName": { + "message": "Edytuj nazwę konta" + }, + "editingTransaction": { + "message": "Dokonaj zmian w swojej transakcji" + }, + "emailUs": { + "message": "Napisz do nas!" + }, + "encryptNewDen": { + "message": "Zaszyfruj swój nowy DEN" + }, + "ensNameNotFound": { + "message": "Nie znaleziono nazwy ENS" + }, + "enterPassword": { + "message": "Wpisz hasło" + }, + "enterPasswordConfirm": { + "message": "Wpisz hasło żeby potwierdzić" + }, + "enterPasswordContinue": { + "message": "Podaj hasło żeby kontynuować" + }, + "parameters": { + "message": "Parametry" + }, + "passwordNotLongEnough": { + "message": "Hasło jest za krótkie" + }, + "passwordsDontMatch": { + "message": "Hasła są niezgodne" + }, + "etherscanView": { + "message": "Zobacz konto na Etherscan" + }, + "exchangeRate": { + "message": "Kurs wymiany" + }, + "exportPrivateKey": { + "message": "Eksportuj klucz prywatny" + }, + "exportPrivateKeyWarning": { + "message": "Eksportujesz prywatne klucze na własne ryzyko." + }, + "failed": { + "message": "Nie udało się" + }, + "fiat": { + "message": "FIAT", + "description": "Rodzaj wymiany" + }, + "fileImportFail": { + "message": "Importowanie pliku nie działa? Kliknij tutaj!", + "description": "Wspomaga użytkowników przy importowaniu ich konta z pliku JSON" + }, + "followTwitter": { + "message": "Śledź nas na Twitterze" + }, + "forgetDevice": { + "message": "Usuń to urządzenie." + }, + "from": { + "message": "Z" + }, + "fromToSame": { + "message": "Adresy Z i Do nie mogą być identyczne" + }, + "fromShapeShift": { + "message": "Z ShapeShift" + }, + "functionType": { + "message": "Typ funkcji" + }, + "gas": { + "message": "Gaz", + "description": "Krótkie oznaczenie kosztu gazu" + }, + "gasFee": { + "message": "Opłata za gaz" + }, + "gasLimit": { + "message": "Limit gazu" + }, + "gasLimitCalculation": { + "message": "Obliczamy sugerowany limit gazu na podstawie danych z transakcji w sieci." + }, + "gasLimitRequired": { + "message": "Limit gazu jest wymagany" + }, + "gasLimitTooLow": { + "message": "Limit gazu musi wynosić co najmniej 21000" + }, + "generatingSeed": { + "message": "Generowanie seed..." + }, + "gasPrice": { + "message": "Cena gazu (GWEI)" + }, + "gasPriceCalculation": { + "message": "Obliczamy ceny gazu na podstawie danych z transakcji w sieci." + }, + "gasPriceRequired": { + "message": "Wymagana cena gazu" + }, + "generatingTransaction": { + "message": "Generowanie transakcji" + }, + "getEther": { + "message": "Zdobądź Eter" + }, + "getEtherFromFaucet": { + "message": "Zdobądź Eter ze źródła za $1", + "description": "Wyświetla nazwę sieci dla źródła Eteru" + }, + "getHelp": { + "message": "Po pomoc." + }, + "greaterThanMin": { + "message": "musi być większe lub równe $1.", + "description": "pomoc przy wpisywaniu hex jako dane dziesiętne" + }, + "hardware": { + "message": "sprzęt" + }, + "hardwareWalletConnected": { + "message": "Podłączono sprzętowy portfel" + }, + "hardwareWallets": { + "message": "Podłącz sprzętowy portfel" + }, + "hardwareWalletsMsg": { + "message": "Wybierz portfel sprzętowy, którego chcesz użyć z MetaMaskiem" + }, + "havingTroubleConnecting": { + "message": "Problem z połączeniem?" + }, + "here": { + "message": "tutaj", + "description": "jak w -kliknij tutaj- po więcej informacji (połączone z troubleTokenBalances)" + }, + "hereList": { + "message": "Oto lista!!!" + }, + "hexData": { + "message": "Dane Hex" + }, + "hide": { + "message": "Schowaj" + }, + "hideToken": { + "message": "Schowaj token" + }, + "hideTokenPrompt": { + "message": "Schować token?" + }, + "history": { + "message": "Historia" + }, + "howToDeposit": { + "message": "Jak chcesz zdeponować Eter?" + }, + "holdEther": { + "message": "Umożliwia przechowywanie eteru i tokenów oraz służy jako łącznik do zdecentralizowanych aplikacji." + }, + "import": { + "message": "Importuj", + "description": "Przycisk do importowania konta z wybranego pliku." + }, + "importAccount": { + "message": "Importuj konto" + }, + "importAccountMsg": { + "message": " Importowane konta nie będą powiązane z Twoją pierwotną frazą seed MetaMask. Dowiedz się więcej o importowaniu kont " + }, + "importAnAccount": { + "message": "Importuj konto" + }, + "importDen": { + "message": "Importuj istniejące DEN" + }, + "imported": { + "message": "Zaimportowane", + "description": "status pokazujący, że konto zostało w pełni załadowane na keyring" + }, + "importUsingSeed": { + "message": "Importuj przy pomocy frazy seed konta" + }, + "infoHelp": { + "message": "Info & pomoc" + }, + "initialTransactionConfirmed": { + "message": "Twoja transakcja została potwierdzona w sieci. Kliknij OK żeby wrócić." + }, + "insufficientFunds": { + "message": "Niewystarczające środki." + }, + "insufficientTokens": { + "message": "Niewystarczająca liczba tokenów." + }, + "invalidAddress": { + "message": "Nieprawidłowy adres" + }, + "invalidAddressRecipient": { + "message": "Nieprawidłowy adres odbiorcy" + }, + "invalidGasParams": { + "message": "Nieprawidłowe parametry gazu" + }, + "invalidInput": { + "message": "Nieprawidłowe dane." + }, + "invalidRequest": { + "message": "Nieprawidłowe zapytanie" + }, + "invalidRPC": { + "message": "Nieprawidłowe RPC URI" + }, + "invalidSeedPhrase": { + "message": "Nieprawidłowa fraza seed" + }, + "jsonFail": { + "message": "Coś poszło nie tak. Upewnij się, że plik JSON jest prawidłowo sformatowany." + }, + "jsonFile": { + "message": "Plik JSON", + "description": "formatuj do importowania konta" + }, + "keepTrackTokens": { + "message": "Monitoruj stan tokenów kupionych przy pomocy konta MetaMask." + }, + "kovan": { + "message": "Sieć testowa Kovan" + }, + "knowledgeDataBase": { + "message": "Sprawdź naszą Bazę wiedzy." + }, + "max": { + "message": "Maks." + }, + "learnMore": { + "message": "Dowiedz się więcej" + }, + "ledgerAccountRestriction": { + "message": "Musisz użyć swojego poprzedniego konta zanim dodasz kolejne." + }, + "lessThanMax": { + "message": "musi być mniejsze lub równe $1.", + "description": "pomoc przy wpisywaniu hex jako dane dziesiętne" + }, + "likeToAddTokens": { + "message": "Czy chcesz dodać te tokeny?" + }, + "links": { + "message": "Łącza" + }, + "limit": { + "message": "Limit" + }, + "loading": { + "message": "Ładowanie..." + }, + "loadingTokens": { + "message": "Ładowanie tokenów..." + }, + "localhost": { + "message": "Serwer lokalny 8545" + }, + "login": { + "message": "Zaloguj się" + }, + "logout": { + "message": "Wyloguj się" + }, + "loose": { + "message": "Porzuć" + }, + "loweCaseWords": { + "message": "słowa seed mogą być pisane wyłącznie małymi literami" + }, + "mainnet": { + "message": "Główna sieć Ethereum" + }, + "menu": { + "message": "Menu" + }, + "message": { + "message": "Wiadomość" + }, + "metamaskDescription": { + "message": "MetaMask to bezpieczny portfel dla Ethereum." + }, + "metamaskSeedWords": { + "message": "Słowa Seed MetaMask" + }, + "min": { + "message": "Minimum" + }, + "myAccounts": { + "message": "Moje konta" + }, + "mustSelectOne": { + "message": "Należy wybrać co najmniej 1 token." + }, + "needEtherInWallet": { + "message": "Żeby skorzystać ze zdecentraliowanych aplikacji (dApps) przy pomocy MetaMask, potrzebujesz Eteru w swoim portfelu." + }, + "needImportFile": { + "message": "Musisz wybrać plik do zaimportowania.", + "description": "Użytkownik importuje konto i musi dodać plik, żeby kontynuować" + }, + "needImportPassword": { + "message": "Musisz podać hasło dla wybranego pliku.", + "description": "Hasło i plik niezbędne do zaimportowania konta" + }, + "negativeETH": { + "message": "Nie można wysłać ujemnych ilości ETH." + }, + "networks": { + "message": "Sieci" + }, + "nevermind": { + "message": "Nie ważne" + }, + "newAccount": { + "message": "Nowe konto" + }, + "newAccountNumberName": { + "message": "Konto $1", + "description": "Automatyczna nazwa kolejnego konta utworzonego w widoku Utwórz konto" + }, + "newContract": { + "message": "Nowy kontrakt" + }, + "newPassword": { + "message": "Nowe hasło (min. 8 znaków)" + }, + "newRecipient": { + "message": "Nowy odbiorca" + }, + "newRPC": { + "message": "Nowy RPC URL" + }, + "next": { + "message": "Dalej" + }, + "noAddressForName": { + "message": "Nie wybrano żadnego adresu dla tej nazwy." + }, + "noDeposits": { + "message": "Brak otrzymanych depozytów" + }, + "noConversionRateAvailable": { + "message": "Brak kursu waluty" + }, + "noTransactionHistory": { + "message": "Brak historii transakcji." + }, + "noTransactions": { + "message": "Nie ma transakcji" + }, + "notFound": { + "message": "Nie znaleziono" + }, + "notStarted": { + "message": "Nie rozpoczęto" + }, + "noWebcamFoundTitle": { + "message": "Nie znaleziono kamery" + }, + "noWebcamFound": { + "message": "Twoja kamera nie została znaleziona. Spróbuj ponownie." + }, + "oldUI": { + "message": "Stary interfejs" + }, + "oldUIMessage": { + "message": "Wróciłeś do starego interfejsu. Możesz włączyć nowy interfejs przez opcje w rozwijanym menu w prawym górnym rogu." + }, + "openInTab": { + "message": "Otwórz w zakładce" + }, + "or": { + "message": "lub", + "description": "wybór między tworzeniem i importowaniem nowego konta" + }, + "origin": { + "message": "Pochodzenie" + }, + "password": { + "message": "Hasło" + }, + "passwordCorrect": { + "message": "Upewnij się, że Twoje hasło jest poprawne." + }, + "passwordMismatch": { + "message": "hasła nie są takie same", + "description": "podczas tworzenia hasła, tekst w dwóch polach haseł nie był taki sam" + }, + "passwordShort": { + "message": "hasło za krótkie", + "description": "podczas tworzenia hasła, hasło nie jest bezpieczne, ponieważ nie jest wystarczająco długie" + }, + "pastePrivateKey": { + "message": "Tutaj wklej swój prywatny klucz:", + "description": "Do importowania konta z prywatnego klucza" + }, + "pasteSeed": { + "message": "Tutaj wklej swoją frazę seed!" + }, + "pending": { + "message": "oczekiwanie" + }, + "personalAddressDetected": { + "message": "Wykryto osobisty adres. Wprowadź adres kontraktu tokenów." + }, + "pleaseReviewTransaction": { + "message": "Proszę, sprawdź transakcję." + }, + "popularTokens": { + "message": "Popularne tokeny" + }, + "prev": { + "message": "Poprzednie" + }, + "privacyMsg": { + "message": "Polityka prywatności" + }, + "privateKey": { + "message": "Klucz prywatny", + "description": "wybierz ten typ pliku żeby importować konto" + }, + "privateKeyWarning": { + "message": "Uwaga: Nie ujawniaj nikomu tego klucza. Ktokolwiek posiadający Twoje prywatne klucze może użyć środków znajdujących się na Twoim koncie." + }, + "privateNetwork": { + "message": "Sieć prywatna" + }, + "qrCode": { + "message": "Pokaż kod QR" + }, + "queue": { + "message": "Kolejka" + }, + "readdToken": { + "message": "Możesz później ponownie dodać ten token poprzez \"Dodaj token\" w opcjach menu swojego konta." + }, + "readMore": { + "message": "Dowiedz się więcej tutaj." + }, + "readMore2": { + "message": "Dowiedz się więcej." + }, + "receive": { + "message": "Otrzymaj" + }, + "recipientAddress": { + "message": "Adres odbiorcy" + }, + "refundAddress": { + "message": "Twój adres na zwroty" + }, + "rejected": { + "message": "Odrzucone" + }, + "reset": { + "message": "Reset" + }, + "resetAccount": { + "message": "Resetuj konto" + }, + "resetAccountDescription": { + "message": "Zresetowanie konta wyczyści Twoją historię transakcji." + }, + "restoreFromSeed": { + "message": "Przywrócić konto?" + }, + "restoreVault": { + "message": "Przywróć schowek" + }, + "restoreAccountWithSeed": { + "message": "Przywróć konto frazą seed" + }, + "required": { + "message": "Wymagane" + }, + "retryWithMoreGas": { + "message": "Spróbuj ponownie z większą ceną gazu" + }, + "walletSeed": { + "message": "Seed portfela" + }, + "restore": { + "message": "Przywróć" + }, + "revealSeedWords": { + "message": "Pokaż słowa seed" + }, + "revealSeedWordsTitle": { + "message": "Fraza seed" + }, + "revealSeedWordsDescription": { + "message": "Jeśli kiedyś zmienisz przeglądarkę lub komputer, będziesz potrzebować tej frazy seed, żeby dostać się do swoich kont. Zapisz ją w bezpiecznym miejscu." + }, + "revealSeedWordsWarningTitle": { + "message": "NIE pokazuj tej frazy nikomu!" + }, + "revealSeedWordsWarning": { + "message": "Te słowa mogą być użyte żeby ukraść Twoje konta." + }, + "revert": { + "message": "Wycofaj" + }, + "remove": { + "message": "usuń" + }, + "removeAccount": { + "message": "Usuń konto" + }, + "removeAccountDescription": { + "message": "To konto będzie usunięte z Twojego portfela. Zanim przejdziesz dalej, upewnij się, że masz frazę seed i klucz prywatny do tego importowanego konta. Możesz później importować lub utworzyć nowe konta z rozwijanego menu kont. " + }, + "readyToConnect": { + "message": "Gotowy na połączenie?" + }, + "rinkeby": { + "message": "Sieć testowa Rinkeby" + }, + "ropsten": { + "message": "Sieć testowa Ropsten" + }, + "rpc": { + "message": "Indywidualne RPC" + }, + "currentRpc": { + "message": "Obecne RPC" + }, + "connectingToMainnet": { + "message": "Łączenie z główną siecią Ethereum" + }, + "connectingToRopsten": { + "message": "Łączenie z siecią testową Ropsten" + }, + "connectingToKovan": { + "message": "Łączenie z siecią testową Kovan" + }, + "connectingToRinkeby": { + "message": "Łączenie z siecią testową Rinkeby" + }, + "connectingToUnknown": { + "message": "Łączenie z nieznaną siecią" + }, + "sampleAccountName": { + "message": "Np. Moje nowe konto", + "description": "Umożliwia użytkownikom zrozumieć ideę dodawania własnej nazwy to ich konta" + }, + "save": { + "message": "Zapisz" + }, + "speedUpTitle": { + "message": "Przyspiesz transakcję" + }, + "speedUpSubtitle": { + "message": "Zwiększ cenę gazu żeby nadpisać i przyspieszyć transakcję" + }, + "saveAsCsvFile": { + "message": "Zapisz jako plik CSV" + }, + "saveAsFile": { + "message": "Zapisz jako", + "description": "Proces eksportu konta" + }, + "saveSeedAsFile": { + "message": "Zapisz słowa seed jako plik" + }, + "search": { + "message": "Szukaj" + }, + "searchResults": { + "message": "Wyniki wyszukiwania" + }, + "secretPhrase": { + "message": "Żeby otworzyć schowek, wpisz tutaj swoją frazę dwunastu słów." + }, + "showHexData": { + "message": "Pokaż dane hex" + }, + "showHexDataDescription": { + "message": "Wybierz to żeby pokazać pole danych hex na ekranie wysyłania" + }, + "newPassword8Chars": { + "message": "Nowe hasło (min. 8 znaków)" + }, + "seedPhraseReq": { + "message": "Frazy seed mają 12 słów" + }, + "select": { + "message": "Wybierz" + }, + "selectCurrency": { + "message": "Wybierz walutę" + }, + "selectService": { + "message": "Wybierz usługę" + }, + "selectType": { + "message": "Wybierz rodzaj" + }, + "send": { + "message": "Wyślij" + }, + "sendETH": { + "message": "Wyślij ETH" + }, + "sendTokens": { + "message": "Wyślij tokeny" + }, + "sentEther": { + "message": "wyślij eter" + }, + "sentTokens": { + "message": "wysłane tokeny" + }, + "separateEachWord": { + "message": "Oddziel słowa pojedynczą spacją" + }, + "onlySendToEtherAddress": { + "message": "Na adres Ethereum wysyłaj tylko ETH." + }, + "onlySendTokensToAccountAddress": { + "message": "Wyślij tylko $1 na adres konta Ethereum.", + "description": "wyświetla symbol tokena" + }, + "orderOneHere": { + "message": "Zamów Trezor lub Ledger i trzymaj swoje środki w portfelu sprzętowym." + }, + "outgoing": { + "message": "Wychodzące" + }, + "searchTokens": { + "message": "Szukaj tokenów" + }, + "selectAnAddress": { + "message": "Wybierz adres" + }, + "selectAnAccount": { + "message": "Wybierz konto" + }, + "selectAnAccountHelp": { + "message": "Wybierz konto do przeglądania w MetaMask" + }, + "selectHdPath": { + "message": "Wybierz ścieżkę HD" + }, + "selectPathHelp": { + "message": "Jeśli nie widzisz poniżej swoich kont Ledger, spróbuj przełączyć się na \"Legacy (MEW / MyCrypto)\"" + }, + "sendTokensAnywhere": { + "message": "Wyślij tokeny do kogoś z adresem Ethereum" + }, + "settings": { + "message": "Ustawienia" + }, + "step1HardwareWallet": { + "message": "1. Podłącz portfel sprzętowy" + }, + "step1HardwareWalletMsg": { + "message": "Połącz swój portfel sprzętowy z komputerem." + }, + "step2HardwareWallet": { + "message": "2. Wybierz konto" + }, + "step2HardwareWalletMsg": { + "message": "Wybierz konto, które chcesz przeglądać. Możesz wybrać tylko jedno konto w danym momencie." + }, + "step3HardwareWallet": { + "message": "3. Zacznij używać dystrybuowanych aplikacji (dApps) i wiele więcej!" + }, + "step3HardwareWalletMsg": { + "message": "Używaj swojego konta sprzętowego tak, jak używasz jakiegokolwiek konta z Ethereum. Loguj się do dystrybuowanych aplikacji (dApps), wysyłaj Eth, kupuj i przechowaj tokeny ERC20 i niewymienne tokeny, jak np. CryptoKitties." + }, + "info": { + "message": "Info" + }, + "scanInstructions": { + "message": "Umieść kod QR na wprost kamery" + }, + "scanQrCode": { + "message": "Skanuj kod QR" + }, + "shapeshiftBuy": { + "message": "Kup w ShapeShift" + }, + "showPrivateKeys": { + "message": "Pokaż prywatne klucze" + }, + "showQRCode": { + "message": "Pokaż kod QR" + }, + "sign": { + "message": "Podpisz" + }, + "signatureRequest": { + "message": "Prośba o podpis" + }, + "signed": { + "message": "Podpisane" + }, + "signMessage": { + "message": "Podpisz wiadomość" + }, + "signNotice": { + "message": "Podpisanie tej wiadomości może mieć \nniebezpieczne skutki uboczne. Podpisuj wiadomości \ntylko ze stron, którym chcesz udostępnić swoje konto.\nTa niebezpieczna metoda będzie usunięta w przyszłych wersjach. " + }, + "sigRequest": { + "message": "Prośba o podpis" + }, + "sigRequested": { + "message": "Podpis wymagany" + }, + "spaceBetween": { + "message": "między słowami może być tylko pojedyncza spacja" + }, + "status": { + "message": "Status" + }, + "stateLogs": { + "message": "Logi stanów" + }, + "stateLogsDescription": { + "message": "Logi stanów zawierają Twoje publiczne adresy kont i wykonanych transakcji." + }, + "stateLogError": { + "message": "Błąd podczas pobierania logów stanów." + }, + "submit": { + "message": "Wyślij" + }, + "submitted": { + "message": "Wysłane" + }, + "supportCenter": { + "message": "Odwiedź nasze Centrum Pomocy" + }, + "symbolBetweenZeroTen": { + "message": "Symbol musi mieć od 0 do 10 znaków." + }, + "takesTooLong": { + "message": "Trwa zbyt długo?" + }, + "terms": { + "message": "Regulamin" + }, + "testFaucet": { + "message": "Źródło testowego ETH" + }, + "to": { + "message": "Do" + }, + "toETHviaShapeShift": { + "message": "$1 na ETH przez ShapeShift", + "description": "system uzupełni typ depozytu na początku wiadomości" + }, + "token": { + "message": "Token" + }, + "tokenAddress": { + "message": "Adres tokena" + }, + "tokenAlreadyAdded": { + "message": "Token jest już dodany." + }, + "tokenBalance": { + "message": "Liczba Twoich tokenów:" + }, + "tokenSelection": { + "message": "Szukaj tokenów lub wybierz z naszej listy popularnych tokenów." + }, + "tokenSymbol": { + "message": "Symbol tokena" + }, + "tokenWarning1": { + "message": "Monitoruj stan tokenów kupionych przy pomocy konta MetaMask. Jeśli masz tokeny kupione przy pomocy innych kont, nie pojawią się tutaj." + }, + "total": { + "message": "Suma" + }, + "transactions": { + "message": "transakcje" + }, + "transactionError": { + "message": "Błąd transakcji. Wyjątek w kodzie kontraktu." + }, + "transactionMemo": { + "message": "Memo transakcji (opcjonalnie)" + }, + "transactionNumber": { + "message": "Numer transakcji" + }, + "transfer": { + "message": "Przelew" + }, + "transfers": { + "message": "Przelewy" + }, + "trezorHardwareWallet": { + "message": "Sprzętowy portfel TREZOR" + }, + "troubleTokenBalances": { + "message": "Wystąpił problem z załadowaniem informacji o Twoich tokenach. Można je zobaczyć ", + "description": "Z linkiem (tutaj) do informacji o stanie tokenów" + }, + "tryAgain": { + "message": "Spróbuj ponownie" + }, + "twelveWords": { + "message": "Tych 12 słów to jedyny sposób, żeby odzyskać konta w MetaMasku. Zapisz je w bezpiecznym miejscu." + }, + "typePassword": { + "message": "Wpisz hasło" + }, + "uiWelcome": { + "message": "Witamy w nowym interfejsie (Beta)" + }, + "uiWelcomeMessage": { + "message": "Używasz teraz nowego interfejsu MetaMask." + }, + "unapproved": { + "message": "Niezatwierdzone" + }, + "unavailable": { + "message": "Niedostępne" + }, + "unknown": { + "message": "Nieznane" + }, + "unknownFunction": { + "message": "Nieznana funkcja" + }, + "unknownNetwork": { + "message": "Nieznana sieć prywatna" + }, + "unknownNetworkId": { + "message": "Nieznane sieciowe ID" + }, + "unknownQrCode": { + "message": "Błąd: nie mogliśmy odczytać tego kodu QR" + }, + "unknownCameraErrorTitle": { + "message": "Ups! Coś poszło nie tak..." + }, + "unknownCameraError": { + "message": "Podczas łączenia się z kamerą wystąpił błąd. Spróbuj ponownie..." + }, + "unlock": { + "message": "Odblokuj" + }, + "unlockMessage": { + "message": "Zdecentralizowana sieć oczekuje" + }, + "uriErrorMsg": { + "message": "URI wymaga prawidłowego prefiksu HTTP/HTTPS." + }, + "usaOnly": { + "message": "Tylko USA", + "description": "Ta platforma wymiany jest dostępna tylko dla osób mieszkających w USA" + }, + "usedByClients": { + "message": "Używany przez różnych klientów" + }, + "useOldUI": { + "message": "Przełącz na stary interfejs" + }, + "validFileImport": { + "message": "Należy wybrać prawidłowy plik do zaimportowania." + }, + "vaultCreated": { + "message": "Schowek utworzony" + }, + "viewAccount": { + "message": "Zobacz konto" + }, + "viewOnEtherscan": { + "message": "Zobacz na Etherscan" + }, + "visitWebSite": { + "message": "Odwiedź naszą stronę" + }, + "warning": { + "message": "Uwaga" + }, + "welcomeBack": { + "message": "Witaj z powrotem!" + }, + "welcomeBeta": { + "message": "Witaj w MetaMask Beta" + }, + "whatsThis": { + "message": "Co to jest?" + }, + "youNeedToAllowCameraAccess": { + "message": "Żeby użyć tej opcji należy podłączyć kamerę" + }, + "yourSigRequested": { + "message": "Twój podpis jest wymagany" + }, + "youSign": { + "message": "Podpisujesz" + }, + "yourPrivateSeedPhrase": { + "message": "Twoja prywatna fraza seed" + } +}
\ No newline at end of file diff --git a/app/images/eth.svg b/app/images/eth.svg new file mode 100644 index 000000000..6375b790f --- /dev/null +++ b/app/images/eth.svg @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 40 40" style="enable-background:new 0 0 40 40;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:#38393A;} +</style> +<title>deposit-eth</title> +<desc>Created with Sketch.</desc> +<g id="deposit-eth" transform="translate(0.000000, 14.000000)"> + <path id="Shape" class="st0" d="M19.9,16L7.5,8.7L19.9,26L32.3,8.7L19.9,16L19.9,16z M20.1-14L7.7,6.4l12.4,7.3l12.4-7.2L20.1-14z" + /> +</g> +</svg> diff --git a/app/manifest.json b/app/manifest.json index 3a281f4d0..be1b08c07 100644 --- a/app/manifest.json +++ b/app/manifest.json @@ -1,7 +1,7 @@ { "name": "__MSG_appName__", "short_name": "__MSG_appName__", - "version": "4.14.0", + "version": "4.16.0", "manifest_version": 2, "author": "https://metamask.io", "description": "__MSG_appDescription__", @@ -85,4 +85,4 @@ "*" ] } -} +}
\ No newline at end of file diff --git a/app/scripts/background.js b/app/scripts/background.js index b91021c6e..d20ffe6e3 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -2,6 +2,9 @@ * @file The entry point for the web extension singleton process. */ +// this needs to run before anything else +require('./lib/setupFetchDebugging')() + const urlUtil = require('url') const endOfStream = require('end-of-stream') const pump = require('pump') diff --git a/app/scripts/controllers/preferences.js b/app/scripts/controllers/preferences.js index fd6a4866d..20b13398c 100644 --- a/app/scripts/controllers/preferences.js +++ b/app/scripts/controllers/preferences.js @@ -38,6 +38,9 @@ class PreferencesController { lostIdentities: {}, seedWords: null, forgottenPassword: false, + preferences: { + useETHAsPrimaryCurrency: true, + }, }, opts.initState) this.diagnostics = opts.diagnostics @@ -101,7 +104,7 @@ class PreferencesController { * @param {Function} - end */ async requestWatchAsset (req, res, next, end) { - if (req.method === 'metamask_watchAsset') { + if (req.method === 'metamask_watchAsset' || req.method === 'wallet_watchAsset') { const { type, options } = req.params switch (type) { case 'ERC20': @@ -372,22 +375,6 @@ 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<void>} Promise resolves with undefined - * - */ - updateFrequentRpcList (_url, remove = false) { - return this.addToFrequentRpcList(_url, remove) - .then((rpcList) => { - this.store.updateState({ frequentRpcList: rpcList }) - return Promise.resolve() - }) - } - - /** * Setter for the `currentAccountTab` property * * @param {string} currentAccountTab Specifies the new tab to be marked as current @@ -402,24 +389,39 @@ class PreferencesController { } /** - * Returns an updated rpcList based on the passed url and the current list. - * The returned list will have a max length of 3. If the _url currently exists it the list, it will be moved to the - * end of the list. The current list is modified and returned as a promise. + * Adds custom RPC url to state. * - * @param {string} _url The rpc url to add to the frequentRpcList. - * @param {bool} remove Remove selected url - * @returns {Promise<array>} The updated frequentRpcList. + * @param {string} url The RPC url to add to frequentRpcList. + * @returns {Promise<array>} Promise resolving to updated frequentRpcList. * */ - addToFrequentRpcList (_url, remove = false) { + addToFrequentRpcList (url) { const rpcList = this.getFrequentRpcList() - const index = rpcList.findIndex((element) => { return element === _url }) + const index = rpcList.findIndex((element) => { return element === url }) if (index !== -1) { rpcList.splice(index, 1) } - if (!remove && _url !== 'http://localhost:8545') { - rpcList.push(_url) + if (url !== 'http://localhost:8545') { + rpcList.push(url) } + this.store.updateState({ frequentRpcList: rpcList }) + return Promise.resolve(rpcList) + } + + /** + * Removes custom RPC url from state. + * + * @param {string} url The RPC url to remove from frequentRpcList. + * @returns {Promise<array>} Promise resolving to updated frequentRpcList. + * + */ + removeFromFrequentRpcList (url) { + const rpcList = this.getFrequentRpcList() + const index = rpcList.findIndex((element) => { return element === url }) + if (index !== -1) { + rpcList.splice(index, 1) + } + this.store.updateState({ frequentRpcList: rpcList }) return Promise.resolve(rpcList) } @@ -463,6 +465,33 @@ class PreferencesController { getFeatureFlags () { return this.store.getState().featureFlags } + + /** + * Updates the `preferences` property, which is an object. These are user-controlled features + * found in the settings page. + * @param {string} preference The preference to enable or disable. + * @param {boolean} value Indicates whether or not the preference should be enabled or disabled. + * @returns {Promise<object>} Promises a new object; the updated preferences object. + */ + setPreference (preference, value) { + const currentPreferences = this.getPreferences() + const updatedPreferences = { + ...currentPreferences, + [preference]: value, + } + + this.store.updateState({ preferences: updatedPreferences }) + return Promise.resolve(updatedPreferences) + } + + /** + * A getter for the `preferences` property + * @returns {object} A key-boolean map of user-selected preferences. + */ + getPreferences () { + return this.store.getState().preferences + } + // // PRIVATE METHODS // diff --git a/app/scripts/inpage.js b/app/scripts/inpage.js index 431702d63..b885a7e05 100644 --- a/app/scripts/inpage.js +++ b/app/scripts/inpage.js @@ -27,6 +27,8 @@ var metamaskStream = new LocalMessageDuplexStream({ // compose the inpage provider var inpageProvider = new MetamaskInpageProvider(metamaskStream) +// set a high max listener count to avoid unnecesary warnings +inpageProvider.setMaxListeners(100) // Augment the provider with its enable method inpageProvider.enable = function (options = {}) { diff --git a/app/scripts/lib/setupFetchDebugging.js b/app/scripts/lib/setupFetchDebugging.js new file mode 100644 index 000000000..dd87b65a6 --- /dev/null +++ b/app/scripts/lib/setupFetchDebugging.js @@ -0,0 +1,34 @@ +module.exports = setupFetchDebugging + +// +// This is a utility to help resolve cases where `window.fetch` throws a +// `TypeError: Failed to Fetch` without any stack or context for the request +// https://github.com/getsentry/sentry-javascript/pull/1293 +// + +function setupFetchDebugging() { + if (!global.fetch) return + const originalFetch = global.fetch + + global.fetch = wrappedFetch + + async function wrappedFetch(...args) { + const initialStack = getCurrentStack() + try { + return await originalFetch.call(window, ...args) + } catch (err) { + console.warn('FetchDebugger - fetch encountered an Error', err) + console.warn('FetchDebugger - overriding stack to point of original call') + err.stack = initialStack + throw err + } + } +} + +function getCurrentStack() { + try { + throw new Error('Fake error for generating stack trace') + } catch (err) { + return err.stack + } +} diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 493877345..7913662d4 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -129,6 +129,7 @@ module.exports = class MetamaskController extends EventEmitter { provider: this.provider, blockTracker: this.blockTracker, }) + // start and stop polling for balances based on activeControllerConnections this.on('controllerConnectionChanged', (activeControllerConnections) => { if (activeControllerConnections > 0) { @@ -137,7 +138,12 @@ module.exports = class MetamaskController extends EventEmitter { this.accountTracker.stop() } }) - + + // ensure accountTracker updates balances after network change + this.networkController.on('networkDidChange', () => { + this.accountTracker._updateAccounts() + }) + // key mgmt const additionalKeyrings = [TrezorKeyring, LedgerBridgeKeyring] this.keyringController = new KeyringController({ @@ -387,6 +393,7 @@ module.exports = class MetamaskController extends EventEmitter { setCurrentAccountTab: nodeify(preferencesController.setCurrentAccountTab, preferencesController), setAccountLabel: nodeify(preferencesController.setAccountLabel, preferencesController), setFeatureFlag: nodeify(preferencesController.setFeatureFlag, preferencesController), + setPreference: nodeify(preferencesController.setPreference, preferencesController), // BlacklistController whitelistPhishingDomain: this.whitelistPhishingDomain.bind(this), @@ -1451,7 +1458,7 @@ module.exports = class MetamaskController extends EventEmitter { */ async setCustomRpc (rpcTarget) { this.networkController.setRpcTarget(rpcTarget) - await this.preferencesController.updateFrequentRpcList(rpcTarget) + await this.preferencesController.addToFrequentRpcList(rpcTarget) return rpcTarget } @@ -1460,7 +1467,7 @@ module.exports = class MetamaskController extends EventEmitter { * @param {string} rpcTarget - A RPC URL to delete. */ async delCustomRpc (rpcTarget) { - await this.preferencesController.updateFrequentRpcList(rpcTarget, true) + await this.preferencesController.removeFromFrequentRpcList(rpcTarget) } /** |