diff --git a/data/web/lang/lang.fr.json b/data/web/lang/lang.fr.json
index 3e7e9b2d..94f86570 100644
--- a/data/web/lang/lang.fr.json
+++ b/data/web/lang/lang.fr.json
@@ -1,6 +1,6 @@
 {
 	"acl": {
-		"alias_domains": "Ajouter un alias de domaines",
+		"alias_domains": "Ajouter un alias de domaine",
 		"app_passwds": "Gérer les mots de passe d'application",
 		"bcc_maps": "Mapping BCC",
 		"delimiter_action": "Délimitation d'action",
@@ -119,7 +119,7 @@
 		"add_transport": "Ajouter un transport",
 		"add_transports_hint": "Sachez que les données d'authentification éventuelles seront stockées en clair.",
 		"additional_rows": " lignes supplémentaires ont été ajoutées",
-		"admin": "Administrateurr",
+		"admin": "Administrateur",
 		"admin_details": "Édition des informations de l'administrateur",
 		"admin_domains": "Affectation des domaines",
 		"advanced_settings": "Paramètres Avancés",
@@ -156,7 +156,7 @@
 		"dkim_to": "Vers",
 		"dkim_to_title": "Les domaines ciblés seront réécrits",
 		"domain": "Domaine",
-		"domain_admins": "Aministrateurs de domaine",
+		"domain_admins": "Administrateurs de domaine",
 		"domain_s": "Domaine/s",
 		"duplicate": "Dupliquer",
 		"duplicate_dkim": "Dupliquer l'enregistrement DKIM",
@@ -551,7 +551,7 @@
 		"subfolder2": "Synchronisation dans le sous-dossier sur la destination<br><small>(vide = ne pas utiliser de sous-dossier)</small>",
 		"syncjob": "Modifier la tâche de synchronisation",
 		"target_address": "Adresse/s Goto<small>(séparé/s par des virgules)</small>",
-		"target_domain": "Domùaine cible",
+		"target_domain": "Domaine cible",
 		"timeout1": "Délai de connexion à l’hôte distant",
 		"timeout2": "Délai de connexion à l’hôte local",
 		"title": "Editer l'objet",
@@ -564,7 +564,7 @@
 		"confirm_delete": "Confirmer la suppression",
 		"delete_now": "Effacer maintenant",
 		"delete_these_items": "Veuillez confirmer les modifications apportées à l’identifiant d’objet suivant",
-		"hibp_nok": "Matché! Il s’agit d’un mot de passe potentiellement dangereux!",
+		"hibp_nok": "Trouvé! Il s’agit d’un mot de passe potentiellement dangereux!",
 		"hibp_ok": "Aucune correspondance trouvée.",
 		"loading": "Veuillez patienter...",
 		"restart_container": "Redémarrer le conteneur",
@@ -578,7 +578,7 @@
 		"debug": "Information Système",
 		"mailboxes": "Configuration du courrier",
 		"mailcow_settings": "Configuration",
-		"quarantine": "Quarantine",
+		"quarantine": "Quarantaine",
 		"restart_netfilter": "Redémarrer Netfilter",
 		"restart_sogo": "Redémarrer SOGo",
 		"user_settings": "Paramètres utilisateur"
@@ -603,7 +603,7 @@
 		"add_alias": "Ajouter un alias",
 		"add_bcc_entry": "Ajouter une carte BCC",
 		"add_domain": "Ajouter un domaine",
-		"add_domain_alias": "Ajouter un alis de domaine",
+		"add_domain_alias": "Ajouter un alias de domaine",
 		"add_domain_record_first": "Veuillez d’abord ajouter un domaine",
 		"add_filter": "Ajouter un filtre",
 		"add_mailbox": "Ajouter une boîte",
@@ -660,10 +660,10 @@
 		"insert_preset": "Insérer un exemple de préréglage \"%s\"",
 		"kind": "Type",
 		"last_mail_login": "Dernière connexion mail",
-		"last_run": "Dernier run",
+		"last_run": "Dernière éxécution",
 		"last_run_reset": "Calendrier suivant",
 		"mailbox": "Mailbox",
-		"mailbox_defquota": "Taile de boîte par défaut",
+		"mailbox_defquota": "Taille de boîte par défaut",
 		"mailbox_quota": "Taille max. d’une boîte",
 		"mailboxes": "Boîtes mail",
 		"mins_interval": "Intervalle (min)",
@@ -694,9 +694,9 @@
 		"sieve_preset_1": "Jeter le courrier avec les types de fichiers dangereux probables",
 		"sieve_preset_2": "Toujours marquer l’e-mail d’un expéditeur spécifique comme vu",
 		"sieve_preset_3": "Jeter en silence, arrêter tout traitement supplémentaire du tamis",
-		"sieve_preset_4": "Fichier dans INBOX, Éviter le traitement ultérieur par filtres à tamis",
+		"sieve_preset_4": "Fichier dans INBOX, éviter le traitement ultérieur par filtres à tamis",
 		"sieve_preset_5": "Répondeur auto (vacances)",
-		"sieve_preset_6": "Rejeter le courrier avec reponse",
+		"sieve_preset_6": "Rejeter le courrier avec réponse",
 		"sieve_preset_7": "Rediriger et garder/déposer",
 		"sieve_preset_8": "Supprimer le message envoyé à une adresse alias dont fait partie l’expéditeur",
 		"sieve_preset_header": "Voir les exemples de préréglages ci-dessous. Pour plus de détails voir <a href=\"https://en.wikipedia.org/wiki/Sieve_(mail_filtering_language)\" target=\"_blank\">Wikipedia</a>.",
@@ -706,8 +706,8 @@
 		"sogo_visible_y": "Afficher alias dans SOGo",
 		"spam_aliases": "Alias temp.",
 		"stats": "Statistiques",
-		"status": "Status",
-		"sync_jobs": "Jobs de synchronisation",
+		"status": "Statut",
+		"sync_jobs": "Tâches de synchronisation",
 		"table_size": "Taille de la table",
 		"table_size_show_n": "Montrer %s articles",
 		"target_address": "Goto adresse",
@@ -725,7 +725,7 @@
 		"tls_policy_maps_long": "Contournement de la carte de politique TLS sortante",
 		"toggle_all": "Tout basculer",
 		"username": "Nom d'utilisateur",
-		"waiting": "Attente",
+		"waiting": "En attente",
 		"weekly": "Hebdomadaire",
 		"yes": "&#10003;"
 	},
@@ -771,7 +771,7 @@
 		"sender_header": "Expéditeur (\"From\" header)",
 		"quick_release_link": "Ouvrir le lien de dégagement rapide",
 		"quick_delete_link": "Ouvrir le lien de suppression rapide",
-		"show_item": "Monter l'article",
+		"show_item": "Montrer l'article",
 		"spam_score": "Score",
 		"subj": "Sujet",
 		"table_size": "Dimension de la table",
@@ -878,9 +878,9 @@
 		"select": "Veuillez sélectionner",
 		"set_tfa": "Définir une méthode d’authentification à deux facteurs",
 		"start_u2f_validation": "Début de la validation",
-		"tfa": "Authentication à deux facteurs",
+		"tfa": "Authentification à deux facteurs",
 		"totp": "OTP (One Time Password = Mot de passe à usage unique : Google Authenticator, Authy, etc.)",
-		"u2f": "Authentication U2F",
+		"u2f": "Authentification U2F",
 		"waiting_usb_auth": "<i>En attente d’un périphérique USB...</i><br><br>S’il vous plaît appuyez maintenant sur le bouton de votre périphérique USB U2F.",
 		"waiting_usb_register": "<i>En attente d’un périphérique USB...</i><br><br>Veuillez entrer votre mot de passe ci-dessus et confirmer votre inscription U2F en appuyant sur le bouton de votre périphérique USB U2F.",
 		"yubi_otp": "Authentification OTP Yubico"
@@ -909,7 +909,7 @@
 		"change_password": "Changer le mot de passe",
 		"client_configuration": "Afficher les guides de configuration pour les clients de messagerie et les smartphones",
 		"create_app_passwd": "Créer un mot de passe application",
-		"create_syncjob": "Créer un job de synchronisation",
+		"create_syncjob": "Créer une tâche de synchronisation",
 		"daily": "Quotidien",
 		"day": "jour",
 		"delete_ays": "Veuillez confirmer le processus de suppression.",
@@ -920,7 +920,7 @@
 		"eas_reset_now": "Réinitialiser maintenant",
 		"edit": "Editer",
 		"email": "Email",
-		"email_and_dav": "Email, calendriers and contacts",
+		"email_and_dav": "Email, calendriers et contacts",
 		"encryption": "Cryptage",
 		"excludes": "Exclut",
 		"expire_in": "Expire dans",
@@ -960,8 +960,8 @@
 		"quarantine_notification_info": "Une fois qu’un avis a été envoyé, les articles seront marqués comme \"notified\" et aucune autre notification ne sera envoyée pour ce point particulier.",
 		"remove": "Enlever",
 		"running": "En fonction",
-		"save": "Sauver les changements",
-		"save_changes": "Sauver les changements",
+		"save": "Sauvegarder les changements",
+		"save_changes": "Sauvegarder les changements",
 		"sender_acl_disabled": "<span class=\"label label-danger\">Le contrôle de l’expéditeur est désactivé</span>",
 		"shared_aliases": "Adresses alias partagées",
 		"shared_aliases_desc": "Les alias partagés ne sont pas affectés par les paramètres spécifiques à l’utilisateur tels que le filtre anti-spam ou la politique de chiffrement. Les filtres anti-spam correspondants ne peuvent être effectués que par un administrateur en tant que politique de domaine.",
@@ -988,14 +988,14 @@
 		"spamfilter_wl": "Liste blanche (WhiteList)",
 		"spamfilter_wl_desc": "Liste blanche des adresses e-mail à <b> ne jamais</b> classer comme spam. Des caractères génériques peuvent être utilisés. Un filtre n’est appliqué qu’aux alias directs (alias avec une seule boîte cible), à l’exclusion des alias tous azimuts et d’une boîte elle-même.",
 		"spamfilter_yellow": "Jaune: ce message est peut être un spam, il sera étiqueté comme spam et déplacé vers votre dossier Junk",
-		"status": "Status",
+		"status": "Statut",
 		"sync_jobs": "Jobs de synchronisation",
 		"tag_handling": "Régler la manipulation du courrier étiqueté",
 		"tag_help_example": "Exemple pour une adresse e-mail étiquetée: me<b>+Facebook</b>@example.org",
-		"tag_help_explain": "Dans sous-dossier: un nouveau sous-dossier nommé d’après la balise sera créé ci-dessous INBOX (\"INBOX/Facebook\").<br>\r\nDans le sujet : le nom des balises sera pré-terminé à l’objet mail, exemple : \"[Facebook] My News\".",
+		"tag_help_explain": "Dans sous-dossier: un nouveau sous-dossier nommé d’après la balise sera créé sous INBOX (\"INBOX/Facebook\").<br>\r\nDans le sujet : le nom des balises sera ajouté au début du sujet du mail, exemple : \"[Facebook] My News\".",
 		"tag_in_none": "Ne rien faire",
-		"tag_in_subfolder": "Dans sous dossier",
-		"tag_in_subject": "En sujet",
+		"tag_in_subfolder": "Dans un sous dossier",
+		"tag_in_subject": "Dans le sujet",
 		"text": "Texte",
 		"title": "Titre",
 		"tls_enforce_in": "Appliquer le TLS entrant",
@@ -1004,7 +1004,7 @@
 		"tls_policy_warning": "<strong>Attention:</strong> Si vous décidez d’appliquer le transfert de courrier chiffré, vous risquez de perdre des courriels.<br>Les messages qui ne satisfont pas à la politique seront renvoyés avec une erreur grave par le système de messagerie.<br>Cette option s’applique à votre adresse courriel principale (login name), toutes les adresses dérivées de domaines alias ainsi que les adresses alias <b>avec cette seule boîte</b> comme cible.",
 		"user_settings": "Paramètres utilisateur",
 		"username": "Nom d'utilisateur",
-		"verify": "Verification",
+		"verify": "Vérification",
 		"waiting": "En attente",
 		"week": "Semaine",
 		"weekly": "Hebdomadaire",
@@ -1013,13 +1013,13 @@
 	"warning": {
 		"cannot_delete_self": "Impossible de supprimer l’utilisateur connecté",
 		"domain_added_sogo_failed": "Ajout d’un domaine mais échec du redémarrage de Sogo, veuillez vérifier les journaux de votre serveur.",
-		"dovecot_restart_failed": "Dovecot n’a pas pu redémarrer, veuillez vérifier les logs",
+		"dovecot_restart_failed": "Dovecot n’a pas pu redémarrer, veuillez vérifier les journaux de votre serveur.",
 		"fuzzy_learn_error": "Erreur d’apprentissage du hachage flou: %s",
 		"hash_not_found": "Hachage non trouvé ou déjà supprimé",
 		"ip_invalid": "IP non valide ignorée: %s",
-		"no_active_admin": "Impossible de désactiver la dernière administration active",
+		"no_active_admin": "Impossible de désactiver le dernier administrateur active",
 		"quota_exceeded_scope": "Dépassement du quota de domaine: Seules des boîtes illimitées peuvent être créées dans ce domaine.",
-		"session_token": "Token de formulaire invalide: Décalage des jetons",
-		"session_ua": "Token de formulaire invalide: erreur de validation User-Agent"
+		"session_token": "Jeton de formulaire invalide: Décalage des jetons",
+		"session_ua": "Jeton de formulaire invalide: erreur de validation User-Agent"
 	}
 }
