onboarding translation 3

This commit is contained in:
Hugo Trentesaux 2022-06-18 00:48:07 +02:00
parent c62c63f064
commit c04416ae0e
18 changed files with 170 additions and 78 deletions

View File

@ -33,6 +33,7 @@
"openThisChest": "Open this chest",
"createChest": "Create a new chest",
"importChest": "Import a chest",
"selectMyChest": "Select my chest",
"accessMyChest": "Access my chest",
"manageMembership": "Manage my membership",
"chooseThisWallet": "Choose this wallet",
@ -59,7 +60,51 @@
"gecko_also_can_forget.png": "gecko_also_can_forget_en.png",
"didYouNoteMnemonicToBeSureTypeWord": "Did you write down your menmonic?\n\n To be sure, please type the **{}th word** of your restoration phrase in the field below:",
"geckoWillGenerateAPassword": "Gecko will now generate for you a short password that will allow you to quickly access your wallets, without having to type your recovery sentence every time.",
"myPassword": "My password"
"myPassword": "My password",
"thisPasswordProtectsYourWalletsInASecureChest": "This secret code protects your wallets in a safe **which only you have the code for**, so that your wallets cannot be used by others.",
"hereIsThePasswordKeepIt": "And here is your password!\n\nMemorize it or write it down, because you will be asked **every time** you want to make a payment on this device.",
"chooseAnotherPassword": "Choose an other password",
"iNotedMyPassword": "I noted my password",
"geckoWillCheckPassword": "Gecko will check with you if you have remembered your secret code.\n\n Type your secret code in the field below to check that you have written it down correctly.",
"yourChestAndWalletWereCreatedSuccessfully": "Super!\n\nYour chest and your first portfolio have been created with great success.\n\nCongratulations!",
"allGood": "That's all good!",
"areYouSureToDeleteWallet": "Are you sure you want to delete the chest \"{}\"?",
"areYouSureForgetAllChests": "Are you sure you want to forget all your chests?",
"areYouSureToForgetWallet": "Are you sure you wan to forget the wallet \"{}\"?",
"areYouSureYouWantToCertify": "Are you sure you want to certify the address:\n\n{}",
"yes": "Yes",
"no": "No",
"keepYourMnemonicSecret": "Try to keep this phrase a secret, as it allows anyone who knows it to access all your wallets.",
"iGeneratedYourMnemonicKeepItSecret": "I've generated your restoration phrase!\n Try to keep it a secret, as it allows anyone who knows it to access all your portfolios.",
"myMnemonic": "My mnemonic",
"close": "Close",
"toRestoreEnterMnemonic": "To restore your Gecko wallets, enter in the fields below the 12 words that constitute your restoration phrase:",
"pasteFromClipboard": "Paste from\nclipboard",
"restoreAChest": "Restore a chest",
"restoreThisChest": "Restore this chest",
"continue": "Continue",
"itsTheGoodWord": "It's the good word!",
"nthMnemonicWord": "word of your mnemonic",
"1th": "First",
"2th": "Second",
"3th": "Third",
"4th": "Fourth",
"5th": "Fifth",
"6th": "Sixth",
"7th": "Seventh",
"8th": "Eighth",
"9th": "Ninth",
"10th": "Tenth",
"11th": "Eleventh",
"12th": "Twelfth",
"yourPasswordLengthIsX": "Your password length is {}",
"noIdentity": "No identity",
"identityCreated": "Identity created",
"identityConfirmed": "Identity confirmed",
"identityExpired": "Identity expired",
"confirmYourIdentity": "Confirm your identity"
}

View File

