Merge remote-tracking branch 'origin/auth-login-and-2fa-login' into auth-recover-password

This commit is contained in:
2026-01-05 10:35:18 +01:00
85 changed files with 8152 additions and 834 deletions

View File

@@ -29,12 +29,13 @@ class CountryPrefixPicker extends StatelessWidget {
width: width,
height: height,
child: CountryCodePicker(
showCountryOnly: true,
showOnlyCountryWhenClosed: true,
showDropDownButton: true,
headerText: headerText,
onChanged: onChanged,
initialSelection: initialCountryCode,
showFlag: false,
showDropDownButton: false,
hideMainText: true,
showFlag: true,
padding: EdgeInsets.zero,
builder: (CountryCode? country) {
if (country == null) {

View File

@@ -3,7 +3,9 @@ import 'package:flutter/material.dart';
class CustomDropdown extends StatelessWidget {
final List<Widget> items;
final List<dynamic>? values;
final ValueChanged<dynamic> onChanged;
final dynamic value;
final String? hint;
final String? label;
@@ -28,10 +30,15 @@ class CustomDropdown extends StatelessWidget {
@override
Widget build(BuildContext context) {
final borderColor = color ?? const Color(0xFF4B4B4B);
OutlineInputBorder border(Color c) => OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(radius)),
borderSide: BorderSide(color: c),
);
return Column(
spacing: 8,
children: [
if (label != null)
if (label != null) ...[
Align(
alignment: Alignment.bottomLeft,
child: Text(
@@ -39,6 +46,8 @@ class CustomDropdown extends StatelessWidget {
style: const TextStyle(fontSize: 14, letterSpacing: 0),
),
),
const SizedBox(height: 8),
],
SizedBox(
width: width,
height: height,
@@ -46,15 +55,21 @@ class CustomDropdown extends StatelessWidget {
child: DropdownButtonFormField<dynamic>(
dropdownColor: Colors.white,
decoration: InputDecoration(
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(radius)),
borderSide: BorderSide(
color: color ?? const Color(0xFF4B4B4B),
),
enabledBorder: border(borderColor),
focusedBorder: border(borderColor),
disabledBorder: border(borderColor),
errorBorder: border(borderColor),
focusedErrorBorder: border(borderColor),
contentPadding: const EdgeInsets.symmetric(
horizontal: 12,
vertical: 16,
),
),
initialValue: value,
onChanged: onChanged,
hint: hint != null ? Text(hint!) : null,
items: List<DropdownMenuItem<dynamic>>.generate(items.length, (
int index,

View File

@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
class CustomTextField extends StatelessWidget {
class CustomTextField extends StatefulWidget {
final bool? showPassword;
final TextInputType keyboardType;
final TextInputAction? textInputAction;
@@ -11,10 +11,9 @@ class CustomTextField extends StatelessWidget {
final double labelSize;
final int? lines;
final ValueChanged<String>? onChanged;
final bool readOnly;
final int? length;
final TextEditingController? controller;
final String? initialValue;
final Color color;
const CustomTextField({
super.key,
@@ -29,60 +28,71 @@ class CustomTextField extends StatelessWidget {
this.lines,
this.length,
this.onChanged,
this.readOnly = false,
this.controller,
this.initialValue,
this.color = const Color(0xFF4B4B4B),
});
@override
State<CustomTextField> createState() => CustomTextFieldState();
}
class CustomTextFieldState extends State<CustomTextField> {
late bool _showPassword;
@override
void initState() {
super.initState();
_showPassword = widget.showPassword ?? true;
}
@override
Widget build(BuildContext context) {
return Column(
spacing: 8,
children: [
if (label.isNotEmpty)
if (widget.label.isNotEmpty)
Align(
alignment: Alignment.bottomLeft,
child: Text(
label,
style: TextStyle(fontSize: labelSize, letterSpacing: 0),
widget.label,
style: TextStyle(fontSize: widget.labelSize, letterSpacing: 0),
),
),
TextFormField(
onFieldSubmitted: onSubmitted,
textInputAction: textInputAction,
controller: controller,
keyboardType: keyboardType,
obscureText: !(showPassword ?? true),
enableSuggestions: (showPassword ?? true),
autocorrect: !(showPassword ?? true),
readOnly: widget.readOnly,
onFieldSubmitted: widget.onSubmitted,
textInputAction: widget.textInputAction,
controller: widget.controller,
keyboardType: widget.keyboardType,
obscureText: !_showPassword,
enableSuggestions: _showPassword,
autocorrect: !_showPassword,
style: const TextStyle(color: Color(0xFF4B4B4B)),
decoration: InputDecoration(
counterText: "",
hintText: hint,
enabledBorder: OutlineInputBorder(
hintText: widget.hint,
border: const OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(12)),
borderSide: BorderSide(color: color),
borderSide: BorderSide(color: Color(0xFF4B4B4B)),
gapPadding: 16,
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(12)),
borderSide: BorderSide(color: color),
gapPadding: 16,
),
suffixIcon: showPassword != null
suffixIcon: widget.showPassword != null
? IconButton(
icon: Icon(
showPassword! ? Icons.visibility_off_outlined : Icons.visibility_outlined,
),
onPressed: onVisibilityChanged,
)
icon: Icon(
_showPassword ? Icons.visibility_off : Icons.visibility,
),
onPressed: () {
setState(() {
_showPassword = !_showPassword;
});
},
//onpressed: widget.onVisibilityChanged,
)
: null,
),
initialValue: initialValue,
minLines: lines ?? 1,
maxLines: lines ?? 1,
maxLength: length,
onChanged: onChanged,
minLines: widget.lines ?? 1,
maxLines: widget.lines ?? 1,
maxLength: widget.length,
onChanged: widget.onChanged,
),
],
);

View File

@@ -31,7 +31,6 @@
"apple": "Apple",
"dontHaveAccount": "Du hast noch kein Konto?",
"createOneNow": "Jetzt eines erstellen",
"tryAgain": "Erneut versuchen",
"recoverPasswordTitle": "Passwort wiederherstellen",
"recoverPasswordSubtitle": "Geben Sie Ihre E-Mail-Adresse ein, um Ihnen einen Wiederherstellungslink zu senden",
"send": "Schicken",
@@ -58,5 +57,78 @@
"errorMessagePasswordTooShort": "Das Passwort muss mindestens 8 Zeichen lang sein",
"errorMessagePasswordNoCapitals": "Das Passwort muss mindestens einen Großbuchstaben enthalten",
"errorMessagePasswordNoNumbers": "Das Passwort muss mindestens eine Zahl enthalten",
"errorMessagePasswordNoSpecialChars": "Das Passwort muss mindestens ein Sonderzeichen enthalten"
"errorMessagePasswordNoSpecialChars": "Das Passwort muss mindestens ein Sonderzeichen enthalten",
"errorEmailRequired": "E-Mail ist erforderlich.",
"errorEmailInvalid": "Bitte gib eine gültige E-Mail-Adresse ein.",
"errorPasswordRequired": "Passwort ist erforderlich.",
"errorPasswordMinLength": "Das Passwort muss mindestens 6 Zeichen lang sein.",
"twoFactorTitle": "Zwei-Faktor-Authentifizierung",
"twoFactorSubtitle": "Gib den 6-stelligen Code ein, um fortzufahren.",
"twoFactorCodeLabel": "Bestätigungscode",
"twoFactorCodeHint": "6-stelliger Code",
"twoFactorVerify": "Bestätigen",
"close": "Schließen",
"errorTwoFactorCodeRequired": "Der Bestätigungscode ist erforderlich.",
"errorTwoFactorCodeInvalidLength": "Der Code muss 6-stellig sein.",
"errorTwoFactorCodeInvalid": "Ungültiger Code. Bitte versuche es erneut.",
"stepUserContactSupertitle": "Benutzer und Kontakt",
"stepUserContactTitle": "Erstelle dein Konto",
"stepUserContactSubtitle": "Mit deiner E-Mail und deiner Telefonnummer können wir dich jederzeit informieren",
"termsText": "Ich akzeptiere die Allgemeinen Geschäftsbedingungen",
"firstNameLabel": "Vorname",
"firstNameHint": "Vorname",
"lastNameLabel": "Nachname",
"lastNameHint": "Nachname",
"documentTypeHint": "Dokument",
"documentTypeDni": "DNI",
"documentTypeNie": "NIE",
"documentTypePassport": "Reisepass",
"documentNumberHint": "DNI/NIE/Reisepass",
"phoneLabel": "Mobiltelefon",
"phoneHint": "Mobiltelefon",
"emailLabel": "E-Mail-Adresse",
"emailHint": "E-Mail-Adresse",
"stepPersonalDataSupertitle": "Persönliche Daten",
"stepPersonalDataTitle": "Identifiziere dich",
"stepPersonalDataSubtitle": "Wir stellen sicher, dass das Konto auf den verantwortlichen Erwachsenen läuft",
"relationshipLabel": "Welche Beziehung hast du?",
"relationshipHint": "Wähle eine Option",
"relationshipFather": "Vater",
"relationshipMother": "Mutter",
"relationshipTutor": "Erziehungsberechtigter",
"addressCountryLabel": "Land (Adresse)",
"addressCountryHint": "Land",
"birthDateLabel": "Geburtsdatum",
"birthDateHint": "TT/MM/JJJJ",
"placeOfBirthLabel": "Geburtsort",
"placeOfBirthHint": "Geburtsstadt",
"birthCountryLabel": "Geburtsland",
"birthCountryHint": "Geburtsland",
"streetLabel": "Straße / Adresse",
"streetHint": "Gran Vía 30, 6. Stock",
"cityLabel": "Stadt",
"cityHint": "Stadt",
"provinceLabel": "Provinz",
"provinceHint": "Provinz",
"stateLabel": "Region / Bundesland",
"stateHint": "Region / Bundesland",
"postCodeLabel": "Postleitzahl",
"postCodeHint": "28013",
"stepAddressSupertitle": "Adresse",
"stepAddressTitle": "Deine Adresse",
"passwordRulesSubtitle": "Mindestens 8 Zeichen, mit einem Großbuchstaben, einer Zahl und einem Sonderzeichen",
"accountCreatedTitle": "Konto erstellt",
"accountCreatedForLabel": "Du hast das Konto erstellt für:",
"accountCreatedEmailVerificationSentLabel": "Wir haben eine Bestätigungs-E-Mail gesendet an:",
"accountCreatedChildSetupHint": "Erstelle das Konto deines Kindes und trage sein \nerstes Taschengeld ein, um es mit seiner Uhr zu nutzen",
"accountCreatedContinue": "Weiter",
"secretCodeTitle": "Einrichtungsanweisungen",
"secretCodeStep1Title": "Lade eine Authenticator-App herunter",
"secretCodeStep1Body": "Stelle sicher, dass Google Authenticator auf deinem Gerät installiert ist.",
"secretCodeStep2Title": "QR-Code scannen oder Schlüssel kopieren",
"secretCodeStep2Body": "Scanne den QR-Code unten mit der Authenticator-App, um das Gerät zu verifizieren.\n\nOder kopiere den Schlüssel und gib ihn manuell in der Authenticator-App ein.",
"secretCodeKeyCopied": "Schlüssel kopiert",
"secretCodeStep3Title": "Generierten Code kopieren",
"secretCodeStep3Body": "Nachdem du den QR-Code gescannt oder den Schlüssel in der Authenticator-App eingegeben hast, kopiere den generierten 6-stelligen Code und gib ihn im nächsten Bildschirm ein.",
"secretCodeConfigure": "Einrichten"
}

View File

@@ -31,7 +31,6 @@
"apple": "Apple",
"dontHaveAccount": "Don't have an account?",
"createOneNow": "Create one now",
"tryAgain": "Try again",
"recoverPasswordTitle": "Recover password",
"recoverPasswordSubtitle": "Insert your email to send you a recovery link",
"send": "Send",
@@ -58,5 +57,78 @@
"errorMessagePasswordTooShort": "Password must include at least 8 characters",
"errorMessagePasswordNoCapitals": "Password must include at least one capital letter",
"errorMessagePasswordNoNumbers": "Password must include at least one number",
"errorMessagePasswordNoSpecialChars": "Password must include at least one special character"
"errorMessagePasswordNoSpecialChars": "Password must include at least one special character",
"errorEmailRequired": "Email is required.",
"errorEmailInvalid": "Please enter a valid email address.",
"errorPasswordRequired": "Password is required.",
"errorPasswordMinLength": "Password must be at least 6 characters.",
"twoFactorTitle": "Two-factor authentication",
"twoFactorSubtitle": "Enter the 6-digit code to continue.",
"twoFactorCodeLabel": "Verification code",
"twoFactorCodeHint": "6-digit code",
"twoFactorVerify": "Verify",
"close": "Close",
"errorTwoFactorCodeRequired": "The verification code is required.",
"errorTwoFactorCodeInvalidLength": "The code must be 6 digits.",
"errorTwoFactorCodeInvalid": "Invalid code. Please try again.",
"stepUserContactSupertitle": "User & contact",
"stepUserContactTitle": "Create your account",
"stepUserContactSubtitle": "With your email and phone number we can keep you informed at all times",
"termsText": "I accept the terms and conditions",
"firstNameLabel": "First name",
"firstNameHint": "First name",
"lastNameLabel": "Last name",
"lastNameHint": "Last name",
"documentTypeHint": "Document",
"documentTypeDni": "DNI",
"documentTypeNie": "NIE",
"documentTypePassport": "Passport",
"documentNumberHint": "DNI/NIE/Passport",
"phoneLabel": "Mobile phone",
"phoneHint": "Mobile phone",
"emailLabel": "Email address",
"emailHint": "Email address",
"stepPersonalDataSupertitle": "Personal details",
"stepPersonalDataTitle": "Identify yourself",
"stepPersonalDataSubtitle": "We'll make sure the account is in the name of the responsible adult",
"relationshipLabel": "What is your relationship?",
"relationshipHint": "Select an option",
"relationshipFather": "Father",
"relationshipMother": "Mother",
"relationshipTutor": "Legal guardian",
"addressCountryLabel": "Country (address)",
"addressCountryHint": "Country",
"birthDateLabel": "Date of birth",
"birthDateHint": "DD/MM/YYYY",
"placeOfBirthLabel": "Place of birth",
"placeOfBirthHint": "City of birth",
"birthCountryLabel": "Country of birth",
"birthCountryHint": "Country of birth",
"streetLabel": "Street / Address",
"streetHint": "Gran Vía St 30, 6th floor",
"cityLabel": "City",
"cityHint": "City",
"provinceLabel": "Province",
"provinceHint": "Province",
"stateLabel": "Region / State",
"stateHint": "Region / State",
"postCodeLabel": "Postal code",
"postCodeHint": "28013",
"stepAddressSupertitle": "Address",
"stepAddressTitle": "Your address",
"passwordRulesSubtitle": "Minimum 8 characters, including an uppercase letter, a number, and a special character",
"accountCreatedTitle": "Account created",
"accountCreatedForLabel": "You created the account for:",
"accountCreatedEmailVerificationSentLabel": "Weve sent a verification email to:",
"accountCreatedChildSetupHint": "Create your childs account and enter their \nfirst allowance to use it with their watch",
"accountCreatedContinue": "Continue",
"secretCodeTitle": "Setup instructions",
"secretCodeStep1Title": "Download an authenticator app",
"secretCodeStep1Body": "Make sure you have Google Authenticator on your device.",
"secretCodeStep2Title": "Scan the QR code or copy the key",
"secretCodeStep2Body": "Scan the QR code below with the authenticator app to verify the device.\n\nOr copy the key and enter it manually in the authenticator app.",
"secretCodeKeyCopied": "Key copied",
"secretCodeStep3Title": "Copy the generated code",
"secretCodeStep3Body": "After scanning the QR code or entering the key in the authenticator app, copy the generated 6-digit code and enter it on the next screen.",
"secretCodeConfigure": "Set up"
}

View File

@@ -18,7 +18,7 @@
"connect": "Conéctate",
"verificationCodeSentTo": "Hemos enviado el código al ",
"enterCodeHere": "Introduce el código aquí",
"enter": "enter",
"enter": "entrar",
"didNotReceiveIt": "¿No lo has recibido?",
"tryAgain": "Volver a intentarlo",
"welcome": "¡Te damos la bienvenida!",
@@ -31,7 +31,6 @@
"apple": "Apple",
"dontHaveAccount": "¿No tienes cuenta?",
"createOneNow": "Crear una ahora",
"tryAgain": "Volver a intentarlo",
"recoverPasswordTitle": "Recuperar contraseña",
"recoverPasswordSubtitle": "Introduce tu email para enviarte un enlace de recuperación",
"send": "Enviar",
@@ -58,5 +57,78 @@
"errorMessagePasswordTooShort": "La contraseña debe tener al menos 8 caracteres",
"errorMessagePasswordNoCapitals": "La contraseña debe tener al menos una mayúscula",
"errorMessagePasswordNoNumbers": "La contraseña debe tener al menos un número",
"errorMessagePasswordNoSpecialChars": "La contraseña debe tener al menos un carácter especial"
"errorMessagePasswordNoSpecialChars": "La contraseña debe tener al menos un carácter especial",
"errorEmailRequired": "El email es obligatorio.",
"errorEmailInvalid": "Introduce un email válido.",
"errorPasswordRequired": "La contraseña es obligatoria.",
"errorPasswordMinLength": "La contraseña debe tener al menos 6 caracteres.",
"twoFactorTitle": "Autenticación en dos pasos",
"twoFactorSubtitle": "Introduce el código de 6 dígitos para continuar.",
"twoFactorCodeLabel": "Código de verificación",
"twoFactorCodeHint": "Código de 6 dígitos",
"twoFactorVerify": "Verificar",
"close": "Cerrar",
"errorTwoFactorCodeRequired": "El código de verificación es obligatorio.",
"errorTwoFactorCodeInvalidLength": "El código debe tener 6 dígitos.",
"errorTwoFactorCodeInvalid": "Código incorrecto. Inténtalo de nuevo.",
"stepUserContactSupertitle": "Usuario y contacto",
"stepUserContactTitle": "Crea tu usuario",
"stepUserContactSubtitle": "Con tu email y tu número podremos mantenerte siempre informado",
"termsText": "Acepto los términos y condiciones",
"firstNameLabel": "Nombre",
"firstNameHint": "Nombre",
"lastNameLabel": "Apellido",
"lastNameHint": "Apellido",
"documentTypeHint": "Documento",
"documentTypeDni": "DNI",
"documentTypeNie": "NIE",
"documentTypePassport": "Pasaporte",
"documentNumberHint": "DNI/NIE/Pasaporte",
"phoneLabel": "Teléfono móvil",
"phoneHint": "Teléfono móvil",
"emailLabel": "Correo electrónico",
"emailHint": "Correo electrónico",
"stepPersonalDataSupertitle": "Datos personales",
"stepPersonalDataTitle": "Identifícate",
"stepPersonalDataSubtitle": "Nos aseguraremos de que la cuenta esté a nombre del adulto responsable",
"relationshipLabel": "¿Qué familiar eres?",
"relationshipHint": "Selecciona una opción",
"relationshipFather": "Padre",
"relationshipMother": "Madre",
"relationshipTutor": "Tutor/a legal",
"addressCountryLabel": "País (dirección)",
"addressCountryHint": "País",
"birthDateLabel": "Fecha de nacimiento",
"birthDateHint": "DD/MM/AAAA",
"placeOfBirthLabel": "Lugar de nacimiento",
"placeOfBirthHint": "Ciudad de nacimiento",
"birthCountryLabel": "País de nacimiento",
"birthCountryHint": "País de nacimiento",
"streetLabel": "Calle / Dirección",
"streetHint": "Calle Gran Vía 30 6º",
"cityLabel": "Ciudad",
"cityHint": "Ciudad",
"provinceLabel": "Provincia",
"provinceHint": "Provincia",
"stateLabel": "Comunidad / Estado",
"stateHint": "Comunidad / Estado",
"postCodeLabel": "Código postal",
"postCodeHint": "28013",
"stepAddressSupertitle": "Domicilio",
"stepAddressTitle": "Tu dirección",
"passwordRulesSubtitle": "Contraseña mínima de 8 caracteres, con una mayúscula, un número y un carácter especial",
"accountCreatedTitle": "Cuenta creada",
"accountCreatedForLabel": "Has creado la cuenta para:",
"accountCreatedEmailVerificationSentLabel": "Hemos enviado un email de verificación a:",
"accountCreatedChildSetupHint": "Crea la cuenta de tu peque e ingresa su \nprimera paga para utilizarla con su reloj",
"accountCreatedContinue": "Continuar",
"secretCodeTitle": "Intrucciones para la configuración",
"secretCodeStep1Title": "Descargue una aplicación de autenticación",
"secretCodeStep1Body": "Asegúrate de tener Google Authenticator en tu dispositivo.",
"secretCodeStep2Title": "Escanea el código QR o copia la llave",
"secretCodeStep2Body": "Escanea el código QR debajo con la aplicación de autenticación para verificar el dispositivo.\n\nO copie la llave e ingresela manualmente en la aplicación de autenticación.",
"secretCodeKeyCopied": "Llave copiada",
"secretCodeStep3Title": "Copia el código generado",
"secretCodeStep3Body": "Después de escanear el código QR o introducir la llave en la aplicación de autenticación, copia el código generado de 6 dígitos e introdúcelo en la siguiente pantalla.",
"secretCodeConfigure": "Configurar"
}

View File

@@ -31,7 +31,6 @@
"apple": "Apple",
"dontHaveAccount": "Tu n'as pas de compte ?",
"createOneNow": "Crée-en un maintenant",
"tryAgain": "Réessayer",
"recoverPasswordTitle": "Récupérer le mot de passe",
"recoverPasswordSubtitle": "Entrez votre email pour vous envoyer un lien de récupération",
"send": "Envoyer",
@@ -58,5 +57,78 @@
"errorMessagePasswordTooShort": "Le mot de passe doit contenir au moins 8 caractères",
"errorMessagePasswordNoCapitals": "Le mot de passe doit contenir au moins une lettre majuscule",
"errorMessagePasswordNoNumbers": "Le mot de passe doit contenir au moins un chiffre",
"errorMessagePasswordNoSpecialChars": "Le mot de passe doit contenir au moins un caractère spécial"
"errorMessagePasswordNoSpecialChars": "Le mot de passe doit contenir au moins un caractère spécial",
"errorEmailRequired": "L'e-mail est obligatoire.",
"errorEmailInvalid": "Veuillez saisir une adresse e-mail valide.",
"errorPasswordRequired": "Le mot de passe est obligatoire.",
"errorPasswordMinLength": "Le mot de passe doit contenir au moins 6 caractères.",
"twoFactorTitle": "Authentification à deux facteurs",
"twoFactorSubtitle": "Saisissez le code à 6 chiffres pour continuer.",
"twoFactorCodeLabel": "Code de vérification",
"twoFactorCodeHint": "Code à 6 chiffres",
"twoFactorVerify": "Vérifier",
"close": "Fermer",
"errorTwoFactorCodeRequired": "Le code de vérification est obligatoire.",
"errorTwoFactorCodeInvalidLength": "Le code doit contenir 6 chiffres.",
"errorTwoFactorCodeInvalid": "Code incorrect. Veuillez réessayer.",
"stepUserContactSupertitle": "Utilisateur et contact",
"stepUserContactTitle": "Crée ton compte",
"stepUserContactSubtitle": "Avec ton e-mail et ton numéro, nous pourrons te tenir informé à tout moment",
"termsText": "J'accepte les conditions générales",
"firstNameLabel": "Prénom",
"firstNameHint": "Prénom",
"lastNameLabel": "Nom",
"lastNameHint": "Nom",
"documentTypeHint": "Document",
"documentTypeDni": "DNI",
"documentTypeNie": "NIE",
"documentTypePassport": "Passeport",
"documentNumberHint": "DNI/NIE/Passeport",
"phoneLabel": "Téléphone mobile",
"phoneHint": "Téléphone mobile",
"emailLabel": "Adresse e-mail",
"emailHint": "Adresse e-mail",
"stepPersonalDataSupertitle": "Données personnelles",
"stepPersonalDataTitle": "Identifie-toi",
"stepPersonalDataSubtitle": "Nous nous assurerons que le compte est au nom de l'adulte responsable",
"relationshipLabel": "Quel lien de parenté as-tu ?",
"relationshipHint": "Sélectionne une option",
"relationshipFather": "Père",
"relationshipMother": "Mère",
"relationshipTutor": "Tuteur légal",
"addressCountryLabel": "Pays (adresse)",
"addressCountryHint": "Pays",
"birthDateLabel": "Date de naissance",
"birthDateHint": "JJ/MM/AAAA",
"placeOfBirthLabel": "Lieu de naissance",
"placeOfBirthHint": "Ville de naissance",
"birthCountryLabel": "Pays de naissance",
"birthCountryHint": "Pays de naissance",
"streetLabel": "Rue / Adresse",
"streetHint": "Rue Gran Vía 30, 6e étage",
"cityLabel": "Ville",
"cityHint": "Ville",
"provinceLabel": "Province",
"provinceHint": "Province",
"stateLabel": "Région / État",
"stateHint": "Région / État",
"postCodeLabel": "Code postal",
"postCodeHint": "28013",
"stepAddressSupertitle": "Adresse",
"stepAddressTitle": "Ton adresse",
"passwordRulesSubtitle": "Mot de passe d'au moins 8 caractères, avec une majuscule, un chiffre et un caractère spécial",
"accountCreatedTitle": "Compte créé",
"accountCreatedForLabel": "Vous avez créé le compte pour :",
"accountCreatedEmailVerificationSentLabel": "Nous avons envoyé un e-mail de vérification à :",
"accountCreatedChildSetupHint": "Créez le compte de votre enfant et saisissez sa \npremière allocation pour lutiliser avec sa montre",
"accountCreatedContinue": "Continuer",
"secretCodeTitle": "Instructions de configuration",
"secretCodeStep1Title": "Téléchargez une application dauthentification",
"secretCodeStep1Body": "Assurez-vous davoir Google Authenticator sur votre appareil.",
"secretCodeStep2Title": "Scannez le code QR ou copiez la clé",
"secretCodeStep2Body": "Scannez le code QR ci-dessous avec lapplication dauthentification pour vérifier lappareil.\n\nOu copiez la clé et saisissez-la manuellement dans lapplication dauthentification.",
"secretCodeKeyCopied": "Clé copiée",
"secretCodeStep3Title": "Copiez le code généré",
"secretCodeStep3Body": "Après avoir scanné le code QR ou saisi la clé dans lapplication dauthentification, copiez le code à 6 chiffres généré et saisissez-le sur lécran suivant.",
"secretCodeConfigure": "Configurer"
}

View File

@@ -31,7 +31,6 @@
"apple": "Apple",
"dontHaveAccount": "Non hai un account?",
"createOneNow": "Creane uno adesso",
"tryAgain": "Riprova",
"recoverPasswordTitle": "Recupera la password",
"recoverPasswordSubtitle": "Inserisci la tua email per inviarti un collegamento di recupero",
"send": "Inviare",
@@ -58,5 +57,78 @@
"errorMessagePasswordTooShort": "La password deve contenere almeno 8 caratteri",
"errorMessagePasswordNoCapitals": "La password deve contenere almeno una lettera maiuscola",
"errorMessagePasswordNoNumbers": "La password deve contenere almeno un numero",
"errorMessagePasswordNoSpecialChars": "La password deve contenere almeno un carattere speciale"
"errorMessagePasswordNoSpecialChars": "La password deve contenere almeno un carattere speciale",
"errorEmailRequired": "L'email è obbligatoria.",
"errorEmailInvalid": "Inserisci un'email valida.",
"errorPasswordRequired": "La password è obbligatoria.",
"errorPasswordMinLength": "La password deve contenere almeno 6 caratteri.",
"twoFactorTitle": "Autenticazione a due fattori",
"twoFactorSubtitle": "Inserisci il codice a 6 cifre per continuare.",
"twoFactorCodeLabel": "Codice di verifica",
"twoFactorCodeHint": "Codice a 6 cifre",
"twoFactorVerify": "Verifica",
"close": "Chiudi",
"errorTwoFactorCodeRequired": "Il codice di verifica è obbligatorio.",
"errorTwoFactorCodeInvalidLength": "Il codice deve essere di 6 cifre.",
"errorTwoFactorCodeInvalid": "Codice non valido. Riprova.",
"stepUserContactSupertitle": "Utente e contatti",
"stepUserContactTitle": "Crea il tuo account",
"stepUserContactSubtitle": "Con la tua email e il tuo numero potremo tenerti sempre informato",
"termsText": "Accetto i termini e condizioni",
"firstNameLabel": "Nome",
"firstNameHint": "Nome",
"lastNameLabel": "Cognome",
"lastNameHint": "Cognome",
"documentTypeHint": "Documento",
"documentTypeDni": "DNI",
"documentTypeNie": "NIE",
"documentTypePassport": "Passaporto",
"documentNumberHint": "DNI/NIE/Passaporto",
"phoneLabel": "Cellulare",
"phoneHint": "Cellulare",
"emailLabel": "Indirizzo email",
"emailHint": "Indirizzo email",
"stepPersonalDataSupertitle": "Dati personali",
"stepPersonalDataTitle": "Identificati",
"stepPersonalDataSubtitle": "Ci assicureremo che l'account sia intestato all'adulto responsabile",
"relationshipLabel": "Che rapporto di parentela hai?",
"relationshipHint": "Seleziona un'opzione",
"relationshipFather": "Padre",
"relationshipMother": "Madre",
"relationshipTutor": "Tutore legale",
"addressCountryLabel": "Paese (indirizzo)",
"addressCountryHint": "Paese",
"birthDateLabel": "Data di nascita",
"birthDateHint": "GG/MM/AAAA",
"placeOfBirthLabel": "Luogo di nascita",
"placeOfBirthHint": "Città di nascita",
"birthCountryLabel": "Paese di nascita",
"birthCountryHint": "Paese di nascita",
"streetLabel": "Via / Indirizzo",
"streetHint": "Via Gran Vía 30, 6º piano",
"cityLabel": "Città",
"cityHint": "Città",
"provinceLabel": "Provincia",
"provinceHint": "Provincia",
"stateLabel": "Regione / Stato",
"stateHint": "Regione / Stato",
"postCodeLabel": "CAP",
"postCodeHint": "28013",
"stepAddressSupertitle": "Indirizzo",
"stepAddressTitle": "Il tuo indirizzo",
"passwordRulesSubtitle": "Password minima di 8 caratteri, con una maiuscola, un numero e un carattere speciale",
"accountCreatedTitle": "Account creato",
"accountCreatedForLabel": "Hai creato laccount per:",
"accountCreatedEmailVerificationSentLabel": "Abbiamo inviato unemail di verifica a:",
"accountCreatedChildSetupHint": "Crea laccount del tuo bambino e inserisci la sua \nprima paghetta per usarlo con il suo orologio",
"accountCreatedContinue": "Continua",
"secretCodeTitle": "Istruzioni di configurazione",
"secretCodeStep1Title": "Scarica unapp di autenticazione",
"secretCodeStep1Body": "Assicurati di avere Google Authenticator sul tuo dispositivo.",
"secretCodeStep2Title": "Scansiona il codice QR o copia la chiave",
"secretCodeStep2Body": "Scansiona il codice QR qui sotto con lapp di autenticazione per verificare il dispositivo.\n\nOppure copia la chiave e inseriscila manualmente nellapp di autenticazione.",
"secretCodeKeyCopied": "Chiave copiata",
"secretCodeStep3Title": "Copia il codice generato",
"secretCodeStep3Body": "Dopo aver scansionato il codice QR o inserito la chiave nellapp di autenticazione, copia il codice a 6 cifre generato e inseriscilo nella schermata successiva.",
"secretCodeConfigure": "Configura"
}

View File

@@ -31,7 +31,6 @@
"apple": "Apple",
"dontHaveAccount": "Não tem conta?",
"createOneNow": "Criar uma agora",
"tryAgain": "Tentar novamente",
"recoverPasswordTitle": "Recuperar senha",
"recoverPasswordSubtitle": "Insira seu e-mail para enviar um link de recuperação",
"send": "Enviar",
@@ -58,5 +57,78 @@
"errorMessagePasswordTooShort": "A senha deve ter pelo menos 8 caracteres",
"errorMessagePasswordNoCapitals": "A senha deve ter pelo menos uma maioscula",
"errorMessagePasswordNoNumbers": "A senha deve ter pelo menos um número",
"errorMessagePasswordNoSpecialChars": "A senha deve ter menos caráter especial"
"errorMessagePasswordNoSpecialChars": "A senha deve ter menos caráter especial",
"errorEmailRequired": "O e-mail é obrigatório.",
"errorEmailInvalid": "Introduz um e-mail válido.",
"errorPasswordRequired": "A palavra-passe é obrigatória.",
"errorPasswordMinLength": "A palavra-passe deve ter pelo menos 6 caracteres.",
"twoFactorTitle": "Autenticação de dois fatores",
"twoFactorSubtitle": "Introduz o código de 6 dígitos para continuar.",
"twoFactorCodeLabel": "Código de verificação",
"twoFactorCodeHint": "Código de 6 dígitos",
"twoFactorVerify": "Verificar",
"close": "Fechar",
"errorTwoFactorCodeRequired": "O código de verificação é obrigatório.",
"errorTwoFactorCodeInvalidLength": "O código deve ter 6 dígitos.",
"errorTwoFactorCodeInvalid": "Código inválido. Tenta novamente.",
"stepUserContactSupertitle": "Utilizador e contacto",
"stepUserContactTitle": "Cria a tua conta",
"stepUserContactSubtitle": "Com o teu email e o teu número poderemos manter-te sempre informado",
"termsText": "Aceito os termos e condições",
"firstNameLabel": "Nome próprio",
"firstNameHint": "Nome próprio",
"lastNameLabel": "Apelido",
"lastNameHint": "Apelido",
"documentTypeHint": "Documento",
"documentTypeDni": "DNI",
"documentTypeNie": "NIE",
"documentTypePassport": "Passaporte",
"documentNumberHint": "DNI/NIE/Passaporte",
"phoneLabel": "Telemóvel",
"phoneHint": "Telemóvel",
"emailLabel": "Email",
"emailHint": "Email",
"stepPersonalDataSupertitle": "Dados pessoais",
"stepPersonalDataTitle": "Identifica-te",
"stepPersonalDataSubtitle": "Vamos garantir que a conta está em nome do adulto responsável",
"relationshipLabel": "Qual é o teu grau de parentesco?",
"relationshipHint": "Seleciona uma opção",
"relationshipFather": "Pai",
"relationshipMother": "Mãe",
"relationshipTutor": "Tutor legal",
"addressCountryLabel": "País (morada)",
"addressCountryHint": "País",
"birthDateLabel": "Data de nascimento",
"birthDateHint": "DD/MM/AAAA",
"placeOfBirthLabel": "Local de nascimento",
"placeOfBirthHint": "Cidade de nascimento",
"birthCountryLabel": "País de nascimento",
"birthCountryHint": "País de nascimento",
"streetLabel": "Rua / Morada",
"streetHint": "Rua Gran Vía 30, 6.º andar",
"cityLabel": "Cidade",
"cityHint": "Cidade",
"provinceLabel": "Província",
"provinceHint": "Província",
"stateLabel": "Região / Estado",
"stateHint": "Região / Estado",
"postCodeLabel": "Código postal",
"postCodeHint": "28013",
"stepAddressSupertitle": "Morada",
"stepAddressTitle": "A tua morada",
"passwordRulesSubtitle": "Palavra-passe mínima de 8 caracteres, com uma maiúscula, um número e um carácter especial",
"accountCreatedTitle": "Conta criada",
"accountCreatedForLabel": "Criaste a conta para:",
"accountCreatedEmailVerificationSentLabel": "Enviámos um e-mail de verificação para:",
"accountCreatedChildSetupHint": "Cria a conta do teu filho e introduz a sua \nprimeira mesada para a usar com o relógio",
"accountCreatedContinue": "Continuar",
"secretCodeTitle": "Instruções de configuração",
"secretCodeStep1Title": "Descarrega uma aplicação de autenticação",
"secretCodeStep1Body": "Certifica-te de que tens o Google Authenticator no teu dispositivo.",
"secretCodeStep2Title": "Lê o código QR ou copia a chave",
"secretCodeStep2Body": "Lê o código QR abaixo com a aplicação de autenticação para verificar o dispositivo.\n\nOu copia a chave e introduz-a manualmente na aplicação de autenticação.",
"secretCodeKeyCopied": "Chave copiada",
"secretCodeStep3Title": "Copia o código gerado",
"secretCodeStep3Body": "Depois de leres o código QR ou introduzires a chave na aplicação de autenticação, copia o código de 6 dígitos gerado e introduz-lo no ecrã seguinte.",
"secretCodeConfigure": "Configurar"
}

View File

@@ -57,9 +57,108 @@ class I18n {
static const String passwordNumber = 'passwordNumber';
static const String passwordSpecial = 'passwordSpecial';
static const String accept = 'accept';
static const String errorMessageUnequalPasswords = 'errorMessageUnequalPasswords';
static const String errorMessagePasswordTooShort = 'errorMessagePasswordTooShort';
static const String errorMessagePasswordNoCapitals = 'errorMessagePasswordNoCapitals';
static const String errorMessagePasswordNoNumbers = 'errorMessagePasswordNoNumbers';
static const String errorMessagePasswordNoSpecialChars = 'errorMessagePasswordNoSpecialChars';
static const String errorMessageUnequalPasswords =
'errorMessageUnequalPasswords';
static const String errorMessagePasswordTooShort =
'errorMessagePasswordTooShort';
static const String errorMessagePasswordNoCapitals =
'errorMessagePasswordNoCapitals';
static const String errorMessagePasswordNoNumbers =
'errorMessagePasswordNoNumbers';
static const String errorMessagePasswordNoSpecialChars =
'errorMessagePasswordNoSpecialChars';
static const String errorEmailRequired = 'errorEmailRequired';
static const String errorEmailInvalid = 'errorEmailInvalid';
static const String errorPasswordRequired = 'errorPasswordRequired';
static const String errorPasswordMinLength = 'errorPasswordMinLength';
static const String twoFactorTitle = 'twoFactorTitle';
static const String twoFactorSubtitle = 'twoFactorSubtitle';
static const String twoFactorCodeLabel = 'twoFactorCodeLabel';
static const String twoFactorCodeHint = 'twoFactorCodeHint';
static const String twoFactorVerify = 'twoFactorVerify';
static const String close = 'close';
static const String errorTwoFactorCodeRequired = 'errorTwoFactorCodeRequired';
static const String errorTwoFactorCodeInvalidLength =
'errorTwoFactorCodeInvalidLength';
static const String errorTwoFactorCodeInvalid = 'errorTwoFactorCodeInvalid';
static const String stepUserContactSupertitle = 'stepUserContactSupertitle';
static const String stepUserContactTitle = 'stepUserContactTitle';
static const String stepUserContactSubtitle = 'stepUserContactSubtitle';
static const String termsText = 'termsText';
static const String firstNameLabel = 'firstNameLabel';
static const String firstNameHint = 'firstNameHint';
static const String lastNameLabel = 'lastNameLabel';
static const String lastNameHint = 'lastNameHint';
static const String documentTypeHint = 'documentTypeHint';
static const String documentTypeDni = 'documentTypeDni';
static const String documentTypeNie = 'documentTypeNie';
static const String documentTypePassport = 'documentTypePassport';
static const String documentNumberHint = 'documentNumberHint';
static const String phoneLabel = 'phoneLabel';
static const String phoneHint = 'phoneHint';
static const String emailLabel = 'emailLabel';
static const String emailHint = 'emailHint';
static const String stepPersonalDataSupertitle = 'stepPersonalDataSupertitle';
static const String stepPersonalDataTitle = 'stepPersonalDataTitle';
static const String stepPersonalDataSubtitle = 'stepPersonalDataSubtitle';
static const String relationshipLabel = 'relationshipLabel';
static const String relationshipHint = 'relationshipHint';
static const String relationshipFather = 'relationshipFather';
static const String relationshipMother = 'relationshipMother';
static const String relationshipTutor = 'relationshipTutor';
static const String addressCountryLabel = 'addressCountryLabel';
static const String addressCountryHint = 'addressCountryHint';
static const String birthDateLabel = 'birthDateLabel';
static const String birthDateHint = 'birthDateHint';
static const String placeOfBirthLabel = 'placeOfBirthLabel';
static const String placeOfBirthHint = 'placeOfBirthHint';
static const String birthCountryLabel = 'birthCountryLabel';
static const String birthCountryHint = 'birthCountryHint';
static const String streetLabel = 'streetLabel';
static const String streetHint = 'streetHint';
static const String cityLabel = 'cityLabel';
static const String cityHint = 'cityHint';
static const String provinceLabel = 'provinceLabel';
static const String provinceHint = 'provinceHint';
static const String stateLabel = 'stateLabel';
static const String stateHint = 'stateHint';
static const String postCodeLabel = 'postCodeLabel';
static const String postCodeHint = 'postCodeHint';
static const String stepAddressSupertitle = 'stepAddressSupertitle';
static const String stepAddressTitle = 'stepAddressTitle';
static const String passwordRulesSubtitle = 'passwordRulesSubtitle';
static const String accountCreatedTitle = 'accountCreatedTitle';
static const String accountCreatedForLabel = 'accountCreatedForLabel';
static const String accountCreatedEmailVerificationSentLabel =
'accountCreatedEmailVerificationSentLabel';
static const String accountCreatedChildSetupHint =
'accountCreatedChildSetupHint';
static const String accountCreatedContinue = 'accountCreatedContinue';
static const String secretCodeTitle = 'secretCodeTitle';
static const String secretCodeStep1Title = 'secretCodeStep1Title';
static const String secretCodeStep1Body = 'secretCodeStep1Body';
static const String secretCodeStep2Title = 'secretCodeStep2Title';
static const String secretCodeStep2Body = 'secretCodeStep2Body';
static const String secretCodeKeyCopied = 'secretCodeKeyCopied';
static const String secretCodeStep3Title = 'secretCodeStep3Title';
static const String secretCodeStep3Body = 'secretCodeStep3Body';
static const String secretCodeConfigure = 'secretCodeConfigure';
}