prevent using same wallet name as existing (#391)

* Add wallet name validation
This commit is contained in:
Serhii 2022-06-29 20:21:21 +03:00 committed by GitHub
parent dc623f3293
commit 02533d68a0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
25 changed files with 137 additions and 51 deletions

View file

@ -40,8 +40,3 @@ class TextValidator extends Validator<String> {
bool match(String value) => RegExp(pattern).hasMatch(value);
}
class WalletNameValidator extends TextValidator {
WalletNameValidator()
: super(minLength: 1, maxLength: 15, pattern: '^[a-zA-Z0-9_]\$');
}

View file

@ -0,0 +1,11 @@
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/core/validator.dart';
class WalletNameValidator extends TextValidator {
WalletNameValidator()
: super(
errorMessage: S.current.error_text_wallet_name,
pattern: '^[a-zA-Z0-9\-_ ]+\$',
minLength: 1,
maxLength: 33);
}

View file

@ -1,3 +1,4 @@
import 'dart:convert';
import 'dart:math';
import 'package:flutter/services.dart';
@ -14,8 +15,11 @@ Future<String> generateName() async {
await rootBundle.loadString('assets/text/Wallet_Adjectives.txt');
final nounStringRaw =
await rootBundle.loadString('assets/text/Wallet_Nouns.txt');
final adjectives = List<String>.from(adjectiveStringRaw.split('\n'));
final nouns = List<String>.from(nounStringRaw.split('\n'));
final ls = LineSplitter();
final adjectives = ls.convert(adjectiveStringRaw);
final nouns = ls.convert(nounStringRaw);
final chosenAdjective = adjectives[randomThing.nextInt(adjectives.length)];
final chosenNoun = nouns[randomThing.nextInt(nouns.length)];
final returnString =

View file

@ -7,7 +7,7 @@ import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/core/validator.dart';
import 'package:cake_wallet/core/wallet_name_validator.dart';
import 'package:cake_wallet/src/widgets/seed_language_selector.dart';
import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/src/widgets/primary_button.dart';
@ -218,10 +218,21 @@ class _WalletNameFormState extends State<WalletNameForm> {
if (!_formKey.currentState.validate()) {
return;
}
if (_walletNewVM.nameExists(_walletNewVM.name)) {
showPopUp<void>(
context: context,
builder: (_) {
return AlertWithOneAction(
alertTitle: '',
alertContent: S.of(context).wallet_name_exists,
buttonText: S.of(context).ok,
buttonAction: () => Navigator.of(context).pop());
});
} else {
_walletNewVM.create(
options: _walletNewVM.hasLanguageSelector
? _languageSelectorKey.currentState.selected
: null);
}
}
}

View file

@ -1,4 +1,4 @@
import 'package:cake_wallet/core/validator.dart';
import 'package:cake_wallet/core/wallet_name_validator.dart';
import 'package:cake_wallet/palette.dart';
import 'package:flutter/services.dart';
import 'package:flutter/cupertino.dart';

View file

@ -3,7 +3,7 @@ import 'package:mobx/mobx.dart';
import 'package:flutter/material.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/core/validator.dart';
import 'package:cake_wallet/core/wallet_name_validator.dart';
import 'package:cake_wallet/core/execution_state.dart';
import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/src/widgets/blockchain_height_widget.dart';

View file

@ -8,7 +8,7 @@ import 'package:cake_wallet/src/widgets/blockchain_height_widget.dart';
import 'package:cake_wallet/src/widgets/base_text_form_field.dart';
import 'package:cake_wallet/src/widgets/base_text_form_field.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/core/validator.dart';
import 'package:cake_wallet/core/wallet_name_validator.dart';
import 'package:cake_wallet/entities/generate_name.dart';
class WalletRestoreFromKeysFrom extends StatefulWidget {

View file

@ -10,7 +10,7 @@ import 'package:cake_wallet/src/widgets/base_text_form_field.dart';
import 'package:cake_wallet/src/widgets/blockchain_height_widget.dart';
import 'package:cake_wallet/src/widgets/base_text_form_field.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/core/validator.dart';
import 'package:cake_wallet/core/wallet_name_validator.dart';
class WalletRestoreFromSeedForm extends StatefulWidget {
WalletRestoreFromSeedForm(
@ -41,6 +41,7 @@ class WalletRestoreFromSeedFormState extends State<WalletRestoreFromSeedForm> {
WalletRestoreFromSeedFormState(this.language)
: seedWidgetStateKey = GlobalKey<SeedWidgetState>(),
blockchainHeightKey = GlobalKey<BlockchainHeightState>(),
formKey = GlobalKey<FormState>(),
languageController = TextEditingController(),
nameTextEditingController = TextEditingController();
@ -48,6 +49,7 @@ class WalletRestoreFromSeedFormState extends State<WalletRestoreFromSeedForm> {
final GlobalKey<BlockchainHeightState> blockchainHeightKey;
final TextEditingController languageController;
final TextEditingController nameTextEditingController;
final GlobalKey<FormState> formKey;
String language;
@override
@ -61,7 +63,9 @@ class WalletRestoreFromSeedFormState extends State<WalletRestoreFromSeedForm> {
return Container(
padding: EdgeInsets.only(left: 24, right: 24),
child: Column(children: [
Stack(
Form(
key: formKey,
child: Stack(
alignment: Alignment.centerRight,
children: [
BaseTextFormField(
@ -97,7 +101,7 @@ class WalletRestoreFromSeedFormState extends State<WalletRestoreFromSeedForm> {
),
),
],
),
)),
Container(height: 20),
SeedWidget(
key: seedWidgetStateKey,

View file

@ -193,8 +193,7 @@ class WalletRestorePage extends BasePage {
child: Observer(
builder: (context) {
return LoadingPrimaryButton(
onPressed: () =>
walletRestoreViewModel.create(options: _credentials()),
onPressed: _confirmForm,
text: S.of(context).restore_recover,
color:
Theme.of(context).accentTextTheme.subtitle.decorationColor,
@ -268,4 +267,45 @@ class WalletRestorePage extends BasePage {
return credentials;
}
void _confirmForm() {
final formContext = walletRestoreViewModel.mode == WalletRestoreMode.seed
? walletRestoreFromSeedFormKey.currentContext
: walletRestoreFromKeysFormKey.currentContext;
final formKey = walletRestoreViewModel.mode == WalletRestoreMode.seed
? walletRestoreFromSeedFormKey.currentState.formKey
: walletRestoreFromKeysFormKey.currentState.formKey;
final name = walletRestoreViewModel.mode == WalletRestoreMode.seed
? walletRestoreFromSeedFormKey
.currentState.nameTextEditingController.value.text
: walletRestoreFromKeysFormKey
.currentState.nameTextEditingController.value.text;
if (!formKey.currentState.validate()) {
return;
}
if (walletRestoreViewModel.nameExists(name)) {
showNameExistsAlert(formContext);
return;
}
walletRestoreViewModel.create(options: _credentials());
}
Future<void> showNameExistsAlert(BuildContext context) {
return showPopUp<void>(
context: context,
builder: (_) {
return AlertWithOneAction(
alertTitle: '',
alertContent: S.of(context).wallet_name_exists,
buttonText: S.of(context).ok,
buttonAction: () => Navigator.of(context).pop());
});
}
}

View file

@ -32,6 +32,12 @@ abstract class WalletCreationVMBase with Store {
final Box<WalletInfo> _walletInfoSource;
final AppStore _appStore;
bool nameExists(String name) {
final walletNameList = _walletInfoSource.values.map((e) => e.name.toLowerCase()).toList();
return walletNameList.contains(name.toLowerCase());
}
Future<void> create({dynamic options}) async {
try {
state = IsExecutingState();

View file

@ -327,7 +327,7 @@
"error_text_fiat" : "Der Wert des Betrags darf den verfügbaren Kontostand nicht überschreiten.\nDie Anzahl der Nachkommastellen muss kleiner oder gleich 2 sein",
"error_text_subaddress_name" : "Der Name der Unteradresse darf nicht die Zeichen ` , ' \" enthalten\nund muss zwischen 1 und 20 Zeichen lang sein",
"error_text_amount" : "Betrag darf nur Zahlen enthalten",
"error_text_wallet_name" : "Der Walletname darf nur Buchstaben und Zahlen enthalten\nund muss zwischen 1 und 15 Zeichen lang sein",
"error_text_wallet_name" : "Der Wallet-Name darf nur Buchstaben, Zahlen und _- Symbole enthalten\nund muss zwischen 1 und 33 Zeichen lang sein",
"error_text_keys" : "Walletschlüssel können nur 64 hexadezimale Zeichen enthalten",
"error_text_crypto_currency" : "Die Anzahl der Nachkommastellen\nmuss kleiner oder gleich 12 sein.",
"error_text_minimal_limit" : "Handel für ${provider} wird nicht erstellt. Menge ist unter dem Minimum: ${min} ${currency}",
@ -533,5 +533,6 @@
"search_language": "Sprache suchen",
"search_currency": "Währung suchen",
"new_template" : "neue Vorlage",
"electrum_address_disclaimer": "Wir generieren jedes Mal neue Adressen, wenn Sie eine verwenden, aber vorherige Adressen funktionieren weiterhin"
"electrum_address_disclaimer": "Wir generieren jedes Mal neue Adressen, wenn Sie eine verwenden, aber vorherige Adressen funktionieren weiterhin",
"wallet_name_exists": "Wallet mit diesem Namen existiert bereits"
}

View file

@ -327,7 +327,7 @@
"error_text_fiat" : "Value of amount can't exceed available balance.\nThe number of fraction digits must be less or equal to 2",
"error_text_subaddress_name" : "Subaddress name can't contain ` , ' \" symbols\nand must be between 1 and 20 characters long",
"error_text_amount" : "Amount can only contain numbers",
"error_text_wallet_name" : "Wallet name can only contain letters, numbers\nand must be between 1 and 15 characters long",
"error_text_wallet_name" : "Wallet name can only contain letters, numbers, _ - symbols \nand must be between 1 and 33 characters long",
"error_text_keys" : "Wallet keys can only contain 64 chars in hex",
"error_text_crypto_currency" : "The number of fraction digits\nmust be less or equal to 12",
"error_text_minimal_limit" : "Trade for ${provider} is not created. Amount is less then minimal: ${min} ${currency}",
@ -533,5 +533,6 @@
"search_language": "Search language",
"search_currency": "Search currency",
"new_template" : "New Template",
"electrum_address_disclaimer": "We generate new addresses each time you use one, but previous addresses continue to work"
"electrum_address_disclaimer": "We generate new addresses each time you use one, but previous addresses continue to work",
"wallet_name_exists": "Wallet with that name has already existed"
}

View file

@ -327,7 +327,7 @@
"error_text_fiat" : "El valor de la cantidad no puede exceder el saldo disponible.\nEl número de dígitos de fracción debe ser menor o igual a 2",
"error_text_subaddress_name" : "El nombre de la subdirección no puede contener símbolos `, '\" \ny debe tener entre 1 y 20 caracteres de longitud",
"error_text_amount" : "La cantidad solo puede contener números",
"error_text_wallet_name" : "El nombre de la billetera solo puede contener letras, números \ny debe tener entre 1 y 15 caracteres de longitud",
"error_text_wallet_name" : "El nombre de la billetera solo puede contener letras, números , _ - símbolos\ny debe tener entre 1 y 33 caracteres de longitud",
"error_text_keys" : "Las llaves de billetera solo pueden contener 64 caracteres en hexadecimal",
"error_text_crypto_currency" : "El número de dígitos fraccionarios \ndebe ser menor o igual a 12",
"error_text_minimal_limit" : "El comercio por ${provider} no se crea. La cantidad es menos que mínima: ${min} ${currency}",
@ -533,5 +533,6 @@
"search_language": "Idioma de búsqueda",
"search_currency": "Moneda de búsqueda",
"new_template" : "Nueva plantilla",
"electrum_address_disclaimer": "Generamos nuevas direcciones cada vez que usa una, pero las direcciones anteriores siguen funcionando"
"electrum_address_disclaimer": "Generamos nuevas direcciones cada vez que usa una, pero las direcciones anteriores siguen funcionando",
"wallet_name_exists": "Wallet con ese nombre ya ha existido"
}

View file

@ -325,7 +325,7 @@
"error_text_fiat" : "La valeur du montant ne peut dépasser le solde disponible.\nLa partie décimale doit comporter au plus 2 chiffres",
"error_text_subaddress_name" : "Le nom de sous-adresse ne peut contenir les symboles ` , ' \"\net sa longueur doit être comprise entre 1 et 20 caractères",
"error_text_amount" : "Le montant ne peut comporter que des nombres",
"error_text_wallet_name" : "Le nom du portefeuille ne peut contenir que des lettres et des chiffres\net sa longueur doit être comprise entre 1 et 15 caractères",
"error_text_wallet_name" : "Le nom du portefeuille ne peut contenir que des lettres, des chiffres, des symboles _ -\net doit comporter entre 1 et 33 caractères",
"error_text_keys" : "Les clefs du portefeuille ne peuvent être constituées que de 64 caractères hexadécimaux",
"error_text_crypto_currency" : "La partie décimale\ndoit comporter au plus 12 chiffres",
"error_text_minimal_limit" : "Échange pour ${provider} non créé. Le montant est inférieur au minimum : ${min} ${currency}",
@ -531,5 +531,6 @@
"search_language": "Langue de recherche",
"search_currency": "Devise de recherche",
"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"
"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": "Le portefeuille portant ce nom existe déjà"
}

View file

@ -327,7 +327,7 @@
"error_text_fiat" : "राशि का मूल्य उपलब्ध शेष राशि से अधिक नहीं हो सकता.\nअंश अंकों की संख्या कम या 2 के बराबर होनी चाहिए",
"error_text_subaddress_name" : "सबड्रेस नाम नहीं हो सकता` , ' \" प्रतीकों\nऔर 1 और 20 वर्णों के बीच लंबा होना चाहिए",
"error_text_amount" : "राशि में केवल संख्याएँ हो सकती हैं",
"error_text_wallet_name" : "वॉलेट नाम में केवल अक्षर, संख्याएं हो सकती हैं\nऔर 1 और 15 वर्णों के बीच लंबा होना चाहिए",
"error_text_wallet_name" : "वॉलेट नाम में केवल अक्षर, संख्याएं, _ - प्रतीक हो सकते हैं\nऔर 1 और 33 वर्णों के बीच लंबा होना चाहिए",
"error_text_keys" : "वॉलेट कीज़ में हेक्स में केवल 64 वर्ण हो सकते हैं",
"error_text_crypto_currency" : "अंश अंकों की संख्या\n12 से कम या इसके बराबर होना चाहिए",
"error_text_minimal_limit" : "व्यापार ${provider} के लिए नहीं बनाया गया है। राशि कम है तो न्यूनतम: ${min} ${currency}",
@ -533,5 +533,6 @@
"search_language": "भाषा खोजें",
"search_currency": "मुद्रा खोजें",
"new_template" : "नया टेम्पलेट",
"electrum_address_disclaimer": "हर बार जब आप एक का उपयोग करते हैं तो हम नए पते उत्पन्न करते हैं, लेकिन पिछले पते काम करना जारी रखते हैं"
"electrum_address_disclaimer": "हर बार जब आप एक का उपयोग करते हैं तो हम नए पते उत्पन्न करते हैं, लेकिन पिछले पते काम करना जारी रखते हैं",
"wallet_name_exists": "उस नाम वाला वॉलेट पहले से मौजूद है"
}

View file

@ -327,7 +327,7 @@
"error_text_fiat" : "Vrijednost iznosa ne smije biti veća od raspoloživog iznosa.\nBroj decimala smije biti 2 ili manji.",
"error_text_subaddress_name" : "Ime podadrese ne smije sadržavati znakove ` , ' \" \ni mora biti dužine između 1 i 20 znakova",
"error_text_amount" : "Iznos smije sadržavati samo brojeve",
"error_text_wallet_name" : "Ime novčanika smije sadržavati samo slova i brojeve\nte mora biti dužine između 1 i 15 znakova",
"error_text_wallet_name" : "Naziv novčanika može sadržavati samo slova, brojeve, _ - simbole\ni mora imati između 1 i 33 znaka",
"error_text_keys" : "Novčanik smije sadržavati samo 64 znakova hex vrijednosti",
"error_text_crypto_currency" : "Broj decimala mora\nbiti 12 ili manji",
"error_text_minimal_limit" : "Razmjena za ${provider} nije izrađena. Iznos je manji od minimalnog: ${min} ${currency}",
@ -533,5 +533,6 @@
"search_language": "Jezik pretraživanja",
"search_currency": "Traži valutu",
"new_template" : "novi predložak",
"electrum_address_disclaimer": "Minden egyes alkalommal új címeket generálunk, de a korábbi címek továbbra is működnek"
"electrum_address_disclaimer": "Minden egyes alkalommal új címeket generálunk, de a korábbi címek továbbra is működnek",
"wallet_name_exists": "Novčanik s tim nazivom već postoji"
}

View file

@ -327,7 +327,7 @@
"error_text_fiat" : "L'ammontare non può eccedere il saldo dispoinibile.\nIl numero di cifre decimali deve essere inferiore o uguale a 2",
"error_text_subaddress_name" : "Il nome del sottoindirizzo non può contenere i simboli ` , ' \" \ne deve avere una lunghezza compresa tra 1 e 20 caratteri",
"error_text_amount" : "L'ammontare può contenere solo numeri",
"error_text_wallet_name" : "Il nome del portafoglio può contenere solo lettere, numeri\ne deve avere una lunghezza compresa tra 1 e 15 caratteri",
"error_text_wallet_name" : "Il nome del portafoglio può contenere solo lettere, numeri, _ - simboli\ne deve avere una lunghezza compresa tra 1 e 33 caratteri",
"error_text_keys" : "Le chiavi del portafoglio possono contenere solo 64 caratteri in hex",
"error_text_crypto_currency" : "Il numero delle cifre decimali\ndeve essere inferiore o uguale a 12",
"error_text_minimal_limit" : "Lo scambio per ${provider} non è stato creato. L'ammontare è inferiore al minimo: ${min} ${currency}",
@ -533,5 +533,6 @@
"search_language": "Cerca lingua",
"search_currency": "Cerca valuta",
"new_template" : "Nuovo modello",
"electrum_address_disclaimer": "Generiamo nuovi indirizzi ogni volta che ne utilizzi uno, ma gli indirizzi precedenti continuano a funzionare"
"electrum_address_disclaimer": "Generiamo nuovi indirizzi ogni volta che ne utilizzi uno, ma gli indirizzi precedenti continuano a funzionare",
"wallet_name_exists": "Il portafoglio con quel nome è già esistito"
}

View file

@ -327,7 +327,7 @@
"error_text_fiat" : "金額は利用可能な残高を超えることはできません.\n小数桁の数は2以下でなければなりません",
"error_text_subaddress_name" : "サブアドレス名に含めることはできません` , ' \" シンボル\n1〜20文字の長さである必要があります",
"error_text_amount" : "金額には数字のみを含めることができます",
"error_text_wallet_name" : "ウォレット名には文字のみを含めることができます\n1〜15文字である必要があります",
"error_text_wallet_name" : "ウォレット名には、文字、数字、_-記号のみを含めることができます\n長さは1〜33文字である必要があります",
"error_text_keys" : "ウォレットキーには、16進数で64文字しか含めることができません",
"error_text_crypto_currency" : "小数桁数\n12以下でなければなりません",
"error_text_minimal_limit" : "${provider} の取引は作成されません。 金額は最小額より少ない: ${min} ${currency}",
@ -533,5 +533,6 @@
"search_language": "検索言語",
"search_currency": "検索通貨",
"new_template" : "新しいテンプレート",
"electrum_address_disclaimer": "使用するたびに新しいアドレスが生成されますが、以前のアドレスは引き続き機能します"
"electrum_address_disclaimer": "使用するたびに新しいアドレスが生成されますが、以前のアドレスは引き続き機能します",
"wallet_name_exists": "その名前のウォレットはすでに存在しています"
}

View file

@ -327,7 +327,7 @@
"error_text_fiat" : "금액은 사용 가능한 잔액을 초과 할 수 없습니다.\n소수 자릿수는 2보다 작거나 같아야합니다",
"error_text_subaddress_name" : "하위 주소 이름은 포함 할 수 없습니다 ` , ' \" 기호 \n1 ~ 20 자 사이 여야합니다",
"error_text_amount" : "금액은 숫자 만 포함 할 수 있습니다",
"error_text_wallet_name" : "지갑 이름은 문자, 숫자 만 포함 할 수 있습니다\n1 ~ 15 자 사이 여야합니다",
"error_text_wallet_name" : "지갑 이름은 문자, 숫자, _ - 기호만 포함할 수 있습니다.\n1~33자 사이여야 합니다.",
"error_text_keys" : "지갑 키는 16 진수로 64 자만 포함 할 수 있습니다",
"error_text_crypto_currency" : "소수 자릿수\n12 이하 여야합니다",
"error_text_minimal_limit" : "거래 ${provider} 가 생성되지 않습니다. 금액이 최소보다 적습니다. ${min} ${currency}",
@ -533,5 +533,6 @@
"search_language": "검색 언어",
"search_currency": "통화 검색",
"new_template" : "새 템플릿",
"electrum_address_disclaimer": "사용할 때마다 새 주소가 생성되지만 이전 주소는 계속 작동합니다."
"electrum_address_disclaimer": "사용할 때마다 새 주소가 생성되지만 이전 주소는 계속 작동합니다.",
"wallet_name_exists": "해당 이름의 지갑이 이미 존재합니다."
}

View file

@ -327,7 +327,7 @@
"error_text_fiat" : "Waarde van bedrag kan het beschikbare saldo niet overschrijden.\nHet aantal breukcijfers moet kleiner zijn dan of gelijk zijn aan 2",
"error_text_subaddress_name" : "Naam subadres mag niet bevatten ` , ' \" symbolen\nen moet tussen de 1 en 20 tekens lang zijn",
"error_text_amount" : "Bedrag kan alleen cijfers bevatten",
"error_text_wallet_name" : "Naam portemonnee kan alleen letters, cijfers bevatten\nen moet tussen de 1 en 15 tekens lang zijn",
"error_text_wallet_name" : "Naam portemonnee kan alleen letters, cijfers , _ - symbolen bevatten\nen moet tussen de 1 en 33 tekens lang zijn",
"error_text_keys" : "Portefeuillesleutels kunnen maximaal 64 tekens bevatten in hexadecimale volgorde",
"error_text_crypto_currency" : "Het aantal breukcijfers\nmoet kleiner zijn dan of gelijk zijn aan 12",
"error_text_minimal_limit" : "Ruil voor ${provider} is niet gemaakt. Bedrag is minder dan minimaal: ${min} ${currency}",
@ -533,5 +533,6 @@
"search_language": "Zoektaal",
"search_currency": "Zoek valuta",
"new_template" : "Nieuwe sjabloon",
"electrum_address_disclaimer": "We generate new addresses each time you use one, but previous addresses continue to work"
"electrum_address_disclaimer": "We generate new addresses each time you use one, but previous addresses continue to work",
"wallet_name_exists": "Portemonnee met die naam bestaat al"
}

View file

@ -327,7 +327,7 @@
"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_amount" : "Kwota może zawierać tylko liczby",
"error_text_wallet_name" : "Nazwa portfela może zawierać tylko litery i cyfry\ni musi mieć od 1 do 15 znaków",
"error_text_wallet_name" : "Nazwa portfela może zawierać tylko litery, cyfry, _ - 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}",
@ -533,5 +533,6 @@
"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 korzystasz z jednego z nich, generujemy nowe adresy, ale poprzednie adresy nadal działają",
"wallet_name_exists": "Portfel o tej nazwie już istnieje"
}

View file

@ -327,7 +327,7 @@
"error_text_fiat" : "O valor do valor não pode exceder o saldo disponível.\nO número de dígitos decimais deve ser menor ou igual a 2",
"error_text_subaddress_name" : "O nome do sub-endereço não pode conter os símbolos ` , ' \" \ne deve ter entre 1 e 20 caracteres",
"error_text_amount" : "A quantia deve conter apenas números",
"error_text_wallet_name" : "O nome da carteira só pode conter letras, números\ne deve ter entre 1 e 15 caracteres",
"error_text_wallet_name" : "O nome da carteira só pode conter letras, números, _ - símbolos\ne deve ter entre 1 e 33 caracteres",
"error_text_keys" : "As chaves da carteira podem conter apenas 64 caracteres em hexadecimal",
"error_text_crypto_currency" : "O número de dígitos decimais\ndeve ser menor ou igual a 12",
"error_text_minimal_limit" : "A troca por ${provider} não é criada. O valor é menor que o mínimo: ${min} ${currency}",
@ -533,5 +533,6 @@
"search_language": "Idioma de pesquisa",
"search_currency": "Pesquisar moeda",
"new_template" : "Novo modelo",
"electrum_address_disclaimer": "Geramos novos endereços cada vez que você usa um, mas os endereços anteriores continuam funcionando"
"electrum_address_disclaimer": "Geramos novos endereços cada vez que você usa um, mas os endereços anteriores continuam funcionando",
"wallet_name_exists": "A carteira com esse nome já existe"
}

View file

@ -327,7 +327,7 @@
"error_text_fiat" : "Значение суммы не может превышать доступный баланс.\nКоличество цифр после запятой должно быть меньше или равно 2",
"error_text_subaddress_name" : "Имя субадреса не может содержать ` , ' \" символы\nи должно быть от 1 до 20 символов в длину",
"error_text_amount" : "Баланс может содержать только цифры",
"error_text_wallet_name" : "Имя кошелька может содержать только буквы, цифры\nи должно быть от 1 до 15 символов в длину",
"error_text_wallet_name" : "Имя кошелька может содержать только буквы, цифры, _ - символы\nи должно быть от 1 до 33 символов в длину",
"error_text_keys" : "Ключи кошелька могут содержать только 64 символа в hex",
"error_text_crypto_currency" : "Количество цифр после запятой\nдолжно быть меньше или равно 12",
"error_text_minimal_limit" : "Сделка для ${provider} не создана. Сумма меньше минимальной: ${min} ${currency}",
@ -533,5 +533,6 @@
"search_language": "Язык поиска",
"search_currency": "Валюта поиска",
"new_template" : "Новый шаблон",
"electrum_address_disclaimer": "Мы генерируем новые адреса каждый раз, когда вы их используете, но предыдущие адреса продолжают работать."
"electrum_address_disclaimer": "Мы генерируем новые адреса каждый раз, когда вы их используете, но предыдущие адреса продолжают работать.",
"wallet_name_exists": "Кошелек с таким именем уже существует"
}

View file

@ -326,7 +326,7 @@
"error_text_fiat" : "Значення суми не може перевищувати доступний баланс.\nКількість цифр після коми повинно бути меншим або дорівнювати 2",
"error_text_subaddress_name" : "Ім'я субадреси не може містити ` , ' \" символи\nі може бути від 1 до 20 символів в довжину",
"error_text_amount" : "Баланс може містити тільки цифри",
"error_text_wallet_name" : "Ім'я гаманця може містити тільки букви, цифри\nі повинно бути від 1 до 15 символів в довжину",
"error_text_wallet_name" : "Ім'я гаманця може містити тільки букви, цифри, символи _ -\nі повинно бути від 1 до 33 символів в довжину",
"error_text_keys" : "Ключі гаманця можуть містити тільки 64 символів в hex",
"error_text_crypto_currency" : "Кількість цифр після коми\nповинно бути меншим або дорівнювати 12",
"error_text_minimal_limit" : "Операція для ${provider} не створена. Сума менша мінімальної: ${min} ${currency}",
@ -532,5 +532,6 @@
"search_language": "Мова пошуку",
"search_currency": "Шукати валюту",
"new_template" : "Новий шаблон",
"electrum_address_disclaimer": "Ми створюємо нові адреси щоразу, коли ви використовуєте їх, але попередні адреси продовжують працювати"
"electrum_address_disclaimer": "Ми створюємо нові адреси щоразу, коли ви використовуєте їх, але попередні адреси продовжують працювати",
"wallet_name_exists": "Гаманець з такою назвою вже існує"
}

View file

@ -327,7 +327,7 @@
"error_text_fiat" : "金额不能超过可用余额.\n小数位数必须小于或等于2",
"error_text_subaddress_name" : "子地址名称不能包含`' \" 符号\n并且必须在1到20个字符之间",
"error_text_amount" : "金额只能包含数字",
"error_text_wallet_name" : "钱包名称只能包含字母,数字\n且必须介于1到15个字符之间",
"error_text_wallet_name" : "钱包名称只能包含字母、数字、_ - 符号\n并且长度必须在 1 到 33 个字符之间",
"error_text_keys" : "钱包密钥只能包含16个字符的十六进制字符",
"error_text_crypto_currency" : "小数位数\n必须小于或等于12",
"error_text_minimal_limit" : "未创建 ${provider} 交易。 金额小于最小值:${min} ${currency}",
@ -531,5 +531,6 @@
"search_language": "搜索语言",
"search_currency": "搜索货币",
"new_template" : "新模板",
"electrum_address_disclaimer": "每次您使用一个地址时,我们都会生成新地址,但之前的地址仍然有效"
"electrum_address_disclaimer": "每次您使用一个地址时,我们都会生成新地址,但之前的地址仍然有效",
"wallet_name_exists": "同名的钱包已经存在"
}