diff --git a/assets/onBoarding/forgot_password_en.png b/assets/onBoarding/forgot_password_en.png
new file mode 100644
index 0000000000000000000000000000000000000000..1fb7dfb4d0bb8488df044142ad538bd1b242e146
Binary files /dev/null and b/assets/onBoarding/forgot_password_en.png differ
diff --git a/assets/onBoarding/mot-de-passe-oublie.png b/assets/onBoarding/forgot_password_fr.png
similarity index 100%
rename from assets/onBoarding/mot-de-passe-oublie.png
rename to assets/onBoarding/forgot_password_fr.png
diff --git a/assets/onBoarding/gecko-oublie-aussi.png b/assets/onBoarding/gecko_also_can_forget_en.png
similarity index 100%
rename from assets/onBoarding/gecko-oublie-aussi.png
rename to assets/onBoarding/gecko_also_can_forget_en.png
diff --git a/assets/translations/en.json b/assets/translations/en.json
new file mode 100644
index 0000000000000000000000000000000000000000..478705a5a4befc783bc53e1d70531fb63f1fd933
--- /dev/null
+++ b/assets/translations/en.json
@@ -0,0 +1,172 @@
+{
+    "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",
+    "selectMyChest": "Select my 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",
+    "displayNActivity": "Display\nactivity",
+    "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",
+    "geckoGenerateYourWalletFromMnemonic": "Ğecko builds your wallet from a **restoration sentence**. It is a bit like the blueprint that builds your wallet.",
+    "keepThisMnemonicSecure": "Keep this sentence carefully, because without it Ğecko will not be able to rebuild your wallets the day you change your phone.",
+    "geckoGeneratedYourMnemonicKeepItSecret": "Ğecko generated your mnemonic successfully! Keep it secret, because anyone who knows it can access all your wallets.",
+    "newWallet": "New Wallet",
+    "itsTimeToUseAPenAndPaper": "It's time to take a **pen and paper** in order to write down your mnemonic.",
+    "yourMnemonic": "Your mnemonic",
+    "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",
+    "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",
+    "noDuniterNodeAvailableTryLater": "No Duniter node available, please try again later",
+    "youAreConnectedToNode": "You are connected to node",
+    "accountActivity": "Account activity",
+    "noNetworkNoHistory": "Network state does not allow\nto display account history",
+    "noDataToDisplay": "No data to be displayed.",
+    "noTranscationToDisplay": "No transaction to display",
+    "month1": "January",
+    "month2": "February",
+    "month3": "March",
+    "month4": "April",
+    "month5": "May",
+    "month6": "June",
+    "month7": "July",
+    "month8": "August",
+    "month9": "September",
+    "month10": "October",
+    "month11": "November",
+    "month12": "December",
+    "today": "Today",
+    "yesterday": "Yesterday",
+    "thisWeek": "This week",
+    "chestNotCompatibleMustReinstallGecko": "The version of your safes is no longer compatible with this version of Ğecko.\nAll your safes will be forgotten, you must import them again.",
+    "notConnectedToInternet": "You are note connected to internet",
+    "researchResults": "Results of your research",
+    "resultsFor": "Results for ",
+    "forgetAllMyChests": "Forget all my chests",
+    "transaction": "Transaction",
+    "certification": "Certification",
+    "identityConfirm": "Identity confirmation",
+    "revokeAdhesion": "Adhesion revocation",
+    "strangeTransaction": "Strange transaction",
+    "sending": "Sending...",
+    "propagating": "Propagating...",
+    "validating": "Validating...",
+    "anErrorOccured": "An error occured",
+    "24hbetweenCerts": "You have to wait 24h between certs",
+    "canNotCertifySelf": "You can not certify yourself",
+    "nameAlreadyExist": "This name is already taken",
+    "2GDtoKeepAlive": "You have to keep at least 2ĞD to keep your account alive",
+    "youHaveToFeedThisAccountBeforeUsing": "You have to feed this account\nbefore using it.",
+    "execTimeoutOver": "Execution timeout is over",
+    "seeAWallet": "See a wallet",
+    "mustWaitXBeforeCertify": "You have to wait\n{} before\ncertifying again",
+    "canRenewCertInX": "You can renew\nthis certification\nin {}",
+    "executeATransfer": "Execute a transfer",
+    "executeTheTransfer": "Execute the transfer",
+    "doATransfer" : "Execute a\ntransfer",
+    "seconds": "{} seconds",
+    "minutes": "{} minutes",
+    "hours": "{} hours {}",
+    "days": "{} days",
+    "months": "{} months",
+    "certify": "Certify",
+    "from": "From:",
+    "amount": "Amount:",
+    "choiceOfSourceWallet": "Choose a source wallet",
+    "extrinsicInProgress": "{} in progress",
+    "extrinsicValidated": "{} validated !",
+    "fromMinus": "from",
+    "toMinus": "to",
+    "deleteThisWallet": "Delete this wallet",
+    "cancel": "Cancel",
+    "inBlockchainResult": "In {} blockchain",
+    "search": "Search",
+    "currencyNode": "{} node :"
+}
\ No newline at end of file
diff --git a/assets/translations/es.json b/assets/translations/es.json
new file mode 100644
index 0000000000000000000000000000000000000000..340944d239e76b6987721cb8f46afe2ba0a9c7e4
--- /dev/null
+++ b/assets/translations/es.json
@@ -0,0 +1,172 @@
+{
+    "searchWallet": "Search\nwallet",
+    "manageWallets": "Manage\nwallets",
+    "scanQRCode": "Escanear un\ncódigo QR",
+    "wellConnectedToNode": "Estas bien conectada al nodo\n{}",
+    "networkLost": "Se ha perdido la red...",
+    "noDuniterEndointAvailable": "No hay servidor disponible...",
+    "connectionPending": "Conexión pendiente...",
+    "noLizard": "no hay lagarto ;-)",
+    "loading": "Cargando...",
+    "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": "La aplicación de pago {}\nmás rápida que un reptil de Vietnam",
+    "createWallet": "Crear una billetera",
+    "restoreWallet": "Restaurar mis billeteras",
+    "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",
+    "selectMyChest": "Select my 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",
+    "displayNActivity": "Display\nactivity",
+    "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",
+    "geckoGenerateYourWalletFromMnemonic": "Ğecko builds your wallet from a **restoration sentence**. It is a bit like the blueprint that builds your wallet.",
+    "keepThisMnemonicSecure": "Keep this sentence carefully, because without it Ğecko will not be able to rebuild your wallets the day you change your phone.",
+    "geckoGeneratedYourMnemonicKeepItSecret": "Ğecko generated your mnemonic successfully! Keep it secret, because anyone who knows it can access all your wallets.",
+    "newWallet": "New Wallet",
+    "itsTimeToUseAPenAndPaper": "It's time to take a **pen and paper** in order to write down your mnemonic.",
+    "yourMnemonic": "Your mnemonic",
+    "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",
+    "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",
+    "noDuniterNodeAvailableTryLater": "No Duniter node available, please try again later",
+    "youAreConnectedToNode": "You are connected to node",
+    "accountActivity": "Account activity",
+    "noNetworkNoHistory": "Network state does not allow\nto display account history",
+    "noDataToDisplay": "No data to be displayed.",
+    "noTranscationToDisplay": "No transaction to display",
+    "month1": "January",
+    "month2": "February",
+    "month3": "March",
+    "month4": "April",
+    "month5": "May",
+    "month6": "June",
+    "month7": "July",
+    "month8": "August",
+    "month9": "September",
+    "month10": "October",
+    "month11": "November",
+    "month12": "December",
+    "today": "Today",
+    "yesterday": "Yesterday",
+    "thisWeek": "This week",
+    "chestNotCompatibleMustReinstallGecko": "The version of your safes is no longer compatible with this version of Ğecko.\nAll your safes will be forgotten, you must import them again.",
+    "notConnectedToInternet": "You are note connected to internet",
+    "researchResults": "Results of your research",
+    "resultsFor": "Results for ",
+    "forgetAllMyChests": "Forget all my chests",
+    "transaction": "Transaction",
+    "certification": "Certification",
+    "identityConfirm": "Identity confirmation",
+    "revokeAdhesion": "Adhesion revocation",
+    "strangeTransaction": "Strange transaction",
+    "sending": "Sending...",
+    "propagating": "Propagating...",
+    "validating": "Validating...",
+    "anErrorOccured": "An error occured",
+    "24hbetweenCerts": "You have to wait 24h between certs",
+    "canNotCertifySelf": "You can not certify yourself",
+    "nameAlreadyExist": "This name is already taken",
+    "2GDtoKeepAlive": "You have to keep at least 2ĞD to keep your account alive",
+    "youHaveToFeedThisAccountBeforeUsing": "You have to feed this account\nbefore using it.",
+    "execTimeoutOver": "Execution timeout is over",
+    "seeAWallet": "See a wallet",
+    "mustWaitXBeforeCertify": "You have to wait\n{} before\ncertifying again",
+    "canRenewCertInX": "You can renew\nthis certification\nin {}",
+    "executeATransfer": "Execute a transfer",
+    "executeTheTransfer": "Execute the transfer",
+    "doATransfer" : "Execute a\ntransfer",
+    "seconds": "{} seconds",
+    "minutes": "{} minutes",
+    "hours": "{} hours {}",
+    "days": "{} days",
+    "months": "{} months",
+    "certify": "Certify",
+    "from": "From:",
+    "amount": "Amount:",
+    "choiceOfSourceWallet": "Choose a source wallet",
+    "extrinsicInProgress": "{} in progress",
+    "extrinsicValidated": "{} validated !",
+    "fromMinus": "from",
+    "toMinus": "to",
+    "deleteThisWallet": "Delete this wallet",
+    "cancel": "Cancel",
+    "inBlockchainResult": "In {} blockchain",
+    "search": "Search",
+    "currencyNode": "{} node :"
+}
\ No newline at end of file
diff --git a/assets/translations/fr.json b/assets/translations/fr.json
new file mode 100644
index 0000000000000000000000000000000000000000..98b185bf0ccd97e28c7b0f1a0e28ce74ca93b879
--- /dev/null
+++ b/assets/translations/fr.json
@@ -0,0 +1,173 @@
+{
+    "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": "L’application de paiement {}\nplus rapide qu’un 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 à l’abri 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é",
+    "displayNActivity": "Voir\nl'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é",
+    "geckoGenerateYourWalletFromMnemonic": "Ğecko fabrique votre portefeuille à partir d’une **phrase de restauration**. Elle est un peu comme le plan qui permet de construire votre portefeuille.",
+    "keepThisMnemonicSecure": "Conservez cette phrase précieusement, car sans elle Ğecko ne pourra pas reconstruire vos portefeuilles le jour où vous changez de téléphone.",
+    "geckoGeneratedYourMnemonicKeepItSecret": "Gecko a généré votre phrase de restauration ! Tâchez de la garder bien secrète, car elle permet à quiconque la connaît d’accéder à tous vos portefeuilles.",
+    "newWallet": "Nouveau portefeuille",
+    "itsTimeToUseAPenAndPaper": "Il est temps de vous munir d’**un papier et d’un crayon** afin de pouvoir noter votre phrase de restauration.",
+    "yourMnemonic": "Votre phrase de restauration",
+    "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 d’accéder rapidement à vos portefeuilles, sans avoir à taper votre phrase de restauration à chaque fois.",
+    "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 d’autres.",
+    "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 l’avez bien noté.",
+    "yourChestAndWalletWereCreatedSuccessfully": "Top !\n\nVotre coffre votre premier portefeuille ont été créés avec un immense succès.\n\nFélicitations !",
+    "allGood": "C’est 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 d’accéder à tous vos portefeuilles.",
+    "iGeneratedYourMnemonicKeepItSecret": "J’ai généré votre phrase de restauration !\nTâchez de la garder bien secrète, car elle permet à quiconque la connaît d’accé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é",
+    "noResult": "Aucun résultat",
+    "noDuniterNodeAvailableTryLater": "Aucun noeud Duniter disponible, veuillez réessayer ultérieurement",
+    "youAreConnectedToNode": "Vous êtes connecté au noeud",
+    "accountActivity": "Activité du compte",
+    "noNetworkNoHistory": "L'état du réseau ne permet pas\nd'afficher l'historique du compte",
+    "noDataToDisplay": "Aucune donnée à afficher.",
+    "noTranscationToDisplay": "Aucune transaction à afficher",
+    "month1": "Janvier",
+    "month2": "Février",
+    "month3": "Mars",
+    "month4": "Avril",
+    "month5": "Mai",
+    "month6": "Juin",
+    "month7": "Juillet",
+    "month8": "Aout",
+    "month9": "Septembre",
+    "month10": "Octobre",
+    "month11": "Novembre",
+    "month12": "Décembre",
+    "today": "Aujourd'hui",
+    "yesterday": "Hier",
+    "thisWeek": "Cette semaine",
+    "chestNotCompatibleMustReinstallGecko": "La version de vos coffres n'est plus comptabile avec cette version de Ğecko.\nTous vos coffres vont être oubliés, vous devez les importer de nouveau.",
+    "notConnectedToInternet": "Vous n'êtes pas connecté à internet",
+    "researchResults": "Résultats de votre recherche",
+    "resultsFor": "Résultats pour ",
+    "forgetAllMyChests": "Oublier tous mes coffres",
+    "transaction": "Transaction",
+    "certification": "Certification",
+    "identityConfirm": "Confirmation d'identité",
+    "revokeAdhesion": "Révocation d'adhésion",
+    "strangeTransaction": "Transaction étrange",
+    "sending": "Envoi en cours...",
+    "propagating": "En cours de propagation...",
+    "validating": "En cours de validation...",
+    "anErrorOccured": "Une erreur s'est produite",
+    "24hbetweenCerts": "Vous devez attendre 24h entre chaque certification",
+    "canNotCertifySelf": "Vous ne pouvez pas vous certifier\nvous même ...",
+    "nameAlreadyExist": "Ce nom est déjà pris",
+    "2GDtoKeepAlive": "Vous devez garder au moins 2ĞD sur votre compte pour le garder actif",
+    "youHaveToFeedThisAccountBeforeUsing": "Vous devez alimenter ce compte avant\nde pouvoir l'utiliser",
+    "execTimeoutOver": "Le délais d'éxecution est dépassé",
+    "seeAWallet": "Voir un portefeuille",
+    "mustWaitXBeforeCertify": "Vous devez attendre\n{} avant\nde pouvoir certifier",
+    "canRenewCertInX": "Vous pourrez renouveller\ncette certification\ndans {}",
+    "executeATransfer": "Effectuer un virement",
+    "executeTheTransfer": "Effectuer le virement",
+    "doATransfer": "Faire un\nvirement",
+    "seconds": "{} secondes",
+    "minutes": "{} minutes",
+    "hours": "{} heures {}",
+    "days": "{} jours",
+    "months": "{} mois",
+    "certify": "Certifier",
+    "from": "Depuis:",
+    "amount": "Montant:",
+    "choiceOfSourceWallet": "Choix du portefeuille source",
+    "extrinsicInProgress": "{} en cours",
+    "extrinsicValidated": "{} validé !",
+    "fromMinus": "de",
+    "toMinus": "vers",
+    "deleteThisWallet": "Supprimer ce portefeuille",
+    "cancel": "Annuler",
+    "inBlockchainResult": "Dans la blockchain {}",
+    "search": "Rechercher",
+    "currencyNode": "Noeud {} :"
+}
\ No newline at end of file
diff --git a/lib/main.dart b/lib/main.dart
index 01d339ca382536063f2ffef9d2c6705ba9da7b9a..9c20360f41cfe51f534080d42665df80b8e8c65b 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -45,11 +45,13 @@ 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:easy_localization/easy_localization.dart';
 
 const bool enableSentry = true;
 
 Future<void> main() async {
   WidgetsFlutterBinding.ensureInitialized();
+  await EasyLocalization.ensureInitialized();
   if (!kIsWeb && (Platform.isWindows || Platform.isLinux || Platform.isMacOS)) {
     setWindowTitle('Ğecko');
     setWindowMinSize(const Size(400, 700));
@@ -97,27 +99,31 @@ Future<void> main() async {
     // // ]);
     // Catcher(rootWidget: Gecko(endPointGVA, _store), debugConfig: debugOptions);
 
-    await SentryFlutter.init((options) {
-      options.dsn =
-          'https://c09587b46eaa42e8b9fda28d838ed180@o496840.ingest.sentry.io/5572110';
-    }, appRunner: () => runApp(Gecko(indexerEndpoint)));
-
-    // runZoned<Future<void>>(
-    //       () async {
-    //         runApp(Gecko(endPointGVA, _store));
-    //       },
-    //       onError: (dynamic error, StackTrace stackTrace) {
-    //         print("=================== CAUGHT DART ERROR");
-    //         // Sentry.captureException(
-    //         //   error,
-    //         //   stackTrace: stackTrace,
-    //         // );
-    //       },
-    //     ));
+    await SentryFlutter.init(
+      (options) {
+        options.dsn =
+            'https://c09587b46eaa42e8b9fda28d838ed180@o496840.ingest.sentry.io/5572110';
+      },
+      appRunner: () => runApp(
+        EasyLocalization(
+          supportedLocales: const [Locale('en'), Locale('fr')],
+          path: 'assets/translations',
+          fallbackLocale: const Locale('en'),
+          child: Gecko(indexerEndpoint),
+        ),
+      ),
+    );
   } else {
     print('Debug mode enabled: No sentry alerte');
 
-    runApp(Gecko(indexerEndpoint));
+    runApp(
+      EasyLocalization(
+        supportedLocales: const [Locale('en'), Locale('fr'), Locale('es')],
+        path: 'assets/translations',
+        fallbackLocale: const Locale('fr'),
+        child: Gecko(indexerEndpoint),
+      ),
+    );
   }
 }
 
@@ -145,6 +151,9 @@ class Gecko extends StatelessWidget {
         ChangeNotifierProvider(create: (_) => DuniterIndexer())
       ],
       child: MaterialApp(
+        localizationsDelegates: context.localizationDelegates,
+        supportedLocales: context.supportedLocales,
+        locale: context.locale,
         builder: (context, widget) => ResponsiveWrapper.builder(
             BouncingScrollWrapper.builder(context, widget!),
             maxWidth: 1200,
diff --git a/lib/providers/chest_provider.dart b/lib/providers/chest_provider.dart
index cccc2ecc348e173317f79324789efd708e28cb59..3a11b88a225d094bc47c5ee1a03a74e7b3a022e1 100644
--- a/lib/providers/chest_provider.dart
+++ b/lib/providers/chest_provider.dart
@@ -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);
               },
diff --git a/lib/providers/duniter_indexer.dart b/lib/providers/duniter_indexer.dart
index 4a5a5011ce67b6bca7d1c4f20548e5140a6ec250..c2d5620355e4d650595a3cf73805c6fadb170aec 100644
--- a/lib/providers/duniter_indexer.dart
+++ b/lib/providers/duniter_indexer.dart
@@ -1,6 +1,7 @@
 import 'dart:async';
 import 'dart:convert';
 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';
@@ -229,13 +230,13 @@ class DuniterIndexer with ChangeNotifier {
             }
 
             if (result.isLoading) {
-              return const Text('Loading');
+              return Text('loading'.tr());
             }
 
             final List identities = result.data?['search_identity'] ?? [];
 
             if (identities.isEmpty) {
-              return const Text('Aucun résultat');
+              return Text('noResult'.tr());
             }
 
             int keyID = 0;
diff --git a/lib/providers/generate_wallets.dart b/lib/providers/generate_wallets.dart
index 0d90ec57c82bf4752c0f4285b3e24ab7a3d98f5e..5fec56dc0645594aa6e30b57f0ce1eea0ddc46c4 100644
--- a/lib/providers/generate_wallets.dart
+++ b/lib/providers/generate_wallets.dart
@@ -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);
 
