diff --git a/.github/workflows/pr_test_build.yml b/.github/workflows/pr_test_build.yml index 00fd16199..3a439c556 100644 --- a/.github/workflows/pr_test_build.yml +++ b/.github/workflows/pr_test_build.yml @@ -8,6 +8,9 @@ jobs: test: runs-on: ubuntu-18.04 + env: + STORE_PASS: test@cake_wallet + KEY_PASS: test@cake_wallet steps: - uses: actions/checkout@v2 @@ -63,12 +66,12 @@ jobs: - name: Generate KeyStore run: | cd /opt/android/cake_wallet/android/app - keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias testKey -noprompt -dname "CN=CakeWallet, OU=CakeWallet, O=CakeWallet, L=Florida, S=America, C=USA" -storepass ${{ secrets.STORE_PASS }} -keypass ${{ secrets.KEY_PASS }} + keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias testKey -noprompt -dname "CN=CakeWallet, OU=CakeWallet, O=CakeWallet, L=Florida, S=America, C=USA" -storepass $STORE_PASS -keypass $KEY_PASS - name: Generate key properties run: | cd /opt/android/cake_wallet - flutter packages pub run tool/generate_android_key_properties.dart keyAlias=testKey storeFile=key.jks storePassword=${{ secrets.STORE_PASS }} keyPassword=${{ secrets.KEY_PASS }} + flutter packages pub run tool/generate_android_key_properties.dart keyAlias=testKey storeFile=key.jks storePassword=$STORE_PASS keyPassword=$KEY_PASS - name: Generate localization run: | @@ -141,6 +144,7 @@ jobs: path: /opt/android/cake_wallet/build/app/outputs/apk/release/test-apk/ - name: Send Test APK + continue-on-error: true run: | cd /opt/android/cake_wallet var=$(curl --upload-file build/app/outputs/apk/release/app-release.apk https://transfer.sh/$GITHUB_HEAD_REF.apk -H "Max-Days: 10") diff --git a/LICENSE.md b/LICENSE.md index 4f80e683b..4268b9710 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2022 Cake Labs LLC +Copyright (c) 2018-2023 Cake Labs LLC Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index c5f6dc1b2..14cb5e2ee 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,25 @@ For instructions on how to build for Android: please view file `howto-build-andr Edit the applicable `strings_XX.arb` file in `res/values/` and open a pull request with the changes. +## Current list of language files: + +- English +- Spanish +- French +- German +- Italian +- Portugese +- Dutch +- Polish +- Croatian +- Russian +- Ukranian +- Hindi +- Japanese +- Chinese +- Korean +- Arabic + ## Add a new language 1. Create a new `strings_XX.arb` file in `res/values/`, replacing XX with the language's [ISO 639-1 code](https://en.wikipedia.org/wiki/ISO_639-1). @@ -91,9 +110,15 @@ Edit the applicable `strings_XX.arb` file in `res/values/` and open a pull reque `"welcome" : "Welcome to",` -> `"welcome" : "XXX",` -3. Add the language to `lib/entities/language_service.dart` under both `supportedLocales` and `localeCountryCode`. Use the name of the language in the local language and in English in parentheses after for `supportedLocales`. Use the [ISO 3166-1 alpha-3 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) for `localeCountryCode`. You must choose one country, so choose the country with the most native speakers of this language or is otherwise best associated with this language. +3. For strings where there is a variable, denoted by a $ symbol and braces, such as ${status}, the string in braces should not be translated. For example, when editing line 106: -4. Add a relevant flag to `assets/images/flags/XXXX.png`, replacing XXXX with the 3 digit localeCountryCode. The image must be 42x36 pizxels with a 3 pixels of transparent margin on all 4 sides. +"time" : "${minutes}m ${seconds}s" + +The only parts to be translated, if needed, are the values m and s after the variables. + +4. Add the language to `lib/entities/language_service.dart` under both `supportedLocales` and `localeCountryCode`. Use the name of the language in the local language and in English in parentheses after for `supportedLocales`. Use the [ISO 3166-1 alpha-3 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) for `localeCountryCode`. You must choose one country, so choose the country with the most native speakers of this language or is otherwise best associated with this language. + +5. Add a relevant flag to `assets/images/flags/XXXX.png`, replacing XXXX with the 3 digit localeCountryCode. The image must be 42x36 pixels with a 3 pixels of transparent margin on all 4 sides. ## Add a new fiat currency @@ -103,4 +128,4 @@ Edit the applicable `strings_XX.arb` file in `res/values/` and open a pull reque 3. Add the raw mapping underneath in `lib/entities/fiat_currency.dart` following the same format as the others. -4. Add a flag of the issuing country or organization to `assets/images/flags/XXXX.png`, replacing XXXX with the ISO 3166-1 alpha-3 code used above (eg: `usa.png`, `eur.png`). Do not add this if the flag with the same name already exists. The image must be 42x36 pizxels with a 3 pixels of transparent margin on all 4 sides. +4. Add a flag of the issuing country or organization to `assets/images/flags/XXXX.png`, replacing XXXX with the ISO 3166-1 alpha-3 code used above (eg: `usa.png`, `eur.png`). Do not add this if the flag with the same name already exists. The image must be 42x36 pixels with a 3 pixels of transparent margin on all 4 sides. diff --git a/assets/images/flags/sau.png b/assets/images/flags/sau.png new file mode 100644 index 000000000..97951983a Binary files /dev/null and b/assets/images/flags/sau.png differ diff --git a/assets/images/husd_icon.png b/assets/images/husd_icon.png deleted file mode 100644 index 071027099..000000000 Binary files a/assets/images/husd_icon.png and /dev/null differ diff --git a/cw_bitcoin/lib/electrum_transaction_history.dart b/cw_bitcoin/lib/electrum_transaction_history.dart index f8662eb95..9174fb3f8 100644 --- a/cw_bitcoin/lib/electrum_transaction_history.dart +++ b/cw_bitcoin/lib/electrum_transaction_history.dart @@ -72,7 +72,7 @@ abstract class ElectrumTransactionHistoryBase txs.entries.forEach((entry) { final val = entry.value; - if (val is Map) { + if (val is Map) { final tx = ElectrumTransactionInfo.fromJson(val, walletInfo.type); _updateOrInsert(tx); } @@ -85,9 +85,6 @@ abstract class ElectrumTransactionHistoryBase } void _updateOrInsert(ElectrumTransactionInfo transaction) { - if (transaction.id == null) { - return; - } if (transactions[transaction.id] == null) { transactions[transaction.id] = transaction; @@ -98,6 +95,7 @@ abstract class ElectrumTransactionHistoryBase originalTx?.height = transaction.height; originalTx?.date ??= transaction.date; originalTx?.isPending = transaction.isPending; + originalTx?.direction = transaction.direction; } } } diff --git a/cw_bitcoin/lib/electrum_transaction_info.dart b/cw_bitcoin/lib/electrum_transaction_info.dart index 6e85a2f88..8d6ef0fea 100644 --- a/cw_bitcoin/lib/electrum_transaction_info.dart +++ b/cw_bitcoin/lib/electrum_transaction_info.dart @@ -228,9 +228,7 @@ class ElectrumTransactionInfo extends TransactionInfo { m['id'] = id; m['height'] = height; m['amount'] = amount; - // FIX-ME: Hardcoded value - // m['direction'] = direction.index; - m['direction'] = 0; + m['direction'] = direction.index; m['date'] = date.millisecondsSinceEpoch; m['isPending'] = isPending; m['confirmations'] = confirmations; diff --git a/cw_core/lib/crypto_currency.dart b/cw_core/lib/crypto_currency.dart index c6e0c02c2..3ee2b5e15 100644 --- a/cw_core/lib/crypto_currency.dart +++ b/cw_core/lib/crypto_currency.dart @@ -1,20 +1,18 @@ import 'package:cw_core/enumerable_item.dart'; -import 'package:hive/hive.dart'; -part 'crypto_currency.g.dart'; - -@HiveType(typeId: 0) class CryptoCurrency extends EnumerableItem with Serializable { const CryptoCurrency({ String title = '', int raw = -1, - this.name, + required this.name, + this.fullName, this.iconPath, - this.tag,}) + this.tag}) : super(title: title, raw: raw); + final String name; final String? tag; - final String? name; + final String? fullName; final String? iconPath; static const all = [ @@ -38,7 +36,7 @@ class CryptoCurrency extends EnumerableItem with Serializable { CryptoCurrency.ape, CryptoCurrency.avaxc, CryptoCurrency.btt, - CryptoCurrency.bttbsc, + CryptoCurrency.bttc, CryptoCurrency.doge, CryptoCurrency.firo, CryptoCurrency.usdttrc20, @@ -53,7 +51,6 @@ class CryptoCurrency extends EnumerableItem with Serializable { CryptoCurrency.xvg, CryptoCurrency.usdcpoly, CryptoCurrency.dcr, - CryptoCurrency.husd, CryptoCurrency.kmd, CryptoCurrency.mana, CryptoCurrency.maticpoly, @@ -70,339 +67,116 @@ class CryptoCurrency extends EnumerableItem with Serializable { CryptoCurrency.stx, ]; - static const xmr = CryptoCurrency(title: 'XMR', iconPath: 'assets/images/monero_icon.png', name: 'Monero', raw: 0); - static const ada = CryptoCurrency(title: 'ADA', iconPath: 'assets/images/ada_icon.png', name: 'Cardano', raw: 1); - static const bch = CryptoCurrency(title: 'BCH', iconPath: 'assets/images/bch_icon.png',name: 'Bitcoin Cash', raw: 2); - static const bnb = CryptoCurrency(title: 'BNB', iconPath: 'assets/images/bnb_icon.png', tag: 'BSC', name: 'Binance Coin', raw: 3); - static const btc = CryptoCurrency(title: 'BTC', iconPath: 'assets/images/btc.png', name: 'Bitcoin', raw: 4); - static const dai = CryptoCurrency(title: 'DAI', iconPath: 'assets/images/dai_icon.png', tag: 'ETH', name: 'Dai', raw: 5); - static const dash = CryptoCurrency(title: 'DASH', iconPath: 'assets/images/dash_icon.png', name: 'Dash', raw: 6); - static const eos = CryptoCurrency(title: 'EOS', iconPath: 'assets/images/eos_icon.png', name: 'EOS', raw: 7); - static const eth = CryptoCurrency(title: 'ETH', iconPath: 'assets/images/eth_icon.png', name: 'Ethereum', raw: 8); - static const ltc = CryptoCurrency(title: 'LTC', iconPath: 'assets/images/litecoin-ltc_icon.png', name: 'Litecoin', raw: 9); - static const nano = CryptoCurrency(title: 'NANO', raw: 10); - static const trx = CryptoCurrency(title: 'TRX', iconPath: 'assets/images/trx_icon.png', name: 'TRON', raw: 11); - static const usdt = CryptoCurrency(title: 'USDT', iconPath: 'assets/images/usdt_icon.png', tag: 'OMNI', name: 'USDT', raw: 12); - static const usdterc20 = CryptoCurrency(title: 'USDT', iconPath: 'assets/images/usdterc20_icon.png', tag: 'ETH', name: 'USDT', raw: 13); - static const xlm = CryptoCurrency(title: 'XLM', iconPath: 'assets/images/xlm_icon.png', name: 'Stellar', raw: 14); - static const xrp = CryptoCurrency(title: 'XRP', iconPath: 'assets/images/xrp_icon.png', name: 'Ripple', raw: 15); - static const xhv = CryptoCurrency(title: 'XHV', iconPath: 'assets/images/xhv_logo.png', name: 'Haven Protocol', raw: 16); + static const havenCurrencies = [ + xag, + xau, + xaud, + xbtc, + xcad, + xchf, + xcny, + xeur, + xgbp, + xjpy, + xnok, + xnzd, + xusd, + ]; - static const xag = CryptoCurrency(title: 'XAG', tag: 'XHV', raw: 17); - static const xau = CryptoCurrency(title: 'XAU', tag: 'XHV', raw: 18); - static const xaud = CryptoCurrency(title: 'XAUD', tag: 'XHV', raw: 19); - static const xbtc = CryptoCurrency(title: 'XBTC', tag: 'XHV', raw: 20); - static const xcad = CryptoCurrency(title: 'XCAD', tag: 'XHV', raw: 21); - static const xchf = CryptoCurrency(title: 'XCHF', tag: 'XHV', raw: 22); - static const xcny = CryptoCurrency(title: 'XCNY', tag: 'XHV', raw: 23); - static const xeur = CryptoCurrency(title: 'XEUR', tag: 'XHV', raw: 24); - static const xgbp = CryptoCurrency(title: 'XGBP', tag: 'XHV', raw: 25); - static const xjpy = CryptoCurrency(title: 'XJPY', tag: 'XHV', raw: 26); - static const xnok = CryptoCurrency(title: 'XNOK', tag: 'XHV', raw: 27); - static const xnzd = CryptoCurrency(title: 'XNZD', tag: 'XHV', raw: 28); - static const xusd = CryptoCurrency(title: 'XUSD', tag: 'XHV', raw: 29); + static const xmr = CryptoCurrency(title: 'XMR', iconPath: 'assets/images/monero_icon.png', fullName: 'Monero', raw: 0, name: 'xmr'); + static const ada = CryptoCurrency(title: 'ADA', iconPath: 'assets/images/ada_icon.png', fullName: 'Cardano', raw: 1, name: 'ada'); + static const bch = CryptoCurrency(title: 'BCH', iconPath: 'assets/images/bch_icon.png',fullName: 'Bitcoin Cash', raw: 2, name: 'bch'); + static const bnb = CryptoCurrency(title: 'BNB', iconPath: 'assets/images/bnb_icon.png', tag: 'BSC', fullName: 'Binance Coin', raw: 3, name: 'bnb'); + static const btc = CryptoCurrency(title: 'BTC', iconPath: 'assets/images/btc.png', fullName: 'Bitcoin', raw: 4, name: 'btc'); + static const dai = CryptoCurrency(title: 'DAI', iconPath: 'assets/images/dai_icon.png', tag: 'ETH', fullName: 'Dai', raw: 5, name: 'dai'); + static const dash = CryptoCurrency(title: 'DASH', iconPath: 'assets/images/dash_icon.png', fullName: 'Dash', raw: 6, name: 'dash'); + static const eos = CryptoCurrency(title: 'EOS', iconPath: 'assets/images/eos_icon.png', fullName: 'EOS', raw: 7, name: 'eos'); + static const eth = CryptoCurrency(title: 'ETH', iconPath: 'assets/images/eth_icon.png', fullName: 'Ethereum', raw: 8, name: 'eth'); + static const ltc = CryptoCurrency(title: 'LTC', iconPath: 'assets/images/litecoin-ltc_icon.png', fullName: 'Litecoin', raw: 9, name: 'ltc'); + static const nano = CryptoCurrency(title: 'NANO', raw: 10, name: 'nano'); + static const trx = CryptoCurrency(title: 'TRX', iconPath: 'assets/images/trx_icon.png', fullName: 'TRON', raw: 11, name: 'trx'); + static const usdt = CryptoCurrency(title: 'USDT', iconPath: 'assets/images/usdt_icon.png', tag: 'OMNI', fullName: 'USDT', raw: 12, name: 'usdt'); + static const usdterc20 = CryptoCurrency(title: 'USDT', iconPath: 'assets/images/usdterc20_icon.png', tag: 'ETH', fullName: 'USDT', raw: 13, name: 'usdterc20'); + static const xlm = CryptoCurrency(title: 'XLM', iconPath: 'assets/images/xlm_icon.png', fullName: 'Stellar', raw: 14, name: 'xlm'); + static const xrp = CryptoCurrency(title: 'XRP', iconPath: 'assets/images/xrp_icon.png', fullName: 'Ripple', raw: 15, name: 'xrp'); + static const xhv = CryptoCurrency(title: 'XHV', iconPath: 'assets/images/xhv_logo.png', fullName: 'Haven Protocol', raw: 16, name: 'xhv'); - static const ape = CryptoCurrency(title: 'APE', iconPath: 'assets/images/ape_icon.png', tag: 'ETH', raw: 30); - static const avaxc = CryptoCurrency(title: 'AVAX', iconPath: 'assets/images/avaxc_icon.png', tag: 'C-CHAIN', raw: 31); - static const btt = CryptoCurrency(title: 'BTT', iconPath: 'assets/images/btt_icon.png', raw: 32); - static const bttbsc = CryptoCurrency(title: 'BTT', iconPath: 'assets/images/bttbsc_icon.png', tag: 'BSC', raw: 33); - static const doge = CryptoCurrency(title: 'DOGE', iconPath: 'assets/images/doge_icon.png', raw: 34); - static const firo = CryptoCurrency(title: 'FIRO', iconPath: 'assets/images/firo_icon.png', raw: 35); - static const usdttrc20 = CryptoCurrency(title: 'USDT', iconPath: 'assets/images/usdttrc20_icon.png', tag: 'TRX', raw: 36); - static const hbar = CryptoCurrency(title: 'HBAR', iconPath: 'assets/images/hbar_icon.png', raw: 37); - static const sc = CryptoCurrency(title: 'SC', iconPath: 'assets/images/sc_icon.png', raw: 38); - static const sol = CryptoCurrency(title: 'SOL', iconPath: 'assets/images/sol_icon.png', raw: 39); - static const usdc = CryptoCurrency(title: 'USDC', iconPath: 'assets/images/usdc_icon.png', tag: 'ETH', raw: 40); - static const usdcsol = CryptoCurrency(title: 'USDC', iconPath: 'assets/images/usdcsol_icon.png', tag: 'SOL', raw: 41); - static const zaddr = CryptoCurrency(title: 'ZZEC', tag: 'ZEC', name: 'Shielded Zcash', iconPath: 'assets/images/zaddr_icon.png', raw: 42); - static const zec = CryptoCurrency(title: 'TZEC', tag: 'ZEC', name: 'Transparent Zcash', iconPath: 'assets/images/zec_icon.png', raw: 43); - static const zen = CryptoCurrency(title: 'ZEN', iconPath: 'assets/images/zen_icon.png', raw: 44); - static const xvg = CryptoCurrency(title: 'XVG', name: 'Verge', iconPath: 'assets/images/xvg_icon.png', raw: 45); + static const xag = CryptoCurrency(title: 'XAG', tag: 'XHV', raw: 17, name: 'xag'); + static const xau = CryptoCurrency(title: 'XAU', tag: 'XHV', raw: 18, name: 'xau'); + static const xaud = CryptoCurrency(title: 'XAUD', tag: 'XHV', raw: 19, name: 'xaud'); + static const xbtc = CryptoCurrency(title: 'XBTC', tag: 'XHV', raw: 20, name: 'xbtc'); + static const xcad = CryptoCurrency(title: 'XCAD', tag: 'XHV', raw: 21, name: 'xcad'); + static const xchf = CryptoCurrency(title: 'XCHF', tag: 'XHV', raw: 22, name: 'xchf'); + static const xcny = CryptoCurrency(title: 'XCNY', tag: 'XHV', raw: 23, name: 'xcny'); + static const xeur = CryptoCurrency(title: 'XEUR', tag: 'XHV', raw: 24, name: 'xeur'); + static const xgbp = CryptoCurrency(title: 'XGBP', tag: 'XHV', raw: 25, name: 'xgbp'); + static const xjpy = CryptoCurrency(title: 'XJPY', tag: 'XHV', raw: 26, name: 'xjpy'); + static const xnok = CryptoCurrency(title: 'XNOK', tag: 'XHV', raw: 27, name: 'xnok'); + static const xnzd = CryptoCurrency(title: 'XNZD', tag: 'XHV', raw: 28, name: 'xnzd'); + static const xusd = CryptoCurrency(title: 'XUSD', tag: 'XHV', raw: 29, name: 'xusd'); - static const usdcpoly = CryptoCurrency(title: 'USDC', iconPath: 'assets/images/usdc_icon.png', tag: 'POLY', raw: 46); - static const dcr = CryptoCurrency(title: 'DCR', iconPath: 'assets/images/dcr_icon.png', raw: 47); - static const husd = CryptoCurrency(title: 'HUSD', iconPath: 'assets/images/husd_icon.png', tag: 'ETH', raw: 48); - static const kmd = CryptoCurrency(title: 'KMD', iconPath: 'assets/images/kmd_icon.png', raw: 49); - static const mana = CryptoCurrency(title: 'MANA', iconPath: 'assets/images/mana_icon.png', tag: 'ETH', raw: 50); - static const maticpoly = CryptoCurrency(title: 'MATIC', iconPath: 'assets/images/matic_icon.png', tag: 'POLY', raw: 51); - static const matic = CryptoCurrency(title: 'MATIC', iconPath: 'assets/images/matic_icon.png', tag: 'ETH', raw: 52); - static const mkr = CryptoCurrency(title: 'MKR', iconPath: 'assets/images/mkr_icon.png', tag: 'ETH', raw: 53); - static const near = CryptoCurrency(title: 'NEAR', iconPath: 'assets/images/near_icon.png', raw: 54); - static const oxt = CryptoCurrency(title: 'OXT', iconPath: 'assets/images/oxt_icon.png', tag: 'ETH', raw: 55); - static const paxg = CryptoCurrency(title: 'PAXG', iconPath: 'assets/images/paxg_icon.png', tag: 'ETH', raw: 56); - static const pivx = CryptoCurrency(title: 'PIVX', iconPath: 'assets/images/pivx_icon.png', raw: 57); - static const rune = CryptoCurrency(title: 'RUNE', iconPath: 'assets/images/rune_icon.png', raw: 58); - static const rvn = CryptoCurrency(title: 'RVN', iconPath: 'assets/images/rvn_icon.png', raw: 59); - static const scrt = CryptoCurrency(title: 'SCRT', iconPath: 'assets/images/scrt_icon.png', raw: 60); - static const uni = CryptoCurrency(title: 'UNI', iconPath: 'assets/images/uni_icon.png', tag: 'ETH', raw: 61); - static const stx = CryptoCurrency(title: 'STX', iconPath: 'assets/images/stx_icon.png', raw: 62); + static const ape = CryptoCurrency(title: 'APE', iconPath: 'assets/images/ape_icon.png', tag: 'ETH', raw: 30, name: 'ape'); + static const avaxc = CryptoCurrency(title: 'AVAX', iconPath: 'assets/images/avaxc_icon.png', tag: 'C-CHAIN', raw: 31, name: 'avaxc'); + static const btt = CryptoCurrency(title: 'BTT', iconPath: 'assets/images/btt_icon.png', raw: 32, name: 'btt'); + static const bttc = CryptoCurrency(title: 'BTTC', iconPath: 'assets/images/bttbsc_icon.png',fullName: 'BitTorrent-NEW (Binance Smart Chain)', tag: 'BSC', raw: 33, name: 'bttc'); + static const doge = CryptoCurrency(title: 'DOGE', iconPath: 'assets/images/doge_icon.png', raw: 34, name: 'doge'); + static const firo = CryptoCurrency(title: 'FIRO', iconPath: 'assets/images/firo_icon.png', raw: 35, name: 'firo'); + static const usdttrc20 = CryptoCurrency(title: 'USDT', iconPath: 'assets/images/usdttrc20_icon.png', tag: 'TRX', raw: 36, name: 'usdttrc20'); + static const hbar = CryptoCurrency(title: 'HBAR', iconPath: 'assets/images/hbar_icon.png', raw: 37, name: 'hbar'); + static const sc = CryptoCurrency(title: 'SC', iconPath: 'assets/images/sc_icon.png', raw: 38, name: 'sc'); + static const sol = CryptoCurrency(title: 'SOL', iconPath: 'assets/images/sol_icon.png', raw: 39, name: 'sol'); + static const usdc = CryptoCurrency(title: 'USDC', iconPath: 'assets/images/usdc_icon.png', tag: 'ETH', raw: 40, name: 'usdc'); + static const usdcsol = CryptoCurrency(title: 'USDC', iconPath: 'assets/images/usdcsol_icon.png', tag: 'SOL', raw: 41, name: 'usdcsol'); + static const zaddr = CryptoCurrency(title: 'ZZEC', tag: 'ZEC', fullName: 'Shielded Zcash', iconPath: 'assets/images/zaddr_icon.png', raw: 42, name: 'zaddr'); + static const zec = CryptoCurrency(title: 'TZEC', tag: 'ZEC', fullName: 'Transparent Zcash', iconPath: 'assets/images/zec_icon.png', raw: 43, name: 'zec'); + static const zen = CryptoCurrency(title: 'ZEN', iconPath: 'assets/images/zen_icon.png', raw: 44, name: 'zen'); + static const xvg = CryptoCurrency(title: 'XVG', fullName: 'Verge', iconPath: 'assets/images/xvg_icon.png', raw: 45, name: 'xvg'); + static const usdcpoly = CryptoCurrency(title: 'USDC', iconPath: 'assets/images/usdc_icon.png', tag: 'POLY', raw: 46, name: 'usdcpoly'); + static const dcr = CryptoCurrency(title: 'DCR', iconPath: 'assets/images/dcr_icon.png', raw: 47, name: 'dcr'); + static const kmd = CryptoCurrency(title: 'KMD', iconPath: 'assets/images/kmd_icon.png', raw: 48, name: 'kmd'); + static const mana = CryptoCurrency(title: 'MANA', iconPath: 'assets/images/mana_icon.png', tag: 'ETH', raw: 49, name: 'mana'); + static const maticpoly = CryptoCurrency(title: 'MATIC', iconPath: 'assets/images/matic_icon.png', tag: 'POLY', raw: 50, name: 'maticpoly'); + static const matic = CryptoCurrency(title: 'MATIC', iconPath: 'assets/images/matic_icon.png', tag: 'ETH', raw: 51, name: 'matic'); + static const mkr = CryptoCurrency(title: 'MKR', iconPath: 'assets/images/mkr_icon.png', tag: 'ETH', raw: 52, name: 'mkr'); + static const near = CryptoCurrency(title: 'NEAR', iconPath: 'assets/images/near_icon.png', raw: 53, name: 'near'); + static const oxt = CryptoCurrency(title: 'OXT', iconPath: 'assets/images/oxt_icon.png', tag: 'ETH', raw: 54, name: 'oxt'); + static const paxg = CryptoCurrency(title: 'PAXG', iconPath: 'assets/images/paxg_icon.png', tag: 'ETH', raw: 55, name: 'paxg'); + static const pivx = CryptoCurrency(title: 'PIVX', iconPath: 'assets/images/pivx_icon.png', raw: 56, name: 'pivx'); + static const rune = CryptoCurrency(title: 'RUNE', iconPath: 'assets/images/rune_icon.png', raw: 57, name: 'rune'); + static const rvn = CryptoCurrency(title: 'RVN', iconPath: 'assets/images/rvn_icon.png', raw: 58, name: 'rvn'); + static const scrt = CryptoCurrency(title: 'SCRT', iconPath: 'assets/images/scrt_icon.png', raw: 59, name: 'scrt'); + static const uni = CryptoCurrency(title: 'UNI', iconPath: 'assets/images/uni_icon.png', tag: 'ETH', raw: 60, name: 'uni'); + static const stx = CryptoCurrency(title: 'STX', iconPath: 'assets/images/stx_icon.png', raw: 61, name: 'stx'); + static final Map _rawCurrencyMap = + [...all, ...havenCurrencies].fold>({}, (acc, item) { + acc.addAll({item.raw: item}); + return acc; + }); + + static final Map _nameCurrencyMap = + [...all, ...havenCurrencies].fold>({}, (acc, item) { + acc.addAll({item.name: item}); + return acc; + }); static CryptoCurrency deserialize({required int raw}) { - switch (raw) { - case 0: - return CryptoCurrency.xmr; - case 1: - return CryptoCurrency.ada; - case 2: - return CryptoCurrency.bch; - case 3: - return CryptoCurrency.bnb; - case 4: - return CryptoCurrency.btc; - case 5: - return CryptoCurrency.dai; - case 6: - return CryptoCurrency.dash; - case 7: - return CryptoCurrency.eos; - case 8: - return CryptoCurrency.eth; - case 9: - return CryptoCurrency.ltc; - case 10: - return CryptoCurrency.nano; - case 11: - return CryptoCurrency.trx; - case 12: - return CryptoCurrency.usdt; - case 13: - return CryptoCurrency.usdterc20; - case 14: - return CryptoCurrency.xlm; - case 15: - return CryptoCurrency.xrp; - case 16: - return CryptoCurrency.xhv; - case 17: - return CryptoCurrency.xag; - case 18: - return CryptoCurrency.xau; - case 19: - return CryptoCurrency.xaud; - case 20: - return CryptoCurrency.xbtc; - case 21: - return CryptoCurrency.xcad; - case 22: - return CryptoCurrency.xchf; - case 23: - return CryptoCurrency.xcny; - case 24: - return CryptoCurrency.xeur; - case 25: - return CryptoCurrency.xgbp; - case 26: - return CryptoCurrency.xjpy; - case 27: - return CryptoCurrency.xnok; - case 28: - return CryptoCurrency.xnzd; - case 29: - return CryptoCurrency.xusd; - case 30: - return CryptoCurrency.ape; - case 31: - return CryptoCurrency.avaxc; - case 32: - return CryptoCurrency.btt; - case 33: - return CryptoCurrency.bttbsc; - case 34: - return CryptoCurrency.doge; - case 35: - return CryptoCurrency.firo; - case 36: - return CryptoCurrency.usdttrc20; - case 37: - return CryptoCurrency.hbar; - case 38: - return CryptoCurrency.sc; - case 39: - return CryptoCurrency.sol; - case 40: - return CryptoCurrency.usdc; - case 41: - return CryptoCurrency.usdcsol; - case 42: - return CryptoCurrency.zaddr; - case 43: - return CryptoCurrency.zec; - case 44: - return CryptoCurrency.zen; - case 45: - return CryptoCurrency.xvg; - case 46: - return CryptoCurrency.usdcpoly; - case 47: - return CryptoCurrency.dcr; - case 48: - return CryptoCurrency.husd; - case 49: - return CryptoCurrency.kmd; - case 50: - return CryptoCurrency.mana; - case 51: - return CryptoCurrency.maticpoly; - case 52: - return CryptoCurrency.matic; - case 53: - return CryptoCurrency.mkr; - case 54: - return CryptoCurrency.near; - case 55: - return CryptoCurrency.oxt; - case 56: - return CryptoCurrency.paxg; - case 57: - return CryptoCurrency.pivx; - case 58: - return CryptoCurrency.rune; - case 59: - return CryptoCurrency.rvn; - case 60: - return CryptoCurrency.scrt; - case 61: - return CryptoCurrency.uni; - case 62: - return CryptoCurrency.stx; - default: - throw Exception('Unexpected token: $raw for CryptoCurrency deserialize'); + + if (CryptoCurrency._rawCurrencyMap[raw] == null) { + final s = 'Unexpected token: $raw for CryptoCurrency deserialize'; + throw ArgumentError.value(raw, 'raw', s); } + return CryptoCurrency._rawCurrencyMap[raw]!; } - static CryptoCurrency fromString(String raw) { - switch (raw.toLowerCase()) { - case 'xmr': - return CryptoCurrency.xmr; - case 'ada': - return CryptoCurrency.ada; - case 'bch': - return CryptoCurrency.bch; - case 'bnbmainnet': - return CryptoCurrency.bnb; - case 'btc': - return CryptoCurrency.btc; - case 'dai': - return CryptoCurrency.dai; - case 'dash': - return CryptoCurrency.dash; - case 'eos': - return CryptoCurrency.eos; - case 'eth': - return CryptoCurrency.eth; - case 'ltc': - return CryptoCurrency.ltc; - case 'nano': - return CryptoCurrency.nano; - case 'trx': - return CryptoCurrency.trx; - case 'usdc': - return CryptoCurrency.usdc; - case 'usdterc20': - return CryptoCurrency.usdterc20; - case 'xlm': - return CryptoCurrency.xlm; - case 'xrp': - return CryptoCurrency.xrp; - case 'xhv': - return CryptoCurrency.xhv; - case 'xag': - return CryptoCurrency.xag; - case 'xau': - return CryptoCurrency.xau; - case 'xaud': - return CryptoCurrency.xaud; - case 'xbtc': - return CryptoCurrency.xbtc; - case 'xcad': - return CryptoCurrency.xcad; - case 'xchf': - return CryptoCurrency.xchf; - case 'xcny': - return CryptoCurrency.xcny; - case 'xeur': - return CryptoCurrency.xeur; - case 'xgbp': - return CryptoCurrency.xgbp; - case 'xjpy': - return CryptoCurrency.xjpy; - case 'xnok': - return CryptoCurrency.xnok; - case 'xnzd': - return CryptoCurrency.xnzd; - case 'xusd': - return CryptoCurrency.xusd; - case 'ape': - return CryptoCurrency.ape; - case 'avax': - return CryptoCurrency.avaxc; - case 'btt': - return CryptoCurrency.btt; - case 'bttbsc': - return CryptoCurrency.bttbsc; - case 'doge': - return CryptoCurrency.doge; - case 'firo': - return CryptoCurrency.firo; - case 'usdttrc20': - return CryptoCurrency.usdttrc20; - case 'hbar': - return CryptoCurrency.hbar; - case 'sc': - return CryptoCurrency.sc; - case 'sol': - return CryptoCurrency.sol; - case 'usdt': - return CryptoCurrency.usdt; - case 'usdcsol': - return CryptoCurrency.usdcsol; - case 'zaddr': - return CryptoCurrency.zaddr; - case 'zec': - return CryptoCurrency.zec; - case 'zen': - return CryptoCurrency.zen; - case 'xvg': - return CryptoCurrency.xvg; - case 'usdcpoly': - return CryptoCurrency.usdcpoly; - case 'dcr': - return CryptoCurrency.dcr; - case 'husd': - return CryptoCurrency.husd; - case 'kmd': - return CryptoCurrency.kmd; - case 'mana': - return CryptoCurrency.mana; - case 'maticpoly': - return CryptoCurrency.maticpoly; - case 'matic': - return CryptoCurrency.matic; - case 'mkr': - return CryptoCurrency.mkr; - case 'near': - return CryptoCurrency.near; - case 'oxt': - return CryptoCurrency.oxt; - case 'paxg': - return CryptoCurrency.paxg; - case 'pivx': - return CryptoCurrency.pivx; - case 'rune': - return CryptoCurrency.rune; - case 'rvn': - return CryptoCurrency.rvn; - case 'scrt': - return CryptoCurrency.scrt; - case 'uni': - return CryptoCurrency.uni; - case 'stx': - return CryptoCurrency.stx; - default: - throw Exception('Unexpected token: $raw for CryptoCurrency fromString'); + static CryptoCurrency fromString(String name) { + + if (CryptoCurrency._nameCurrencyMap[name.toLowerCase()] == null) { + final s = 'Unexpected token: $name for CryptoCurrency fromString'; + throw ArgumentError.value(name, 'name', s); } + return CryptoCurrency._nameCurrencyMap[name.toLowerCase()]!; } @override diff --git a/lib/core/address_validator.dart b/lib/core/address_validator.dart index 9d7b0e3b5..519cd92a3 100644 --- a/lib/core/address_validator.dart +++ b/lib/core/address_validator.dart @@ -24,7 +24,6 @@ class AddressValidator extends TextValidator { return '[0-9a-zA-Z_]'; case CryptoCurrency.usdc: case CryptoCurrency.usdcpoly: - case CryptoCurrency.husd: case CryptoCurrency.ape: case CryptoCurrency.avaxc: case CryptoCurrency.eth: @@ -156,7 +155,7 @@ class AddressValidator extends TextValidator { return [98, 99, 106]; case CryptoCurrency.btt: return [34]; - case CryptoCurrency.bttbsc: + case CryptoCurrency.bttc: return [34]; case CryptoCurrency.doge: return [34]; @@ -181,7 +180,6 @@ class AddressValidator extends TextValidator { case CryptoCurrency.stx: return [40, 41, 42]; case CryptoCurrency.usdcpoly: - case CryptoCurrency.husd: case CryptoCurrency.mana: case CryptoCurrency.matic: case CryptoCurrency.maticpoly: diff --git a/lib/entities/language_service.dart b/lib/entities/language_service.dart index 7dccc59c0..6ef876abd 100644 --- a/lib/entities/language_service.dart +++ b/lib/entities/language_service.dart @@ -18,7 +18,9 @@ class LanguageService { 'uk': 'Українська (Ukrainian)', 'zh': '中文 (Chinese)', 'hr': 'Hrvatski (Croatian)', - 'it': 'Italiano (Italian)' + 'it': 'Italiano (Italian)', + 'th': 'ภาษาไทย (Thai)', + 'ar': 'العربية (Arabic)' }; static const Map localeCountryCode = { @@ -36,7 +38,9 @@ class LanguageService { 'uk': 'ukr', 'zh': 'chn', 'hr': 'hrv', - 'it': 'ita' + 'it': 'ita', + 'th': 'tha', + 'ar': 'sau' }; static final list = {}; diff --git a/lib/exchange/exchange_provider_description.dart b/lib/exchange/exchange_provider_description.dart index f9e359454..2fd231085 100644 --- a/lib/exchange/exchange_provider_description.dart +++ b/lib/exchange/exchange_provider_description.dart @@ -24,6 +24,9 @@ class ExchangeProviderDescription extends EnumerableItem static const simpleSwap = ExchangeProviderDescription(title: 'SimpleSwap', raw: 4, image: 'assets/images/simpleSwap.png'); + static const all = + ExchangeProviderDescription(title: 'All trades', raw: 5, image:''); + static ExchangeProviderDescription deserialize({required int raw}) { switch (raw) { case 0: @@ -36,6 +39,8 @@ class ExchangeProviderDescription extends EnumerableItem return sideShift; case 4: return simpleSwap; + case 5: + return all; default: throw Exception('Unexpected token: $raw for ExchangeProviderDescription deserialize'); } diff --git a/lib/exchange/sideshift/sideshift_exchange_provider.dart b/lib/exchange/sideshift/sideshift_exchange_provider.dart index 98f18f058..59d7964cb 100644 --- a/lib/exchange/sideshift/sideshift_exchange_provider.dart +++ b/lib/exchange/sideshift/sideshift_exchange_provider.dart @@ -27,7 +27,6 @@ class SideShiftExchangeProvider extends ExchangeProvider { static const List _notSupported = [ CryptoCurrency.xhv, CryptoCurrency.dcr, - CryptoCurrency.husd, CryptoCurrency.kmd, CryptoCurrency.mkr, CryptoCurrency.near, @@ -38,6 +37,7 @@ class SideShiftExchangeProvider extends ExchangeProvider { CryptoCurrency.rvn, CryptoCurrency.scrt, CryptoCurrency.stx, + CryptoCurrency.bttc, ]; static List _supportedPairs() { diff --git a/lib/src/screens/contact/contact_list_page.dart b/lib/src/screens/contact/contact_list_page.dart index 7cd7a0157..0065b9281 100644 --- a/lib/src/screens/contact/contact_list_page.dart +++ b/lib/src/screens/contact/contact_list_page.dart @@ -72,10 +72,10 @@ class ContactListPage extends BasePage { dividerThemeColor: Theme.of(context).primaryTextTheme.caption!.decorationColor!, sectionTitleBuilder: (_, int sectionIndex) { - var title = 'Contacts'; + var title = S.current.contact_list_contacts; if (sectionIndex == 0) { - title = 'My wallets'; + title = S.current.contact_list_wallets; } return Container( diff --git a/lib/src/screens/dashboard/widgets/filter_tile.dart b/lib/src/screens/dashboard/widgets/filter_tile.dart index 9a5646ac9..3be96073a 100644 --- a/lib/src/screens/dashboard/widgets/filter_tile.dart +++ b/lib/src/screens/dashboard/widgets/filter_tile.dart @@ -9,12 +9,7 @@ class FilterTile extends StatelessWidget { Widget build(BuildContext context) { return Container( width: double.infinity, - padding: EdgeInsets.only( - top: 18, - bottom: 18, - left: 24, - right: 24 - ), + padding: EdgeInsets.symmetric(vertical: 8.0, horizontal: 24.0), child: child, ); } diff --git a/lib/src/screens/dashboard/widgets/filter_widget.dart b/lib/src/screens/dashboard/widgets/filter_widget.dart index 98d5add81..17df0bc5e 100644 --- a/lib/src/screens/dashboard/widgets/filter_widget.dart +++ b/lib/src/screens/dashboard/widgets/filter_widget.dart @@ -1,25 +1,26 @@ import 'dart:ui'; import 'package:cake_wallet/palette.dart'; import 'package:cake_wallet/src/screens/dashboard/widgets/filter_tile.dart'; +import 'package:cake_wallet/src/widgets/section_divider.dart'; +import 'package:cake_wallet/src/widgets/standard_checkbox.dart'; import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:cake_wallet/src/widgets/alert_background.dart'; import 'package:cake_wallet/src/widgets/alert_close_button.dart'; -import 'package:cake_wallet/src/widgets/checkbox_widget.dart'; import 'package:cake_wallet/generated/i18n.dart'; +import 'package:flutter_mobx/flutter_mobx.dart'; //import 'package:date_range_picker/date_range_picker.dart' as date_rage_picker; class FilterWidget extends StatelessWidget { FilterWidget({required this.dashboardViewModel}); final DashboardViewModel dashboardViewModel; - final backVector = Image.asset('assets/images/back_vector.png', - color: Palette.darkBlueCraiola - ); + final closeIcon = Image.asset('assets/images/close.png', color: Palette.darkBlueCraiola); @override Widget build(BuildContext context) { + const sectionDivider = const SectionDivider(); return AlertBackground( child: Stack( alignment: Alignment.center, @@ -27,129 +28,82 @@ class FilterWidget extends StatelessWidget { Column( mainAxisSize: MainAxisSize.min, children: [ - Text( - S.of(context).filters, - style: TextStyle( - color: Colors.white, - fontSize: 18, - fontWeight: FontWeight.bold, - fontFamily: 'Lato', - decoration: TextDecoration.none, - ), - ), Padding( - padding: EdgeInsets.only( - left: 24, - right: 24, - top: 24 - ), + padding: EdgeInsets.only(left: 24, right: 24, top: 24), child: ClipRRect( - borderRadius: BorderRadius.all(Radius.circular(14)), + borderRadius: BorderRadius.all(Radius.circular(24)), child: Container( color: Theme.of(context).textTheme!.bodyText1!.decorationColor!, - child: ListView.separated( - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), - itemCount: dashboardViewModel.filterItems.length, - separatorBuilder: (context, _) => Container( - height: 1, - color: Theme.of(context).accentTextTheme!.subtitle1!.backgroundColor!, + child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + Padding( + padding: EdgeInsets.all(24.0), + child: Text( + S.of(context).filter_by, + style: TextStyle( + color: Theme.of(context).primaryTextTheme.overline!.color!, + fontSize: 16, + fontFamily: 'Lato', + decoration: TextDecoration.none, + ), + ), ), - itemBuilder: (_, index1) { - final title = dashboardViewModel.filterItems.keys.elementAt(index1); - final section = dashboardViewModel.filterItems.values.elementAt(index1); - - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: EdgeInsets.only( - top: 20, - left: 24, - right: 24 - ), - child: Text( - title, - style: TextStyle( - color: Theme.of(context).accentTextTheme!.subtitle1!.color!, - fontSize: 16, - fontWeight: FontWeight.w500, - fontFamily: 'Lato', - decoration: TextDecoration.none + sectionDivider, + ListView.separated( + padding: EdgeInsets.zero, + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: dashboardViewModel.filterItems.length, + separatorBuilder: (context, _) => sectionDivider, + itemBuilder: (_, index1) { + final title = dashboardViewModel.filterItems.keys.elementAt(index1); + final section = dashboardViewModel.filterItems.values.elementAt(index1); + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.only(top: 20, left: 24, right: 24), + child: Text( + title, + style: TextStyle( + color: Theme.of(context).primaryTextTheme!.headline6!.color!, + fontSize: 16, + fontFamily: 'Lato', + fontWeight: FontWeight.bold, + decoration: TextDecoration.none), ), ), - ), - ListView.separated( - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), - itemCount: section.length, - separatorBuilder: (context, _) => Container( - height: 1, - padding: EdgeInsets.only(left: 24), - color: Theme.of(context).textTheme!.bodyText1!.decorationColor!, - child: Container( - height: 1, - color: Theme.of(context).accentTextTheme!.subtitle1!.backgroundColor!, - ), - ), - itemBuilder: (_, index2) { - - final item = section[index2]; - final content = item.onChanged != null - ? CheckboxWidget( - value: item.value(), - caption: item.caption, - onChanged: item.onChanged - ) - : GestureDetector( - onTap: () async { - //final List picked = - //await date_rage_picker.showDatePicker( - // context: context, - // initialFirstDate: DateTime.now() - // .subtract(Duration(days: 1)), - // initialLastDate: (DateTime.now()), - // firstDate: DateTime(2015), - // lastDate: DateTime.now() - // .add(Duration(days: 1))); - - //if (picked != null && picked.length == 2) { - // dashboardViewModel.transactionFilterStore - // .changeStartDate(picked.first); - // dashboardViewModel.transactionFilterStore - // .changeEndDate(picked.last); - //} - }, - child: Padding( - padding: EdgeInsets.only(left: 32), - child: Text( - item.caption, - style: TextStyle( - color: Theme.of(context).primaryTextTheme!.headline6!.color!, - fontSize: 18, - fontFamily: 'Lato', - fontWeight: FontWeight.w500, - decoration: TextDecoration.none - ), - ), - ), - ); - - return FilterTile(child: content); - }, - ) - ], - ); - }, - ), + ListView.builder( + padding: EdgeInsets.symmetric(vertical: 8.0), + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: section.length, + itemBuilder: (_, index2) { + final item = section[index2]; + final content = Observer( + builder: (_) => StandardCheckbox( + value: item.value(), + caption: item.caption, + gradientBackground: true, + borderColor: Theme.of(context).dividerColor, + iconColor: Colors.white, + onChanged: (value) => item.onChanged(), + )); + return FilterTile(child: content); + }, + ) + ], + ); + }, + ), + ]), ), ), ), ], ), - AlertCloseButton(image: backVector) + AlertCloseButton(image: closeIcon) ], ), ); } -} \ No newline at end of file +} diff --git a/lib/src/screens/exchange/exchange_page.dart b/lib/src/screens/exchange/exchange_page.dart index 744848156..7b73a134b 100644 --- a/lib/src/screens/exchange/exchange_page.dart +++ b/lib/src/screens/exchange/exchange_page.dart @@ -40,7 +40,6 @@ class ExchangePage extends BasePage { final ExchangeViewModel exchangeViewModel; final depositKey = GlobalKey(); final receiveKey = GlobalKey(); - final checkBoxKey = GlobalKey(); final _formKey = GlobalKey(); final _depositAmountFocus = FocusNode(); final _depositAddressFocus = FocusNode(); @@ -339,7 +338,6 @@ class ExchangePage extends BasePage { mainAxisAlignment: MainAxisAlignment.start, children: [ StandardCheckbox( - key: checkBoxKey, value: exchangeViewModel.isFixedRateMode, caption: S.of(context).fixed_rate, onChanged: (value) => @@ -682,12 +680,6 @@ class ExchangePage extends BasePage { } }); - reaction((_) => exchangeViewModel.isFixedRateMode, (bool value) { - if (checkBoxKey.currentState!.value != exchangeViewModel.isFixedRateMode) { - checkBoxKey.currentState!.value = exchangeViewModel.isFixedRateMode; - } - }); - depositAddressController.addListener( () => exchangeViewModel.depositAddress = depositAddressController.text); diff --git a/lib/src/screens/exchange/widgets/currency_picker.dart b/lib/src/screens/exchange/widgets/currency_picker.dart index 9f8b9e493..b785378c5 100644 --- a/lib/src/screens/exchange/widgets/currency_picker.dart +++ b/lib/src/screens/exchange/widgets/currency_picker.dart @@ -56,7 +56,7 @@ class CurrencyPickerState extends State { .where((element) => (element.title != null ? element.title.toLowerCase().contains(subString.toLowerCase()) : false) || (element.tag != null ? element.tag!.toLowerCase().contains(subString.toLowerCase()) : false) || - (element.name != null ? element.name!.toLowerCase().contains(subString.toLowerCase()) : false)) + (element.fullName != null ? element.fullName!.toLowerCase().contains(subString.toLowerCase()) : false)) .toList(); return; } diff --git a/lib/src/screens/exchange_trade/exchange_trade_page.dart b/lib/src/screens/exchange_trade/exchange_trade_page.dart index 7c9fc1be7..5aacf3f1f 100644 --- a/lib/src/screens/exchange_trade/exchange_trade_page.dart +++ b/lib/src/screens/exchange_trade/exchange_trade_page.dart @@ -8,7 +8,7 @@ import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/core/execution_state.dart'; import 'package:cake_wallet/src/screens/exchange_trade/information_page.dart'; import 'package:cake_wallet/src/screens/send/widgets/confirm_sending_alert.dart'; -import 'package:cake_wallet/src/widgets/standart_list_row.dart'; +import 'package:cake_wallet/src/widgets/list_row.dart'; import 'package:cake_wallet/utils/show_bar.dart'; import 'package:cake_wallet/utils/show_pop_up.dart'; import 'package:cake_wallet/view_model/exchange/exchange_trade_view_model.dart'; @@ -194,7 +194,7 @@ class ExchangeTradeState extends State { final item = widget.exchangeTradeViewModel.items[index]; final value = item.data ?? fetchingLabel; - final content = StandartListRow( + final content = ListRow( title: item.title, value: value, valueFontSize: 14, diff --git a/lib/src/screens/monero_accounts/monero_account_list_page.dart b/lib/src/screens/monero_accounts/monero_account_list_page.dart index 99134369e..7fe15948f 100644 --- a/lib/src/screens/monero_accounts/monero_account_list_page.dart +++ b/lib/src/screens/monero_accounts/monero_account_list_page.dart @@ -1,4 +1,5 @@ import 'dart:ui'; +import 'package:cake_wallet/src/widgets/section_divider.dart'; import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; @@ -84,10 +85,7 @@ class MoneroAccountListPage extends StatelessWidget { padding: EdgeInsets.zero, controller: controller, separatorBuilder: (context, index) => - Container( - height: 1, - color: Theme.of(context).dividerColor, - ), + const SectionDivider(), itemCount: accounts.length ?? 0, itemBuilder: (context, index) { final account = accounts[index]; diff --git a/lib/src/screens/order_details/order_details_page.dart b/lib/src/screens/order_details/order_details_page.dart index 2e6ece509..0784c7008 100644 --- a/lib/src/screens/order_details/order_details_page.dart +++ b/lib/src/screens/order_details/order_details_page.dart @@ -7,7 +7,7 @@ import 'package:flutter/services.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/src/screens/base_page.dart'; -import 'package:cake_wallet/src/widgets/standart_list_row.dart'; +import 'package:cake_wallet/src/widgets/list_row.dart'; import 'package:cake_wallet/src/screens/trade_details/track_trade_list_item.dart'; class OrderDetailsPage extends BasePage { @@ -57,7 +57,7 @@ class OrderDetailsPageBodyState extends State { if (item is TrackTradeListItem) { return GestureDetector( onTap: item.onTap, - child: StandartListRow( + child: ListRow( title: '${item.title}', value: '${item.value}')); } else { return GestureDetector( @@ -65,7 +65,7 @@ class OrderDetailsPageBodyState extends State { Clipboard.setData(ClipboardData(text: '${item.value}')); showBar(context, S.of(context).copied_to_clipboard); }, - child: StandartListRow( + child: ListRow( title: '${item.title}', value: '${item.value}')); } }); diff --git a/lib/src/screens/receive/receive_page.dart b/lib/src/screens/receive/receive_page.dart index 6f6b4e31c..71ee578a0 100644 --- a/lib/src/screens/receive/receive_page.dart +++ b/lib/src/screens/receive/receive_page.dart @@ -1,4 +1,5 @@ import 'package:cake_wallet/src/widgets/keyboard_done_button.dart'; +import 'package:cake_wallet/src/widgets/section_divider.dart'; import 'package:cake_wallet/themes/theme_base.dart'; import 'package:cake_wallet/utils/show_pop_up.dart'; import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart'; @@ -135,8 +136,7 @@ class ReceivePage extends BasePage { Observer( builder: (_) => ListView.separated( padding: EdgeInsets.all(0), - separatorBuilder: (context, _) => Container( - height: 1, color: Theme.of(context).dividerColor), + separatorBuilder: (context, _) => const SectionDivider(), shrinkWrap: true, physics: NeverScrollableScrollPhysics(), itemCount: addressListViewModel.items.length, diff --git a/lib/src/screens/send/widgets/choose_yat_address_alert.dart b/lib/src/screens/send/widgets/choose_yat_address_alert.dart index 93785743d..5d937a571 100644 --- a/lib/src/screens/send/widgets/choose_yat_address_alert.dart +++ b/lib/src/screens/send/widgets/choose_yat_address_alert.dart @@ -1,4 +1,5 @@ import 'package:cake_wallet/src/widgets/cake_scrollbar.dart'; +import 'package:cake_wallet/src/widgets/section_divider.dart'; import 'package:flutter/material.dart'; import 'package:cake_wallet/src/widgets/base_alert_dialog.dart'; @@ -70,10 +71,7 @@ class ChooseYatAddressButtonsState extends State { controller: controller, padding: EdgeInsets.all(0), itemCount: itemCount, - separatorBuilder: (_, __) => Container( - height: 1, - color: Theme.of(context).dividerColor, - ), + separatorBuilder: (_, __) => const SectionDivider(), itemBuilder: (context, index) { final address = addresses[index]; diff --git a/lib/src/screens/settings/widgets/settings_switcher_cell.dart b/lib/src/screens/settings/widgets/settings_switcher_cell.dart index fc99f3297..c1d7fa150 100644 --- a/lib/src/screens/settings/widgets/settings_switcher_cell.dart +++ b/lib/src/screens/settings/widgets/settings_switcher_cell.dart @@ -1,6 +1,6 @@ import 'package:flutter/cupertino.dart'; import 'package:cake_wallet/src/widgets/standard_list.dart'; -import 'package:cake_wallet/src/widgets/standart_switch.dart'; +import 'package:cake_wallet/src/widgets/standard_switch.dart'; class SettingsSwitcherCell extends StandardListRow { SettingsSwitcherCell( @@ -11,6 +11,6 @@ class SettingsSwitcherCell extends StandardListRow { final void Function(BuildContext context, bool value)? onValueChange; @override - Widget buildTrailing(BuildContext context) => StandartSwitch( + Widget buildTrailing(BuildContext context) => StandardSwitch( value: value, onTaped: () => onValueChange?.call(context, !value)); } diff --git a/lib/src/screens/trade_details/trade_details_page.dart b/lib/src/screens/trade_details/trade_details_page.dart index 500d16beb..1958a7d58 100644 --- a/lib/src/screens/trade_details/trade_details_page.dart +++ b/lib/src/screens/trade_details/trade_details_page.dart @@ -1,6 +1,6 @@ import 'package:cake_wallet/src/widgets/standard_list.dart'; -import 'package:cake_wallet/src/widgets/standart_list_card.dart'; -import 'package:cake_wallet/src/widgets/standart_list_status_row.dart'; +import 'package:cake_wallet/src/widgets/standard_list_card.dart'; +import 'package:cake_wallet/src/widgets/standard_list_status_row.dart'; import 'package:cake_wallet/utils/show_bar.dart'; import 'package:cake_wallet/view_model/trade_details_view_model.dart'; import 'package:flutter/material.dart'; @@ -9,7 +9,7 @@ import 'package:flutter/services.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/src/screens/base_page.dart'; -import 'package:cake_wallet/src/widgets/standart_list_row.dart'; +import 'package:cake_wallet/src/widgets/list_row.dart'; import 'package:cake_wallet/src/screens/trade_details/track_trade_list_item.dart'; import 'package:cake_wallet/src/screens/trade_details/trade_details_list_card.dart'; import 'package:cake_wallet/src/screens/trade_details/trade_details_status_item.dart'; @@ -62,18 +62,18 @@ class TradeDetailsPageBodyState extends State { if (item is TrackTradeListItem) { return GestureDetector( onTap: item.onTap, - child: StandartListRow( + child: ListRow( title: '${item.title}', value: '${item.value}')); } if (item is DetailsListStatusItem) { - return StandartListStatusRow( + return StandardListStatusRow( title: item.title, value: item.value); } if (item is TradeDetailsListCardItem) { - return TradeDatailsStandartListCard( + return TradeDetailsStandardListCard( id: item.id, create: item.createdAt, pair: item.pair, @@ -86,7 +86,7 @@ class TradeDetailsPageBodyState extends State { Clipboard.setData(ClipboardData(text: '${item.value}')); showBar(context, S.of(context).copied_to_clipboard); }, - child: StandartListRow( + child: ListRow( title: '${item.title}', value: '${item.value}')); }); }); diff --git a/lib/src/screens/transaction_details/transaction_details_page.dart b/lib/src/screens/transaction_details/transaction_details_page.dart index 098d65c23..1b79ceeb0 100644 --- a/lib/src/screens/transaction_details/transaction_details_page.dart +++ b/lib/src/screens/transaction_details/transaction_details_page.dart @@ -6,7 +6,7 @@ import 'package:cake_wallet/view_model/transaction_details_view_model.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:cake_wallet/generated/i18n.dart'; -import 'package:cake_wallet/src/widgets/standart_list_row.dart'; +import 'package:cake_wallet/src/widgets/list_row.dart'; import 'package:cake_wallet/src/screens/transaction_details/blockexplorer_list_item.dart'; import 'package:cake_wallet/src/screens/transaction_details/standart_list_item.dart'; import 'package:cake_wallet/src/screens/base_page.dart'; @@ -42,7 +42,7 @@ class TransactionDetailsPage extends BasePage { S.of(context).transaction_details_copied(item.title)); }, child: - StandartListRow(title: '${item.title}:', value: item.value), + ListRow(title: '${item.title}:', value: item.value), ); } @@ -50,7 +50,7 @@ class TransactionDetailsPage extends BasePage { return GestureDetector( onTap: item.onTap, child: - StandartListRow(title: '${item.title}:', value: item.value), + ListRow(title: '${item.title}:', value: item.value), ); } diff --git a/lib/src/screens/unspent_coins/unspent_coins_details_page.dart b/lib/src/screens/unspent_coins/unspent_coins_details_page.dart index b1c4ff01b..d8ce24d88 100644 --- a/lib/src/screens/unspent_coins/unspent_coins_details_page.dart +++ b/lib/src/screens/unspent_coins/unspent_coins_details_page.dart @@ -5,7 +5,7 @@ import 'package:cake_wallet/src/widgets/standard_list.dart'; import 'package:cake_wallet/view_model/unspent_coins/unspent_coins_details_view_model.dart'; import 'package:cake_wallet/view_model/unspent_coins/unspent_coins_switch_item.dart'; import 'package:flutter/material.dart'; -import 'package:cake_wallet/src/widgets/standart_list_row.dart'; +import 'package:cake_wallet/src/widgets/list_row.dart'; import 'package:cake_wallet/src/screens/transaction_details/standart_list_item.dart'; import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; @@ -30,7 +30,7 @@ class UnspentCoinsDetailsPage extends BasePage { final item = unspentCoinsDetailsViewModel.items[index]; if (item is StandartListItem) { - return StandartListRow( + return ListRow( title: '${item.title}:', value: item.value); } diff --git a/lib/src/screens/unspent_coins/widgets/unspent_coins_switch_row.dart b/lib/src/screens/unspent_coins/widgets/unspent_coins_switch_row.dart index 6272469df..734aeb7ee 100644 --- a/lib/src/screens/unspent_coins/widgets/unspent_coins_switch_row.dart +++ b/lib/src/screens/unspent_coins/widgets/unspent_coins_switch_row.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/src/widgets/standart_switch.dart'; +import 'package:cake_wallet/src/widgets/standard_switch.dart'; import 'package:flutter/material.dart'; class UnspentCoinsSwitchRow extends StatelessWidget { @@ -33,7 +33,7 @@ class UnspentCoinsSwitchRow extends StatelessWidget { textAlign: TextAlign.left), Padding( padding: EdgeInsets.only(top: 12), - child: StandartSwitch( + child: StandardSwitch( value: switchValue, onTaped: () => onSwitchValueChange(!switchValue)) ) diff --git a/lib/src/screens/wallet_keys/wallet_keys_page.dart b/lib/src/screens/wallet_keys/wallet_keys_page.dart index 942809ac8..e81ec7d2a 100644 --- a/lib/src/screens/wallet_keys/wallet_keys_page.dart +++ b/lib/src/screens/wallet_keys/wallet_keys_page.dart @@ -1,4 +1,5 @@ import 'package:auto_size_text/auto_size_text.dart'; +import 'package:cake_wallet/src/widgets/section_divider.dart'; import 'package:cake_wallet/utils/show_bar.dart'; import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; @@ -6,7 +7,7 @@ import 'package:flutter/services.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/src/screens/base_page.dart'; -import 'package:cake_wallet/src/widgets/standart_list_row.dart'; +import 'package:cake_wallet/src/widgets/list_row.dart'; import 'package:cake_wallet/view_model/wallet_keys_view_model.dart'; class WalletKeysPage extends BasePage { @@ -57,10 +58,7 @@ class WalletKeysPage extends BasePage { height: 1, padding: EdgeInsets.only(left: 24), color: Theme.of(context).accentTextTheme!.headline6!.backgroundColor!, - child: Container( - height: 1, - color: Theme.of(context).dividerColor, - ), + child: const SectionDivider(), ), itemCount: walletKeysViewModel.items.length, itemBuilder: (BuildContext context, int index) { @@ -71,7 +69,7 @@ class WalletKeysPage extends BasePage { Clipboard.setData(ClipboardData(text: item.value)); showBar(context, S.of(context).copied_key_to_clipboard(item.title)); }, - child: StandartListRow( + child: ListRow( title: item.title + ':', value: item.value, ), diff --git a/lib/src/widgets/base_alert_dialog.dart b/lib/src/widgets/base_alert_dialog.dart index 70370e227..effbbc562 100644 --- a/lib/src/widgets/base_alert_dialog.dart +++ b/lib/src/widgets/base_alert_dialog.dart @@ -1,4 +1,5 @@ import 'dart:ui'; +import 'package:cake_wallet/src/widgets/section_divider.dart'; import 'package:flutter/material.dart'; import 'package:cake_wallet/palette.dart'; @@ -76,10 +77,7 @@ class BaseAlertDialog extends StatelessWidget { ), )), ), - Container( - width: 1, - color: Theme.of(context).dividerColor, - ), + const SectionDivider(), Expanded( child: TextButton( onPressed: actionRight, @@ -140,10 +138,7 @@ class BaseAlertDialog extends StatelessWidget { isDividerExists ? Padding( padding: EdgeInsets.only(top: 16, bottom: 8), - child: Container( - height: 1, - color: Theme.of(context).dividerColor, - ), + child: const SectionDivider(), ) : Offstage(), Padding( @@ -152,10 +147,7 @@ class BaseAlertDialog extends StatelessWidget { ) ], ), - Container( - height: 1, - color: Theme.of(context).dividerColor, - ), + const SectionDivider(), actionButtons(context) ], ), diff --git a/lib/src/widgets/standart_list_row.dart b/lib/src/widgets/list_row.dart similarity index 96% rename from lib/src/widgets/standart_list_row.dart rename to lib/src/widgets/list_row.dart index 94a4c4c76..40824fe59 100644 --- a/lib/src/widgets/standart_list_row.dart +++ b/lib/src/widgets/list_row.dart @@ -1,8 +1,8 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -class StandartListRow extends StatelessWidget { - StandartListRow( +class ListRow extends StatelessWidget { + ListRow( {required this.title, required this.value, this.titleFontSize = 14, diff --git a/lib/src/widgets/section_divider.dart b/lib/src/widgets/section_divider.dart new file mode 100644 index 000000000..bef85f975 --- /dev/null +++ b/lib/src/widgets/section_divider.dart @@ -0,0 +1,13 @@ +import 'package:flutter/material.dart'; + +class SectionDivider extends StatelessWidget { + const SectionDivider(); + + @override + Widget build(BuildContext context) { + return Container( + height: 1, + color: Theme.of(context).dividerColor, + ); + } +} \ No newline at end of file diff --git a/lib/src/widgets/standard_checkbox.dart b/lib/src/widgets/standard_checkbox.dart index a59364fe1..d2cd6463d 100644 --- a/lib/src/widgets/standard_checkbox.dart +++ b/lib/src/widgets/standard_checkbox.dart @@ -2,42 +2,42 @@ import 'dart:ui'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -class StandardCheckbox extends StatefulWidget { - StandardCheckbox({ - Key? key, - required this.value, - this.caption = '', - required this.onChanged}) - : super(key: key); +class StandardCheckbox extends StatelessWidget { + StandardCheckbox( + {required this.value, + this.caption = '', + this.gradientBackground = false, + this.borderColor, + this.iconColor, + required this.onChanged}); final bool value; final String caption; + final bool gradientBackground; + final Color? borderColor; + final Color? iconColor; final Function(bool) onChanged; - @override - StandardCheckboxState createState() => - StandardCheckboxState(value, caption, onChanged); -} - -class StandardCheckboxState extends State { - StandardCheckboxState(this.value, this.caption, this.onChanged); - - bool value; - String caption; - Function(bool) onChanged; - - void changeValue(bool newValue) { - setState(() => value = newValue); - } - @override Widget build(BuildContext context) { + final baseGradient = LinearGradient(colors: [ + Theme.of(context).primaryTextTheme.subtitle1!.color!, + Theme.of(context).primaryTextTheme.subtitle1!.decorationColor!, + ], begin: Alignment.centerLeft, end: Alignment.centerRight); + + final boxBorder = Border.all( + color: borderColor ?? Theme.of(context).primaryTextTheme.caption!.color!, width: 1.0); + + final checkedBoxDecoration = BoxDecoration( + gradient: gradientBackground ? baseGradient : null, + border: gradientBackground ? null : boxBorder, + borderRadius: BorderRadius.all(Radius.circular(8.0))); + + final uncheckedBoxDecoration = + BoxDecoration(border: boxBorder, borderRadius: BorderRadius.all(Radius.circular(8.0))); + return GestureDetector( - onTap: () { - value = !value; - onChanged(value); - setState(() {}); - }, + onTap: () => onChanged(!value), child: Row( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.start, @@ -45,38 +45,25 @@ class StandardCheckboxState extends State { Container( height: 24.0, width: 24.0, - decoration: BoxDecoration( - border: Border.all( - color: Theme.of(context) - .primaryTextTheme! - .caption! - .color!, - width: 1.0), - borderRadius: BorderRadius.all( - Radius.circular(8.0)), - color: Theme.of(context).backgroundColor), + decoration: value ? checkedBoxDecoration : uncheckedBoxDecoration, child: value - ? Icon( - Icons.check, - color: Colors.blue, - size: 20.0, - ) - : Offstage(), + ? Icon( + Icons.check, + color: iconColor ?? Colors.blue, + size: 20.0, + ) + : Offstage(), ), - if (caption.isNotEmpty) Padding( - padding: EdgeInsets.only(left: 10), - child: Text( - caption, - style: TextStyle( - fontSize: 16.0, - color: Theme.of(context) - .primaryTextTheme! - .headline6! - .color!), - ) - ) + if (caption.isNotEmpty) + Padding( + padding: EdgeInsets.only(left: 10), + child: Text( + caption, + style: TextStyle( + fontSize: 16.0, color: Theme.of(context).primaryTextTheme!.headline6!.color!), + )) ], ), ); } -} \ No newline at end of file +} diff --git a/lib/src/widgets/standard_list.dart b/lib/src/widgets/standard_list.dart index f5abdd900..680cf6edd 100644 --- a/lib/src/widgets/standard_list.dart +++ b/lib/src/widgets/standard_list.dart @@ -1,6 +1,6 @@ import 'package:cake_wallet/palette.dart'; -import 'package:cake_wallet/src/widgets/standart_list_card.dart'; -import 'package:cake_wallet/src/widgets/standart_list_status_row.dart'; +import 'package:cake_wallet/src/widgets/standard_list_card.dart'; +import 'package:cake_wallet/src/widgets/standard_list_status_row.dart'; import 'package:flutter/material.dart'; class StandardListRow extends StatelessWidget { @@ -217,7 +217,7 @@ class SectionStandardList extends StatelessWidget { return Container(); } - if (row is StandartListStatusRow || row is TradeDatailsStandartListCard) { + if (row is StandardListStatusRow || row is TradeDetailsStandardListCard) { return Container(); } diff --git a/lib/src/widgets/standart_list_card.dart b/lib/src/widgets/standard_list_card.dart similarity index 96% rename from lib/src/widgets/standart_list_card.dart rename to lib/src/widgets/standard_list_card.dart index 569a4e51f..7b2ecc2ce 100644 --- a/lib/src/widgets/standart_list_card.dart +++ b/lib/src/widgets/standard_list_card.dart @@ -2,8 +2,8 @@ import 'package:cake_wallet/palette.dart'; import 'package:flutter/material.dart'; import 'package:cake_wallet/themes/theme_base.dart'; -class TradeDatailsStandartListCard extends StatelessWidget { - TradeDatailsStandartListCard( +class TradeDetailsStandardListCard extends StatelessWidget { + TradeDetailsStandardListCard( {required this.id, required this.create, required this.pair, diff --git a/lib/src/widgets/standart_list_status_row.dart b/lib/src/widgets/standard_list_status_row.dart similarity index 95% rename from lib/src/widgets/standart_list_status_row.dart rename to lib/src/widgets/standard_list_status_row.dart index d97c4f688..f958e83ae 100644 --- a/lib/src/widgets/standart_list_status_row.dart +++ b/lib/src/widgets/standard_list_status_row.dart @@ -3,8 +3,8 @@ import 'package:cake_wallet/src/screens/dashboard/widgets/sync_indicator_icon.da import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -class StandartListStatusRow extends StatelessWidget { - StandartListStatusRow({required this.title, required this.value}); +class StandardListStatusRow extends StatelessWidget { + StandardListStatusRow({required this.title, required this.value}); final String title; final String value; diff --git a/lib/src/widgets/standart_switch.dart b/lib/src/widgets/standard_switch.dart similarity index 81% rename from lib/src/widgets/standart_switch.dart rename to lib/src/widgets/standard_switch.dart index 3018fb5b4..929286058 100644 --- a/lib/src/widgets/standart_switch.dart +++ b/lib/src/widgets/standard_switch.dart @@ -1,17 +1,17 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -class StandartSwitch extends StatefulWidget { - const StandartSwitch({required this.value, required this.onTaped}); +class StandardSwitch extends StatefulWidget { + const StandardSwitch({required this.value, required this.onTaped}); final bool value; final VoidCallback onTaped; @override - StandartSwitchState createState() => StandartSwitchState(); + StandardSwitchState createState() => StandardSwitchState(); } -class StandartSwitchState extends State { +class StandardSwitchState extends State { @override Widget build(BuildContext context) { return GestureDetector( diff --git a/lib/store/dashboard/trade_filter_store.dart b/lib/store/dashboard/trade_filter_store.dart index bee63b21e..87fa749a9 100644 --- a/lib/store/dashboard/trade_filter_store.dart +++ b/lib/store/dashboard/trade_filter_store.dart @@ -8,12 +8,11 @@ part'trade_filter_store.g.dart'; class TradeFilterStore = TradeFilterStoreBase with _$TradeFilterStore; abstract class TradeFilterStoreBase with Store { - TradeFilterStoreBase( - {this.displayXMRTO = true, - this.displayChangeNow = true, - this.displayMorphToken = true, - this.displaySimpleSwap = true, - }); + TradeFilterStoreBase() : displayXMRTO = true, + displayChangeNow = true, + displaySideShift = true, + displayMorphToken = true, + displaySimpleSwap = true; @observable bool displayXMRTO; @@ -21,26 +20,50 @@ abstract class TradeFilterStoreBase with Store { @observable bool displayChangeNow; + @observable + bool displaySideShift; + @observable bool displayMorphToken; @observable bool displaySimpleSwap; + @computed + bool get displayAllTrades => displayChangeNow && displaySideShift && displaySimpleSwap; + @action void toggleDisplayExchange(ExchangeProviderDescription provider) { switch (provider) { case ExchangeProviderDescription.changeNow: displayChangeNow = !displayChangeNow; break; + case ExchangeProviderDescription.sideShift: + displaySideShift = !displaySideShift; + break; + case ExchangeProviderDescription.simpleSwap: + displaySimpleSwap = !displaySimpleSwap; + break; case ExchangeProviderDescription.xmrto: displayXMRTO = !displayXMRTO; break; case ExchangeProviderDescription.morphToken: displayMorphToken = !displayMorphToken; break; - case ExchangeProviderDescription.simpleSwap: - displaySimpleSwap = !displaySimpleSwap; + case ExchangeProviderDescription.all: + if (displayAllTrades) { + displayChangeNow = false; + displaySideShift = false; + displayXMRTO = false; + displayMorphToken = false; + displaySimpleSwap = false; + } else { + displayChangeNow = true; + displaySideShift = true; + displayXMRTO = true; + displayMorphToken = true; + displaySimpleSwap = true; + } break; } } @@ -48,13 +71,15 @@ abstract class TradeFilterStoreBase with Store { List filtered({required List trades, required WalletBase wallet}) { final _trades = trades.where((item) => item.trade.walletId == wallet.id).toList(); - final needToFilter = !displayChangeNow || !displayXMRTO || !displayMorphToken || !displaySimpleSwap; + final needToFilter = !displayAllTrades; return needToFilter ? _trades .where((item) => (displayXMRTO && item.trade.provider == ExchangeProviderDescription.xmrto) || + (displaySideShift && + item.trade.provider == ExchangeProviderDescription.sideShift) || (displayChangeNow && item.trade.provider == ExchangeProviderDescription.changeNow) || diff --git a/lib/store/dashboard/transaction_filter_store.dart b/lib/store/dashboard/transaction_filter_store.dart index 4444075b7..95264a23d 100644 --- a/lib/store/dashboard/transaction_filter_store.dart +++ b/lib/store/dashboard/transaction_filter_store.dart @@ -1,6 +1,8 @@ import 'package:mobx/mobx.dart'; import 'package:cw_core/transaction_direction.dart'; import 'package:cake_wallet/view_model/dashboard/transaction_list_item.dart'; +import 'package:cake_wallet/view_model/dashboard/filter_item.dart'; +import 'package:cake_wallet/generated/i18n.dart'; part 'transaction_filter_store.g.dart'; @@ -8,8 +10,8 @@ class TransactionFilterStore = TransactionFilterStoreBase with _$TransactionFilterStore; abstract class TransactionFilterStoreBase with Store { - TransactionFilterStoreBase( - {this.displayIncoming = true, this.displayOutgoing = true}); + TransactionFilterStoreBase() : displayIncoming = true, + displayOutgoing = true; @observable bool displayIncoming; @@ -23,11 +25,31 @@ abstract class TransactionFilterStoreBase with Store { @observable DateTime? endDate; - @action - void toggleIncoming() => displayIncoming = !displayIncoming; + @computed + bool get displayAll => displayIncoming && displayOutgoing; @action - void toggleOutgoing() => displayOutgoing = !displayOutgoing; + void toggleAll() { + if (displayAll) { + displayOutgoing = false; + displayIncoming = false; + } else { + displayOutgoing = true; + displayIncoming = true; + } + } + + + @action + void toggleIncoming() { + displayIncoming = !displayIncoming; + } + + + @action + void toggleOutgoing() { + displayOutgoing = !displayOutgoing; + } @action void changeStartDate(DateTime date) => startDate = date; @@ -37,8 +59,7 @@ abstract class TransactionFilterStoreBase with Store { List filtered({required List transactions}) { var _transactions = []; - final needToFilter = !displayOutgoing || - !displayIncoming || + final needToFilter = !displayAll || (startDate != null && endDate != null); if (needToFilter) { @@ -50,7 +71,7 @@ abstract class TransactionFilterStoreBase with Store { && (endDate?.isAfter(item.transaction.date) ?? false); } - if (allowed && (!displayOutgoing || !displayIncoming)) { + if (allowed && (!displayAll)) { allowed = (displayOutgoing && item.transaction.direction == TransactionDirection.outgoing) || diff --git a/lib/view_model/dashboard/dashboard_view_model.dart b/lib/view_model/dashboard/dashboard_view_model.dart index 7f11b0c2f..57720d92f 100644 --- a/lib/view_model/dashboard/dashboard_view_model.dart +++ b/lib/view_model/dashboard/dashboard_view_model.dart @@ -58,25 +58,44 @@ abstract class DashboardViewModelBase with Store { isShowThirdYatIntroduction = false, filterItems = { S.current.transactions: [ + FilterItem( + value: () => transactionFilterStore.displayAll, + caption: S.current.all_transactions, + onChanged: transactionFilterStore.toggleAll), FilterItem( value: () => transactionFilterStore.displayIncoming, caption: S.current.incoming, - onChanged: (value) => transactionFilterStore.toggleIncoming()), + onChanged:transactionFilterStore.toggleIncoming), FilterItem( value: () => transactionFilterStore.displayOutgoing, caption: S.current.outgoing, - onChanged: (value) => transactionFilterStore.toggleOutgoing()), + onChanged: transactionFilterStore.toggleOutgoing), // FilterItem( // value: () => false, // caption: S.current.transactions_by_date, // onChanged: null), ], S.current.trades: [ + FilterItem( + value: () => tradeFilterStore.displayAllTrades, + caption: S.current.all_trades, + onChanged: () => tradeFilterStore + .toggleDisplayExchange(ExchangeProviderDescription.all)), FilterItem( value: () => tradeFilterStore.displayChangeNow, - caption: 'Change.NOW', - onChanged: (value) => tradeFilterStore + caption: ExchangeProviderDescription.changeNow.title, + onChanged: () => tradeFilterStore .toggleDisplayExchange(ExchangeProviderDescription.changeNow)), + FilterItem( + value: () => tradeFilterStore.displaySideShift, + caption: ExchangeProviderDescription.sideShift.title, + onChanged: () => tradeFilterStore + .toggleDisplayExchange(ExchangeProviderDescription.sideShift)), + FilterItem( + value: () => tradeFilterStore.displaySimpleSwap, + caption: ExchangeProviderDescription.simpleSwap.title, + onChanged: () => tradeFilterStore + .toggleDisplayExchange(ExchangeProviderDescription.simpleSwap)), ] }, subname = '', diff --git a/lib/view_model/dashboard/filter_item.dart b/lib/view_model/dashboard/filter_item.dart index 0230899b4..0944e899c 100644 --- a/lib/view_model/dashboard/filter_item.dart +++ b/lib/view_model/dashboard/filter_item.dart @@ -1,3 +1,5 @@ +import 'package:mobx/mobx.dart'; + class FilterItem { FilterItem({ required this.value, @@ -6,5 +8,5 @@ class FilterItem { bool Function() value; String caption; - Function(bool) onChanged; + Function onChanged; } \ No newline at end of file diff --git a/lib/view_model/trade_details_view_model.dart b/lib/view_model/trade_details_view_model.dart index f2985463c..5a1f78774 100644 --- a/lib/view_model/trade_details_view_model.dart +++ b/lib/view_model/trade_details_view_model.dart @@ -142,17 +142,5 @@ abstract class TradeDetailsViewModelBase with Store { items.add(TrackTradeListItem( title: 'Track', value: buildURL, onTap: () => launch(buildURL))); } - - if (trade.createdAt != null) { - items.add(StandartListItem( - title: S.current.trade_details_created_at, - value: trade.createdAt != null ? dateFormat.format(trade.createdAt!).toString() : '')); - } - - if (trade.from != null && trade.to != null) { - items.add(StandartListItem( - title: S.current.trade_details_pair, - value: '${trade.from.toString()} → ${trade.to.toString()}')); - } } } diff --git a/lib/view_model/wallet_address_list/wallet_address_edit_or_create_view_model.dart b/lib/view_model/wallet_address_list/wallet_address_edit_or_create_view_model.dart index c9d2c77f5..43db6099f 100644 --- a/lib/view_model/wallet_address_list/wallet_address_edit_or_create_view_model.dart +++ b/lib/view_model/wallet_address_list/wallet_address_edit_or_create_view_model.dart @@ -30,7 +30,7 @@ abstract class WalletAddressEditOrCreateViewModelBase with Store { {required WalletBase wallet, dynamic item}) : isEdit = item != null, state = AddressEditOrCreateStateInitial(), - label = item?.name as String? ?? '', + label = item?.fullName as String? ?? '', _item = item, _wallet = wallet; diff --git a/res/values/strings_ar.arb b/res/values/strings_ar.arb new file mode 100644 index 000000000..01708d5fd --- /dev/null +++ b/res/values/strings_ar.arb @@ -0,0 +1,681 @@ +{ + "welcome":"مرحبا بك في", + "cake_wallet":"Cake Wallet", + "first_wallet_text":"محفظة رائعة ل Monero, Bitcoin, Litecoin و Haven", + "please_make_selection":"يرجى الأختيار لإنشاء أو استعادة محفظتك.", + "create_new":"إنشاء محفظة جديدة", + "restore_wallet":"استعادة محفظة", + + "monero_com":"Monero.com بواسطة Cake Wallet", + "monero_com_wallet_text":"محفظة رائعة ل Monero", + + "haven_app":"Haven بواسطة Cake Wallet", + "haven_app_wallet_text":"محفظة رائعة ل Haven", + + "accounts":"حسابتي", + "edit":"تعديل", + "account":"حساب", + "add":"إضافة", + + + "address_book":"دليل العناوين", + "contact":"تواصل", + "please_select":"الرجاء الأختيار:", + "cancel":"إلغاء", + "ok":"حسناً", + "contact_name":"اسم جهة الاتصال", + "reset":"إعادة", + "save":"حفظ", + "address_remove_contact":"ازالة جهة الاتصال", + "address_remove_content":"هل أنت متأكد من رغبتك في إزالة جهة الاتصال المحددة؟", + + + "authenticated":"تم المصادقة", + "authentication":"المصادقة", + "failed_authentication":"${state_error} فشل المصادقة.", + + + "wallet_menu":"قائمة", + "Blocks_remaining":"بلوك متبقي ${status}", + "please_try_to_connect_to_another_node":"الرجاء محاولة الاتصال بعقدة أخرى", + "xmr_hidden":"مختفي", + "xmr_available_balance":"الرصيد المتوفر", + "xmr_full_balance":"الرصيد الكامل", + "send":"إرسال", + "receive":"استلام", + "transactions":"المعاملات", + "incoming":"الواردة", + "outgoing":"الصادره", + "transactions_by_date":"المعاملات حسب التاريخ", + "trades":"عمليات التداول", + "filter_by":"تصفية حسب", + "today":"اليوم", + "yesterday":"الامس", + "received":"استلام", + "sent":"تم الأرسال", + "pending":" (في الإنتظار)", + "rescan":"إعادة الفحص", + "reconnect":"أعد الاتصال", + "wallets":"المحافظ", + "show_seed":"عرض السييد", + "show_keys":"اظهار السييد / المفاتيح", + "address_book_menu":"دليل العناوين", + "reconnection":"إعادة الاتصال", + "reconnect_alert_text":"هل أنت متأكد من رغبتك في إعادة الاتصال؟", + + + "exchange":"تبادل", + "clear":"مسح", + "refund_address":"عنوان إعادة المال", + "change_exchange_provider":"تغيير مزود الصرف", + "you_will_send":"تحويل من", + "you_will_get":"حول الى", + "amount_is_guaranteed":"مبلغ الاستلام مضمون", + "amount_is_estimate":"المبلغ المستلم هو تقدير", + "powered_by":"بدعم من ${title}", + "error":"خطأ", + "estimated":"مُقدَّر", + "min_value":"الحد الأدنى: ${value} ${currency}", + "max_value":"الحد الأقصى: ${value} ${currency}", + "change_currency":"تغيير العملة", + "overwrite_amount":"تغير المبلغ", + "qr_payment_amount":"يحتوي هذا ال QR على مبلغ الدفع. هل تريد تغير المبلغ فوق القيمة الحالية؟", + + "copy_id":"نسخ معرف العملية", + "exchange_result_write_down_trade_id":"يرجى نسخ أو كتابة معرّف العملية للمتابعة.", + "trade_id":"معرف عملية التبادل:", + "copied_to_clipboard":"نسخ إلى الحافظة", + "saved_the_trade_id":"لقد تم حفظ معرف العملية", + "fetching":"جار الجلب", + "id":"رقم المعرف:", + "amount":"مقدار:", + "payment_id":"معرف الدفع:", + "status":"الحالة:", + "offer_expires_in":"ينتهي العرض في:", + "trade_is_powered_by":"عملية التبادل مدعومة من ${provider}", + "copy_address":"نسخ العنوان", + "exchange_result_confirm":"بالضغط على تأكيد ، سترسل ${fetchingLabel} ${from} من محفظتك المسماة ${walletName} إلى العنوان الموضح أدناه. أو يمكنك الإرسال من محفظتك الخارجية إلى العنوان أدناه / QR.\n\nيرجى الضغط على تأكيد للمتابعة أو الرجوع لتغيير المبالغ.", + "exchange_result_description":"يجب عليك إرسال ما لا يقل عن ${fetchingLabel} ${from} إلى العنوان المعروض في الصفحة التالية. إذا أرسلت مبلغًا أقل من ${fetchingLabel} ${from} فقد لا يتم تحويله وقد لا يتم رده.", + "exchange_result_write_down_ID":"* يرجى نسخ أو كتابة معرف هويتك الأعلى لحفظة.", + "confirm":"تأكيد", + "confirm_sending":"تأكيد الإرسال", + "commit_transaction_amount_fee":"تنفيذ الصفقة\nالمبلغ: ${amount}\nالرسوم: ${fee}", + "sending":"يتم الإرسال", + "transaction_sent":"تم إرسال المعاملة!", + "expired":"منتهي الصلاحية", + "time":"${minutes}د ${seconds}س", + "send_xmr":"أرسل XMR", + "exchange_new_template":"قالب جديد", + + "faq":"الأسئلة الشائعة", + + + "enter_your_pin":"أدخل كود الرقم السري", + "loading_your_wallet":"يتم تحميل محفظتك", + + + "new_wallet":"إنشاء محفظة جديدة", + "wallet_name":"اسم المحفظة", + "continue_text":"التالي", + "choose_wallet_currency":"الرجاء اختيار عملة المحفظة:", + + + "node_new":"عقدة جديدة", + "node_address":"عنوان العقدة", + "node_port":"منفذ العقدة", + "login":"تسجيل الدخول", + "password":"كلمة المرور", + "nodes":"العقد", + "node_reset_settings_title":"اعادة الضبط", + "nodes_list_reset_to_default_message":"هل أنت متأكد أنك تريد إعادة تعيين الإعدادات إلى الافتراضي؟", + "change_current_node":"هل أنت متأكد من تغيير العقدة الحالية إلى ${node}؟", + "change":"تغير", + "remove_node":"إزالة العقدة", + "remove_node_message":"هل أنت متأكد أنك تريد إزالة العقدة المحددة؟", + "remove":"إزالة", + "delete":"حذف", + "add_new_node":"أضافة عقدة جديدة", + "change_current_node_title":"تغيير العقدة الحالية", + "node_test":"تجربة", + "node_connection_successful":"تم الاتصال بنجاح", + "node_connection_failed":"فشل الاتصال", + "new_node_testing":"تجربة العقدة الجديدة", + + + "use":"التبديل إلى", + "digit_pin":"-رقم PIN", + + + "share_address":"شارك العنوان", + "receive_amount":"المقدار", + "subaddresses":"العناوين الفرعية", + "addresses":"عناوين", + "scan_qr_code":"امسح ال QR للحصول على العنوان", + "qr_fullscreen":"انقر لفتح ال QR بملء الشاشة", + "rename":"إعادة تسمية", + "choose_account":"اختر حساب", + "create_new_account":"انشاء حساب جديد", + "accounts_subaddresses":"الحسابات والعناوين الفرعية", + + + "restore_restore_wallet":"استعادة محفظة", + "restore_title_from_seed_keys":"استعادة من السييد / المفاتيح", + "restore_description_from_seed_keys":"استرجع محفظتك من السييد / المفاتيح التي قمت بحفظها في مكان آمن", + "restore_next":"التالي", + "restore_title_from_backup":"استعادة من النسخة الاحتياطية", + "restore_description_from_backup":"يمكنك استعادة تطبيق Cake Wallet بالكامل من ملف النسخ الاحتياطي", + "restore_seed_keys_restore":"استعادة السييد / المفاتيح", + "restore_title_from_seed":"استعادة من السييد", + "restore_description_from_seed":"قم باستعادة محفظتك من الرمز المكون من 25 كلمة أو 13 كلمة", + "restore_title_from_keys":"استعادة من المفاتيح", + "restore_description_from_keys":"قم باستعادة محفظتك من ضغطات المفاتيح المولدة المحفوظة من مفاتيحك الخاصة", + "restore_wallet_name":"اسم المحفظة", + "restore_address":"العنوان", + "restore_view_key_private":"مفتاح العرض (خاص)", + "restore_spend_key_private":"مفتاح الإنفاق (خاص)", + "restore_recover":"استعادة", + "restore_wallet_restore_description":"وصف استعادة المحفظة", + "restore_new_seed":"سييد جديدة", + "restore_active_seed":"السييد النشطة", + "restore_bitcoin_description_from_seed":"قم باستعادة محفظتك من كود مكون من 24 كلمة", + "restore_bitcoin_description_from_keys":"قم باستعادة محفظتك من سلسلة WIF التي تم إنشاؤها من مفاتيحك الخاصة", + "restore_bitcoin_title_from_keys":"استعادة من WIF", + "restore_from_date_or_blockheight":"الرجاء إدخال تاريخ قبل إنشاء هذه المحفظة ببضعة أيام. أو إذا كنت تعرف ارتفاع البلوك، فيرجى إدخاله بدلاً من ذلك", + + + "seed_reminder":"يرجى تدوينها في حالة فقد هاتفك أو مسحه", + "seed_title":"سييد", + "seed_share":"شارك السييد", + "copy":"نسخ", + + + "seed_language_choose":"الرجاء اختيار لغة السييد:", + "seed_choose":"اختر لغة السييد", + "seed_language_next":"التالي", + "seed_language_english":"إنجليزي", + "seed_language_chinese":"صينى", + "seed_language_dutch":"هولندي", + "seed_language_german":"ألمانية", + "seed_language_japanese":"اليابانية", + "seed_language_portuguese":"البرتغالية", + "seed_language_russian":"الروسية", + "seed_language_spanish":"الأسبانية", + "seed_language_french":"فرنسي", + "seed_language_italian":"إيطالي", + + + "send_title":"إرسال", + "send_your_wallet":"محفظتك", + "send_address":"عنوان ${cryptoCurrency}", + "send_payment_id":"معرف عملية الدفع (اختياري)", + "all":"الكل", + "send_error_minimum_value":"الحد الأدنى لقيمة المبلغ هو 0.01", + "send_error_currency":"العملة يجب أن تحتوي على أرقام فقط", + "send_estimated_fee":"الرسوم المقدرة:", + "send_priority":"حاليًا ، تم تحديد الرسوم بأولوية ${transactionPriority}.\nيمكن تعديل أولوية المعاملة في الإعدادات", + "send_creating_transaction":" يتم إنشاء المعاملة", + "send_templates":"القوالب", + "send_new":"جديد", + "send_amount":"مقدار:", + "send_fee":"الرسوم:", + "send_name":"الأسم", + "send_got_it":"فهمتك", + "send_sending":"يتم الإرسال...", + "send_success":"تم إرسال ${crypto} الخاص بك بنجاح", + + + "settings_title":"إعدادات", + "settings_nodes":"العقد", + "settings_current_node":"العقدة الحالية", + "settings_wallets":"المحافظ", + "settings_display_balance":"عرض الرصيد", + "settings_currency":"العملة", + "settings_fee_priority":"رسوم الأولوية", + "settings_save_recipient_address":"حفظ عنوان المستلم", + "settings_personal":"شخصي", + "settings_change_pin":"تغيير PIN", + "settings_change_language":"تغيير اللغة", + "settings_allow_biometrical_authentication":"السماح بالمصادقة البيومترية", + "settings_dark_mode":"الوضع الداكن", + "settings_transactions":"المبادلات", + "settings_trades":"الصفقات", + "settings_display_on_dashboard_list":"عرض في قائمة لوحة المعلومات", + "settings_all":"الكل", + "settings_only_trades":"الصفقات فقط", + "settings_only_transactions":"المعاملات فقط", + "settings_none":"لا شيء", + "settings_support":"الدعم", + "settings_terms_and_conditions":"الأحكام والشروط", + "pin_is_incorrect":"رقم ال PIN غير صحيح", + + + "setup_pin":"تعيين PIN", + "enter_your_pin_again":"أدخل PIN الخاص بك مرة أخرى", + "setup_successful":"تم إعداد PIN الخاص بك بنجاح!", + + + "wallet_keys":"سييد المحفظة / المفاتيح", + "wallet_seed":"سييد المحفظة", + "private_key":"مفتاح خاص", + "public_key":"مفتاح عمومي", + "view_key_private":"مفتاح العرض (خاص)", + "view_key_public":"مفتاح العرض (عام)", + "spend_key_private":"مفتاح الإنفاق (خاص)", + "spend_key_public":"مفتاح الإنفاق (عام)", + "copied_key_to_clipboard":"تم نسخ ${key} إلى الحافظة", + + + "new_subaddress_title":"عنوان جديد", + "new_subaddress_label_name":"تسمية", + "new_subaddress_create":"إنشاء", + + "address_label":"تسمية عنوان", + + "subaddress_title":"قائمة العناوين الفرعية", + + + "trade_details_title":"تفاصيل الصفقة", + "trade_details_id":"معرف (ID)", + "trade_details_state":"الحالة", + "trade_details_fetching":"جار الجلب", + "trade_details_provider":"مزود", + "trade_details_created_at":"أنشئت في", + "trade_details_pair":"زوج", + "trade_details_copied":"تم نسخ ${title} إلى الحافظة", + + + "trade_history_title":"تاريخ الصفقه", + + + "transaction_details_title":"تفاصيل المعاملة", + "transaction_details_transaction_id":"رقم المعاملة", + "transaction_details_date":"تاريخ", + "transaction_details_height":"ارتفاع", + "transaction_details_amount":"مقدار", + "transaction_details_fee":"رسوم", + "transaction_details_copied":"تم نسخ ${title} إلى الحافظة", + "transaction_details_recipient_address":"عناوين المستلم", + + + "wallet_list_title":"محفظة Monero", + "wallet_list_create_new_wallet":"إنشاء محفظة جديدة", + "wallet_list_restore_wallet":"استعادة المحفظة", + "wallet_list_load_wallet":"تحميل المحفظة", + "wallet_list_loading_wallet":"جار تحميل محفظة ${wallet_name}", + "wallet_list_failed_to_load":"فشل تحميل محفظة ${wallet_name}. ${error}", + "wallet_list_removing_wallet":"يتم إزالة محفظة ${wallet_name}", + "wallet_list_failed_to_remove":"فشلت إزالة محفظة ${wallet_name}. ${error}", + + + "widgets_address":"عنوان", + "widgets_restore_from_blockheight":"استعادة من ارتفاع البلوك", + "widgets_restore_from_date":"استعادة من التاريخ", + "widgets_or":"أو", + "widgets_seed":"سييد", + + + "router_no_route":"لم يتم تحديد مسار لـ ${name}", + + + "error_text_account_name":"يجب أن يحتوي اسم الحساب على أحرف وأرقام فقط\nويجب أن يتراوح بين حرف واحد و 15 حرفًا", + "error_text_contact_name":"لا يمكن أن يحتوي اسم جهة الاتصال على الرموز ` , ' \"\nويجب أن يتراوح بين حرف و 32 حرفًا", + "error_text_address":"يجب أن يتوافق عنوان المحفظة مع نوع\nالعملة المشفرة", + "error_text_node_address":"الرجاء إدخال عنوان IPv4", + "error_text_node_port":"منفذ العقدة يمكن أن يحتوي فقط على أرقام بين 0 و 65535", + "error_text_payment_id":"يمكن أن يحتوي معرّف الدفع فقط من 16 إلى 64 حرفًا hex", + "error_text_xmr":"لا يمكن أن تتجاوز قيمة XMR الرصيد المتاح.\nيجب أن يكون عدد الكسور أقل من أو يساوي 12", + "error_text_fiat":"لا يمكن أن تتجاوز قيمة المبلغ الرصيد المتاح.\nيجب أن يكون عدد الكسور أقل أو يساوي 2", + "error_text_subaddress_name":"لا يمكن أن يحتوي اسم العنوان الفرعي على رموز ` , ' \"\nويجب أن يتراوح طولها بين حرف واحد و 20 حرفًا", + "error_text_amount":"يجب أن يحتوي المبلغ على أرقام فقط", + "error_text_wallet_name":"يمكن أن يحتوي اسم المحفظة على أحرف وأرقام ورموز _ - فقط\nويجب أن يتراوح طولها بين حرف واحد و 33 حرفًا", + "error_text_keys":"يمكن أن تحتوي مفاتيح المحفظة على 64 حرفًا hex", + "error_text_crypto_currency":"عدد الكسور\nيجب أن تكون أقل من أو تساوي 12", + "error_text_minimal_limit":"لم يتم إنشاء الصفقة لـ ${provider}. المبلغ أقل من الحد الأدنى: ${min} ${currency}", + "error_text_maximum_limit":"لم يتم إنشاء الصفقة لـ ${provider}. المبلغ أكبر من الحد الأقصى: ${max} ${currency}", + "error_text_limits_loading_failed":"لم يتم إنشاء الصفقة لـ ${provider}. فشل تحميل الحدود", + "error_text_template":"لا يمكن أن يحتوي اسم القالب وعنوانه على رموز ` , \"\nويجب أن يتراوح طولها بين 1 و 106 حرفًا", + + + "auth_store_ban_timeout":"مهلة_الحظر", + "auth_store_banned_for":"محظور ل", + "auth_store_banned_minutes":" دقيقة", + "auth_store_incorrect_password":"PIN خطأ", + "wallet_store_monero_wallet":"محفظة Monero", + "wallet_restoration_store_incorrect_seed_length":"طول السييد غير صحيح", + + + "full_balance":"الرصيد الكامل", + "available_balance":"الرصيد المتوفر", + "hidden_balance":"الميزان الخفي", + + + "sync_status_syncronizing":"يتم المزامنة", + "sync_status_syncronized":"متزامن", + "sync_status_not_connected":"غير متصل", + "sync_status_starting_sync":"بدء المزامنة", + "sync_status_failed_connect":"انقطع الاتصال", + "sync_status_connecting":"يتم التوصيل", + "sync_status_connected":"متصل", + "sync_status_attempting_sync":"جاري محاولة المزامنة", + + + "transaction_priority_slow":"بطيء", + "transaction_priority_regular":"عادي", + "transaction_priority_medium":"متوسط", + "transaction_priority_fast":"سريع", + "transaction_priority_fastest":"أسرع", + + + "trade_for_not_created":"لم يتم إنشاء التداول للعنصر ${title}.", + "trade_not_created":"التداول لم ينشأ", + "trade_id_not_found":"تداول ${tradeId} من ${title} غير موجود.", + "trade_not_found":"التداول غير موجودة.", + + + "trade_state_pending":"قيد الانتظار", + "trade_state_confirming":"جاري التأكيد", + "trade_state_trading":"يتم التداول", + "trade_state_traded":"تم التداول بنجاح", + "trade_state_complete":"اكتمل", + "trade_state_to_be_created":"ليتم انشائه", + "trade_state_unpaid":"غير مدفوعة", + "trade_state_underpaid":"أجر أقل من اللازم", + "trade_state_paid_unconfirmed":"دفع غير مؤكد", + "trade_state_paid":"مدفوع", + "trade_state_btc_sent":"تم أرسل Btc", + "trade_state_timeout":"نفذ الوقت", + "trade_state_created":"تم الأنشاء", + "trade_state_finished":"تم", + + "change_language":"تغيير اللغة", + "change_language_to":"هل تريد تغيير اللغة إلى ${language}؟", + + "paste":"لصق", + "restore_from_seed_placeholder":"الرجاء إدخال أو لصق السييد الخاصة بك هنا", + "add_new_word":"أضف كلمة جديدة", + "incorrect_seed":"النص الذي تم إدخاله غير صالح.", + + "biometric_auth_reason":"امسح بصمة إصبعك للمصادقة", + "version":"الإصدار ${currentVersion}", + + "openalias_alert_title":"تم ايجاد العنوان", + "openalias_alert_content":"سوف ترسل الأموال إلى\n${recipient_name}", + + "card_address":"العنوان:", + "buy":"اشتري", + "sell":"بيع", + + "placeholder_transactions":"سيتم عرض معاملاتك هنا", + "placeholder_contacts":"سيتم عرض جهات الاتصال الخاصة بك هنا", + + "template":"قالب", + "confirm_delete_template":"سيؤدي هذا الإجراء إلى حذف هذا القالب. هل ترغب في الاستمرار؟", + "confirm_delete_wallet":"سيؤدي هذا الإجراء إلى حذف هذه المحفظة. هل ترغب في الاستمرار؟", + + "picker_description":"لاختيار ChangeNOW أو MorphToken ، يرجى تغيير زوج التداول الخاص بك أولاً", + + "change_wallet_alert_title":"تغيير المحفظة الحالية", + "change_wallet_alert_content":"هل تريد تغيير المحفظة الحالية إلى ${wallet_name}؟", + + "creating_new_wallet":"يتم إنشاء محفظة جديدة", + "creating_new_wallet_error":"خطأ: ${description}", + + "seed_alert_title":"انتباه", + "seed_alert_content":"السييد هي الطريقة الوحيدة لاسترداد محفظتك. هل كتبتها؟", + "seed_alert_back":"العودة إلى الوراء", + "seed_alert_yes":"نعم، فعلت ذلك", + + "exchange_sync_alert_content":"يرجى الانتظار حتى تتم مزامنة محفظتك", + + "pre_seed_title":"مهم", + "pre_seed_description":"في الصفحة التالية ستشاهد سلسلة من الكلمات ${words}. هذه هي سييد الفريدة والخاصة بك وهي الطريقة الوحيدة لاسترداد محفظتك في حالة فقدها أو عطلها. تقع على عاتقك مسؤولية تدوينها وتخزينها في مكان آمن خارج تطبيق Cake Wallet.", + "pre_seed_button_text":"انا أفهم. أرني سييد الخاص بي", + + "xmr_to_error":"خطأ XMR.TO", + "xmr_to_error_description":"مبلغ غير صحيح. الحد الأقصى 8 أرقام بعد الفاصلة العشرية", + + "provider_error":"خطأ ${provider}", + + "use_ssl":"استخدم SSL", + "trusted":"موثوق به", + + "color_theme":"سمة اللون", + "light_theme":"فاتح", + "bright_theme":"مشرق", + "dark_theme":"داكن", + "enter_your_note":"أدخل ملاحظتك ...", + "note_optional":"ملاحظة (اختياري)", + "note_tap_to_change":"ملاحظة (انقر للتغيير)", + "view_in_block_explorer":"عرض في Block Explorer", + "view_transaction_on":"عرض العملية على", + "transaction_key":"مفتاح العملية", + "confirmations":"التأكيدات", + "recipient_address":"عنوان المستلم", + + "extra_id":"معرف إضافي:", + "destination_tag":"علامة الوجهة:", + "memo":"مذكرة:", + + "backup":"نسخ الاحتياطي", + "change_password":"تغيير كلمة المرور", + "backup_password":"كلمة مرور النسخ الاحتياطي", + "write_down_backup_password":"يرجى كتابة كلمة المرور الاحتياطية الخاصة بك ، والتي يتم استخدامها لاستيراد ملفات النسخ الاحتياطي الخاصة بك.", + "export_backup":"تصدير نسخة احتياطية", + "save_backup_password":"يرجى التأكد من حفظ كلمة المرور الاحتياطية. لن تتمكن من استيراد ملفات النسخ الاحتياطي بدونها.", + "backup_file":"ملف النسخ الاحتياطي", + + "edit_backup_password":"تعديل كلمة مرور النسخ الاحتياطي", + "save_backup_password_alert":"حفظ كلمة المرور الاحتياطية", + "change_backup_password_alert":"لن تكون ملفات النسخ الاحتياطي السابقة متاحة للاستيراد بكلمة مرور نسخ احتياطي جديدة. سيتم استخدام كلمة مرور النسخ الاحتياطي الجديدة لملفات النسخ الاحتياطي الجديدة فقط. هل أنت متأكد أنك تريد تغيير كلمة المرور الاحتياطية؟", + + "enter_backup_password":"أدخل كلمة المرور الاحتياطية هنا", + "select_backup_file":"حدد ملف النسخ الاحتياطي", + "import":"اختيار ملف", + "please_select_backup_file":"الرجاء تحديد ملف النسخ الاحتياطي وإدخال كلمة مرور النسخ الاحتياطي.", + + "fixed_rate":"السعر الثابت", + "fixed_rate_alert":"ستتمكن من إدخال مبلغ الاستلام عند تشغيل وضع السعر الثابت. هل تريد التبديل إلى وضع السعر الثابت؟", + + "xlm_extra_info":"من فضلك لا تنس تحديد معرّف المذكرة أثناء إرسال معاملة XLM للتبادل", + "xrp_extra_info":"من فضلك لا تنس تحديد علامة الوجهة أثناء إرسال معاملة XRP للتبادل", + + "exchange_incorrect_current_wallet_for_xmr":"إذا كنت ترغب في استبدال XMR من رصيد Cake Wallet Monero ، فيرجى التبديل إلى محفظة Monero أولاً.", + "confirmed":"مؤكد", + "unconfirmed":"غير مؤكد", + "displayable":"قابل للعرض", + + "submit_request":"تقديم طلب", + + "buy_alert_content":"لا ندعم حاليًا سوى شراء Bitcoin و Litecoin. لشراء Bitcoin أو Litecoin ، يرجى إنشاء محفظة Bitcoin أو Litecoin أو التبديل إليها.", + "sell_alert_content":"نحن ندعم حاليًا بيع البيتكوين فقط. لبيع Bitcoin ، يرجى إنشاء أو التبديل إلى محفظة Bitcoin الخاصة بك.", + + "outdated_electrum_wallet_description":"محافظ Bitcoin الجديدة التي تم إنشاؤها في Cake الآن سييد مكونة من 24 كلمة. من الضروري أن تقوم بإنشاء محفظة Bitcoin جديدة وتحويل جميع أموالك إلى المحفظة الجديدة المكونة من 24 كلمة ، والتوقف عن استخدام محافظ سييد مكونة من 12 كلمة. يرجى القيام بذلك على الفور لتأمين أموالك.", + "understand":"لقد فهمت", + + "apk_update":"تحديث APK", + + "buy_bitcoin":"شراء Bitcoin", + "buy_with":"اشتر بواسطة", + "moonpay_alert_text":"يجب أن تكون قيمة المبلغ أكبر من أو تساوي ${minAmount} ${fiatCurrency}", + + "outdated_electrum_wallet_receive_warning":"إذا كانت هذه المحفظة تحتوي على سييد مكونة من 12 كلمة وتم إنشاؤها في Cake ، فلا تقم بإيداع Bitcoin في هذه المحفظة. قد يتم فقد أي BTC تم تحويله إلى هذه المحفظة. قم بإنشاء محفظة جديدة مكونة من 24 كلمة (انقر فوق القائمة في الجزء العلوي الأيمن ، وحدد محافظ ، واختر إنشاء محفظة جديدة ، ثم حدد Bitcoin) وقم على الفور بنقل BTC الخاص بك هناك. محافظ BTC الجديدة (24 كلمة) من Cake آمنة", + "do_not_show_me":"لا ترني هذا مجددا", + + "unspent_coins_title":"العملات الغير المنفقة", + "unspent_coins_details_title":"تفاصيل العملات الغير المنفقة", + "freeze":"تجميد", + "frozen":"مجمدة", + "coin_control":"التحكم في العملة (اختياري)", + + "address_detected":"تم ايجاد العنوان", + "address_from_domain":"هذا العنوان من ${domain} من Unstoppable Domains", + + "add_receiver":"أضف مستقبل آخر (اختياري)", + + "manage_yats":"إدارة Yats", + "yat_alert_title":"أرسل واستقبل العملات المشفرة بسهولة أكبر مع Yat", + "yat_alert_content":"يمكن لمستخدمي Cake Wallet الآن إرسال واستلام جميع عملاتهم المفضلة باستخدام اسم مستخدم فريد من نوعه قائم على الرموز التعبيرية.", + "get_your_yat":"احصل على Yat", + "connect_an_existing_yat":"توصيل Yat الحالي", + "connect_yats":"توصيل Yats", + "yat_address":"عنوان Yat", + "yat":"Yat", + "address_from_yat":"هذا العنوان من ${emoji} على Yat", + "yat_error":"خطأ Yat", + "yat_error_content":"لا توجد عناوين مرتبطة بهذا Yat. جرب يات آخر", + "choose_address":"\n\nالرجاء اختيار عنوان:", + "yat_popup_title":"يمكن تحويل عنوان محفظتك إلى رموز تعبيرية.", + "yat_popup_content":"يمكنك الآن إرسال واستلام العملات المشفرة في Cake Wallet باستخدام Yat - اسم مستخدم قصير يعتمد على الرموز التعبيرية. إدارة Yats في أي وقت على شاشة الإعدادات", + "second_intro_title":"عنوان تعبيري ايموجي واحد يحكمهم جميعا!", + "second_intro_content":"Yat الخاص بك هو عنوان تعبيري فريد يحل محل جميع العناوين السداسية العشرية الطويلة لجميع عملاتك.", + "third_intro_title":"يتماشي Yat بلطف مع الآخرين", + "third_intro_content":"يعيش Yats خارج Cake Wallet أيضًا. يمكن استبدال أي عنوان محفظة على وجه الأرض بـ Yat!", + "learn_more":"اعرف المزيد", + "search":"بحث", + "search_language":"ابحث عن لغة", + "search_currency":"ابحث عن عملة", + "new_template":"قالب جديد", + "electrum_address_disclaimer":"نقوم بإنشاء عناوين جديدة في كل مرة تستخدم فيها عنوانًا ، لكن العناوين السابقة تستمر في العمل", + "wallet_name_exists":"توجد بالفعل محفظة بهذا الاسم. الرجاء اختيار اسم مختلف أو إعادة تسمية المحفظة الأخرى أولاً.", + "market_place":"منصة التجارة", + "cake_pay_title":"بطاقات هدايا Cake Pay", + "cake_pay_subtitle":"شراء بطاقات هدايا مخفضة السعر (الولايات المتحدة فقط)", + "cake_pay_web_cards_title":"بطاقات Cake Pay Web", + "cake_pay_web_cards_subtitle":"اشتري بطاقات مدفوعة مسبقا وبطاقات هدايا في جميع أنحاء العالم", + "about_cake_pay":"يتيح لك Cake Pay شراء بطاقات هدايا بأصول افتراضية بسهولة ، ويمكن إنفاقها على الفور لدى أكثر من 150,000 تاجر في الولايات المتحدة.", + "cake_pay_account_note":"قم بالتسجيل باستخدام عنوان بريد إلكتروني فقط لمشاهدة البطاقات وشرائها. حتى أن بعضها متوفر بسعر مخفض!", + "already_have_account":"لديك حساب؟", + "create_account":"إنشاء حساب", + "privacy_policy":"سياسة الخصوصية", + "welcome_to_cakepay":"مرحبا بكم في Cake Pay!", + "sign_up":"اشتراك", + "forgot_password":"هل نسيت كلمة السر", + "reset_password":"إعادة تعيين كلمة المرور", + "gift_cards":"بطاقات الهدايا", + "setup_your_debit_card":"قم بإعداد بطاقة ائتمان الخاصة بك", + "no_id_required":"لا ID مطلوب. اشحن وانفق في أي مكان", + "how_to_use_card":"كيفية استخدام هذه البطاقة", + "purchase_gift_card":"شراء بطاقة هدايا", + "verification":"تَحَقّق", + "fill_code":"يرجى ملء رمز التحقق المرسل إلى بريدك الإلكتروني", + "dont_get_code":"لم تحصل على رمز؟", + "resend_code":"الرجاء إعادة إرسالها", + "debit_card":"بطاقة ائتمان", + "cakepay_prepaid_card":"بطاقة ائتمان CakePay مسبقة الدفع", + "no_id_needed":"لا حاجة لID!", + "frequently_asked_questions":"الأسئلة الشائعة", + "debit_card_terms":"يخضع تخزين واستخدام رقم بطاقة الدفع الخاصة بك (وبيانات الاعتماد المقابلة لرقم بطاقة الدفع الخاصة بك) في هذه المحفظة الرقمية لشروط وأحكام اتفاقية حامل البطاقة المعمول بها مع جهة إصدار بطاقة الدفع ، كما هو معمول به من وقت لآخر.", + "please_reference_document":"يرجى الرجوع إلى الوثائق أدناه لمزيد من المعلومات.", + "cardholder_agreement":"اتفاقية حامل البطاقة", + "e_sign_consent":"الموافقة على التوقيع الإلكتروني", + "agree_and_continue":"الموافقة ومتابعة", + "email_address":"عنوان البريد الالكترونى", + "agree_to":"من خلال إنشاء حساب فإنك توافق على", + "and":"و", + "enter_code":"ادخل الرمز", + "congratulations":"تهانينا!", + "you_now_have_debit_card":"لديك الآن بطاقة ائتمان", + "min_amount":"الحد الأدنى: ${value}", + "max_amount":"الحد الأقصى: ${value}", + "enter_amount":"أدخل المبلغ", + "billing_address_info":"إذا طُلب منك عنوان إرسال فواتير ، فأدخل عنوان الشحن الخاص بك", + "order_physical_card":"طلب البطاقة المادية", + "add_value":"إضافة قيمة", + "activate":"تفعيل", + "get_a":"احصل على", + "digital_and_physical_card":" بطاقة ائتمان رقمية ومادية مسبقة الدفع", + "get_card_note":" يمكنك إعادة تحميلها بالعملات الرقمية. لا توجد معلومات إضافية مطلوبة!", + "signup_for_card_accept_terms":"قم بالتسجيل للحصول على البطاقة وقبول الشروط.", + "add_fund_to_card":"أضف أموالاً مدفوعة مسبقًا إلى البطاقات (حتى ${value})", + "use_card_info_two":"يتم تحويل الأموال إلى الدولار الأمريكي عند الاحتفاظ بها في الحساب المدفوع مسبقًا ، وليس بالعملات الرقمية.", + "use_card_info_three":"استخدم البطاقة الرقمية عبر الإنترنت أو مع طرق الدفع غير التلامسية.", + "optionally_order_card":"اختياريا اطلب بطاقة فعلية (مادية).", + "hide_details":"أخف التفاصيل", + "show_details":"اظهر التفاصيل", + "upto":"حتى ${value}", + "discount":"وفر ${value}٪", + "gift_card_amount":"مبلغ بطاقة الهدايا", + "bill_amount":"مبلغ الفاتورة", + "you_pay":"انت تدفع", + "tip":"بقشيش:", + "custom":"مخصصة", + "by_cake_pay":"عن طريق Cake Pay", + "expires":"تنتهي", + "mm":"MM", + "yy":"YY", + "online":"متصل", + "offline":"غير متصل على الانترنت", + "gift_card_number":"رقم بطاقة الهدية", + "pin_number":"الرقم السري", + "total_saving":"إجمالي المدخرات", + "last_30_days":"آخر 30 يومًا", + "avg_savings":"متوسط مدخرات", + "view_all":"مشاهدة الكل", + "active_cards":"البطاقات النشطة", + "delete_account":"حذف الحساب", + "cards":"البطاقات", + "active":"نشيط", + "redeemed":"استردت", + "gift_card_balance_note":"ستظهر هنا بطاقات الهدايا ذات الرصيد المتبقي", + "gift_card_redeemed_note":"ستظهر هنا بطاقات الهدايا التي استردت قيمتها", + "logout":"تسجيل خروج", + "add_tip":"أضف بقشيش", + "percentageOf":"من ${amount}", + "is_percentage":"يكون", + "search_category":"فئة البحث", + "mark_as_redeemed":"وضع علامة كمسترد", + "more_options":"المزيد من الخيارات", + "awaiting_payment_confirmation":"في انتظار تأكيد الدفع", + "transaction_sent_notice":"إذا لم تستمر الشاشة بعد دقيقة واحدة ، فتحقق من مستكشف البلوك والبريد الإلكتروني.", + "agree":"موافق", + "in_store":"في المتجر", + "generating_gift_card":"يتم توليد بطاقة هدية", + "payment_was_received":"تم استلام الدفع الخاص بك.", + "proceed_after_one_minute":"إذا لم تستمر الشاشة بعد دقيقة واحدة ، فتحقق من بريدك الإلكتروني.", + "order_id":"رقم التعريف الخاص بالطلب", + "gift_card_is_generated":"تم إنشاء بطاقة الهدايا", + "open_gift_card":"افتح بطاقة الهدية", + "contact_support":"اتصل بالدعم", + "gift_cards_unavailable":"تتوفر بطاقات الهدايا للشراء فقط باستخدام Monero و Bitcoin و Litecoin في الوقت الحالي", + "introducing_cake_pay":"نقدم لكم Cake Pay!", + "cake_pay_learn_more":"شراء واسترداد بطاقات الهدايا على الفور في التطبيق!\nاسحب من اليسار إلى اليمين لمعرفة المزيد.", + "automatic":"تلقائي", + "fixed_pair_not_supported":"هذا الزوج الثابت غير مدعوم في التبادلات المحددة", + "variable_pair_not_supported":"هذا الزوج المتغير غير مدعوم في التبادلات المحددة", + "none_of_selected_providers_can_exchange":"لا يمكن لأي من مقدمي الخدمة المختارين إجراء هذا التبادل", + "choose_one":"اختر واحدة", + "choose_from_available_options":"اختر من بين الخيارات المتاحة:", + "custom_redeem_amount":"مبلغ الاسترداد مخصص", + "add_custom_redemption":"إضافة استرداد مخصص", + "remaining":"متبقي", + "delete_wallet":"حذف المحفظة", + "delete_wallet_confirm_message":"هل أنت متأكد أنك تريد حذف محفظة ${wallet_name}؟", + "low_fee":"رسوم منخفضة", + "low_fee_alert":"أنت تستخدم حاليًا أولوية منخفضة لرسوم الشبكة. قد يتسبب هذا في فترات انتظار طويلة ، أو أسعار مختلفة ، أو إلغاء صفقات. نوصي بتحديد رسوم أعلى لتجربة أفضل.", + "ignor":"تجاهل", + "use_suggested":"استخدام المقترح", + "do_not_share_warning_text":"لا تشارك هذه مع أي شخص آخر ، بما في ذلك الدعم.\n\nيمكن أن تتم سرقة أموالك!", + "help":"مساعده", + "all_transactions":"كل التحركات المالية", + "all_trades":"جميع عمليات التداول", + "connection_sync":"الاتصال والمزامنة", + "security_and_backup":"الأمان والنسخ الاحتياطي", + "create_backup":"انشئ نسخة احتياطية", + "privacy_settings":"إعدادات الخصوصية", + "privacy":"خصوصية", + "display_settings":"اعدادات العرض", + "other_settings":"اعدادات اخرى", + "require_pin_after":"طلب PIN بعد", + "always":"دائماً", + "minutes_to_pin_code":"${minutes} دقيقة", + "disable_exchange":"تعطيل التبادل", + "advanced_privacy_settings":"إعدادات الخصوصية المتقدمة", + "settings_can_be_changed_later":"يمكن تغيير هذه الإعدادات لاحقًا في إعدادات التطبيق", + "add_custom_node":"إضافة عقدة مخصصة جديدة", + "disable_fiat":"تعطيل fiat", + "fiat_api":"Fiat API", + "disabled":"معطلة", + "enabled":"ممكنة", + "tor_only":"Tor فقط", + "unmatched_currencies": "عملة محفظتك الحالية لا تتطابق مع عملة QR الممسوحة ضوئيًا" +} diff --git a/res/values/strings_de.arb b/res/values/strings_de.arb index 56b7917df..9ba0a7553 100644 --- a/res/values/strings_de.arb +++ b/res/values/strings_de.arb @@ -48,7 +48,7 @@ "outgoing" : "Ausgehend", "transactions_by_date" : "Transaktionen nach Datum", "trades" : "Börsen", - "filters" : "Filter", + "filter_by": "Filtern nach", "today" : "Heute", "yesterday" : "Gestern", "received" : "Empfangen", @@ -656,6 +656,8 @@ "use_suggested": "Vorgeschlagen verwenden", "do_not_share_warning_text" : "Teilen Sie diese nicht mit anderen, einschließlich Support.\n\nIhr Geld kann und wird gestohlen werden!", "help": "hilfe", + "all_transactions": "Alle Transaktionen", + "all_trades": "Alle Gewerke", "connection_sync": "Verbindung und Synchronisierung", "security_and_backup": "Sicherheit und Datensicherung", "create_backup": "Backup erstellen", @@ -675,5 +677,7 @@ "disabled": "Deaktiviert", "enabled": "Ermöglicht", "tor_only": "Nur Tor", - "unmatched_currencies": "Die Währung Ihres aktuellen Wallets stimmt nicht mit der des gescannten QR überein" + "unmatched_currencies": "Die Währung Ihres aktuellen Wallets stimmt nicht mit der des gescannten QR überein", + "contact_list_contacts": "Kontakte", + "contact_list_wallets": "Meine Geldbörsen" } diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb index 5f312a132..e9a0c4d49 100644 --- a/res/values/strings_en.arb +++ b/res/values/strings_en.arb @@ -48,7 +48,7 @@ "outgoing" : "Outgoing", "transactions_by_date" : "Transactions by date", "trades" : "Trades", - "filters" : "Filter", + "filter_by": "Filter by", "today" : "Today", "yesterday" : "Yesterday", "received" : "Received", @@ -656,6 +656,8 @@ "use_suggested": "Use Suggested", "do_not_share_warning_text" : "Do not share these with anyone else, including support.\n\nYour funds can and will be stolen!", "help": "help", + "all_transactions": "All transactions", + "all_trades": "All trades", "connection_sync": "Connection and sync", "security_and_backup": "Security and backup", "create_backup": "Create backup", @@ -675,5 +677,7 @@ "disabled": "Disabled", "enabled": "Enabled", "tor_only": "Tor only", - "unmatched_currencies": "Your current wallet's currency does not match that of the scanned QR" + "unmatched_currencies": "Your current wallet's currency does not match that of the scanned QR", + "contact_list_contacts": "Contacts", + "contact_list_wallets": "My Wallets" } diff --git a/res/values/strings_es.arb b/res/values/strings_es.arb index 2c611a540..10c866676 100644 --- a/res/values/strings_es.arb +++ b/res/values/strings_es.arb @@ -48,7 +48,7 @@ "outgoing" : "Saliente", "transactions_by_date" : "Transacciones por fecha", "trades" : "Cambios", - "filters" : "Filtrar", + "filter_by": "Filtrado por", "today" : "Hoy", "yesterday" : "Ayer", "received" : "Recibido", @@ -656,6 +656,8 @@ "use_suggested": "Usar sugerido", "do_not_share_warning_text" : "No comparta estos con nadie más, incluido el soporte.\n\n¡Sus fondos pueden ser y serán robados!", "help": "ayuda", + "all_transactions": "Todas las transacciones", + "all_trades": "Todos los oficios", "connection_sync": "Conexión y sincronización", "security_and_backup": "Seguridad y respaldo", "create_backup": "Crear copia de seguridad", @@ -675,5 +677,7 @@ "disabled": "Desactivado", "enabled": "Activado", "tor_only": "solo Tor", - "unmatched_currencies": "La moneda de su billetera actual no coincide con la del QR escaneado" + "unmatched_currencies": "La moneda de su billetera actual no coincide con la del QR escaneado", + "contact_list_contacts": "Contactos", + "contact_list_wallets": "Mis billeteras" } diff --git a/res/values/strings_fr.arb b/res/values/strings_fr.arb index 1c4ebf1a8..99fbcd282 100644 --- a/res/values/strings_fr.arb +++ b/res/values/strings_fr.arb @@ -46,7 +46,7 @@ "outgoing" : "Sortantes", "transactions_by_date" : "Transactions par date", "trades" : "Échanges", - "filters" : "Filtre", + "filter_by": "Filtrer par", "today" : "Aujourd'hui", "yesterday" : "Hier", "received" : "Reçus", @@ -534,7 +534,7 @@ "search_currency": "Rechercher une devise", "new_template" : "Nouveau Modèle", "electrum_address_disclaimer": "Nous générons de nouvelles adresses à chaque fois que vous en utilisez une, mais les adresses précédentes continuent à fonctionner", - "wallet_name_exists": "Un portefeuille portant ce nom existe déjà", + "wallet_name_exists": "Un portefeuille (wallet) portant ce nom existe déjà", "market_place": "Place de marché", "cake_pay_title": "Cartes cadeaux Cake Pay", "cake_pay_subtitle": "Achetez des cartes-cadeaux à prix réduit (États-Unis uniquement)", @@ -562,7 +562,7 @@ "cakepay_prepaid_card": "Carte de débit prépayée Cake Pay", "no_id_needed": "Aucune pièce d'identité nécessaire !", "frequently_asked_questions": "Foire aux questions", - "debit_card_terms": "Le stockage et l'utilisation de votre numéro de carte de paiement (et des informations d'identification correspondant à votre numéro de carte de paiement) dans ce portefeuille numérique sont soumis aux conditions générales de l'accord du titulaire de carte applicable avec l'émetteur de la carte de paiement, en vigueur à partir de de temps en temps.", + "debit_card_terms": "Le stockage et l'utilisation de votre numéro de carte de paiement (et des informations d'identification correspondant à votre numéro de carte de paiement) dans ce portefeuille numérique peuvent être soumis aux conditions générales de l'accord du titulaire de carte parfois en vigueur avec l'émetteur de la carte de paiement.", "please_reference_document": "Veuillez vous référer aux documents ci-dessous pour plus d'informations.", "cardholder_agreement": "Contrat de titulaire de carte", "e_sign_consent": "Consentement de signature électronique", @@ -595,7 +595,7 @@ "gift_card_amount": "Montant de la carte-cadeau", "bill_amount": "Montant de la facture", "you_pay": "Vous payez", - "tip": "Astuce :", + "tip": "Pourboire :", "custom": "personnalisé", "by_cake_pay": "par Cake Pay", "expire": "Expire", @@ -617,7 +617,7 @@ "gift_card_balance_note": "Les cartes-cadeaux avec un solde restant apparaîtront ici", "gift_card_redeemed_note": "Les cartes-cadeaux que vous avez utilisées apparaîtront ici", "logout": "Déconnexion", - "add_tip": "Ajouter une astuce", + "add_tip": "Ajouter un pourboire", "percentageOf": "sur ${amount}", "is_percentage": "est", "search_category": "Catégorie de recherche", @@ -646,14 +646,16 @@ "custom_redeem_amount": "Montant d'échange personnalisé", "add_custom_redemption": "Ajouter un remboursement personnalisé", "remaining": "restant", - "delete_wallet": "Supprimer le portefeuille", - "delete_wallet_confirm_message" : "Êtes-vous sûr de vouloir supprimer le portefeuille ${wallet_name}?", + "delete_wallet": "Supprimer le portefeuille (wallet)", + "delete_wallet_confirm_message" : "Êtes-vous sûr de vouloir supprimer le portefeuille (wallet) ${wallet_name}?", "low_fee": "Frais modiques", "low_fee_alert": "Vous utilisez actuellement une priorité de frais de réseau peu élevés. Cela pourrait entraîner de longues attentes, des taux différents ou des transactions annulées. Nous vous recommandons de fixer des frais plus élevés pour une meilleure expérience.", "ignor": "Ignorer", "use_suggested": "Utilisation suggérée", - "do_not_share_warning_text" : "Ne les partagez avec personne d'autre, y compris avec l'assistance.\n\nVos fonds peuvent et seront volés!", - "help": "aider", + "do_not_share_warning_text" : "Ne les partagez avec personne, y compris avec l'assistance.\n\nVos fonds seraient inmanquablement volés !", + "help": "aide", + "all_transactions": "Toutes transactions", + "all_trades": "Tous échanges", "connection_sync": "Connexion et synchronisation", "security_and_backup": "Sécurité et sauvegarde", "create_backup": "Créer une sauvegarde", @@ -661,17 +663,19 @@ "privacy": "Confidentialité", "display_settings": "Paramètres d'affichage", "other_settings": "Autres paramètres", - "require_pin_after": "NIP requis après", + "require_pin_after": "Code PIN requis après", "always": "toujours", "minutes_to_pin_code": "${minute} minutes", "disable_exchange": "Désactiver l'échange", "advanced_privacy_settings": "Paramètres de confidentialité avancés", "settings_can_be_changed_later": "Ces paramètres peuvent être modifiés ultérieurement dans les paramètres de l'application", "add_custom_node": "Ajouter un nouveau nœud personnalisé", - "disable_fiat": "Désactiver fiat", + "disable_fiat": "Désactiver les montants en fiat", "fiat_api": "Fiat API", - "disabled": "Handicapé", + "disabled": "Désactivé", "enabled": "Activé", "tor_only": "Tor uniquement", - "unmatched_currencies": "La devise de votre portefeuille actuel ne correspond pas à celle du QR scanné" + "unmatched_currencies": "La devise de votre portefeuille (wallet) actuel ne correspond pas à celle du QR code scanné", + "contact_list_contacts": "Contacts", + "contact_list_wallets": "Mes portefeuilles (wallets)" } diff --git a/res/values/strings_hi.arb b/res/values/strings_hi.arb index c5c041061..a5c27ddb4 100644 --- a/res/values/strings_hi.arb +++ b/res/values/strings_hi.arb @@ -48,7 +48,7 @@ "outgoing" : "निवर्तमान", "transactions_by_date" : "तारीख से लेन-देन", "trades" : "ट्रेडों", - "filters" : "फ़िल्टर", + "filter_by": "के द्वारा छनित", "today" : "आज", "yesterday" : "बिता कल", "received" : "प्राप्त किया", @@ -656,6 +656,8 @@ "use_suggested": "सुझाए गए का प्रयोग करें", "do_not_share_warning_text" : "समर्थन सहित, इन्हें किसी और के साथ साझा न करें।\n\nआपके धन की चोरी हो सकती है और होगी!", "help": "मदद करना", + "all_transactions": "सभी लेन - देन", + "all_trades": "सभी व्यापार", "connection_sync": "कनेक्शन और सिंक", "security_and_backup": "सुरक्षा और बैकअप", "create_backup": "बैकअप बनाएँ", @@ -670,9 +672,12 @@ "advanced_privacy_settings": "उन्नत गोपनीयता सेटिंग्स", "settings_can_be_changed_later": "इन सेटिंग्स को बाद में ऐप सेटिंग में बदला जा सकता है", "add_custom_node": "नया कस्टम नोड जोड़ें", + "disable_fiat": "िएट को अक्षम करें", "fiat_api": "फिएट पैसे API", "disabled": "अक्षम", "enabled": "सक्रिय", "tor_only": "Tor केवल", - "unmatched_currencies": "आपके वर्तमान वॉलेट की मुद्रा स्कैन किए गए क्यूआर से मेल नहीं खाती" + "unmatched_currencies": "आपके वर्तमान वॉलेट की मुद्रा स्कैन किए गए क्यूआर से मेल नहीं खाती" , + "contact_list_contacts": "संपर्क", + "contact_list_wallets": "मेरा बटुआ" } diff --git a/res/values/strings_hr.arb b/res/values/strings_hr.arb index dc9275150..9aa9f0b4f 100644 --- a/res/values/strings_hr.arb +++ b/res/values/strings_hr.arb @@ -48,7 +48,7 @@ "outgoing" : "Odlazno", "transactions_by_date" : "Transakcije prema datumu", "trades" : "Razmjene", - "filters" : "Filter", + "filter_by": "Filtrirati po", "today" : "Danas", "yesterday" : "Jučer", "received" : "Primljeno", @@ -656,6 +656,8 @@ "use_suggested": "Koristite predloženo", "do_not_share_warning_text" : "Nemojte ih dijeliti ni s kim, uključujući podršku.\n\nVaša sredstva mogu i bit će ukradena!", "help": "pomozite", + "all_transactions": "Sve transakcije", + "all_trades": "Svi obrti", "connection_sync": "Povezivanje i sinkronizacija", "security_and_backup": "Sigurnost i sigurnosna kopija", "create_backup": "Stvori sigurnosnu kopiju", @@ -675,5 +677,7 @@ "disabled": "Onemogućeno", "enabled": "Omogućeno", "tor_only": "Samo Tor", - "unmatched_currencies": "Valuta vašeg trenutnog novčanika ne odgovara onoj na skeniranom QR-u" + "unmatched_currencies": "Valuta vašeg trenutnog novčanika ne odgovara onoj na skeniranom QR-u", + "contact_list_contacts": "Kontakti", + "contact_list_wallets": "Moji novčanici" } diff --git a/res/values/strings_it.arb b/res/values/strings_it.arb index e3770f760..e90fc20c2 100644 --- a/res/values/strings_it.arb +++ b/res/values/strings_it.arb @@ -48,7 +48,7 @@ "outgoing" : "In uscita", "transactions_by_date" : "Transazioni per data", "trades" : "Scambi", - "filters" : "Filtri", + "filter_by": "Filtrirati po", "today" : "Oggi", "yesterday" : "Ieri", "received" : "Ricevuto", @@ -656,6 +656,8 @@ "use_suggested": "Usa suggerito", "do_not_share_warning_text" : "Non condividerli con nessun altro, incluso il supporto.\n\nI tuoi fondi possono e saranno rubati!", "help": "aiuto", + "all_transactions": "Sve transakcije", + "all_trades": "Svi obrti", "connection_sync": "Connessione e sincronizzazione", "security_and_backup": "Sicurezza e backup", "create_backup": "Crea backup", @@ -675,5 +677,7 @@ "disabled": "Disabilitato", "enabled": "Abilitato", "tor_only": "Solo Tor", - "unmatched_currencies": "La valuta del tuo portafoglio attuale non corrisponde a quella del QR scansionato" + "unmatched_currencies": "La valuta del tuo portafoglio attuale non corrisponde a quella del QR scansionato", + "contact_list_contacts": "Contatti", + "contact_list_wallets": "I miei portafogli" } diff --git a/res/values/strings_ja.arb b/res/values/strings_ja.arb index d699b070e..3c5a5d951 100644 --- a/res/values/strings_ja.arb +++ b/res/values/strings_ja.arb @@ -48,7 +48,7 @@ "outgoing" : "発信", "transactions_by_date" : "日付ごとの取引", "trades" : "取引", - "filters" : "フィルタ", + "filter_by": "でフィルタリング", "today" : "今日", "yesterday" : "昨日", "received" : "受け取った", @@ -656,6 +656,8 @@ "use_suggested": "推奨を使用", "do_not_share_warning_text" : "サポートを含め、これらを他の誰とも共有しないでください。\n\nあなたの資金は盗まれる可能性があります!", "help": "ヘルプ", + "all_transactions": "全取引", + "all_trades": "すべての取引", "connection_sync": "接続と同期", "security_and_backup": "セキュリティとバックアップ", "create_backup": "バックアップを作成", @@ -675,5 +677,7 @@ "disabled": "無効", "enabled": "有効", "tor_only": "Torのみ", - "unmatched_currencies": "現在のウォレットの通貨がスキャンされたQRの通貨と一致しません" + "unmatched_currencies": "現在のウォレットの通貨がスキャンされたQRの通貨と一致しません", + "contact_list_contacts": "連絡先", + "contact_list_wallets": "マイウォレット" } diff --git a/res/values/strings_ko.arb b/res/values/strings_ko.arb index 3761f4f93..216a3a143 100644 --- a/res/values/strings_ko.arb +++ b/res/values/strings_ko.arb @@ -48,7 +48,7 @@ "outgoing" : "나가는", "transactions_by_date" : "날짜 별 거래", "trades" : "거래", - "filters" : "필터", + "filter_by": "필터링 기준", "today" : "오늘", "yesterday" : "어제", "received" : "받았습니다", @@ -656,6 +656,8 @@ "use_suggested": "추천 사용", "do_not_share_warning_text" : "지원을 포함하여 다른 사람과 이러한 정보를 공유하지 마십시오.\n\n귀하의 자금은 도난당할 수 있고 도난당할 수 있습니다!", "help": "돕다", + "all_transactions": "모든 거래 창구", + "all_trades": "A모든 거래", "connection_sync": "연결 및 동기화", "security_and_backup": "보안 및 백업", "create_backup": "백업 생성", @@ -675,5 +677,7 @@ "disabled": "장애가 있는", "enabled": "사용", "tor_only": "Tor 뿐", - "unmatched_currencies": "현재 지갑의 통화가 스캔한 QR의 통화와 일치하지 않습니다." + "unmatched_currencies": "현재 지갑의 통화가 스캔한 QR의 통화와 일치하지 않습니다.", + "contact_list_contacts": "콘택트 렌즈", + "contact_list_wallets": "내 지갑" } diff --git a/res/values/strings_nl.arb b/res/values/strings_nl.arb index 426f9530a..9ac0cd1d1 100644 --- a/res/values/strings_nl.arb +++ b/res/values/strings_nl.arb @@ -48,7 +48,7 @@ "outgoing" : "Uitgaande", "transactions_by_date" : "Transacties op datum", "trades" : "Trades", - "filters" : "Filter", + "filter_by": "Filteren op", "today" : "Vandaag", "yesterday" : "Gisteren", "received" : "Ontvangen", @@ -656,6 +656,8 @@ "use_suggested": "Gebruik aanbevolen", "do_not_share_warning_text" : "Deel deze met niemand anders, ook niet met support.\n\nUw geld kan en zal worden gestolen!", "help": "helpen", + "all_transactions": "Alle transacties", + "all_trades": "Alle transacties", "connection_sync": "Verbinding en synchronisatie", "security_and_backup": "Beveiliging en back-up", "create_backup": "Maak een back-up", @@ -675,5 +677,7 @@ "disabled": "Gehandicapt", "enabled": "Ingeschakeld", "tor_only": "Alleen Tor", - "unmatched_currencies": "De valuta van uw huidige portemonnee komt niet overeen met die van de gescande QR" + "unmatched_currencies": "De valuta van uw huidige portemonnee komt niet overeen met die van de gescande QR", + "contact_list_contacts": "Contacten", + "contact_list_wallets": "Mijn portefeuilles" } diff --git a/res/values/strings_pl.arb b/res/values/strings_pl.arb index 2baf3cf48..dd200cc25 100644 --- a/res/values/strings_pl.arb +++ b/res/values/strings_pl.arb @@ -2,7 +2,7 @@ "welcome" : "Witamy w", "cake_wallet" : "Cake Wallet", "first_wallet_text" : "Świetny portfel na Monero, Bitcoin, Litecoin, i Haven", - "please_make_selection" : "Wybierz poniżej, aby cutwórz lub odzyskaj swój portfel.", + "please_make_selection" : "Wybierz poniżej, aby utworzyć lub przywrócić swój portfel.", "create_new" : "Utwórz nowy portfel", "restore_wallet" : "Przywróć portfel", @@ -13,90 +13,90 @@ "haven_app_wallet_text": "Awesome wallet for Haven", "accounts" : "Konta", - "edit" : "Edytować", + "edit" : "Edytuj", "account" : "Konto", "add" : "Dodaj", - "address_book" : "Książka adresowa", + "address_book" : "Kontakty", "contact" : "Kontakt", "please_select" : "Proszę wybrać:", - "cancel" : "Anulować", - "ok" : "Dobrze", + "cancel" : "Anuluj", + "ok" : "Ok", "contact_name" : "Nazwa Kontaktu", - "reset" : "Nastawić", - "save" : "Zapisać", + "reset" : "Wyczyść", + "save" : "Zapisz", "address_remove_contact" : "Usuń kontakt", "address_remove_content" : "Czy na pewno chcesz usunąć wybrany kontakt?", - "authenticated" : "Zalegalizowany", - "authentication" : "Poświadczenie", + "authenticated" : "Uwierzytelniony", + "authentication" : "Uwierzytelnianie", "failed_authentication" : "Nieudane uwierzytelnienie. ${state_error}", "wallet_menu" : "Menu portfela", - "Blocks_remaining" : "${status} Bloki pozostałe", + "Blocks_remaining" : "Pozostało ${status} bloków", "please_try_to_connect_to_another_node" : "Spróbuj połączyć się z innym węzłem", "xmr_hidden" : "Ukryty", - "xmr_available_balance" : "Dostępne saldo", - "xmr_full_balance" : "Pełna równowaga", - "send" : "Wysłać", - "receive" : "Otrzymać", + "xmr_available_balance" : "Dostępne środki", + "xmr_full_balance" : "Pełne saldo", + "send" : "Wyślij", + "receive" : "Otrzymaj", "transactions" : "Transakcje", "incoming" : "Przychodzące", - "outgoing" : "Towarzyski", + "outgoing" : "Wychodzące", "transactions_by_date" : "Transakcje według daty", "trades" : "Transakcje", - "filters" : "Filtr", + "filter_by": "Filtruj według", "today" : "Dzisiaj", "yesterday" : "Wczoraj", "received" : "Odebrane", "sent" : "Wysłano", "pending" : " (w oczekiwaniu)", "rescan" : "Skanuj ponownie", - "reconnect" : "Na nowo połączyć", + "reconnect" : "Połącz ponownie", "wallets" : "Portfele", - "show_seed" : "Pokaż nasiona", - "show_keys" : "Pokaż nasiona/klucze", - "address_book_menu" : "Książka adresowa", - "reconnection" : "Ponowne połączenie", - "reconnect_alert_text" : "Czy na pewno ponownie się połączysz?", + "show_seed" : "Pokaż frazy seed", + "show_keys" : "Pokaż seed/klucze", + "address_book_menu" : "Kontakty", + "reconnection" : "Ponowne łączenie", + "reconnect_alert_text" : "Czy na pewno ponownie się ponownie połączysz?", - "exchange" : "Wymieniać się", + "exchange" : "Wymień", "clear" : "Wyczyść", - "refund_address" : "Adres zwrotu", - "change_exchange_provider" : "Zmień dostawcę programu Exchange", + "refund_address" : "Adres do zwrotu", + "change_exchange_provider" : "Zmień dostawcę wymiany", "you_will_send" : "Konwertuj z", "you_will_get" : "Konwertuj na", "amount_is_guaranteed" : "Otrzymana kwota jest gwarantowana", "amount_is_estimate" : "Otrzymana kwota jest wartością szacunkową", - "powered_by" : "Zasilany przez ${title}", + "powered_by" : "Obsługiwane przez ${title}", "error" : "Błąd", "estimated" : "Oszacowano", "min_value" : "Min: ${value} ${currency}", "max_value" : "Max: ${value} ${currency}", - "change_currency" : "Change Currency", - "overwrite_amount" : "Overwrite amount", - "qr_payment_amount" : "This QR code contains a payment amount. Do you want to overwrite the current value?", + "change_currency" : "Zmień walutę", + "overwrite_amount" : "Nadpisz ilość", + "qr_payment_amount" : "Ten kod QR zawiera kwotę do zapłaty. Czy chcesz nadpisać obecną wartość?", - "copy_id" : "ID kopii", - "exchange_result_write_down_trade_id" : "Skopiuj lub zanotuj identyfikator transakcji, aby kontynuować.", - "trade_id" : "Identyfikator handlu:", - "copied_to_clipboard" : "Skopiowane do schowka", + "copy_id" : "skopiuj ID", + "exchange_result_write_down_trade_id" : "Skopiuj lub zanotuj identyfikator transakcji (ID), aby kontynuować.", + "trade_id" : "ID transakcji:", + "copied_to_clipboard" : "Skopiowano do schowka", "saved_the_trade_id" : "Zapisałem ID", - "fetching" : "Ujmujący", + "fetching" : "Pobieranie", "id" : "ID: ", "amount" : "Ilość: ", - "payment_id" : "Płatności ID: ", + "payment_id" : "ID Płatności: ", "status" : "Status: ", "offer_expires_in" : "Oferta wygasa za ", - "trade_is_powered_by" : "Ten handel jest zasilany przez ${provider}", + "trade_is_powered_by" : "Ta wymiana jest obsługiwana przez ${provider}", "copy_address" : "Skopiuj adress", "exchange_result_confirm" : "Naciskając Potwierdź, wyślesz ${fetchingLabel} ${from} z twojego portfela ${walletName} na adres podany poniżej. Lub możesz wysłać z zewnętrznego portfela na poniższy adres / kod QR.\n\nNaciśnij Potwierdź, aby kontynuować lub wróć, aby zmienić kwoty.", - "exchange_result_description" : "Musisz wysłać co najmniej ${fetchingLabel} ${from} na adres podany na następnej stronie. Jeśli wyślesz kwotę niższą niż ${fetchingLabel} ${from}, może ona nie zostać przeliczona i może nie zostać zwrócona.", - "exchange_result_write_down_ID" : "*Skopiuj lub zanotuj swój identyfikator pokazany powyżej.", + "exchange_result_description" : "Musisz wysłać co najmniej ${fetchingLabel} ${from} na adres podany na następnej stronie. Jeśli wyślesz kwotę niższą niż ${fetchingLabel} ${from}, może ona nie zostać uwzględniona i może nie zostać zwrócona.", + "exchange_result_write_down_ID" : "*Skopiuj lub zanotuj identyfikator transakcji pokazany powyżej.", "confirm" : "Potwierdzać", "confirm_sending" : "Potwierdź wysłanie", "commit_transaction_amount_fee" : "Zatwierdź transakcję\nIlość: ${amount}\nOpłata: ${fee}", @@ -104,13 +104,13 @@ "transaction_sent" : "Transakcja wysłana!", "expired" : "Przedawniony", "time" : "${minutes}m ${seconds}s", - "send_xmr" : "Wysłać XMR", - "exchange_new_template" : "Nowy szablon", + "send_xmr" : "Wyślij XMR", + "exchange_new_template" : "Nowy szablon wymiany", "faq" : "FAQ", - "enter_your_pin" : "Wpisz Twój kod PIN", + "enter_your_pin" : "Wpisz kod PIN", "loading_your_wallet" : "Ładowanie portfela", @@ -123,17 +123,17 @@ "node_new" : "Nowy węzeł", "node_address" : "Adres węzła", "node_port" : "Port węzła", - "login" : "Zaloguj Się", + "login" : "Login", "password" : "Hasło", "nodes" : "Węzły", - "node_reset_settings_title" : "Resetowanie ustawień", + "node_reset_settings_title" : "Zresetuj ustawienia węzłów", "nodes_list_reset_to_default_message" : "Czy na pewno chcesz przywrócić ustawienia domyślne?", - "change_current_node" : "Czy na pewno chcesz przywrócić ustawienia domyślne? ${node}?", - "change" : "Zmiana", + "change_current_node" : "Czy na pewno chcesz wybrać ten węzeł? ${node}?", + "change" : "Zmień", "remove_node" : "Usuń węzeł", "remove_node_message" : "Czy na pewno chcesz usunąć wybrany węzeł?", - "remove" : "Usunąć", - "delete" : "Kasować", + "remove" : "Usuń", + "delete" : "Skasuj", "add_new_node" : "Dodaj nowy węzeł", "change_current_node_title" : "Zmień bieżący węzeł", "node_test" : "Test", @@ -142,8 +142,8 @@ "new_node_testing" : "Testowanie nowych węzłów", - "use" : "Używać ", - "digit_pin" : "-znak PIN", + "use" : "Użyj ", + "digit_pin" : "-znakowy PIN", "share_address" : "Udostępnij adres", @@ -152,46 +152,46 @@ "addresses" : "Adresy", "scan_qr_code" : "Zeskanuj kod QR, aby uzyskać adres", "qr_fullscreen" : "Dotknij, aby otworzyć pełnoekranowy kod QR", - "rename" : "Przemianować", + "rename" : "Zmień nazwę", "choose_account" : "Wybierz konto", "create_new_account" : "Stwórz nowe konto", "accounts_subaddresses" : "Konta i podadresy", "restore_restore_wallet" : "Przywróć portfel", - "restore_title_from_seed_keys" : "Przywróć z nasion / kluczy", - "restore_description_from_seed_keys" : "Odzyskaj swój portfel z nasion / kluczy, które zapisałeś w bezpiecznym miejscu", + "restore_title_from_seed_keys" : "Przywróć z seedów / kluczy", + "restore_description_from_seed_keys" : "Odzyskaj swój portfel z seedów / kluczy, które zapisałeś w bezpiecznym miejscu", "restore_next" : "Kolejny", "restore_title_from_backup" : "Przywróć z pliku kopii zapasowej", - "restore_description_from_backup" : "Możesz przywrócić całą aplikację Cake Wallet z plik kopii zapasowej", - "restore_seed_keys_restore" : "Przywracanie nasion / kluczy", - "restore_title_from_seed" : "Przywróć z nasion", - "restore_description_from_seed" : "Przywróć swój portfel z 25 słów lub 13-słowny kod kombinacji", + "restore_description_from_backup" : "Możesz przywrócić całą aplikację Cake Wallet z pliku kopii zapasowej", + "restore_seed_keys_restore" : "Przywracanie seedów / kluczy", + "restore_title_from_seed" : "Przywróć z seedów", + "restore_description_from_seed" : "Przywróć swój portfel z 25 lub 13-słownej frazy seed", "restore_title_from_keys" : "Przywróć z kluczy", - "restore_description_from_keys" : "Przywróć swój portfel z wygenerowanego naciśnięcia klawiszy zapisane z kluczy prywatnych", + "restore_description_from_keys" : "Przywróć swój portfel z kluczy prywatnych", "restore_wallet_name" : "Nazwa portfela", "restore_address" : "Adres", - "restore_view_key_private" : "Wyświetl klucz (prywatny)", - "restore_spend_key_private" : "Wydaj klucz (prywatny)", - "restore_recover" : "Wyzdrowieć", - "restore_wallet_restore_description" : "Opis przywracania portfela", - "restore_new_seed" : "Nowe nasienie", - "restore_active_seed" : "Aktywne nasiona", - "restore_bitcoin_description_from_seed" : "Przywróć swój portfel z kodu złożonego z 24 słów", - "restore_bitcoin_description_from_keys" : "Przywróć swój portfel z wygenerowanego ciągu WIF z kluczy prywatnych", - "restore_bitcoin_title_from_keys" : "Przywróć z WIF", - "restore_from_date_or_blockheight" : "Wprowadź datę na kilka dni przed utworzeniem tego portfela. Lub jeśli znasz wysokość bloku, wprowadź go zamiast tego", + "restore_view_key_private" : "Podaj klucz prywatny", + "restore_spend_key_private" : "Podaj prywatny klucz wglądu (view key)", + "restore_recover" : "Przywróć", + "restore_wallet_restore_description" : "Przywracanie portfela", + "restore_new_seed" : "Nowy seed", + "restore_active_seed" : "Aktywne seedy", + "restore_bitcoin_description_from_seed" : "Przywróć swój portfel z frazy seed złożonej z 24 słów", + "restore_bitcoin_description_from_keys" : "Przywróć swój portfel z klucza prywatnego", + "restore_bitcoin_title_from_keys" : "Przywróć z klucza prywatnego", + "restore_from_date_or_blockheight" : "Wprowadź datę na kilka dni przed utworzeniem tego portfela, lub jeśli znasz wysokość bloku, wprowadź go zamiast daty", - "seed_reminder" : "Zapisz je na wypadek zgubienia lub wyczyszczenia telefonu", - "seed_title" : "Ziarno", - "seed_share" : "Udostępnij ziarno", + "seed_reminder" : "Musisz zapisać tą fraze, bo bez niej możesz nie odzyskać portfela!", + "seed_title" : "Seed", + "seed_share" : "Udostępnij seed", "copy" : "Kopiuj", - "seed_language_choose" : "Proszę wybrać język początkowy:", - "seed_choose" : "Wybierz język początkowy", - "seed_language_next" : "Kolejny", + "seed_language_choose" : "Proszę wybrać język słów we frazie seed:", + "seed_choose" : "Wybierz język", + "seed_language_next" : "Następny", "seed_language_english" : "Angielski", "seed_language_chinese" : "Chiński", "seed_language_dutch" : "Holenderski", @@ -209,7 +209,7 @@ "send_address" : "Adres ${cryptoCurrency}", "send_payment_id" : "Identyfikator płatności (opcjonalny)", "all" : "WSZYSTKO", - "send_error_minimum_value" : "Minimalna wartość kwoty to 0,01", + "send_error_minimum_value" : "Minimalna wartość to 0,01", "send_error_currency" : "Waluta może zawierać tylko cyfry", "send_estimated_fee" : "Szacowana opłata:", "send_priority" : "Obecnie opłata ustalona jest na ${transactionPriority} priorytet.\nPriorytet transakcji można zmienić w ustawieniach", @@ -219,7 +219,7 @@ "send_amount" : "Ilość:", "send_fee" : "Opłata:", "send_name" : "Imię", - "send_got_it" : "Rozumiem", + "send_got_it" : "Wysłano", "send_sending" : "Wysyłanie...", "send_success" : "Twoje ${crypto} zostało pomyślnie wysłane", @@ -232,21 +232,21 @@ "settings_currency" : "Waluta", "settings_fee_priority" : "Priorytet opłaty", "settings_save_recipient_address" : "Zapisz adres odbiorcy", - "settings_personal" : "Osobisty", + "settings_personal" : "Osobiste", "settings_change_pin" : "Zmień PIN", "settings_change_language" : "Zmień język", "settings_allow_biometrical_authentication" : "Zezwalaj na uwierzytelnianie biometryczne", "settings_dark_mode" : "Tryb ciemny", "settings_transactions" : "Transakcje", "settings_trades" : "Transakcje", - "settings_display_on_dashboard_list" : "Wyświetl na liście kokpitu", - "settings_all" : "Cały", + "settings_display_on_dashboard_list" : "Wyświetl na pulpicie", + "settings_all" : "Wszystkie", "settings_only_trades" : "Tylko transakcje", "settings_only_transactions" : "Tylko transakcje", "settings_none" : "Żaden", "settings_support" : "Wsparcie", "settings_terms_and_conditions" : "Zasady i warunki", - "pin_is_incorrect" : "PPIN jest niepoprawny", + "pin_is_incorrect" : "PIN jest niepoprawny", "setup_pin" : "Ustaw PIN", @@ -254,47 +254,47 @@ "setup_successful" : "Twój kod PIN został pomyślnie skonfigurowany!", - "wallet_keys" : "Nasiono portfela/klucze", - "wallet_seed" : "Nasiono portfela", - "private_key" : "Prywatny klucz", + "wallet_keys" : "Klucze portfela", + "wallet_seed" : "Seed portfela", + "private_key" : "Klucz prywatny", "public_key" : "Klucz publiczny", - "view_key_private" : "Wyświetl klucz (prywatny)", - "view_key_public" : "Wyświetl klucz (publiczny)", - "spend_key_private" : "Wydaj klucz (prywatny)", - "spend_key_public" : "Wydaj klucz (publiczny)", - "copied_key_to_clipboard" : "Skopiowane ${key} do schowka", + "view_key_private" : "Prywatny Klucz Wglądu", + "view_key_public" : "Publiczny Klucz Wglądu", + "spend_key_private" : "Klucz prywatny", + "spend_key_public" : "Klucz publiczny", + "copied_key_to_clipboard" : "Skopiowaneo ${key} do schowka", "new_subaddress_title" : "Nowy adres", - "new_subaddress_label_name" : "Nazwa etykiety", + "new_subaddress_label_name" : "Etykieta nazwy adresu", "new_subaddress_create" : "Stwórz", - "address_label" : "Address label", + "address_label" : "Etykieta Adresu", "subaddress_title" : "Lista podadresów", - "trade_details_title" : "Szczegóły handlu", + "trade_details_title" : "Szczegóły transakcji", "trade_details_id" : "ID", - "trade_details_state" : "Stan", - "trade_details_fetching" : "Ujmujący", + "trade_details_state" : "Status", + "trade_details_fetching" : "Pobieranie", "trade_details_provider" : "Dostawca", - "trade_details_created_at" : "Utworzono w", + "trade_details_created_at" : "Utworzono ", "trade_details_pair" : "Para", "trade_details_copied" : "${title} skopiowane do schowka", - "trade_history_title" : "Historia handlu", + "trade_history_title" : "Historia wymian", "transaction_details_title" : "Szczegóły transakcji", - "transaction_details_transaction_id" : "Transakcja ID", + "transaction_details_transaction_id" : "ID Trancakcji", "transaction_details_date" : "Data", - "transaction_details_height" : "Wysokość", + "transaction_details_height" : "Wysokość Bloku", "transaction_details_amount" : "Ilość", "transaction_details_fee" : "Opłata", "transaction_details_copied" : "${title} skopiowane do schowka", - "transaction_details_recipient_address" : "Adresy odbiorców", + "transaction_details_recipient_address" : "Adres odbiorcy", "wallet_list_title" : "Portfel Monero", @@ -311,23 +311,23 @@ "widgets_restore_from_blockheight" : "Przywróć z wysokości bloku", "widgets_restore_from_date" : "Przywróć od daty", "widgets_or" : "lub", - "widgets_seed" : "Ziarno", + "widgets_seed" : "Seed", "router_no_route" : "Brak zdefiniowanej trasy dla ${name}", "error_text_account_name" : "Nazwa konta może zawierać tylko litery, cyfry\ni musi mieć od 1 do 15 znaków", - "error_text_contact_name" : "Nazwa kontaktu nie może zawierać` , ' \" symbolika\ni musi mieć od 1 do 32 znaków ", - "error_text_address" : "Wallet address must correspond to the type\nof cryptocurrency", + "error_text_contact_name" : "Nazwa kontaktu nie może zawierać symboli ` , ' \"\ni musi mieć od 1 do 32 znaków ", + "error_text_address" : "Adres musi odpowiadać typowi kryptowaluty", "error_text_node_address" : "Wpisz adres iPv4", "error_text_node_port" : "Port węzła może zawierać tylko liczby od 0 do 65535", "error_text_payment_id" : "ID może zawierać od 16 do 64 znaków w formacie szesnastkowym", "error_text_xmr" : "Wartość XMR nie może przekraczać dostępnego salda.\nLiczba cyfr ułamkowych musi być mniejsza lub równa 12", "error_text_fiat" : "Wartość kwoty nie może przekroczyć dostępnego salda.\nLiczba cyfr ułamkowych musi być mniejsza lub równa 2", - "error_text_subaddress_name" : "Nazwa podadresu nie może zawierać ` , ' \" symbolika\ni musi mieć od 1 do 20 znaków", + "error_text_subaddress_name" : "Nazwa podadresu nie może zawierać symboli ` , ' \"\ni musi mieć od 1 do 20 znaków", "error_text_amount" : "Kwota może zawierać tylko liczby", - "error_text_wallet_name" : "Nazwa portfela może zawierać tylko litery, cyfry, _ - symbole\ni musi mieć od 1 do 33 znaków", + "error_text_wallet_name" : "Nazwa portfela może zawierać tylko litery, cyfry lub symbole _ - \ni musi mieć od 1 do 33 znaków", "error_text_keys" : "Klucze portfela mogą zawierać tylko 64 znaki w systemie szesnastkowym", "error_text_crypto_currency" : "Liczba cyfr ułamkowych\nmusi być mniejsza lub równa 12", "error_text_minimal_limit" : "Wymiana dla ${provider} nie została utworzona. Kwota jest mniejsza niż minimalna: ${min} ${currency}", @@ -337,69 +337,69 @@ "auth_store_ban_timeout" : "przekroczenie limitu czasu", - "auth_store_banned_for" : "Bzbanowany za ", + "auth_store_banned_for" : "Zablokowany za ", "auth_store_banned_minutes" : " minuty", "auth_store_incorrect_password" : "Niepoprawny PIN", "wallet_store_monero_wallet" : "Portfel Monero", - "wallet_restoration_store_incorrect_seed_length" : "Nieprawidłowa długość nasion", + "wallet_restoration_store_incorrect_seed_length" : "Nieprawidłowa długość frazy seed", - "full_balance" : "Pełna równowaga", - "available_balance" : "Dostępne saldo", - "hidden_balance" : "Ukryta równowaga", + "full_balance" : "Pełne saldo", + "available_balance" : "Dostępne środki", + "hidden_balance" : "Ukryte saldo", "sync_status_syncronizing" : "SYNCHRONIZACJA", - "sync_status_syncronized" : "SYNCHRONIZOWANY", + "sync_status_syncronized" : "SYNCHRONIZOWANIE", "sync_status_not_connected" : "NIE POŁĄCZONY", "sync_status_starting_sync" : "ROZPOCZĘCIE SYNCHRONIZACJI", - "sync_status_failed_connect" : "NIEPOWIĄZANY", - "sync_status_connecting" : "ZŁĄCZONY", + "sync_status_failed_connect" : "POŁĄCZENIE NIEUDANE", + "sync_status_connecting" : "ŁĄCZENIE", "sync_status_connected" : "POŁĄCZONY", "sync_status_attempting_sync" : "PRÓBA SYNCHRONIZACJI", - "transaction_priority_slow" : "Powolny", - "transaction_priority_regular" : "Regularny", - "transaction_priority_medium" : "Średni", - "transaction_priority_fast" : "Szybki", - "transaction_priority_fastest" : "Najszybszy", + "transaction_priority_slow" : "Wolna(Zalecane)", + "transaction_priority_regular" : "Regularna", + "transaction_priority_medium" : "Średnia", + "transaction_priority_fast" : "Szybka", + "transaction_priority_fastest" : "Najszybsza", - "trade_for_not_created" : "Zamienić się za ${title} nie jest tworzony.", - "trade_not_created" : "Handel nie utworzony", - "trade_id_not_found" : "Handel ${tradeId} of ${title} nie znaleziono.", - "trade_not_found" : "Nie znaleziono handlu.", + "trade_for_not_created" : "Wymiana za ${title} nie została utworzona.", + "trade_not_created" : "Wymiana nie została utworzona", + "trade_id_not_found" : "Transakcja ${tradeId} ${title} nie znaleziona.", + "trade_not_found" : "Nie znaleziono transakcji.", - "trade_state_pending" : "W oczekiwaniu", - "trade_state_confirming" : "Potwierdzam", - "trade_state_trading" : "Handlowy", - "trade_state_traded" : "Handlowane", - "trade_state_complete" : "Kompletny", - "trade_state_to_be_created" : "Zostać stworzonym", - "trade_state_unpaid" : "Nie zapłacony", + "trade_state_pending" : "Oczekująca", + "trade_state_confirming" : "Potwierdzanie", + "trade_state_trading" : "Wymiana", + "trade_state_traded" : "Wymienione", + "trade_state_complete" : "Ukończona", + "trade_state_to_be_created" : "Została stworzona", + "trade_state_unpaid" : "Nie opłacona", "trade_state_underpaid" : "Niedopłacone", - "trade_state_paid_unconfirmed" : "Płatne niepotwierdzone", - "trade_state_paid" : "Płatny", - "trade_state_btc_sent" : "Wysłane", + "trade_state_paid_unconfirmed" : "Transakcja niepotwierdzona", + "trade_state_paid" : "Opłacona", + "trade_state_btc_sent" : "Wysłanie", "trade_state_timeout" : "Koniec czasu", - "trade_state_created" : "Stworzony", - "trade_state_finished" : "Skończone", + "trade_state_created" : "Stworzona", + "trade_state_finished" : "Zakończona", "change_language" : "Zmień język", "change_language_to" : "Zmień język na ${language}?", - "paste" : "Pasta", - "restore_from_seed_placeholder" : "Wpisz lub wklej tutaj swoją frazę kodową", + "paste" : "Wklej", + "restore_from_seed_placeholder" : "Wpisz lub wklej tutaj swoją frazę seed", "add_new_word" : "Dodaj nowe słowo", - "incorrect_seed" : "Wprowadzony tekst jest nieprawidłowy.", + "incorrect_seed" : "Wprowadzony seed jest nieprawidłowy.", - "biometric_auth_reason" : "Zeskanuj swój odcisk palca, aby go uwierzytelnić", + "biometric_auth_reason" : "Zeskanuj swój odcisk palca, aby uwierzytelnić", "version" : "Wersja ${currentVersion}", "openalias_alert_title" : "Wykryto Adres", - "openalias_alert_content" : "Będziesz wysyłać środki na\n${recipient_name}", + "openalias_alert_content" : "Wysyłasz środki na\n${recipient_name}", "card_address" : "Adres:", "buy" : "Kup", @@ -418,36 +418,36 @@ "change_wallet_alert_content" : "Czy chcesz zmienić obecny portfel na ${wallet_name}?", "creating_new_wallet" : "Tworzenie nowego portfela", - "creating_new_wallet_error" : "Pomyłka: ${description}", + "creating_new_wallet_error" : "Błąd: ${description}", "seed_alert_title" : "Uwaga", - "seed_alert_content" : "Ziarno to jedyny sposób na odzyskanie portfela. Zapisałeś to?", + "seed_alert_content" : "Fraza Seed to jedyny sposób na odzyskanie portfela. Zapisałeś ją?", "seed_alert_back" : "Wróć", "seed_alert_yes" : "Tak", "exchange_sync_alert_content" : "Poczekaj, aż portfel zostanie zsynchronizowany", "pre_seed_title" : "WAŻNY", - "pre_seed_description" : "Na następnej stronie zobaczysz serię ${words} słów. To jest Twoje unikalne i prywatne ziarno i jest to JEDYNY sposób na odzyskanie portfela w przypadku utraty lub awarii. Twoim obowiązkiem jest zapisanie go i przechowywanie w bezpiecznym miejscu poza aplikacją Cake Wallet.", - "pre_seed_button_text" : "Rozumiem. Pokaż mi moje nasienie", + "pre_seed_description" : "Na następnej stronie zobaczysz serię ${words} słów. To jest Twoja unikalna i prywatna fraza seed i jest to JEDYNY sposób na odzyskanie portfela w przypadku utraty lub awarii telefonu. Twoim obowiązkiem jest zapisanie go i przechowywanie w bezpiecznym miejscu (np. na kartce w SEJFIE).", + "pre_seed_button_text" : "Rozumiem. Pokaż mi moją fraze seed", - "xmr_to_error" : "Pomyłka XMR.TO", - "xmr_to_error_description" : "Nieprawidłowa kwota. Maksymalny limit 8 cyfr po przecinku", + "xmr_to_error" : "Błąd XMR.TO", + "xmr_to_error_description" : "Nieprawidłowa kwota. Maksymalny limit to 8 cyfr po przecinku", "provider_error" : "${provider} pomyłka", "use_ssl" : "Użyj SSL", - "trusted" : "zaufany", + "trusted" : "Zaufany", "color_theme" : "Motyw kolorystyczny", - "light_theme" : "Lekki", - "bright_theme" : "Jasny", + "light_theme" : "Jasny", + "bright_theme" : "Biały", "dark_theme" : "Ciemny", "enter_your_note" : "Wpisz notatkę…", "note_optional" : "Notatka (opcjonalnie)", "note_tap_to_change" : "Notatka (dotknij, aby zmienić)", - "view_in_block_explorer" : "View in Block Explorer", - "view_transaction_on" : "View Transaction on ", + "view_in_block_explorer" : "Zobacz w eksploratorze bloków", + "view_transaction_on" : "Zobacz transakcje na ", "transaction_key" : "Klucz transakcji", "confirmations" : "Potwierdzenia", "recipient_address" : "Adres odbiorcy", @@ -456,27 +456,27 @@ "destination_tag" : "Tag docelowy:", "memo" : "Notatka:", - "backup" : "Kopię zapasową", + "backup" : "Kopia zapasowa", "change_password" : "Zmień hasło", - "backup_password" : "Hasło zapasowe", - "write_down_backup_password" : "Zapisz swoje hasło zapasowe, które jest używane do importowania plików kopii zapasowych.", + "backup_password" : "Hasło kpoii zapasowej", + "write_down_backup_password" : "Zapisz swoje hasło kopii zapasowej, które jest używane do importowania plików kopii zapasowych.", "export_backup" : "Eksportuj kopię zapasową", - "save_backup_password" : "Upewnij się, że zapisałeś swoje zapasowe hasło. Bez tego nie będziesz mógł importować plików kopii zapasowej.", + "save_backup_password" : "Upewnij się, że zapisałeś swoje hasło kopii zapasowej. Bez tego nie będziesz mógł zaimportować pliku kopii zapasowej.", "backup_file" : "Plik kopii zapasowej", "edit_backup_password" : "Edytuj hasło kopii zapasowej", - "save_backup_password_alert" : "Zapisz hasło zapasowe", - "change_backup_password_alert" : "Twoje poprzednie pliki kopii zapasowej nie będą dostępne do zaimportowania z nowym hasłem kopii zapasowej. Nowe hasło zapasowe będzie używane tylko dla nowych plików kopii zapasowych. Czy na pewno chcesz zmienić hasło zapasowe?", + "save_backup_password_alert" : "Zapisz hasło kopii zapasowej", + "change_backup_password_alert" : "Twoje poprzednie pliki kopii zapasowej nie będą dostępne do zaimportowania z nowym hasłem kopii zapasowej. Nowe hasło kopii zapasowej będzie używane tylko dla nowych plików kopii zapasowych. Czy na pewno chcesz zmienić hasło zapasowe?", - "enter_backup_password" : "Wprowadź tutaj hasło zapasowe", + "enter_backup_password" : "Wprowadź tutaj hasło kopii zapasowej", "select_backup_file" : "Wybierz plik kopii zapasowej", - "import" : "Import", - "please_select_backup_file" : "Wybierz plik kopii zapasowej i wprowadź hasło zapasowe.", + "import" : "Zaimportuj", + "please_select_backup_file" : "Wybierz plik kopii zapasowej i wprowadź hasło.", "fixed_rate" : "Stała stawka", - "fixed_rate_alert" : "Będziesz mógł wprowadzić kwotę otrzymaną, gdy zaznaczony jest tryb stałej stawki. Czy chcesz przejść do trybu stałej stawki?", + "fixed_rate_alert" : "Będziesz mógł wprowadzić kwotę do otrzymania, gdy wybrany bedzie tryb stałego przeliczenia. Czy chcesz przejść do trybu stałej stawki?", - "xlm_extra_info" : "Nie zapomnij podać identyfikatora notatki podczas wysyłania transakcji XLM do wymiany", + "xlm_extra_info" : "Nie zapomnij podać dodatkowego identyfikatora (memo) podczas wysyłania transakcji XLM do wymiany", "xrp_extra_info" : "Nie zapomnij podać tagu docelowego podczas wysyłania transakcji XRP do wymiany", "exchange_incorrect_current_wallet_for_xmr" : "Jeśli chcesz wymienić XMR z salda Cake Wallet Monero, najpierw przełącz się na portfel Monero.", @@ -484,12 +484,12 @@ "unconfirmed" : "Niepotwierdzony", "displayable" : "Wyświetlane", - "submit_request" : "złożyć wniosek", + "submit_request" : "Złóż wniosek", - "buy_alert_content" : "Obecnie obsługujemy tylko zakup Bitcoin i Litecoin. Aby kupić Bitcoin lub Litecoin, utwórz lub przełącz się na swój portfel Bitcoin lub Litecoin.", + "buy_alert_content" : "Obecnie obsługujemy tylko zakup Bitcoina i Litecoina. Aby kupić Bitcoin lub Litecoin, utwórz lub przełącz się na swój portfel Bitcoin lub Litecoin.", "sell_alert_content": "Obecnie obsługujemy tylko sprzedaż Bitcoina. Aby sprzedać Bitcoin, utwórz lub przełącz się na swój portfel Bitcoin.", - "outdated_electrum_wallet_description" : "Nowe portfele Bitcoin utworzone w Cake mają teraz ziarno składające się z 24 słów. Konieczne jest utworzenie nowego portfela Bitcoin i przeniesienie wszystkich środków do nowego portfela na 24 słowa oraz zaprzestanie korzystania z portfeli z zalążkiem na 12 słów. Zrób to natychmiast, aby zabezpieczyć swoje fundusze.", + "outdated_electrum_wallet_description" : "Nowe portfele Bitcoin utworzone w Cake mają teraz fraze seed składające się z 24 słów. Konieczne jest utworzenie nowego portfela Bitcoin i przeniesienie wszystkich środków do nowego portfela na 24 słowa oraz zaprzestanie korzystania z portfeli z frazą seed na 12 słów. Zrób to natychmiast, aby zabezpieczyć swoje fundusze.", "understand" : "Rozumiem", "apk_update" : "Aktualizacja APK", @@ -498,19 +498,19 @@ "buy_with" : "Kup za pomocą", "moonpay_alert_text" : "Wartość kwoty musi być większa lub równa ${minAmount} ${fiatCurrency}", - "outdated_electrum_wallet_receive_warning": "Jeśli ten portfel ma 12-wyrazowy seed i został utworzony w Cake, NIE Wpłacaj Bitcoina do tego portfela. Wszelkie BTC przeniesione do tego portfela mogą zostać utracone. Utwórz nowy portfel z 24 słowami (dotknij menu w prawym górnym rogu, wybierz Portfele, wybierz Utwórz nowy portfel, a następnie Bitcoin) i NATYCHMIAST przenieś tam swoje BTC. Nowe (24 słowa) portfele BTC firmy Cake są bezpieczne", + "outdated_electrum_wallet_receive_warning": "Jeśli ten portfel ma 12-wyrazowy seed i został utworzony w Cake, NIE Wpłacaj Bitcoina do tego portfela. Wszelkie BTC przeniesione do tego portfela mogą zostać utracone. Utwórz nowy portfel z 24 słowami (dotknij menu w prawym górnym rogu, wybierz Portfele, wybierz Utwórz nowy portfel, a następnie Bitcoin) i NATYCHMIAST przenieś tam swoje BTC. Nowe (24 słowa) portfele BTC Cake Wallet są bezpieczne", "do_not_show_me": "Nie pokazuj mi tego ponownie", "unspent_coins_title" : "Niewydane monety", "unspent_coins_details_title" : "Szczegóły niewydanych monet", - "freeze" : "Zamrażać", - "frozen" : "Mrożony", + "freeze" : "Zamróź", + "frozen" : "Zamrożone", "coin_control" : "Kontrola monet (opcjonalnie)", "address_detected" : "Wykryto adres", - "address_from_domain" : "Ten adres jest od ${domain} na Unstoppable Domains", + "address_from_domain" : "Ten adres to ${domain} na Unstoppable Domains", - "add_receiver" : "Dodaj kolejny odbiornik (opcjonalnie)", + "add_receiver" : "Dodaj kolejnego odbiorcę (opcjonalnie)", "manage_yats" : "Zarządzaj Yats", "yat_alert_title" : "Łatwiejsze wysyłanie i odbieranie kryptowalut dzięki Yat", @@ -521,21 +521,21 @@ "yat" : "Yat", "connect_yats": "Połącz Yats", "address_from_yat" : "Ten adres jest od ${emoji} na Yat", - "yat_error" : "Pomyłka Yata", + "yat_error" : "Błąd Yat", "yat_error_content" : "Brak adresów powiązanych z tym Yat. Wypróbuj inny Yat", "choose_address" : "\n\nWybierz adres:", - "yat_popup_title" : "Twój adres portfela może być emojified.", + "yat_popup_title" : "Twój adres portfela może być zemotkowany.", "yat_popup_content" : "Możesz teraz wysyłać i odbierać krypto w Cake Wallet za pomocą swojego Yat – krótkiej nazwy użytkownika opartej na emotikonach. Zarządzaj Yats w dowolnym momencie na ekranie ustawień", - "second_intro_title" : "Jeden adres emoji, aby rządzić nimi wszystkimi", + "second_intro_title" : "Jeden adres emoji, aby zarzadzać wszystkimi walutami", "second_intro_content" : "Twój Yat to jeden unikalny adres emoji, który zastępuje wszystkie Twoje długie adresy szesnastkowe dla wszystkich Twoich walut.", "third_intro_title" : "Yat ładnie bawi się z innymi", "third_intro_content" : "Yats mieszkają również poza Cake Wallet. Każdy adres portfela na ziemi można zastąpić Yat!", - "learn_more" : "Ucz się więcej", + "learn_more" : "Dowiedz się więcej", "search": "Szukaj", "search_language": "Wyszukaj język", "search_currency": "Wyszukaj walutę", "new_template" : "Nowy szablon", - "electrum_address_disclaimer": "Za każdym razem, gdy korzystasz z jednego z nich, generujemy nowe adresy, ale poprzednie adresy nadal działają", + "electrum_address_disclaimer": "Za każdym razem, gdy wykorzystasz adres, dla wiekszej prywatności generujemy nowy, ale poprzednie adresy nadal działają, i moga odbierać środki", "wallet_name_exists": "Portfel o tej nazwie już istnieje", "market_place": "Rynek", "cake_pay_title": "Karty podarunkowe Cake Pay", @@ -553,16 +553,16 @@ "reset_password": "Zresetuj hasło", "gift_cards": "Karty podarunkowe", "setup_your_debit_card": "Skonfiguruj swoją kartę debetową", - "no_id_required": "Nie wymagamy ID. Doładuj i wydawaj gdziekolwiek", - "how_to_use_card": "Jak korzystać z tej karty", + "no_id_required": "Nie wymagamy Dowodu. Doładuj i wydawaj gdziekolwiek", + "how_to_use_card": "Jak korzystać z tej karty?", "purchase_gift_card": "Kup kartę podarunkową", "verification": "Weryfikacja", - "fill_code": "Proszę wpisać kod weryfikacyjny podany w wiadomości e-mail", - "dont_get_code": "Nie odbierasz kodu?", + "fill_code": "Proszę wpisać kod weryfikacyjny który otrzymałeś w wiadomości e-mail", + "dont_get_code": "Nie dostałeś kodu?", "resend_code": "Wyślij go ponownie", "debit_card": "Karta debetowa", "cakepay_prepaid_card": "Przedpłacona karta debetowa CakePay", - "no_id_needed": "Nie potrzeba ID!", + "no_id_needed": "Nie potrzeba Dowodu!", "frequently_asked_questions": "Często zadawane pytania", "debit_card_terms": "Przechowywanie i używanie numeru karty płatniczej (oraz danych uwierzytelniających odpowiadających numerowi karty płatniczej) w tym portfelu cyfrowym podlega Warunkom odpowiedniej umowy posiadacza karty z wydawcą karty płatniczej, zgodnie z obowiązującym od od czasu do czasu.", "please_reference_document": "Proszę odwołać się do poniższych dokumentów, aby uzyskać więcej informacji.", @@ -626,7 +626,7 @@ "mark_as_redeemed": "Oznacz jako wykorzystany", "more_options": "Więcej opcji", "awaiting_payment_confirmation": "Oczekiwanie na potwierdzenie płatności", - "transaction_sent_notice": "Jeśli ekran nie pojawi się po 1 minucie, sprawdź eksplorator bloków i swój e-mail.", + "transaction_sent_notice": "Jeśli ekran nie zmieni się po 1 minucie, sprawdź eksplorator bloków i swój e-mail.", "agree": "Zgadzam się", "in_store": "W Sklepie", "generating_gift_card": "Generowanie karty podarunkowej", @@ -637,7 +637,7 @@ "open_gift_card": "Otwórz kartę podarunkową", "contact_support": "Skontaktuj się z pomocą techniczną", "gift_cards_unavailable": "Karty podarunkowe można obecnie kupić tylko za pośrednictwem Monero, Bitcoin i Litecoin", - "introducing_cake_pay": "Przedstawiamy Ciasto Pay!", + "introducing_cake_pay": "Przedstawiamy Cake Pay!", "cake_pay_learn_more": "Kupuj i wykorzystuj karty podarunkowe od razu w aplikacji!\nPrzesuń od lewej do prawej, aby dowiedzieć się więcej.", "automatic": "Automatyczny", "fixed_pair_not_supported": "Ta stała para nie jest obsługiwana na wybranych giełdach", @@ -654,8 +654,10 @@ "low_fee_alert": "Obecnie korzystasz z niskiego priorytetu opłaty sieciowej. Może to spowodować długie oczekiwanie, różne stawki lub anulowane transakcje. Zalecamy ustawienie wyższej opłaty, aby zapewnić lepsze wrażenia.", "ignor": "Ignorować", "use_suggested": "Użyj sugerowane", - "do_not_share_warning_text" : "Nie udostępniaj ich nikomu innemu, w tym pomocy.\n\nTwoje środki mogą i zostaną skradzione!", + "do_not_share_warning_text" : "NIE udostępniaj ich nikomu innemu, w tym pomocy technicznej.\n\nTwoje środki wtedy prawdopodobnie zostaną skradzione!", "help": "pomoc", + "all_transactions": "Wszystkie transakcje", + "all_trades": "Wszystkie operacje", "connection_sync": "Połączenie i synchronizacja", "security_and_backup": "Bezpieczeństwo i kopia zapasowa", "create_backup": "Utwórz kopię zapasową", @@ -670,10 +672,12 @@ "advanced_privacy_settings": "Zaawansowane ustawienia prywatności", "settings_can_be_changed_later": "Te ustawienia można później zmienić w ustawieniach aplikacji", "add_custom_node": "Dodaj nowy węzeł niestandardowy", - "disable_fiat": "Wyłącz fiat", - "fiat_api": "API Fiata", + "disable_fiat": "Wyłącz waluty FIAT", + "fiat_api": "API Walut FIAT", "disabled": "Wyłączone", - "enabled": "Włączony", - "tor_only": "Tylko Tor", - "unmatched_currencies": "Waluta Twojego obecnego portfela nie odpowiada walucie zeskanowanego kodu QR" + "enabled": "Włączone", + "tor_only": "Tylko sieć Tor", + "unmatched_currencies": "Waluta Twojego obecnego portfela nie zgadza się z waluctą zeskanowanego kodu QR", + "contact_list_contacts": "Łączność", + "contact_list_wallets": "Moje portfele" } diff --git a/res/values/strings_pt.arb b/res/values/strings_pt.arb index 9cb077f1b..8529aadb8 100644 --- a/res/values/strings_pt.arb +++ b/res/values/strings_pt.arb @@ -48,7 +48,7 @@ "outgoing" : "Enviadas", "transactions_by_date" : "Transações por data", "trades" : "Trocas", - "filters" : "Filtro", + "filter_by": "Filtrar por", "today" : "Hoje", "yesterday" : "Ontem", "received" : "Recebida", @@ -655,6 +655,8 @@ "use_suggested": "Uso sugerido", "do_not_share_warning_text" : "Não os compartilhe com mais ninguém, incluindo suporte.\n\nSeus fundos podem e serão roubados!", "help": "ajuda", + "all_transactions": "Todas as transacções", + "all_trades": "Todas as negociações", "connection_sync": "Conexão e sincronização", "security_and_backup": "Segurança e backup", "create_backup": "Criar backup", @@ -674,5 +676,7 @@ "disabled": "Desabilitado", "enabled": "Habilitado", "tor_only": "Tor apenas", - "unmatched_currencies": "A moeda da sua carteira atual não corresponde à do QR digitalizado" + "unmatched_currencies": "A moeda da sua carteira atual não corresponde à do QR digitalizado", + "contact_list_contacts": "Contatos", + "contact_list_wallets": "minhas carteiras" } diff --git a/res/values/strings_ru.arb b/res/values/strings_ru.arb index 3772a0d2c..1ba5fd85c 100644 --- a/res/values/strings_ru.arb +++ b/res/values/strings_ru.arb @@ -48,7 +48,7 @@ "outgoing" : "Исходящие", "transactions_by_date" : "Сортировать по дате", "trades" : "Сделки", - "filters" : "Фильтр", + "filter_by": "Фильтровать по", "today" : "Сегодня", "yesterday" : "Вчера", "received" : "Полученные", @@ -656,6 +656,8 @@ "use_suggested": "Использовать предложенный", "do_not_share_warning_text" : "Не сообщайте их никому, включая техподдержку.\n\nВаши средства могут и будут украдены!", "help": "помощь", + "all_transactions": "Все транзакции", + "all_trades": "Все сделки", "connection_sync": "Подключение и синхронизация", "security_and_backup": "Безопасность и резервное копирование", "create_backup": "Создать резервную копию", @@ -675,5 +677,7 @@ "disabled": "Отключено", "enabled": "Включено", "tor_only": "Только Tor", - "unmatched_currencies": "Валюта вашего текущего кошелька не соответствует валюте отсканированного QR-кода." + "unmatched_currencies": "Валюта вашего текущего кошелька не соответствует валюте отсканированного QR-кода.", + "contact_list_contacts": "Контакты", + "contact_list_wallets": "Мои кошельки" } diff --git a/res/values/strings_th.arb b/res/values/strings_th.arb new file mode 100644 index 000000000..242a8d110 --- /dev/null +++ b/res/values/strings_th.arb @@ -0,0 +1,681 @@ +{ + "welcome" : "ยินดีต้อนรับสู่", + "cake_wallet" : "Cake Wallet", + "first_wallet_text" : "กระเป๋าสตางค์ที่สวยงามสำหรับ Monero, Bitcoin, Litecoin และ Haven", + "please_make_selection" : "โปรดเลือกตามด้านล่างเพื่อสร้างหรือกู้กระเป๋าของคุณ", + "create_new" : "สร้างกระเป๋าใหม่", + "restore_wallet" : "กู้กระเป๋า", + + "monero_com": "Monero.com ของ Cake Wallet", + "monero_com_wallet_text": "กระเป๋าสตางค์ที่สวยงามสำหรับ Monero", + + "haven_app": "Haven ของ Cake Wallet", + "haven_app_wallet_text": "กระเป๋าสตางค์ที่สวยงามสำหรับ Haven", + + "accounts" : "บัญชี", + "edit" : "แก้ไข", + "account" : "บัญชี", + "add" : "เพิ่ม", + + + "address_book" : "สมุดที่อยู่", + "contact" : "ผู้ติดต่อ", + "please_select" : "โปรดเลือก:", + "cancel" : "ยกเลิก", + "ok" : "ตกลง", + "contact_name" : "ชื่อผู้ติดต่อ", + "reset" : "รีเซ็ต", + "save" : "บันทึก", + "address_remove_contact" : "ลบผู้ติดต่อ", + "address_remove_content" : "คุณแน่ใจหรือว่าต้องการลบผู้ติดต่อที่เลือก?", + + + "authenticated" : "ได้รับการยืนยันสิทธิ์", + "authentication" : "การยืนยันสิทธิ์", + "failed_authentication" : "การยืนยันสิทธิ์ล้มเหลว ${state_error}", + + + "wallet_menu" : "เมนู", + "Blocks_remaining" : "${status} บล็อกที่เหลืออยู่", + "please_try_to_connect_to_another_node" : "โปรดลองเชื่อมต่อกับโหนดอื่น", + "xmr_hidden" : "ซ่อน", + "xmr_available_balance" : "ยอดคงเหลือที่สามารถใช้งานได้", + "xmr_full_balance" : "ยอดคงเหลือแบบเต็ม", + "send" : "ส่ง", + "receive" : "รับ", + "transactions" : "ธุรกรรม", + "incoming" : "ขาเข้า", + "outgoing" : "ขาออก", + "transactions_by_date" : "ธุรกรรมตามวันที่", + "trades" : "การซื้อขาย", + "filter_by": "กรองตาม", + "today" : "วันนี้", + "yesterday" : "เมื่อวาน", + "received" : "รับ", + "sent" : "ส่ง", + "pending" : " (อยู่ระหว่างดำเนินการ)", + "rescan" : "สแกนใหม่", + "reconnect" : "เชื่อมต่อใหม่", + "wallets" : "กระเป๋า", + "show_seed" : "แสดงซีด", + "show_keys" : "แสดงซีด/คีย์", + "address_book_menu" : "สมุดที่อยู่", + "reconnection" : "เชื่อมต่อใหม่", + "reconnect_alert_text" : "คุณแน่ใจหรือไม่ว่าต้องการเชื่อมต่อใหม่?", + + + "exchange" : "แลกเปลี่ยน", + "clear" : "ล้าง", + "refund_address" : "ที่อยู่สำหรับส่งคืน", + "change_exchange_provider" : "เปลี่ยนผู้ให้บริการแลกเปลี่ยน", + "you_will_send" : "แปลงจาก", + "you_will_get" : "แปลงเป็น", + "amount_is_guaranteed" : "จำนวนที่จะได้รับมีการรับประกัน", + "amount_is_estimate" : "จำนวนที่จะได้รับเป็นการประมาณการ", + "powered_by" : "พัฒนาขึ้นโดย ${title}", + "error" : "ข้อผิดพลาด", + "estimated" : "ประมาณการ", + "min_value" : "ขั้นต่ำ: ${value} ${currency}", + "max_value" : "ขั้นสูง: ${value} ${currency}", + "change_currency" : "เปลี่ยนสกุลเงิน", + "overwrite_amount" : "เขียนทับจำนวน", + "qr_payment_amount" : "QR code นี้มีจำนวนการชำระเงิน คุณต้องการเขียนทับค่าปัจจุบันหรือไม่?", + + "copy_id" : "คัดลอก ID", + "exchange_result_write_down_trade_id" : "โปรดคัดลอกหรือบันทึก ID ของการซื้อขายเพื่อดำเนินการต่อไป", + "trade_id" : "ID การซื้อขาย:", + "copied_to_clipboard" : "คัดลอกไปยังหน่วยความจำของคอมพิวเตอร์", + "saved_the_trade_id" : "ฉันได้บันทึก ID ของการซื้อขายแล้ว", + "fetching" : "กำลังโหลด", + "id" : "ID: ", + "amount" : "จำนวน: ", + "payment_id" : "ID การชำระเงิน: ", + "status" : "สถานะ: ", + "offer_expires_in" : "ข้อเสนอจะหมดอายุใน: ", + "trade_is_powered_by" : "การซื้อขายนี้จัดสร้างโดย ${provider}", + "copy_address" : "คัดลอกที่อยู่", + "exchange_result_confirm" : "โดยกดปุ่มยืนยัน, คุณจะส่ง ${fetchingLabel} ${from} จากกระเป๋าของคุณที่เรียกว่า ${walletName} ไปยังที่อยู่ที่แสดงข้างล่าง หรือคุณสามารถส่งจากกระเป๋าภายนอกไปยังที่อยู่/รหัส QR ด้านล่าง\n\nโปรดกดปุ่มยืนยันเพื่อดำเนินการต่อหรือกลับไปเปลี่ยนจำนวน", + "exchange_result_description" : "คุณต้องส่งอย่างน้อย ${fetchingLabel} ${from} ไปยังที่อยู่ที่แสดงบนหน้าถัดไป หากคุณส่งจำนวนน้อยกว่า ${fetchingLabel} ${from} อาจจะไม่ถูกแปลงและอาจไม่ถูกเรียกคืน", + "exchange_result_write_down_ID" : "*โปรดคัดลอกหรือเขียนรหัสของคุณด้านบน", + "confirm" : "ยืนยัน", + "confirm_sending" : "ยืนยันการส่ง", + "commit_transaction_amount_fee" : "ยืนยันธุรกรรม\nจำนวน: ${amount}\nค่าธรรมเนียม: ${fee}", + "sending" : "กำลังส่ง", + "transaction_sent" : "ธุรกรรมถูกส่ง!", + "expired" : "หมดอายุ", + "time" : "${minutes}m ${seconds}s", + "send_xmr" : "ส่ง XMR", + "exchange_new_template" : "เทมเพลทใหม่", + + "faq" : "คำถามที่พบบ่อย", + + + "enter_your_pin" : "ใส่ PIN ของคุณ", + "loading_your_wallet" : "กำลังโหลดกระเป๋าของคุณ", + + + "new_wallet" : "กระเป๋าใหม่", + "wallet_name" : "ชื่อกระเป๋า", + "continue_text" : "ดำเนินการต่อ", + "choose_wallet_currency" : "โปรดเลือกสกุลเงินของกระเป๋า:", + + + "node_new" : "โหนดใหม่", + "node_address" : "ที่อยู่โหนด", + "node_port" : "พอร์ตโหนด", + "login" : "เข้าสู่ระบบ", + "password" : "รหัสผ่าน", + "nodes" : "โหนด", + "node_reset_settings_title" : "รีเซ็ตการตั้งค่า", + "nodes_list_reset_to_default_message" : "คุณแน่ใจหรือว่าต้องการรีเซ็ตการตั้งค่าเป็นค่าเริ่มต้น?", + "change_current_node" : "คุณแน่ใจหรือว่าต้องการเปลี่ยนโหนดปัจจุบันเป็น ${node}?", + "change" : "เปลี่ยน", + "remove_node" : "ลบโหนด", + "remove_node_message" : "คุณแน่ใจหรือว่าต้องการลบโหนดที่เลือก?", + "remove" : "ลบ", + "delete" : "ลบ", + "add_new_node" : "เพิ่มโหนดใหม่", + "change_current_node_title" : "เปลี่ยนโหนดปัจจุบัน", + "node_test" : "ทดสอบ", + "node_connection_successful" : "เชื่อมต่อสำเร็จ", + "node_connection_failed" : "เชื่อมต่อล้มเหลว", + "new_node_testing" : "การทดสอบโหนดใหม่", + + + "use" : "สลับไปที่ ", + "digit_pin" : "-หลัก PIN", + + + "share_address" : "แชร์ที่อยู่", + "receive_amount" : "จำนวน", + "subaddresses" : "ที่อยู่ย่อย", + "addresses" : "ที่อยู่", + "scan_qr_code" : "สแกน QR code เพื่อรับที่อยู่", + "qr_fullscreen" : "แตะเพื่อเปิดหน้าจอ QR code แบบเต็มจอ", + "rename" : "เปลี่ยนชื่อ", + "choose_account" : "เลือกบัญชี", + "create_new_account" : "สร้างบัญชีใหม่", + "accounts_subaddresses" : "บัญชีและที่อยู่ย่อย", + + + "restore_restore_wallet" : "กู้กระเป๋า", + "restore_title_from_seed_keys" : "กู้จาก seed/keys", + "restore_description_from_seed_keys" : "เรียกกระเป๋าของคุณกลับมาจาก seed/keys ที่คุณได้บันทึกไว้ในที่ปลอดภัย", + "restore_next" : "ถัดไป", + "restore_title_from_backup" : "กู้จากการสำรองข้อมูล", + "restore_description_from_backup" : "คุณสามารถกู้แอพ Cake Wallet ทั้งหมดจากไฟล์สำรองข้อมูลของคุณ", + "restore_seed_keys_restore" : "กู้จาก Seed/Keys", + "restore_title_from_seed" : "กู้จาก seed", + "restore_description_from_seed" : "กู้กระเป๋าของคุณจากรหัสผสมของ 25 คำหรือ 13 คำ", + "restore_title_from_keys" : "กู้จาก keys", + "restore_description_from_keys" : "กู้กระเป๋าของคุณจากการกดปุ่มที่สร้างขึ้นจาก private keys ของคุณที่บันทึกไว้", + "restore_wallet_name" : "ชื่อกระเป๋า", + "restore_address" : "ที่อยู่", + "restore_view_key_private" : "คีย์สำหรับดู (ส่วนตัว)", + "restore_spend_key_private" : "คีย์สำหรับใช้ (ส่วนตัว)", + "restore_recover" : "กู้", + "restore_wallet_restore_description" : "คำอธิบายการกู้กระเป๋า", + "restore_new_seed" : "ซีดใหม่", + "restore_active_seed" : "ซีดที่ใช้งานอยู่", + "restore_bitcoin_description_from_seed" : "กู้กระเป๋าของคุณจากรหัสผสมของ 24 คำ", + "restore_bitcoin_description_from_keys" : "กู้กระเป๋าของคุณจากสตริง WIF ที่สร้างขึ้นจากคีย์ส่วนตัวของคุณ", + "restore_bitcoin_title_from_keys" : "กู้จาก WIF", + "restore_from_date_or_blockheight" : "โปรดป้อนวันที่หลายวันก่อนที่คุณสร้างกระเป๋านี้ หรือหากคุณรู้ความสูงของบล็อก (blockheight) โปรดป้อนมันแทน", + + + "seed_reminder" : "โปรดเขียนข้อมูลนี้ลงสมุดเพื่อความปลอดภัยหากคุณสูญเสียหรือล้างโทรศัพท์ของคุณ", + "seed_title" : "Seed", + "seed_share" : "แบ่งปัน seed", + "copy" : "คัดลอก", + + + "seed_language_choose" : "โปรดเลือกภาษาของ seed:", + "seed_choose" : "เลือกภาษาของ seed", + "seed_language_next" : "ถัดไป", + "seed_language_english" : "อังกฤษ", + "seed_language_chinese" : "จีน", + "seed_language_dutch" : "ดัตช์", + "seed_language_german" : "เยอรมัน", + "seed_language_japanese" : "ญี่ปุ่น", + "seed_language_portuguese" : "โปรตุเกส", + "seed_language_russian" : "รัสเซีย", + "seed_language_spanish" : "สเปน", + "seed_language_french" : "ฝรั่งเศส", + "seed_language_italian" : "อิตาลี", + + + "send_title" : "ส่ง", + "send_your_wallet" : "กระเป๋าของคุณ", + "send_address" : "ที่อยู่ ${cryptoCurrency}", + "send_payment_id" : "ID การชำระเงิน (ไม่จำเป็น)", + "all" : "ทั้งหมด", + "send_error_minimum_value" : "จำนวนขั้นต่ำของจำนวนเงินคือ 0.01", + "send_error_currency" : "สกุลเงินสามารถเป็นเลขเท่านั้น", + "send_estimated_fee" : "ค่าธรรมเนียมที่คาดการณ์:", + "send_priority" : "ในขณะนี้ค่าธรรมเนียมถูกตั้งค่าเป็นความสำคัญ ${transactionPriority} \nความสำคัญของธุรกรรมสามารถปรับได้ในการตั้งค่า", + "send_creating_transaction" : "กำลังสร้างธุรกรรม", + "send_templates" : "แม่แบบ", + "send_new" : "ใหม่", + "send_amount" : "จำนวน:", + "send_fee" : "ค่าธรรมเนียม:", + "send_name" : "ชื่อ", + "send_got_it" : "เข้าใจ", + "send_sending" : "กำลังส่ง...", + "send_success" : "คุณได้ส่ง ${crypto} เรียบร้อยแล้ว", + + + "settings_title" : "การตั้งค่า", + "settings_nodes" : "จุดเชื่อมต่อ", + "settings_current_node" : "จุดเชื่อมต่อปัจจุบัน", + "settings_wallets" : "กระเป๋าสตางค์", + "settings_display_balance" : "แสดงยอดคงเหลือ", + "settings_currency" : "สกุลเงิน", + "settings_fee_priority" : "ความสำคัญของค่าธรรมเนียม", + "settings_save_recipient_address" : "บันทึกที่อยู่ผู้รับ", + "settings_personal" : "ส่วนตัว", + "settings_change_pin" : "เปลี่ยน PIN", + "settings_change_language" : "เปลี่ยนภาษา", + "settings_allow_biometrical_authentication" : "อนุญาตให้ใช้การยืนยันตัวตนทางระบบชีวภาพ", + "settings_dark_mode" : "โหมดดำ", + "settings_transactions" : "ธุรกรรม", + "settings_trades" : "การซื้อขาย", + "settings_display_on_dashboard_list" : "แสดงบนรายการแดชบอร์ด", + "settings_all" : "ทั้งหมด", + "settings_only_trades" : "เฉพาะการซื้อขาย", + "settings_only_transactions" : "เฉพาะธุรกรรม", + "settings_none" : "ไม่มี", + "settings_support" : "สนับสนุน", + "settings_terms_and_conditions" : "ข้อกำหนดและเงื่อนไข", + "pin_is_incorrect" : "PIN ไม่ถูกต้อง", + + + "setup_pin" : "ตั้งค่า PIN", + "enter_your_pin_again" : "ใส่ PIN ของคุณอีกครั้ง", + "setup_successful" : "การตั้งค่า PIN ของคุณสำเร็จแล้ว!", + + "wallet_keys" : "ซีดของกระเป๋า/คีย์", + "wallet_seed" : "ซีดของกระเป๋า", + "private_key" : "คีย์ส่วนตัว", + "public_key" : "คีย์สาธารณะ", + "view_key_private" : "คีย์มุมมอง (ส่วนตัว)", + "view_key_public" : "คีย์มุมมอง (สาธารณะ)", + "spend_key_private" : "คีย์จ่าย (ส่วนตัว)", + "spend_key_public" : "คีย์จ่าย (สาธารณะ)", + "copied_key_to_clipboard" : "คัดลอก ${key} ไปยัง Clipboard แล้ว", + + + "new_subaddress_title" : "ที่อยู่ใหม่", + "new_subaddress_label_name" : "ชื่อป้ายกำกับ", + "new_subaddress_create" : "สร้าง", + + "address_label" : "ป้ายกำกับที่อยู่", + + "subaddress_title" : "รายการที่อยู่ย่อย", + + "trade_details_title" : "รายละเอียดการแลกเปลี่ยน", + "trade_details_id" : "รหัส", + "trade_details_state" : "สถานะ", + "trade_details_fetching" : "กำลังเรียกข้อมูล", + "trade_details_provider" : "ผู้ให้บริการ", + "trade_details_created_at" : "สร้างเมื่อ", + "trade_details_pair" : "คู่", + "trade_details_copied" : "${title} คัดลอกไปยัง Clipboard", + + + "trade_history_title" : "ประวัติการซื้อขาย", + + + "transaction_details_title" : "รายละเอียดการทำรายการ", + "transaction_details_transaction_id" : "ไอดีการทำรายการ", + "transaction_details_date" : "วันที่", + "transaction_details_height" : "ความสูง", + "transaction_details_amount" : "จำนวน", + "transaction_details_fee" : "ค่าธรรมเนียม", + "transaction_details_copied" : "${title} ถูกคัดลอกไปยังคลิปบอร์ด", + "transaction_details_recipient_address" : "ที่อยู่ผู้รับ", + + + "wallet_list_title" : "กระเป๋า Monero", + "wallet_list_create_new_wallet" : "สร้างกระเป๋าใหม่", + "wallet_list_restore_wallet" : "กู้กระเป๋า", + "wallet_list_load_wallet" : "โหลดกระเป๋า", + "wallet_list_loading_wallet" : "กำลังโหลดกระเป๋า ${wallet_name}", + "wallet_list_failed_to_load" : "ไม่สามารถโหลดกระเป๋า ${wallet_name} ได้ ${error}", + "wallet_list_removing_wallet" : "กำลังลบกระเป๋า ${wallet_name}", + "wallet_list_failed_to_remove" : "ไม่สามารถลบกระเป๋า ${wallet_name} ได้ ${error}", + + + "widgets_address" : "ที่อยู่", + "widgets_restore_from_blockheight" : "กู้คืนจากระดับบล็อก", + "widgets_restore_from_date" : "กู้คืนจากวันที่", + "widgets_or" : "หรือ", + "widgets_seed" : "ซีด", + + + "router_no_route" : "ไม่มีเส้นทางที่กำหนดไว้สำหรับ ${name}", + + + "error_text_account_name" : "ชื่อบัญชีสามารถเป็นเพียงตัวอักษรหรือตัวเลขเท่านั้น\nและต้องมีความยาวระหว่าง 1 ถึง 15 ตัวอักษร", + "error_text_contact_name" : "ชื่อผู้ติดต่อไม่สามารถมีสัญลักษณ์ ` , '\" ได้\nและต้องมีความยาวระหว่าง 1 ถึง 32 ตัวอักษร", + "error_text_address" : "ที่อยู่กระเป๋าจะต้องสอดคล้องกับประเภท\nของเหรียญคริปโตเนียม", + "error_text_node_address" : "โปรดป้อนที่อยู่ iPv4", + "error_text_node_port" : "พอร์ตโหนดสามารถมีตัวเลขเท่านั้นระหว่าง 0 ถึง 65535", + "error_text_payment_id" : "Payment ID สามารถมีขนาดระหว่าง 16 ถึง 64 ตัวอักษรตามแบบ hex", + "error_text_xmr" : "มูลค่า XMR ไม่สามารถเกินยอดคงเหลือได้\nจำนวนสตริงทศนิยมต้องน้อยกว่าหรือเท่ากับ 12", + "error_text_fiat" : "มูลค่าของจำนวนเงินไม่สามารถเกินยอดคงเหลือได้\nจำนวนสตริงทศนิยมต้องน้อยกว่าหรือเท่ากับ 2", + "error_text_subaddress_name" : "ชื่อสำหรับที่อยู่ย่อยจะต้องประกอบด้วยตัวอักษร ตัวเลข และสัญลักษณ์ _ - และมีความยาวระหว่าง 1 ถึง 20 ตัวอักษร", + "error_text_amount" : "จำนวนจะต้องประกอบด้วยตัวเลขเท่านั้น", + "error_text_wallet_name" : "ชื่อกระเป๋าสตางค์จะต้องประกอบด้วยตัวอักษร ตัวเลข และสัญลักษณ์ _ - และมีความยาวระหว่าง 1 ถึง 33 ตัวอักษร", + "error_text_keys" : "คีย์ของกระเป๋าสตางค์จะต้องประกอบด้วยตัวอักษรฐาน 16 จำนวน 64 ตัว", + "error_text_crypto_currency" : "จำนวนทศนิยมจะต้องน้อยกว่าหรือเท่ากับ 12", + "error_text_minimal_limit" : "การซื้อขายกับ ${provider} ไม่สามารถดำเนินการได้ จำนวนน้อยกว่าขั้นต่ำ: ${min} ${currency}", + "error_text_maximum_limit" : "การซื้อขายกับ ${provider} ไม่สามารถดำเนินการได้ จำนวนมากกว่าขั้นสูง: ${max} ${currency}", + "error_text_limits_loading_failed" : "การซื้อขายกับ ${provider} ไม่สามารถดำเนินการได้ ไม่สามารถโหลดขอบเขตได้", + "error_text_template" : "ชื่อแม่แบบและที่อยู่ไม่สามารถมีสัญลักษณ์ ` , '\" และต้องมีความยาวระหว่าง 1 ถึง 106 ตัวอักษร", + + + "auth_store_ban_timeout" : "หมดเวลาห้าม", + "auth_store_banned_for" : "ถูกห้ามสำหรับ ", + "auth_store_banned_minutes" : " นาที", + "auth_store_incorrect_password" : "รหัสผ่านไม่ถูกต้อง", + "wallet_store_monero_wallet" : "กระเป๋า Monero", + "wallet_restoration_store_incorrect_seed_length" : "ความยาวของซีดไม่ถูกต้อง", + + + "full_balance" : "ยอดคงเหลือทั้งหมด", + "available_balance" : "ยอดคงเหลือที่ใช้งานได้", + "hidden_balance" : "ยอดคงเหลือซ่อนอยู่", + + + "sync_status_syncronizing" : "กำลังซิงโครไนซ์", + "sync_status_syncronized" : "ซิงโครไนซ์แล้ว", + "sync_status_not_connected" : "ไม่ได้เชื่อมต่อ", + "sync_status_starting_sync" : "กำลังเริ่มซิงโครไนซ์", + "sync_status_failed_connect" : "การเชื่อมต่อล้มเหลว", + "sync_status_connecting" : "กำลังเชื่อมต่อ", + "sync_status_connected" : "เชื่อมต่อแล้ว", + "sync_status_attempting_sync" : "พยายามซิงโครไนซ์", + + + "transaction_priority_slow" : "ช้า", + "transaction_priority_regular" : "ปกติ", + "transaction_priority_medium" : "ปานกลาง", + "transaction_priority_fast" : "เร็ว", + "transaction_priority_fastest" : "เร็วที่สุด", + + + "trade_for_not_created" : "การแลกเปลี่ยนสำหรับ ${title} ยังไม่ได้ถูกสร้างขึ้น", + "trade_not_created" : "การแลกเปลี่ยนยังไม่ได้ถูกสร้าง", + "trade_id_not_found" : "ไม่พบการแลกเปลี่ยน ${tradeId} ของ ${title}", + "trade_not_found" : "ไม่พบการแลกเปลี่ยน", + + + "trade_state_pending" : "รอดำเนินการ", + "trade_state_confirming" : "กำลังยืนยัน", + "trade_state_trading" : "กำลังแลกเปลี่ยน", + "trade_state_traded" : "ถูกแลกเปลี่ยน", + "trade_state_complete" : "เสร็จสมบูรณ์", + "trade_state_to_be_created" : "จะถูกสร้าง", + "trade_state_unpaid" : "ยังไม่ได้จ่าย", + "trade_state_underpaid" : "จ่ายไม่ครบ", + "trade_state_paid_unconfirmed" : "จ่ายแล้วแต่ยังไม่ได้ยืนยัน", + "trade_state_paid" : "จ่ายแล้ว", + "trade_state_btc_sent" : "ส่ง BTC แล้ว", + "trade_state_timeout" : "เวลาหมด", + "trade_state_created" : "ถูกสร้าง", + "trade_state_finished" : "เสร็จสิ้น", + + "change_language" : "เปลี่ยนภาษา", + "change_language_to" : "เปลี่ยนภาษาเป็น ${language}?", + + "paste" : "วาง", + "restore_from_seed_placeholder" : "โปรดป้อนหรือวาง seed ของคุณที่นี่", + "add_new_word" : "เพิ่มคำใหม่", + "incorrect_seed" : "ข้อความที่ป้อนไม่ถูกต้อง", + + "biometric_auth_reason" : "สแกนลายนิ้วมือของคุณเพื่อยืนยันตัวตน", + "version" : "เวอร์ชัน ${currentVersion}", + + "openalias_alert_title" : "พบที่อยู่", + "openalias_alert_content" : "คุณกำลังจะส่งเงินไปยัง\n${recipient_name}", + + "card_address" : "ที่อยู่:", + "buy" : "ซื้อ", + "sell": "ขาย", + + "placeholder_transactions" : "ธุรกรรมของคุณจะปรากฏที่นี่", + "placeholder_contacts" : "รายชื่อผู้ติดต่อของคุณจะปรากฏที่นี่", + + "template" : "แบบฟอร์ม", + "confirm_delete_template" : "การดำเนินการนี้จะลบแบบฟอร์มนี้ คุณต้องการดำเนินการต่อหรือไม่?", + "confirm_delete_wallet" : "การดำเนินการนี้จะลบกระเป๋านี้ คุณต้องการดำเนินการต่อหรือไม่?", + + "picker_description" : "ในการเลือก ChangeNOW หรือ MorphToken โปรดเปลี่ยนคู่แลกเปลี่ยนก่อน", + + "change_wallet_alert_title" : "เปลี่ยนกระเป๋าปัจจุบัน", + "change_wallet_alert_content" : "คุณต้องการเปลี่ยนกระเป๋าปัจจุบันเป็น ${wallet_name} หรือไม่?", + + "creating_new_wallet" : "กำลังสร้างกระเป๋าใหม่", + "creating_new_wallet_error" : "ข้อผิดพลาด: ${description}", + + "seed_alert_title" : "ความสนใจ", + "seed_alert_content" : "Seed เป็นเพียงวิธีเดียวที่จะกู้กระเป๋าของคุณ คุณได้เขียนมันขึ้นลงกระดาษหรือไม่?", + "seed_alert_back" : "กลับ", + "seed_alert_yes" : "ใช่ ฉันได้เขียน", + + "exchange_sync_alert_content" : "โปรดรอจนกว่ากระเป๋าของคุณจะถูกซิงค์", + + "pre_seed_title" : "สำคัญ", + "pre_seed_description" : "บนหน้าถัดไปคุณจะเห็นชุดของคำ ${words} คำ นี่คือ seed ของคุณที่ไม่ซ้ำใดๆ และเป็นความลับเพียงของคุณ และนี่คือเพียงวิธีเดียวที่จะกู้กระเป๋าของคุณในกรณีที่สูญหายหรือมีปัญหา มันเป็นความรับผิดชอบของคุณเพื่อเขียนมันลงบนกระดาษและจัดเก็บไว้ในที่ปลอดภัยนอกแอป Cake Wallet", + "pre_seed_button_text" : "ฉันเข้าใจ แสดง seed ของฉัน", + + "xmr_to_error" : "ข้อผิดพลาด XMR.TO", + "xmr_to_error_description" : "จำนวนไม่ถูกต้อง จำกัดขั้นสูง 8 หลักหลังจุดทศนิยม", + + "provider_error" : "ข้อผิดพลาด ${provider}", + + "use_ssl" : "ใช้ SSL", + "trusted" : "มั่นคง", + + "color_theme" : "ธีมสี", + "light_theme" : "สว่าง", + "bright_theme" : "สดใส", + "dark_theme" : "เข้ม", + "enter_your_note" : "ใส่บันทึกของคุณ...", + "note_optional" : "บันทึก (ไม่จำเป็น)", + "note_tap_to_change" : "หมายเหตุ (กดเพื่อเปลี่ยน)", + "view_in_block_explorer" : "ดูใน Block Explorer", + "view_transaction_on" : "ดูการทำธุรกรรมบน ", + "transaction_key" : "รหัสธุรกรรม", + "confirmations" : "การยืนยัน", + "recipient_address" : "ที่อยู่ผู้รับ", + + "extra_id" : "ไอดีเพิ่มเติม:", + "destination_tag" : "แท็กปลายทาง:", + "memo" : "หมายเหตุ:", + + "backup" : "สำรองข้อมูล", + "change_password" : "เปลี่ยนรหัสผ่าน", + "backup_password" : "รหัสผ่านสำรองข้อมูล", + "write_down_backup_password" : "โปรดจดรหัสผ่านสำรองข้อมูลของคุณลงบนกระดาษ ซึ่งจะใช้ในการนำเข้าไฟล์สำรองข้อมูลของคุณ", + "export_backup" : "ส่งออกข้อมูลสำรอง", + "save_backup_password" : "โปรดตรวจสอบให้แน่ใจว่าคุณได้บันทึกรหัสผ่านสำรองข้อมูลแล้ว คุณจะไม่สามารถนำเข้าไฟล์สำรองข้อมูลของคุณโดยไม่ใช้รหัสผ่านนั้น", + "backup_file" : "ไฟล์สำรองข้อมูล", + + "edit_backup_password" : "แก้ไขรหัสผ่านสำรอง", + "save_backup_password_alert" : "บันทึกรหัสผ่านสำรอง", + "change_backup_password_alert" : "ไฟล์สำรองที่ผ่านมาจะไม่สามารถนำเข้าด้วยรหัสผ่านสำรองใหม่ได้ รหัสผ่านสำรองใหม่จะถูกใช้เฉพาะสำหรับไฟล์สำรองใหม่ คุณแน่ใจหรือว่าต้องการเปลี่ยนรหัสผ่านสำรอง?", + + "enter_backup_password" : "ป้อนรหัสผ่านสำรองที่นี่", + "select_backup_file" : "เลือกไฟล์สำรอง", + "import" : "นำเข้า", + "please_select_backup_file" : "โปรดเลือกไฟล์สำรองและป้อนรหัสผ่านสำรอง", + + "fixed_rate": "อัตราคงที่", + "fixed_rate_alert": "คุณจะสามารถป้อนจำนวนที่ได้รับเมื่อเลือกโหมดอัตราคงที่ คุณต้องการสลับไปที่โหมดอัตราคงที่?", + + "xlm_extra_info": "โปรดอย่าลืมระบุ Memo ID ในขณะที่ส่งธุรกรรม XLM สำหรับการแลกเปลี่ยน", + "xrp_extra_info": "โปรดอย่าลืมระบุ Destination Tag ในขณะที่ส่งธุรกรรม XRP สำหรับการแลกเปลี่ยน", + + "exchange_incorrect_current_wallet_for_xmr" : "หากคุณต้องการแลกเปลี่ยน XMR จากยอดคงเหลือ Monero ใน Cake Wallet ของคุณ กรุณาเปลี่ยนเป็นกระเป๋า Monero ก่อน", + "confirmed" : "ได้รับการยืนยัน", + "unconfirmed" : "ยังไม่ได้รับการยืนยัน", + "displayable" : "สามารถแสดงได้", + + "submit_request" : "ส่งคำขอ", + + "buy_alert_content" : "ในปัจจุบันเรารองรับการซื้อ Bitcoin และ Litecoin เท่านั้น หากต้องการซื้อ Bitcoin หรือ Litecoin โปรดสร้างหรือเปลี่ยนเป็นกระเป๋า Bitcoin หรือ Litecoin ของคุณ", + "sell_alert_content" : "ในปัจจุบันเรารองรับการขาย Bitcoin เท่านั้น หากต้องการขาย Bitcoin โปรดสร้างหรือเปลี่ยนเป็นกระเป๋า Bitcoin ของคุณ", + + "outdated_electrum_wallet_description" : "กระเป๋า Bitcoin ใหม่ที่สร้างใน Cake มี seed ขนาด 24 คำ ซึ่งจำเป็นต้องสร้างกระเป๋า Bitcoin ใหม่และโอนทุกเงินของคุณไปยังกระเป๋าใหม่ขนาด 24 คำ และหยุดใช้กระเป๋าที่มี seed ขนาด 12 คำ กรุณาทำด่วนเพื่อรักษาเงินของคุณ", + "understand" : "ฉันเข้าใจ", + + "apk_update" : "ปรับปรุง APK", + + "buy_bitcoin" : "ซื้อ Bitcoin", + "buy_with" : "ซื้อด้วย", + "moonpay_alert_text" : "มูลค่าของจำนวนต้องมากกว่าหรือเท่ากับ ${minAmount} ${fiatCurrency}", + + "outdated_electrum_wallet_receive_warning": "หากกระเป๋านี้มีซีดีที่มี 12 คำและถูกสร้างขึ้นใน Cake อย่าโอน Bitcoin เข้ากระเป๋านี้ ทุกจำนวน BTC ที่โอนเข้ากระเป๋านี้อาจสูญหาย สร้างกระเป๋าใหม่ที่มีซีดีที่มี 24 คำ (กดที่เมนูที่มุมขวาบนแล้วเลือก Wallets และเลือก Create New Wallet จากนั้นเลือก Bitcoin) และย้าย BTC ไปที่นั้นทันที กระเป๋า BTC ที่มีซีดีที่มี 24 คำของ Cake ปลอดภัย", + "do_not_show_me": "อย่าแสดงข้อความนี้อีก", + + "unspent_coins_title" : "เหรียญที่ไม่ได้ใช้", + "unspent_coins_details_title" : "รายละเอียดเหรียญที่ไม่ได้ใช้", + "freeze" : "ดักจับ", + "frozen" : "ถูกดักจับ", + "coin_control" : "การควบคุมเหรียญ (ตัวเลือก)", + + "address_detected" : "ตรวจพบที่อยู่", + "address_from_domain" : "ที่อยู่นี้มาจาก ${domain} บน Unstoppable Domains", + + "add_receiver" : "เพิ่มผู้รับอื่น ๆ (ตัวเลือก)", + + "manage_yats" : "จัดการ Yats", + "yat_alert_title" : "ส่งและรับเหรียญออนไลน์ง่ายขึ้นด้วย Yat", + "yat_alert_content" : "ผู้ใช้งาน Cake Wallet สามารถส่งและรับเหรียญออนไลน์ทุกเหรียญที่ชื่นชอบของพวกเขาได้ง่ายขึ้นด้วยชื่อผู้ใช้งานที่พิเศษที่ระบุด้วยอีโมจิ", + "get_your_yat" : "รับ Yat ของคุณ", + "connect_an_existing_yat" : "เชื่อมต่อ Yat ที่มีอยู่", + "connect_yats": "เชื่อมต่อ Yats", + "yat_address" : "ที่อยู่ Yat", + "yat" : "Yat", + "address_from_yat" : "ที่อยู่นี้มาจาก ${emoji} บน Yat", + "yat_error" : "ข้อผิดพลาดของ Yat", + "yat_error_content" : "ไม่มีที่อยู่ที่เชื่อมต่อกับ Yat นี้ ลองใช้ Yat อื่น", + "choose_address" : "\n\nโปรดเลือกที่อยู่:", + "yat_popup_title" : "ที่อยู่กระเป๋าของคุณสามารถถูกอัปโหลดเป็นอิโมจิ", + "yat_popup_content" : "ขณะนี้คุณสามารถส่งและรับเหรียญคริปโตใน Cake Wallet ด้วย Yat ของคุณ - ชื่อผู้ใช้ที่สั้นมีอิโมจิ คุณสามารถจัดการ Yat ได้ทุกเวลาบนหน้าจอการตั้งค่า", + "second_intro_title" : "อิโมจิที่อยู่เดียวที่จะควบคุมพวกเขาทั้งหมด", + "second_intro_content" : "Yat ของคุณเป็นอิโมจิที่อยู่เดียวที่จะแทนที่ทุกที่อยู่และเลขฐานสิบหกของคุณสำหรับเหรียญคริปโตทุกชนิด", + "third_intro_title" : "Yat ปฏิบัติตนอย่างดีกับผู้อื่น", + "third_intro_content" : "Yat อาศัยอยู่นอก Cake Wallet ด้วย ที่อยู่กระเป๋าใดๆ ทั่วโลกสามารถแทนด้วย Yat ได้อีกด้วย!", + "learn_more" : "ศึกษาเพิ่มเติม", + "search": "ค้นหา", + "search_language": "ค้นหาภาษา", + "search_currency": "ค้นหาสกุลเงิน", + "new_template" : "แม่แบบใหม่", + "electrum_address_disclaimer": "เราสร้างที่อยู่ใหม่ทุกครั้งที่คุณใช้หนึ่งอย่าง แต่ที่อยู่เก่ายังสามารถใช้ได้ต่อไป", + "wallet_name_exists": "กระเป๋าที่มีชื่อนี้มีอยู่แล้ว โปรดเลือกชื่ออื่นหรือเปลี่ยนชื่อกระเป๋าอื่นก่อน", + "market_place": "ตลาดพื้นที่", + "cake_pay_title": "บัตรของขวัญ Cake Pay", + "cake_pay_subtitle": "ซื้อบัตรของขวัญราคาถูก (สำหรับสหรัฐอเมริกาเท่านั้น)", + "cake_pay_web_cards_title": "Cake Pay Web Cards", + "cake_pay_web_cards_subtitle": "ซื้อบัตรพร้อมเงินระดับโลกและบัตรของขวัญ", + "about_cake_pay": "Cake Pay ช่วยให้คุณสามารถซื้อบัตรของขวัญง่ายๆ ด้วยการใช้สินทรัพย์อนุกรม ซื้อใช้ได้ทันทีกับมากกว่า 150,000 ร้านค้าในสหรัฐอเมริกา", + "cake_pay_account_note": "ลงทะเบียนด้วยอีเมลเพียงอย่างเดียวเพื่อดูและซื้อบัตร บางบัตรอาจมีส่วนลด!", + "already_have_account": "มีบัญชีอยู่แล้ว?", + "create_account": "สร้างบัญชี", + "privacy_policy": "นโยบายความเป็นส่วนตัว", + "welcome_to_cakepay": "ยินดีต้อนรับสู่ Cake Pay!", + "sign_up": "สมัครสมาชิก", + "forgot_password": "ลืมรหัสผ่าน", + "reset_password": "รีเซ็ตรหัสผ่าน", + "gift_cards": "บัตรของขวัญ", + "setup_your_debit_card": "ตั้งค่าบัตรเดบิตของคุณ", + "no_id_required": "ไม่จำเป็นต้องใช้บัตรประจำตัว ฝากเงินและใช้งานได้ทุกที่", + "how_to_use_card": "วิธีใช้บัตรนี้", + "purchase_gift_card": "ซื้อบัตรของขวัญ", + "verification": "การตรวจสอบ", + "fill_code": "โปรดกรอกรหัสยืนยันที่ส่งไปยังอีเมลของคุณ", + "dont_get_code": "ไม่ได้รับรหัส?", + "resend_code": "โปรดส่งอีกครั้ง", + "debit_card": "บัตรเดบิต", + "cakepay_prepaid_card": "บัตรเดบิตเติมเงินของ CakePay", + "no_id_needed": "ไม่จำเป็นต้องใช้บัตรประชาชน!", + "frequently_asked_questions": "คำถามที่พบบ่อย", + "debit_card_terms": "การเก็บรักษาและใช้หมายเลขบัตรจ่ายเงิน (และข้อมูลประจำตัวที่เกี่ยวข้องกับหมายเลขบัตรจ่ายเงิน) ในกระเป๋าดิจิทัลนี้ จะต้องยึดถือข้อกำหนดและเงื่อนไขของข้อตกลงผู้ใช้บัตรของผู้ถือบัตรที่เกี่ยวข้องกับบัตรผู้ถือบัตร ซึ่งจะมีผลตั้งแต่เวลานั้น", + "please_reference_document": "โปรดอ้างอิงเอกสารด้านล่างสำหรับข้อมูลเพิ่มเติม", + "cardholder_agreement": "ข้อตกลงผู้ใช้บัตร", + "e_sign_consent": "การยอมรับ E-Sign", + "agree_and_continue": "ยอมรับและดำเนินการต่อ", + "email_address": "ที่อยู่อีเมล", + "agree_to": "การสร้างบัญชีของคุณยอมรับเงื่อนไขของ", + "and": "และ", + "enter_code": "กรอกรหัส", + "congratulations": "ขอแสดงความยินดี!", + "you_now_have_debit_card": "ขณะนี้คุณมีบัตรเดบิต", + "min_amount": "จำนวนขั้นต่ำ: ${value}", + "max_amount": "จำนวนสูงสุด: ${value}", + "enter_amount": "กรอกจำนวน", + "billing_address_info": "ถ้าถูกร้องขอที่อยู่สำหรับการวางบิล ให้ใช้ที่อยู่จัดส่งของคุณ", + "order_physical_card": "สั่งซื้อบัตรดิบิต", + "add_value": "เพิ่มมูลค่า", + "activate": "เปิดใช้งาน", + "get_a": "รับ ", + "digital_and_physical_card": "บัตรเดบิตดิจิตอลและบัตรพื้นฐาน", + "get_card_note": "ที่คุณสามารถเติมเงินด้วยสกุลเงินดิจิตอล ไม่จำเป็นต้องใส่ข้อมูลเพิ่มเติม!", + "signup_for_card_accept_terms": "ลงทะเบียนสำหรับบัตรและยอมรับเงื่อนไข", + "add_fund_to_card": "เพิ่มเงินสำรองไว้บนบัตร (ถึง ${value})", + "use_card_info_two": "เงินจะถูกแปลงค่าเป็นดอลลาร์สหรัฐเมื่อถือไว้ในบัญชีสำรองเงิน ไม่ใช่สกุลเงินดิจิตอล", + "use_card_info_three": "ใช้บัตรดิจิตอลออนไลน์หรือผ่านวิธีการชำระเงินแบบไม่ต้องใช้บัตรกระดาษ", + "optionally_order_card": "เลือกเพิ่มสั่งการ์ดจริง", + "hide_details" : "ซ่อนรายละเอียด", + "show_details" : "แสดงรายละเอียด", + "upto": "สูงสุด ${value}", + "discount": "ประหยัด ${value}%", + "gift_card_amount": "จำนวนบัตรของขวัญ", + "bill_amount": "จำนวนบิล", + "you_pay": "คุณจ่าย", + "tip": "เพิ่มค่าตอบแทน:", + "custom": "กำหนดเอง", + "by_cake_pay": "โดย Cake Pay", + "expires": "หมดอายุ", + "mm": "เดือน", + "yy": "ปี", + "online": "ออนไลน์", + "offline": "ออฟไลน์", + "gift_card_number": "หมายเลขบัตรของขวัญ", + "pin_number": "หมายเลข PIN", + "total_saving": "ประหยัดรวม", + "last_30_days": "30 วันล่าสุด", + "avg_savings": "ประหยัดเฉลี่ย", + "view_all": "ดูทั้งหมด", + "active_cards": "บัตรที่ใช้งานได้", + "delete_account": "ลบบัญชี", + "cards": "บัตร", + "active": "ทำงาน", + "redeemed": "แลกของขวัญ", + "gift_card_balance_note": "บัตรของขวัญที่มียอดคงเหลือจะปรากฏที่นี่", + "gift_card_redeemed_note": "บัตรของขวัญที่คุณแลกไปแล้วจะปรากฏที่นี่", + "logout": "ออกจากระบบ", + "add_tip": "เพิ่มคำแนะนำ", + "percentageOf": "${amount} ของ", + "is_percentage": "เป็น", + "search_category": "ค้นหาหมวดหมู่", + "mark_as_redeemed": "ทำเครื่องหมายว่าเคยใช้แล้ว", + "more_options": "ตัวเลือกเพิ่มเติม", + "awaiting_payment_confirmation": "รอการยืนยันการชำระเงิน", + "transaction_sent_notice": "ถ้าหน้าจอไม่ขึ้นหลังจาก 1 นาทีแล้ว ให้ตรวจสอบ block explorer และอีเมลของคุณ", + "agree": "ยอมรับ", + "in_store": "ในร้าน", + "generating_gift_card": "กำลังสร้างบัตรของขวัญ", + "payment_was_received": "การชำระเงินของคุณได้รับการรับทราบแล้ว", + "proceed_after_one_minute": "หากหน้าจอไม่ดำเนินการหลังจาก 1 นาทีโปรดตรวจสอบอีเมลของคุณ", + "order_id": "เลขที่ออร์เดอร์", + "gift_card_is_generated": "บัตรของขวัญถูกสร้างขึ้น", + "open_gift_card": "เปิดบัตรของขวัญ", + "contact_support": "ติดต่อฝ่ายสนับสนุน", + "gift_cards_unavailable": "บัตรของขวัญจะมีจำหน่ายเฉพาะกับ Monero, Bitcoin, และ Litecoin เท่านั้นในขณะนี้", + "introducing_cake_pay": "ยินดีต้อนรับสู่ Cake Pay!", + "cake_pay_learn_more": "ซื้อและเบิกบัตรของขวัญในแอพพลิเคชันทันที!\nกระแทกขวาไปซ้ายเพื่อเรียนรู้เพิ่มเติม", + "automatic": "อัตโนมัติ", + "fixed_pair_not_supported": "คู่ความสัมพันธ์ที่ถูกกำหนดไว้นี้ไม่สนับสนุนกับหุ้นที่เลือก", + "variable_pair_not_supported": "คู่ความสัมพันธ์ที่เปลี่ยนแปลงได้นี้ไม่สนับสนุนกับหุ้นที่เลือก", + "none_of_selected_providers_can_exchange": "ไม่มีผู้ให้บริการที่เลือกที่สามารถแลกเปลี่ยนนี้ได้", + "choose_one": "เลือกหนึ่งรายการ", + "choose_from_available_options": "เลือกจากตัวเลือกที่มีอยู่:", + "custom_redeem_amount": "จำนวนรับคืนที่กำหนดเอง", + "add_custom_redemption": "เพิ่มการรับคืนที่กำหนดเอง", + "remaining": "เหลืออยู่", + "delete_wallet": "ลบกระเป๋า", + "delete_wallet_confirm_message" : "คุณแน่ใจหรือว่าต้องการลบกระเป๋า${wallet_name}?", + "low_fee": "ค่าธรรมเนียมต่ำ", + "low_fee_alert": "ขณะนี้คุณกำลังใช้ค่าธรรมเนียมของเครือข่ายที่มีความสำคัญต่ำ ซึ่งอาจทำให้เกิดการรอนาน ราคาที่แตกต่างกัน หรือยกเลิกการซื้อขาย เราแนะนำให้กำหนดค่าธรรมเนียมที่สูงขึ้นเพื่อประสบการณ์ที่ดีขึ้น", + "ignor": "ละเว้น", + "use_suggested": "ใช้ที่แนะนำ", + "do_not_share_warning_text" : "อย่าแชร์ข้อมูลนี้กับใครอื่น รวมถึงฝ่ายสนับสนุนด้วย\n\nการเงินของคุณอาจถูกขโมยโดยไม่หวังดี!", + "help": "ช่วยเหลือ", + "all_transactions": "การทำธุรกรรมทั้งหมด", + "all_trades": "การซื้อขายทั้งหมด", + "connection_sync": "การเชื่อมต่อและการซิงค์", + "security_and_backup": "ความปลอดภัยและการสำรองข้อมูล", + "create_backup": "สร้างการสำรองข้อมูล", + "privacy_settings": "การตั้งค่าความเป็นส่วนตัว", + "privacy": "ความเป็นส่วนตัว", + "display_settings": "การตั้งค่าการแสดงผล", + "other_settings": "การตั้งค่าอื่น ๆ", + "require_pin_after": "ต้องการ PIN หลังจาก", + "always": "เสมอ", + "minutes_to_pin_code": "${minute} นาที", + "disable_exchange": "ปิดใช้งานการแลกเปลี่ยน", + "advanced_privacy_settings": "การตั้งค่าความเป็นส่วนตัวขั้นสูง", + "settings_can_be_changed_later" : "การตั้งค่านี้สามารถเปลี่ยนแปลงได้ภายหลังในการตั้งค่าแอพฯ", + "add_custom_node" : "เพิ่มจุดโหนดแบบกำหนดเอง", + "disable_fiat" : "ปิดใช้งานสกุลเงินตรา", + "fiat_api" : "API สกุลเงินตรา", + "disabled" : "ปิดใช้งาน", + "enabled" : "เปิดใช้งาน", + "tor_only" : "Tor เท่านั้น", + "unmatched_currencies" : "สกุลเงินของกระเป๋าปัจจุบันของคุณไม่ตรงกับของ QR ที่สแกน", + "contact_list_contacts": "ติดต่อ", + "contact_list_wallets": "กระเป๋าเงินของฉัน" +} diff --git a/res/values/strings_uk.arb b/res/values/strings_uk.arb index 680633d22..4fad9a19d 100644 --- a/res/values/strings_uk.arb +++ b/res/values/strings_uk.arb @@ -48,7 +48,7 @@ "outgoing" : "Вихідні", "transactions_by_date" : "Сортувати по даті", "trades" : "Торгові операції", - "filters" : "Фільтр", + "filter_by": "Фільтрувати по", "today" : "Сьогодні", "yesterday" : "Вчора", "received" : "Отримані", @@ -655,6 +655,8 @@ "use_suggested": "Використати запропоноване", "do_not_share_warning_text" : "Не діліться цим нікому, включно зі службою підтримки.\n\nВаші кошти можуть і будуть вкрадені!", "help": "допомога", + "all_transactions": "Всі транзакції", + "all_trades": "Всі операції", "connection_sync": "Підключення та синхронізація", "security_and_backup": "Безпека та резервне копіювання", "create_backup": "Створити резервну копію", @@ -674,5 +676,7 @@ "disabled": "Вимкнено", "enabled": "Увімкнено", "tor_only": "Тільки Tor", - "unmatched_currencies": "Валюта вашого гаманця не збігається з валютою сканованого QR-коду" + "unmatched_currencies": "Валюта вашого гаманця не збігається з валютою сканованого QR-коду", + "contact_list_contacts": "Контакти", + "contact_list_wallets": "Мої гаманці" } diff --git a/res/values/strings_zh.arb b/res/values/strings_zh.arb index 7d251a68e..7c0f4ab74 100644 --- a/res/values/strings_zh.arb +++ b/res/values/strings_zh.arb @@ -48,7 +48,7 @@ "outgoing" : "发送", "transactions_by_date" : "按日期交易", "trades" : "交易", - "filters" : "过滤", + "filter_by": "过滤", "today" : "今天", "yesterday" : "昨天", "received" : "已收到", @@ -654,6 +654,8 @@ "use_suggested": "使用建议", "do_not_share_warning_text" : "请勿与其他任何人分享这些信息,包括支持人员。\n\n您的资金可能而且将会被盗!", "help": "帮助", + "all_transactions": "所有交易", + "all_trades": "所有的变化", "connection_sync": "连接和同步", "security_and_backup": "安全和备份", "create_backup": "创建备份", @@ -673,5 +675,7 @@ "disabled": "禁用", "enabled": "启用", "tor_only": "仅限 Tor", - "unmatched_currencies": "您当前钱包的货币与扫描的 QR 的货币不匹配" + "unmatched_currencies": "您当前钱包的货币与扫描的 QR 的货币不匹配", + "contact_list_contacts": "联系人", + "contact_list_wallets": "我的钱包" } diff --git a/scripts/android/app_env.sh b/scripts/android/app_env.sh index 556a78a87..c74d97c0f 100644 --- a/scripts/android/app_env.sh +++ b/scripts/android/app_env.sh @@ -14,14 +14,14 @@ TYPES=($MONERO_COM $CAKEWALLET $HAVEN) APP_ANDROID_TYPE=$1 MONERO_COM_NAME="Monero.com" -MONERO_COM_VERSION="1.2.3" -MONERO_COM_BUILD_NUMBER=34 +MONERO_COM_VERSION="1.2.5" +MONERO_COM_BUILD_NUMBER=36 MONERO_COM_BUNDLE_ID="com.monero.app" MONERO_COM_PACKAGE="com.monero.app" CAKEWALLET_NAME="Cake Wallet" -CAKEWALLET_VERSION="4.5.4" -CAKEWALLET_BUILD_NUMBER=139 +CAKEWALLET_VERSION="4.5.6" +CAKEWALLET_BUILD_NUMBER=141 CAKEWALLET_BUNDLE_ID="com.cakewallet.cake_wallet" CAKEWALLET_PACKAGE="com.cakewallet.cake_wallet" diff --git a/scripts/android/build_haven.sh b/scripts/android/build_haven.sh index 6d22f7778..5f3c9e50a 100755 --- a/scripts/android/build_haven.sh +++ b/scripts/android/build_haven.sh @@ -1,7 +1,7 @@ #!/bin/sh . ./config.sh -HAVEN_VERSION=tags/v2.2.2 +HAVEN_VERSION=tags/v3.0.0 HAVEN_SRC_DIR=${WORKDIR}/haven git clone https://github.com/haven-protocol-org/haven-main.git ${HAVEN_SRC_DIR} diff --git a/scripts/ios/app_env.sh b/scripts/ios/app_env.sh index f530f718a..8588bfcb2 100644 --- a/scripts/ios/app_env.sh +++ b/scripts/ios/app_env.sh @@ -13,13 +13,13 @@ TYPES=($MONERO_COM $CAKEWALLET $HAVEN) APP_IOS_TYPE=$1 MONERO_COM_NAME="Monero.com" -MONERO_COM_VERSION="1.2.3" -MONERO_COM_BUILD_NUMBER=31 +MONERO_COM_VERSION="1.2.5" +MONERO_COM_BUILD_NUMBER=33 MONERO_COM_BUNDLE_ID="com.cakewallet.monero" CAKEWALLET_NAME="Cake Wallet" -CAKEWALLET_VERSION="4.5.4" -CAKEWALLET_BUILD_NUMBER=136 +CAKEWALLET_VERSION="4.5.6" +CAKEWALLET_BUILD_NUMBER=138 CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet" HAVEN_NAME="Haven" diff --git a/scripts/ios/build_haven.sh b/scripts/ios/build_haven.sh index cc79d7a26..3199e3286 100755 --- a/scripts/ios/build_haven.sh +++ b/scripts/ios/build_haven.sh @@ -4,7 +4,7 @@ HAVEN_URL="https://github.com/haven-protocol-org/haven-main.git" HAVEN_DIR_PATH="${EXTERNAL_IOS_SOURCE_DIR}/haven" -HAVEN_VERSION=tags/v2.2.2 +HAVEN_VERSION=tags/v3.0.0 BUILD_TYPE=release PREFIX=${EXTERNAL_IOS_DIR} DEST_LIB_DIR=${EXTERNAL_IOS_LIB_DIR}/haven