<commit_before>{
    "specs": {
        "lang": "Français",
        "contributors": [
            "231499325123854336",
            "170844396877512704",
            "145577223452229632"
        ]
    },
    "comments": [
        "Ceci est un fichier local (de traduction) pour blargbot.",
        "Afin d'y contribuer, merci de respecter les règles suivantes:",
        "1. Ne changez pas les \"templates\" notées: {{nom}}.",
        "2. Ne modifiez pas les \"templates\" notées: \"[[path.to.key]]\"",
        "3. Toutes les commandes doivent contenir une propriété \"info\" et \"utilisation\".",
        "4. Pour les résultats aléatoires, les \"terms\" sont placés dans un \"context\" '.list'. Vous avez le droit d'en ajouter.",
        "5. Utilisez la même ponctuation que dans la référence.",
        "6. Pour la gloire, les femmes et l'argent, ajoutez votre discord userID dans une nouvelle ligne juste ci-dessus.",
        "7. Pas d'bêtises.",
        "",
        "Bises, NegativeCoffee."
    ],
    "generic": {
        "output": "Résultat:\n{{output}}",
        "nooutput": "Aucun résultat...",
        "queryexpire": "Cette requête expirera dans {{length}} minutes.",
        "resolveuser": {
            "nousers": "Aucun utilisateur trouvé.",
            "pickuser": "{{length}} utilisateurs trouvés! Veuillez en choisir un de la liste."
        },
        "resolverole": {
            "noroles": "Aucun rôle trouvé.",
            "pickrole": "{{length}} rôles trouvés! Veuillez en choisir un de la liste."
        },
        "resolvechannel": {
            "nochannels": "Aucun canal trouvé.",
            "pickchannel": "{{length}} canaux trouvés! Veuillez en choisir un de la liste."
        },
        "edited": "édité",
        "created": "créé",
        "deleted": "supprimé",
        "menu": {
            "choices": "Page {{page}}/{{max}}"
        },
        "nochange": "Aucun changement.",
        "commandhelp": "**Command Name**: **__{{name}}__**\n\n**__Usage__**\n```{{usage}}```\n**__Info__**\n{{info}}\n\n**__Aliases__**\n{{aliases}}",
        "example": {
            "id1": "111111111111111111",
            "id2": "222222222222222222",
            "id3": "333333333333333333"
        },
        "test": "[[[generic.example.id1]];[[generic.example.id2]];[[generic.example.id3]]]"
    },
    "menu": {
        "cancel": {
            "name": "Annuler",
            "description": "Fermer ce menu."
        },
        "confirm": {
            "name": "Confirmer",
            "description": "Veuillez confirmer ce menu."
        }
    },
    "emote": {
        "check": ":white_check_mark:",
        "x": ":x:",
        "okhand": ":ok_hand:"
    },
    "error": {
        "keyundef": "Aucune entrée locale de ce type n'a été trouvée: '{{key}}'.",
        "memberundef": "Aucun membre de ce nom n'a été trouvé: '{{member}}'",
        "userundef": "Aucun utilisateur de ce nom n'a été trouvé: '{{user}}'.",
        "channelundef": "Aucun canal de ce nom n'a été trouvé: '{{channel}}'.",
        "roleundef": "Aucun rôle de ce nom n'a été trouvé: '{{role}}'.",
        "pleasereport": "Si vous pensez qu'il s'agit d'une erreur, veuillez la signaler (en anglais)!",
        "generic": "Une erreur s'est produite!\n```\n{{message}}\n```\n[error.pleasereport]]",
        "messagetoolong": "Oh-oh! J'ai tenté d'envoyer un message qui était trop long.\n[[error.pleasereport]]",
        "notenoughparams": "Pas assez de paramètres. Utilisez `{{prefix}}help {{name}}` pour plus de détails.\n\nIl fallait `{{expected}}` parameters, mais j'ai reçu `{{received}}` à la place.",
        "tag": {
            "notfound": "Le tag `{{tag}}` n'existe pas.",
            "toomanyargs": "Trop d'arguments! (r:{{received}} e:{{expected}})",
            "toofewargs": "Pas assez d'arguments! (r:{{received}} e:{{expected}})",
            "isnan": "'{{arg}}' s'attend à être un nombre, mais reçois une '{{value}}'",
            "maxlessthanmin": "Le maximum doit être supérieur au minimum",
            "ccommandonly": "'{{tag}}' ne peut être utilisé qu'avec les ccommands",
            "authorstaff": "L'auteur {{author}} doit être un membre du staff pour utiliser '{{tag}}'",
            "noperms": "Il manque au bot la permission '{{perm}}' requise par le tag '{{tag}}'",
            "toolow": "Le bot ne peut '{{tag}}' car son rang est inférieur à celui de '{{target}}'",
            "unclosed": "Accolade d'ouverture solitaire [{{column}}:{{row}}]",
            "unopened": "Accolade de fermeture solitaire [{{column}}:{{row}}]",
            "invalidradix": "La base doit être comprise entre 2 et 36, mais vaut '{{radix}}'",
            "notanarray": "La variable '{{name}}' n'est pas un tableau (reçu: '{{value}}').",
            "notbool": "La variable '{{name}}' n'est pas un booléen (reçu: '{{value}}')."
        },
        "inputtoolong": "Your input was too long! The maximum characters for this was {{max}}, but you gave {{length}} characters."
    },
    "command": {
        "general": {
            "ping": {
                "info": "Pong!\nDétermine la latence des commandes.",
                "usage": "ping",
                "randmsg": [
                    "Tu veux du gâteau ?",
                    "Un biscuit ?",
                    "Une tasse de thé ?",
                    "Tu veux un petit café ?",
                    "J'ai faim.",
                    "Un grand verre d'eau avec une paille, s'il vous plaît.",
                    "J'ai des P'tits Lu.",
                    "Tu veux un cookie?",
                    "J'ai soif.",
                    "Wouaf.",
                    "Miaou.",
                    "..."
                ],
                "final": "Pong! ({{time}}ms)"
            },
            "brainfuck": {
                "info": "Exécute le code \"brainfuck\".",
                "usage": "brainfuck <code>",
                "flags": {
                    "p": "Montre une liste de pointeurs après exécution.",
                    "i": "Spécifie les données apportées pour l'opérateur `,`."
                }
            },
            "cat": {
                "info": "Affiche une photo de chat.",
                "usage": "chat"
            },
            "ship": {
                "info": "Génère un surnom pour deux utilisateurs.",
                "usage": "ship <utilisateur1> <utilisateur2>",
                "final": "Votre surnom est **{{name}}**!",
                "notenough": "Vous devez choisir deux membres!"
            },
            "tag": {
                "info": "Les tags sont un système de commandes publiques que tout le monde peut créer ou utiliser, écrits avec le langage BBTag.\n\n**Sous-commandes**:\n{{subcommands}}\n\nPour plus d'informations sur une sous-commande, utilisez `b!t help <sous-command>`.\nPour plus d'informations sur le langage BBTag, visitez <https://blargbot.xyz/tags>.\nEn créant un tag, vous certifiez approuver les conditions d'utilisation. (<https://blargbot.xyz/tags/tos> - en anglais.)",
                "usage": "tag <nom | sous-commande> [arguments]",
                "dontown": "[[emote.x]] Vous ne possédez pas ce tag!",
                "alreadyexists": "[[emote.x]] Un tag avec ce nom existe déjà!",
                "notag": "[[emote.x]] Aucun tag avec ce nom n'existe.",
                "tagset": "[[emote.check]] Tag `{{name}}` {{process}}!",
                "tagrename": "[[emote.check]] Le tag `{{old}}` a été renommé en `{{new}}`.",
                "raw": "Le code pour {{name}} est:\n```{{code}}```",
                "testoutput": "Résultat:\n\n{{output}}",
                "subcommand": {
                    "set": {
                        "usage": "tag set <nom> <contenu>",
                        "info": "Crée ou modifie un tag avec un nom et un contenu donné. Ne remplacera aucun tag créé par quelqu'un d'autre."
                    },
                    "delete": {
                        "usage": "tag delete <nom>",
                        "info": "Supprime un tag que vous avez créé."
                    },
                    "rename": {
                        "usage": "tag rename <nom> <nouveau_nom>",
                        "info": "Renomme un tag que vous avez créé."
                    },
                    "raw": {
                        "usage": "tag raw <nom>",
                        "info": "Renvoie le code d'un tag."
                    },
                    "info": {
                        "usage": "tag info <nom>",
                        "info": "Affiche des informations à propos d'un tag."
                    },
                    "transfer": {
                        "usage": "tag transfer <nom> <utilisateur>",
                        "info": "Transfère le tag vers un utilisateur. Les variables ne seront pas transférées."
                    },
                    "top": {
                        "usage": "tag top",
                        "info": "Affiche des tags qui ont été les plus favorisés."
                    },
                    "author": {
                        "usage": "tag author <nom>",
                        "info": "Affiche l'auteur d'un tag."
                    },
                    "search": {
                        "usage": "tag search <query>",
                        "info": "Recherche un tag avec le nom contenant votre query"
                    },
                    "list": {
                        "usage": "tag list [@user]",
                        "info": "Liste tous les tags, ou optionnellement tous les tags créés par un utilisateur spécifique."
                    },
                    "favorite": {
                        "usage": "tag favorite <nom>",
                        "info": "Favorise le tag spécifié."
                    },
                    "report": {
                        "usage": "tag report <nom>",
                        "info": "Signale un tag pour avoir violer les ToS. Merci de l'utiliser avec responsabilité."
                    },
                    "test": {
                        "usage": "tag test <code>",
                        "info": "Exécute le code donné dans un environnement d'essai."
                    },
                    "help": {
                        "usage": "tag aide [sous-commande]",
                        "info": "Affiche ceci !"
                    },
                    "docs": {
                        "usage": "documents tag [subtag]",
                        "info": "Donne un lien vers la documentation BBTag ou donne des informations à propos d'un sous-tag spécifique."
                    },
                    "setdesc": {
                        "usage": "",
                        "info": "info"
                    },
                    "setusage": {
                        "usage": "",
                        "info": "info"
                    }
                },
                "subcommandnotfound": "Aucune sous-commande trouvée avec le nom `{{subcommand}}`",
                "transferprompt": "{{target}}, {{user}} wants to transfer ownership of the tag `{{tag}}` to you. Do you accept?\nThis will not transfer variables.",
                "nobots": "[[emote.x]] You cannot transfer a tag to a bot!",
                "transfercancelled": "[[emote.x]] The transfer has been cancelled.",
                "transfercomplete": "[[emote.check]] {{user}} now owns the tag `{{tag}}`.",
                "taginfo": "__**Tag | {{name}}**__\nAuthor: **{{author}}**\nLast Modified: **{{lastModified}}**\nIt has been used a total of **{{uses}} times**!\nIt has been favorited **{{favourites}} times**!\n\n{{desc}}",
                "descupdate": "La description pour `{{tag}}` a été mise à jour.",
                "descreset": "La description pour `{{tag}}` a été réinitialisée.",
                "subcommandconflict": "Vous ne pouvez pas utiliser le nom `{{name}}` parce qu'il y a une sous-commande qui porte ce nom!",
                "toptagformat": "{{index}}. **{{name}}** ({{author}})\n    - Favorites: {{favourites}} Uses: {{uses}}",
                "toptags": "Voici les 10 meilleurs tags!\n\n{{tags}}",
                "tagauthor": "Le tag `{{tag}}` a été créé par **{{author}}**.",
                "favouriteadd": "The tag `{{tag}}` has been added to your favorites list.",
                "favouriteremove": "The tag `{{tag}}` has been removed from your favorites list.",
                "favourites": "You have {{count}} tags on your favorites list.\n```fix\n{{tags}}\n```"
            },
            "ccommand": {
                "info": "Les \"ccommands\" sont un système de commandes personnalisées que les modérateurs peuvent créer pour leurs utilisateurs en utilisant le langage BBTag.\n\n**Sous-commandes**\n{{subcommands}}\n\nPour plus d'informations à propos d'une sous-commande, faites `b!t help <sous-commande>`\nPour plus d'informations à propos des BBTag, visitez <https://blargbot.xyz/tags>.",
                "usage": "cc <sous-commande> [args]",
                "subcommand": {
                    "set": {
                        "usage": "cc set <nom> <contenu>",
                        "info": "Crée ou modifie une commande personnalisée avec le nom et le contenu donnés. Ne remplacera aucun tag fait par quelqu'un d'autre."
                    },
                    "delete": {
                        "usage": "cc delete <nom>",
                        "info": "Supprime une commande personnalisée."
                    },
                    "rename": {
                        "usage": "cc rename <nom> <nouveauNom>",
                        "info": "Renomme une commande personnalisée."
                    },
                    "author": {
                        "usage": "cc author <nom>",
                        "info": "Renvoie le nom de l'auteur d'une commande personnalisée."
                    },
                    "transfer": {
                        "usage": "cc transfer <nom> <utilisateur>",
                        "info": "Transfère les droits de propriété d'une commande personnalisé vers quelqu'un d'autre. Doit être consensuel."
                    },
                    "list": {
                        "usage": "Liste cc",
                        "info": "Liste les commandes personnalisées de la guilde."
                    },
                    "test": {
                        "usage": "Test cc",
                        "info": "Exécute le code dans le contexte de votre compte."
                    },
                    "help": {
                        "usage": "Aide cc [subcommand]",
                        "info": "Affiche ceci !"
                    }
                },
                "dontown": "[[emote.x]] You don't own that custom command!",
                "notag": "[[emote.x]] There is no custom command with that name.",
                "tagset": "[[emote.check]] Custom command `{{name}}` {{process}}!",
                "tagrename": "[[emote.check]] The custom command `{{old}}` has been renamed to `{{new}}`",
                "raw": "Le code pour {{name}} est :\\n```{{code}}```",
                "alreadyexists": "Une commande personnalisée avec ce nom existe déjà.",
                "testoutput": "Test Output:\\n\\n{{output}}"
            },
            "locale": {
                "info": "Sets what locale messages will be sent in.",
                "usage": "locale",
                "set": "Your locale has been set to {{locale}}!",
                "list": "Your current locale is: {{current}}\n\nPlease select which locale you want to use."
            },
            "tokenify": {
                "info": "",
                "usage": ""
            }
        },
        "image": {
            "cat": {
                "info": "Vous montre un adorable, très doux et précieux chaton.",
                "usage": "chat"
            }
        },
        "admin": {
            "setup": {
                "setstaffrole": "The staff roles have been updated.",
                "staffrolequery": "Select the roles that will be considered moderator roles. Users with these roles will be able to use admin commands.",
                "info": "Sets what users/roles are considered to be staff.",
                "usage": "mod <subcommand>",
                "subcommand": {
                    "staffuser": {
                        "usage": "mod user <add | remove> <user>...",
                        "info": "Adds or removes the specified user(s) to the staff list."
                    },
                    "staffrole": {
                        "usage": "mod user role",
                        "info": "Brings up a dialog to select or deselect roles."
                    }
                }
            }
        }
    },
    "tag": {
        "comment": {
            "desc": "Spécifie une zone qui sera ignorée durant l'analyse.",
            "example": {
                "in": "Ce texte apparaîtra. {{//; Celui-ci n'apparaîtra pas.}.",
                "out": "Ce texte apparaîtra."
            }
        },
        "void": {
            "desc": "Prévient l'apparition du résultat. Ce tag est différent des commentaires car tout est exécuté, juste pas affiché. ",
            "example": {
                "in": "Ce texte apparaîtra {void;Celui-ci n'apparaîtra pas. {set;~temp;et cette variable sera assignée.}} {get;~temp}",
                "out": "Ce texte apparaîtra et cette variable sera assignée."
            }
        },
        "randint": {
            "desc": "Renvoie un entier aléatoire compris entre deux nombres. `min` vaut 0 par défaut.",
            "example": {
                "in": "Un: {randint;5}, deux: {randint;10;20}",
                "out": "Un: 2, Deux: 17"
            }
        },
        "array": {
            "filter": {
                "desc": "Itère à travers un tableau en modifiant l'élément à une variable locale `i`. Si `varName` est spécifiée, remplace l'élément par cette variable à la place de `i`.\n\nRenvoie un nouveau tableau qui contient seulement les éléments où le résultat de l'itération était `vrai` ou `1`",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\n{filter;array;{logic;{get;i};<;3}}",
                    "out": "[1;2]"
                }
            },
            "foreach": {
                "desc": "Itère à travers un tableau en remplaçant l'élément actuel par la variable `i`. Si `varName` est donné, remplace l'élément actuel par celui-ci à la place de `i`.",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\n{array.foreach;array;Element:{get;i}{newline}}",
                    "out": "Elément:1\nElément:2\nElément:3\nElément:4\nElément:5"
                }
            },
            "get": {
                "desc": "Obtient l'élément d'un tableau à la position `index`",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\nÉlément à l'index 3: {array.get;array;3}",
                    "out": "Élément à l'index 3: 4"
                }
            },
            "isarray": {
                "desc": "Renvoie vrai si l'élément donné est un tableau, faux dans le cas contraire. Vous ne pouvez pas utiliser de noms de variable.",
                "example": {
                    "in": "{set;arr1;[c';est;un;tableau]}\n{set;arr2;ce n'est pas un tableau}\narr1: {array.isarray;{get;arr1}}\narr2: {array.isarray;{get;arr2}}",
                    "out": "arr1: vrai\narr2: faux"
                }
            },
            "join": {
                "desc": "Unit un tableau avec le `délimiteur` fourni.",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\n{array.join;array;,{space}}",
                    "out": "1, 2, 3, 4, 5"
                }
            },
            "length": {
                "desc": "Renvoie la longueur du tableau donné.",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\n{array.length;array}",
                    "out": "5"
                }
            },
            "map": {
                "desc": "Itère à travers un tableau en remplaçant l'élément actuel par une variable `i`. Si `varName` est spécifié, remplace l'élément actuel par celui-ci plutôt que par `i`.\n\nRenvoie un nouveau tableau où chaque élément est le résultat d'une itération.",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\n{array.map;array;{math;i;*;2}}",
                    "out": "[2;4;6;8;10]"
                }
            },
            "pop": {
                "desc": "Supprime et renvoie le dernier élément du tableau.",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\n{array.pop;array}\n{get;array}",
                    "out": "5\n[1;2;3;4]"
                }
            },
            "push": {
                "desc": "Pousse un élément à la fin d'un tableau. Renvoie ainsi le tableau modifié.",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\n{array.push;array;6}",
                    "out": "[1;2;3;4;5;6]"
                }
            },
            "set": {
                "desc": "Définit un élément dans le tableau à l' `index` spécifié",
                "example": {
                    "in": "{set;array;[1;2;3;8;5]}\n{get;array}\n{array.set;array;3;4}\n{get;array}",
                    "out": "[1;2;3;8;5]\n\n[1;2;3;4;5]"
                }
            },
            "shift": {
                "desc": "Supprime et renvoie le premier élément du tableau.",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\n{array.shift;array}\n{get;array}",
                    "out": "1\n[2;3;4;5]"
                }
            },
            "slice": {
                "desc": "Renvoie la partie du tableau incluant l'index de `début` et excluant l'index de `fin`. Si l'index de `fin` n'est pas spécifié, le définit par défaut à tous les éléments restants.",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\n{slice;array;3}\n{slice;array;2;4}",
                    "out": "[4;5]\n[3;4]\nout"
                }
            },
            "sort": {
                "desc": "Trie et rassemble un tableau, par défaut dans l'ordre d'ascension.\n\nSi la «fonction» est fournie, le tri se produira en fonction du résultat de l'exécution de ladite fonction. Cela va créer deux variables locales : `a` (ou `varNomUn`) et `b` (ou `varNomDeux`).\n\nLa fonction doit redevenir un nombre. Si le nombre est plus grand que 0, `a` sera considérer plus grand que `b`. Si le nombre est plus petit que 0, `b` sera considérer plus grand que `a`. Tout les résultats pour les nombres négatifs seront convertis en 0, où tout les nombres seront alors égaux.",
                "example": {
                    "in": "{set;array;[2;5;1;6;3;7]}\n{sort;array}\n{sort;array;{math;b;-;a}}",
                    "out": "[1;2;3;5;6;7]\n[7;6;5;3;2;1]"
                }
            },
            "splice": {
                "desc": "Départ sur la position `start`, supprimera les éléments `deleteCount` du tableau et ajouteront les `items` restants de la position.  Résultats des éléments supprimés.",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\n{array.splice;array;2;2;inserted;items}\n{get;array}",
                    "out": "[3;4;]\n[1;2;insérer;objets;5]"
                }
            },
            "split": {
                "desc": "Séparer le `text` par le `delimiter`, renvoyer au nouveau tableau.",
                "example": {
                    "in": "{array.split;Ce sera séparer par espaces;{space}}",
                    "out": "[Ce;sera;séparer;par;espaces]"
                }
            },
            "unshift": {
                "desc": "Insère `valeur` au début du tableau, et rencoie le tableau modifié.",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\n{array.unshift;array;0}",
                    "out": "[0;1;2;3;4;5]"
                }
            }
        },
        "channel": {
            "id": {
                "desc": "Renvoie l'ID du canal actuel ou spécifié",
                "example": {
                    "in": "{id.canal}",
                    "out": "[[exemple.générique.1id]]"
                }
            },
            "nsfw": {
                "desc": "Renvoie au canal courant ou spécifié qui est NSFW.",
                "example": {
                    "in": "{canal.nsfw}",
                    "out": "Faux"
                }
            },
            "name": {
                "desc": "Renvoie le nom du canal actuel ou spécifié",
                "example": {
                    "in": "{nom.canal;#general}",
                    "out": "général"
                }
            },
            "position": {
                "desc": "Renvoie la position du canal actuel ou spécifié ",
                "example": {
                    "in": "{position.canal}",
                    "out": "1"
                }
            },
            "topic": {
                "desc": "Renvoie le sujet du canal actuel ou spécifié (texte uniquement)",
                "example": {
                    "in": "{sujet.canal}",
                    "out": "Ceci est un exemple de sujet de canal"
                }
            },
            "type": {
                "desc": "Renvoie le type du canal actuel ou spécifié (renvoie \"textuel\" ou \"vocal\").",
                "example": {
                    "in": "{canal.type}",
                    "out": "texte"
                }
            }
        },
        "general": {
            "clean": {
                "desc": "Nettoie le texte fourni en diminuant tout les espace blanc.",
                "example": {
                    "in": "{nettoyer;  un\n\n                deux\n  \n\n    trois}",
                    "out": "un\ndeux\ntrois"
                }
            },
            "//": {
                "desc": "Spécifie une aire qui sera ignorer d'analyse.",
                "example": {
                    "in": "Ceci sera montré {//;Ceci ne le sera pas}",
                    "out": "Ceci sera montré"
                }
            },
            "get": {
                "desc": "Résultats des variables emmagasinées avec un nom supplémentaire. Les prefixes des variables pourront modifier",
                "example": {
                    "in": "{set;var;This is a variable.}\n{get;var}",
                    "out": "Ceci est une variable."
                }
            },
            "set": {
                "desc": "Sets the stored variable with the supplied name to the supplied value. Variable prefixes can modify the pool in which to set.",
                "example": {
                    "in": "{set;var;This is a variable.}\n{get;var}",
                    "out": "Ceci est une variable."
                }
            },
            "trim": {
                "desc": "Removes whitespace before and after the provided text. Consider using the {clean} tag to remove whitespace within the text.",
                "example": {
                    "in": "{trim;{space;5}Hello{space;5}}",
                    "out": "Bonjour"
                }
            },
            "void": {
                "desc": "Prevents output from within the subtag. Differs from comment as things are parsed, just not displayed.",
                "example": {
                    "in": "This will be shown {void;This won't be {set;~temp;but this will be set}} {get;~temp}",
                    "out": "This will be shown  but this will be set"
                }
            },
            "newline": {
                "desc": "Returns the specified number of newlines, defaulting to 1.",
                "example": {
                    "in": "One{newline;5}Two",
                    "out": "Un\n\n\n\nDeux"
                }
            },
            "space": {
                "desc": "Renvoie le nombre spécifié d'espaces, par défaut 1.",
                "example": {
                    "in": "Un{espace;5}Deux",
                    "out": "One     Two"
                }
            }
        },
        "guild": {
            "createdat": {
                "desc": "Returns when the current guild was created as a Unix timestamp (milliseconds).",
                "example": {
                    "in": "{guild.createdat}",
                    "out": "1466379030450"
                }
            },
            "channels": {
                "desc": "Renvoie les canaux de la guilde actuelle sous forme de tableau.",
                "example": {
                    "in": "{guild.channels}",
                    "out": "[[[generic.example.id1]];[[generic.example.id2]];[[generic.example.id3]]]"
                }
            },
            "icon": {
                "desc": "Renvoie l'URL de l'icône de la guilde actuelle.",
                "example": {
                    "in": "{guild.icon}",
                    "out": "https://cdn.discordapp.com/icons/194232473931087872/2e9d173fc1461ff9e4672cb8782978e7.png?size=512"
                }
            },
            "id": {
                "desc": "Renvoie l'ID de la guilde actuelle.",
                "example": {
                    "in": "{guilde.id}",
                    "out": "[[generic.example.id1]]"
                }
            },
            "name": {
                "desc": "Renvoie le nom de la guilde actuelle.",
                "example": {
                    "in": "{guilde.nom}",
                    "out": "Ville de Cat"
                }
            },
            "owner": {
                "desc": "Renvoie l'ID du propriétaire de la guilde.",
                "example": {
                    "in": "{guilde.propriétaire}",
                    "out": "[[generic.example.id1]]"
                }
            },
            "region": {
                "desc": "Renvoie la région de la guilde actuelle.",
                "example": {
                    "in": "{guild.region}",
                    "out": "us-west"
                }
            },
            "roles": {
                "desc": "Renvoie un tableau des rôles de la guilde actuelle.",
                "example": {
                    "in": "{guild.roles}",
                    "out": "[[[generic.example.id1]];[[generic.example.id2]];[[generic.example.id3]]]"
                }
            }
        },
        "logic": {
            "if": {
                "desc": "Si la `valeur` est égale à `vrai` ou `1`, ça exécute la partie `alors`.\nSi la `valeur` est égale à `faux` ou `0`, ça exécute la partie `sinon`.\nAutrement, ça affiche une erreur.\n\nUtilisez ceci avec le {logique} tag.",
                "example": {
                    "in": "{si;vrai;Ceci sera montré.;Ceci ne le sera pas.}",
                    "out": "Ceci sera montré."
                }
            },
            "logic": {
                "desc": "Does logical operators on the `augend` and `operands`, returning `true` or `false`.\n\nEquivalence Operators:\n - `==` - equal\n - `!=` - not equal\n - `<` - less than\n - `<=` - less than or equal\n - `>` - greater than\n - `>=` - greater than or equal\n - `startswith` - the augend starts with the operand\n - `endswith` - the augend ends with the operand\n - `includes` - the augend includes the operand\n\nLogical Operators:\n - `&&` - returns true if the augend and operand are both true\n - `||` - returns true if either the augend or operand are true\n - `XOR` - returns true if only one of the augend and operand are true (not both)\n\nOther Operators:\n - `!` - inverts the next operand (true becomes false, etc.)",
                "example": {
                    "in": "{logic;5;==;6}\n{logic;5;!=;6;&&;5;>;6}\n{logic;5;>=;6;||;5;<;6}\n{logic;5;<=;6;xor;true}\n{logic;1234;startswith;12}\n{logic;1234;endswith;34}\n{logic;1234;includes;23}\n{logic;!;true}\n{logic;!;5;!=;5}",
                    "out": "faux\nfaux\nvrai\nfaux\nvrai\nvrai\nvrai\nfaux\nvrai"
                }
            }
        },
        "math": {
            "abs": {
                "desc": "Renvoie la valeur absolue du nombre fourni (pas de negatifs).",
                "example": {
                    "in": "{math.abs;-3523}",
                    "out": "3523"
                }
            },
            "base": {
                "desc": "Parses the `number` using the provided base `origin` (defaulting to 10), and converts it to base `radix`.",
                "example": {
                    "in": "{math.base;FA;16;10}",
                    "out": "250"
                }
            },
            "ceil": {
                "desc": "Rounds the provided decimal up.",
                "example": {
                    "in": "{math.ceil;1.25}",
                    "out": "2"
                }
            },
            "floor": {
                "desc": "Rounds the provided decimal down.",
                "example": {
                    "in": "{math.floor;1.75}",
                    "out": "1"
                }
            },
            "math": {
                "desc": "Calculates the value of the provided expression using the following operators:\n\n - `^` - exponents\n - `/` - division\n - `*` - multiplication\n - `+` - addition\n - `-` - subtraction\n - `&` - bitwise AND\n - `|` - bitwise OR\n - `XOR` - bitwise XOR\n\nOperators are executed using the Order of Operations (Brackets, Exponents, Division, Multiplication, Addition, Subtraction, Bitwise).\n\nIf an operator isn't specified, it uses the last-used operator (defaulting to addition).\n\nBrackets would be achieved by using another nested {math} tag.\n\nIf an `operand` or `augend` cannot be parsed as a number, a variable with the same name will be retrieved. If the retrieved variable is also not a number, throws an error.",
                "example": {
                    "in": "Equation: 1 + (2^2 * 3) - (4 / 5)\nAnswer: {math;1;+;2;^;2;*;3;-;4;/;5}\n\nEquation: 4 + 6 + 8\nAnswer: {math;4;6;8}\n\nEquation: 01001010 | 11000100 & 11111011\n{trim;{set;bin1;{math.base;01001010;2;10}}\n{set;bin2;{math.base;11000100;2;10}}\n{set;bin3;{math.base;11111011;2;10}}\nAnswer: {base;{math;bin1;|;bin2;|;bin3};10;2}}",
                    "out": "Equation: 1 + (2^2 * 3) - (4 / 5)\nAnswer: 12.2\n\nEquation: 4 + 6 + 8\nAnswer: 18\n\nEquation: 01001010 | 11000100 & 11111011\nAnswer: 11111111"
                }
            },
            "parsefloat": {
                "desc": "Attempts to parse the given text as a decimal.",
                "example": {
                    "in": "{math.parsefloat;2.5}\n{math.parsefloat;not a number}",
                    "out": "2.5\nNaN"
                }
            },
            "parseint": {
                "desc": "Attempts to parse the given text as an integer.",
                "example": {
                    "in": "{math.parseint;2.5}\n{math.parseint;not a number}",
                    "out": "2\nNaN"
                }
            },
            "randint": {
                "desc": "Returns a random integer between the provided range. `min` defaults to `0`",
                "example": {
                    "in": "One: {randint;5}, two: {randint;10;20}",
                    "out": "One: 2, two: 17"
                }
            },
            "round": {
                "desc": "Rounds the given `number` to the specified decimal `places`, defaulting to 0.",
                "example": {
                    "in": "{math.round;5.125}\n{math.round;5.125;1}\n{math.round;5.125;2}",
                    "out": "5\n5.1\n5.13"
                }
            }
        },
        "message": {
            "id": {
                "desc": "Renvoie l'ID du message contenant la commande",
                "example": {
                    "in": "{message.id}",
                    "out": "[[generic.example.id1]]"
                }
            }
        },
        "role": {
            "color": {
                "desc": "Renvoie la couleur du rôle spécifié en hexadécimales.",
                "example": {
                    "in": "#{role.color;coolrole}",
                    "out": "#2ECC71"
                }
            },
            "id": {
                "desc": "Renvoie l'ID du rôle spécifié.",
                "example": {
                    "in": "{role.id;coolrole}",
                    "out": "[[generic.example.id1]]"
                }
            },
            "mention": {
                "desc": "Renvoie une mention du rôle spécifié.",
                "example": {
                    "in": "{role.mention;coolrole}",
                    "out": "@coolrole"
                }
            },
            "name": {
                "desc": "Renvoie le nom du rôle spécifié.",
                "example": {
                    "in": "{role.name;coolrole}",
                    "out": "coolrole"
                }
            },
            "position": {
                "desc": "Renvoie la position du rôle spécifié.",
                "example": {
                    "in": "{role.position;coolrole}",
                    "out": "5"
                }
            }
        },
        "user": {
            "avatar": {
                "desc": "Renvoie l'URL de l'avatar de l'utilisateur spécifié, par défaut celle de l'utilisateur.",
                "example": {
                    "in": "{user.avatar}",
                    "out": "https://cdn.discordapp.com/avatars/[[generic.example.id1]]/avatarhash.png"
                }
            },
            "createdat": {
                "desc": "Returns the date that the specified user, defaulting to the executing user, was created as a Unix timestamp (milliseconds).",
                "example": {
                    "in": "{user.createdat}",
                    "out": "1444710446104"
                }
            },
            "discrim": {
                "desc": "Renvoie le discriminant de l'utilisateur spécifié, par défaut celui de l'utilisateur.",
                "example": {
                    "in": "{user.discrim}",
                    "out": "1111"
                }
            },
            "fullname": {
                "desc": "Returns the name + discriminator of the specified user, defaulting to the executing user.",
                "example": {
                    "in": "{user.fullname}",
                    "out": "person#1111"
                }
            },
            "game": {
                "desc": "Renvoie le jeu auquel l'utilisateur spécifié est en train de jouer, par défaut celui de l'utilisateur.\nSi l'utilisateur n'est pas en train de jouer à un jeu, ça ne renvoie rien.",
                "example": {
                    "in": "{utilisateur.jeu}",
                    "out": "avec BBTag!"
                }
            },
            "id": {
                "desc": "Returns the ID of the specified user, defaulting to the executing user.",
                "example": {
                    "in": "{user.id}",
                    "out": "[[generic.example.id1]]"
                }
            },
            "joinedat": {
                "desc": "Returns the date that the specified user, defaulting to the executing user, joined the current guild as a Unix timestamp (milliseconds).",
                "example": {
                    "in": "{user.joinedat}",
                    "out": "1466379030499"
                }
            },
            "mention": {
                "desc": "Mentions the specified user, defaulting to the executing user.",
                "example": {
                    "in": "{user.mention}",
                    "out": "@personne"
                }
            },
            "name": {
                "desc": "Returns the name of the specified user, defaulting to the executing user.",
                "example": {
                    "in": "{user.name}",
                    "out": "personne"
                }
            },
            "nick": {
                "desc": "Returns the nickname of the specified user, defaulting to the executing user.",
                "example": {
                    "in": "{user.nick}",
                    "out": "CoolNickname"
                }
            },
            "roles": {
                "desc": "Returns an array of the roles the specified user has, defaulting to the executing user.",
                "example": {
                    "in": "{user.roles}",
                    "out": "[[[generic.example.id1]];[[generic.example.id2]];[[generic.example.id3]]]"
                }
            },
            "setnick": {
                "desc": "Sets the nickname of the specified user, defaulting to the executing user.",
                "example": {
                    "in": "{user.setnick;EvenCoolerNickname}",
                    "out": "(the nickname was set)"
                }
            },
            "status": {
                "desc": "Renvoie le statut de l'utilisateur spécifié, par défaut celui de l'utilisateur. Peut renvoyer \"en ligne\", \"absent\", \"npd\", ou \"hors-ligne\".",
                "example": {
                    "in": "{user.status}",
                    "out": "en ligne"
                }
            }
        }
    }
}<commit_msg>Update fr.json (POEditor.com)<commit_after>{
    "specs": {
        "lang": "Français",
        "contributors": [
            "231499325123854336",
            "170844396877512704",
            "145577223452229632"
        ]
    },
    "comments": [
        "Ceci est un fichier local (de traduction) pour blargbot.",
        "Afin d'y contribuer, merci de respecter les règles suivantes:",
        "1. Ne changez pas les \"templates\" notées: {{nom}}.",
        "2. Ne modifiez pas les \"templates\" notées: \"[[path.to.key]]\"",
        "3. Toutes les commandes doivent contenir une propriété \"info\" et \"utilisation\".",
        "4. Pour les résultats aléatoires, les \"terms\" sont placés dans un \"context\" '.list'. Vous avez le droit d'en ajouter.",
        "5. Utilisez la même ponctuation que dans la référence.",
        "6. Pour la gloire, les femmes et l'argent, ajoutez votre discord userID dans une nouvelle ligne juste ci-dessus.",
        "7. Pas d'bêtises.",
        "",
        "Bises, NegativeCoffee."
    ],
    "generic": {
        "output": "Résultat:\n{{output}}",
        "nooutput": "Aucun résultat...",
        "queryexpire": "Cette requête expirera dans {{length}} minutes.",
        "resolveuser": {
            "nousers": "Aucun utilisateur trouvé.",
            "pickuser": "{{length}} utilisateurs trouvés! Veuillez en choisir un de la liste."
        },
        "resolverole": {
            "noroles": "Aucun rôle trouvé.",
            "pickrole": "{{length}} rôles trouvés! Veuillez en choisir un de la liste."
        },
        "resolvechannel": {
            "nochannels": "Aucun canal trouvé.",
            "pickchannel": "{{length}} canaux trouvés! Veuillez en choisir un de la liste."
        },
        "edited": "édité",
        "created": "créé",
        "deleted": "supprimé",
        "menu": {
            "choices": "Page {{page}}/{{max}}"
        },
        "nochange": "Aucun changement.",
        "commandhelp": "**Command Name**: **__{{name}}__**\n\n**__Usage__**\n```{{usage}}```\n**__Info__**\n{{info}}\n\n**__Aliases__**\n{{aliases}}",
        "example": {
            "id1": "111111111111111111",
            "id2": "222222222222222222",
            "id3": "333333333333333333"
        },
        "test": "[[[generic.example.id1]];[[generic.example.id2]];[[generic.example.id3]]]"
    },
    "menu": {
        "cancel": {
            "name": "Annuler",
            "description": "Fermer ce menu."
        },
        "confirm": {
            "name": "Confirmer",
            "description": "Veuillez confirmer ce menu."
        }
    },
    "emote": {
        "check": ":white_check_mark:",
        "x": ":x:",
        "okhand": ":ok_hand:"
    },
    "error": {
        "keyundef": "Aucune entrée locale de ce type n'a été trouvée: '{{key}}'.",
        "memberundef": "Aucun membre de ce nom n'a été trouvé: '{{member}}'",
        "userundef": "Aucun utilisateur de ce nom n'a été trouvé: '{{user}}'.",
        "channelundef": "Aucun canal de ce nom n'a été trouvé: '{{channel}}'.",
        "roleundef": "Aucun rôle de ce nom n'a été trouvé: '{{role}}'.",
        "pleasereport": "Si vous pensez qu'il s'agit d'une erreur, veuillez la signaler (en anglais)!",
        "generic": "Une erreur s'est produite!\n```\n{{message}}\n```\n[error.pleasereport]]",
        "messagetoolong": "Oh-oh! J'ai tenté d'envoyer un message qui était trop long.\n[[error.pleasereport]]",
        "notenoughparams": "Pas assez de paramètres. Utilisez `{{prefix}}help {{name}}` pour plus de détails.\n\nIl fallait `{{expected}}` parameters, mais j'ai reçu `{{received}}` à la place.",
        "tag": {
            "notfound": "Le tag `{{tag}}` n'existe pas.",
            "toomanyargs": "Trop d'arguments! (r:{{received}} e:{{expected}})",
            "toofewargs": "Pas assez d'arguments! (r:{{received}} e:{{expected}})",
            "isnan": "'{{arg}}' s'attend à être un nombre, mais reçois une '{{value}}'",
            "maxlessthanmin": "Le maximum doit être supérieur au minimum",
            "ccommandonly": "'{{tag}}' ne peut être utilisé qu'avec les ccommands",
            "authorstaff": "L'auteur {{author}} doit être un membre du staff pour utiliser '{{tag}}'",
            "noperms": "Il manque au bot la permission '{{perm}}' requise par le tag '{{tag}}'",
            "toolow": "Le bot ne peut '{{tag}}' car son rang est inférieur à celui de '{{target}}'",
            "unclosed": "Accolade d'ouverture solitaire [{{column}}:{{row}}]",
            "unopened": "Accolade de fermeture solitaire [{{column}}:{{row}}]",
            "invalidradix": "La base doit être comprise entre 2 et 36, mais vaut '{{radix}}'",
            "notanarray": "La variable '{{name}}' n'est pas un tableau (reçu: '{{value}}').",
            "notbool": "La variable '{{name}}' n'est pas un booléen (reçu: '{{value}}')."
        },
        "inputtoolong": "Your input was too long! The maximum characters for this was {{max}}, but you gave {{length}} characters."
    },
    "command": {
        "general": {
            "ping": {
                "info": "Pong!\nDétermine la latence des commandes.",
                "usage": "ping",
                "randmsg": [
                    "Tu veux du gâteau ?",
                    "Un biscuit ?",
                    "Une tasse de thé ?",
                    "Tu veux un petit café ?",
                    "J'ai faim.",
                    "Un grand verre d'eau avec une paille, s'il vous plaît.",
                    "J'ai des P'tits Lu.",
                    "Tu veux un cookie?",
                    "J'ai soif.",
                    "Wouaf.",
                    "Miaou.",
                    "..."
                ],
                "final": "Pong! ({{time}}ms)"
            },
            "brainfuck": {
                "info": "Exécute le code \"brainfuck\".",
                "usage": "brainfuck <code>",
                "flags": {
                    "p": "Montre une liste de pointeurs après exécution.",
                    "i": "Spécifie les données apportées pour l'opérateur `,`."
                }
            },
            "cat": {
                "info": "Affiche une photo de chat.",
                "usage": "chat"
            },
            "ship": {
                "info": "Génère un surnom pour deux utilisateurs.",
                "usage": "ship <utilisateur1> <utilisateur2>",
                "final": "Votre surnom est **{{name}}**!",
                "notenough": "Vous devez choisir deux membres!"
            },
            "tag": {
                "info": "Les tags sont un système de commandes publiques que tout le monde peut créer ou utiliser, écrits avec le langage BBTag.\n\n**Sous-commandes**:\n{{subcommands}}\n\nPour plus d'informations sur une sous-commande, utilisez `b!t help <sous-command>`.\nPour plus d'informations sur le langage BBTag, visitez <https://blargbot.xyz/tags>.\nEn créant un tag, vous certifiez approuver les conditions d'utilisation. (<https://blargbot.xyz/tags/tos> - en anglais.)",
                "usage": "tag <nom | sous-commande> [arguments]",
                "dontown": "[[emote.x]] Vous ne possédez pas ce tag!",
                "alreadyexists": "[[emote.x]] Un tag avec ce nom existe déjà!",
                "notag": "[[emote.x]] Aucun tag avec ce nom n'existe.",
                "tagset": "[[emote.check]] Tag `{{name}}` {{process}}!",
                "tagrename": "[[emote.check]] Le tag `{{old}}` a été renommé en `{{new}}`.",
                "raw": "Le code pour {{name}} est:\n```{{code}}```",
                "testoutput": "Résultat:\n\n{{output}}",
                "subcommand": {
                    "set": {
                        "usage": "tag set <nom> <contenu>",
                        "info": "Crée ou modifie un tag avec un nom et un contenu donné. Ne remplacera aucun tag créé par quelqu'un d'autre."
                    },
                    "delete": {
                        "usage": "tag delete <nom>",
                        "info": "Supprime un tag que vous avez créé."
                    },
                    "rename": {
                        "usage": "tag rename <nom> <nouveau_nom>",
                        "info": "Renomme un tag que vous avez créé."
                    },
                    "raw": {
                        "usage": "tag raw <nom>",
                        "info": "Renvoie le code d'un tag."
                    },
                    "info": {
                        "usage": "tag info <nom>",
                        "info": "Affiche des informations à propos d'un tag."
                    },
                    "transfer": {
                        "usage": "tag transfer <nom> <utilisateur>",
                        "info": "Transfère le tag vers un utilisateur. Les variables ne seront pas transférées."
                    },
                    "top": {
                        "usage": "tag top",
                        "info": "Affiche des tags qui ont été les plus favorisés."
                    },
                    "author": {
                        "usage": "tag author <nom>",
                        "info": "Affiche l'auteur d'un tag."
                    },
                    "search": {
                        "usage": "tag search <query>",
                        "info": "Recherche un tag avec le nom contenant votre query"
                    },
                    "list": {
                        "usage": "tag list [@user]",
                        "info": "Liste tous les tags, ou optionnellement tous les tags créés par un utilisateur spécifique."
                    },
                    "favorite": {
                        "usage": "tag favorite <nom>",
                        "info": "Favorise le tag spécifié."
                    },
                    "report": {
                        "usage": "tag report <nom>",
                        "info": "Signale un tag pour avoir violer les ToS. Merci de l'utiliser avec responsabilité."
                    },
                    "test": {
                        "usage": "tag test <code>",
                        "info": "Exécute le code donné dans un environnement d'essai."
                    },
                    "help": {
                        "usage": "tag aide [sous-commande]",
                        "info": "Affiche ceci !"
                    },
                    "docs": {
                        "usage": "documents tag [subtag]",
                        "info": "Donne un lien vers la documentation BBTag ou donne des informations à propos d'un sous-tag spécifique."
                    },
                    "setdesc": {
                        "usage": "",
                        "info": "info"
                    },
                    "setusage": {
                        "usage": "",
                        "info": "info"
                    }
                },
                "subcommandnotfound": "Aucune sous-commande trouvée avec le nom `{{subcommand}}`",
                "transferprompt": "{{target}}, {{user}} wants to transfer ownership of the tag `{{tag}}` to you. Do you accept?\nThis will not transfer variables.",
                "nobots": "[[emote.x]] You cannot transfer a tag to a bot!",
                "transfercancelled": "[[emote.x]] The transfer has been cancelled.",
                "transfercomplete": "[[emote.check]] {{user}} now owns the tag `{{tag}}`.",
                "taginfo": "__**Tag | {{name}}**__\nAuthor: **{{author}}**\nLast Modified: **{{lastModified}}**\nIt has been used a total of **{{uses}} times**!\nIt has been favorited **{{favourites}} times**!\n\n{{desc}}",
                "descupdate": "La description pour `{{tag}}` a été mise à jour.",
                "descreset": "La description pour `{{tag}}` a été réinitialisée.",
                "subcommandconflict": "Vous ne pouvez pas utiliser le nom `{{name}}` parce qu'il y a une sous-commande qui porte ce nom!",
                "toptagformat": "{{index}}. **{{name}}** ({{author}})\n    - Favorites: {{favourites}} Uses: {{uses}}",
                "toptags": "Voici les 10 meilleurs tags!\n\n{{tags}}",
                "tagauthor": "Le tag `{{tag}}` a été créé par **{{author}}**.",
                "favouriteadd": "The tag `{{tag}}` has been added to your favorites list.",
                "favouriteremove": "The tag `{{tag}}` has been removed from your favorites list.",
                "favourites": "You have {{count}} tags on your favorites list.\n```fix\n{{tags}}\n```"
            },
            "ccommand": {
                "info": "Les \"ccommands\" sont un système de commandes personnalisées que les modérateurs peuvent créer pour leurs utilisateurs en utilisant le langage BBTag.\n\n**Sous-commandes**\n{{subcommands}}\n\nPour plus d'informations à propos d'une sous-commande, faites `b!t help <sous-commande>`\nPour plus d'informations à propos des BBTag, visitez <https://blargbot.xyz/tags>.",
                "usage": "cc <sous-commande> [args]",
                "subcommand": {
                    "set": {
                        "usage": "cc set <nom> <contenu>",
                        "info": "Crée ou modifie une commande personnalisée avec le nom et le contenu donnés. Ne remplacera aucun tag fait par quelqu'un d'autre."
                    },
                    "delete": {
                        "usage": "cc delete <nom>",
                        "info": "Supprime une commande personnalisée."
                    },
                    "rename": {
                        "usage": "cc rename <nom> <nouveauNom>",
                        "info": "Renomme une commande personnalisée."
                    },
                    "author": {
                        "usage": "cc author <nom>",
                        "info": "Renvoie le nom de l'auteur d'une commande personnalisée."
                    },
                    "transfer": {
                        "usage": "cc transfer <nom> <utilisateur>",
                        "info": "Transfère les droits de propriété d'une commande personnalisée vers quelqu'un d'autre. Doit être consensuel."
                    },
                    "list": {
                        "usage": "cc list",
                        "info": "Liste les commandes personnalisées de la guilde."
                    },
                    "test": {
                        "usage": "cc test",
                        "info": "Exécute le code dans le contexte de votre compte."
                    },
                    "help": {
                        "usage": "cc help [sous-commande]",
                        "info": "Affiche ceci !"
                    }
                },
                "dontown": "[[emote.x]] You don't own that custom command!",
                "notag": "[[emote.x]] There is no custom command with that name.",
                "tagset": "[[emote.check]] Custom command `{{name}}` {{process}}!",
                "tagrename": "[[emote.check]] The custom command `{{old}}` has been renamed to `{{new}}`",
                "raw": "Le code pour {{name}} est :\\n```{{code}}```",
                "alreadyexists": "Une commande personnalisée avec ce nom existe déjà.",
                "testoutput": "Test Output:\\n\\n{{output}}"
            },
            "locale": {
                "info": "Sets what locale messages will be sent in.",
                "usage": "locale",
                "set": "Your locale has been set to {{locale}}!",
                "list": "Your current locale is: {{current}}\n\nPlease select which locale you want to use."
            },
            "tokenify": {
                "info": "",
                "usage": ""
            }
        },
        "image": {
            "cat": {
                "info": "Vous montre un adorable, très doux et précieux chaton.",
                "usage": "chat"
            }
        },
        "admin": {
            "setup": {
                "staff": {
                    "setrole": "The staff roles have been updated.",
                    "rolequery": "Select the roles that will be considered moderator roles. Users with these roles will be able to use admin commands."
                },
                "info": "Configures various settings.",
                "usage": "setup <subcommand>",
                "subcommand": {
                    "staffuser": {
                        "usage": "mod user <add | remove> <user>...",
                        "info": "Adds or removes the specified user(s) to the staff list."
                    },
                    "staffrole": {
                        "usage": "mod user role",
                        "info": "Brings up a dialog to select or deselect roles."
                    },
                    "mute": {
                        "usage": "",
                        "info": ""
                    },
                    "announcement": {
                        "usage": "",
                        "info": ""
                    }
                },
                "mute": {
                    "setrole": "The muted role has been updated.",
                    "rolequery": "Select the muted role."
                },
                "announce": {
                    "set": ""
                }
            }
        }
    },
    "tag": {
        "comment": {
            "desc": "Spécifie une zone qui sera ignorée durant l'analyse.",
            "example": {
                "in": "Ce texte apparaîtra. {{//; Celui-ci n'apparaîtra pas.}.",
                "out": "Ce texte apparaîtra."
            }
        },
        "void": {
            "desc": "Prévient l'apparition du résultat. Ce tag est différent des commentaires car tout est exécuté, juste pas affiché. ",
            "example": {
                "in": "Ce texte apparaîtra {void;Celui-ci n'apparaîtra pas. {set;~temp;et cette variable sera assignée.}} {get;~temp}",
                "out": "Ce texte apparaîtra et cette variable sera assignée."
            }
        },
        "randint": {
            "desc": "Renvoie un entier aléatoire compris entre deux nombres. `min` vaut 0 par défaut.",
            "example": {
                "in": "Un: {randint;5}, deux: {randint;10;20}",
                "out": "Un: 2, Deux: 17"
            }
        },
        "array": {
            "filter": {
                "desc": "Itère à travers un tableau en modifiant l'élément à une variable locale `i`. Si `varName` est spécifiée, remplace l'élément par cette variable à la place de `i`.\n\nRenvoie un nouveau tableau qui contient seulement les éléments où le résultat de l'itération était `vrai` ou `1`",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\n{filter;array;{logic;{get;i};<;3}}",
                    "out": "[1;2]"
                }
            },
            "foreach": {
                "desc": "Itère à travers un tableau en remplaçant l'élément actuel par la variable `i`. Si `varName` est donné, remplace l'élément actuel par celui-ci à la place de `i`.",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\n{array.foreach;array;Element:{get;i}{newline}}",
                    "out": "Elément:1\nElément:2\nElément:3\nElément:4\nElément:5"
                }
            },
            "get": {
                "desc": "Obtient l'élément d'un tableau à la position `index`",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\nÉlément à l'index 3: {array.get;array;3}",
                    "out": "Élément à l'index 3: 4"
                }
            },
            "isarray": {
                "desc": "Renvoie vrai si l'élément donné est un tableau, faux dans le cas contraire. Vous ne pouvez pas utiliser de noms de variable.",
                "example": {
                    "in": "{set;arr1;[c';est;un;tableau]}\n{set;arr2;ce n'est pas un tableau}\narr1: {array.isarray;{get;arr1}}\narr2: {array.isarray;{get;arr2}}",
                    "out": "arr1: vrai\narr2: faux"
                }
            },
            "join": {
                "desc": "Unit un tableau avec le `délimiteur` fourni.",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\n{array.join;array;,{space}}",
                    "out": "1, 2, 3, 4, 5"
                }
            },
            "length": {
                "desc": "Renvoie la longueur du tableau donné.",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\n{array.length;array}",
                    "out": "5"
                }
            },
            "map": {
                "desc": "Itère à travers un tableau en remplaçant l'élément actuel par une variable `i`. Si `varName` est spécifié, remplace l'élément actuel par celui-ci plutôt que par `i`.\n\nRenvoie un nouveau tableau où chaque élément est le résultat d'une itération.",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\n{array.map;array;{math;i;*;2}}",
                    "out": "[2;4;6;8;10]"
                }
            },
            "pop": {
                "desc": "Supprime et renvoie le dernier élément du tableau.",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\n{array.pop;array}\n{get;array}",
                    "out": "5\n[1;2;3;4]"
                }
            },
            "push": {
                "desc": "Pousse un élément à la fin d'un tableau. Renvoie ainsi le tableau modifié.",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\n{array.push;array;6}",
                    "out": "[1;2;3;4;5;6]"
                }
            },
            "set": {
                "desc": "Définit un élément dans le tableau à l' `index` spécifié",
                "example": {
                    "in": "{set;array;[1;2;3;8;5]}\n{get;array}\n{array.set;array;3;4}\n{get;array}",
                    "out": "[1;2;3;8;5]\n\n[1;2;3;4;5]"
                }
            },
            "shift": {
                "desc": "Supprime et renvoie le premier élément du tableau.",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\n{array.shift;array}\n{get;array}",
                    "out": "1\n[2;3;4;5]"
                }
            },
            "slice": {
                "desc": "Renvoie la partie du tableau incluant l'index de `début` et excluant l'index de `fin`. Si l'index de `fin` n'est pas spécifié, le définit par défaut à tous les éléments restants.",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\n{slice;array;3}\n{slice;array;2;4}",
                    "out": "[4;5]\n[3;4]\nout"
                }
            },
            "sort": {
                "desc": "Trie et rassemble un tableau, par défaut dans l'ordre d'ascension.\n\nSi la «fonction» est fournie, le tri se produira en fonction du résultat de l'exécution de ladite fonction. Cela va créer deux variables locales : `a` (ou `varNomUn`) et `b` (ou `varNomDeux`).\n\nLa fonction doit redevenir un nombre. Si le nombre est plus grand que 0, `a` sera considérer plus grand que `b`. Si le nombre est plus petit que 0, `b` sera considérer plus grand que `a`. Tout les résultats pour les nombres négatifs seront convertis en 0, où tout les nombres seront alors égaux.",
                "example": {
                    "in": "{set;array;[2;5;1;6;3;7]}\n{sort;array}\n{sort;array;{math;b;-;a}}",
                    "out": "[1;2;3;5;6;7]\n[7;6;5;3;2;1]"
                }
            },
            "splice": {
                "desc": "Départ sur la position `start`, supprimera les éléments `deleteCount` du tableau et ajouteront les `items` restants de la position.  Résultats des éléments supprimés.",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\n{array.splice;array;2;2;inserted;items}\n{get;array}",
                    "out": "[3;4;]\n[1;2;insérer;objets;5]"
                }
            },
            "split": {
                "desc": "Séparer le `text` par le `delimiter`, renvoyer au nouveau tableau.",
                "example": {
                    "in": "{array.split;Ce sera séparer par espaces;{space}}",
                    "out": "[Ce;sera;séparer;par;espaces]"
                }
            },
            "unshift": {
                "desc": "Insère `valeur` au début du tableau, et rencoie le tableau modifié.",
                "example": {
                    "in": "{set;array;[1;2;3;4;5]}\n{array.unshift;array;0}",
                    "out": "[0;1;2;3;4;5]"
                }
            }
        },
        "channel": {
            "id": {
                "desc": "Renvoie l'ID du canal actuel ou spécifié",
                "example": {
                    "in": "{id.canal}",
                    "out": "[[exemple.générique.1id]]"
                }
            },
            "nsfw": {
                "desc": "Renvoie au canal courant ou spécifié qui est NSFW.",
                "example": {
                    "in": "{canal.nsfw}",
                    "out": "Faux"
                }
            },
            "name": {
                "desc": "Renvoie le nom du canal actuel ou spécifié",
                "example": {
                    "in": "{nom.canal;#general}",
                    "out": "général"
                }
            },
            "position": {
                "desc": "Renvoie la position du canal actuel ou spécifié ",
                "example": {
                    "in": "{position.canal}",
                    "out": "1"
                }
            },
            "topic": {
                "desc": "Renvoie le sujet du canal actuel ou spécifié (texte uniquement)",
                "example": {
                    "in": "{sujet.canal}",
                    "out": "Ceci est un exemple de sujet de canal"
                }
            },
            "type": {
                "desc": "Renvoie le type du canal actuel ou spécifié (renvoie \"textuel\" ou \"vocal\").",
                "example": {
                    "in": "{canal.type}",
                    "out": "texte"
                }
            }
        },
        "general": {
            "clean": {
                "desc": "Nettoie le texte fourni en diminuant tout les espace blanc.",
                "example": {
                    "in": "{nettoyer;  un\n\n                deux\n  \n\n    trois}",
                    "out": "un\ndeux\ntrois"
                }
            },
            "//": {
                "desc": "Spécifie une aire qui sera ignorer d'analyse.",
                "example": {
                    "in": "Ceci sera montré {//;Ceci ne le sera pas}",
                    "out": "Ceci sera montré"
                }
            },
            "get": {
                "desc": "Renvoie la variable mémorisée avec le nom donné. Les préfixes de la variable peuvent modifier la zone où on la cherche.",
                "example": {
                    "in": "{set;var;This is a variable.}\n{get;var}",
                    "out": "Ceci est une variable."
                }
            },
            "set": {
                "desc": "Sets the stored variable with the supplied name to the supplied value. Variable prefixes can modify the pool in which to set.",
                "example": {
                    "in": "{set;var;This is a variable.}\n{get;var}",
                    "out": "Ceci est une variable."
                }
            },
            "trim": {
                "desc": "Removes whitespace before and after the provided text. Consider using the {clean} tag to remove whitespace within the text.",
                "example": {
                    "in": "{trim;{space;5}Hello{space;5}}",
                    "out": "Bonjour"
                }
            },
            "void": {
                "desc": "Prevents output from within the subtag. Differs from comment as things are parsed, just not displayed.",
                "example": {
                    "in": "This will be shown {void;This won't be {set;~temp;but this will be set}} {get;~temp}",
                    "out": "Ce sera afficher mais cela sera défini"
                }
            },
            "newline": {
                "desc": "Returns the specified number of newlines, defaulting to 1.",
                "example": {
                    "in": "One{newline;5}Two",
                    "out": "Un\n\n\n\nDeux"
                }
            },
            "space": {
                "desc": "Renvoie le nombre spécifié d'espaces, par défaut 1.",
                "example": {
                    "in": "Un{espace;5}Deux",
                    "out": "One     Two"
                }
            }
        },
        "guild": {
            "createdat": {
                "desc": "Returns when the current guild was created as a Unix timestamp (milliseconds).",
                "example": {
                    "in": "{datcreation.guilde}",
                    "out": "1466379030450"
                }
            },
            "channels": {
                "desc": "Renvoie les canaux de la guilde actuelle sous forme de tableau.",
                "example": {
                    "in": "{canals.guilde}",
                    "out": "[[[generic.example.id1]];[[generic.example.id2]];[[generic.example.id3]]]"
                }
            },
            "icon": {
                "desc": "Renvoie l'URL de l'icône de la guilde actuelle.",
                "example": {
                    "in": "{icone.guilde}",
                    "out": "https://cdn.discordapp.com/icons/194232473931087872/2e9d173fc1461ff9e4672cb8782978e7.png?size=512"
                }
            },
            "id": {
                "desc": "Renvoie l'ID de la guilde actuelle.",
                "example": {
                    "in": "{guilde.id}",
                    "out": "[[generic.example.id1]]"
                }
            },
            "name": {
                "desc": "Renvoie le nom de la guilde actuelle.",
                "example": {
                    "in": "{guilde.nom}",
                    "out": "<NAME>"
                }
            },
            "owner": {
                "desc": "Renvoie l'ID du propriétaire de la guilde.",
                "example": {
                    "in": "{guilde.propriétaire}",
                    "out": "[[generic.example.id1]]"
                }
            },
            "region": {
                "desc": "Renvoie la région de la guilde actuelle.",
                "example": {
                    "in": "{guild.region}",
                    "out": "us-ouest"
                }
            },
            "roles": {
                "desc": "Renvoie un tableau des rôles de la guilde actuelle.",
                "example": {
                    "in": "{roles.guilde}",
                    "out": "[[[generic.example.id1]];[[generic.example.id2]];[[generic.example.id3]]]"
                }
            }
        },
        "logic": {
            "if": {
                "desc": "Si la `valeur` est égale à `vrai` ou `1`, ça exécute la partie `alors`.\nSi la `valeur` est égale à `faux` ou `0`, ça exécute la partie `sinon`.\nAutrement, ça affiche une erreur.\n\nUtilisez ceci avec le {logique} tag.",
                "example": {
                    "in": "{si;vrai;Ceci sera montré.;Ceci ne le sera pas.}",
                    "out": "Ceci sera montré."
                }
            },
            "logic": {
                "desc": "Does logical operators on the `augend` and `operands`, returning `true` or `false`.\n\nEquivalence Operators:\n - `==` - equal\n - `!=` - not equal\n - `<` - less than\n - `<=` - less than or equal\n - `>` - greater than\n - `>=` - greater than or equal\n - `startswith` - the augend starts with the operand\n - `endswith` - the augend ends with the operand\n - `includes` - the augend includes the operand\n\nLogical Operators:\n - `&&` - returns true if the augend and operand are both true\n - `||` - returns true if either the augend or operand are true\n - `XOR` - returns true if only one of the augend and operand are true (not both)\n\nOther Operators:\n - `!` - inverts the next operand (true becomes false, etc.)",
                "example": {
                    "in": "{logic;5;==;6}\n{logic;5;!=;6;&&;5;>;6}\n{logic;5;>=;6;||;5;<;6}\n{logic;5;<=;6;xor;true}\n{logic;1234;startswith;12}\n{logic;1234;endswith;34}\n{logic;1234;includes;23}\n{logic;!;true}\n{logic;!;5;!=;5}",
                    "out": "faux\nfaux\nvrai\nfaux\nvrai\nvrai\nvrai\nfaux\nvrai"
                }
            }
        },
        "math": {
            "abs": {
                "desc": "Renvoie la valeur absolue du nombre fourni (pas de negatifs).",
                "example": {
                    "in": "{math.abs;-3523}",
                    "out": "3523"
                }
            },
            "base": {
                "desc": "Parses the `number` using the provided base `origin` (defaulting to 10), and converts it to base `radix`.",
                "example": {
                    "in": "{math.base;FA;16;10}",
                    "out": "250"
                }
            },
            "ceil": {
                "desc": "Rounds the provided decimal up.",
                "example": {
                    "in": "{math.ceil;1.25}",
                    "out": "2"
                }
            },
            "floor": {
                "desc": "Rounds the provided decimal down.",
                "example": {
                    "in": "{math.floor;1.75}",
                    "out": "1"
                }
            },
            "math": {
                "desc": "Calculates the value of the provided expression using the following operators:\n\n - `^` - exponents\n - `/` - division\n - `*` - multiplication\n - `+` - addition\n - `-` - subtraction\n - `&` - bitwise AND\n - `|` - bitwise OR\n - `XOR` - bitwise XOR\n\nOperators are executed using the Order of Operations (Brackets, Exponents, Division, Multiplication, Addition, Subtraction, Bitwise).\n\nIf an operator isn't specified, it uses the last-used operator (defaulting to addition).\n\nBrackets would be achieved by using another nested {math} tag.\n\nIf an `operand` or `augend` cannot be parsed as a number, a variable with the same name will be retrieved. If the retrieved variable is also not a number, throws an error.",
                "example": {
                    "in": "Equation: 1 + (2^2 * 3) - (4 / 5)\nAnswer: {math;1;+;2;^;2;*;3;-;4;/;5}\n\nEquation: 4 + 6 + 8\nAnswer: {math;4;6;8}\n\nEquation: 01001010 | 11000100 & 11111011\n{trim;{set;bin1;{math.base;01001010;2;10}}\n{set;bin2;{math.base;11000100;2;10}}\n{set;bin3;{math.base;11111011;2;10}}\nAnswer: {base;{math;bin1;|;bin2;|;bin3};10;2}}",
                    "out": "Equation: 1 + (2^2 * 3) - (4 / 5)\nAnswer: 12.2\n\nEquation: 4 + 6 + 8\nAnswer: 18\n\nEquation: 01001010 | 11000100 & 11111011\nAnswer: 11111111"
                }
            },
            "parsefloat": {
                "desc": "Attempts to parse the given text as a decimal.",
                "example": {
                    "in": "{math.parsefloat;2.5}\n{math.parsefloat;not a number}",
                    "out": "2.5\nNaN"
                }
            },
            "parseint": {
                "desc": "Tente d'analyser le texte donné en nombre entier.",
                "example": {
                    "in": "{math.parseint;2.5}\n{math.parseint;not a number}",
                    "out": "2\nNaN"
                }
            },
            "randint": {
                "desc": "Returns a random integer between the provided range. `min` defaults to `0`",
                "example": {
                    "in": "One: {randint;5}, two: {randint;10;20}",
                    "out": "One: 2, two: 17"
                }
            },
            "round": {
                "desc": "Rounds the given `number` to the specified decimal `places`, defaulting to 0.",
                "example": {
                    "in": "{math.round;5.125}\n{math.round;5.125;1}\n{math.round;5.125;2}",
                    "out": "5\n5.1\n5.13"
                }
            }
        },
        "message": {
            "id": {
                "desc": "Renvoie l'ID du message contenant la commande",
                "example": {
                    "in": "{message.id}",
                    "out": "[[generic.example.id1]]"
                }
            }
        },
        "role": {
            "color": {
                "desc": "Renvoie la couleur du rôle spécifié en hexadécimales.",
                "example": {
                    "in": "#{couleur.role;rolecool}",
                    "out": "#2ECC71"
                }
            },
            "id": {
                "desc": "Renvoie l'ID du rôle spécifié.",
                "example": {
                    "in": "{role.id;coolrole}",
                    "out": "[[generic.example.id1]]"
                }
            },
            "mention": {
                "desc": "Renvoie une mention du rôle spécifié.",
                "example": {
                    "in": "{role.mention;coolrole}",
                    "out": "@coolrole"
                }
            },
            "name": {
                "desc": "Renvoie le nom du rôle spécifié.",
                "example": {
                    "in": "{role.name;coolrole}",
                    "out": "coolrole"
                }
            },
            "position": {
                "desc": "Renvoie la position du rôle spécifié.",
                "example": {
                    "in": "{role.position;coolrole}",
                    "out": "5"
                }
            }
        },
        "user": {
            "avatar": {
                "desc": "Renvoie l'URL de l'avatar de l'utilisateur spécifié, par défaut celle de l'utilisateur.",
                "example": {
                    "in": "{avatar.utilisateur}",
                    "out": "https://cdn.discordapp.com/avatars/[[generic.example.id1]]/avatarhash.png"
                }
            },
            "createdat": {
                "desc": "Returns the date that the specified user, defaulting to the executing user, was created as a Unix timestamp (milliseconds).",
                "example": {
                    "in": "{user.createdat}",
                    "out": "1444710446104"
                }
            },
            "discrim": {
                "desc": "Renvoie le discriminant de l'utilisateur spécifié, par défaut celui de l'utilisateur.",
                "example": {
                    "in": "{user.discrim}",
                    "out": "1111"
                }
            },
            "fullname": {
                "desc": "Returns the name + discriminator of the specified user, defaulting to the executing user.",
                "example": {
                    "in": "{nomcomplet.utilisateur}",
                    "out": "personne#1111"
                }
            },
            "game": {
                "desc": "Renvoie le jeu auquel l'utilisateur spécifié est en train de jouer, par défaut celui de l'utilisateur.\nSi l'utilisateur n'est pas en train de jouer à un jeu, ça ne renvoie rien.",
                "example": {
                    "in": "{utilisateur.jeu}",
                    "out": "avec BBTag!"
                }
            },
            "id": {
                "desc": "Returns the ID of the specified user, defaulting to the executing user.",
                "example": {
                    "in": "{id.utilisateur}",
                    "out": "[[generic.example.id1]]"
                }
            },
            "joinedat": {
                "desc": "Returns the date that the specified user, defaulting to the executing user, joined the current guild as a Unix timestamp (milliseconds).",
                "example": {
                    "in": "{àrejoint.utilisateur}",
                    "out": "1466379030499"
                }
            },
            "mention": {
                "desc": "Mentionne l'utilisateur spécifié, par défaut de l'utilisateur exécutif.",
                "example": {
                    "in": "{mention.utilisateur}",
                    "out": "@personne"
                }
            },
            "name": {
                "desc": "Returns the name of the specified user, defaulting to the executing user.",
                "example": {
                    "in": "{nom.utilisateur}",
                    "out": "personne"
                }
            },
            "nick": {
                "desc": "Returns the nickname of the specified user, defaulting to the executing user.",
                "example": {
                    "in": "{",
                    "out": "CoolNickname"
                }
            },
            "roles": {
                "desc": "Returns an array of the roles the specified user has, defaulting to the executing user.",
                "example": {
                    "in": "{user.roles}",
                    "out": "[[[generic.example.id1]];[[generic.example.id2]];[[generic.example.id3]]]"
                }
            },
            "setnick": {
                "desc": "Sets the nickname of the specified user, defaulting to the executing user.",
                "example": {
                    "in": "{user.setnick;EvenCoolerNickname}",
                    "out": "(the nickname was set)"
                }
            },
            "status": {
                "desc": "Renvoie le statut de l'utilisateur spécifié, par défaut celui de l'utilisateur. Peut renvoyer \"en ligne\", \"absent\", \"npd\", ou \"hors-ligne\".",
                "example": {
                    "in": "{user.status}",
                    "out": "en ligne"
                }
            }
        }
    },
    "announce": {
        "rolequery": "",
        "channelquery": ""
    }
}
{'fraction_non_alphanumeric': 0.14939579041216372, 'fraction_numerical': 0.015662461898049422, 'mean_word_length': 1.3641904978922184, 'pattern_counts': {'":': 1199, '<': 84, '<?xml version=': 0, '>': 82, 'https://': 10, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 8, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5472175', 'n_tokens_mistral': 25622, 'n_tokens_neox': 23667, 'n_words': 6524}