@ -60,6 +60,47 @@
"gecko_also_can_forget.png": "gecko_also_can_forget_fr.png",
"didYouNoteMnemonicToBeSureTypeWord": "Avez-vous bien noté votre phrase de restauration ?\n\nPour en être sûr, veuillez taper dans le champ ci-dessous le **{}ème mot** de votre phrase de restauration :",
"geckoWillGenerateAPassword": "Gecko va maintenant générer pour vous un code secret court qui vous permettra daccéder rapidement à vos portefeuilles, sans avoir à taper votre phrase de restauration à chaque fois.",
"myPassword": "Mon code secret"
"myPassword": "Mon code secret",
"thisPasswordProtectsYourWalletsInASecureChest": "Ce code secret protège vos portefeuilles dans un coffre-fort **dont vous seul possédez le code**, de sorte que vos portefeuilles seront inutilisables par dautres.",
"hereIsThePasswordKeepIt": "Et voilà votre code secret !\n\nMémorisez-le ou notez-le, car il vous sera demandé **à chaque fois** que vous voudrez effectuer un paiement sur cet appareil.",
"chooseAnotherPassword": "Choisir un autre code secret",
"iNotedMyPassword": "J'ai noté mon code secret",
"geckoWillCheckPassword": "Gecko va vérifier avec vous si vous avez bien mémorisé votre code secret.\n\nTapez votre code secret dans le champ ci-dessous pour vérifier que vous lavez bien noté.",
"yourChestAndWalletWereCreatedSuccessfully": "Top !\n\nVotre coffre votre premier portefeuille ont été créés avec un immense succès.\n\nFélicitations !",
"allGood": "Cest tout bon !",
"areYouSureToDeleteWallet": "Êtes-vous sûr de vouloir supprimer le coffre \"{}\" ?",
"areYouSureForgetAllChests": "Êtes-vous sûr de vouloir oublier tous vos coffres ?",
"areYouSureToForgetWallet": "Êtes-vous sûr de vouloir oublier le portefeuille \"{}\" ?",
"areYouSureYouWantToCertify": "Êtes-vous certain de vouloir certifier l'adresse:\n\n{}",
"yes": "Oui",
"no": "Non",
"keepYourMnemonicSecret": "Tâchez de garder cette phrase bien secrète, car elle permet à quiconque la connaît daccéder à tous vos portefeuilles.",
"iGeneratedYourMnemonicKeepItSecret": "Jai généré votre phrase de restauration !\nTâchez de la garder bien secrète, car elle permet à quiconque la connaît daccéder à tous vos portefeuilles.",
"myMnemonic": "Ma phrase de restauration",
"close": "Fermer",
"toRestoreEnterMnemonic": "Pour restaurer vos portefeuilles Gecko, rentrez dans les champs ci-dessous les 12 mots qui constituent votre phrase de restauration :",
"pasteFromClipboard": "Coller depuis le\npresse-papier",
"restoreAChest": "Restaurer un coffre",
"restoreThisChest": "Restaurer ce coffre",
"continue": "Continuer",
"itsTheGoodWord": "C'est le bon mot !",
"nthMnemonicWord": "mot de votre phrase de restauration",
"1th": "Premier",
"2th": "Deuxième",
"3th": "Troisième",
"4th": "Quatrième",
"5th": "Cinquième",
"6th": "Sixième",
"7th": "Septième",
"8th": "Huitième",
"9th": "Neuvième",
"10th": "Dixième",
"11th": "Onzième",
"12th": "Douzième",
"yourPasswordLengthIsX": "Votre code PIN fait {} caractères",
"noIdentity": "Aucune identité",
"identityCreated": "Identité créée",
"identityConfirmed": "Identité confirmée",
"identityExpired": "Identité expirée",
"confirmYourIdentity": "Confirmez votre identité"
}

View File

