welcome multilang!

This commit is contained in:
Hugo Trentesaux 2022-06-17 01:13:14 +02:00
parent b89de85e90
commit 8555c579bd
31 changed files with 251 additions and 113 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

View File

Before

Width:  |  Height:  |  Size: 211 KiB

After

Width:  |  Height:  |  Size: 211 KiB

View File

@ -1,3 +1,55 @@
{
"msg": "hello {} there !"
"searchWallet": "Search\nwallet",
"manageWallets": "Manage\nwallets",
"scanQRCode": "Scan a\nQR code",
"wellConnectedToNode": "You are well connected to node\n{}",
"networkLost": "Network has been lost...",
"noDuniterEndointAvailable": "No server available...",
"connectionPending": "Connection pending...",
"noLizard": "no lounge lizard ;-)",
"loading": "Loading...",
"forgot_password.png": "forgot_password_en.png",
"warningForgotPassword": "In a blockchain, there is no email recovery procedure. Only your recovery phrase can allow you to recover your Ğ1 at any time.",
"fastAppDescription": "The {} app payment\nfaster than a reptile of Vietnam",
"createWallet": "Create a wallet",
"restoreWallet": "Restore my wallets",
"parameters": "Parameters",
"chooseAnotherMnemonic": "Choose an other\nmnemonic sentence",
"iNotedMyMnemonic": "I wrote down my sentence",
"printMyMnemonic": "Print my mnemonic sentence",
"manageChest": "Configure this chest",
"changeChest": "Change chest",
"geckoChest": "Ğecko chest",
"toUnlockEnterPassword": "To unlock your safe, enter your secret code, away from prying lizards:",
"rememberPassword": "Keep this code in memory for 15 minutes",
"myRootWallet": "My root wallet",
"currentWallet": "My current chest",
"wallet": "Wallet",
"displayMnemonic": "Display my mnemonic sentence",
"changePassword": "Change my password",
"createDerivation": "Create a new derivation",
"createCustomDerivation": "Create a new custom derivation",
"deleteChest": "Delete this chest",
"openThisChest": "Open this chest",
"createChest": "Create a new chest",
"importChest": "Import a chest",
"accessMyChest": "Access my chest",
"manageMembership": "Manage my membership",
"chooseThisWallet": "Choose this wallet",
"thisWalletIsDefault": "This wallet is the default one",
"defineWalletAsDefault": "Define this as the default one",
"displayActivity": "Display activity",
"memberValidated": "Validated member!",
"copyAddress": "Copy\naddress",
"copy": "Copy",
"thisAddressHasBeenCopiedToClipboard": "This address has been copied to clipboard",
"chooseWalletName": "Choose a new name\nfor your wallet:",
"choosePassword": "Choose a random password:",
"chooseDerivation": "Choose a derivation:",
"validate": "Validate",
"confirm": "Confirm",
"confirmPayment": "Confirm payment",
"clickHereToConfirmIdentity": "Click here to confirm\nyour new identity"
}

View File

