#!/usr/bin/python3 # -*- coding: utf-8 -* # Copyright (C) 2017 Tetras Libre <contact@Tetras-Libre.fr> # Author: Beniamine, David <David.Beniamine@Tetras-Libre.fr> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # Translation: technical english to NOT technical french import re translations = { 'offline_fast_hashing_1e10_per_second': 'Essai sur base de donnée volée mal protégée', 'offline_slow_hashing_1e4_per_second': 'Essai sur base de donnée volée bien protégée', 'online_no_throttling_10_per_second': 'Essai en ligne sans protection anti brute force', 'online_throttling_100_per_hour': 'Essai en ligne avec protection anti brute force', 'passwords': 'mots de passes', 'surnames': 'nom de famille', 'user_inputs': "indices données par l'attaquant.e", 'suggestions': 'conseils', 'warning': 'problèmes', 'less than a second': "moins d'une seconde", 'less than a minute': "moins d'une minute", } substitutions = { 'less than': "moins de", 'day': 'jour', 'second(s*)': 'seconde\g<1>', 'hour(s*)': 'heure\g<1>', 'months*': 'mois', 'year(s*)': 'an\g<1>', 'centuries': 'des siècles', 'centuries': 'des siècles', "Predictable substitutions like (.*) instead of (.*) don't help very much": "Les substitutions prévisibles tels que \g<1> au lieu de \g<2> n'aident pas beaucoup", 'Uncommon words are better': 'Préférer des mots rares', 'Add another word or two': 'Ajouter un mot ou deux', 'This is similar to a commonly used password': 'Ce mot de passe ressemble à un mot de passe très utilisé', 'lower': 'minuscules', 'upper': 'majuscules', 'digits': 'chiffres', 'unicode': 'caractères unicodes', 'Use a few words, avoid common phrases': 'Utiliser plusieurs mots, évitez les phrases classiques', 'No need for symbols, digits, or uppercase letters': 'pas besoin de symboles, nombres ou majuscules', 'are easy to guess': 'sont faciles à deviner', 'Straight rows of keys': 'Les suites directes de lettres sur le clavier', 'Short keyboard patterns': 'Des petits déplacement sur le clavier', 'Use a longer keyboard pattern with more turn': 'Utiliser un plus long schéma sur le clavier avec plus de virages', 'Repeats like': 'Les répétitions telles que', 'are only slightly harder to guess than': 'sont a peine plus difficile à deviner que', 'Sequences like': 'Les sequences telles que', '<or>': 'ou', 'Avoid repeated words and characters': 'Éviter les répétitions de mots ou caractères', 'Avoid': 'Éviter', 'recent years': 'les années récentes', 'years that are associated with you': 'les années qui ont quelque chose à voir avec vous', 'Dates are often easy to guess': 'Les dates sont souvent faciles à deviner', 'dates': 'les dates', 'This is a top-(.*) common password': 'Ce mot de passe est dans le top \g<1> des plus utilisés', 'This is a very common passowrd': 'Ce mot de passe est très utilisé', 'A word by itself is easy to guess': 'Un mot seul est facile à deviner', 'Names and surnames by themselves': 'Les noms et noms de familles seuls', 'Common names and surnames': 'Les noms et noms de familles courants', "Capitalization doesn't help very much": "Mettre en majuscule n'aide pas tant que ça", 'All-uppercase is almost as easy to guess as all-lowercase': 'Les mots en majuscules sont aussi simple à deviner que ceux en minuscules', "Reversed words aren't much harder to guess": 'Les mots inversés ne sont pas beaucoup plus dur à deviner', } def tr(text): try: text = translations[text] except: for pattern, sub in substitutions.items(): text = re.sub(pattern, sub, text) finally: return text