@@ -119,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];
 
@@ -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);
 
diff --git a/lib/providers/home.dart b/lib/providers/home.dart
index c389b1b2dca5319f66644fbe689f5f833ef81297..f55af590e40579a327c47bf4b4f7b65c377cfe61 100644
--- a/lib/providers/home.dart
+++ b/lib/providers/home.dart
@@ -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();
   }
diff --git a/lib/providers/my_wallets.dart b/lib/providers/my_wallets.dart
index 361f2101ee8c04f36867e20d6e2ef1e90daadce5..8b142fb37349b54736940cd9622f2ff8cdef0eca 100644
--- a/lib/providers/my_wallets.dart
+++ b/lib/providers/my_wallets.dart
@@ -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();
diff --git a/lib/providers/substrate_sdk.dart b/lib/providers/substrate_sdk.dart
index 27cebf856ca9d5045270de1e60f9c35c4b5a2ddd..e64b45aea40531e4433ca2111e11406d418db718 100644
--- a/lib/providers/substrate_sdk.dart
+++ b/lib/providers/substrate_sdk.dart
@@ -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,15 @@ 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);
     }
 
@@ -756,13 +758,13 @@ class AddressInfo {
 void snackNode(BuildContext context, bool isConnected) {
   String _message;
   if (!isConnected) {
-    _message =
-        "Aucun noeud Duniter disponible, veuillez réessayer ultérieurement:\n${configBox.get('endpoint').first}";
+    _message = "noDuniterNodeAvailableTryLater".tr() +
+        ":\n${configBox.get('endpoint').first}";
   } else {
     SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false);
 
-    _message =
-        "Vous êtes connecté au noeud\n${_sub.getConnectedEndpoint()!.split('//')[1]}";
+    _message = "youAreConnectedToNode".tr() +
+        "\n${_sub.getConnectedEndpoint()!.split('//')[1]}";
   }
   final snackBar = SnackBar(
       padding: const EdgeInsets.all(20),
diff --git a/lib/providers/wallet_options.dart b/lib/providers/wallet_options.dart
index a123809124d3363a9e22a55ad1553b586468e2fe..55143bb84e449480d1258a3f964f73b7419261ee 100644
--- a/lib/providers/wallet_options.dart
+++ b/lib/providers/wallet_options.dart
@@ -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';
@@ -46,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
@@ -156,26 +157,24 @@ class WalletOptionsProvider with ChangeNotifier {
             switch (snapshot.data.toString()) {
               case 'noid':
                 {
-                  return _showText('Aucune identité');
+                  return _showText('noIdentity'.tr());
                 }
               case 'Created':
                 {
                   return isOwner
                       ? InkWell(
                           child: _showText(
-                              'Cliquez ici pour confirmer\nvotre nouvelle identité',
-                              18,
-                              true),
+                              'clickHereToConfirmIdentity'.tr(), 18, true),
                           onTap: () async {
                             await validateIdentity(context);
                           },
                         )
-                      : _showText('Identité créé');
+                      : _showText('identityCreated'.tr());
                 }
               case 'ConfirmedByOwner':
                 {
                   return isOwner
-                      ? _showText('Identité confirmé')
+                      ? _showText('identityConfirmed'.tr())
                       : _duniterIndexer.getNameByAddress(
                           context,
                           address,
@@ -190,7 +189,7 @@ class WalletOptionsProvider with ChangeNotifier {
               case 'Validated':
                 {
                   return isOwner
-                      ? _showText('Membre validé !', 18, true)
+                      ? _showText('memberValidated'.tr(), 18, true)
                       : _duniterIndexer.getNameByAddress(
                           context,
                           address,
@@ -204,7 +203,7 @@ class WalletOptionsProvider with ChangeNotifier {
 
               case 'expired':
                 {
-                  return _showText('Identité expiré');
+                  return _showText('identityExpired'.tr());
                 }
             }
             return SizedBox(
@@ -232,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,
@@ -263,7 +262,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 +324,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 +351,7 @@ class WalletOptionsProvider with ChangeNotifier {
                   return TextButton(
                     key: const Key('infoPopup'),
                     child: Text(
-                      "Valider",
+                      "validate".tr(),
                       style: TextStyle(
                         fontSize: 21,
                         color: canValidateNameBool
@@ -379,7 +378,7 @@ class WalletOptionsProvider with ChangeNotifier {
                 TextButton(
                   key: const Key('cancel'),
                   child: Text(
-                    "Annuler",
+                    "cancel".tr(),
                     style: TextStyle(
                         fontSize: 18,
                         color: Colors.grey[800],
diff --git a/lib/providers/wallets_profiles.dart b/lib/providers/wallets_profiles.dart
index a12817eaf81dc06edf7d4d64beda8faccb0e27c3..49b412c88627bc566d86d1eb042b97b99a96b84d 100644
--- a/lib/providers/wallets_profiles.dart
+++ b/lib/providers/wallets_profiles.dart
@@ -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';
@@ -126,14 +127,13 @@ class WalletsProfilesProvider with ChangeNotifier {
     return _balance;
   }
 
-
-Widget headerProfileView(
+  Widget headerProfileView(
       BuildContext context, String _address, String? username) {
     const double _avatarSize = 140;
 
     WalletOptionsProvider _walletOptions =
         Provider.of<WalletOptionsProvider>(context, listen: false);
-        CesiumPlusProvider _cesiumPlusProvider =
+    CesiumPlusProvider _cesiumPlusProvider =
         Provider.of<CesiumPlusProvider>(context, listen: false);
     // SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false);
 
@@ -181,13 +181,11 @@ Widget headerProfileView(
                   ),
                 ]),
                 const SizedBox(height: 25),
-
                 balance(context, _address, 22),
                 const SizedBox(height: 10),
                 _walletOptions.idtyStatus(context, _address,
                     isOwner: false, color: Colors.black),
                 getCerts(context, _address, 14),
-
                 if (username == null &&
                     g1WalletsBox.get(_address)?.username != null)
                   SizedBox(
@@ -215,10 +213,9 @@ Widget headerProfileView(
               ]),
           const Spacer(),
           Column(children: <Widget>[
-              ClipOval(
-                child: _cesiumPlusProvider.defaultAvatar(_avatarSize),
-              ),
-  
+            ClipOval(
+              child: _cesiumPlusProvider.defaultAvatar(_avatarSize),
+            ),
             const SizedBox(height: 25),
           ]),
         ]),
@@ -227,18 +224,16 @@ Widget headerProfileView(
     ]);
   }
 
-
-
   void reload() {
     notifyListeners();
   }
 }
 
 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);
 }
diff --git a/lib/screens/activity.dart b/lib/screens/activity.dart
index 18017cfbabbea3121dc7d7b5cd3bdac907c6dab3..ff682f9803ad06241601e1dfadb3aba3a704a454 100644
--- a/lib/screens/activity.dart
+++ b/lib/screens/activity.dart
@@ -1,3 +1,4 @@
+import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/services.dart';
 import 'package:gecko/globals.dart';
 import 'package:gecko/models/queries_indexer.dart';
@@ -9,7 +10,6 @@ import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/screens/wallet_view.dart';
 import 'package:graphql_flutter/graphql_flutter.dart';
-import 'package:intl/intl.dart';
 import 'package:provider/provider.dart';
 
 // ignore: must_be_immutable
@@ -40,9 +40,9 @@ class ActivityScreen extends StatelessWidget with ChangeNotifier {
         appBar: AppBar(
           elevation: 0,
           toolbarHeight: 60 * ratio,
-          title: const SizedBox(
+          title: SizedBox(
             height: 22,
-            child: Text('Activité du compte'),
+            child: Text('accountActivity'.tr()),
           ),
         ),
         bottomNavigationBar: _homeProvider.bottomAppBar(context),
@@ -57,12 +57,12 @@ class ActivityScreen extends StatelessWidget with ChangeNotifier {
         Provider.of<DuniterIndexer>(context, listen: false);
 
     if (indexerEndpoint == '') {
-      Column(children: const <Widget>[
-        SizedBox(height: 50),
+      Column(children: <Widget>[
+        const SizedBox(height: 50),
         Text(
-          "L'état du réseau ne permet pas\nd'afficher l'historique du compte",
+          "noNetworkNoHistory".tr(),
           textAlign: TextAlign.center,
-          style: TextStyle(fontSize: 18),
+          style: const TextStyle(fontSize: 18),
         )
       ]);
     }
@@ -103,20 +103,20 @@ class ActivityScreen extends StatelessWidget with ChangeNotifier {
 
               if (result.hasException) {
                 log.e('Error Indexer: ' + result.exception.toString());
-                return Column(children: const <Widget>[
-                  SizedBox(height: 50),
+                return Column(children: <Widget>[
+                  const SizedBox(height: 50),
                   Text(
-                    "L'état du réseau ne permet pas\nd'afficher l'historique du compte",
+                    "noNetworkNoHistory".tr(),
                     textAlign: TextAlign.center,
-                    style: TextStyle(fontSize: 18),
+                    style: const TextStyle(fontSize: 18),
                   )
                 ]);
               } else if (result.data == null) {
-                return Column(children: const <Widget>[
-                  SizedBox(height: 50),
+                return Column(children: <Widget>[
+                  const SizedBox(height: 50),
                   Text(
-                    "Aucune donnée à afficher.",
-                    style: TextStyle(fontSize: 18),
+                    "noDataToDisplay".tr(),
+                    style: const TextStyle(fontSize: 18),
                   )
                 ]);
               }
@@ -159,11 +159,11 @@ class ActivityScreen extends StatelessWidget with ChangeNotifier {
         Provider.of<DuniterIndexer>(context, listen: false);
 
     return _duniterIndexer.transBC == null
-        ? Column(children: const <Widget>[
-            SizedBox(height: 50),
+        ? Column(children: <Widget>[
+            const SizedBox(height: 50),
             Text(
-              "Aucune transaction à afficher.",
-              style: TextStyle(fontSize: 18),
+              "noTransactionToDisplay".tr(),
+              style: const TextStyle(fontSize: 18),
             )
           ])
         : Column(children: <Widget>[
@@ -202,19 +202,19 @@ class ActivityScreen extends StatelessWidget with ChangeNotifier {
     bool isYesterday = false;
     bool isThisWeek = false;
 
-    const Map<int, String> monthsInYear = {
-      1: "Janvier",
-      2: "Février",
-      3: "Mars",
-      4: "Avril",
-      5: "Mai",
-      6: "Juin",
-      7: "Juillet",
-      8: "Aout",
-      9: "Septembre",
-      10: "Octobre",
-      11: "Novembre",
-      12: "Décembre"
+    final Map<int, String> monthsInYear = {
+      1: "month1".tr(),
+      2: "month2".tr(),
+      3: "month3".tr(),
+      4: "month4".tr(),
+      5: "month5".tr(),
+      6: "month6".tr(),
+      7: "month7".tr(),
+      8: "month8".tr(),
+      9: "month9".tr(),
+      10: "month10".tr(),
+      11: "month11".tr(),
+      12: "month12".tr()
     };
 
     return Column(
@@ -243,18 +243,18 @@ class ActivityScreen extends StatelessWidget with ChangeNotifier {
       final yesterdayDate = DateTime(now.year, now.month, now.day - 1);
 
       if (transactionDate == todayDate && !isTody) {
-        dateDelimiter = lastDateDelimiter = "Aujourd'hui";
+        dateDelimiter = lastDateDelimiter = "today".tr();
         isTody = true;
       } else if (transactionDate == yesterdayDate && !isYesterday) {
-        dateDelimiter = lastDateDelimiter = "Hier";
+        dateDelimiter = lastDateDelimiter = "yesterday".tr();
         isYesterday = true;
       } else if (weekNumber(date) == weekNumber(now) &&
           date.year == now.year &&
-          lastDateDelimiter != "Cette semaine" &&
+          lastDateDelimiter != "thisWeek".tr() &&
           transactionDate != yesterdayDate &&
           transactionDate != todayDate &&
           !isThisWeek) {
-        dateDelimiter = lastDateDelimiter = "Cette semaine";
+        dateDelimiter = lastDateDelimiter = "thisWeek".tr();
         isThisWeek = true;
       } else if (lastDateDelimiter != monthsInYear[date.month] &&
           lastDateDelimiter != "${monthsInYear[date.month]} ${date.year}" &&
diff --git a/lib/screens/common_elements.dart b/lib/screens/common_elements.dart
index ca12fa7b4d7d915f1194a7d651ab9b9fd13513a8..eb94a3a3f30d5d1e792f78a076bb3e5b32717bf8 100644
--- a/lib/screens/common_elements.dart
+++ b/lib/screens/common_elements.dart
@@ -1,5 +1,7 @@
 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';
 import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:provider/provider.dart';
@@ -29,22 +31,28 @@ class CommonElements {
         child: Image.asset('assets/onBoarding/$assetName', width: imageWidth));
   }
 
-  Widget buildText(List<TextSpan> text, [double size = 20]) {
+  Widget buildText(String text, [double size = 20, bool isMd = false]) {
+    final mdStyle = MarkdownStyleSheet(
+      p: TextStyle(
+          fontSize: isTall ? size : size * 0.9,
+          color: Colors.black,
+          letterSpacing: 0.3),
+      textAlign: WrapAlignment.spaceBetween,
+    );
+
     return Container(
       padding: const EdgeInsets.all(12),
       width: 440,
       decoration: BoxDecoration(
           color: Colors.white, border: Border.all(color: Colors.grey[900]!)),
-      child: RichText(
-        textAlign: TextAlign.justify,
-        text: TextSpan(
-          style: TextStyle(
-              fontSize: isTall ? size : size * 0.9,
-              color: Colors.black,
-              letterSpacing: 0.3),
-          children: text,
-        ),
-      ),
+      child: isMd
+          ? MarkdownBody(data: text, styleSheet: mdStyle)
+          : Text(text,
+              textAlign: TextAlign.justify,
+              style: TextStyle(
+                  fontSize: isTall ? size : size * 0.9,
+                  color: Colors.black,
+                  letterSpacing: 0.3)),
     );
   }
 
@@ -85,11 +93,12 @@ class CommonElements {
 
   Widget infoIntro(
     BuildContext context,
-    List<TextSpan> text,
+    String text,
     String assetName,
     String buttonText,
     nextScreen,
     double pagePosition, {
+    bool isMd = false,
     bool isFast = false,
     double boxHeight = 440,
     double imageWidth = 350,
@@ -100,7 +109,8 @@ class CommonElements {
       buildProgressBar(pagePosition),
       SizedBox(height: isTall ? 40 : 20),
 
-      buildText(text, textSize),
+      buildText(text, textSize, isMd),
+
       buildImage(assetName, boxHeight, imageWidth),
       Expanded(
         child: Align(
@@ -239,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),
                   ),
@@ -252,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);
diff --git a/lib/screens/home.dart b/lib/screens/home.dart
index 899c14af35976329a64b34afa916e5047b093f55..58468b378b24d3e5cc2c5a1039dcac9435f8aaa0 100644
--- a/lib/screens/home.dart
+++ b/lib/screens/home.dart
@@ -1,5 +1,6 @@
 import 'package:bubble/bubble.dart';
 import 'package:connectivity_plus/connectivity_plus.dart';
+import 'package:easy_localization/easy_localization.dart';
 import 'package:gecko/globals.dart';
 import 'package:gecko/models/stateful_wrapper.dart';
 import 'package:gecko/providers/chest_provider.dart';
@@ -62,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(
@@ -111,8 +112,8 @@ class HomeScreen extends StatelessWidget {
                   // Check if versionData non compatible, drop everything
                   if (walletBox.isNotEmpty &&
                       walletBox.getAt(0)!.version! < dataVersion) {
-                    await infoPopup(context,
-                        "La version de vos coffres n'est plus comptabile avec cette version de Ğecko.\nTous vos coffres vont être oubliés, vous devez les importer de nouveau.");
+                    await infoPopup(
+                        context, "chestNotCompatibleMustReinstallGecko".tr());
                     await walletBox.clear();
                     await chestBox.clear();
                     await configBox.delete('defaultWallet');
@@ -127,7 +128,7 @@ class HomeScreen extends StatelessWidget {
                   if (connectivityResult != ConnectivityResult.mobile &&
                       connectivityResult != ConnectivityResult.wifi) {
                     _homeProvider.changeMessage(
-                        "Vous n'êtes pas connecté à internet", 0);
+                        "notConnectedToInternet".tr(), 0);
                     _sub.nodeConnected = false;
                   }
 
@@ -139,7 +140,7 @@ class HomeScreen extends StatelessWidget {
                       _sub.nodeConnected = false;
                       await _sub.sdk.api.setting.unsubscribeBestNumber();
                       _homeProvider.changeMessage(
-                          "Vous n'êtes pas connecté à internet", 0);
+                          "notConnectedToInternet".tr(), 0);
                       _sub.reload();
                     } else {
                       await _sub.connectNode(ctx);
@@ -302,7 +303,7 @@ Widget geckHome(context) {
                 ),
                 const SizedBox(height: 12),
                 Text(
-                  "Rechercher un\nportefeuille",
+                  "searchWallet".tr(),
                   textAlign: TextAlign.center,
                   style: TextStyle(
                       color: Colors.white,
@@ -368,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,
@@ -412,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,
@@ -468,7 +469,7 @@ Widget welcomeHome(context) {
         child:
             Row(mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[
           Text(
-            "L’application de paiement $currencyName\nplus rapide qu’un reptile du Vietnam",
+            "fastAppDescription".tr(args: [currencyName]),
             textAlign: TextAlign.center,
             style: const TextStyle(
               color: Colors.white,
@@ -520,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,
@@ -551,10 +552,10 @@ Widget welcomeHome(context) {
                         ),
                       );
                     },
-                    child: const Text(
-                      'Créer un portefeuille',
-                      style:
-                          TextStyle(fontSize: 24, fontWeight: FontWeight.w600),
+                    child: Text(
+                      'createWallet'.tr(),
+                      style: const TextStyle(
+                          fontSize: 24, fontWeight: FontWeight.w600),
                     ),
                   ),
                 ),
@@ -576,7 +577,7 @@ Widget welcomeHome(context) {
                       );
                     },
                     child: Text(
-                      "Restaurer mes portefeuilles",
+                      "restoreWallet".tr(),
                       style: TextStyle(
                           fontSize: 24,
                           color: orangeC,
diff --git a/lib/screens/myWallets/change_pin.dart b/lib/screens/myWallets/change_pin.dart
index 09170ad066b6506d9ba04f48f59a7ace1e4291c4..3a867a347edd154a50ef4ae0f5c60e4630bbc3cb 100644
--- a/lib/screens/myWallets/change_pin.dart
+++ b/lib/screens/myWallets/change_pin.dart
@@ -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),
                   ),
                 ),
               )
diff --git a/lib/screens/myWallets/chest_options.dart b/lib/screens/myWallets/chest_options.dart
index 54e6891d0c6f3b1913521a8a24e77ee5652b5d4d..e5c64f9b60e4ac3c3030c0ee791c3948e2c64654 100644
--- a/lib/screens/myWallets/chest_options.dart
+++ b/lib/screens/myWallets/chest_options.dart
@@ -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),
                       ),
diff --git a/lib/screens/myWallets/choose_chest.dart b/lib/screens/myWallets/choose_chest.dart
index de15755ff9673c504de7b39f49ac55ebf44301fe..c1c4fa5f87c15154fa75897c7790183e2c664d22 100644
--- a/lib/screens/myWallets/choose_chest.dart
+++ b/lib/screens/myWallets/choose_chest.dart
@@ -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,
diff --git a/lib/screens/myWallets/choose_wallet.dart b/lib/screens/myWallets/choose_wallet.dart
index 917f38f3163d4ffcf50eff8857df43e4e1275f2b..f54d6d8fe7bc844a2c8326b1abf1de6464557b6c 100644
--- a/lib/screens/myWallets/choose_wallet.dart
+++ b/lib/screens/myWallets/choose_wallet.dart
@@ -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';
@@ -28,9 +29,9 @@ class ChooseWalletScreen extends StatelessWidget {
         backgroundColor: backgroundColor,
         appBar: AppBar(
             toolbarHeight: 60 * ratio,
-            title: const SizedBox(
+            title: SizedBox(
               height: 22,
-              child: Text('Choix du portefeuille source'),
+              child: Text('choiceOfSourceWallet'.tr()),
             )),
         body: SafeArea(
           child: Stack(children: [
@@ -58,10 +59,10 @@ class ChooseWalletScreen extends StatelessWidget {
                       Navigator.pop(context);
                       Navigator.pop(context);
                     },
-                    child: const Text(
-                      'Choisir ce portefeuille',
-                      style:
-                          TextStyle(fontSize: 24, fontWeight: FontWeight.w600),
+                    child: Text(
+                      'chooseThisWallet'.tr(),
+                      style: const TextStyle(
+                          fontSize: 24, fontWeight: FontWeight.w600),
                     ),
                   ),
                 ),
diff --git a/lib/screens/myWallets/custom_derivations.dart b/lib/screens/myWallets/custom_derivations.dart
index 4ddcd76b33030492e48d1cb523fe42f9f34d3122..a4d16239e0c18dc3ebe2681acfaf61f8ab277c19 100644
--- a/lib/screens/myWallets/custom_derivations.dart
+++ b/lib/screens/myWallets/custom_derivations.dart
@@ -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(
@@ -124,8 +125,8 @@ class _CustomDerivationState extends State<CustomDerivation> {
                   }
 
                   if (_pin != null || _myWalletProvider.pinCode != '') {
-                    String _newDerivationName =
-                        'Portefeuille ${_myWalletProvider.listWallets.last.number! + 2}';
+                    String _newDerivationName = 'wallet'.tr() +
+                        ' ${_myWalletProvider.listWallets.last.number! + 2}';
                     if (dropdownValue == 'root') {
                       await _myWalletProvider.generateRootWallet(
                           context, 'Portefeuille racine');
@@ -146,9 +147,10 @@ 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),
                 ),
               ),
             ),
diff --git a/lib/screens/myWallets/manage_membership.dart b/lib/screens/myWallets/manage_membership.dart
index 3520a0ec4fa6a59a9b6ef9743e07cd26cd13768e..5f4759fd9d5d5cf4cffa1dd96677bd66752aafbf 100644
--- a/lib/screens/myWallets/manage_membership.dart
+++ b/lib/screens/myWallets/manage_membership.dart
@@ -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>[
diff --git a/lib/screens/myWallets/restore_chest.dart b/lib/screens/myWallets/restore_chest.dart
index 08d0c93dca948a6f6f53d068b6f5870931d515cf..52ff118c664a64a08b97fa60daad2e906734611e 100644
--- a/lib/screens/myWallets/restore_chest.dart
+++ b/lib/screens/myWallets/restore_chest.dart
@@ -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),
                           ),
                         ],
diff --git a/lib/screens/myWallets/show_seed.dart b/lib/screens/myWallets/show_seed.dart
index 276caa4bb083eaf33534f2df1012c4ac3d32bfce..7c825525c60baeb89f132ea773eee20a654d5058 100644
--- a/lib/screens/myWallets/show_seed.dart
+++ b/lib/screens/myWallets/show_seed.dart
@@ -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';
@@ -35,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>[
@@ -64,13 +65,7 @@ class ShowSeed extends StatelessWidget {
                       mainAxisAlignment: MainAxisAlignment.center,
                       children: [
                         Column(children: [
-                          common.buildText(
-                            <TextSpan>[
-                              const TextSpan(
-                                  text:
-                                      'Tâchez de garder cette phrase bien secrète, car elle permet à quiconque la connaît d’accéder à tous vos portefeuilles.'),
-                            ],
-                          ),
+                          common.buildText('keepYourMnemonicSecret'.tr()),
                           SizedBox(height: 35 * ratio),
                           sentanceArray(context, _seed.data!.split(' ')),
                           const SizedBox(height: 20),
@@ -97,7 +92,7 @@ class ShowSeed extends StatelessWidget {
                                 ),
                                 const SizedBox(width: 7),
                                 Text(
-                                  'Copier',
+                                  'copy'.tr(),
                                   style: TextStyle(
                                       fontSize: 15, color: Colors.grey[50]),
                                 )
@@ -136,7 +131,7 @@ class ShowSeed extends StatelessWidget {
                   Navigator.pop(context);
                 },
                 child: Text(
-                  'Fermer',
+                  'close'.tr(),
                   style: TextStyle(
                       fontSize: 23 * ratio, fontWeight: FontWeight.w600),
                 ),
@@ -237,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),
             ),
           ),
         ),
diff --git a/lib/screens/myWallets/transaction_comment.dart b/lib/screens/myWallets/transaction_comment.dart
index 7356e1efc2cfb217c7c429d27ecf3d78691717e3..3632f650e5c9dfe9ea19ed1bbc98d4c548242a82 100644
--- a/lib/screens/myWallets/transaction_comment.dart
+++ b/lib/screens/myWallets/transaction_comment.dart
@@ -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(
diff --git a/lib/screens/myWallets/unlocking_wallet.dart b/lib/screens/myWallets/unlocking_wallet.dart
index f7ff92e8ec3840c5a468883ec8650abe7fb9f765..364f8aa66c9bb38dad6814c2757848b6122476ef 100644
--- a/lib/screens/myWallets/unlocking_wallet.dart
+++ b/lib/screens/myWallets/unlocking_wallet.dart
@@ -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 à l’abri 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,
@@ -200,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;
               }
diff --git a/lib/screens/myWallets/wallet_options.dart b/lib/screens/myWallets/wallet_options.dart
index 0f41e31e11ab2395c2a514ad50efa11f00b6da8c..15551afa859376e6352e57a846753c3bdae43335 100644
--- a/lib/screens/myWallets/wallet_options.dart
+++ b/lib/screens/myWallets/wallet_options.dart
@@ -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,9 @@ class WalletOptions extends StatelessWidget {
             height: 45,
           ),
           const SizedBox(width: 22),
-          const Text('Activité',
-              style: TextStyle(fontSize: 20, fontWeight: FontWeight.w500)),
+          Text("displayActivity".tr(),
+              style:
+                  const TextStyle(fontSize: 20, fontWeight: FontWeight.w500)),
         ]),
       ),
     );
@@ -382,7 +384,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 +422,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
@@ -488,9 +490,9 @@ class WalletOptions extends StatelessWidget {
                       height: 45,
                     ),
                     const SizedBox(width: 19),
-                    const Text('Supprimer ce portefeuille',
-                        style:
-                            TextStyle(fontSize: 20, color: Color(0xffD80000))),
+                    Text('deleteThisWallet'.tr(),
+                        style: const TextStyle(
+                            fontSize: 20, color: Color(0xffD80000))),
                   ])
                 : const SizedBox(width: 30),
           );
diff --git a/lib/screens/myWallets/wallets_home.dart b/lib/screens/myWallets/wallets_home.dart
index e1b2a796dbf12a33c62f809556eb15199bfca82f..fa264d85d6b18ec8cd47f0e0520fc78959e48604 100644
--- a/lib/screens/myWallets/wallets_home.dart
+++ b/lib/screens/myWallets/wallets_home.dart
@@ -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(
diff --git a/lib/screens/onBoarding/1.dart b/lib/screens/onBoarding/1.dart
index 9d84922ffb747132019433b5507eab621941c554..2550f47957e342c3e733264795c413adaebda69b 100644
--- a/lib/screens/onBoarding/1.dart
+++ b/lib/screens/onBoarding/1.dart
@@ -1,4 +1,5 @@
 // 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';
@@ -16,32 +17,25 @@ class OnboardingStepOne extends StatelessWidget {
       backgroundColor: backgroundColor,
       appBar: AppBar(
         toolbarHeight: 60 * ratio,
-        title: const SizedBox(
+        title: SizedBox(
           height: 22,
           child: Text(
-            'Nouveau portefeuille',
-            style: TextStyle(fontWeight: FontWeight.w600),
+            'newWallet'.tr(),
+            style: const TextStyle(fontWeight: FontWeight.w600),
           ),
         ),
       ),
       extendBodyBehindAppBar: true,
       body: SafeArea(
         child: common.infoIntro(
-            context,
-            <TextSpan>[
-              const TextSpan(
-                  text: 'Gecko fabrique votre portefeuille à partir d’une '),
-              const TextSpan(
-                  text: 'phrase de restauration',
-                  style: TextStyle(fontWeight: FontWeight.bold)),
-              const TextSpan(
-                  text:
-                      '. Elle est un peu comme le plan qui permet de construire votre portefeuille.'),
-            ],
-            'fabrication-de-portefeuille.png',
-            '>',
-            const OnboardingStepTwo(),
-            0),
+          context,
+          'geckoGenerateYourWalletFromMnemonic'.tr(),
+          'fabrication-de-portefeuille.png',
+          '>',
+          const OnboardingStepTwo(),
+          0,
+          isMd: true,
+        ),
       ),
     );
   }
diff --git a/lib/screens/onBoarding/10.dart b/lib/screens/onBoarding/10.dart
index b06ba94d9cb344755b9d380e06471e4312c0694a..c8ba1915108bf5f9114048948c0bc94ad824e407 100644
--- a/lib/screens/onBoarding/10.dart
+++ b/lib/screens/onBoarding/10.dart
@@ -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';
@@ -38,11 +39,11 @@ class OnboardingStepTen extends StatelessWidget {
         backgroundColor: backgroundColor,
         appBar: AppBar(
           toolbarHeight: 60 * ratio,
-          title: const SizedBox(
+          title: SizedBox(
             height: 22,
             child: Text(
-              'Mon code secret',
-              style: TextStyle(fontWeight: FontWeight.w600),
+              'myPassword'.tr(),
+              style: const TextStyle(fontWeight: FontWeight.w600),
             ),
           ),
         ),
@@ -52,12 +53,7 @@ class OnboardingStepTen extends StatelessWidget {
             SizedBox(height: isTall ? 40 : 20),
             common.buildProgressBar(9),
             SizedBox(height: isTall ? 40 : 20),
-            common.buildText(<TextSpan>[
-              TextSpan(
-                  text:
-                      "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 l’avez bien noté.",
-                  style: TextStyle(fontSize: 16 * ratio))
-            ]),
+            common.buildText("geckoWillCheckPassword".tr()),
             SizedBox(height: isTall ? 80 : 20),
             Visibility(
               visible: _generateWalletProvider.scanedWalletNumber != -1,
@@ -107,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]),
                         ),
@@ -153,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;
               }
@@ -206,7 +202,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);
diff --git a/lib/screens/onBoarding/11_congratulations.dart b/lib/screens/onBoarding/11_congratulations.dart
index 4c88d39840ebc034b1e18604d197190d1e7c2845..c461a3bfdaef73cda672a466be0be46cc9ac4500 100644
--- a/lib/screens/onBoarding/11_congratulations.dart
+++ b/lib/screens/onBoarding/11_congratulations.dart
@@ -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';
@@ -19,11 +20,11 @@ class OnboardingStepEleven extends StatelessWidget {
         backgroundColor: backgroundColor,
         appBar: AppBar(
           toolbarHeight: 60 * ratio,
-          title: const SizedBox(
+          title: SizedBox(
             height: 22,
             child: Text(
-              'C’est tout bon !',
-              style: TextStyle(fontWeight: FontWeight.w600),
+              'allGood'.tr(),
+              style: const TextStyle(fontWeight: FontWeight.w600),
             ),
           ),
         ),
@@ -31,12 +32,7 @@ class OnboardingStepEleven extends StatelessWidget {
         body: SafeArea(
           child: Column(children: <Widget>[
             const SizedBox(height: 40),
-            common.buildText(<TextSpan>[
-              const TextSpan(
-                text:
-                    "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',
@@ -73,7 +69,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))),
   );
diff --git a/lib/screens/onBoarding/2.dart b/lib/screens/onBoarding/2.dart
index 03c2bf89bb57d4257dd794bb8a5331d1dbfd8bd8..ee16d16a6665701bb397a52511741cd34bacf099 100644
--- a/lib/screens/onBoarding/2.dart
+++ b/lib/screens/onBoarding/2.dart
@@ -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';
@@ -18,11 +19,11 @@ class OnboardingStepTwo extends StatelessWidget {
       backgroundColor: backgroundColor,
       appBar: AppBar(
         toolbarHeight: 60 * ratio,
-        title: const SizedBox(
+        title: SizedBox(
           height: 22,
           child: Text(
-            'Votre phrase de restauration',
-            style: TextStyle(fontWeight: FontWeight.w600),
+            'yourMnemonic'.tr(),
+            style: const TextStyle(fontWeight: FontWeight.w600),
           ),
         ),
       ),
@@ -30,11 +31,7 @@ class OnboardingStepTwo extends StatelessWidget {
       body: SafeArea(
         child: common.infoIntro(
             context,
-            <TextSpan>[
-              const TextSpan(
-                  text:
-                      'Conservez cette phrase précieusement, car sans elle Gecko ne pourra pas reconstruire vos portefeuilles le jour où vous changez de téléphone.'),
-            ],
+            'keepThisMnemonicSecure'.tr(),
             'fabrication-de-portefeuille-impossible-sans-phrase.png',
             '>',
             const OnboardingStepThree(),
diff --git a/lib/screens/onBoarding/3.dart b/lib/screens/onBoarding/3.dart
index 42bd197d0610adf4e33cd115fc9ad3ebd0d796e3..8a261d97043a7213a7137e43aed70f2f7a1246fe 100644
--- a/lib/screens/onBoarding/3.dart
+++ b/lib/screens/onBoarding/3.dart
@@ -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';
@@ -18,27 +19,18 @@ class OnboardingStepThree extends StatelessWidget {
       backgroundColor: backgroundColor,
       appBar: AppBar(
         toolbarHeight: 60 * ratio,
-        title: const SizedBox(
+        title: SizedBox(
           height: 22,
           child: Text(
-            'Votre phrase de restauration',
-            style: TextStyle(fontWeight: FontWeight.w600),
+            'yourMnemonic'.tr(),
+            style: const TextStyle(fontWeight: FontWeight.w600),
           ),
         ),
       ),
       extendBodyBehindAppBar: true,
       body: SafeArea(
-        child: common.infoIntro(
-            context,
-            <TextSpan>[
-              const 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.'),
-            ],
-            'mot-de-passe-oublie.png',
-            '>',
-            const OnboardingStepFor(),
-            2),
+        child: common.infoIntro(context, 'warningForgotPassword'.tr(),
+            'forgot_password.png'.tr(), '>', const OnboardingStepFor(), 2),
       ),
     );
   }
diff --git a/lib/screens/onBoarding/4.dart b/lib/screens/onBoarding/4.dart
index 5b5d7d47f880621012e1443236e526ba379b5ea9..946f3db1fc3a663215e357726b76f7a5cc3a15fb 100644
--- a/lib/screens/onBoarding/4.dart
+++ b/lib/screens/onBoarding/4.dart
@@ -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';
@@ -18,11 +19,11 @@ class OnboardingStepFor extends StatelessWidget {
       backgroundColor: backgroundColor,
       appBar: AppBar(
         toolbarHeight: 60 * ratio,
-        title: const SizedBox(
+        title: SizedBox(
           height: 22,
           child: Text(
-            'Votre phrase de restauration',
-            style: TextStyle(fontWeight: FontWeight.w600),
+            'yourMnemonic'.tr(),
+            style: const TextStyle(fontWeight: FontWeight.w600),
           ),
         ),
       ),
@@ -30,18 +31,12 @@ class OnboardingStepFor extends StatelessWidget {
       body: SafeArea(
         child: common.infoIntro(
             context,
-            <TextSpan>[
-              const TextSpan(text: 'Il est temps de vous munir d’'),
-              const TextSpan(
-                  text: 'un d’un papier et d’un crayon',
-                  style: TextStyle(fontWeight: FontWeight.bold)),
-              const TextSpan(
-                  text: ' afin de pouvoir noter votre phrase de restauration.'),
-            ],
-            'gecko-oublie-aussi.png',
+            'itsTimeToUseAPenAndPaper'.tr(),
+            'gecko_also_can_forget.png'.tr(),
             '>',
             const OnboardingStepFive(),
-            3),
+            3,
+            isMd: true),
       ),
     );
   }
diff --git a/lib/screens/onBoarding/5.dart b/lib/screens/onBoarding/5.dart
index 596d1b29d44a4dbdd92d4b5adfe0a26e6501c2ad..de736fc4222ae4113fdd9919fb5fc7f26d813a02 100644
--- a/lib/screens/onBoarding/5.dart
+++ b/lib/screens/onBoarding/5.dart
@@ -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';
@@ -37,11 +38,11 @@ class _ChooseChestState extends State<OnboardingStepFive> {
       backgroundColor: backgroundColor,
       appBar: AppBar(
         toolbarHeight: 60 * ratio,
-        title: const SizedBox(
+        title: SizedBox(
           height: 22,
           child: Text(
-            'Votre phrase de restauration',
-            style: TextStyle(fontWeight: FontWeight.w600),
+            'yourMnemonic'.tr(),
+            style: const TextStyle(fontWeight: FontWeight.w600),
           ),
         ),
       ),
@@ -51,13 +52,7 @@ class _ChooseChestState extends State<OnboardingStepFive> {
           SizedBox(height: isTall ? 40 : 20),
           common.buildProgressBar(4),
           SizedBox(height: isTall ? 40 : 20),
-          common.buildText(
-            <TextSpan>[
-              const TextSpan(
-                  text:
-                      'Gecko a généré votre phrase de restauration ! Tâchez de la garder bien secrète, car elle permet à quiconque la connaît d’accéder à tous vos portefeuilles.'),
-            ],
-          ),
+          common.buildText('geckoGeneratedYourMnemonicKeepItSecret'.tr()),
           SizedBox(height: 35 * ratio),
           sentanceArray(context),
           SizedBox(height: 17 * ratio),
@@ -93,7 +88,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 +97,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 +200,7 @@ class PrintWallet extends StatelessWidget {
           title: const SizedBox(
             height: 22,
             child: Text(
-              'Imprimer ma phrase de restauration',
+              'printMyMnemonic',
               style: TextStyle(fontWeight: FontWeight.w600),
             ),
           ),
diff --git a/lib/screens/onBoarding/6.dart b/lib/screens/onBoarding/6.dart
index 832019afe0d76801e677e79de05af5ec19daf2cb..e91f524db0cf43e0a9820727d258539d4e9c38ae 100644
--- a/lib/screens/onBoarding/6.dart
+++ b/lib/screens/onBoarding/6.dart
@@ -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';
@@ -41,11 +42,11 @@ class OnboardingStepSix extends StatelessWidget {
         extendBodyBehindAppBar: true,
         appBar: AppBar(
           toolbarHeight: 60 * ratio,
-          title: const SizedBox(
+          title: SizedBox(
             height: 22,
             child: Text(
-              'Votre phrase de restauration',
-              style: TextStyle(fontWeight: FontWeight.w600),
+              'yourMnemonic'.tr(),
+              style: const TextStyle(fontWeight: FontWeight.w600),
             ),
           ),
         ),
@@ -57,20 +58,10 @@ class OnboardingStepSix extends StatelessWidget {
               common.buildProgressBar(5),
               SizedBox(height: isTall ? 40 : 20),
               common.buildText(
-                <TextSpan>[
-                  TextSpan(
-                      text:
-                          "Avez-vous bien noté votre phrase de restauration ?\n\nPour en être sûr, veuillez taper dans le champ ci-dessous le ",
-                      style: TextStyle(fontSize: 16 * ratio)),
-                  TextSpan(
-                      text: '${_generateWalletProvider.nbrWord + 1}ème mot',
-                      style: TextStyle(
-                          fontWeight: FontWeight.bold, fontSize: 16 * ratio)),
-                  TextSpan(
-                      text: " de votre phrase de restauration :",
-                      style: TextStyle(fontSize: 16 * ratio)),
-                ],
-              ),
+                  "didYouNoteMnemonicToBeSureTypeWord".tr(
+                      args: [(_generateWalletProvider.nbrWord + 1).toString()]),
+                  20,
+                  true),
               SizedBox(height: isTall ? 70 : 20),
               Text('${_generateWalletProvider.nbrWord + 1}',
                   key: const Key('askedWord'),
@@ -105,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),
@@ -122,7 +114,7 @@ class OnboardingStepSix extends StatelessWidget {
                     alignment: Alignment.bottomCenter,
                     child: nextButton(
                         context,
-                        'Continuer',
+                        'continue'.tr(),
                         skipIntro
                             ? const OnboardingStepNine()
                             : const OnboardingStepSeven(),
diff --git a/lib/screens/onBoarding/7.dart b/lib/screens/onBoarding/7.dart
index 71c3c996b87a06d146d4c153b8d4ce6853108bbb..b26600993f7ba8a87158b9829bcb6f4a156e6e0f 100644
--- a/lib/screens/onBoarding/7.dart
+++ b/lib/screens/onBoarding/7.dart
@@ -1,4 +1,5 @@
 // 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';
@@ -18,11 +19,11 @@ class OnboardingStepSeven extends StatelessWidget {
       backgroundColor: backgroundColor,
       appBar: AppBar(
         toolbarHeight: 60 * ratio,
-        title: const SizedBox(
+        title: SizedBox(
           height: 22,
           child: Text(
-            'Mon code secret',
-            style: TextStyle(fontWeight: FontWeight.w600),
+            'myPassword'.tr(),
+            style: const TextStyle(fontWeight: FontWeight.w600),
           ),
         ),
       ),
@@ -30,11 +31,7 @@ class OnboardingStepSeven extends StatelessWidget {
       body: SafeArea(
         child: common.infoIntro(
             context,
-            <TextSpan>[
-              const TextSpan(
-                  text:
-                      'Gecko va maintenant générer pour vous un code secret court qui vous permettra d’accéder rapidement à vos portefeuilles, sans avoir à taper votre phrase de restauration à chaque fois.'),
-            ],
+            'geckoWillGenerateAPassword'.tr(),
             'coffre-fort-code-secret-dans-telephone.png',
             '>',
             OnboardingStepEight(scanDerivation: scanDerivation),
diff --git a/lib/screens/onBoarding/8.dart b/lib/screens/onBoarding/8.dart
index 0b6555f5ef56af49577444a3d48754b16555a8d9..2172e2d45cf2a9b5a015d6806fdc114aac306cb2 100644
--- a/lib/screens/onBoarding/8.dart
+++ b/lib/screens/onBoarding/8.dart
@@ -1,4 +1,5 @@
 // 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';
@@ -18,11 +19,11 @@ class OnboardingStepEight extends StatelessWidget {
       backgroundColor: backgroundColor,
       appBar: AppBar(
         toolbarHeight: 60 * ratio,
-        title: const SizedBox(
+        title: SizedBox(
           height: 22,
           child: Text(
-            'Mon code secret',
-            style: TextStyle(fontWeight: FontWeight.w600),
+            'myPassword'.tr(),
+            style: const TextStyle(fontWeight: FontWeight.w600),
           ),
         ),
       ),
@@ -30,21 +31,12 @@ class OnboardingStepEight extends StatelessWidget {
       body: SafeArea(
         child: common.infoIntro(
             context,
-            <TextSpan>[
-              const TextSpan(
-                  text:
-                      'Ce code secret protège vos portefeuilles dans un coffre-fort '),
-              const TextSpan(
-                  text: 'dont vous seul possédez le code',
-                  style: TextStyle(fontWeight: FontWeight.bold)),
-              const TextSpan(
-                  text:
-                      ', de sorte que vos portefeuilles seront inutilisables par d’autres.'),
-            ],
+            'thisPasswordProtectsYourWalletsInASecureChest'.tr(),
             'coffre-fort-protege-les-portefeuilles.png',
             '>',
             OnboardingStepNine(scanDerivation: scanDerivation),
-            7),
+            7,
+            isMd: true),
       ),
     );
   }
diff --git a/lib/screens/onBoarding/9.dart b/lib/screens/onBoarding/9.dart
index 16dbda0f4206da4b55f6b02bbf818cf476215845..1dec327bb2ae1cc03557f359f858c666f43174f8 100644
--- a/lib/screens/onBoarding/9.dart
+++ b/lib/screens/onBoarding/9.dart
@@ -1,4 +1,5 @@
 // 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';
@@ -30,11 +31,11 @@ class OnboardingStepNine extends StatelessWidget {
         backgroundColor: backgroundColor,
         appBar: AppBar(
           toolbarHeight: 60 * ratio,
-          title: const SizedBox(
+          title: SizedBox(
             height: 22,
             child: Text(
-              'Mon code secret',
-              style: TextStyle(fontWeight: FontWeight.w600),
+              'myPassword'.tr(),
+              style: const TextStyle(fontWeight: FontWeight.w600),
             ),
           ),
         ),
@@ -45,18 +46,9 @@ class OnboardingStepNine extends StatelessWidget {
             common.buildProgressBar(8),
             SizedBox(height: isTall ? 40 : 20),
             common.buildText(
-              <TextSpan>[
-                const TextSpan(
-                    text:
-                        "Et voilà votre code secret !\n\nMémorisez-le ou notez-le, car il vous sera demandé "),
-                const TextSpan(
-                    text: 'à chaque fois',
-                    style: TextStyle(fontWeight: FontWeight.bold)),
-                const TextSpan(
-                    text:
-                        " que vous voudrez effectuer un paiement sur cet appareil."),
-              ],
-            ),
+                "hereIsThePasswordKeepIt".tr(),
+                20,
+                true),
             const SizedBox(height: 100),
             Stack(
               alignment: Alignment.centerRight,
@@ -98,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),
           ]),
diff --git a/lib/screens/search.dart b/lib/screens/search.dart
index 8560503cf827f061d3f406aeff4ca9e43cf3ba93..be13c6817ffed71897c6344e03abf3071bc237d8 100644
--- a/lib/screens/search.dart
+++ b/lib/screens/search.dart
@@ -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';
@@ -31,9 +32,9 @@ class SearchScreen extends StatelessWidget {
         appBar: AppBar(
           elevation: 1,
           toolbarHeight: 60 * ratio,
-          title: const SizedBox(
+          title: SizedBox(
             height: 22,
-            child: Text('Rechercher'),
+            child: Text('search'.tr()),
           ),
           leading: IconButton(
               icon: const Icon(Icons.arrow_back, color: Colors.black),
@@ -105,9 +106,10 @@ class SearchScreen extends StatelessWidget {
                           );
                         }
                       : null,
-                  child: const Text(
-                    'Rechercher',
-                    style: TextStyle(fontSize: 24, fontWeight: FontWeight.w600),
+                  child: Text(
+                    'search'.tr(),
+                    style: const TextStyle(
+                        fontSize: 24, fontWeight: FontWeight.w600),
                   ),
                 ),
               ),
diff --git a/lib/screens/search_result.dart b/lib/screens/search_result.dart
index 95429467141e4e110263100d05f800203a308d67..3f4978bcfe92fd0c5b7257a45264c1a291cd798b 100644
--- a/lib/screens/search_result.dart
+++ b/lib/screens/search_result.dart
@@ -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';
@@ -38,9 +39,9 @@ class SearchResultScreen extends StatelessWidget {
       appBar: AppBar(
         elevation: 1,
         toolbarHeight: 60 * ratio,
-        title: const SizedBox(
+        title: SizedBox(
           height: 22,
-          child: Text('Résultats de votre recherche'),
+          child: Text('researchResults'.tr()),
         ),
       ),
       bottomNavigationBar: _homeProvider.bottomAppBar(context),
@@ -59,8 +60,8 @@ class SearchResultScreen extends StatelessWidget {
                         color: Colors.grey[700],
                       ),
                       children: <TextSpan>[
-                        const TextSpan(
-                          text: "Résultats pour ",
+                        TextSpan(
+                          text: "resultsFor".tr(),
                         ),
                         TextSpan(
                           text: '"${_searchProvider.searchController.text}"',
@@ -71,7 +72,7 @@ class SearchResultScreen extends StatelessWidget {
                   ),
                   const SizedBox(height: 40),
                   Text(
-                    'Dans la blockchain $currencyName',
+                    'inBlockchainResult'.tr(args: [currencyName]),
                     style: const TextStyle(fontSize: 20),
                   ),
                   const SizedBox(height: 20),
diff --git a/lib/screens/settings.dart b/lib/screens/settings.dart
index bccf4d44dab66c3ed7524bd878205130cfdb7776..bc0b488b4d5cc2ebaa7b19ad50c20a7cfca44fcb 100644
--- a/lib/screens/settings.dart
+++ b/lib/screens/settings.dart
@@ -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,
@@ -52,7 +53,8 @@ class SettingsScreen extends StatelessWidget {
                 log.d(_sub.sdk.api.connectedNode?.endpoint);
                 return Expanded(
                   child: Row(children: [
-                    Text(' Noeud $currencyName :'),
+                    const SizedBox(width: 10),
+                    Text('currencyNode'.tr(args: [currencyName])),
                     const Spacer(),
                     Icon(_sub.nodeConnected && !_sub.isLoadingEndpoint
                         ? Icons.check
@@ -97,9 +99,9 @@ class SettingsScreen extends StatelessWidget {
                     log.i('Oublier tous mes coffres');
                     await _myWallets.deleteAllWallet(context);
                   },
-                  child: const Text(
-                    'Oublier tous mes coffres',
-                    style: TextStyle(
+                  child: Text(
+                    'forgetAllMyChests'.tr(),
+                    style: const TextStyle(
                       fontSize: fontSize + 4,
                       color: Color(0xffD80000),
                       fontWeight: FontWeight.w600,
diff --git a/lib/screens/substrate_sandbox.dart b/lib/screens/substrate_sandbox.dart
index a62fdfce4e7bf02c3ac6333a7a65fef546ccd6b7..0c3ed95c44d247bf9d2234380f368a60ce790e4e 100644
--- a/lib/screens/substrate_sandbox.dart
+++ b/lib/screens/substrate_sandbox.dart
@@ -21,7 +21,7 @@ class SubstrateSandBox extends StatelessWidget {
           toolbarHeight: 60 * ratio,
           title: const SizedBox(
             height: 22,
-            child: Text('Substrate Sandbox'),
+            child: Text('⏳ Substrate Sandbox'),
           ),
         ),
         body: SafeArea(
@@ -36,12 +36,12 @@ class SubstrateSandBox extends StatelessWidget {
                           await _sub.connectNode(context);
                         },
                         child: Text(
-                            'Noeud connecté ?: ${_sub.nodeConnected} (${_sub.sdk.api.connectedNode?.endpoint})')),
+                            '🌐 Noeud connecté ?: ${_sub.nodeConnected} (${_sub.sdk.api.connectedNode?.endpoint})')),
                     if (_sub.nodeConnected)
-                      Text('Noeud "$currencyName", bloc N°${_sub.blocNumber}'),
+                      Text('🏆 Noeud "$currencyName", bloc N°${_sub.blocNumber}'),
                     const SizedBox(height: 20),
                     Row(children: [
-                      const Text('Liste des coffres:'),
+                      const Text('💳 Liste des coffres:'),
                       const Spacer(),
                       InkWell(
                         child: Image.asset(
@@ -93,13 +93,13 @@ class SubstrateSandBox extends StatelessWidget {
                                         addressInfo.address!,
                                         2,
                                         _sub.keystorePassword.text),
-                                    child: const Text("Dériver"),
+                                    child: const Text("🏂 Dériver"),
                                   )
                                 ])
                           ]);
                         }),
                     const SizedBox(height: 20),
-                    const Text('Mot de passe du coffre:'),
+                    const Text('🔒 Mot de passe du coffre:'),
                     TextField(
                       controller: _sub.keystorePassword,
                       obscureText: true,
@@ -130,7 +130,7 @@ class SubstrateSandBox extends StatelessWidget {
                                   }
                                 : null,
                             child: const Text(
-                              'Importer depuis le presse-papier',
+                              '📎 Importer depuis le presse-papier',
                               style: TextStyle(fontSize: 20),
                             ),
                           ),
@@ -149,7 +149,7 @@ class SubstrateSandBox extends StatelessWidget {
                               snack(context, 'Le mnemonic a été copié');
                             },
                             child: const Text(
-                              "Générer un mnemonic et le copier",
+                              "🏦 Générer un mnemonic et le copier",
                               style: TextStyle(fontSize: 20),
                             ),
                           ),
@@ -161,7 +161,7 @@ class SubstrateSandBox extends StatelessWidget {
                               textAlign: TextAlign.center,
                             ),
                           ),
-                          const Text('--------'),
+                          const Text('-〰️---〰️---〰️-'),
                           const SizedBox(height: 10),
                           Text(_sub.debugConnection)
                         ])
diff --git a/lib/screens/transaction_in_progress.dart b/lib/screens/transaction_in_progress.dart
index 858b3be5fdaf7ba1a7fc496274744d5c385a9eac..732595b6e19b1910ccc4b615cdd65c960b6b81be 100644
--- a/lib/screens/transaction_in_progress.dart
+++ b/lib/screens/transaction_in_progress.dart
@@ -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';
@@ -39,44 +40,44 @@ class TransactionInProgress extends StatelessWidget {
     switch (transType) {
       case 'pay':
         {
-          _actionName = 'Transaction';
+          _actionName = 'transaction'.tr();
         }
         break;
       case 'cert':
         {
-          _actionName = 'Certification';
+          _actionName = 'certification'.tr();
         }
         break;
       case 'comfirmIdty':
         {
-          _actionName = "Confirmation d'identité";
+          _actionName = "identityConfirm".tr();
         }
         break;
       case 'revokeIdty':
         {
-          _actionName = "Révocation d'adhésion";
+          _actionName = "revokeAdhesion".tr();
         }
         break;
       default:
         {
-          _actionName = 'Transaction étrange';
+          _actionName = 'strangeTransaction'.tr();
         }
     }
 
     switch (_result) {
       case '':
         {
-          _resultText = 'Envoi en cours ...';
+          _resultText = 'sending'.tr();
         }
         break;
       case 'Ready':
         {
-          _resultText = 'En cours de propagation...';
+          _resultText = 'propagating'.tr();
         }
         break;
       case 'Broadcast':
         {
-          _resultText = 'En cours de validation ...';
+          _resultText = 'validating'.tr();
         }
         break;
       default:
@@ -86,10 +87,10 @@ class TransactionInProgress extends StatelessWidget {
           log.d(_result);
           if (_result.contains('blockHash: ')) {
             isValid = true;
-            _resultText = '$_actionName validé !';
+            _resultText = 'extrinsicValidated'.tr(args: [_actionName]);
           } else {
             isValid = false;
-            _resultText = "Une erreur s'est produite:\n";
+            _resultText = "anErrorOccured".tr() + ":\n";
             final List _exceptionSplit = _result.split('Exception: ');
             String _exception;
             if (_exceptionSplit.length > 1) {
@@ -102,37 +103,33 @@ class TransactionInProgress extends StatelessWidget {
               case 'cert.NotRespectCertPeriod':
               case 'identity.CreatorNotAllowedToCreateIdty':
                 {
-                  _resultText =
-                      "Vous devez attendre 24h entre chaque certification";
+                  _resultText = "24hbetweenCerts".tr();
                 }
                 break;
               case 'cert.CannotCertifySelf':
                 {
-                  _resultText =
-                      "Vous ne pouvez pas vous certifier\nvous même ...";
+                  _resultText = "canNotCertifySelf".tr();
                 }
                 break;
               case 'identity.IdtyNameAlreadyExist':
                 {
-                  _resultText = "Ce nom est déjà pris";
+                  _resultText = "nameAlreadyExist".tr();
                 }
                 break;
               case 'balances.KeepAlive':
                 {
-                  _resultText =
-                      "Vous devez garder au moins 2ĞD sur votre compte pour le garder actif";
+                  _resultText = "2GDtoKeepAlive".tr();
                 }
                 break;
               case '1010: Invalid Transaction: Inability to pay some fees , e.g. account balance too low':
                 {
-                  _resultText =
-                      "Vous devez alimenter ce compte avant\nde pouvoir l'utiliser";
+                  _resultText = "youHaveToFeedThisAccountBeforeUsing".tr();
                 }
                 break;
 
               case 'timeout':
                 {
-                  _resultText += "Le délais d'éxecution est dépassé";
+                  _resultText += "execTimeoutOver".tr();
                 }
                 break;
               default:
@@ -162,7 +159,9 @@ class TransactionInProgress extends StatelessWidget {
                 height: 22,
                 child: Row(
                     mainAxisAlignment: MainAxisAlignment.center,
-                    children: <Widget>[Text('$_actionName en cours')]),
+                    children: <Widget>[
+                      Text('extrinsicInProgress'.tr(args: [_actionName]))
+                    ]),
               )),
           body: SafeArea(
             child: Align(
@@ -189,10 +188,10 @@ class TransactionInProgress extends StatelessWidget {
                               fontSize: 18, fontWeight: FontWeight.w600),
                         ),
                       if (transType == 'pay') const SizedBox(height: 10),
-                      const Text(
-                        'de',
+                      Text(
+                        'fromMinus'.tr(),
                         textAlign: TextAlign.center,
-                        style: TextStyle(fontSize: 18),
+                        style: const TextStyle(fontSize: 18),
                       ),
                       Text(
                         from,
@@ -201,10 +200,10 @@ class TransactionInProgress extends StatelessWidget {
                             fontSize: 18, fontWeight: FontWeight.w600),
                       ),
                       const SizedBox(height: 10),
-                      const Text(
-                        'vers',
+                      Text(
+                        'toMinus'.tr(),
                         textAlign: TextAlign.center,
-                        style: TextStyle(fontSize: 18),
+                        style: const TextStyle(fontSize: 18),
                       ),
                       Text(
                         to,
@@ -263,7 +262,7 @@ class TransactionInProgress extends StatelessWidget {
                             if (transType == 'pay') Navigator.pop(context);
                           },
                           child: Text(
-                            'Fermer',
+                            'close'.tr(),
                             style: TextStyle(
                                 fontSize: 23 * ratio,
                                 fontWeight: FontWeight.w600),
diff --git a/lib/screens/wallet_view.dart b/lib/screens/wallet_view.dart
index f69cbd31715b61971eefec040dff5f51db89f977..9cb91086fca5adec895eb07f3413ddc83777f944 100644
--- a/lib/screens/wallet_view.dart
+++ b/lib/screens/wallet_view.dart
@@ -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';
@@ -69,9 +70,9 @@ class WalletViewScreen extends StatelessWidget {
               ),
             ),
           ],
-          title: const SizedBox(
+          title: SizedBox(
             height: 22,
-            child: Text('Voir un portefeuille'),
+            child: Text('seeAWallet'.tr()),
           ),
         ),
         bottomNavigationBar: _homeProvider.bottomAppBar(context),
@@ -112,7 +113,7 @@ class WalletViewScreen extends StatelessWidget {
                 ),
                 const SizedBox(height: 9),
                 Text(
-                  "Voir\nl'activité",
+                  "displayNActivity".tr(),
                   textAlign: TextAlign.center,
                   style: TextStyle(
                       fontSize: buttonFontSize, fontWeight: FontWeight.w500),
@@ -136,33 +137,36 @@ class WalletViewScreen extends StatelessWidget {
                       final int _seconds = _durationSeconds.inSeconds;
                       final int _minutes = _durationSeconds.inMinutes;
 
+                      // TODO translate timing
                       if (_seconds <= 0) {
-                        _duration = '0 secondes';
+                        _duration = 'seconds'.tr(args: ['0']);
                       } else if (_seconds <= 60) {
-                        _duration = '$_seconds secondes';
+                        _duration = 'seconds'.tr(args: [_seconds.toString()]);
                       } else if (_seconds <= 3600) {
-                        _duration = '$_minutes minutes';
+                        _duration = 'minutes'.tr(args: [_minutes.toString()]);
                       } else if (_seconds <= 86400) {
                         final int _hours = _durationSeconds.inHours;
                         final int _minutesLeft = _minutes - _hours * 60;
                         String _showMinutes = '';
                         if (_minutesLeft < 60) {}
-                        _showMinutes = ' $_minutesLeft minutes';
-                        _duration = '$_hours heures$_showMinutes';
+                        _showMinutes =
+                            'minutes'.tr(args: [_minutesLeft.toString()]);
+                        _duration =
+                            'hours'.tr(args: [_hours.toString(), _showMinutes]);
                       } else if (_seconds <= 2592000) {
                         final int _days = _durationSeconds.inDays;
-                        _duration = '$_days jours';
+                        _duration = 'days'.tr(args: [_days.toString()]);
                       } else {
                         final int _months =
                             (_durationSeconds.inDays / 30).round();
-                        _duration = '$_months mois';
+                        _duration = 'months'.tr(args: [_months.toString()]);
                       }
                     }
                     return Visibility(
                       visible: (snapshot.data != {}),
                       child: Column(children: <Widget>[
                         if (snapshot.data!['canCert'] != null ||
-                            _duration == '0 secondes')
+                            _duration == 'seconds'.tr(args: ['0']))
                           Column(children: <Widget>[
                             SizedBox(
                               height: buttonSize,
@@ -180,9 +184,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;
@@ -227,7 +235,7 @@ class WalletViewScreen extends StatelessWidget {
                             ),
                             const SizedBox(height: 9),
                             Text(
-                              "Certifier",
+                              "certify".tr(),
                               textAlign: TextAlign.center,
                               style: TextStyle(
                                   fontSize: buttonFontSize,
@@ -255,7 +263,8 @@ class WalletViewScreen extends StatelessWidget {
                               ),
                             ),
                             Text(
-                              "Vous devez attendre\n$_duration avant\nde pouvoir certifier",
+                              "mustWaitXBeforeCertify"
+                                  .tr(args: [_duration.toString()]),
                               textAlign: TextAlign.center,
                               style: TextStyle(
                                   fontSize: buttonFontSize - 4,
@@ -264,7 +273,7 @@ class WalletViewScreen extends StatelessWidget {
                             ),
                           ]),
                         if (snapshot.data!['certRenewable'] != null &&
-                            _duration != '0 secondes')
+                            _duration != 'seconds'.tr(args: ['0']))
                           Column(children: <Widget>[
                             SizedBox(
                               height: buttonSize,
@@ -285,7 +294,8 @@ class WalletViewScreen extends StatelessWidget {
                               ),
                             ),
                             Text(
-                              "Vous pourrez renouveller\ncette certification\ndans $_duration",
+                              "canRenewCertInX"
+                                  .tr(args: [_duration.toString()]),
                               textAlign: TextAlign.center,
                               style: TextStyle(
                                   fontSize: buttonFontSize - 4,
@@ -321,36 +331,13 @@ class WalletViewScreen extends StatelessWidget {
                 ),
                 const SizedBox(height: 9),
                 Text(
-                  "Copier\nla clef",
+                  "copyAddress".tr(),
                   textAlign: TextAlign.center,
                   style: TextStyle(
                       fontSize: buttonFontSize, fontWeight: FontWeight.w500),
                 ),
               ]),
             ]),
-            // FutureBuilder(
-            //   future: _walletOptions.generateQRcode(_historyProvider.pubkey),
-            //   builder: (context, snapshot) {
-            //     return snapshot.data != null
-            //         ? GestureDetector(
-            //             key: const Key('openQrcode'),
-            //             onTap: () {
-            //               Navigator.push(
-            //                 context,
-            //                 MaterialPageRoute(builder: (context) {
-            //                   return AvatarFullscreen(
-            //                     Image.memory(snapshot.data),
-            //                     title: 'QrCode du profil',
-            //                     color: Colors.white,
-            //                   );
-            //                 }),
-            //               );
-            //             },
-            //             child: Image.memory(snapshot.data, height: 60 * ratio),
-            //           )
-            //         : const Text('-', style: TextStyle(fontSize: 20));
-            //   },
-            // ),
             const Spacer(),
             Consumer<SubstrateSdk>(builder: (context, _sub, _) {
               return Opacity(
@@ -389,7 +376,7 @@ class WalletViewScreen extends StatelessWidget {
             const SizedBox(height: 9),
             Consumer<SubstrateSdk>(builder: (context, _sub, _) {
               return Text(
-                "Faire un\nvirement",
+                'doATransfer'.tr(),
                 textAlign: TextAlign.center,
                 style: TextStyle(
                     color: _sub.nodeConnected ? Colors.black : Colors.grey[500],
@@ -466,9 +453,9 @@ class WalletViewScreen extends StatelessWidget {
                         Row(
                             mainAxisAlignment: MainAxisAlignment.spaceBetween,
                             children: [
-                              const Text(
-                                'Effectuer un virement',
-                                style: TextStyle(
+                              Text(
+                                'executeATransfer'.tr(),
+                                style: const TextStyle(
                                     fontSize: 26, fontWeight: FontWeight.w700),
                               ),
                               IconButton(
@@ -481,7 +468,7 @@ class WalletViewScreen extends StatelessWidget {
                             ]),
                         const SizedBox(height: 20),
                         Text(
-                          'Depuis:',
+                          'from'.tr(),
                           style: TextStyle(
                               fontSize: 19,
                               fontWeight: FontWeight.w500,
@@ -571,7 +558,7 @@ class WalletViewScreen extends StatelessWidget {
 
                         // const SizedBox(height: 10),
                         Text(
-                          'Montant:',
+                          'amount'.tr(),
                           style: TextStyle(
                               fontSize: 19,
                               fontWeight: FontWeight.w500,
@@ -676,9 +663,9 @@ class WalletViewScreen extends StatelessWidget {
                                     }
                                   }
                                 : null,
-                            child: const Text(
-                              'Effectuer le virement',
-                              style: TextStyle(
+                            child: Text(
+                              'executeTheTransfer'.tr(),
+                              style: const TextStyle(
                                   fontSize: 20, fontWeight: FontWeight.w600),
                             ),
                           ),
diff --git a/pubspec.lock b/pubspec.lock
index 60bf6e80251fe697b2637aed86676b0e3dd680bc..e88a7fbc2d285a7fb772aacfc9113acaa87cf3af 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -316,6 +316,20 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "0.1.6"
+  easy_localization:
+    dependency: "direct main"
+    description:
+      name: easy_localization
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "3.0.1"
+  easy_logger:
+    dependency: transitive
+    description:
+      name: easy_logger
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.0.2"
   fake_async:
     dependency: transitive
     description:
@@ -389,6 +403,11 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "1.0.4"
+  flutter_localizations:
+    dependency: transitive
+    description: flutter
+    source: sdk
+    version: "0.0.0"
   flutter_logs:
     dependency: "direct main"
     description:
@@ -396,6 +415,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "2.1.6"
+  flutter_markdown:
+    dependency: "direct main"
+    description:
+      name: flutter_markdown
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.6.10+2"
   flutter_plugin_android_lifecycle:
     dependency: transitive
     description:
@@ -738,6 +764,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "1.0.2"
+  markdown:
+    dependency: transitive
+    description:
+      name: markdown
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "5.0.0"
   matcher:
     dependency: transitive
     description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 3ca445c5f95fae37d6d11a3a254e0c6ee190cbd4..05b92cd8a0dbeb828dd267317303992fab249ea9 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -5,7 +5,7 @@ description: Pay with G1.
 # pub.dev using `pub publish`. This is preferred for private packages.
 publish_to: 'none' # Remove this line if you wish to publish to pub.dev
 
-version: 0.0.9+11
+version: 0.0.9+12
 
 environment:
   sdk: '>=2.12.0 <3.0.0'
@@ -72,6 +72,8 @@ dependencies:
   web_socket_channel: ^2.2.0
   connectivity_plus: ^2.3.3
   image_cropper: ^2.0.3
+  easy_localization: ^3.0.1
+  flutter_markdown: ^0.6.10+2
 
 dev_dependencies:
   # flutter_launcher_icons: ^0.9.2
@@ -99,6 +101,7 @@ flutter:
   assets:
     - config/
     - assets/
+    - assets/translations/
     - assets/home/
     - assets/avatars/
     - assets/chests/
diff --git a/test_driver/app_test.dart b/test_driver/app_test.dart
index 40ba8d556ad452d5341ffefbb2392566ef4dcabe..3a3243d7c362f3b473600254c52e879851198d3b 100644
--- a/test_driver/app_test.dart
+++ b/test_driver/app_test.dart
@@ -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';
@@ -160,7 +161,7 @@ void main() {
           await driver!.getText(find.byValueKey(
             'step6',
           )),
-          "J’ai généré votre phrase de restauration !\nTâchez de la garder bien secrète, car elle permet à quiconque la connaît d’accéder à tous vos portefeuilles.");
+          "iGeneratedYourMnemonicKeepItSecret".tr());
     });
 
     test('OnBoarding - Generate sentance and confirme it', (
@@ -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