@ -1,3 +1,55 @@
{
"msg": "Salut ici !"
"searchWallet": "Rechercher un\nportefeuille",
"manageWallets": "Gérer mes\nportefeuilles",
"scanQRCode": "Scanner un\nQR code",
"wellConnectedToNode": "Vous êtes bien connecté aux noeud\n{}",
"networkLost": "Le réseau a été perdu...",
"noDuniterEndointAvailable": "Aucun serveur disponible...",
"connectionPending": "Connexion en cours...",
"noLizard": "y'a pas de lézard ;-)",
"loading": "Chargement en cours...",
"forgot_password.png": "forgot_password_fr.png",
"warningForgotPassword": "Dans une blockchain, pas de procédure de récupération par mail. Seule votre phrase de restauration peut vous permettre de récupérer vos Ğ1 à tout moment.",
"fastAppDescription": "Lapplication de paiement {}\nplus rapide quun reptile du Vietnam",
"createWallet": "Créer un portefeuille",
"restoreWallet": "Restaurer mes portefeuilles",
"parameters": "Paramètres",
"chooseAnotherMnemonic": "Choisir une autre phrase",
"iNotedMyMnemonic": "J'ai noté ma phrase",
"printMyMnemonic": "Imprimer ma phrase de restauration",
"manageChest": "Paramétrer ce coffre",
"changeChest": "Changer de coffre",
"geckoChest": "Coffre à Ğecko",
"toUnlockEnterPassword": "Pour déverrouiller votre coffre, composez votre code secret à labri des lézards indiscrets :",
"rememberPassword": "Garder ce code en mémoire 15 minutes",
"myRootWallet": "Mon portefeuille racine",
"currentWallet": "Mon portefeuille courant",
"wallet": "Portefeuille",
"displayMnemonic": "Afficher ma phrase de restauration",
"changePassword": "Changer mon code secret",
"createDerivation": "Créer une autre dérivation",
"createCustomDerivation": "Créer une dérivation personnalisé",
"deleteChest": "Supprimer ce coffre",
"openThisChest": "Ouvrir ce coffre",
"createChest": "Créer un nouveau coffre",
"importChest": "Importer un coffre",
"selectMyChest": "Sélectionner mon coffre",
"accessMyChest": "Accéder à mon coffre",
"manageMembership": "Gérer mon adhésion",
"chooseThisWallet": "Choisir ce portefeuille",
"thisWalletIsDefault": "Ce portefeuille est celui par defaut",
"defineWalletAsDefault": "Définir comme portefeuille par défaut",
"displayActivity": "Voir l'activité",
"memberValidated": "Membre validé !",
"copyAddress": "Copier\nl'adresse",
"copy": "Copier",
"thisAddressHasBeenCopiedToClipboard": "Cette adresse a été copié dans votre presse-papier.",
"chooseWalletName": "Choisissez un nouveau nom\npour votre portefeuille :",
"choosePassword": "Choisissez un code secret autogénéré :",
"chooseDerivation": "Choisissez une dérivation:",
"validate": "Valider",
"confirm": "Confirmer",
"confirmPayment": "Confirmer le paiement",
"clickHereToConfirmIdentity": "Cliquez ici pour confirmer\nvotre nouvelle identité"
}

View File

@ -45,7 +45,6 @@ import 'package:shared_preferences/shared_preferences.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
import 'package:window_size/window_size.dart';
import 'package:graphql_flutter/graphql_flutter.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:easy_localization/easy_localization.dart';
const bool enableSentry = true;
@ -110,7 +109,7 @@ Future<void> main() async {
supportedLocales: const [Locale('en'), Locale('fr')],
path:
'assets/translations', // <-- change the path of the translation files
fallbackLocale: const Locale('fr'),
fallbackLocale: const Locale('en'),
child: Gecko(indexerEndpoint),
),
),

View File