@ -1,4 +1,5 @@
import 'dart:async';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:gecko/globals.dart';
import 'package:gecko/models/chest_data.dart';
@ -55,17 +56,16 @@ class ChestProvider with ChangeNotifier {
barrierDismissible: true, // user must tap button!
builder: (BuildContext context) {
return AlertDialog(
title: Text(
'Êtes-vous sûr de vouloir supprimer le coffre "$_walletName" ?'),
title: Text('areYouSureToDeleteWallet'.tr(args: [_walletName!])),
actions: <Widget>[
TextButton(
child: const Text("Non", key: Key('cancelDeleting')),
child: Text("no".tr(), key: const Key('cancelDeleting')),
onPressed: () {
Navigator.pop(context, false);
},
),
TextButton(
child: const Text("Oui", key: Key('confirmDeleting')),
child: Text("yes".tr(), key: const Key('confirmDeleting')),
onPressed: () {
Navigator.pop(context, true);
},

View File

@ -120,18 +120,18 @@ class GenerateWalletsProvider with ChangeNotifier {
String? intToString(int _nbr) {
Map nbrToString = {};
nbrToString[1] = 'Premier';
nbrToString[2] = 'Deuxième';
nbrToString[3] = 'Troisième';
nbrToString[4] = 'Quatrième';
nbrToString[5] = 'Cinquième';
nbrToString[6] = 'Sixième';
nbrToString[7] = 'Septième';
nbrToString[8] = 'Huitième';
nbrToString[9] = 'Neuvième';
nbrToString[10] = 'Dixième';
nbrToString[11] = 'Onzième';
nbrToString[12] = 'Douzième';
nbrToString[1] = '1th'.tr();
nbrToString[2] = '2th'.tr();
nbrToString[3] = '3th'.tr();
nbrToString[4] = '4th'.tr();
nbrToString[5] = '5th'.tr();
nbrToString[6] = '6th'.tr();
nbrToString[7] = '7th'.tr();
nbrToString[8] = '8th'.tr();
nbrToString[9] = '9th'.tr();
nbrToString[10] = '10th'.tr();
nbrToString[11] = '11th'.tr();
nbrToString[12] = '12th'.tr();
nbrWordAlpha = nbrToString[_nbr];

View File

@ -1,3 +1,4 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:gecko/globals.dart';
@ -90,7 +91,7 @@ class MyWalletsProvider with ChangeNotifier {
log.w('DELETE ALL WALLETS ?');
final bool? _answer = await (confirmPopup(
context, 'Êtes-vous sûr de vouloir oublier tous vos coffres ?'));
context, 'areYouSureForgetAllChests'.tr()));
if (_answer!) {
await walletBox.clear();
await chestBox.clear();

View File

@ -47,8 +47,8 @@ class WalletOptionsProvider with ChangeNotifier {
Future<int> deleteWallet(context, WalletData wallet) async {
SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false);
final bool? _answer = await (confirmPopup(context,
'Êtes-vous sûr de vouloir oublier le portefeuille "${wallet.name}" ?'));
final bool? _answer = await (confirmPopup(
context, 'areYouSureToForgetWallet'.tr(args: [wallet.name!])));
if (_answer ?? false) {
//Check if balance is null
@ -157,7 +157,7 @@ class WalletOptionsProvider with ChangeNotifier {
switch (snapshot.data.toString()) {
case 'noid':
{
return _showText('Aucune identité');
return _showText('noIdentity'.tr());
}
case 'Created':
{
@ -169,12 +169,12 @@ class WalletOptionsProvider with ChangeNotifier {
await validateIdentity(context);
},
)
: _showText('Identité créé');
: _showText('identityCreated'.tr());
}
case 'ConfirmedByOwner':
{
return isOwner
? _showText('Identité confirmé')
? _showText('identityConfirmed'.tr())
: _duniterIndexer.getNameByAddress(
context,
address,
@ -203,7 +203,7 @@ class WalletOptionsProvider with ChangeNotifier {
case 'expired':
{
return _showText('Identité expiré');
return _showText('identityExpired'.tr());
}
}
return SizedBox(
@ -231,10 +231,10 @@ class WalletOptionsProvider with ChangeNotifier {
barrierDismissible: true, // user must tap button!
builder: (BuildContext context) {
return AlertDialog(
title: const Text(
'Confirmez votre identité',
title: Text(
'confirmYourIdentity'.tr(),
textAlign: TextAlign.center,
style: TextStyle(fontSize: 20, fontWeight: FontWeight.w500),
style: const TextStyle(fontSize: 20, fontWeight: FontWeight.w500),
),
content: SizedBox(
height: 100,

View File

@ -1,4 +1,5 @@
import 'package:dots_indicator/dots_indicator.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:gecko/globals.dart';
@ -248,9 +249,9 @@ Future<bool?> confirmPopup(BuildContext context, String title) async {
children: [
TextButton(
key: const Key('confirmPopop'),
child: const Text(
"Oui",
style: TextStyle(
child: Text(
"yes".tr(),
style: const TextStyle(
fontSize: 21,
color: Color(0xffD80000),
),
@ -261,9 +262,9 @@ Future<bool?> confirmPopup(BuildContext context, String title) async {
),
const SizedBox(width: 20),
TextButton(
child: const Text(
"Non",
style: TextStyle(fontSize: 21),
child: Text(
"no".tr(),
style: const TextStyle(fontSize: 21),
),
onPressed: () {
Navigator.pop(context, false);

View File

@ -1,4 +1,5 @@
import 'package:bubble/bubble.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/services.dart';
import 'package:gecko/globals.dart';
import 'package:flutter/material.dart';
@ -43,15 +44,14 @@ class RestoreChest extends StatelessWidget {
genW.resetImportView();
Navigator.of(context).pop();
}),
title: const SizedBox(
title: SizedBox(
height: 22,
child: Text('Restaurer un coffre'),
child: Text('restoreAChest'.tr()),
)),
body: SafeArea(
child: Column(children: <Widget>[
SizedBox(height: isTall ? 30 : 15),
bubbleSpeak(
'Pour restaurer vos portefeuilles Gecko, rentrez dans les champs ci-dessous les 12 mots qui constituent votre phrase de restauration :'),
bubbleSpeak('toRestoreEnterMnemonic'.tr()),
SizedBox(height: isTall ? 30 : 15),
Column(children: <Widget>[
Row(
@ -112,10 +112,10 @@ class RestoreChest extends StatelessWidget {
await badMnemonicPopup(context);
}
},
child: const Text(
'Restaurer ce coffre',
style:
TextStyle(fontSize: 24, fontWeight: FontWeight.w600),
child: Text(
'restoreThisChest'.tr(),
style: const TextStyle(
fontSize: 24, fontWeight: FontWeight.w600),
),
),
),
@ -137,16 +137,16 @@ class RestoreChest extends StatelessWidget {
genW.pasteMnemonic(context);
},
child: Row(
children: const [
Icon(
children: [
const Icon(
Icons.content_paste_go,
size: 25,
),
SizedBox(width: 10),
const SizedBox(width: 10),
Text(
'Coller depuis le\npresse-papier',
'pasteFromClipboard'.tr(),
textAlign: TextAlign.center,
style: TextStyle(
style: const TextStyle(
fontSize: 17, fontWeight: FontWeight.w400),
),
],

View File

@ -36,9 +36,9 @@ class ShowSeed extends StatelessWidget {
backgroundColor: backgroundColor,
appBar: AppBar(
toolbarHeight: 60 * ratio,
title: const SizedBox(
title: SizedBox(
height: 22,
child: Text('Ma phrase de restauration'),
child: Text('myMnemonic'.tr()),
)),
body: SafeArea(
child: Column(children: <Widget>[
@ -65,8 +65,7 @@ class ShowSeed extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.center,
children: [
Column(children: [
common.buildText(
'Tâchez de garder cette phrase bien secrète, car elle permet à quiconque la connaît daccéder à tous vos portefeuilles.'),
common.buildText('keepYourMnemonicSecret'.tr()),
SizedBox(height: 35 * ratio),
sentanceArray(context, _seed.data!.split(' ')),
const SizedBox(height: 20),
@ -132,7 +131,7 @@ class ShowSeed extends StatelessWidget {
Navigator.pop(context);
},
child: Text(
'Fermer',
'close'.tr(),
style: TextStyle(
fontSize: 23 * ratio, fontWeight: FontWeight.w600),
),
@ -233,11 +232,11 @@ class PrintWallet extends StatelessWidget {
backgroundColor: yellowC,
foregroundColor: Colors.black,
toolbarHeight: 60 * ratio,
title: const SizedBox(
title: SizedBox(
height: 22,
child: Text(
'Imprimer ma phrase de restauration',
style: TextStyle(fontWeight: FontWeight.w600),
'printMyMnemonic'.tr(),
style: const TextStyle(fontWeight: FontWeight.w600),
),
),
),

View File

@ -201,7 +201,8 @@ class UnlockingWallet extends StatelessWidget {
animationType: AnimationType.fade,
validator: (v) {
if (v!.length < _pinLenght) {
return "Votre code PIN fait $_pinLenght caractères";
return "yourPasswordLengthIsX"
.tr(args: [_pinLenght.toString()]);
} else {
return null;
}

View File

@ -53,8 +53,7 @@ class OnboardingStepTen extends StatelessWidget {
SizedBox(height: isTall ? 40 : 20),
common.buildProgressBar(9),
SizedBox(height: isTall ? 40 : 20),
common.buildText(
"Gecko va vérifier avec vous si vous avez bien mémorisé votre code secret.\n\nTapez votre code secret dans le champ ci-dessous pour vérifier que vous lavez bien noté."),
common.buildText("geckoWillCheckPassword".tr()),
SizedBox(height: isTall ? 80 : 20),
Visibility(
visible: _generateWalletProvider.scanedWalletNumber != -1,
@ -104,7 +103,7 @@ class OnboardingStepTen extends StatelessWidget {
),
const SizedBox(width: 8),
Text(
'Garder ce code en mémoire 15 minutes',
'rememberPassword'.tr(),
style:
TextStyle(fontSize: 16, color: Colors.grey[700]),
),
@ -150,7 +149,7 @@ class OnboardingStepTen extends StatelessWidget {
animationType: AnimationType.fade,
validator: (v) {
if (v!.length < _pinLenght) {
return "Votre code PIN fait $_pinLenght caractères";
return "yourPasswordLengthIsX".tr(args: [_pinLenght.toString()]);
} else {
return null;
}

View File

@ -20,11 +20,11 @@ class OnboardingStepEleven extends StatelessWidget {
backgroundColor: backgroundColor,
appBar: AppBar(
toolbarHeight: 60 * ratio,
title: const SizedBox(
title: SizedBox(
height: 22,
child: Text(
'Cest tout bon !',
style: TextStyle(fontWeight: FontWeight.w600),
'allGood'.tr(),
style: const TextStyle(fontWeight: FontWeight.w600),
),
),
),
@ -32,8 +32,7 @@ class OnboardingStepEleven extends StatelessWidget {
body: SafeArea(
child: Column(children: <Widget>[
const SizedBox(height: 40),
common.buildText(
"Top !\n\nVotre coffre votre premier portefeuille ont été créés avec un immense succès.\n\nFélicitations !"),
common.buildText("yourChestAndWalletWereCreatedSuccessfully".tr()),
SizedBox(height: isTall ? 20 : 10),
Image.asset(
'assets/onBoarding/gecko-clin.gif',

View File

@ -96,8 +96,9 @@ class OnboardingStepSix extends StatelessWidget {
color: Colors.grey[500],
fontWeight: FontWeight.w500),
labelText: _generateWalletProvider.isAskedWordValid
? "C'est le bon mot !"
: "${_generateWalletProvider.nbrWordAlpha} mot de votre phrase de restauration",
? "itsTheGoodWord".tr()
: "${_generateWalletProvider.nbrWordAlpha} " +
"nthMnemonicWord".tr(),
fillColor: const Color(0xffeeeedd),
filled: true,
contentPadding: const EdgeInsets.all(12),
@ -113,7 +114,7 @@ class OnboardingStepSix extends StatelessWidget {
alignment: Alignment.bottomCenter,
child: nextButton(
context,
'Continuer',
'continue'.tr(),
skipIntro
? const OnboardingStepNine()
: const OnboardingStepSeven(),

View File

@ -31,7 +31,7 @@ class OnboardingStepEight extends StatelessWidget {
body: SafeArea(
child: common.infoIntro(
context,
'Ce code secret protège vos portefeuilles dans un coffre-fort **dont vous seul possédez le code**, de sorte que vos portefeuilles seront inutilisables par dautres.',
'thisPasswordProtectsYourWalletsInASecureChest'.tr(),
'coffre-fort-protege-les-portefeuilles.png',
'>',
OnboardingStepNine(scanDerivation: scanDerivation),

View File

@ -46,7 +46,7 @@ class OnboardingStepNine extends StatelessWidget {
common.buildProgressBar(8),
SizedBox(height: isTall ? 40 : 20),
common.buildText(
"Et voilà votre code secret !\n\nMémorisez-le ou notez-le, car il vous sera demandé **à chaque fois** que vous voudrez effectuer un paiement sur cet appareil.",
"hereIsThePasswordKeepIt".tr(),
20,
true),
const SizedBox(height: 100),
@ -90,13 +90,13 @@ class OnboardingStepNine extends StatelessWidget {
onPressed: () {
_generateWalletProvider.changePinCode(reload: true);
},
child: Text("Choisir un autre code secret",
child: Text("chooseAnotherPassword".tr(),
style: TextStyle(
fontSize: 22 * ratio,
fontWeight: FontWeight.w600))),
))),
SizedBox(height: 22 * ratio),
common.nextButton(context, "J'ai noté mon code secret",
common.nextButton(context, "iNotedMyPassword".tr(),
OnboardingStepTen(scanDerivation: scanDerivation), false),
SizedBox(height: 35 * ratio),
]),

View File

@ -1,3 +1,4 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/services.dart';
import 'package:gecko/globals.dart';
import 'package:flutter/material.dart';
@ -263,7 +264,7 @@ class TransactionInProgress extends StatelessWidget {
if (transType == 'pay') Navigator.pop(context);
},
child: Text(
'Fermer',
'close'.tr(),
style: TextStyle(
fontSize: 23 * ratio,
fontWeight: FontWeight.w600),

View File

@ -181,9 +181,13 @@ class WalletViewScreen extends StatelessWidget {
'assets/gecko_certify.png')),
),
onTap: () async {
final bool? _result = await confirmPopup(
context,
"Êtes-vous certain de vouloir certifier l'adresse:\n\n${getShortPubkey(pubkey!)}");
final bool? _result =
await confirmPopup(
context,
"areYouSureYouWantToCertify".tr(
args: [
getShortPubkey(pubkey!)
]));
if (_result ?? false) {
String? _pin;

View File

@ -161,7 +161,7 @@ void main() {
await driver!.getText(find.byValueKey(
'step6',
)),
"Jai généré votre phrase de restauration !\nTâchez de la garder bien secrète, car elle permet à quiconque la connaît daccéder à tous vos portefeuilles.");
"iGeneratedYourMnemonicKeepItSecret".tr());
});
test('OnBoarding - Generate sentance and confirme it', (