diff --git a/data/web/lang/lang.sv.json b/data/web/lang/lang.sv.json
index cd57013c..4cf3fd93 100644
--- a/data/web/lang/lang.sv.json
+++ b/data/web/lang/lang.sv.json
@@ -419,6 +419,7 @@
         "targetd_relay_domain": "Måldomänen %s är en relädomän",
         "temp_error": "Tillfälligt fel",
         "text_empty": "Texten i medelandet kan inte vara tom",
+        "tfa_token_invalid": "TFA-nyckeln är ogiltig",
         "tls_policy_map_dest_invalid": "Destinationen är ogiltig",
         "tls_policy_map_entry_exists": "TLS policyföreskriften \"%s\" existerar redan",
         "tls_policy_map_parameter_invalid": "Policy parameter är ogiltig",
@@ -1058,7 +1059,7 @@
         "ip_invalid": "Skippar en ogiltig IP-adress: %s",
         "no_active_admin": "Den senaste kända administratören kan inte inaktiveras",
         "quota_exceeded_scope": "Domänkvoten fylld: Endast postlådor med obegränsade kvoter kan skapas för den här domänen.",
-        "session_token": "Formulärstämpeln är ogiltig: Stämpeln matchar inte",
-        "session_ua": "Formulärstämpeln är ogiltig: User-Agenten kunde inte valideras"
+        "session_token": "Formulär-nyckeln är ogiltig: Nyckeln matchar inte",
+        "session_ua": "Formulär-nyckeln är ogiltig: User-Agenten kunde inte valideras"
     }
 }