@ -1,6 +1,7 @@
import 'dart:math';
import 'dart:typed_data';
import 'package:durt/durt.dart' as durt;
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:gecko/globals.dart';
@ -62,9 +63,9 @@ class GenerateWalletsProvider with ChangeNotifier {
String chestName;
if (chestNumber == 0) {
chestName = 'Coffre à Ğecko';
chestName = 'geckoChest'.tr();
} else {
chestName = 'Coffre à Ğecko ${chestNumber + 1}';
chestName = 'geckoChest'.tr() + '${chestNumber + 1}';
}
await configBox.put('currentChest', chestNumber);
@ -400,8 +401,8 @@ class GenerateWalletsProvider with ChangeNotifier {
if (balance != 0) {
isAlive = true;
String walletName = scanedWalletNumber == 0
? 'Mon portefeuille courant'
: 'Portefeuille ${scanedWalletNumber + 1}';
? 'currentWallet'.tr()
: 'wallet'.tr() + ' ${scanedWalletNumber + 1}';
await _sub.importAccount(
mnemonic: '',
fromMnemonic: true,
@ -437,7 +438,7 @@ class GenerateWalletsProvider with ChangeNotifier {
log.d(balance);
if (balance != 0) {
String walletName = 'Mon portefeuille racine';
String walletName = 'myRootWallet'.tr();
await _sub.importAccount(
mnemonic: '', fromMnemonic: true, password: pin.text);

View File

@ -3,6 +3,7 @@ import 'dart:io';
import 'dart:math';
// import 'package:audioplayers/audio_cache.dart';
// import 'package:audioplayers/audioplayers.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'dart:async';
@ -25,10 +26,8 @@ class HomeProvider with ChangeNotifier {
Icon searchIcon = const Icon(Icons.search);
final TextEditingController searchQuery = TextEditingController();
Widget appBarTitle = Text('Ğecko', style: TextStyle(color: Colors.grey[850]));
Widget appBarExplorer =
Text('Explorateur', style: TextStyle(color: Colors.grey[850]));
String homeMessage = "Chargement en cours ...";
String defaultMessage = "y'a pas de lézard ;-)";
String homeMessage = "loading".tr();
String defaultMessage = "noLizard".tr();
Future<void> initHive() async {
late Directory hivePath;
@ -211,20 +210,6 @@ class HomeProvider with ChangeNotifier {
);
}
void handleSearchEnd() {
searchIcon = Icon(
Icons.search,
color: Colors.grey[850],
);
appBarTitle = Text('Ğecko', style: TextStyle(color: Colors.grey[850]));
appBarExplorer =
Text('Explorateur', style: TextStyle(color: Colors.grey[850]));
isSearching = false;
searchQuery.clear();
notifyListeners();
}
void rebuildWidget() {
notifyListeners();
}

View File

@ -1,5 +1,6 @@
// ignore_for_file: avoid_print
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:gecko/globals.dart';
@ -56,7 +57,7 @@ class SubstrateSdk with ChangeNotifier {
// _homeProvider.changeMessage("Vous n'êtes pas connecté à internet", 0);
// return;
// }
_homeProvider.changeMessage("Connexion en cours...", 0);
_homeProvider.changeMessage("connectionPending".tr(), 0);
for (String _endpoint in configBox.get('endpoint')) {
final n = NetworkParams();
@ -109,7 +110,7 @@ class SubstrateSdk with ChangeNotifier {
// log.d(sdk.api.connectedNode?.endpoint);
if (sdk.api.connectedNode?.endpoint == null) {
nodeConnected = false;
_homeProvider.changeMessage("Le réseau a été perdu...", 0);
_homeProvider.changeMessage("networkLost".tr(), 0);
} else {
nodeConnected = true;
}
@ -119,14 +120,14 @@ class SubstrateSdk with ChangeNotifier {
// currencyName = await getCurencyName();
notifyListeners();
_homeProvider.changeMessage(
'Vous êtes bien connecté aux noeud\n${getConnectedEndpoint()!.split('/')[2]}',
"wellConnectedToNode".tr(args: [getConnectedEndpoint()!.split('/')[2]]),
5);
// snackNode(ctx, true);
} else {
nodeConnected = false;
debugConnection = res.toString();
notifyListeners();
_homeProvider.changeMessage("Aucun server disponible...", 0);
_homeProvider.changeMessage("noDuniterEndointAvailable".tr(), 0);
// snackNode(ctx, false);
}

View File

@ -1,4 +1,5 @@
import 'dart:io';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:gecko/globals.dart';
@ -163,7 +164,7 @@ class WalletOptionsProvider with ChangeNotifier {
return isOwner
? InkWell(
child: _showText(
'Cliquez ici pour confirmer\nvotre nouvelle identité',
'clickHereToConfirmIdentity'.tr(),
18,
true),
onTap: () async {
@ -190,7 +191,7 @@ class WalletOptionsProvider with ChangeNotifier {
case 'Validated':
{
return isOwner
? _showText('Membre validé !', 18, true)
? _showText('memberValidated'.tr(), 18, true)
: _duniterIndexer.getNameByAddress(
context,
address,
@ -263,7 +264,7 @@ class WalletOptionsProvider with ChangeNotifier {
return TextButton(
key: const Key('infoPopup'),
child: Text(
"Valider",
"validate".tr(),
style: TextStyle(
fontSize: 21,
color: idtyName.text.length >= 2
@ -325,10 +326,10 @@ class WalletOptionsProvider with ChangeNotifier {
barrierDismissible: true,
builder: (BuildContext context) {
return AlertDialog(
title: const Text(
'Choisissez un nouveau nom\n pour votre portefeuille :',
title: Text(
'chooseWalletName'.tr(),
textAlign: TextAlign.center,
style: TextStyle(fontSize: 20, fontWeight: FontWeight.w500),
style: const TextStyle(fontSize: 20, fontWeight: FontWeight.w500),
),
content: SizedBox(
height: 100,
@ -352,7 +353,7 @@ class WalletOptionsProvider with ChangeNotifier {
return TextButton(
key: const Key('infoPopup'),
child: Text(
"Valider",
"validate".tr(),
style: TextStyle(
fontSize: 21,
color: canValidateNameBool

View File

@ -1,4 +1,5 @@
import 'dart:io';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:gecko/globals.dart';
@ -235,10 +236,10 @@ Widget headerProfileView(
}
snackCopyKey(context) {
const snackBar = SnackBar(
padding: EdgeInsets.all(20),
content: Text("Cette adresse a été copié dans votre presse-papier.",
style: TextStyle(fontSize: 16)),
duration: Duration(seconds: 2));
final snackBar = SnackBar(
padding: const EdgeInsets.all(20),
content: Text("thisAddressHasBeenCopiedToClipboard".tr(),
style: const TextStyle(fontSize: 16)),
duration: const Duration(seconds: 2));
ScaffoldMessenger.of(context).showSnackBar(snackBar);
}

View File

@ -63,7 +63,7 @@ class HomeScreen extends StatelessWidget {
),
ListTile(
key: const Key('parameters'),
title: const Text('Paramètres'),
title: Text('parameters'.tr()),
onTap: () {
Navigator.pop(context);
Navigator.push(
@ -302,9 +302,8 @@ Widget geckHome(context) {
),
),
const SizedBox(height: 12),
const Text('msg').tr(args: [currencyName]),
Text(
"Rechercher un\nportefeuille",
"searchWallet".tr(),
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
@ -370,7 +369,7 @@ Widget geckHome(context) {
),
const SizedBox(height: 12),
Text(
"Gérer mes\nportefeuilles",
"manageWallets".tr(),
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
@ -414,7 +413,7 @@ Widget geckHome(context) {
),
const SizedBox(height: 12),
Text(
"Scanner un\nQR code",
"scanQRCode".tr(),
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
@ -470,7 +469,7 @@ Widget welcomeHome(context) {
child:
Row(mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[
Text(
"Lapplication de paiement $currencyName\nplus rapide quun reptile du Vietnam",
"fastAppDescription".tr(args: [currencyName]),
textAlign: TextAlign.center,
style: const TextStyle(
color: Colors.white,
@ -522,7 +521,7 @@ Widget welcomeHome(context) {
),
Positioned(
left: 180,
child: bubbleSpeak("y'a pas de lézard !"),
child: bubbleSpeak("noLizard".tr()),
),
const Positioned(
left: 200,
@ -553,10 +552,10 @@ Widget welcomeHome(context) {
),
);
},
child: const Text(
'Créer un portefeuille',
child: Text(
'createWallet'.tr(),
style:
TextStyle(fontSize: 24, fontWeight: FontWeight.w600),
const TextStyle(fontSize: 24, fontWeight: FontWeight.w600),
),
),
),
@ -578,7 +577,7 @@ Widget welcomeHome(context) {
);
},
child: Text(
"Restaurer mes portefeuilles",
"restoreWallet".tr(),
style: TextStyle(
fontSize: 24,
color: orangeC,

View File

@ -1,3 +1,4 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:durt/durt.dart';
import 'package:flutter/services.dart';
@ -63,7 +64,7 @@ class ChangePinScreen extends StatelessWidget with ChangeNotifier {
),
const SizedBox(height: 80),
Text(
'Choisissez un code secret autogénéré :',
'choosePassword'.tr(),
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 17.0,
@ -126,9 +127,9 @@ class ChangePinScreen extends StatelessWidget with ChangeNotifier {
Navigator.pop(context);
}
},
child: const Text(
'Confirmer',
style: TextStyle(fontSize: 28),
child: Text(
'confirm'.tr(),
style: const TextStyle(fontSize: 28),
),
),
)

View File

@ -1,3 +1,4 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:gecko/globals.dart';
import 'package:gecko/models/chest_data.dart';
@ -93,7 +94,7 @@ class ChestOptions extends StatelessWidget {
),
const SizedBox(width: 15),
Text(
'Afficher ma phrase de restauration',
'displayMnemonic'.tr(),
style: TextStyle(
fontSize: 20,
color: orangeC,
@ -136,7 +137,7 @@ class ChestOptions extends StatelessWidget {
),
const SizedBox(width: 18),
Text(
'Changer mon code secret',
'changePassword'.tr(),
style: TextStyle(
fontSize: 20,
color: _sub.nodeConnected
@ -172,7 +173,7 @@ class ChestOptions extends StatelessWidget {
),
const SizedBox(width: 25),
Text(
'Créer une autre dérivation',
'createDerivation'.tr(),
style: TextStyle(
fontSize: 20,
color: _sub.nodeConnected
@ -198,9 +199,9 @@ class ChestOptions extends StatelessWidget {
height: 45,
),
const SizedBox(width: 20),
const Text(
'Supprimer ce coffre',
style: TextStyle(
Text(
'deleteChest'.tr(),
style: const TextStyle(
fontSize: 20,
color: Color(0xffD80000),
),

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:gecko/providers/my_wallets.dart';
@ -35,9 +36,9 @@ class _ChooseChestState extends State<ChooseChest> {
backgroundColor: backgroundColor,
appBar: AppBar(
toolbarHeight: 60 * ratio,
title: const SizedBox(
title: SizedBox(
height: 22,
child: Text('Sélectionner mon coffre'),
child: Text('selectMyChest'.tr()),
)),
body: SafeArea(
child: Column(children: <Widget>[
@ -140,7 +141,7 @@ class _ChooseChestState extends State<ChooseChest> {
}
},
child: Text(
'Ouvrir ce coffre',
'openThisChest'.tr(),
style: TextStyle(
fontSize: 22,
color: backgroundColor,
@ -166,7 +167,7 @@ class _ChooseChestState extends State<ChooseChest> {
width: 400,
height: 50,
child: Center(
child: Text('Créer un nouveau coffre',
child: Text('createChest'.tr(),
style: TextStyle(
fontSize: 22,
color: orangeC,
@ -189,7 +190,7 @@ class _ChooseChestState extends State<ChooseChest> {
width: 400,
height: 50,
child: Center(
child: Text('Importer un coffre',
child: Text('importChest'.tr(),
style: TextStyle(
fontSize: 22,
color: orangeC,

View File

@ -1,5 +1,6 @@
import 'dart:io';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/services.dart';
import 'package:gecko/globals.dart';
import 'package:flutter/material.dart';
@ -58,10 +59,10 @@ class ChooseWalletScreen extends StatelessWidget {
Navigator.pop(context);
Navigator.pop(context);
},
child: const Text(
'Choisir ce portefeuille',
child: Text(
'chooseThisWallet'.tr(),
style:
TextStyle(fontSize: 24, fontWeight: FontWeight.w600),
const TextStyle(fontSize: 24, fontWeight: FontWeight.w600),
),
),
),

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';
@ -50,16 +51,16 @@ class _CustomDerivationState extends State<CustomDerivation> {
backgroundColor: backgroundColor,
appBar: AppBar(
toolbarHeight: 60 * ratio,
title: const SizedBox(
title: SizedBox(
height: 22,
child: Text('Créer une dérivation personnalisé'),
child: Text('createCustomDerivation'.tr()),
)),
body: Center(
child: SafeArea(
child: Column(children: <Widget>[
const Spacer(),
const Text(
'Choisissez une dérivation:',
Text(
'chooseDerivation'.tr(),
),
const SizedBox(height: 20),
SizedBox(
@ -125,7 +126,7 @@ class _CustomDerivationState extends State<CustomDerivation> {
if (_pin != null || _myWalletProvider.pinCode != '') {
String _newDerivationName =
'Portefeuille ${_myWalletProvider.listWallets.last.number! + 2}';
'wallet'.tr() + ' ${_myWalletProvider.listWallets.last.number! + 2}';
if (dropdownValue == 'root') {
await _myWalletProvider.generateRootWallet(
context, 'Portefeuille racine');
@ -146,9 +147,9 @@ class _CustomDerivationState extends State<CustomDerivation> {
// );
}
},
child: const Text(
'Valider',
style: TextStyle(fontSize: 24, fontWeight: FontWeight.w600),
child: Text(
'validate'.tr(),
style: const TextStyle(fontSize: 24, fontWeight: FontWeight.w600),
),
),
),

View File

@ -24,7 +24,7 @@ class ManageMembership extends StatelessWidget {
toolbarHeight: 60 * ratio,
title: const SizedBox(
height: 22,
child: Text('Gérer mon adhésion'),
child: Text('manageMembership'),
)),
body: SafeArea(
child: Column(children: <Widget>[

View File

@ -1,4 +1,5 @@
import 'dart:typed_data';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/services.dart';
import 'package:gecko/globals.dart';
import 'package:flutter/material.dart';
@ -97,7 +98,7 @@ class ShowSeed extends StatelessWidget {
),
const SizedBox(width: 7),
Text(
'Copier',
'copy'.tr(),
style: TextStyle(
fontSize: 15, color: Colors.grey[50]),
)

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';
@ -17,9 +18,9 @@ class TransactionCommentScreen extends StatelessWidget {
return Scaffold(
appBar: AppBar(
toolbarHeight: 60 * ratio,
title: const SizedBox(
title: SizedBox(
height: 22,
child: Text('Confirmer le paiement'),
child: Text('confirmPayment'.tr()),
),
),
body: SafeArea(

View File

@ -1,6 +1,7 @@
// ignore_for_file: avoid_print
import 'dart:async';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/services.dart';
import 'package:gecko/models/chest_data.dart';
import 'package:gecko/providers/substrate_sdk.dart';
@ -90,11 +91,11 @@ class UnlockingWallet extends StatelessWidget {
)),
]),
SizedBox(height: 30 * ratio),
const SizedBox(
SizedBox(
width: 400,
child: Text(
'Pour déverrouiller votre coffre, composez votre code secret à labri des lézards indiscrets :',
style: TextStyle(
'toUnlockEnterPassword'.tr(),
style: const TextStyle(
fontSize: 19,
color: Colors.black,
fontWeight: FontWeight.w400),
@ -118,7 +119,7 @@ class UnlockingWallet 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]),
),
@ -142,7 +143,7 @@ class UnlockingWallet extends StatelessWidget {
height: 50,
child: Center(
child: Text(
'Changer de coffre',
'changeChest'.tr(),
style: TextStyle(
fontSize: 22,
color: orangeC,

View File

@ -1,5 +1,6 @@
import 'dart:async';
import 'dart:io';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:gecko/globals.dart';
import 'package:gecko/providers/duniter_indexer.dart';
@ -306,7 +307,7 @@ class WalletOptions extends StatelessWidget {
),
const SizedBox(width: 7),
Text(
'Copier',
'copy'.tr(),
style: TextStyle(fontSize: 15, color: Colors.grey[50]),
)
]),
@ -351,8 +352,8 @@ class WalletOptions extends StatelessWidget {
height: 45,
),
const SizedBox(width: 22),
const Text("Voir l'activité",
style: TextStyle(fontSize: 20, fontWeight: FontWeight.w500)),
Text("displayActivity".tr(),
style: const TextStyle(fontSize: 20, fontWeight: FontWeight.w500)),
]),
),
);
@ -382,7 +383,7 @@ class WalletOptions extends StatelessWidget {
height: 45,
),
const SizedBox(width: 22),
const Text('Gérer mon adhésion', style: TextStyle(fontSize: 20)),
Text('manageMembership'.tr(), style: const TextStyle(fontSize: 20)),
]),
),
);
@ -420,8 +421,8 @@ class WalletOptions extends StatelessWidget {
const SizedBox(width: 22),
Text(
walletProvider.isDefaultWallet
? 'Ce portefeuille est celui par defaut'
: 'Définir comme portefeuille par défaut',
? 'thisWalletIsDefault'.tr()
: 'defineWalletAsDefault'.tr(),
style: TextStyle(
fontSize: 20,
color: walletProvider.isDefaultWallet

View File

@ -1,5 +1,6 @@
import 'dart:io';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/services.dart';
import 'package:gecko/globals.dart';
import 'package:gecko/models/chest_data.dart';
@ -97,9 +98,9 @@ class WalletsHome extends StatelessWidget {
return ChestOptions(walletProvider: _myWalletProvider);
}),
),
label: const Text(
" Paramétrer ce coffre",
style: TextStyle(
label: Text(
" " + "manageChest".tr(),
style: const TextStyle(
fontSize: 22,
fontWeight: FontWeight.w700,
color: Color(0xff8a3c0f),
@ -108,7 +109,7 @@ class WalletsHome extends StatelessWidget {
)),
const SizedBox(height: 30),
InkWell(
key: const Key('createNewChest'),
key: const Key('changeChest'),
onTap: () {
Navigator.push(
context,
@ -121,7 +122,7 @@ class WalletsHome extends StatelessWidget {
width: 400,
height: 50,
child: Center(
child: Text('Changer de coffre',
child: Text('changeChest'.tr(),
style: TextStyle(
fontSize: 22,
color: orangeC,
@ -360,7 +361,7 @@ class WalletsHome extends StatelessWidget {
Provider.of<MyWalletsProvider>(context);
String _newDerivationName =
'Portefeuille ${_myWalletProvider.listWallets.last.number! + 2}';
'wallet'.tr() + ' ${_myWalletProvider.listWallets.last.number! + 2}';
return Padding(
padding: const EdgeInsets.all(16),
child: ClipRRect(

View File

@ -1,6 +1,7 @@
// ignore_for_file: file_names
import 'dart:async';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/services.dart';
import 'package:flutter/material.dart';
import 'package:gecko/globals.dart';
@ -206,7 +207,7 @@ class OnboardingStepTen extends StatelessWidget {
chest: configBox.get('currentChest'),
address: address,
number: 0,
name: 'Mon portefeuille courant',
name: 'currentWallet'.tr(),
derivation: 2,
imageDefaultPath: '0.png');
await walletBox.add(myWallet);

View File

@ -1,5 +1,6 @@
// ignore_for_file: file_names
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/services.dart';
import 'package:flutter/material.dart';
import 'package:gecko/globals.dart';
@ -73,7 +74,7 @@ Widget finishButton(BuildContext context) {
ModalRoute.withName('/'),
);
},
child: Text("Accéder à mon coffre",
child: Text("accessMyChest".tr(),
style:
TextStyle(fontSize: 22 * ratio, fontWeight: FontWeight.w600))),
);

View File

@ -1,5 +1,6 @@
// ignore_for_file: file_names
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/services.dart';
import 'package:flutter/material.dart';
import 'package:gecko/globals.dart';
@ -31,11 +32,11 @@ class OnboardingStepThree extends StatelessWidget {
child: common.infoIntro(
context,
<TextSpan>[
const TextSpan(
TextSpan(
text:
'Dans une blockchain, pas de procédure de récupération par mail. Seule votre phrase de restauration peut vous permettre de récupérer vos Ğ1 à tout moment.'),
'warningForgotPassword'.tr()),
],
'mot-de-passe-oublie.png',
'forgot_password.png'.tr(),
'>',
const OnboardingStepFor(),
2),

View File

@ -1,5 +1,6 @@
// ignore_for_file: file_names
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/services.dart';
import 'package:flutter/material.dart';
import 'package:gecko/globals.dart';
@ -93,7 +94,8 @@ class _ChooseChestState extends State<OnboardingStepFive> {
// _generateWalletProvider.reloadBuild();
setState(() {});
},
child: Text("Choisir une autre phrase",
child: Text("chooseAnotherMnemonic".tr(),
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 22 * ratio,
fontWeight: FontWeight.w600))),
@ -101,7 +103,7 @@ class _ChooseChestState extends State<OnboardingStepFive> {
),
),
SizedBox(height: 22 * ratio),
nextButton(context, "J'ai noté ma phrase", false, widget.skipIntro),
nextButton(context, "iNotedMyMnemonic".tr(), false, widget.skipIntro),
SizedBox(height: 35 * ratio),
]),
),
@ -204,7 +206,7 @@ class PrintWallet extends StatelessWidget {
title: const SizedBox(
height: 22,
child: Text(
'Imprimer ma phrase de restauration',
'printMyMnemonic',
style: TextStyle(fontWeight: FontWeight.w600),
),
),

View File

@ -1,3 +1,4 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:durt/durt.dart';
import 'package:flutter/services.dart';
@ -39,9 +40,9 @@ class SettingsScreen extends StatelessWidget {
backgroundColor: backgroundColor,
appBar: AppBar(
toolbarHeight: 60 * ratio,
title: const SizedBox(
title: SizedBox(
height: 22,
child: Text('Paramètres'),
child: Text('parameters'.tr()),
)),
body: Column(
// crossAxisAlignment: CrossAxisAlignment.start,

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';
@ -321,7 +322,7 @@ class WalletViewScreen extends StatelessWidget {
),
const SizedBox(height: 9),
Text(
"Copier\nla clef",
"copyAddress".tr(),
textAlign: TextAlign.center,
style: TextStyle(
fontSize: buttonFontSize, fontWeight: FontWeight.w500),

View File

@ -274,6 +274,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.1"
csslib:
dependency: transitive
description:
name: csslib
url: "https://pub.dartlang.org"
source: hosted
version: "0.17.2"
dart_style:
dependency: transitive
description:
@ -389,6 +396,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "0.18.4"
flutter_html:
dependency: "direct main"
description:
name: flutter_html
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0-alpha.5"
flutter_inappwebview:
dependency: transitive
description:
@ -570,6 +584,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.3"
html:
dependency: transitive
description:
name: html
url: "https://pub.dartlang.org"
source: hosted
version: "0.15.0"
http:
dependency: "direct main"
description:
@ -827,6 +848,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.0+1"
numerus:
dependency: transitive
description:
name: numerus
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.1"
package_config:
dependency: transitive
description:

View File

@ -73,6 +73,7 @@ dependencies:
connectivity_plus: ^2.3.3
image_cropper: ^2.0.3
easy_localization: ^3.0.1
flutter_html: ^3.0.0-alpha.5
dev_dependencies:
# flutter_launcher_icons: ^0.9.2

View File

@ -2,6 +2,7 @@
import 'dart:async';
import 'dart:io';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter_driver/flutter_driver.dart';
import 'package:test/test.dart';
// import 'package:flutter/services.dart';
@ -255,7 +256,7 @@ void main() {
{timeout = const Duration(seconds: 2)}) async {
await tapOn('goWalletHome');
expect(await getText('myWallets'), "Coffre à Ğecko");
expect(await getText('myWallets'), "geckoChest".tr());
await sleep(300);
// Go to first derivation and rename it