From 5bf33eae8a5b79a95f6e4de5ec1875c08a5a2ff4 Mon Sep 17 00:00:00 2001 From: Soxoj <31013580+soxoj@users.noreply.github.com> Date: Tue, 15 Sep 2026 19:58:45 +0300 Subject: [PATCH] Add a French translation of the README and the docs (#3166) * Add a French translation of the README and the docs * Put a documentation link in the README header --- CONTRIBUTING.md | 3 +- README.fr.md | 430 +++++ README.md | 9 +- README.zh-CN.md | 9 +- docs/Makefile | 9 +- docs/source/development.rst | 2 +- .../fr/LC_MESSAGES/command-line-options.po | 1019 ++++++++++++ .../locale/fr/LC_MESSAGES/development.po | 1402 +++++++++++++++++ docs/source/locale/fr/LC_MESSAGES/faq.po | 583 +++++++ docs/source/locale/fr/LC_MESSAGES/features.po | 658 ++++++++ docs/source/locale/fr/LC_MESSAGES/index.po | 136 ++ .../locale/fr/LC_MESSAGES/installation.po | 571 +++++++ .../locale/fr/LC_MESSAGES/library-usage.po | 142 ++ .../locale/fr/LC_MESSAGES/philosophy.po | 131 ++ docs/source/locale/fr/LC_MESSAGES/privacy.po | 54 + .../locale/fr/LC_MESSAGES/quick-start.po | 60 + .../locale/fr/LC_MESSAGES/release-process.po | 326 ++++ docs/source/locale/fr/LC_MESSAGES/settings.po | 569 +++++++ .../LC_MESSAGES/supported-identifier-types.po | 151 ++ docs/source/locale/fr/LC_MESSAGES/tags.po | 185 +++ .../locale/fr/LC_MESSAGES/tor-and-proxies.po | 356 +++++ .../locale/fr/LC_MESSAGES/usage-examples.po | 143 ++ .../locale/fr/LC_MESSAGES/use-cases/crypto.po | 563 +++++++ .../fr/LC_MESSAGES/use-cases/scientists.po | 485 ++++++ .../locale/zh_CN/LC_MESSAGES/development.po | 8 +- 25 files changed, 7992 insertions(+), 12 deletions(-) create mode 100644 README.fr.md create mode 100644 docs/source/locale/fr/LC_MESSAGES/command-line-options.po create mode 100644 docs/source/locale/fr/LC_MESSAGES/development.po create mode 100644 docs/source/locale/fr/LC_MESSAGES/faq.po create mode 100644 docs/source/locale/fr/LC_MESSAGES/features.po create mode 100644 docs/source/locale/fr/LC_MESSAGES/index.po create mode 100644 docs/source/locale/fr/LC_MESSAGES/installation.po create mode 100644 docs/source/locale/fr/LC_MESSAGES/library-usage.po create mode 100644 docs/source/locale/fr/LC_MESSAGES/philosophy.po create mode 100644 docs/source/locale/fr/LC_MESSAGES/privacy.po create mode 100644 docs/source/locale/fr/LC_MESSAGES/quick-start.po create mode 100644 docs/source/locale/fr/LC_MESSAGES/release-process.po create mode 100644 docs/source/locale/fr/LC_MESSAGES/settings.po create mode 100644 docs/source/locale/fr/LC_MESSAGES/supported-identifier-types.po create mode 100644 docs/source/locale/fr/LC_MESSAGES/tags.po create mode 100644 docs/source/locale/fr/LC_MESSAGES/tor-and-proxies.po create mode 100644 docs/source/locale/fr/LC_MESSAGES/usage-examples.po create mode 100644 docs/source/locale/fr/LC_MESSAGES/use-cases/crypto.po create mode 100644 docs/source/locale/fr/LC_MESSAGES/use-cases/scientists.po diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 262471c9..c4e1b5e9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -141,11 +141,12 @@ If the second command reports `[+]` for the fake username, the check is a false ## Editing documentation -The docs under `docs/source/` use Sphinx (reStructuredText) with a Simplified Chinese translation in `docs/source/locale/zh_CN/`. **If you edit any `.rst` file, refresh the translation catalogs so the Chinese build does not silently fall back to English on the changed strings:** +The docs under `docs/source/` use Sphinx (reStructuredText) with Simplified Chinese and French translations under `docs/source/locale/`. **If you edit any `.rst` file, refresh the translation catalogs so the translated builds do not silently fall back to English on the changed strings:** ```bash cd docs make intl-update LANG=zh_CN +make intl-update LANG=fr ``` This regenerates the `.po` files — new strings appear with empty `msgstr ""` and changed ones get a `#, fuzzy` marker. Translating them is optional for a PR (a maintainer or translator can fill them in later), but committing the regenerated `.po` files is **not** optional — otherwise the next person who runs `intl-update` gets a noisy diff for changes that aren't theirs. Full workflow, CJK-specific gotchas, and how to add a new language: [development guide](docs/source/development.rst), section *Translations*. diff --git a/README.fr.md b/README.fr.md new file mode 100644 index 00000000..48748524 --- /dev/null +++ b/README.fr.md @@ -0,0 +1,430 @@ +# Maigret + +
+
+ + Version PyPI de Maigret + + + Téléchargements totaux + Téléchargements par mois + +
+
+ + Nombre de vues du projet Maigret + + + Version minimale de Python requise : 3.10+ + + + Licence de Maigret + + + Documentation de Maigret + +
+
+
+ Logo de Maigret +
+
+
+ + Interroger Code Wiki à propos de Maigret + + + Interroger DeepWiki à propos de Maigret + +
+
+
+ English · 简体中文 · Français +
+
+
+ 📖 Documentation +
+
+
+ +**Maigret** rassemble un dossier sur une personne **à partir d'un simple nom d'utilisateur** : il recherche ses comptes sur un très grand nombre de sites et collecte toutes les informations disponibles sur les pages web. Aucune clé d'API n'est nécessaire. **[Profilage par IA (démo)](#ai-analysis)**. + +## Sponsors + +

+ Emplacement de sponsoring principal +

+ +
+ +
+ +

+ + RapidProxy + +

+ +

+ RapidProxy fournit des proxys résidentiels performants pour le scraping de Twitter, l'automatisation avec Selenium et l'extraction de données web. Plus de 90 millions d'IP · rotation intelligente · anti-blocage · trafic sans expiration.
+Offre spéciale : essai gratuit, formules à partir de 0,65 $/Go. Utilisez le code RAPID10 pour 10 % de réduction. +

+ +

+ + MangoProxy + +

+ +

+ MangoProxy est un service de proxys résidentiels, ISP, mobiles et de datacenter, conçu pour les usages professionnels où la stabilité, la vitesse et l'anonymat comptent.
+Code promo : SOXOJ - 8 % de réduction sur les proxys ISP statiques +

+ +

+ + Thordata + +

+ +

+ Thordata fournit des proxys résidentiels fiables pour la recherche OSINT, la recherche de noms d'utilisateur et la collecte de données publiques. +Accédez à plus de 100 millions d'IP résidentielles réelles dans plus de 195 pays, avec des connexions simultanées illimitées, 99,99 % de disponibilité, des connexions stables, des sessions rotatives ou persistantes et un taux de réussite élevé. +
+Offre spéciale : 3 jours d'essai gratuit + 10 % de réduction avec le code SOXOJ10. + +

+ +## Sommaire + +- [En une minute](#one-minute) +- [Principales fonctionnalités](#main-features) +- [Démo](#demo) +- [Installation](#installation) +- [Utilisation](#usage) +- [Contribuer](#contributing) +- [Usage commercial](#commercial-use) +- [À propos](#about) + + +## En une minute + +Assurez-vous d'avoir Python 3.10 ou une version supérieure. + +```bash +pip install maigret +maigret VOTRE_NOM_DUTILISATEUR +``` + +Rien à installer ? Essayez le [bot Telegram communautaire](https://maigret.app/readme-en) ou un [shell cloud](#cloud-shells). + +Vous préférez une interface web ? Voir [comment la lancer](#web-interface). + +À lire aussi : [Démarrage rapide](https://maigret.readthedocs.io/en/latest/quick-start.html). + + +## Principales fonctionnalités + +- Prend en charge plus de 3 000 sites ([voir la liste complète](https://github.com/soxoj/maigret/blob/main/sites.md)). Une exécution par défaut vérifie les 500 sites les mieux classés par trafic ; passez `-a` pour tout parcourir, ou `--tags` pour restreindre par catégorie ou par pays. +- Intégrable dans vos projets Python : importez `maigret` et lancez des recherches depuis votre code (voir l'[utilisation en tant que bibliothèque](https://maigret.readthedocs.io/en/latest/library-usage.html)). +- [Extrait](https://github.com/soxoj/socid_extractor) toutes les informations disponibles sur le titulaire du compte depuis les pages de profil et les API des sites, y compris les liens vers d'autres comptes. +- Effectue une recherche récursive à partir des noms d'utilisateur et des identifiants découverts. +- Permet de filtrer par tags (catégories de sites, pays). +- Détecte et contourne partiellement les blocages, la censure et les CAPTCHA. +- Récupère à chaque exécution (une fois toutes les 24 heures) une [base de sites mise à jour automatiquement](https://maigret.readthedocs.io/en/latest/settings.html#database-auto-update) depuis GitHub, et se rabat sur la base embarquée en cas de coupure réseau. +- Fonctionne avec les sites Tor et I2P, et sait vérifier des domaines. +- Embarque une [interface web](#web-interface) pour parcourir les résultats sous forme de graphe et télécharger les rapports dans tous les formats depuis une seule page. +- Propose un [mode d'analyse par IA](#ai-analysis) facultatif (`--ai`), qui transforme les résultats bruts en une courte synthèse d'enquête via une API compatible OpenAI. + +Pour la liste complète des fonctionnalités, voir la [documentation des fonctionnalités](https://maigret.readthedocs.io/en/latest/features.html). + +### Ils utilisent Maigret + +Des outils professionnels d'OSINT et d'analyse des réseaux sociaux construits sur Maigret : + +Social Links API +Social Links Crimewall +UserSearch + + +## Démo + +### Vidéo + + + asciicast + + +### Rapports + +[Rapport PDF](https://raw.githubusercontent.com/soxoj/maigret/main/static/report_alexaimephotographycars.pdf), [rapport HTML](https://htmlpreview.github.io/?https://raw.githubusercontent.com/soxoj/maigret/main/static/report_alexaimephotographycars.html) + +![Capture d'écran d'un rapport HTML](https://raw.githubusercontent.com/soxoj/maigret/main/static/report_alexaimephotography_html_screenshot.png) + +![Capture d'écran d'un rapport XMind 8](https://raw.githubusercontent.com/soxoj/maigret/main/static/report_alexaimephotography_xmind_screenshot.png) + +[Sortie console complète](https://raw.githubusercontent.com/soxoj/maigret/main/static/recursive_search.md) + + +## Installation + +Vous avez déjà suivi les étapes [En une minute](#one-minute) ? C'est tout bon. Voici les autres méthodes possibles. + +Vous ne voulez rien installer ? Utilisez le [bot Telegram communautaire](https://maigret.app/readme-en). + +### Windows + +Téléchargez `maigret_standalone.exe` depuis les [Releases](https://github.com/soxoj/maigret/releases). Deux façons de le lancer : + +- **Double-cliquez dessus** : Maigret demandera un nom d'utilisateur, lancera une recherche par défaut et attendra à la fin pour que les liens des rapports restent visibles. +- **Lancez-le depuis un terminal** : ouvrez l'invite de commandes (`Win+R`, tapez `cmd`, Entrée) ou PowerShell pour passer d'autres options : + +```cmd +cd %USERPROFILE%\Downloads +maigret_standalone.exe NOMDUTILISATEUR +maigret_standalone.exe NOMDUTILISATEUR --html :: enregistre aussi un rapport HTML +maigret_standalone.exe --help :: liste toutes les options +``` + +Guide vidéo : https://youtu.be/qIgwTZOmMmM. + + +### Shells cloud + +Lancez Maigret dans le navigateur via un shell cloud ou un notebook Jupyter : + +Ouvrir dans Cloud Shell +Exécuter sur Replit + +Ouvrir dans Colab +Ouvrir dans Binder + +### Snap (Linux) + +Télécharger depuis le Snap Store + +```bash +sudo snap install maigret + +# utilisation +maigret nomdutilisateur +``` + +Disponible pour amd64 et arm64, sans Python. Le snap est strictement confiné et peut écrire dans votre répertoire personnel : lancez-le donc depuis celui-ci. Pour les clés USB, connectez l'interface une fois avec `sudo snap connect maigret:removable-media`. + +### Installation locale (pip) + +```bash +# installation depuis PyPI +pip3 install maigret + +# utilisation +maigret nomdutilisateur +``` + +### Depuis les sources + +```bash +# ou clonez le dépôt et installez à la main +git clone https://github.com/soxoj/maigret && cd maigret + +# construction et installation +pip3 install . + +# utilisation +maigret nomdutilisateur +``` + +### Docker + +Deux variantes d'image sont publiées : + +- `soxoj/maigret:latest` — mode ligne de commande (par défaut) +- `soxoj/maigret:web` — lance automatiquement l'[interface web](#web-interface) + +```bash +# image officielle (CLI) +docker pull soxoj/maigret + +# utilisation en CLI +docker run -v /mydir:/app/reports soxoj/maigret:latest nomdutilisateur --html + +# interface web (ouvrir http://localhost:5000) +docker run -p 5000:5000 soxoj/maigret:web + +# interface web sur un autre port +docker run -e PORT=8080 -p 8080:8080 soxoj/maigret:web + +# construction manuelle +docker build -t maigret . # image CLI (cible par défaut) +docker build --target web -t maigret-web . # image de l'interface web +``` + +### Dépannage + +Des erreurs de compilation ? Voir le [guide de dépannage](https://maigret.readthedocs.io/en/latest/installation.html#troubleshooting). + +Les rapports PDF (`--pdf`) sont une extension facultative : installez-les avec `pip install 'maigret[pdf]'`. Ils ont besoin de bibliothèques graphiques système sous Linux et macOS ; voir la [section sur les rapports PDF](https://maigret.readthedocs.io/en/latest/installation.html#optional-pdf-reports-maigret-pdf) pour les étapes propres à chaque système. + + +## Utilisation + +### Exemples + +```bash +# générer des rapports HTML, PDF et XMind +maigret user --html +maigret user --pdf +maigret user --xmind # XML hérité, avec un manifeste pour les lecteurs XMind 2022+ + +# exports exploitables par une machine +maigret user --json ndjson # JSON délimité par des sauts de ligne (aussi : --json simple) +maigret user --csv +maigret user --txt +maigret user --graph # graphe D3 interactif (HTML) +maigret user --neo4j # script Cypher pour Neo4j (base de données orientée graphe) + +# rechercher sur les sites marqués des tags photo et dating +maigret user --tags photo,dating + +# rechercher sur les sites marqués du tag us +maigret user --tags us + +# mettre en évidence les sites dont la page mentionne aussi certains mots-clés +maigret user --keywords python rust +# les sites correspondants apparaissent avec « [++] » en vert vif + +# rechercher trois noms d'utilisateur sur tous les sites disponibles +maigret user1 user2 user3 -a + +# synthèse d'enquête assistée par IA (nécessite OPENAI_API_KEY) +maigret user --ai +``` + +`--neo4j` écrit un script `*_neo4j.cypher` du graphe des résultats ; importez-le avec `cypher-shell -u neo4j -p < report_user_neo4j.cypher` ou collez-le dans le Neo4j Browser. Les réimports sont idempotents. Voir la [documentation de l'export Neo4j](https://maigret.readthedocs.io/en/latest/command-line-options.html#neo4j-export). + +Lancez `maigret --help` pour toutes les options. Documentation : [options de ligne de commande](https://maigret.readthedocs.io/en/latest/command-line-options.html), [autres exemples](https://maigret.readthedocs.io/en/latest/usage-examples.html). Vous tombez sur des 403 ou des dépassements de délai ? Voir [TROUBLESHOOTING.md](TROUBLESHOOTING.md). + + +### Interface web + +Maigret embarque une interface web avec un graphe des résultats et des rapports téléchargeables. + +Vous ne voulez pas l'héberger vous-même ? Déployez l'image Docker publiée `soxoj/maigret:web` en un clic : + +Déployer sur Render + +Fonctionne sur l'offre gratuite de Render (mise en veille après 15 minutes d'inactivité, redémarrage à la requête suivante). Aucune authentification n'est configurée sur l'instance : toute personne disposant de l'URL peut l'utiliser. + +
+Captures d'écran de l'interface web + +![Interface web : comment la démarrer](https://raw.githubusercontent.com/soxoj/maigret/main/static/web_interface_screenshot_start.png) + +![Interface web : les résultats](https://raw.githubusercontent.com/soxoj/maigret/main/static/web_interface_screenshot.png) + +
+ +```console +maigret --web 5000 +``` + +Ouvrez http://127.0.0.1:5000, saisissez un nom d'utilisateur et consultez les résultats. + +### Bibliothèque Python + +**Maigret peut être intégré à vos propres projets Python.** La ligne de commande n'est qu'une fine couche au-dessus d'une fonction asynchrone que vous pouvez appeler directement : construisez vos propres chaînes de traitement, alimentez vos outils avec les résultats, ou faites tourner Maigret au sein d'un workflow OSINT plus large. + +Voir le [guide d'utilisation en tant que bibliothèque](https://maigret.readthedocs.io/en/latest/library-usage.html) pour un exemple complet, les usages asynchrones et le filtrage des sites par tag. + +### Options utiles en ligne de commande + +- `--parse URL` — analyse une page de profil, en extrait les identifiants et noms d'utilisateur, puis s'en sert pour lancer une recherche récursive. +- `--permute` — génère les variantes probables d'un nom d'utilisateur à partir de deux entrées ou plus (par exemple `john doe` → `johndoe`, `j.doe`, etc.) et les recherche toutes. +- `--self-check [--auto-disable]` — vérifie les paires `usernameClaimed` / `usernameUnclaimed` sur les sites réels, pour les mainteneurs qui auditent la base. +- `--ai` / `--ai-model` — lance l'[analyse par IA](#ai-analysis) sur les résultats et diffuse une courte synthèse d'enquête dans le terminal. + + +### Analyse par IA + +[![asciicast](https://asciinema.org/a/979404.svg)](https://asciinema.org/a/979404) + +`--ai` rassemble les résultats de la recherche, construit un rapport Markdown interne et l'envoie à un point d'entrée de complétion de conversation compatible OpenAI, afin de produire une courte synthèse d'enquête neutre (nom réel probable, localisation, profession, centres d'intérêt, langues, indice de confiance, pistes à creuser). La progression site par site est masquée et la réponse du modèle est diffusée sur la sortie standard. + +```bash +export OPENAI_API_KEY=sk-... +maigret user --ai + +# choisir un autre modèle +maigret user --ai --ai-model gpt-4o-mini +``` + +La clé peut aussi être définie via `openai_api_key` dans `settings.json`. Le point d'entrée vaut par défaut `https://api.openai.com/v1`, mais `openai_api_base_url` dans `settings.json` peut désigner n'importe quelle API compatible OpenAI (Azure OpenAI, OpenRouter, un serveur local, etc.). Voir la [documentation des paramètres](https://maigret.readthedocs.io/en/latest/settings.html) pour la liste complète des options. + +### Tor / I2P / proxys + +Maigret peut faire passer ses vérifications par un proxy, par Tor ou par I2P, ce qui est utile pour les sites `.onion` et `.i2p` et pour contourner les WAF qui bloquent les IP de datacenter. + +```bash +# n'importe quel proxy HTTP/SOCKS +maigret user --proxy socks5://127.0.0.1:1080 + +# Tor (passerelle par défaut socks5://127.0.0.1:9050) +maigret user --tor-proxy socks5://127.0.0.1:9050 + +# I2P (passerelle par défaut http://127.0.0.1:4444) +maigret user --i2p-proxy http://127.0.0.1:4444 +``` + +Démarrez votre démon Tor ou I2P avant de lancer la commande : Maigret ne gère pas ces passerelles. + +### Contournement de Cloudflare + +> **Expérimental.** Le webgate Cloudflare est en cours de développement actif ; le schéma de configuration, le comportement en ligne de commande et l'ensemble des sites routés peuvent changer sans garantie de compatibilité ascendante. + +Une partie des sites de la base exigent un vrai navigateur pour résoudre un défi JavaScript. Maigret peut déléguer ces vérifications à une instance locale de [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr) : + +```bash +docker run -d -p 8191:8191 --name flaresolverr ghcr.io/flaresolverr/flaresolverr:latest +maigret --cloudflare-bypass +``` + +Le contournement est facultatif (`--cloudflare-bypass`, ou `cloudflare_bypass.enabled` dans `settings.json`) et ne se déclenche que pour les sites dont le champ `protection` correspond. Voir la [documentation de la fonctionnalité](https://maigret.readthedocs.io/en/latest/features.html#cloudflare-bypass) pour les options de backend et la configuration. + + +## Contribuer + +Ajoutez ou corrigez des sites de façon chirurgicale dans `data.json` (sans `json.load` / `json.dump`), puis lancez `./utils/update_site_data.py` pour regénérer `sites.md` et les métadonnées de la base, et ouvrez une pull request. Pour plus de détails, voir le [guide CONTRIBUTING](https://github.com/soxoj/maigret/blob/main/CONTRIBUTING.md) et la [documentation de développement](https://maigret.readthedocs.io/en/latest/development.html). Historique des versions : [CHANGELOG.md](CHANGELOG.md). + + +## Usage commercial + +Maigret est open source, sous licence MIT, et son usage commercial est libre et sans restriction. Mais les vérifications de sites se cassent avec le temps et demandent une maintenance active. + +Pour un usage commercial sérieux, avec une **base de sites mise à jour quotidiennement** ou une **API de vérification de noms d'utilisateur**, écrivez-nous : 📧 [maigret@soxoj.com](mailto:maigret@soxoj.com) + +- Base de sites privée — plus de 5 000 sites, mise à jour chaque jour (distincte de la base open source publique) +- API de vérification de noms d'utilisateur — pour intégrer Maigret à votre produit + + +## À propos + +### Avertissement + +**À usage éducatif et légal uniquement.** Il vous appartient de respecter toutes les lois applicables dans votre juridiction (RGPD, CCPA, etc.). Les auteurs déclinent toute responsabilité en cas d'usage abusif. + +### Retours + +[Ouvrir une issue](https://github.com/soxoj/maigret/issues) · [GitHub Discussions](https://github.com/soxoj/maigret/discussions) · [Telegram](https://t.me/soxoj) + +### Classification SOWEL + +Techniques OSINT utilisées : +- [SOTL-2.2. Search For Accounts On Other Platforms](https://sowel.soxoj.com/other-platform-accounts) +- [SOTL-6.1. Check Logins Reuse To Find Another Account](https://sowel.soxoj.com/logins-reuse) +- [SOTL-6.2. Check Nicknames Reuse To Find Another Account](https://sowel.soxoj.com/nicknames-reuse) + +### Licence + +MIT © [Maigret](https://github.com/soxoj/maigret) diff --git a/README.md b/README.md index c510a77f..cbb285dd 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,9 @@ License badge for Maigret + + Maigret documentation +
@@ -36,7 +39,11 @@

- English · 简体中文 + English · 简体中文 · Français +
+
+
+ 📖 Documentation

diff --git a/README.zh-CN.md b/README.zh-CN.md index 1714ce75..ee728cd0 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -20,6 +20,9 @@ Maigret 的开源许可证 + + Maigret 文档 +
@@ -36,7 +39,11 @@

- English · 简体中文 + English · 简体中文 · Français +
+
+
+ 📖 文档

diff --git a/docs/Makefile b/docs/Makefile index f8950a31..6eff5f71 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -12,7 +12,7 @@ BUILDDIR = build help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -.PHONY: help Makefile gettext intl-update html-zh_CN +.PHONY: help Makefile gettext intl-update html-zh_CN html-fr # Translation pipeline # @@ -20,7 +20,8 @@ help: # 2. `make intl-update LANG=zh_CN` syncs the .po files for that language # against the new .pot files (new strings get empty msgstrs, removed # strings get commented out, changed strings get a `fuzzy` marker). -# 3. `make html-zh_CN` builds a local Simplified Chinese HTML preview. +# 3. `make html-zh_CN` (or `make html-`) builds a local HTML preview +# in that language. # # To bootstrap a new language, run `make intl-update LANG=`. LANG ?= zh_CN @@ -31,8 +32,8 @@ gettext: intl-update: gettext sphinx-intl update -p "$(BUILDDIR)/gettext" -l $(LANG) -d "$(SOURCEDIR)/locale" -html-zh_CN: - $(SPHINXBUILD) -b html -D language=zh_CN $(SPHINXOPTS) "$(SOURCEDIR)" "$(BUILDDIR)/html_zh_CN" +html-%: + $(SPHINXBUILD) -b html -D language=$* $(SPHINXOPTS) "$(SOURCEDIR)" "$(BUILDDIR)/html_$*" # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). diff --git a/docs/source/development.rst b/docs/source/development.rst index f1324dd5..477dac25 100644 --- a/docs/source/development.rst +++ b/docs/source/development.rst @@ -450,7 +450,7 @@ Translations The docs are translated via Sphinx's standard gettext workflow. English ``.rst`` files are the source of truth; translations live as ``.po`` catalogs under -``docs/source/locale//LC_MESSAGES/`` (currently only ``zh_CN``). +``docs/source/locale//LC_MESSAGES/`` (currently ``zh_CN`` and ``fr``). After editing any English ``.rst`` file, refresh the catalogs so existing translations stay aligned with the new strings: diff --git a/docs/source/locale/fr/LC_MESSAGES/command-line-options.po b/docs/source/locale/fr/LC_MESSAGES/command-line-options.po new file mode 100644 index 00000000..b6c4817c --- /dev/null +++ b/docs/source/locale/fr/LC_MESSAGES/command-line-options.po @@ -0,0 +1,1019 @@ +# French translation of the Maigret documentation. +# Copyright (C) 2025, soxoj +# This file is distributed under the same license as the Maigret package. +# +msgid "" +msgstr "" +"Project-Id-Version: Maigret 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-09-15 17:05+0200\n" +"PO-Revision-Date: 2026-09-15 17:20+0200\n" +"Last-Translator: \n" +"Language: fr\n" +"Language-Team: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/command-line-options.rst:4 b8d147dd2c5e4fe298840e5ddf66d706 +msgid "Command line options" +msgstr "Options de ligne de commande" + +#: ../../source/command-line-options.rst:7 3d13047f6d9b47b0a9488c237082c427 +msgid "Usernames" +msgstr "Noms d'utilisateur" + +#: ../../source/command-line-options.rst:9 42185cd0554649e09110c7d2a110da40 +msgid "``maigret username1 username2 ...``" +msgstr "``maigret nomdutilisateur1 nomdutilisateur2 ...``" + +#: ../../source/command-line-options.rst:11 00a93d35b20e445c911edb914d89d448 +msgid "" +"You can specify several usernames separated by space. Usernames are " +"**not** mandatory as there are other operations modes (see below)." +msgstr "" +"Vous pouvez indiquer plusieurs noms d'utilisateur séparés par des " +"espaces. Les noms d'utilisateur ne sont **pas** obligatoires, car il " +"existe d'autres modes de fonctionnement (voir plus bas)." + +#: ../../source/command-line-options.rst:17 9172eef8b4dc4f0bad82a0b8c5bf2a6a +msgid "Identifiers from a file" +msgstr "Identifiants depuis un fichier" + +#: ../../source/command-line-options.rst:19 0ad23abc5e784d95979ac0825f237d91 +msgid "``maigret --input-file ids.txt``" +msgstr "``maigret --input-file ids.txt``" + +#: ../../source/command-line-options.rst:21 3b19b2e15da9414190a8aedfe51a85b1 +msgid "" +"Reads identifiers from a file, one per line, and searches them exactly " +"like positional ones. A single ``-`` as the path reads standard input " +"instead, so a generator can be piped straight in. Blank lines and lines " +"starting with ``#`` are skipped." +msgstr "" +"Lit les identifiants depuis un fichier, un par ligne, et les recherche " +"exactement comme des arguments positionnels. Un simple ``-`` comme chemin" +" lit l'entrée standard à la place, ce qui permet de brancher directement " +"un générateur. Les lignes vides et celles commençant par ``#`` sont " +"ignorées." + +#: ../../source/command-line-options.rst:26 779532ddb0684b48830135f105eb434d +msgid "" +"Every line is searched as the type given by ``--id-type``, which is " +"``username`` unless you change it. A line can also carry its own type as " +"an ``id_type:value`` prefix, and that is how one run can mix usernames " +"with social network ids." +msgstr "" +"Chaque ligne est recherchée avec le type indiqué par ``--id-type``, qui " +"vaut ``username`` tant que vous ne le changez pas. Une ligne peut aussi " +"porter son propre type sous la forme d'un préfixe ``id_type:valeur`` : " +"c'est ainsi qu'une seule exécution peut mélanger des noms d'utilisateur " +"et des identifiants de réseaux sociaux." + +#: ../../source/command-line-options.rst:31 b58ebacf3c4c4b738494b9bee0789897 +msgid "For example, ``ids.txt``:" +msgstr "Par exemple, ``ids.txt`` :" + +#: ../../source/command-line-options.rst:44 bb052c03b2424915887fd4929e9b3135 +msgid "Then run Maigret against it:" +msgstr "Lancez ensuite Maigret dessus :" + +#: ../../source/command-line-options.rst:50 2d71debd173449029074c6116a72fac1 +msgid "" +"Every line is searched with the type Maigret picked for it, and the type " +"is printed as it goes:" +msgstr "" +"Chaque ligne est recherchée avec le type que Maigret a retenu pour elle, " +"et ce type est affiché au fil de l'exécution :" + +#: ../../source/command-line-options.rst:61 e55895069377483da7c9d2d9bb2e0f2e +msgid "A generator can also be piped in directly, without a file in between:" +msgstr "" +"Un générateur peut aussi être branché directement, sans fichier " +"intermédiaire :" + +#: ../../source/command-line-options.rst:67 7d2ece91d36c44afaa05c9d1eeb9331a +msgid "" +"Mixing types in one run is worth it because everything found lands in a " +"single report and a single connections graph, while separate runs give " +"you separate ones." +msgstr "" +"Mélanger les types en une seule exécution a un intérêt : tout ce qui est " +"trouvé atterrit dans un seul rapport et un seul graphe de connexions, " +"alors que des exécutions séparées en produisent autant de séparés." + +#: ../../source/command-line-options.rst:71 6efcd1f57a4242b99e4828caede055e2 +msgid "" +"Note that ``--permute`` applies to positional usernames only. Names " +"coming from a file are searched as they are written, because a file can " +"hold thousands of lines and permuting those is rarely what you want." +msgstr "" +"À noter : ``--permute`` ne s'applique qu'aux noms d'utilisateur passés en" +" arguments positionnels. Les noms venant d'un fichier sont recherchés " +"tels qu'ils sont écrits, car un fichier peut contenir des milliers de " +"lignes et en permuter le contenu est rarement ce que l'on veut." + +#: ../../source/command-line-options.rst:76 55cbdbdd7e1c40489fdbea2e69c5ce40 +msgid "Parsing of account pages and online documents" +msgstr "Analyse des pages de comptes et des documents en ligne" + +#: ../../source/command-line-options.rst:78 2140b01e8ecc4c7fb943475fb575cad4 +msgid "``maigret --parse URL``" +msgstr "``maigret --parse URL``" + +#: ../../source/command-line-options.rst:80 bf224b4be03e4efc8bed5216d119cf5a +msgid "" +"Maigret will try to extract information about the document/account owner " +"(including username and other ids) and will make a search by the " +"extracted username and ids. See examples in the :ref:`extracting-" +"information-from-pages` section." +msgstr "" +"Maigret tentera d'extraire des informations sur le titulaire du document " +"ou du compte (dont son nom d'utilisateur et d'autres identifiants), puis " +"lancera une recherche à partir du nom d'utilisateur et des identifiants " +"extraits. Voir les exemples dans la section :ref:`extracting-information-" +"from-pages`." + +#: ../../source/command-line-options.rst:85 71de4fc966bd47efb8a17906728ee316 +msgid "Main options" +msgstr "Options principales" + +#: ../../source/command-line-options.rst:87 13cde4a2ba5e47ec9d5b19746e804264 +msgid "" +"Options are also configurable through settings files, see :doc:`settings " +"section `." +msgstr "" +"Les options sont également configurables via des fichiers de paramètres, " +"voir la :doc:`section Paramètres `." + +#: ../../source/command-line-options.rst:90 2e98b41408324aef9c0e2f6415ac2ec9 +msgid "" +"``--tags`` - Filter sites for searching by tags: sites categories and " +"two-letter country codes (**not a language!**). E.g. photo, dating, " +"sport; jp, us, global. Multiple tags can be associated with one site. " +"**Warning**: tags markup is not stable now. Read more :doc:`in the " +"separate section `." +msgstr "" +"``--tags`` - Filtre les sites de la recherche par tags : catégories de " +"sites et codes pays à deux lettres (**pas une langue !**). Par exemple " +"photo, dating, sport ; jp, us, global. Plusieurs tags peuvent être " +"associés à un même site. **Attention** : le balisage par tags n'est pas " +"encore stable. Plus de détails :doc:`dans la section dédiée `." + +#: ../../source/command-line-options.rst:95 f97cfdc4d2684fb296ac9b2ebebe708d +msgid "" +"``--exclude-tags`` - Exclude sites with specific tags from the search " +"(blacklist). E.g. ``--exclude-tags porn,dating`` will skip all sites " +"tagged with ``porn`` or ``dating``. Can be combined with ``--tags`` to " +"include certain categories while excluding others. Read more :doc:`in the" +" separate section `." +msgstr "" +"``--exclude-tags`` - Exclut de la recherche les sites portant certains " +"tags (liste noire). Par exemple, ``--exclude-tags porn,dating`` ignorera " +"tous les sites marqués ``porn`` ou ``dating``. Peut se combiner avec " +"``--tags`` pour inclure certaines catégories tout en en excluant " +"d'autres. Plus de détails :doc:`dans la section dédiée `." + +#: ../../source/command-line-options.rst:101 2579aaf6ecba4604ad5a893afbe191a7 +msgid "" +"``-n``, ``--max-connections`` - Allowed number of concurrent connections " +"**(default: 100)**." +msgstr "" +"``-n``, ``--max-connections`` - Nombre de connexions simultanées " +"autorisées **(par défaut : 100)**." + +#: ../../source/command-line-options.rst:104 f5db788c9b794d5aa64aedf3a842920a +msgid "``-a``, ``--all-sites`` - Use all sites for scan **(default: top 500)**." +msgstr "" +"``-a``, ``--all-sites`` - Utilise tous les sites pour la recherche **(par" +" défaut : les 500 premiers)**." + +#: ../../source/command-line-options.rst:106 eaf636e3de8a44a38d34c0a69f48db4f +msgid "" +"``--top-sites`` - Count of sites for scan ranked by Majestic Million " +"**(default: top 500)**." +msgstr "" +"``--top-sites`` - Nombre de sites à parcourir, classés selon Majestic " +"Million **(par défaut : les 500 premiers)**." + +#: ../../source/command-line-options.rst:109 8d48504140c745aea1da10c9dc367515 +msgid "" +"**Mirrors:** After the top *N* sites by Majestic Million rank are chosen " +"(respecting ``--tags``, ``--use-disabled-sites``, etc.), Maigret may add " +"extra sites whose database field ``source`` names a **parent platform** " +"that itself falls in the Majestic Million top *N* when ranking " +"**including disabled** sites. For example, if ``Twitter`` ranks in the " +"first 500 by Majestic Million, a mirror such as ``memory.lol`` (with " +"``source: Twitter``) is included even though it has no rank and would " +"otherwise be cut off. The same applies to Instagram-related mirrors (e.g." +" Picuki) when ``Instagram`` is in that parent top *N* by rank—even if the" +" official ``Instagram`` entry is disabled and not scanned by default, its" +" mirrors can still be pulled in. The final list is the ranked top *N* " +"plus these mirrors (no fixed upper bound on mirror count)." +msgstr "" +"**Miroirs :** une fois choisis les *N* premiers sites au classement " +"Majestic Million (en respectant ``--tags``, ``--use-disabled-sites``, " +"etc.), Maigret peut ajouter des sites supplémentaires dont le champ " +"``source`` de la base désigne une **plateforme parente** qui figure elle-" +"même dans les *N* premiers du Majestic Million, **sites désactivés " +"inclus** dans ce classement. Par exemple, si ``Twitter`` figure dans les " +"500 premiers du Majestic Million, un miroir comme ``memory.lol`` (avec " +"``source: Twitter``) est inclus, alors même qu'il n'a aucun rang et " +"serait autrement écarté. Il en va de même pour les miroirs liés à " +"Instagram (Picuki, par exemple) lorsque ``Instagram`` fait partie de ces " +"*N* premiers par rang : même si l'entrée officielle ``Instagram`` est " +"désactivée et n'est pas parcourue par défaut, ses miroirs peuvent quand " +"même être tirés. La liste finale est donc celle des *N* premiers au " +"classement, plus ces miroirs (sans limite supérieure fixe sur le nombre " +"de miroirs)." + +#: ../../source/command-line-options.rst:121 328eece5f2a742738c9a437ece59d764 +msgid "" +"``--timeout`` - Time (in seconds) to wait for responses from sites " +"**(default: 30)**. A longer timeout will be more likely to get results " +"from slow sites. On the other hand, this may cause a long delay to gather" +" all results. The choice of the right timeout should be carried out " +"taking into account the bandwidth of the Internet connection." +msgstr "" +"``--timeout`` - Temps d'attente (en secondes) des réponses des sites " +"**(par défaut : 30)**. Un délai plus long donne plus de chances d'obtenir" +" des résultats des sites lents. En contrepartie, cela peut allonger " +"considérablement la collecte de tous les résultats. Le bon délai se " +"choisit en tenant compte du débit de la connexion internet." + +#: ../../source/command-line-options.rst:128 2f285fc5668347949928fbf3cb42051e +msgid "Network and proxy options" +msgstr "Options de réseau et de proxy" + +#: ../../source/command-line-options.rst:130 469a4d5c709e4513a2a99b2235c6c90a +msgid "" +"``--proxy PROXY_URL`` / ``-p PROXY_URL`` - Route **every** check through " +"the given HTTP or SOCKS proxy. Example: ``socks5://127.0.0.1:1080``, " +"``http://user:pass@proxy.example:3128``. This is the flag to use for " +"routing the whole run through Tor (``--proxy socks5://127.0.0.1:9050``), " +"a residential proxy, or any corporate gateway. No default." +msgstr "" +"``--proxy URL_PROXY`` / ``-p URL_PROXY`` - Fait passer **toutes** les " +"vérifications par le proxy HTTP ou SOCKS indiqué. Exemples : " +"``socks5://127.0.0.1:1080``, ``http://user:pass@proxy.example:3128``. " +"C'est l'option à utiliser pour faire passer toute la recherche par Tor " +"(``--proxy socks5://127.0.0.1:9050``), par un proxy résidentiel ou par " +"n'importe quelle passerelle d'entreprise. Aucune valeur par défaut." + +#: ../../source/command-line-options.rst:136 f45e39f281df44428732a50b449c9ee3 +msgid "" +"``socks5://`` and ``socks5h://`` are interchangeable: Maigret rewrites " +"the scheme to the spelling expected by the transport handling each site, " +"so either one resolves hostnames **at the proxy** for the whole database." +msgstr "" +"``socks5://`` et ``socks5h://`` sont interchangeables : Maigret réécrit " +"le schéma dans la forme attendue par le transport qui traite chaque site," +" de sorte que l'un comme l'autre résout les noms d'hôte **au niveau du " +"proxy** pour toute la base." + +#: ../../source/command-line-options.rst:140 eb8057e15a784358902c7d70af9895d7 +msgid "" +"``--tor-proxy TOR_PROXY_URL`` - Gateway used **only** for ``.onion`` " +"sites in the database **(default: socks5://127.0.0.1:9050)**. Clearweb " +"sites are unaffected — for them Maigret uses your direct connection or " +"``--proxy`` if you set one. Without this flag, ``.onion`` sites are " +"silently skipped." +msgstr "" +"``--tor-proxy URL_PROXY_TOR`` - Passerelle utilisée **uniquement** pour " +"les sites ``.onion`` de la base **(par défaut : " +"socks5://127.0.0.1:9050)**. Les sites du web classique ne sont pas " +"concernés : pour eux, Maigret utilise votre connexion directe, ou " +"``--proxy`` si vous en avez défini un. Sans cette option, les sites " +"``.onion`` sont silencieusement ignorés." + +#: ../../source/command-line-options.rst:146 c82c6fddea73447d8968f6e206605cb5 +msgid "" +"``--i2p-proxy I2P_PROXY_URL`` - Gateway used **only** for ``.i2p`` sites " +"in the database **(default: http://127.0.0.1:4444)**. Same \"only " +"matching protocol\" rule as ``--tor-proxy``." +msgstr "" +"``--i2p-proxy URL_PROXY_I2P`` - Passerelle utilisée **uniquement** pour " +"les sites ``.i2p`` de la base **(par défaut : http://127.0.0.1:4444)**. " +"Même règle de « protocole correspondant uniquement » que pour ``--tor-" +"proxy``." + +#: ../../source/command-line-options.rst:150 28955e6400684cc9ba7993a456433479 +msgid "" +"Maigret does not start the Tor or I2P daemon for you — launch it first. " +"For a full walkthrough (Tor Browser vs system ``tor`` port numbers, Tails" +" OS recipe, timeout/retry tuning), see :doc:`tor-and-proxies`." +msgstr "" +"Maigret ne démarre ni le démon Tor ni le routeur I2P à votre place : " +"lancez-le d'abord. Pour une explication complète (ports de Tor Browser et" +" du ``tor`` système, recette pour Tails OS, réglage des délais et des " +"nouvelles tentatives), voir :doc:`tor-and-proxies`." + +#: ../../source/command-line-options.rst:154 96f8c57425544027a2d07916cc6a1668 +msgid "" +"``--cookies-jar-file`` - File with custom cookies in Netscape format (aka" +" cookies.txt). You can install an extension to your browser to download " +"own cookies (`Chrome `_, `Firefox " +"`_)." +msgstr "" +"``--cookies-jar-file`` - Fichier de cookies personnalisés au format " +"Netscape (alias cookies.txt). Vous pouvez installer une extension dans " +"votre navigateur pour télécharger vos propres cookies (`Chrome " +"`_, `Firefox " +"`_)." + +#: ../../source/command-line-options.rst:158 154a8b7d243e4166bf7c2cf7e6e1ed75 +msgid "" +"``--no-recursion`` - Disable parsing pages for other usernames and " +"recursive search by them." +msgstr "" +"``--no-recursion`` - Désactive l'analyse des pages à la recherche " +"d'autres noms d'utilisateur, ainsi que la recherche récursive à partir de" +" ceux-ci." + +#: ../../source/command-line-options.rst:161 5f9b9f5fd66046ad9ade5ceb02173cbe +msgid "" +"``--use-disabled-sites`` - Use disabled sites to search (may cause many " +"false positives)." +msgstr "" +"``--use-disabled-sites`` - Utilise également les sites désactivés pour la" +" recherche (risque de nombreux faux positifs)." + +#: ../../source/command-line-options.rst:164 9979dec31a994027ac1398a34a6cf912 +msgid "" +"``--id-type`` - Specify identifier(s) type (default: username). Supported" +" types: gaia_id, steam_id, vk_id, yandex_public_id, ok_id, wikimapia_uid," +" uidme_uguid, yelp_userid, orcid, qq_id, bilibili_id. Sites whose type " +"does not match are filtered out automatically. See :ref:`supported-" +"identifier-types` for details and an example." +msgstr "" +"``--id-type`` - Précise le type des identifiants (``username`` par " +"défaut). Types pris en charge : gaia_id, steam_id, vk_id, " +"yandex_public_id, ok_id, wikimapia_uid, uidme_uguid, yelp_userid, orcid, " +"qq_id, bilibili_id. Les sites dont le type ne correspond pas sont écartés" +" automatiquement. Voir :ref:`supported-identifier-types` pour les détails" +" et un exemple." + +#: ../../source/command-line-options.rst:170 d13aa9ce26ab4e629f3a9c5e4193cc57 +msgid "" +"``--input-file`` - Read identifiers from a file, one per line. See :ref" +":`identifiers-from-a-file` above." +msgstr "" +"``--input-file`` - Lit les identifiants depuis un fichier, un par ligne. " +"Voir :ref:`identifiers-from-a-file` ci-dessus." + +#: ../../source/command-line-options.rst:173 585ab26839364a08b43205108efbc4a1 +msgid "" +"``--ignore-ids`` - Do not make search by the specified username or other " +"ids. Useful for repeated scanning with found known irrelevant usernames." +msgstr "" +"``--ignore-ids`` - Ne pas rechercher le nom d'utilisateur ou les " +"identifiants indiqués. Utile pour relancer un scan en écartant des noms " +"d'utilisateur déjà identifiés comme hors sujet." + +#: ../../source/command-line-options.rst:176 fbeb9b462ad044699cb400bbf241e490 +msgid "" +"``--db`` - Load Maigret database from a JSON file or an online, valid, " +"JSON file. See :ref:`custom-database` below." +msgstr "" +"``--db`` - Charge la base de Maigret depuis un fichier JSON local ou un " +"fichier JSON valide en ligne. Voir :ref:`custom-database` ci-dessous." + +#: ../../source/command-line-options.rst:179 bafd6173526b4bdbae8f24e9ef2707dc +msgid "" +"``--no-autoupdate`` - Disable the automatic database update check that " +"runs at startup. The currently cached (or bundled) database is used as-" +"is." +msgstr "" +"``--no-autoupdate`` - Désactive la vérification automatique des mises à " +"jour de la base au démarrage. La base actuellement en cache (ou " +"embarquée) est utilisée telle quelle." + +#: ../../source/command-line-options.rst:183 c5122d8448fc4a9ba76d5b949c600f7f +msgid "" +"``--force-update`` - Force a database update check at startup, ignoring " +"the usual check interval. Implies ``--no-autoupdate`` for the rest of the" +" run after the explicit update finishes." +msgstr "" +"``--force-update`` - Force une vérification des mises à jour de la base " +"au démarrage, sans tenir compte de l'intervalle habituel. Implique " +"``--no-autoupdate`` pour le reste de l'exécution, une fois la mise à jour" +" explicite terminée." + +#: ../../source/command-line-options.rst:187 3af3a55c069243d99943f842a6fc6bf6 +msgid "" +"``--retries RETRIES`` - Count of attempts to restart temporarily failed " +"requests." +msgstr "" +"``--retries RETRIES`` - Nombre de tentatives de relance des requêtes " +"ayant échoué temporairement." + +#: ../../source/command-line-options.rst:190 b5a9b31868d44bd4af4a1ee10fae237e +#, python-brace-format +msgid "" +"``--with-domains`` *(experimental)* - Also resolve a small set of " +"``{username}.`` patterns through DNS (A-records) in parallel with " +"the normal HTTP checks. Currently 7 entries in the database use this path" +" (``.ddns.net``, ``.com``, ``.pro``, ``.me``, ``.biz``, ``.email``, " +"``.guru``). DNS-only hits can include parking domains and catch-all " +"wildcards, so treat results as a lead rather than confirmation. See the " +":doc:`FAQ entry on DNS domain checks `." +msgstr "" +"``--with-domains`` *(expérimental)* - Résout également par DNS " +"(enregistrements A) un petit ensemble de motifs ``{username}.``, en " +"parallèle des vérifications HTTP habituelles. Actuellement, 7 entrées de " +"la base empruntent ce chemin (``.ddns.net``, ``.com``, ``.pro``, ``.me``," +" ``.biz``, ``.email``, ``.guru``). Un résultat purement DNS peut " +"correspondre à un domaine parqué ou à un joker attrape-tout : traitez-le " +"comme une piste, pas comme une confirmation. Voir l':doc:`entrée de la " +"FAQ sur les vérifications DNS `." + +#: ../../source/command-line-options.rst:198 1278f941926643d6baa535fa6807d491 +msgid "" +"``--cloudflare-bypass`` *(experimental)* - Route checks for sites tagged " +"``protection: [\"cf_js_challenge\"]`` / ``[\"cf_firewall\"]`` / " +"``[\"webgate\"]`` through a local Chrome-based solver (FlareSolverr by " +"default). The bypass is opt-in — without this flag (or " +"``settings.cloudflare_bypass.enabled = true``) those sites are checked " +"the usual way, which Cloudflare almost always blocks: you get an UNKNOWN " +"status with a JS-challenge / firewall error rather than a real result. " +"Configure the backend in ``settings.cloudflare_bypass.modules``. See :ref" +":`cloudflare-bypass`. **Experimental** — the flag, schema and routing " +"rules may change without backwards-compatibility guarantees." +msgstr "" +"``--cloudflare-bypass`` *(expérimental)* - Fait passer les vérifications " +"des sites marqués ``protection: [\"cf_js_challenge\"]`` / " +"``[\"cf_firewall\"]`` / ``[\"webgate\"]`` par un solveur local basé sur " +"Chrome (FlareSolverr par défaut). Le contournement est facultatif : sans " +"cette option (ou sans ``settings.cloudflare_bypass.enabled = true``), ces" +" sites sont vérifiés de la façon habituelle, ce que Cloudflare bloque " +"presque toujours ; vous obtenez alors un statut UNKNOWN avec une erreur " +"de défi JavaScript ou de pare-feu, plutôt qu'un vrai résultat. Le backend" +" se configure dans ``settings.cloudflare_bypass.modules``. Voir :ref" +":`cloudflare-bypass`. **Expérimental** : l'option, le schéma et les " +"règles de routage peuvent changer sans garantie de compatibilité " +"ascendante." + +#: ../../source/command-line-options.rst:212 29c41c569f98470fb0e4a78b8bb139db +msgid "Using a custom sites database" +msgstr "Utiliser une base de sites personnalisée" + +#: ../../source/command-line-options.rst:214 b42ec5f4563e4879a96d4c256d826a6e +msgid "The ``--db`` flag accepts three forms:" +msgstr "L'option ``--db`` accepte trois formes :" + +#: ../../source/command-line-options.rst:216 e96286cbc2314d309ac8c93977277e34 +msgid "" +"**HTTP(S) URL** — fetched as-is, e.g. ``--db " +"https://example.com/my_db.json``." +msgstr "" +"**Une URL HTTP(S)** — récupérée telle quelle, par exemple ``--db " +"https://example.com/ma_base.json``." + +#: ../../source/command-line-options.rst:218 0bff112a4cec4c4492afa63af9e5d1a1 +msgid "" +"**Local file path** — absolute (``--db /tmp/private.json``) or relative " +"to the current working directory (``--db LLM/maigret_private_db.json``)." +msgstr "" +"**Un chemin de fichier local** — absolu (``--db /tmp/private.json``) ou " +"relatif au répertoire de travail courant (``--db " +"LLM/maigret_private_db.json``)." + +#: ../../source/command-line-options.rst:221 eed9bc6ac67f49879a865a471c244aa4 +msgid "" +"**Module-relative path** — kept for backwards compatibility, resolved " +"against the installed ``maigret/`` package directory (e.g. the default " +"``resources/data.json``)." +msgstr "" +"**Un chemin relatif au module** — conservé pour la compatibilité " +"ascendante, résolu par rapport au répertoire du paquet ``maigret/`` " +"installé (par exemple le ``resources/data.json`` par défaut)." + +#: ../../source/command-line-options.rst:225 5ffeaba33d524489beb7e9e742d8c529 +msgid "" +"Resolution order for local paths: the path is first tried as given " +"(absolute or cwd-relative); if that file does not exist, Maigret falls " +"back to the legacy module-relative resolution. If neither location " +"contains the file, Maigret exits with an error rather than silently " +"loading the bundled database." +msgstr "" +"Ordre de résolution des chemins locaux : le chemin est d'abord essayé tel" +" quel (absolu ou relatif au répertoire courant) ; si ce fichier n'existe " +"pas, Maigret se rabat sur l'ancienne résolution relative au module. Si le" +" fichier ne se trouve à aucun de ces endroits, Maigret s'arrête sur une " +"erreur plutôt que de charger silencieusement la base embarquée." + +#: ../../source/command-line-options.rst:231 a5b0d7b56f1743569b4d851d61326e49 +msgid "" +"When ``--db`` points to a custom file, automatic database updates are " +"skipped — the file is used exactly as provided." +msgstr "" +"Lorsque ``--db`` désigne un fichier personnalisé, les mises à jour " +"automatiques de la base sont ignorées : le fichier est utilisé exactement" +" tel qu'il est fourni." + +#: ../../source/command-line-options.rst:234 2ef8d38c6a8f4126a4a4145ef416b559 +msgid "On every run Maigret prints the database it actually loaded, for example::" +msgstr "" +"À chaque exécution, Maigret affiche la base qu'il a réellement chargée, " +"par exemple ::" + +#: ../../source/command-line-options.rst:239 bf8ebe6badd34738a655ebd38c46d7f7 +msgid "" +"If loading the requested database fails for any other reason (corrupt " +"JSON, missing required keys, …), Maigret prints a warning, falls back to " +"the bundled database, and reports the fallback explicitly::" +msgstr "" +"Si le chargement de la base demandée échoue pour une autre raison (JSON " +"corrompu, clés obligatoires manquantes, etc.), Maigret affiche un " +"avertissement, se rabat sur la base embarquée et signale explicitement ce" +" repli ::" + +#: ../../source/command-line-options.rst:246 3ef5935ef0844dde9052d99812e3bd66 +msgid "" +"A typical invocation against a private database, with auto-update " +"disabled and all sites scanned, looks like::" +msgstr "" +"Un appel typique sur une base privée, avec la mise à jour automatique " +"désactivée et tous les sites parcourus, ressemble à ceci ::" + +#: ../../source/command-line-options.rst:254 97fcd4ecdb3344c8ba37fc0f8118025f +msgid "Reports" +msgstr "Rapports" + +#: ../../source/command-line-options.rst:256 f3c1d62ce1b843c182678493dd19faad +msgid "" +"``-P``, ``--pdf`` - Generate a PDF report (general report on all " +"usernames)." +msgstr "" +"``-P``, ``--pdf`` - Génère un rapport PDF (rapport global sur tous les " +"noms d'utilisateur)." + +#: ../../source/command-line-options.rst:259 f6dddd707b344b3ead8ec1d8cfce4daf +msgid "" +"``-H``, ``--html`` - Generate an HTML report file (general report on all " +"usernames)." +msgstr "" +"``-H``, ``--html`` - Génère un rapport HTML (rapport global sur tous les " +"noms d'utilisateur)." + +#: ../../source/command-line-options.rst:262 884510421f124215b58b10346f18bf91 +msgid "" +"``-X``, ``--xmind`` - Generate a legacy XML XMind mindmap with a manifest" +" for modern readers (one report per username)." +msgstr "" +"``-X``, ``--xmind`` - Génère une carte mentale XMind au format XML " +"hérité, avec un manifeste pour les lecteurs récents (un rapport par nom " +"d'utilisateur)." + +#: ../../source/command-line-options.rst:265 799d83ec57984953830af49a17a3ce87 +msgid "``-C``, ``--csv`` - Generate a CSV report (one report per username)." +msgstr "" +"``-C``, ``--csv`` - Génère un rapport CSV (un rapport par nom " +"d'utilisateur)." + +#: ../../source/command-line-options.rst:267 b98a18e94ada4863a385edef78bb4ed8 +msgid "``-T``, ``--txt`` - Generate a TXT report (one report per username)." +msgstr "" +"``-T``, ``--txt`` - Génère un rapport TXT (un rapport par nom " +"d'utilisateur)." + +#: ../../source/command-line-options.rst:269 3169d073ba814ef2a7ae4998c56113c2 +msgid "" +"``-J``, ``--json`` - Generate a JSON report of specific type: simple, " +"ndjson (one report per username). E.g. ``--json ndjson``" +msgstr "" +"``-J``, ``--json`` - Génère un rapport JSON du type indiqué : simple, " +"ndjson (un rapport par nom d'utilisateur). Par exemple ``--json ndjson``" + +#: ../../source/command-line-options.rst:272 077348779720483a8dbfc410cbcc2164 +msgid "" +"``-M``, ``--md`` - Generate a Markdown report (general report on all " +"usernames). See :ref:`markdown-report` below." +msgstr "" +"``-M``, ``--md`` - Génère un rapport Markdown (rapport global sur tous " +"les noms d'utilisateur). Voir :ref:`markdown-report` ci-dessous." + +#: ../../source/command-line-options.rst:275 febacdc7306e4200954f142ad61bf9c5 +msgid "" +"``--neo4j`` - Generate a Neo4j Cypher report: a ``.cypher`` script that " +"recreates the maigret graph (the same one produced by ``--graph``) in a " +"Neo4j database, importable with ``cypher-shell`` or the Neo4j Browser " +"(general report on all usernames). See :ref:`neo4j-export` below." +msgstr "" +"``--neo4j`` - Génère un rapport Cypher pour Neo4j : un script ``.cypher``" +" qui recrée le graphe de Maigret (celui-là même que produit ``--graph``) " +"dans une base Neo4j, importable avec ``cypher-shell`` ou le Neo4j Browser" +" (rapport global sur tous les noms d'utilisateur). Voir :ref:`neo4j-" +"export` ci-dessous." + +#: ../../source/command-line-options.rst:280 abbccc69b80a46a2913115a6d17760a0 +msgid "" +"``--ai`` - Run an AI-powered analysis of the search results using an " +"OpenAI-compatible chat completion API. The internal Markdown report is " +"sent to the model, which returns a short investigation summary that is " +"streamed to the terminal. See :ref:`ai-analysis` below." +msgstr "" +"``--ai`` - Lance une analyse des résultats par IA via une API de " +"complétion de conversation compatible OpenAI. Le rapport Markdown interne" +" est envoyé au modèle, qui renvoie une courte synthèse d'enquête, " +"diffusée au fil de l'eau dans le terminal. Voir :ref:`ai-analysis` ci-" +"dessous." + +#: ../../source/command-line-options.rst:285 1966c6fbfca34b98b577ca0b0c3ff7a6 +msgid "" +"``--ai-model`` - Model name to use with ``--ai``. Defaults to " +"``openai_model`` from settings (``gpt-4o`` out of the box)." +msgstr "" +"``--ai-model`` - Nom du modèle à utiliser avec ``--ai``. Par défaut, la " +"valeur ``openai_model`` des paramètres (``gpt-4o`` d'origine)." + +#: ../../source/command-line-options.rst:288 910bae8a3bcd4579a7300ccfcad401c1 +msgid "" +"``-fo``, ``--folderoutput`` - Results will be saved to this folder, " +"``results`` by default. Will be created if doesn’t exist." +msgstr "" +"``-fo``, ``--folderoutput`` - Les résultats seront enregistrés dans ce " +"dossier, ``results`` par défaut. Il sera créé s'il n'existe pas." + +#: ../../source/command-line-options.rst:291 88420e1f8c4e4225b6762a9fe4666c49 +msgid "" +"``--web PORT`` - Start the built-in web interface on the given port and " +"serve results / downloadable reports from a single page. Example: " +"``maigret --web 5000`` → open ``http://127.0.0.1:5000``. Full walkthrough" +" with screenshots: :ref:`web-interface`." +msgstr "" +"``--web PORT`` - Démarre l'interface web intégrée sur le port indiqué et " +"sert les résultats et les rapports téléchargeables depuis une seule page." +" Exemple : ``maigret --web 5000`` → ouvrez ``http://127.0.0.1:5000``. " +"Présentation complète avec captures d'écran : :ref:`web-interface`." + +#: ../../source/command-line-options.rst:297 0bee9446c0b648c6b11b8a088ced9a71 +msgid "Output options" +msgstr "Options de sortie" + +#: ../../source/command-line-options.rst:299 25078a3a94174fefbaa17815df86e8e4 +msgid "" +"``-v``, ``--verbose`` - Display extra information and metrics. " +"*(loglevel=WARNING)*" +msgstr "" +"``-v``, ``--verbose`` - Affiche des informations et des métriques " +"supplémentaires. *(loglevel=WARNING)*" + +#: ../../source/command-line-options.rst:302 36c272624e4e413497200a49754ffdec +msgid "``-vv``, ``--info`` - Display service information. *(loglevel=INFO)*" +msgstr "" +"``-vv``, ``--info`` - Affiche des informations de service. " +"*(loglevel=INFO)*" + +#: ../../source/command-line-options.rst:304 34f6911c5bdb4ebf903fe231add50895 +msgid "" +"``-vvv``, ``--debug``, ``-d`` - Display debugging information and site " +"responses. *(loglevel=DEBUG)*" +msgstr "" +"``-vvv``, ``--debug``, ``-d`` - Affiche les informations de débogage et " +"les réponses des sites. *(loglevel=DEBUG)*" + +#: ../../source/command-line-options.rst:307 24d29d1d533143a896b2f2c88e0e822e +msgid "``--print-not-found`` - Print sites where the username was not found." +msgstr "" +"``--print-not-found`` - Affiche les sites où le nom d'utilisateur n'a pas" +" été trouvé." + +#: ../../source/command-line-options.rst:309 89841f65b77d4ccf83e684f039f54c78 +msgid "" +"``--print-errors`` - Print errors messages: connection, captcha, site " +"country ban, etc." +msgstr "" +"``--print-errors`` - Affiche les messages d'erreur : connexion, captcha, " +"blocage par pays, etc." + +#: ../../source/command-line-options.rst:313 3922327d83f743c3bda52289b651b4cc +msgid "Other operations modes" +msgstr "Autres modes de fonctionnement" + +#: ../../source/command-line-options.rst:315 4d334b00f27941f2a7d7ce1d8f609024 +msgid "``--version`` - Display version information and dependencies." +msgstr "``--version`` - Affiche les informations de version et les dépendances." + +#: ../../source/command-line-options.rst:317 aa94b6114d344af7b0caad0fadd6572d +msgid "" +"``--self-check`` - Do self-checking for sites and database. Each site is " +"tested by looking up its known-claimed and known-unclaimed usernames and " +"verifying that the results match expectations. Individual site failures " +"(network errors, unexpected exceptions, etc.) are caught and logged " +"without stopping the overall process, so the check always runs to " +"completion. After checking, Maigret reports a summary of issues found. If" +" any sites were disabled (see ``--auto-disable``), Maigret asks if you " +"want to save updates; answering y/Y will rewrite the local database." +msgstr "" +"``--self-check`` - Effectue une auto-vérification des sites et de la " +"base. Chaque site est testé en recherchant ses noms d'utilisateur connus " +"comme existants et comme inexistants, puis en vérifiant que les résultats" +" correspondent aux attentes. Les échecs individuels (erreurs réseau, " +"exceptions inattendues, etc.) sont capturés et journalisés sans " +"interrompre le processus global : la vérification va donc toujours à son " +"terme. À la fin, Maigret présente un résumé des problèmes trouvés. Si des" +" sites ont été désactivés (voir ``--auto-disable``), Maigret demande si " +"vous voulez enregistrer les modifications ; répondre y/Y réécrit la base " +"locale." + +#: ../../source/command-line-options.rst:326 f4f5e252b8214612912eb41670d8b5f0 +msgid "" +"``--auto-disable`` - Used with ``--self-check``: automatically disable " +"sites that fail checks (incorrect detection of claimed/unclaimed " +"usernames, connection errors, or unexpected exceptions). Without this " +"flag, ``--self-check`` only **reports** issues without modifying the " +"database." +msgstr "" +"``--auto-disable`` - À utiliser avec ``--self-check`` : désactive " +"automatiquement les sites qui échouent aux vérifications (mauvaise " +"détection des noms d'utilisateur existants ou inexistants, erreurs de " +"connexion, exceptions inattendues). Sans cette option, ``--self-check`` " +"se contente de **signaler** les problèmes, sans modifier la base." + +#: ../../source/command-line-options.rst:332 17de0af7307b49a09440630925e931e5 +msgid "" +"``--diagnose`` - Used with ``--self-check``: print detailed diagnosis " +"information for each failing site, including the check type, the list of " +"issues found, and recommendations (e.g. suggesting a different " +"``checkType``)." +msgstr "" +"``--diagnose`` - À utiliser avec ``--self-check`` : affiche un diagnostic" +" détaillé pour chaque site en échec, comprenant le type de vérification, " +"la liste des problèmes trouvés et des recommandations (par exemple un " +"autre ``checkType``)." + +#: ../../source/command-line-options.rst:337 88d3a11257864b1e98087686b8adb94f +msgid "" +"``--submit URL`` - Do an automatic analysis of the given account URL or " +"site main page URL to determine the site engine and methods to check " +"account presence. After checking Maigret asks if you want to add the " +"site, answering y/Y will rewrite the local database." +msgstr "" +"``--submit URL`` - Analyse automatiquement l'URL de compte ou la page " +"d'accueil de site indiquée, afin de déterminer le moteur du site et les " +"méthodes de vérification de l'existence d'un compte. À la fin, Maigret " +"demande si vous voulez ajouter le site ; répondre y/Y réécrit la base " +"locale." + +#: ../../source/command-line-options.rst:345 6ba7d6a3aeb84bc4875613d2d9192fce +msgid "Markdown report (LLM-friendly)" +msgstr "Rapport Markdown (adapté aux LLM)" + +#: ../../source/command-line-options.rst:347 73b9e9433356475fbdc5078e64b7b8df +msgid "" +"The ``--md`` / ``-M`` flag generates a Markdown report designed for both " +"human reading and analysis by AI assistants (ChatGPT, Claude, etc.)." +msgstr "" +"L'option ``--md`` / ``-M`` génère un rapport Markdown conçu à la fois " +"pour la lecture humaine et pour l'analyse par des assistants IA (ChatGPT," +" Claude, etc.)." + +#: ../../source/command-line-options.rst:353 4b31ca23db944f789b804d191eb1b6ef +msgid "The report includes:" +msgstr "Le rapport contient :" + +#: ../../source/command-line-options.rst:355 6810ca7d1e3d4ecb986a2df44822a7c8 +msgid "" +"**Summary** with aggregated personal data (all fullnames, locations, bios" +" found across accounts), country tags, website tags, first/last seen " +"timestamps." +msgstr "" +"Un **résumé** des données personnelles agrégées (tous les noms complets, " +"localisations et biographies trouvés sur l'ensemble des comptes), les " +"tags pays, les tags de sites et les dates de première et de dernière " +"activité." + +#: ../../source/command-line-options.rst:356 7b1c63e7a9a940008f8ffbe1b1c51871 +msgid "" +"**Per-account sections** with profile URL, site tags, and all extracted " +"fields (username, bio, follower count, linked accounts, etc.)." +msgstr "" +"Des **sections par compte**, avec l'URL du profil, les tags du site et " +"tous les champs extraits (nom d'utilisateur, biographie, nombre " +"d'abonnés, comptes associés, etc.)." + +#: ../../source/command-line-options.rst:357 9dddf612e5d7499a8ea82ab9125fc09c +msgid "" +"**Possible false positives** disclaimer explaining that accounts may " +"belong to different people." +msgstr "" +"Un avertissement sur les **faux positifs possibles**, rappelant que les " +"comptes peuvent appartenir à des personnes différentes." + +#: ../../source/command-line-options.rst:358 9f9e7ef42f8146918c2d097c1ea1f9fd +msgid "**Ethical use** notice about applicable data protection laws." +msgstr "" +"Une note sur l'**usage éthique** et les lois applicables en matière de " +"protection des données." + +#: ../../source/command-line-options.rst:360 7491158adfd94da6b659ef34a0c335b0 +msgid "**Using with AI tools:**" +msgstr "**Utilisation avec des outils d'IA :**" + +#: ../../source/command-line-options.rst:362 f6e1b6a713994139b210e5e4bacab923 +msgid "" +"The Markdown format is optimized for LLM context windows. You can feed " +"the report directly to an AI assistant for follow-up analysis:" +msgstr "" +"Le format Markdown est optimisé pour les fenêtres de contexte des LLM. " +"Vous pouvez donner le rapport directement à un assistant IA pour une " +"analyse complémentaire :" + +#: ../../source/command-line-options.rst:372 d09f016a434942488884439e0e11bf8f +msgid "" +"The structured Markdown with per-site sections makes it easy for AI tools" +" to extract relationships, cross-reference identities, and identify " +"patterns across accounts." +msgstr "" +"Un Markdown structuré, avec une section par site, permet aux outils d'IA " +"de repérer facilement les relations, de recouper les identités et de " +"dégager des motifs communs à plusieurs comptes." + +#: ../../source/command-line-options.rst:374 878ae418358b4939b02d2d68acef4753 +msgid "" +"For a built-in alternative that calls the model for you and prints the " +"summary directly, see :ref:`ai-analysis` below." +msgstr "" +"Pour une solution intégrée qui appelle le modèle à votre place et affiche" +" directement la synthèse, voir :ref:`ai-analysis` ci-dessous." + +#: ../../source/command-line-options.rst:380 6b717654f9614ff1bdc3f6f6ddf6b90b +msgid "AI analysis (built-in)" +msgstr "Analyse par IA (intégrée)" + +#: ../../source/command-line-options.rst:382 9a12e730b9ae4797aafc10d2313f8eb0 +msgid "" +"The ``--ai`` flag turns the search results into a short investigation " +"summary by sending the internal Markdown report to an OpenAI-compatible " +"chat completion API and streaming the model's reply to the terminal." +msgstr "" +"L'option ``--ai`` transforme les résultats de la recherche en une courte " +"synthèse d'enquête : elle envoie le rapport Markdown interne à une API de" +" complétion de conversation compatible OpenAI et diffuse la réponse du " +"modèle dans le terminal." + +#: ../../source/command-line-options.rst:394 ac52898af2f64d06bb5ced5df2ef5883 +msgid "" +"While ``--ai`` is active, per-site progress lines and the short text " +"report at the end are suppressed so the streamed summary is the main " +"output. The Markdown report itself is built in memory and is **not** " +"written to disk by ``--ai`` alone — combine with ``--md`` if you also " +"want the file on disk." +msgstr "" +"Tant que ``--ai`` est actif, les lignes de progression site par site et " +"le court rapport textuel final sont masqués, afin que la synthèse " +"diffusée reste la sortie principale. Le rapport Markdown lui-même est " +"construit en mémoire et n'est **pas** écrit sur le disque par ``--ai`` " +"seul : combinez-le avec ``--md`` si vous voulez aussi le fichier." + +#: ../../source/command-line-options.rst:400 e02e590dbeca4f548903c47f9171dd9c +msgid "" +"The summary follows a fixed format with sections for the most likely real" +" name, location, occupation, interests, languages, main website, username" +" variants, number of platforms, active years, a confidence rating, and a " +"short list of follow-up leads. The model is instructed to rely only on " +"what is supported by the report and to avoid mixing clearly unrelated " +"profiles into the main identity." +msgstr "" +"La synthèse suit un format fixe, avec des sections pour le nom réel le " +"plus probable, la localisation, la profession, les centres d'intérêt, les" +" langues, le site web principal, les variantes de nom d'utilisateur, le " +"nombre de plateformes, les années d'activité, un indice de confiance et " +"une courte liste de pistes à creuser. Le modèle a pour consigne de s'en " +"tenir à ce que le rapport étaye, et d'éviter de mêler à l'identité " +"principale des profils manifestement sans rapport." + +#: ../../source/command-line-options.rst:407 53939b6e82f141579e47ce2aeb895654 +msgid "" +"**Configuration.** The API key is resolved from " +"``settings.openai_api_key`` first, then from the ``OPENAI_API_KEY`` " +"environment variable. The endpoint defaults to " +"``https://api.openai.com/v1`` and can be redirected to any OpenAI-" +"compatible service (Azure OpenAI, OpenRouter, a local server, …) by " +"setting ``openai_api_base_url`` in ``settings.json``. See :ref:`settings`" +" for the full list of options." +msgstr "" +"**Configuration.** La clé d'API est d'abord cherchée dans " +"``settings.openai_api_key``, puis dans la variable d'environnement " +"``OPENAI_API_KEY``. Le point d'entrée vaut par défaut " +"``https://api.openai.com/v1`` et peut être redirigé vers n'importe quel " +"service compatible OpenAI (Azure OpenAI, OpenRouter, un serveur local, " +"etc.) en définissant ``openai_api_base_url`` dans ``settings.json``. Voir" +" :ref:`settings` pour la liste complète des options." + +#: ../../source/command-line-options.rst:417 3d6a5d97676942489615962e297e176f +msgid "" +"``--ai`` makes a network request to the configured chat completion " +"endpoint and sends the full Markdown report (which contains the gathered " +"profile data). Use it only with providers and accounts you trust with " +"that data." +msgstr "" +"``--ai`` effectue une requête réseau vers le point d'entrée de complétion" +" configuré et lui envoie l'intégralité du rapport Markdown, qui contient " +"les données de profil collectées. Ne l'utilisez qu'avec des fournisseurs " +"et des comptes auxquels vous confiez ces données." + +#: ../../source/command-line-options.rst:425 7911216d24fd4abeafd4e19488587519 +msgid "Neo4j export" +msgstr "Export Neo4j" + +#: ../../source/command-line-options.rst:427 f1e6df660311480e9c6f09133e39efce +msgid "" +"The ``--neo4j`` flag serializes the maigret graph — the same nodes and " +"relationships behind ``--graph`` — into a ``*_neo4j.cypher`` script you " +"can load into a `Neo4j `_ database for querying and " +"visual exploration of how identities, accounts, sites, and extracted data" +" points link together." +msgstr "" +"L'option ``--neo4j`` sérialise le graphe de Maigret, avec les mêmes nœuds" +" et relations que ceux derrière ``--graph``, dans un script " +"``*_neo4j.cypher`` que vous pouvez charger dans une base `Neo4j " +"`_ pour interroger et explorer visuellement les liens" +" entre identités, comptes, sites et données extraites." + +#: ../../source/command-line-options.rst:437 04702cb8b8064635ac4b81309c81ea8c +msgid "" +"This writes ``reports/report_username_neo4j.cypher``. No extra runtime " +"dependency is required (it reuses the ``networkx`` graph that ``--graph``" +" already builds)." +msgstr "" +"Cela écrit ``reports/report_username_neo4j.cypher``. Aucune dépendance " +"supplémentaire n'est nécessaire à l'exécution (le script réutilise le " +"graphe ``networkx`` que ``--graph`` construit déjà)." + +#: ../../source/command-line-options.rst:441 e05fe34582b243b39074c46c75b3be37 +msgid "**What the script contains.**" +msgstr "**Ce que contient le script.**" + +#: ../../source/command-line-options.rst:443 6f7c070c20f8454a89240f05bc279a30 +msgid "" +"A ``CREATE CONSTRAINT ... IF NOT EXISTS`` ensuring the ``name`` property " +"of every ``:MaigretNode`` is unique." +msgstr "" +"Un ``CREATE CONSTRAINT ... IF NOT EXISTS`` qui garantit l'unicité de la " +"propriété ``name`` de chaque ``:MaigretNode``." + +#: ../../source/command-line-options.rst:445 fbbbb8c2d1cf4ee4940b8c8d9e875027 +msgid "" +"One ``MERGE`` per node. Each node carries three properties: ``name`` (the" +" unique key, e.g. ``account: https://github.com/user``), ``type`` " +"(``username``, ``account``, ``fullname``, ``uid``, …) and ``label`` (the " +"human-readable value)." +msgstr "" +"Un ``MERGE`` par nœud. Chaque nœud porte trois propriétés : ``name`` (la " +"clé unique, par exemple ``account: https://github.com/user``), ``type`` " +"(``username``, ``account``, ``fullname``, ``uid``, etc.) et ``label`` (la" +" valeur lisible)." + +#: ../../source/command-line-options.rst:449 caf3fb3be9624608bb895e1f472d182c +msgid "One ``MERGE`` per edge as a ``[:LINKED_TO]`` relationship." +msgstr "Un ``MERGE`` par arête, sous forme de relation ``[:LINKED_TO]``." + +#: ../../source/command-line-options.rst:451 3828c9269b9a43b49082bc95f5f27dff +msgid "" +"Because every node and edge is ``MERGE``-d on its unique key, importing " +"the same report twice is **idempotent** — it updates existing nodes " +"instead of creating duplicates." +msgstr "" +"Comme chaque nœud et chaque arête sont fusionnés par ``MERGE`` sur leur " +"clé unique, importer deux fois le même rapport est **idempotent** : les " +"nœuds existants sont mis à jour plutôt que dupliqués." + +#: ../../source/command-line-options.rst:455 73409d1c895242d48a8a7636a1f1578a +msgid "**Importing.**" +msgstr "**Import.**" + +#: ../../source/command-line-options.rst:462 de96b834cf734d09a52fda462dc3ec24 +msgid "" +"Alternatively, open the Neo4j Browser at ``http://localhost:7474`` and " +"paste the script contents into the query editor. Drop the ``-p`` flag if " +"authentication is disabled, or let ``cypher-shell`` prompt for the " +"password interactively." +msgstr "" +"Vous pouvez aussi ouvrir le Neo4j Browser à l'adresse " +"``http://localhost:7474`` et coller le contenu du script dans l'éditeur " +"de requêtes. Retirez l'option ``-p`` si l'authentification est " +"désactivée, ou laissez ``cypher-shell`` demander le mot de passe de façon" +" interactive." + +#: ../../source/command-line-options.rst:467 2447db3729894df097fc5e287162b741 +msgid "**Exploring the graph.** Once imported, inspect it with Cypher, e.g.:" +msgstr "" +"**Explorer le graphe.** Une fois importé, examinez-le en Cypher, par " +"exemple :" + +#: ../../source/command-line-options.rst:478 4990f77da50b48daa0baac451b67df93 +msgid "" +"The ``CREATE CONSTRAINT ... IF NOT EXISTS FOR ... REQUIRE`` syntax " +"requires Neo4j 4.4+; the ``MERGE`` statements themselves work on any " +"version." +msgstr "" +"La syntaxe ``CREATE CONSTRAINT ... IF NOT EXISTS FOR ... REQUIRE`` " +"demande Neo4j 4.4 ou supérieur ; les instructions ``MERGE`` elles-mêmes " +"fonctionnent avec n'importe quelle version." + diff --git a/docs/source/locale/fr/LC_MESSAGES/development.po b/docs/source/locale/fr/LC_MESSAGES/development.po new file mode 100644 index 00000000..512dbb4c --- /dev/null +++ b/docs/source/locale/fr/LC_MESSAGES/development.po @@ -0,0 +1,1402 @@ +# French translation of the Maigret documentation. +# Copyright (C) 2025, soxoj +# This file is distributed under the same license as the Maigret package. +# +msgid "" +msgstr "" +"Project-Id-Version: Maigret 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-09-15 17:17+0200\n" +"PO-Revision-Date: 2026-09-15 17:20+0200\n" +"Last-Translator: \n" +"Language: fr\n" +"Language-Team: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/development.rst:4 a43b33c7531942fd9d9336387b108044 +msgid "Development" +msgstr "Développement" + +#: ../../source/development.rst:7 40eda00e03aa4dc39fab23352e0d2d6e +msgid "Frequently Asked Questions" +msgstr "Questions fréquentes" + +#: ../../source/development.rst:9 00969eb0c28d442c9a8a2bb6a3330981 +msgid "Where to find the list of supported sites?" +msgstr "Où trouver la liste des sites pris en charge ?" + +#: ../../source/development.rst:11 099e1479af3e41009ebc81b02f64bdff +msgid "" +"The human-readable list of supported sites is available in the `sites.md " +"`_ file in the " +"repository. It's been generated automatically from the main JSON file " +"with the list of supported sites." +msgstr "" +"La liste lisible des sites pris en charge se trouve dans le fichier " +"`sites.md `_ du " +"dépôt. Elle est générée automatiquement à partir du fichier JSON " +"principal qui contient la liste des sites pris en charge." + +#: ../../source/development.rst:14 af0d740dc6cc4a60a7481394f77f4f93 +msgid "" +"The machine-readable JSON file with the list of supported sites is " +"available in the `data.json " +"`_" +" file in the directory `resources`." +msgstr "" +"Le fichier JSON exploitable par une machine, avec la liste des sites pris" +" en charge, se trouve dans le fichier `data.json " +"`_," +" dans le répertoire `resources`." + +#: ../../source/development.rst:17 a17b8e1c46ee4f199ab3664dae82f4a5 +msgid "Which methods to check the account presence are supported?" +msgstr "" +"Quelles méthodes de vérification de l'existence d'un compte sont prises " +"en charge ?" + +#: ../../source/development.rst:19 8d19deba68864e6b8269f9c2800121f8 +msgid "The supported methods (``checkType`` values in ``data.json``) are:" +msgstr "" +"Les méthodes prises en charge (valeurs de ``checkType`` dans " +"``data.json``) sont :" + +#: ../../source/development.rst:21 59172000409c4f5f96fe33a99e26fd81 +msgid "" +"``message`` - the most reliable method, checks if any string from " +"``presenceStrs`` is present and none of the strings from ``absenceStrs`` " +"are present in the HTML response" +msgstr "" +"``message`` - la méthode la plus fiable : elle vérifie qu'au moins une " +"chaîne de ``presenceStrs`` est présente et qu'aucune chaîne " +"d'``absenceStrs`` ne l'est dans la réponse HTML" + +#: ../../source/development.rst:22 b10ba36e33f244aab5dfcb8a9b49ee7b +msgid "``status_code`` - checks that status code of the response is 2XX" +msgstr "``status_code`` - vérifie que le code de statut de la réponse est un 2XX" + +#: ../../source/development.rst:23 dd5cba5eec254d02b385ef4c67be0f0c +msgid "``response_url`` - check if there is not redirect and the response is 2XX" +msgstr "" +"``response_url`` - vérifie qu'il n'y a pas de redirection et que la " +"réponse est un 2XX" + +#: ../../source/development.rst:26 754da98327cf4c889a4f04dfe286c642 +msgid "" +"Maigret natively treats specific anti-bot HTTP status codes (like " +"LinkedIn's ``HTTP 999``) as a standard \"Not Found/Available\" signal " +"instead of throwing an infrastructure Server Error, gracefully preventing" +" false positives." +msgstr "" +"Maigret traite nativement certains codes de statut HTTP anti-bots (comme " +"le ``HTTP 999`` de LinkedIn) comme un signal standard « non trouvé / non " +"disponible », au lieu de lever une erreur serveur d'infrastructure : cela" +" évite proprement les faux positifs." + +#: ../../source/development.rst:28 034ec83238d449ccaec5167bf4a71939 +msgid "" +"See the details of check mechanisms in the `checking.py " +"`_ " +"file." +msgstr "" +"Les détails des mécanismes de vérification se trouvent dans le fichier " +"`checking.py " +"`_." + +#: ../../source/development.rst:31 eca82c1387bf4f57afec10f6f2a1ae98 +msgid "" +"Maigret now uses the **Majestic Million** dataset for site popularity " +"sorting instead of the discontinued Alexa Rank API. For backward " +"compatibility with existing configurations and parsers, the ranking field" +" in `data.json` and internal site models remains named ``alexaRank`` and " +"``alexa_rank``." +msgstr "" +"Maigret utilise désormais le jeu de données **Majestic Million** pour " +"trier les sites par popularité, à la place de l'API Alexa Rank, " +"abandonnée. Pour rester compatible avec les configurations et les " +"analyseurs existants, le champ de classement de `data.json` et des " +"modèles de site internes conserve les noms ``alexaRank`` et " +"``alexa_rank``." + +#: ../../source/development.rst:33 82e85f9108ef4b96a8601966f84e8e02 +msgid "" +"**Mirrors and ``--top-sites``:** When you limit scans with ``--top-sites " +"N``, Maigret also includes *mirror* sites (entries whose ``source`` field" +" points at a parent platform such as Twitter or Instagram) if that parent" +" would appear in the Majestic Million top *N* when disabled sites are " +"considered for ranking. See the **Mirrors** paragraph under ``--top-" +"sites`` in :doc:`command-line-options`." +msgstr "" +"**Miroirs et ``--top-sites`` :** lorsque vous limitez le parcours avec " +"``--top-sites N``, Maigret inclut aussi les sites *miroirs* (les entrées " +"dont le champ ``source`` désigne une plateforme parente comme Twitter ou " +"Instagram), si cette plateforme parente figurerait dans les *N* premiers " +"du Majestic Million lorsque les sites désactivés sont pris en compte dans" +" le classement. Voir le paragraphe **Miroirs** sous ``--top-sites`` dans " +":doc:`command-line-options`." + +#: ../../source/development.rst:36 68047d79d24043a48964ab4964ca1abe +msgid "Testing" +msgstr "Tests" + +#: ../../source/development.rst:38 ffad6e12ca7544dca6c98d69bfc97adb +msgid "It is recommended use Python 3.10 for testing." +msgstr "Il est recommandé d'utiliser Python 3.10 pour les tests." + +#: ../../source/development.rst:40 958f6789a6fc432ba351a67112d059a9 +msgid "Install test requirements:" +msgstr "Installez les dépendances de test :" + +#: ../../source/development.rst:47 223439d6d6434b31b08a9eebe5285888 +msgid "Use the following commands to check Maigret:" +msgstr "Utilisez les commandes suivantes pour vérifier Maigret :" + +#: ../../source/development.rst:69 ff09090282df4b69a14e58909e2889a3 +msgid "Running the tests offline" +msgstr "Lancer les tests hors ligne" + +#: ../../source/development.rst:71 fa574e6c65374bcca1e25aeb437f489c +msgid "" +"Some tests reach real sites, which is why CI runs pytest with ``--reruns " +"3 --reruns-delay 5``. They all carry the ``slow`` marker, so deselecting " +"it leaves a suite that passes with no network at all:" +msgstr "" +"Certains tests interrogent de vrais sites, et c'est pour cela que " +"l'intégration continue lance pytest avec ``--reruns 3 --reruns-delay 5``." +" Ils portent tous le marqueur ``slow`` : les désélectionner laisse une " +"suite qui passe sans le moindre accès réseau." + +#: ../../source/development.rst:79 9656c049d01f4a2ba81f94621b7b33f9 +msgid "" +"This is the invocation to use when building a distribution package, since" +" distribution builders run without network access. Measured on 0.6.4: the" +" full suite fails 9 tests offline, ``-m \"not slow\"`` passes 403 and " +"deselects 24." +msgstr "" +"C'est l'invocation à utiliser pour construire un paquet de distribution, " +"car les systèmes de construction des distributions n'ont pas accès au " +"réseau. Mesuré sur la 0.6.4 : hors ligne, la suite complète échoue sur 9 " +"tests, tandis que ``-m \"not slow\"`` en fait passer 403 et en " +"désélectionne 24." + +#: ../../source/development.rst:83 f07e5c435bd5447198ad84f3e6a6e23c +msgid "" +"If you add a test that talks to the network, mark it ``slow`` — otherwise" +" you silently break offline builds for every downstream packager." +msgstr "" +"Si vous ajoutez un test qui utilise le réseau, marquez-le ``slow`` ; " +"sinon vous cassez silencieusement les constructions hors ligne de tous " +"les empaqueteurs en aval." + +#: ../../source/development.rst:86 b3d5f91c0a644498a79ce0175e77a48b +msgid "# get flamechart of imports to estimate startup time make speed" +msgstr "" +"# obtenir le flamechart des imports pour estimer le temps de démarrage " +"make speed" + +#: ../../source/development.rst:91 c447f5287bf44efcad0c2df789e17e79 +msgid "Site naming conventions" +msgstr "Conventions de nommage des sites" + +#: ../../source/development.rst:93 76bc268ca38a4acf893fcb7fff6ca554 +msgid "" +"Site names are the keys in ``data.json`` and appear in user-facing " +"reports. Follow these rules:" +msgstr "" +"Les noms de sites sont les clés de ``data.json`` et apparaissent dans les" +" rapports vus par les utilisateurs. Suivez ces règles :" + +#: ../../source/development.rst:95 b99ad9cdfc7a4ebebffac69b3d803740 +msgid "**Title Case** by default: ``Product Hunt``, ``Hacker News``." +msgstr "**Majuscules de titre** par défaut : ``Product Hunt``, ``Hacker News``." + +#: ../../source/development.rst:96 4052aa2aa6854360a9e33f9d64542bea +msgid "" +"**Lowercase** only if the brand itself is written that way: ``kofi``, " +"``note``, ``hi5``." +msgstr "" +"**Minuscules** uniquement si la marque s'écrit ainsi : ``kofi``, " +"``note``, ``hi5``." + +#: ../../source/development.rst:97 68cb139d75b040b5b7911a1e784f0e5d +msgid "" +"**No domain suffix** (``calendly.com`` → ``Calendly``), unless the domain" +" is part of the recognized brand name: ``last.fm``, ``VC.ru``, " +"``Archive.org``." +msgstr "" +"**Pas de suffixe de domaine** (``calendly.com`` → ``Calendly``), sauf si " +"le domaine fait partie du nom de marque reconnu : ``last.fm``, ``VC.ru``," +" ``Archive.org``." + +#: ../../source/development.rst:98 78e20b26f111411b9e5eabd1a4e9a317 +msgid "" +"**No full UPPERCASE** unless the brand is an acronym: ``VK``, ``CNET``, " +"``ICQ``, ``IFTTT``." +msgstr "" +"**Pas de MAJUSCULES intégrales**, sauf si la marque est un acronyme : " +"``VK``, ``CNET``, ``ICQ``, ``IFTTT``." + +#: ../../source/development.rst:99 84c3f5a66ed24300b3005860dd57a7bc +msgid "**No** ``www.`` **or** ``https://`` **prefix** in the name." +msgstr "**Pas de préfixe** ``www.`` **ni** ``https://`` dans le nom." + +#: ../../source/development.rst:100 c518f9bd738d4b7093ccb51578f18ec6 +msgid "" +"**Spaces** are allowed when the brand uses them: ``Star Citizen``, " +"``Google Maps``." +msgstr "" +"**Les espaces** sont autorisés lorsque la marque en utilise : ``Star " +"Citizen``, ``Google Maps``." + +#: ../../source/development.rst:101 e9d0525d06b4451f85c46b260ad5dbbb +#, python-brace-format +msgid "**{username} templates** in names are acceptable: ``{username}.tilda.ws``." +msgstr "" +"**Les gabarits {username}** dans les noms sont acceptés : " +"``{username}.tilda.ws``." + +#: ../../source/development.rst:103 f182134fa0ac47918fc9af752202166d +msgid "When in doubt, check how the service refers to itself on its homepage." +msgstr "" +"En cas de doute, regardez comment le service se désigne lui-même sur sa " +"page d'accueil." + +#: ../../source/development.rst:106 74ca4d33aab849df91e4823276970170 +msgid "How to fix false-positives" +msgstr "Comment corriger les faux positifs" + +#: ../../source/development.rst:108 c72ca7ca61fa4b7aa727dee0c87e2cb6 +msgid "" +"If you want to work with sites database, don't forget to activate " +"statistics update git hook, command for it would look like this: ``git " +"config --local core.hooksPath .githooks/``." +msgstr "" +"Si vous voulez travailler sur la base de sites, n'oubliez pas d'activer " +"le hook git de mise à jour des statistiques ; la commande ressemble à " +"ceci : ``git config --local core.hooksPath .githooks/``." + +#: ../../source/development.rst:110 7e44eb195ce0479990d58f5c57839af7 +msgid "" +"You should make your git commits from your maigret git repo folder, or " +"else the hook wouldn't find the statistics update script." +msgstr "" +"Vous devez faire vos commits git depuis le répertoire de votre dépôt " +"maigret, sans quoi le hook ne trouvera pas le script de mise à jour des " +"statistiques." + +#: ../../source/development.rst:112 485ae61d71be45b0812909e17bcab75b +msgid "Determine the problematic site." +msgstr "Identifiez le site problématique." + +#: ../../source/development.rst:114 97ed0f7a25fe4d72b1c2f763568ac65f +msgid "" +"If you already know which site has a false-positive and want to fix it " +"specifically, go to the next step." +msgstr "" +"Si vous savez déjà quel site produit un faux positif et que vous voulez " +"le corriger précisément, passez à l'étape suivante." + +#: ../../source/development.rst:116 34733d31c251413fb2c8674f7973e173 +msgid "" +"Otherwise, simply run a search with a random username (e.g. " +"`laiuhi3h4gi3u4hgt`) and check the results. Alternatively, you can use " +"the `community Telegram bot `_." +msgstr "" +"Sinon, lancez simplement une recherche avec un nom d'utilisateur " +"aléatoire (par exemple `laiuhi3h4gi3u4hgt`) et regardez les résultats. " +"Vous pouvez aussi utiliser le `bot Telegram communautaire " +"`_." + +#: ../../source/development.rst:119 ceeefe652a6642ada98fecb28ea8dec1 +msgid "Open the account link in your browser and check:" +msgstr "Ouvrez le lien du compte dans votre navigateur et vérifiez :" + +#: ../../source/development.rst:121 52bf41bfcb3548d8b015fae7fe836747 +msgid "If the site is completely gone, remove it from the list" +msgstr "Si le site a complètement disparu, retirez-le de la liste" + +#: ../../source/development.rst:122 c1440320738748d88819dbf077e5c4b3 +msgid "" +"If the site still works but looks different, update in data.json how we " +"check it" +msgstr "" +"Si le site fonctionne encore mais a changé d'apparence, mettez à jour " +"dans data.json la façon dont nous le vérifions" + +#: ../../source/development.rst:123 e13af15b29584d8abe2187896c1e6b40 +msgid "If the site requires login to view profiles, disable checking it" +msgstr "" +"Si le site exige une connexion pour consulter les profils, désactivez sa " +"vérification" + +#: ../../source/development.rst:125 5b69d8992b644d449ae3004bcd78407e +msgid "" +"Find the site in the `data.json " +"`_" +" file." +msgstr "" +"Trouvez le site dans le fichier `data.json " +"`_." + +#: ../../source/development.rst:127 1108c96e2b4a488fa21bdb69bde43e21 +msgid "" +"If the ``checkType`` method is not ``message`` and you are going to fix " +"check, update it: - put ``message`` in ``checkType`` - put in " +"``absenceStrs`` a keyword that is present in the HTML response for an " +"non-existing account - put in ``presenceStrs`` a keyword that is present " +"in the HTML response for an existing account" +msgstr "" +"Si la méthode ``checkType`` n'est pas ``message`` et que vous comptez " +"corriger la vérification, changez-la : - mettez ``message`` dans " +"``checkType`` - mettez dans ``absenceStrs`` un mot-clé présent dans la " +"réponse HTML d'un compte inexistant - mettez dans ``presenceStrs`` un " +"mot-clé présent dans la réponse HTML d'un compte existant" + +#: ../../source/development.rst:132 de36a51d8d774e3088a9a06b26fe0f05 +msgid "" +"If you have trouble determining the right keywords, you can use automatic" +" detection by passing the account URL with the ``--submit`` option:" +msgstr "" +"Si vous avez du mal à déterminer les bons mots-clés, vous pouvez utiliser" +" la détection automatique en passant l'URL du compte avec l'option " +"``--submit`` :" + +#: ../../source/development.rst:138 e345ed5fa4fd442fa7d949d7acc4f8f3 +msgid "To disable checking, set ``disabled`` to ``true`` or simply run:" +msgstr "" +"Pour désactiver la vérification, mettez ``disabled`` à ``true`` ou lancez" +" simplement :" + +#: ../../source/development.rst:144 037f9527ab024ecd99999ab7400dc421 +msgid "To debug the check method using the response HTML, you can run:" +msgstr "" +"Pour déboguer la méthode de vérification à partir du HTML de la réponse, " +"vous pouvez lancer :" + +#: ../../source/development.rst:150 2cd5529b22c2488b9889c22b5124f60f +msgid "There are few options for sites data.json helpful in various cases:" +msgstr "Il existe quelques options de data.json utiles selon les cas :" + +#: ../../source/development.rst:152 b7f7d6bfbf0f4602a533240be8dc7607 +msgid "" +"``engine`` - a predefined check for the sites of certain type (e.g. " +"forums), see the ``engines`` section in the JSON file" +msgstr "" +"``engine`` - une vérification prédéfinie pour les sites d'un certain type" +" (les forums, par exemple), voir la section ``engines`` du fichier JSON" + +#: ../../source/development.rst:153 a488857d86fe47de996f0012025f52f2 +msgid "``headers`` - a dictionary of additional headers to be sent to the site" +msgstr "``headers`` - un dictionnaire d'en-têtes supplémentaires à envoyer au site" + +#: ../../source/development.rst:154 9e64d08d2c944008ae78fe1521a15da4 +msgid "" +"``requestHeadOnly`` - set to ``true`` if it's enough to make a HEAD " +"request to the site" +msgstr "" +"``requestHeadOnly`` - à mettre à ``true`` s'il suffit d'envoyer une " +"requête HEAD au site" + +#: ../../source/development.rst:155 2f043f4fd985435f93dec3135c0393e4 +msgid "" +"``regexCheck`` - a regex to check if the username is valid, in case of " +"frequent false-positives" +msgstr "" +"``regexCheck`` - une expression régulière qui valide le nom " +"d'utilisateur, en cas de faux positifs fréquents" + +#: ../../source/development.rst:156 b4fdb15605b54654b651f183aee519a6 +msgid "" +"``requestMethod`` - set the HTTP method to use (e.g., ``POST``). By " +"default, Maigret natively defaults to GET or HEAD." +msgstr "" +"``requestMethod`` - définit la méthode HTTP à utiliser (``POST``, par " +"exemple). Par défaut, Maigret utilise nativement GET ou HEAD." + +#: ../../source/development.rst:157 379cbcfb5ee44d24aeea82a1de4c601a +#, python-brace-format +msgid "" +"``requestPayload`` - a dictionary with the JSON payload to send for POST " +"requests (e.g., ``{\"username\": \"{username}\"}``), extremely useful for" +" parsing GraphQL or modern JSON APIs." +msgstr "" +"``requestPayload`` - un dictionnaire contenant la charge utile JSON à " +"envoyer pour les requêtes POST (par exemple ``{\"username\": " +"\"{username}\"}``), extrêmement utile pour interroger des API GraphQL ou " +"des API JSON modernes." + +#: ../../source/development.rst:158 ed8e443aed0d4f17aaed2803df4db302 +msgid "" +"``protection`` - a list of protection types detected on the site (see " +"below)." +msgstr "" +"``protection`` - la liste des types de protection détectés sur le site " +"(voir plus bas)." + +#: ../../source/development.rst:161 84af2329b98f4ba7a2668b4bef74a66d +msgid "``protection`` (site protection tracking)" +msgstr "``protection`` (suivi des protections d'un site)" + +#: ../../source/development.rst:163 f1f4dd7b6fe14888aeaf3f9de439b9c1 +msgid "" +"The ``protection`` field records what kind of anti-bot protection a site " +"uses. Maigret reads this field and automatically applies the appropriate " +"bypass mechanism where one exists." +msgstr "" +"Le champ ``protection`` consigne le type de protection anti-bot utilisé " +"par un site. Maigret lit ce champ et applique automatiquement le " +"mécanisme de contournement adapté lorsqu'il en existe un." + +#: ../../source/development.rst:165 c2d84abfc45742acb9d572b5f31aa227 +msgid "Two categories of tag:" +msgstr "Deux catégories de tags :" + +#: ../../source/development.rst:167 d1767a4e82f84aba9be30dc54a41f87b +msgid "" +"**Load-bearing.** Maigret changes its HTTP client or headers based on the" +" tag. Currently only ``tls_fingerprint`` (switches to ``curl_cffi`` with " +"Chrome-class TLS)." +msgstr "" +"**Porteurs de comportement.** Maigret change de client HTTP ou d'en-têtes" +" en fonction du tag. Actuellement, seul ``tls_fingerprint`` est dans ce " +"cas (bascule vers ``curl_cffi`` avec un TLS de type Chrome)." + +#: ../../source/development.rst:168 044bb6b018174dd0a42dd3aaca8ea230 +msgid "" +"**Documentation-only.** Maigret does **not** change behavior based on the" +" tag; it records *why* the site is hard so a future solver can target the" +" right set of sites without re-auditing." +msgstr "" +"**Purement documentaires.** Maigret ne change **pas** de comportement " +"selon le tag ; il consigne *pourquoi* le site est difficile, afin qu'un " +"futur solveur puisse viser le bon ensemble de sites sans tout réauditer." + +#: ../../source/development.rst:170 c3137263bb9644c8abc979efed8a0634 +msgid "" +"Within the documentation-only tags, there is a further split that " +"dictates whether the site is ``disabled: true``:" +msgstr "" +"Parmi les tags purement documentaires, une autre distinction détermine si" +" le site est ``disabled: true`` :" + +#: ../../source/development.rst:172 5faf4cd734284f8bb9bea0bcfd2038e0 +msgid "" +"``ip_reputation`` is the **only** doc-tag that **keeps the site " +"enabled**. It means \"works for most users, fails from datacenter/cloud " +"IPs.\" Disabling would silently hide a working site from anyone with a " +"clean IP. The fix is **external** to Maigret (residential IP or " +"``--proxy``)." +msgstr "" +"``ip_reputation`` est le **seul** tag documentaire qui **laisse le site " +"activé**. Il signifie « fonctionne pour la plupart des utilisateurs, " +"échoue depuis les IP de datacenter ou de cloud ». Le désactiver " +"masquerait silencieusement un site fonctionnel à tous ceux qui ont une IP" +" propre. Le remède est **extérieur** à Maigret (IP résidentielle ou " +"``--proxy``)." + +#: ../../source/development.rst:173 b8830faf49d241cbb71588b74549961b +msgid "" +"``cf_js_challenge``, ``cf_firewall``, ``aws_waf_js_challenge``, " +"``ddos_guard_challenge``, ``custom_bot_protection``, ``js_challenge`` all" +" pair with ``disabled: true``. They mean \"does not work for anyone right" +" now\"; the tag identifies the provider so that when a bypass ships, " +"every site with that tag can be re-enabled in one pass." +msgstr "" +"``cf_js_challenge``, ``cf_firewall``, ``aws_waf_js_challenge``, " +"``ddos_guard_challenge``, ``custom_bot_protection`` et ``js_challenge`` " +"vont tous de pair avec ``disabled: true``. Ils signifient « ne fonctionne" +" actuellement pour personne » ; le tag identifie le fournisseur, de sorte" +" que le jour où un contournement arrive, tous les sites portant ce tag " +"peuvent être réactivés d'un coup." + +#: ../../source/development.rst:175 f8d91ac8cc3348eca96f6eebadc20374 +msgid "Supported values:" +msgstr "Valeurs prises en charge :" + +#: ../../source/development.rst:177 9a65fdd49c2d4a2ba56fcfa98ff4ecee +msgid "" +"``tls_fingerprint`` *(load-bearing; site stays enabled)* — the site " +"fingerprints the TLS handshake (JA3/JA4) and blocks non-browser clients. " +"Maigret automatically uses ``curl_cffi`` with Chrome browser emulation to" +" bypass this. Requires the ``curl_cffi`` package (included as a " +"dependency). Examples: Instagram, NPM, Codepen, Kickstarter, Letterboxd." +msgstr "" +"``tls_fingerprint`` *(porteur de comportement ; le site reste activé)* — " +"le site prend l'empreinte de la poignée de main TLS (JA3/JA4) et bloque " +"les clients qui ne sont pas des navigateurs. Maigret utilise " +"automatiquement ``curl_cffi`` avec une émulation de navigateur Chrome " +"pour contourner cela. Nécessite le paquet ``curl_cffi`` (inclus dans les " +"dépendances). Exemples : Instagram, NPM, Codepen, Kickstarter, " +"Letterboxd." + +#: ../../source/development.rst:178 3e6a51830670477baf895536c447c8c6 +msgid "" +"``ip_reputation`` *(documentation-only; site stays enabled)* — the site " +"blocks requests from datacenter/cloud IPs regardless of headers or TLS. " +"Cannot be bypassed automatically; run Maigret from a regular internet " +"connection (not a datacenter) or use a proxy (``--proxy``). The site is " +"**not** marked ``disabled`` because it continues to work for users on " +"residential IPs. Examples: Reddit, Patreon, Figma, OnlyFans." +msgstr "" +"``ip_reputation`` *(purement documentaire ; le site reste activé)* — le " +"site bloque les requêtes venant d'IP de datacenter ou de cloud, quels que" +" soient les en-têtes ou le TLS. Impossible à contourner automatiquement :" +" lancez Maigret depuis une connexion internet ordinaire (pas depuis un " +"datacenter), ou utilisez un proxy (``--proxy``). Le site n'est **pas** " +"marqué ``disabled``, car il continue de fonctionner pour les utilisateurs" +" sur IP résidentielle. Exemples : Reddit, Patreon, Figma, OnlyFans." + +#: ../../source/development.rst:179 e612faece996499a8957c0cbbc312ef2 +msgid "" +"``cf_js_challenge`` *(documentation-only; pair with ``disabled: true``)* " +"— Cloudflare Managed Challenge / Turnstile JS challenge. Symptom: HTTP " +"403 with ``cf-mitigated: challenge`` header; body contains " +"``challenges.cloudflare.com``, ``_cf_chl_opt``, ``window._cf_chl``, or " +"\"Just a moment\". Not bypassable via ``curl_cffi`` TLS impersonation " +"(verified across Chrome 123/124/131, Safari 17/18, Firefox 133/135, Edge " +"101 — all return the same 403 challenge page); a real browser executing " +"the challenge JS is required to obtain the clearance cookie. Sites stay " +"``disabled: true`` until a CF-challenge solver is integrated. Examples: " +"DMOJ, Elakiri, Fanlore, Bdoutdoors, TheStudentRoom, forum.hr." +msgstr "" +"``cf_js_challenge`` *(purement documentaire ; à associer à ``disabled: " +"true``)* — défi JavaScript Cloudflare Managed Challenge ou Turnstile. " +"Symptôme : un HTTP 403 avec l'en-tête ``cf-mitigated: challenge`` ; le " +"corps contient ``challenges.cloudflare.com``, ``_cf_chl_opt``, " +"``window._cf_chl``, ou « Just a moment ». Non contournable par " +"l'imitation TLS de ``curl_cffi`` (vérifié avec Chrome 123/124/131, Safari" +" 17/18, Firefox 133/135 et Edge 101 : tous renvoient la même page de défi" +" en 403) ; il faut un vrai navigateur exécutant le JavaScript du défi " +"pour obtenir le cookie de clearance. Ces sites restent ``disabled: true``" +" tant qu'un solveur de défis CF n'est pas intégré. Exemples : DMOJ, " +"Elakiri, Fanlore, Bdoutdoors, TheStudentRoom, forum.hr." + +#: ../../source/development.rst:180 0bbca66ef9a540de9090428b762108e8 +msgid "" +"``cf_firewall`` *(documentation-only; pair with ``disabled: true``)* — " +"Cloudflare firewall rule / bot score block (WAF action=block, **not** " +"action=challenge). Symptom: HTTP 403 served by Cloudflare (``server: " +"cloudflare``, ``cf-ray`` header) **without** JS-challenge markers — body " +"typically shows \"Access denied\", \"Attention Required\", or just a bare" +" 1015/1016/1020 error page. Unlike ``ip_reputation``, residential IPs are" +" **not** sufficient to bypass — Cloudflare decides based on a composite " +"of bot score, TLS fingerprint, UA, ASN, and custom site-owner rules, so " +"``curl_cffi`` Chrome impersonation from a residential line still returns " +"403. Sites stay ``disabled: true`` until a per-site bypass (cookies, real" +" browser, or residential+clean session) is found. Examples: Fark, Fodors," +" Huntingnet, Hunttalk." +msgstr "" +"``cf_firewall`` *(purement documentaire ; à associer à ``disabled: " +"true``)* — règle de pare-feu Cloudflare ou blocage sur score de bot (WAF " +"action=block, et **non** action=challenge). Symptôme : un HTTP 403 servi " +"par Cloudflare (``server: cloudflare``, en-tête ``cf-ray``) **sans** " +"marqueur de défi JavaScript ; le corps affiche typiquement « Access " +"denied », « Attention Required », ou simplement une page d'erreur " +"1015/1016/1020 nue. Contrairement à ``ip_reputation``, une IP " +"résidentielle ne suffit **pas** à passer : Cloudflare décide à partir " +"d'un ensemble composite (score de bot, empreinte TLS, agent utilisateur, " +"ASN et règles propres au propriétaire du site), si bien que l'imitation " +"de Chrome par ``curl_cffi`` depuis une ligne résidentielle renvoie encore" +" un 403. Ces sites restent ``disabled: true`` tant qu'un contournement " +"propre au site (cookies, vrai navigateur, ou session propre en " +"résidentiel) n'a pas été trouvé. Exemples : Fark, Fodors, Huntingnet, " +"Hunttalk." + +#: ../../source/development.rst:181 f7085a8bc89f41398338ae9a73fc1be7 +msgid "" +"``aws_waf_js_challenge`` *(documentation-only; pair with ``disabled: " +"true``)* — the site is protected by AWS WAF with a JavaScript challenge. " +"Symptom: HTTP 202 with empty body and ``x-amzn-waf-action: challenge`` " +"header (a token-granting challenge that requires executing the " +"CAPTCHA/challenge JS bundle). Neither ``curl_cffi`` TLS impersonation nor" +" User-Agent changes bypass this — a real browser or the official AWS WAF " +"challenge-solver SDK is required. Sites stay ``disabled: true`` until a " +"solver is integrated. Example: Dreamwidth." +msgstr "" +"``aws_waf_js_challenge`` *(purement documentaire ; à associer à " +"``disabled: true``)* — le site est protégé par AWS WAF avec un défi " +"JavaScript. Symptôme : un HTTP 202 au corps vide, avec l'en-tête ``x" +"-amzn-waf-action: challenge`` (un défi délivrant un jeton, qui exige " +"d'exécuter le bundle JavaScript du CAPTCHA ou du défi). Ni l'imitation " +"TLS de ``curl_cffi`` ni un changement d'agent utilisateur n'en viennent à" +" bout : il faut un vrai navigateur ou le SDK officiel de résolution de " +"défis AWS WAF. Ces sites restent ``disabled: true`` tant qu'un solveur " +"n'est pas intégré. Exemple : Dreamwidth." + +#: ../../source/development.rst:182 e2911baa0a0a4755be3acb73a127e73f +msgid "" +"``ddos_guard_challenge`` *(documentation-only; pair with ``disabled: " +"true``)* — DDoS-Guard (ddos-guard.net) anti-bot page. Symptom: HTTP 403 " +"with ``server: ddos-guard`` header; body contains \"DDoS-Guard\". DDoS-" +"Guard fingerprints different UAs per source IP, so a single User-Agent " +"override does not work across environments; a JS-capable bypass or DDoS-" +"Guard-aware solver is required. Sites stay ``disabled: true`` until a " +"solver is integrated. Example: ForumHouse." +msgstr "" +"``ddos_guard_challenge`` *(purement documentaire ; à associer à " +"``disabled: true``)* — page anti-bot DDoS-Guard (ddos-guard.net). " +"Symptôme : un HTTP 403 avec l'en-tête ``server: ddos-guard`` ; le corps " +"contient « DDoS-Guard ». DDoS-Guard prend l'empreinte d'agents " +"utilisateurs différents selon l'IP source : remplacer un seul agent " +"utilisateur ne fonctionne donc pas d'un environnement à l'autre. Il faut " +"un contournement capable d'exécuter du JavaScript, ou un solveur qui " +"connaît DDoS-Guard. Ces sites restent ``disabled: true`` tant qu'un " +"solveur n'est pas intégré. Exemple : ForumHouse." + +#: ../../source/development.rst:183 0c6eb74688474b2ba42f2e3d1c93d207 +msgid "" +"``js_challenge`` *(documentation-only; pair with ``disabled: true``)* — " +"**fallback** for JavaScript-challenge systems whose provider cannot be " +"identified (custom in-house challenge pages that are not Cloudflare, AWS " +"WAF, or any other recognized vendor). Prefer a provider-specific tag " +"whenever the provider can be pinned down from response headers or body " +"signatures." +msgstr "" +"``js_challenge`` *(purement documentaire ; à associer à ``disabled: " +"true``)* — **valeur de repli** pour les systèmes de défi JavaScript dont " +"le fournisseur ne peut pas être identifié (pages de défi maison, qui ne " +"relèvent ni de Cloudflare, ni d'AWS WAF, ni d'aucun autre éditeur " +"reconnu). Préférez toujours un tag propre au fournisseur dès que celui-ci" +" peut être identifié à partir des en-têtes ou des signatures du corps de " +"la réponse." + +#: ../../source/development.rst:184 43e3531e0bc342c4b8433fc36a06bf51 +msgid "" +"``custom_bot_protection`` *(documentation-only; pair with ``disabled: " +"true``)* — **fallback** for non-JS-challenge bot protection served by a " +"custom/in-house system (not Cloudflare, not AWS WAF, not DDoS-Guard). " +"Typical symptom: HTTP 403 from the site's own origin server (``server: " +"nginx``, AWS ELB, etc.) with a branded block page, returned regardless of" +" TLS fingerprint or residential IP. Not generically bypassable; " +"investigate per site (cookies, session, proxy geography). Examples: " +"Hackerearth (\"HackerEarth Guardian\"), FreelanceJob (nginx-level block)." +msgstr "" +"``custom_bot_protection`` *(purement documentaire ; à associer à " +"``disabled: true``)* — **valeur de repli** pour les protections anti-bot " +"sans défi JavaScript, servies par un système maison (ni Cloudflare, ni " +"AWS WAF, ni DDoS-Guard). Symptôme typique : un HTTP 403 venant du serveur" +" d'origine du site lui-même (``server: nginx``, un ELB AWS, etc.), avec " +"une page de blocage aux couleurs du site, renvoyée quels que soient " +"l'empreinte TLS ou le caractère résidentiel de l'IP. Pas de contournement" +" générique : il faut enquêter site par site (cookies, session, géographie" +" du proxy). Exemples : Hackerearth (« HackerEarth Guardian »), " +"FreelanceJob (blocage au niveau de nginx)." + +#: ../../source/development.rst:186 f3ca7715161b4707a448d314d846aa19 +msgid "" +"**Rule: prefer provider-specific protection tags.** When a site is " +"blocked by an identifiable anti-bot vendor, always record the vendor in " +"the tag (``cf_js_challenge``, ``cf_firewall``, ``aws_waf_js_challenge``, " +"``ddos_guard_challenge``, and future additions such as " +"``sucuri_challenge``, ``incapsula_challenge``). The generic " +"``js_challenge`` and ``custom_bot_protection`` tags are reserved for " +"custom/unknown systems. Rationale: bypass solvers are inherently " +"provider-specific (a Cloudflare Turnstile solver does not help with AWS " +"WAF); recording the provider in advance lets us fan out fixes the moment " +"a per-provider solver is added, without re-auditing every disabled site. " +"The same principle applies to other protection categories when the " +"provider is identifiable." +msgstr "" +"**Règle : préférez les tags de protection propres au fournisseur.** " +"Lorsqu'un site est bloqué par un éditeur anti-bot identifiable, consignez" +" toujours cet éditeur dans le tag (``cf_js_challenge``, ``cf_firewall``, " +"``aws_waf_js_challenge``, ``ddos_guard_challenge``, et les ajouts futurs " +"comme ``sucuri_challenge`` ou ``incapsula_challenge``). Les tags " +"génériques ``js_challenge`` et ``custom_bot_protection`` sont réservés " +"aux systèmes maison ou inconnus. La raison : les solveurs sont par nature" +" propres à un fournisseur (un solveur Cloudflare Turnstile n'aide en rien" +" face à AWS WAF) ; consigner le fournisseur à l'avance permet de déployer" +" les corrections dès qu'un solveur pour ce fournisseur est ajouté, sans " +"réauditer chaque site désactivé. Le même principe vaut pour les autres " +"catégories de protection lorsque le fournisseur est identifiable." + +#: ../../source/development.rst:188 cd9a47001b5641339b3c69d8b0a6c95c +msgid "Example:" +msgstr "Exemple :" + +#: ../../source/development.rst:201 7e39ef6271f84d7eb7690e2780094c05 +msgid "``urlProbe`` (optional profile probe URL)" +msgstr "``urlProbe`` (URL de sonde facultative)" + +#: ../../source/development.rst:203 22b693bb8bbe487ea6f9cd2fb36ba236 +msgid "" +"By default Maigret performs the HTTP request to the same URL as ``url`` " +"(the public profile link pattern)." +msgstr "" +"Par défaut, Maigret envoie sa requête HTTP à la même URL que ``url``, le " +"gabarit du lien de profil public." + +#: ../../source/development.rst:205 60c7717eebe34292a84ae10db722a7c0 +msgid "" +"If you set ``urlProbe`` in ``data.json``, Maigret **fetches** that URL " +"for the presence check (API, GraphQL, JSON endpoint, etc.), while " +"**reports and ``url_user``** still use ``url`` — the human-readable " +"profile page users should open." +msgstr "" +"Si vous définissez ``urlProbe`` dans ``data.json``, Maigret **interroge**" +" cette URL pour la vérification de présence (API, GraphQL, point d'entrée" +" JSON, etc.), tandis que **les rapports et ``url_user``** continuent " +"d'utiliser ``url``, la page de profil lisible que les utilisateurs " +"doivent pouvoir ouvrir." + +#: ../../source/development.rst:207 9ab1711d96a84f769eead7fb9961e740 +#, python-brace-format +msgid "" +"Placeholders: ``{username}``, ``{urlMain}``, ``{urlSubpath}`` (same as " +"for ``url``). Example: GitHub uses ``url`` " +"``https://github.com/{username}`` and ``urlProbe`` " +"``https://api.github.com/users/{username}``; Picsart uses the web profile" +" ``https://picsart.com/u/{username}`` and probes " +"``https://api.picsart.com/users/show/{username}.json``." +msgstr "" +"Emplacements disponibles : ``{username}``, ``{urlMain}``, " +"``{urlSubpath}`` (les mêmes que pour ``url``). Exemple : GitHub utilise " +"l'``url`` ``https://github.com/{username}`` et l'``urlProbe`` " +"``https://api.github.com/users/{username}`` ; Picsart utilise le profil " +"web ``https://picsart.com/u/{username}`` et sonde " +"``https://api.picsart.com/users/show/{username}.json``." + +#: ../../source/development.rst:210 482b5057ffa34690aa598685a636cfc5 +#, python-brace-format +msgid "" +"``url`` must **always** stay a human-openable profile page — it is shown " +"to the user and printed as the clickable result link. Never put an API / " +"JSON / GraphQL endpoint in ``url``; that belongs in ``urlProbe``. If the " +"check needs an API endpoint, keep the browsable profile in ``url`` and " +"add the API URL as ``urlProbe`` (e.g. Weibo: ``url`` " +"``https://weibo.com/n/{username}``, ``urlProbe`` " +"``https://weibo.com/ajax/profile/info?screen_name={username}``)." +msgstr "" +"``url`` doit **toujours** rester une page de profil ouvrable par un " +"humain : elle est montrée à l'utilisateur et affichée comme lien " +"cliquable dans les résultats. Ne mettez jamais de point d'entrée API / " +"JSON / GraphQL dans ``url`` ; sa place est dans ``urlProbe``. Si la " +"vérification a besoin d'un point d'entrée d'API, gardez le profil " +"navigable dans ``url`` et ajoutez l'URL de l'API dans ``urlProbe`` (par " +"exemple Weibo : ``url`` ``https://weibo.com/n/{username}``, ``urlProbe`` " +"``https://weibo.com/ajax/profile/info?screen_name={username}``)." + +#: ../../source/development.rst:217 b461fbd83a4d40e9b1e8afbcd1c112a6 +msgid "" +"Implementation: ``make_site_result`` in `checking.py " +"`__." +msgstr "" +"Implémentation : ``make_site_result`` dans `checking.py " +"`__." + +#: ../../source/development.rst:220 cbe7c176b405412fa2659339e387b677 +msgid "Site check fixes using LLM" +msgstr "Corriger les vérifications de sites à l'aide d'un LLM" + +#: ../../source/development.rst:223 efab790423694b08829e4d5e0ad96645 +msgid "" +"The ``LLM/`` directory at the root of the repository contains detailed " +"instructions for editing site checks (in Markdown format): checklist, " +"full guide to ``checkType`` / ``data.json`` / ``urlProbe``, handling " +"false positives, searching for public JSON APIs, and the proposal log for" +" `socid_extractor `_." +msgstr "" +"Le répertoire ``LLM/``, à la racine du dépôt, contient des instructions " +"détaillées pour modifier les vérifications de sites (au format Markdown) " +": liste de contrôle, guide complet de ``checkType`` / ``data.json`` / " +"``urlProbe``, traitement des faux positifs, recherche d'API JSON " +"publiques, et journal de propositions pour `socid_extractor `_." + +#: ../../source/development.rst:225 7405f8aa21244e358fee13dd6c3cefcf +msgid "Main files:" +msgstr "Fichiers principaux :" + +#: ../../source/development.rst:227 4d3927018c404e70971e8794ea091fcb +msgid "" +"`site-checks-playbook.md `_ — short checklist" +msgstr "" +"`site-checks-playbook.md `_ — liste de contrôle courte" + +#: ../../source/development.rst:228 2e3b3f7a970a44668914fe4a1d856855 +msgid "" +"`site-checks-guide.md `_ — detailed guide" +msgstr "" +"`site-checks-guide.md `_ — guide détaillé" + +#: ../../source/development.rst:229 ec16764a5e4c49169ab4d3cecb73b7c8 +msgid "" +"`socid_extractor_improvements.log " +"`_" +" — template and entries for identity extractor improvements; the upstream" +" how-to is `Adding a scheme `_" +msgstr "" +"`socid_extractor_improvements.log " +"`_" +" — modèle et entrées pour les améliorations de l'extracteur d'identités ;" +" le mode d'emploi en amont est `Adding a scheme `_" + +#: ../../source/development.rst:231 205f96a212fc49d9833e8800db4cac6d +msgid "" +"These files should be kept up-to-date whenever changes are made to the " +"check logic in the code or in ``data.json``." +msgstr "" +"Ces fichiers doivent être tenus à jour à chaque modification de la " +"logique de vérification, dans le code comme dans ``data.json``." + +#: ../../source/development.rst:236 5c4c006abed946e2bcd9a2c85cd7b157 +msgid "Activation mechanism" +msgstr "Mécanisme d'activation" + +#: ../../source/development.rst:238 8711119dfd7b415fbf3f65f2ebef4926 +msgid "" +"The activation mechanism helps make requests to sites requiring " +"additional authentication like cookies, JWT tokens, or custom headers." +msgstr "" +"Le mécanisme d'activation permet d'interroger les sites qui exigent une " +"authentification supplémentaire : cookies, jetons JWT ou en-têtes " +"personnalisés." + +#: ../../source/development.rst:240 49a33164a1254c92aa7af386cd949edc +msgid "Let's study the Vimeo site check record from the Maigret database:" +msgstr "Examinons la fiche de vérification du site Vimeo dans la base de Maigret :" + +#: ../../source/development.rst:268 6359f39a3c5c4005b3273330e2ce1fde +msgid "The activation method is:" +msgstr "La méthode d'activation est :" + +#: ../../source/development.rst:282 44e0f0bb1186492c812d0bf6801f735d +msgid "Here's how the activation process works when a JWT token becomes invalid:" +msgstr "" +"Voici comment se déroule le processus d'activation lorsqu'un jeton JWT " +"devient invalide :" + +#: ../../source/development.rst:284 0c52dda242774fdfbf4734ffbd9fa2c3 +msgid "" +"The site check makes an HTTP request to ``urlProbe`` with the invalid " +"token" +msgstr "" +"La vérification du site envoie une requête HTTP à ``urlProbe`` avec le " +"jeton invalide" + +#: ../../source/development.rst:285 bb09eac30cb147b7bce4b33f8b0db418 +msgid "" +"The response contains an error message specified in the " +"``activation``/``marks`` field" +msgstr "" +"La réponse contient un message d'erreur indiqué dans le champ " +"``activation``/``marks``" + +#: ../../source/development.rst:286 3c1946f49ff544bc8762339d18d73758 +msgid "" +"When this error is detected, the ``vimeo`` activation function is " +"triggered" +msgstr "" +"Lorsque cette erreur est détectée, la fonction d'activation ``vimeo`` est" +" déclenchée" + +#: ../../source/development.rst:287 075145a25d3d45698757b17c1e49efb0 +msgid "" +"The activation function obtains a new JWT token and updates it in the " +"site check record" +msgstr "" +"La fonction d'activation obtient un nouveau jeton JWT et le met à jour " +"dans la fiche de vérification du site" + +#: ../../source/development.rst:288 bbe1932a3d104efaaef0ed7f348a29ce +msgid "" +"On the next site check (either through retry or a new Maigret run), the " +"valid token is used and the check succeeds" +msgstr "" +"À la vérification suivante (par une nouvelle tentative ou par une " +"nouvelle exécution de Maigret), le jeton valide est utilisé et la " +"vérification réussit" + +#: ../../source/development.rst:290 d6092cf5662c4067928586c09a5ab24f +msgid "" +"Step 5 works across runs because minted tokens are written to a per-user " +"cache rather than back into the site database — see :ref:`activation-" +"token-cache`." +msgstr "" +"L'étape 5 fonctionne d'une exécution à l'autre parce que les jetons " +"générés sont écrits dans un cache propre à l'utilisateur, et non " +"réinjectés dans la base de sites, voir :ref:`activation-token-cache`." + +#: ../../source/development.rst:292 4eb6e5f5a70b4246a9f1ee08d1503748 +msgid "" +"Examples of activation mechanism implementation are available in " +"`activation.py " +"`_ " +"file." +msgstr "" +"Des exemples d'implémentation du mécanisme d'activation se trouvent dans " +"le fichier `activation.py " +"`_." + +#: ../../source/development.rst:295 130c83c1455f4a989f7455efc8d1d398 +msgid "How to publish new version of Maigret" +msgstr "Comment publier une nouvelle version de Maigret" + +#: ../../source/development.rst:297 476e1c1c99d3454fa813e59eeb631b6a +msgid "**Collaborats rights are requires, write Soxoj to get them**." +msgstr "" +"**Les droits de collaborateur sont nécessaires, écrivez à Soxoj pour les " +"obtenir**." + +#: ../../source/development.rst:299 47da948d8e88410d8cecd1a71f34613c +msgid "" +"For new version publishing you must create a new branch in repository " +"with a bumped version number and actual changelog first. After it you " +"must create a release, and GitHub action automatically create a new PyPi " +"package." +msgstr "" +"Pour publier une nouvelle version, vous devez d'abord créer dans le dépôt" +" une branche portant le numéro de version incrémenté et le changelog à " +"jour. Ensuite, vous créez une release, et une action GitHub crée " +"automatiquement un nouveau paquet PyPI." + +#: ../../source/development.rst:304 ba55b1b8b54748359919d6144a74d1dc +msgid "" +"New branch example: " +"https://github.com/soxoj/maigret/commit/e520418f6a25d7edacde2d73b41a8ae7c80ddf39" +msgstr "" +"Exemple de nouvelle branche : " +"https://github.com/soxoj/maigret/commit/e520418f6a25d7edacde2d73b41a8ae7c80ddf39" + +#: ../../source/development.rst:305 f9661b2afa5e4bc9b8c58460ed0dd250 +msgid "Release example: https://github.com/soxoj/maigret/releases/tag/v0.4.1" +msgstr "Exemple de release : https://github.com/soxoj/maigret/releases/tag/v0.4.1" + +#: ../../source/development.rst:307 b52f760c7c4f45aa8c0352c089e011c4 +msgid "" +"1. Make a new branch locally with a new version name. Check the current " +"version number here: https://pypi.org/project/maigret/. **Increase only " +"patch version (third number)** if there are no breaking changes." +msgstr "" +"1. Créez localement une branche portant le nom de la nouvelle version. " +"Vérifiez le numéro de version actuel ici : " +"https://pypi.org/project/maigret/. **N'incrémentez que la version de " +"correctif (le troisième nombre)** s'il n'y a pas de changement " +"incompatible." + +#: ../../source/development.rst:314 443f7ed9c07e4a3d91aa6be91ac9da74 +msgid "" +"2. Update Maigret version in three files manually. **All three must be in" +" sync** — an earlier bump missed ``docs/source/conf.py`` and it fell " +"behind by a release." +msgstr "" +"2. Mettez à jour la version de Maigret à la main dans trois fichiers. " +"**Les trois doivent rester synchronisés** : une montée de version " +"précédente avait oublié ``docs/source/conf.py``, qui a pris une version " +"de retard." + +#: ../../source/development.rst:318 72842dfad4d0410687fe2037deda9bf6 +msgid "" +"``pyproject.toml`` — single line ``version = \"X.Y.Z\"`` under " +"``[tool.poetry]``. Leave every ``[tool.poetry.dependencies]`` entry " +"alone: ``python-bidi = \"^0.6.3\"`` is a third-party version that happens" +" to look like ours." +msgstr "" +"``pyproject.toml`` — une seule ligne ``version = \"X.Y.Z\"`` sous " +"``[tool.poetry]``. Ne touchez à aucune entrée de " +"``[tool.poetry.dependencies]`` : ``python-bidi = \"^0.6.3\"`` est la " +"version d'une bibliothèque tierce, qui ressemble seulement à la nôtre." + +#: ../../source/development.rst:322 67d8d03a84d94ee9857b53cb4184a6fb +msgid "``maigret/__version__.py`` — single line ``__version__ = 'X.Y.Z'``." +msgstr "``maigret/__version__.py`` — une seule ligne ``__version__ = 'X.Y.Z'``." + +#: ../../source/development.rst:323 5eb4430737d14dadb0448537e668f369 +msgid "" +"``docs/source/conf.py`` — **two** Sphinx fields. ``release`` is the full " +"version (``'X.Y.Z'``); ``version`` is the short ``major.minor`` " +"(``'X.Y'``, **without** the patch number). Update **both**." +msgstr "" +"``docs/source/conf.py`` — **deux** champs Sphinx. ``release`` est la " +"version complète (``'X.Y.Z'``) ; ``version`` est la forme courte " +"``majeure.mineure`` (``'X.Y'``, **sans** le numéro de correctif). Mettez " +"les **deux** à jour." + +#: ../../source/development.rst:327 b5222c8fb2d449cb81f07ef63dd0966b +msgid "" +"``snap/snapcraft.yaml`` is **not** in this list any more. It carries " +"``adopt-info: maigret`` and reads the version out of " +"``maigret/__version__.py`` at build time, so it follows automatically." +msgstr "" +"``snap/snapcraft.yaml`` ne fait **plus** partie de cette liste. Il porte " +"``adopt-info: maigret`` et lit la version depuis " +"``maigret/__version__.py`` au moment de la construction : il suit donc " +"automatiquement." + +#: ../../source/development.rst:331 0d8b412e3ec74e078be2f277f40b8eb0 +msgid "After editing, check that nothing was missed:" +msgstr "Après ces modifications, vérifiez que rien n'a été oublié :" + +#: ../../source/development.rst:338 7d249a431841419f8ae26271c57689d6 +msgid "" +"Create a new empty text section in the beginning of the file " +"`CHANGELOG.md` with a current date:" +msgstr "" +"Créez une nouvelle section de texte vide au début du fichier " +"`CHANGELOG.md`, avec la date du jour :" + +#: ../../source/development.rst:344 74590483e89b463e88e18e951fc5825b +msgid "Get auto-generate release notes:" +msgstr "Obtenez des notes de version générées automatiquement :" + +#: ../../source/development.rst:346 44eb0723672b4430a5c0094c56a0504e +msgid "Open https://github.com/soxoj/maigret/releases/new" +msgstr "Ouvrez https://github.com/soxoj/maigret/releases/new" + +#: ../../source/development.rst:347 6d769a8487274710b27aa3dc5ccca9eb +msgid "Click `Choose a tag`, enter `v0.4.0` (your version)" +msgstr "Cliquez sur `Choose a tag` et saisissez `v0.4.0` (votre version)" + +#: ../../source/development.rst:348 ../../source/development.rst:390 +#: 49007f863d2e471c91c56ff25c3c3699 ab69a0bd58d445879ad9b306a8ea2afc +msgid "Click `Create new tag`" +msgstr "Cliquez sur `Create new tag`" + +#: ../../source/development.rst:349 ../../source/development.rst:393 +#: eb0fa6aed0c947e49bec3b215054e5e7 eb75395cc1f645908557265de8ba49af +msgid "Press `+ Auto-generate release notes`" +msgstr "Appuyez sur `+ Auto-generate release notes`" + +#: ../../source/development.rst:350 f7f3526fe70945ab90e4f70fc10e5560 +msgid "Copy all the text from description text field below" +msgstr "Copiez tout le texte du champ de description ci-dessous" + +#: ../../source/development.rst:351 8f8fde06fb9240e3b41420a40f732f33 +msgid "Paste it to empty text section in `CHANGELOG.md`" +msgstr "Collez-le dans la section vide de `CHANGELOG.md`" + +#: ../../source/development.rst:352 f177d5679b0d42878df120a0e19769f4 +msgid "*Close the new release page*" +msgstr "*Fermez la page de création de release*" + +#: ../../source/development.rst:354 e47f7f434d76421db9672dc4f81561f9 +msgid "" +"Keep the ``## What's Changed`` heading, the ``## New Contributors`` " +"section and the ``**Full Changelog**`` line — every existing section in " +"``CHANGELOG.md`` has them." +msgstr "" +"Conservez le titre ``## What's Changed``, la section ``## New " +"Contributors`` et la ligne ``**Full Changelog**`` : toutes les sections " +"existantes de ``CHANGELOG.md`` les contiennent." + +#: ../../source/development.rst:358 80db39d834d94860b846dc4f58f1653c +msgid "" +"The same notes can be generated without opening the browser, which is " +"handy when you want them in a file:" +msgstr "" +"Les mêmes notes peuvent être générées sans ouvrir le navigateur, ce qui " +"est pratique quand on veut les récupérer dans un fichier :" + +#: ../../source/development.rst:367 0e247b932d634e79a2f7edb7562287d2 +msgid "" +"This is the same generator the `+ Auto-generate release notes` button " +"calls, so the contributor handles are the real GitHub logins. Do not " +"assemble the list from ``git log`` instead: authors who commit without a " +"``@users.noreply.github.com`` address have no derivable handle there, and" +" guessing from the display name produces entries like ``@Danilo Salve`` " +"that are not valid GitHub users." +msgstr "" +"C'est le générateur qu'appelle le bouton `+ Auto-generate release notes` " +": les identifiants de contributeurs sont donc de vrais comptes GitHub. " +"N'assemblez pas la liste à partir de ``git log`` : les auteurs qui " +"commitent sans adresse ``@users.noreply.github.com`` n'y ont aucun " +"identifiant déductible, et deviner à partir du nom affiché produit des " +"entrées comme ``@Danilo Salve``, qui ne correspondent à aucun utilisateur" +" GitHub valide." + +#: ../../source/development.rst:374 b07a9409c48740aeb78a51e250b3c000 +msgid "Commit all the changes, push, make pull request" +msgstr "Commitez toutes les modifications, poussez, ouvrez une pull request" + +#: ../../source/development.rst:383 ffe74564f0c74b5782b21350432a5f85 +msgid "Merge pull request" +msgstr "Fusionnez la pull request" + +#: ../../source/development.rst:385 b56d01d107114164bbb6ce480edf33e1 +msgid "Create new release" +msgstr "Créez la nouvelle release" + +#: ../../source/development.rst:387 87e0ea32afda47e6b39b0ba5a45ebbc9 +msgid "Open https://github.com/soxoj/maigret/releases/new again" +msgstr "Ouvrez de nouveau https://github.com/soxoj/maigret/releases/new" + +#: ../../source/development.rst:388 fe6e97b96dae4bd4ba25d1bae6d9a9cf +msgid "Click `Choose a tag`" +msgstr "Cliquez sur `Choose a tag`" + +#: ../../source/development.rst:389 99502e4ab3694e43b171fcf913fe85e2 +msgid "Enter actual version in format `v0.4.0`" +msgstr "Saisissez la version réelle au format `v0.4.0`" + +#: ../../source/development.rst:391 9bbe2653eabf4b7b917ee434e33aef18 +msgid "**Set** `Target` **to your version branch** (``0.4.0``), not ``main``" +msgstr "" +"**Réglez** `Target` **sur la branche de votre version** (``0.4.0``), et " +"non sur ``main``" + +#: ../../source/development.rst:392 b027d0f79e83481c803d2671b5f1abde +msgid "Also enter actual version in the field `Release title`" +msgstr "Saisissez également la version réelle dans le champ `Release title`" + +#: ../../source/development.rst:394 7ce87aefb2d44d38ac3e77215654395d +msgid "**Press \"Publish release\" button**" +msgstr "**Appuyez sur le bouton « Publish release »**" + +#: ../../source/development.rst:398 170058620c324f87a2ec09f26a35d57c +msgid "" +"``Target`` defaults to ``main``, and that default is wrong here. The tag " +"must point at a commit that already contains the bumped version — " +"otherwise the tag lands on the tip of ``main``, where the version is " +"still the previous one, and ``python-publish.yml`` builds and tries to " +"upload a package with the **old** version number. PyPI rejects it as a " +"duplicate and the release job fails." +msgstr "" +"``Target`` vaut ``main`` par défaut, et ce choix par défaut est mauvais " +"ici. Le tag doit pointer sur un commit qui contient déjà la version " +"incrémentée ; sinon il atterrit sur la tête de ``main``, où la version " +"est encore la précédente, et ``python-publish.yml`` construit puis tente " +"de téléverser un paquet portant l'**ancien** numéro de version. PyPI le " +"rejette comme doublon et la tâche de publication échoue." + +#: ../../source/development.rst:405 5cc01d38545a40e8bb6ddc95db3d5614 +msgid "" +"This is why the release tags of ``v0.6.1``, ``v0.6.2`` and ``v0.6.3`` all" +" point at commits on their version branches rather than at ``main``. " +"Merging the pull request from step 6 first is *not* required — pointing " +"the tag at the version branch is what matters." +msgstr "" +"C'est pourquoi les tags de version ``v0.6.1``, ``v0.6.2`` et ``v0.6.3`` " +"pointent tous sur des commits de leurs branches de version, et non sur " +"``main``. Fusionner d'abord la pull request de l'étape 6 n'est *pas* " +"obligatoire : ce qui compte, c'est que le tag pointe sur la branche de " +"version." + +#: ../../source/development.rst:410 41a6a682b4654a6297ae092631edd600 +msgid "" +"To check a published tag: ``git show v0.4.0:maigret/__version__.py`` must" +" print the new version." +msgstr "" +"Pour vérifier un tag publié : ``git show v0.4.0:maigret/__version__.py`` " +"doit afficher la nouvelle version." + +#: ../../source/development.rst:413 2dcfcc7d8f8a4011a84b2e92e960ed68 +msgid "" +"The whole step can be done from the command line instead. ``--target`` " +"takes a branch name or a commit SHA:" +msgstr "" +"Toute cette étape peut aussi se faire en ligne de commande. ``--target`` " +"accepte un nom de branche ou un SHA de commit :" + +#: ../../source/development.rst:420 4c2fd1f2e6144d51baa32479ece90ed0 +msgid "" +"If a release was published against the wrong target, delete it together " +"with its tag and recreate it — the ``release: published`` event fires " +"again and PyPI upload is retried:" +msgstr "" +"Si une release a été publiée sur la mauvaise cible, supprimez-la avec son" +" tag et recréez-la : l'événement ``release: published`` se déclenche de " +"nouveau et le téléversement vers PyPI est retenté." + +#: ../../source/development.rst:429 8d71351a848d4604b7efdf27f1bbc495 +msgid "" +"That's all, now you can simply wait push to PyPi. You can monitor it in " +"Action page: https://github.com/soxoj/maigret/actions/workflows/python-" +"publish.yml" +msgstr "" +"C'est tout : il ne reste qu'à attendre la publication sur PyPI. Vous " +"pouvez la suivre sur la page Actions : " +"https://github.com/soxoj/maigret/actions/workflows/python-publish.yml" + +#: ../../source/development.rst:432 10ad64f81da844a8bd7d9af5d8d0dc3d +msgid "Documentation updates" +msgstr "Mises à jour de la documentation" + +#: ../../source/development.rst:434 b25468b0d82d457dac0105abec3ae6a3 +msgid "" +"Documentations is auto-generated and auto-deployed from the ``docs`` " +"directory." +msgstr "" +"La documentation est générée et déployée automatiquement depuis le " +"répertoire ``docs``." + +#: ../../source/development.rst:436 b9f3ab6142e34c9e84b018b9ed95fa78 +msgid "To manually update documentation:" +msgstr "Pour mettre à jour la documentation à la main :" + +#: ../../source/development.rst:438 4b42894d249b452784f6b7c7bc20abd2 +msgid "Change something in the ``.rst`` files in the ``docs/source`` directory." +msgstr "" +"Modifiez quelque chose dans les fichiers ``.rst`` du répertoire " +"``docs/source``." + +#: ../../source/development.rst:439 6bc7bd83f85e4cc1bde02e3cc892492b +msgid "Install ``python -m pip install -e .`` in the docs directory." +msgstr "Lancez ``python -m pip install -e .`` dans le répertoire docs." + +#: ../../source/development.rst:440 93e6e437efd243cd8a009df239f11b3d +msgid "Run ``make singlehtml`` in the terminal in the docs directory." +msgstr "Lancez ``make singlehtml`` dans un terminal, depuis le répertoire docs." + +#: ../../source/development.rst:441 cfb32db3e3b643b18fa2e3168aa20a09 +msgid "Open ``build/singlehtml/index.html`` in your browser to see the result." +msgstr "" +"Ouvrez ``build/singlehtml/index.html`` dans votre navigateur pour voir le" +" résultat." + +#: ../../source/development.rst:442 f541c51c9b3340d79cf4740bff9aa3a4 +msgid "" +"If you edited any English ``.rst`` text (not just code blocks), refresh " +"the per-language translation catalogs — see *Translations* below. " +"Skipping this step lets the non-English builds silently fall back to " +"English on the changed strings." +msgstr "" +"Si vous avez modifié du texte ``.rst`` anglais (et pas seulement des " +"blocs de code), rafraîchissez les catalogues de traduction de chaque " +"langue, voir *Traductions* ci-dessous. Sauter cette étape fait " +"silencieusement retomber les constructions non anglaises sur l'anglais " +"pour les chaînes modifiées." + +#: ../../source/development.rst:446 220b819693084fa086429c546170f67a +msgid "If everything is ok, commit and push your changes to GitHub." +msgstr "Si tout va bien, commitez et poussez vos modifications sur GitHub." + +#: ../../source/development.rst:449 bb3763cfbfa14670b1de7b0cb1a84fd9 +msgid "Translations" +msgstr "Traductions" + +#: ../../source/development.rst:451 a88f4c440d3443f78eb02015786a849e +msgid "" +"The docs are translated via Sphinx's standard gettext workflow. English " +"``.rst`` files are the source of truth; translations live as ``.po`` " +"catalogs under ``docs/source/locale//LC_MESSAGES/`` (currently " +"``zh_CN`` and ``fr``)." +msgstr "" +"La documentation est traduite via le flux gettext standard de Sphinx. Les" +" fichiers ``.rst`` anglais font foi ; les traductions vivent sous forme " +"de catalogues ``.po`` dans ``docs/source/locale//LC_MESSAGES/`` " +"(actuellement ``zh_CN`` et ``fr``)." + +#: ../../source/development.rst:455 1dec2ecb3c8c4838b62ef957c897ab0d +msgid "" +"After editing any English ``.rst`` file, refresh the catalogs so existing" +" translations stay aligned with the new strings:" +msgstr "" +"Après avoir modifié un fichier ``.rst`` anglais, rafraîchissez les " +"catalogues pour que les traductions existantes restent alignées sur les " +"nouvelles chaînes :" + +#: ../../source/development.rst:463 901f348f88764af89b6a88e240a238fc +msgid "" +"This regenerates the ``.pot`` files via ``sphinx-build -b gettext`` and " +"runs ``sphinx-intl update`` to merge them into the per-language ``.po`` " +"files. New English strings appear with an empty ``msgstr \"\"``; changed " +"strings get a ``#, fuzzy`` marker that translators should review and re-" +"translate." +msgstr "" +"Cela regénère les fichiers ``.pot`` via ``sphinx-build -b gettext`` et " +"lance ``sphinx-intl update`` pour les fusionner dans les fichiers ``.po``" +" de chaque langue. Les nouvelles chaînes anglaises apparaissent avec un " +"``msgstr \"\"`` vide ; les chaînes modifiées reçoivent un marqueur ``#, " +"fuzzy`` que les traducteurs doivent relire et retraduire." + +#: ../../source/development.rst:468 3210120f78e14f12b0ed340ed31047e9 +msgid "Preview a translated build locally:" +msgstr "Pour prévisualiser localement une construction traduite :" + +#: ../../source/development.rst:476 eed9b2c934c14311bafacc98510099d4 +msgid "CJK escape-spaces gotcha" +msgstr "Le piège des espaces d'échappement en CJK" + +#: ../../source/development.rst:478 b48fe69580484f24a00f75b5bb401e7d +msgid "" +"reStructuredText inline markup (bold, inline code, hyperlinks) requires " +"whitespace or punctuation on both sides to close. In English this is " +"free: a space or full stop always follows. In Chinese / Japanese / Korean" +" translations the next character is often a CJK letter with no separator," +" and docutils then emits warnings like::" +msgstr "" +"Le balisage en ligne de reStructuredText (gras, code en ligne, " +"hyperliens) a besoin d'une espace ou d'une ponctuation de chaque côté " +"pour se refermer. En anglais, cela va de soi : une espace ou un point " +"suit toujours. Dans les traductions chinoises, japonaises et coréennes, " +"le caractère suivant est souvent une lettre CJK sans séparateur, et " +"docutils émet alors des avertissements comme ceux-ci ::" + +#: ../../source/development.rst:487 1c9d90292efb4493b6ed837ac8d7da50 +msgid "" +"The fix is an explicit RST escape-space — a backslash followed by a space" +" — between the closing marker and the next CJK character. In the rendered" +" ``.rst`` this is written as ``\\``; inside a ``.po`` ``msgstr`` " +"it must be written as ``\\\\`` because the ``.po`` parser eats one" +" backslash level." +msgstr "" +"Le remède est une espace d'échappement RST explicite, une barre oblique " +"inverse suivie d'une espace, entre le marqueur de fermeture et le " +"caractère CJK suivant. Dans le ``.rst`` rendu, cela s'écrit " +"``\\`` ; à l'intérieur d'un ``msgstr`` de fichier ``.po``, il " +"faut écrire ``\\\\``, car l'analyseur de ``.po`` consomme un " +"niveau de barre oblique inverse." + +#: ../../source/development.rst:503 085df902375749488264fb04f1b015ea +msgid "" +"The same rule applies after inline code before a CJK character, and after" +" a hyperlink before a CJK opening bracket — always insert " +"``\\\\``. After editing any ``.po`` file, run ``make html-zh_CN``;" +" these warnings only surface at build time." +msgstr "" +"La même règle vaut après du code en ligne suivi d'un caractère CJK, et " +"après un hyperlien suivi d'une parenthèse ouvrante CJK : insérez toujours" +" ``\\\\``. Après avoir modifié un fichier ``.po``, lancez ``make " +"html-zh_CN`` ; ces avertissements n'apparaissent qu'à la construction." + +#: ../../source/development.rst:508 44dcbb13f4c548f492790f4403a88076 +msgid "" +"To add a new language, run ``make intl-update LANG=`` (e.g. ``ja``," +" ``de``, ``pt_BR``) — this scaffolds an empty catalog. Read the Docs " +"publishes each language as a separate project linked under the parent " +"(see the `Localization guide " +"`_); a " +"maintainer needs to create the translation project once in the RTD admin " +"UI, set its language, and mark it as a translation of the main " +"``maigret`` project to enable the language switcher." +msgstr "" +"Pour ajouter une nouvelle langue, lancez ``make intl-update LANG=``" +" (par exemple ``ja``, ``de``, ``pt_BR``) : cela met en place un catalogue" +" vide. Read the Docs publie chaque langue comme un projet distinct " +"rattaché au projet parent (voir le `guide de localisation " +"`_) ; un " +"mainteneur doit créer une fois le projet de traduction dans l'interface " +"d'administration de RTD, définir sa langue et le marquer comme traduction" +" du projet principal ``maigret``, afin d'activer le sélecteur de langue." + +#: ../../source/development.rst:517 bc3fa58ac1af422d89924250bbb27125 +msgid "Roadmap" +msgstr "Feuille de route" + +#: ../../source/development.rst:520 7ddabf328d604b62986d56a3da6ac30c +msgid "" +"This roadmap requires updating to reflect the current project status and " +"future plans." +msgstr "" +"Cette feuille de route doit être mise à jour pour refléter l'état actuel " +"du projet et les plans à venir." + +#~ msgid "" +#~ "The docs are translated via Sphinx's " +#~ "standard gettext workflow. English ``.rst``" +#~ " files are the source of truth; " +#~ "translations live as ``.po`` catalogs " +#~ "under ``docs/source/locale//LC_MESSAGES/`` " +#~ "(currently only ``zh_CN``)." +#~ msgstr "" + diff --git a/docs/source/locale/fr/LC_MESSAGES/faq.po b/docs/source/locale/fr/LC_MESSAGES/faq.po new file mode 100644 index 00000000..b76a3734 --- /dev/null +++ b/docs/source/locale/fr/LC_MESSAGES/faq.po @@ -0,0 +1,583 @@ +# French translation of the Maigret documentation. +# Copyright (C) 2025, soxoj +# This file is distributed under the same license as the Maigret package. +# +msgid "" +msgstr "" +"Project-Id-Version: Maigret 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-09-15 17:05+0200\n" +"PO-Revision-Date: 2026-09-15 17:20+0200\n" +"Last-Translator: \n" +"Language: fr\n" +"Language-Team: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/faq.rst:4 0da8c66733d348fc9b00ba5a1a76aa73 +msgid "FAQ" +msgstr "FAQ" + +#: ../../source/faq.rst:6 2ae724d004154176be5080383d04f54a +msgid "" +"Short answers to the questions users most often type into the docs " +"search. For deeper coverage each section links to the relevant page." +msgstr "" +"Réponses courtes aux questions que les utilisateurs tapent le plus " +"souvent dans la recherche de la documentation. Chaque section renvoie " +"vers la page correspondante pour plus de détails." + +#: ../../source/faq.rst:10 9bb042d046f640119b891ab1c0435f0e +msgid "Can I search by email address?" +msgstr "Puis-je faire une recherche par adresse e-mail ?" + +#: ../../source/faq.rst:12 92d82ec421f54914a366fff12bb10ba6 +msgid "" +"**No.** Maigret only takes a username (or one of the :doc:`supported " +"identifier types `) as input — searching by " +"an email or mail address is out of scope. Looking up a mail address " +"requires different techniques (probing password-reset flows, registration" +" endpoints) and is the job of a separate class of tool." +msgstr "" +"**Non.** Maigret n'accepte en entrée qu'un nom d'utilisateur (ou l'un des" +" :doc:`types d'identifiants pris en charge `)" +" : la recherche par adresse e-mail sort de son périmètre. Retrouver une " +"adresse e-mail demande d'autres techniques (sonder les procédures de " +"réinitialisation de mot de passe, les points d'entrée d'inscription) et " +"relève d'une autre catégorie d'outils." + +#: ../../source/faq.rst:19 3ddb8801c7294968ba06946911e0f4bc +msgid "Recommended open-source tools for email lookup:" +msgstr "Outils open source recommandés pour la recherche par e-mail :" + +#: ../../source/faq.rst:21 ef0949e641b547239bf0abc2c39a5724 +msgid "`mailcat `_" +msgstr "`mailcat `_" + +#: ../../source/faq.rst:22 99b07239fa61487ab55e3bebfb8076f8 +msgid "`holehe `_" +msgstr "`holehe `_" + +#: ../../source/faq.rst:23 769abcb0d6814c859f9af00831f80620 +msgid "`user-scanner `_" +msgstr "`user-scanner `_" + +#: ../../source/faq.rst:25 c35794d9d73d469e97539a39527812cb +msgid "Online services:" +msgstr "Services en ligne :" + +#: ../../source/faq.rst:27 189251bc33624e62b4a28aadbb2bcb50 +msgid "`Noimosiny `_" +msgstr "`Noimosiny `_" + +#: ../../source/faq.rst:28 401a10ff8ce74ceabb38fdb9fe8d0c56 +msgid "`OSINT Industries `_" +msgstr "`OSINT Industries `_" + +#: ../../source/faq.rst:29 3decfb5f127c47578076cd716cbc53c9 +msgid "`Epieos `_" +msgstr "`Epieos `_" + +#: ../../source/faq.rst:31 2a1148f2c20c48f19b3347ab344be010 +msgid "" +"Note: if Maigret has already found an account for a username, it often " +"extracts the linked email from the profile page automatically — see :ref" +":`extracting-information-from-pages`." +msgstr "" +"À noter : si Maigret a déjà trouvé un compte pour un nom d'utilisateur, " +"il extrait souvent automatiquement l'e-mail associé depuis la page de " +"profil, voir :ref:`extracting-information-from-pages`." + +#: ../../source/faq.rst:36 9bddb16d5c3d47d6b1825415599861dc +msgid "Can I configure a proxy / SOCKS / Tor / I2P?" +msgstr "Puis-je configurer un proxy / SOCKS / Tor / I2P ?" + +#: ../../source/faq.rst:38 663009588299428985b0006fa0471a1a +msgid "**Yes.** Three flags cover three distinct goals:" +msgstr "**Oui.** Trois options couvrent trois objectifs distincts :" + +#: ../../source/faq.rst:40 0a8ae8051ff64cc39c439eed7deb24b2 +msgid "" +"``--proxy URL`` — route **every** check through the given HTTP or SOCKS " +"proxy (also the right flag for routing the whole run through Tor with " +"``socks5://127.0.0.1:9050``, a residential proxy, or a corporate " +"gateway)." +msgstr "" +"``--proxy URL`` — faire passer **toutes** les vérifications par le proxy " +"HTTP ou SOCKS indiqué (c'est aussi la bonne option pour faire passer " +"toute la recherche par Tor avec ``socks5://127.0.0.1:9050``, par un proxy" +" résidentiel ou par une passerelle d'entreprise)." + +#: ../../source/faq.rst:44 5660a1a875684394be59c898612b05e0 +msgid "" +"``--tor-proxy URL`` — used **only** for ``.onion`` sites in the database." +" Clearweb sites still go via your direct connection (or ``--proxy`` if " +"set)." +msgstr "" +"``--tor-proxy URL`` — utilisé **uniquement** pour les sites ``.onion`` de" +" la base. Les sites du web classique continuent de passer par votre " +"connexion directe (ou par ``--proxy`` s'il est défini)." + +#: ../../source/faq.rst:47 aae64ef1456b4567acededd84132be89 +msgid "``--i2p-proxy URL`` — same idea, only for ``.i2p`` hosts." +msgstr "``--i2p-proxy URL`` — même principe, uniquement pour les hôtes ``.i2p``." + +#: ../../source/faq.rst:49 b324f9d45ec04859b5170140d8d2539c +msgid "" +"The most common confusion is ``--proxy`` vs ``--tor-proxy``: ``--proxy`` " +"is \"everything through this gateway\", ``--tor-proxy`` is \"only onion " +"sites through Tor\"." +msgstr "" +"La confusion la plus fréquente oppose ``--proxy`` à ``--tor-proxy`` : " +"``--proxy`` veut dire « tout passe par cette passerelle », ``--tor-" +"proxy`` veut dire « seuls les sites onion passent par Tor »." + +#: ../../source/faq.rst:53 77baa5cf834548c4a18b1c3966a9132c +msgid "" +"Full walkthrough (Tor Browser vs system ``tor`` port numbers, Tails OS, " +"timeout / retry tuning): :doc:`tor-and-proxies`." +msgstr "" +"Explication complète (ports de Tor Browser et du ``tor`` système, Tails " +"OS, réglage des délais et des nouvelles tentatives) : :doc:`tor-and-" +"proxies`." + +#: ../../source/faq.rst:56 145e05d0d19040a3bf5327d301ca9354 +msgid "" +"If your goal is actually \"bypass WAF blocks / fix 403 errors\", see the " +"*Sites fail / timeout / 403* section below — a residential proxy almost " +"always outperforms Tor or a VPN for that." +msgstr "" +"Si votre objectif est en réalité de « contourner les blocages des WAF / " +"corriger les erreurs 403 », voir la section *Des sites échouent, expirent" +" ou renvoient 403* ci-dessous : pour cela, un proxy résidentiel fait " +"presque toujours mieux que Tor ou un VPN." + +#: ../../source/faq.rst:61 04d8647301cc429c995b8d9dcd3d4932 +msgid "Can I use a VPN with Maigret?" +msgstr "Puis-je utiliser un VPN avec Maigret ?" + +#: ../../source/faq.rst:63 4f7ea8f6001b480ea0221702a1ca960c +msgid "" +"**Yes**, but ``--proxy`` is usually a better choice. A VPN works " +"transparently at the OS level — Maigret needs no special configuration to" +" use one. However:" +msgstr "" +"**Oui**, mais ``--proxy`` est généralement un meilleur choix. Un VPN agit" +" de façon transparente au niveau du système : Maigret n'a besoin d'aucune" +" configuration particulière pour en profiter. Cependant :" + +#: ../../source/faq.rst:67 8976ab8ffdc045e2862d0dcb88a1015c +msgid "" +"``--proxy`` is per-process: it does not affect other apps and does not " +"leak when toggled." +msgstr "" +"``--proxy`` s'applique au seul processus : il n'affecte pas les autres " +"applications et ne fuit pas lorsqu'on l'active ou le désactive." + +#: ../../source/faq.rst:69 bfb80e29a9b94b4bbd870de2e2ae8a34 +msgid "" +"``--proxy`` makes the egress IP visible in logs, which is useful when " +"diagnosing why a batch of sites returned ``UNKNOWN``." +msgstr "" +"``--proxy`` rend l'IP de sortie visible dans les journaux, ce qui aide à " +"comprendre pourquoi un lot de sites a renvoyé ``UNKNOWN``." + +#: ../../source/faq.rst:71 a1aaf0415a744afe89ffa0bb1c010d9a +msgid "" +"``--proxy`` accepts a different value per run, so you can rotate between " +"residential and datacenter exits without touching system network " +"settings." +msgstr "" +"``--proxy`` accepte une valeur différente à chaque exécution : vous " +"pouvez donc alterner entre sorties résidentielles et sorties de " +"datacenter sans toucher à la configuration réseau du système." + +#: ../../source/faq.rst:75 c564d9c3962a402daa5caabc0fc7a561 +msgid "" +"If a lot of sites are returning 403, the cause is almost certainly that " +"the VPN exit IP is on a WAF blocklist (Cloudflare, DDoS-Guard, Akamai all" +" blanket-block common VPN ranges). A residential proxy via ``--proxy`` is" +" the usual fix — see the `\"Lots of sites fail / timeout / return 403\" " +"section `_ in TROUBLESHOOTING.md." +msgstr "" +"Si beaucoup de sites renvoient 403, la cause est presque certainement que" +" l'IP de sortie du VPN figure sur une liste de blocage de WAF " +"(Cloudflare, DDoS-Guard et Akamai bloquent en bloc les plages VPN " +"courantes). Un proxy résidentiel via ``--proxy`` est le remède habituel, " +"voir la `section « Lots of sites fail / timeout / return 403 » " +"`_ de TROUBLESHOOTING.md." + +#: ../../source/faq.rst:84 4ebf5be9a3504afd89108f38c4640260 +msgid "Does Maigret check domains via DNS?" +msgstr "Maigret vérifie-t-il les domaines via DNS ?" + +#: ../../source/faq.rst:86 6328b1f58f644ee6a94453221739d4e0 +#, python-brace-format +msgid "" +"**Yes, experimentally.** With ``--with-domains`` Maigret resolves a small" +" set of ``{username}.`` patterns through DNS (A-records) in parallel" +" with the normal HTTP checks. The current set is ``.ddns.net``, ``.com``," +" ``.pro``, ``.me``, ``.biz``, ``.email``, ``.guru`` — 7 entries in the " +"database with ``protocol: dns``." +msgstr "" +"**Oui, à titre expérimental.** Avec ``--with-domains``, Maigret résout " +"par DNS (enregistrements A) un petit ensemble de motifs " +"``{username}.``, en parallèle des vérifications HTTP habituelles. " +"L'ensemble actuel est ``.ddns.net``, ``.com``, ``.pro``, ``.me``, " +"``.biz``, ``.email``, ``.guru``, soit 7 entrées de la base avec " +"``protocol: dns``." + +#: ../../source/faq.rst:96 78e55c6575b94ea9896e0cbb0dc5c27c +msgid "" +"The flag is marked **experimental**: DNS-only checks can flag parking " +"domains and catch-all wildcards as if the username were registered, so " +"treat hits as a lead rather than confirmation." +msgstr "" +"L'option est marquée **expérimentale** : une vérification purement DNS " +"peut signaler des domaines parqués ou des jokers attrape-tout comme si le" +" nom d'utilisateur était enregistré. Traitez donc un résultat comme une " +"piste, pas comme une confirmation." + +#: ../../source/faq.rst:100 95168070d79f4ac8a01d23aa343cbd49 +msgid "" +"If your task is wider DNS reconnaissance — subdomain enumeration, WHOIS " +"history, typo-squatting — Maigret is the wrong tool. Established " +"alternatives:" +msgstr "" +"Si votre tâche relève d'une reconnaissance DNS plus large (énumération de" +" sous-domaines, historique WHOIS, typosquattage), Maigret n'est pas le " +"bon outil. Les alternatives établies :" + +#: ../../source/faq.rst:104 816dba62a5ec4c19b8a7410d8ba8bde1 +msgid "" +"`dnstwist `_ — typo-squatting and " +"look-alike domains." +msgstr "" +"`dnstwist `_ — typosquattage et " +"domaines ressemblants." + +#: ../../source/faq.rst:106 cdab0a3e38f64e27b731f643d90d1545 +msgid "" +"`amass `_ / `subfinder " +"`_ — subdomain " +"enumeration." +msgstr "" +"`amass `_ / `subfinder " +"`_ — énumération de sous-" +"domaines." + +#: ../../source/faq.rst:109 2a76a0bbf0c148c48e97f81d73f4cd18 +msgid "" +"`theHarvester `_ — email / host" +" / subdomain harvesting by domain." +msgstr "" +"`theHarvester `_ — collecte " +"d'e-mails, d'hôtes et de sous-domaines à partir d'un domaine." + +#: ../../source/faq.rst:113 44b36009952b48edb97d8a5c377a0a25 +msgid "Is there a Maigret Telegram bot?" +msgstr "Existe-t-il un bot Telegram pour Maigret ?" + +#: ../../source/faq.rst:115 7c1712f69ba543e6805e36ed15fb2b9e +msgid "" +"**Yes.** A community-maintained bot lets you run Maigret without " +"installing anything locally:" +msgstr "" +"**Oui.** Un bot maintenu par la communauté permet d'utiliser Maigret sans" +" rien installer en local :" + +#: ../../source/faq.rst:118 e9be390bcfa74adf9a6bd84a0e98af79 +msgid "" +"Working instance: `maigret.app/docs-en `_ " +"(redirect — the hosted bot may move between providers)." +msgstr "" +"Instance en service : `maigret.app/docs-en `_ (redirection, car le bot hébergé peut changer d'hébergeur)." + +#: ../../source/faq.rst:121 0e5a05c6e2a348c78b2ad7476f8e670d +msgid "" +"Source code: `github.com/soxoj/maigret-tg-bot `_." +msgstr "" +"Code source : `github.com/soxoj/maigret-tg-bot `_." + +#: ../../source/faq.rst:124 3be3d00b7aff4ec6b627dfadf1bdc3c4 +msgid "" +"On the question of *searching Telegram itself*: Maigret checks whether a " +"``t.me/`` page exists as part of the normal run, but it does not " +"parse channels, posts, members, or message contents. For Telegram content" +" OSINT you need a dedicated tool." +msgstr "" +"Quant à la recherche *dans Telegram lui-même* : Maigret vérifie " +"l'existence d'une page ``t.me/`` dans le cadre d'une recherche " +"normale, mais il n'analyse ni les canaux, ni les publications, ni les " +"membres, ni le contenu des messages. Pour de l'OSINT sur les contenus " +"Telegram, il vous faut un outil dédié." + +#: ../../source/faq.rst:130 f922999a761a46c2a029255e30a1cdd6 +msgid "Where is the web interface?" +msgstr "Où est l'interface web ?" + +#: ../../source/faq.rst:136 1fa865f76f26450c922ccf0e8f90a4ac +msgid "" +"Then open http://127.0.0.1:5000. Screenshots and a full walkthrough are " +"in :ref:`web-interface`." +msgstr "" +"Ouvrez ensuite http://127.0.0.1:5000. Des captures d'écran et une " +"présentation complète se trouvent dans :ref:`web-interface`." + +#: ../../source/faq.rst:140 3e436d461dec4cce96cf7b54f7f6e159 +msgid "Sites fail / timeout / return 403 — connection failures" +msgstr "Des sites échouent, expirent ou renvoient 403 : les échecs de connexion" + +#: ../../source/faq.rst:142 dabfefba32e84ab8a1f393f9d51b3ca5 +msgid "" +"This is the most common report and is almost always caused by anti-bot " +"protection (Cloudflare, DDoS-Guard, Akamai) or a slow link, not by a bug " +"in Maigret. Quick tweaks, in order:" +msgstr "" +"C'est le problème le plus souvent signalé, et il vient presque toujours " +"d'une protection anti-bot (Cloudflare, DDoS-Guard, Akamai) ou d'une " +"liaison lente, pas d'un bug de Maigret. Les réglages rapides, dans " +"l'ordre :" + +#: ../../source/faq.rst:146 30f82061263c4f1abb1e6048ab945631 +msgid "" +"``--timeout 60`` — the default 30 s is tight for slow networks and for " +"Tor." +msgstr "" +"``--timeout 60`` — les 30 s par défaut sont justes pour les réseaux lents" +" et pour Tor." + +#: ../../source/faq.rst:148 ed82c79d4ddf48feae90c1d03f7c1799 +msgid "``--retries 2`` — covers transient failures." +msgstr "``--retries 2`` — couvre les échecs passagers." + +#: ../../source/faq.rst:149 217b6eb8e9c64fffb996f1473a9613ff +msgid "``-n 20`` — lower concurrency reduces WAF rate-limiting." +msgstr "" +"``-n 20`` — une concurrence plus basse réduit la limitation de débit par " +"les WAF." + +#: ../../source/faq.rst:150 aa11f1f1dae64d6bb96546179f7de99c +msgid "" +"``--proxy http://user:pass@residential-proxy:port`` — datacenter IPs " +"(AWS, GCP, DigitalOcean) and most VPN ranges are blanket-blocked; " +"residential / mobile exits usually fix the bulk of 403s." +msgstr "" +"``--proxy http://user:pass@residential-proxy:port`` — les IP de " +"datacenter (AWS, GCP, DigitalOcean) et la plupart des plages VPN sont " +"bloquées en bloc ; des sorties résidentielles ou mobiles règlent en " +"général l'essentiel des 403." + +#: ../../source/faq.rst:154 56ef75bcc49c42e2ae7247820d1df35b +msgid "" +"The full troubleshooting matrix (per-error recipes for 403, timeout, SSL," +" captcha, ``UNKNOWN`` floods) lives in `TROUBLESHOOTING.md " +"`_." +msgstr "" +"La matrice de dépannage complète (recettes par type d'erreur pour les " +"403, les dépassements de délai, le SSL, les captchas et les vagues de " +"``UNKNOWN``) se trouve dans `TROUBLESHOOTING.md " +"`_." + +#: ../../source/faq.rst:160 98f6bcb928354d92bcdf560d15eeb4f0 +msgid "How do I generate a PDF report?" +msgstr "Comment générer un rapport PDF ?" + +#: ../../source/faq.rst:162 0b427429d75b4b1890dc20ec93d411e1 +msgid "" +"PDF support is an optional extra because it pulls heavy graphics " +"dependencies:" +msgstr "" +"Le support du PDF est une extension facultative, car il entraîne de " +"lourdes dépendances graphiques :" + +#: ../../source/faq.rst:170 5d96d3cc456c4b74a49c80adecc86d08 +msgid "" +"On Linux / macOS you also need system libraries (Pango, Cairo, GDK-" +"PixBuf). Per-OS install steps are in the *Optional: PDF reports* section " +"of :doc:`installation`." +msgstr "" +"Sous Linux et macOS, il vous faut également des bibliothèques système " +"(Pango, Cairo, GDK-PixBuf). Les étapes d'installation par système " +"d'exploitation figurent dans la section *Optional: PDF reports* de " +":doc:`installation`." + +#: ../../source/faq.rst:174 01f17b6d73e24c8aa9a03417fadbac0f +msgid "" +"For other report formats (``--html``, ``--md``, ``--json``, ``--csv``, " +"``--txt``, ``--xmind``), see :doc:`command-line-options`." +msgstr "" +"Pour les autres formats de rapport (``--html``, ``--md``, ``--json``, " +"``--csv``, ``--txt``, ``--xmind``), voir :doc:`command-line-options`." + +#: ../../source/faq.rst:178 bdc2c81bf7b749e7b0eacf79b433a1df +msgid "``maigret: command not found``" +msgstr "``maigret: command not found``" + +#: ../../source/faq.rst:180 93679e6cba864a0c84689ccffcda8ed7 +msgid "" +"The install succeeded but your shell can't find the ``maigret`` launcher " +"(you may see ``-bash: maigret: command not found`` or a *not recognized* " +"message on Windows). The package is installed — only the entry-point " +"script is not on your ``PATH``. Fixes, in order of laziness:" +msgstr "" +"L'installation a réussi, mais votre shell ne trouve pas le lanceur " +"``maigret`` (vous verrez peut-être ``-bash: maigret: command not found``," +" ou un message *not recognized* sous Windows). Le paquet est bien " +"installé : c'est seulement le script de point d'entrée qui n'est pas dans" +" votre ``PATH``. Les solutions, de la plus paresseuse à la moins " +"paresseuse :" + +#: ../../source/faq.rst:185 83f7492c96894886af3bf56b83e75fcc +msgid "Run it as a module instead — this always works if the package imported:" +msgstr "" +"Lancez-le comme un module : cela fonctionne toujours si le paquet a pu " +"être importé." + +#: ../../source/faq.rst:191 9b8678954f2e47759e3e8c0edc7d8f59 +msgid "" +"``pip install --user`` puts the script in a per-user ``bin`` / " +"``Scripts`` directory that is often not on ``PATH``. The cleanest fix is " +"to install into an isolated environment that manages ``PATH`` for you:" +msgstr "" +"``pip install --user`` place le script dans un répertoire ``bin`` / " +"``Scripts`` propre à l'utilisateur, souvent absent du ``PATH``. La " +"solution la plus propre est d'installer dans un environnement isolé qui " +"gère le ``PATH`` pour vous :" + +#: ../../source/faq.rst:199 194c5f44b5db4f10a8d009981d85a845 +msgid "" +"On Windows, reopen the terminal after installing (``PATH`` is only read " +"at startup), or use the standalone ``maigret_standalone.exe`` — see " +":doc:`installation`." +msgstr "" +"Sous Windows, rouvrez le terminal après l'installation (le ``PATH`` n'est" +" lu qu'au démarrage), ou utilisez l'exécutable autonome " +"``maigret_standalone.exe``, voir :doc:`installation`." + +#: ../../source/faq.rst:204 59342aea53064f56abcfd0fa7d228334 +msgid "``error: metadata-generation-failed``" +msgstr "``error: metadata-generation-failed``" + +#: ../../source/faq.rst:206 71790a70caa44957bf8f8a0cac42a2d2 +msgid "" +"This comes from **pip**, not Maigret: pip could not build one of the " +"dependencies. Almost always the build toolchain is stale or a native " +"dependency is missing its system libraries. Try, in order:" +msgstr "" +"Cette erreur vient de **pip**, pas de Maigret : pip n'a pas réussi à " +"construire l'une des dépendances. Presque toujours, la chaîne de " +"compilation est trop ancienne, ou une dépendance native n'a pas ses " +"bibliothèques système. Essayez, dans l'ordre :" + +#: ../../source/faq.rst:210 224b4f76b6ae4ce1aa9525cb3c3aad22 +msgid "Upgrade the toolchain and retry:" +msgstr "Mettez à jour la chaîne d'outils et réessayez :" + +#: ../../source/faq.rst:216 391579687d664158825de7fed4002bb0 +msgid "" +"Use a supported interpreter (Python 3.10–3.12). Bleeding-edge or end-of-" +"life versions frequently have no prebuilt wheels, forcing a source build " +"that then fails." +msgstr "" +"Utilisez un interpréteur pris en charge (Python 3.10 à 3.12). Les " +"versions toutes fraîches ou en fin de vie n'ont souvent pas de wheels " +"précompilées, ce qui force une compilation depuis les sources, laquelle " +"échoue ensuite." + +#: ../../source/faq.rst:219 2b28b6f59b8543e693478f9c37a4dd27 +msgid "" +"If the failing package is a native one (``lxml``, ``reportlab``, " +"``_renderPM``, or an error mentioning ``ft2build.h`` / ``cairo``), you " +"need system build dependencies — see the *Troubleshooting* section of " +":doc:`installation`, or skip the compilers entirely and use Docker." +msgstr "" +"Si le paquet en échec est un paquet natif (``lxml``, ``reportlab``, " +"``_renderPM``, ou une erreur mentionnant ``ft2build.h`` / ``cairo``), il " +"vous faut les dépendances de compilation système : voir la section " +"*Troubleshooting* de :doc:`installation`, ou évitez complètement les " +"compilateurs en passant par Docker." + +#: ../../source/faq.rst:225 eeea5be67b82440ca1189998429dc76d +msgid "``Too many errors of type \"...\"``" +msgstr "``Too many errors of type \"...\"``" + +#: ../../source/faq.rst:227 d032a122036d453a9e756bb0c0dabc3b +msgid "" +"This is Maigret's **end-of-run summary**, not a crash — the run finished." +" It means a large share of sites failed the *same* way, so the fix " +"depends on the class printed in the quotes:" +msgstr "" +"C'est le **résumé de fin d'exécution** de Maigret, pas un plantage : la " +"recherche est allée à son terme. Cela signifie qu'une grande partie des " +"sites a échoué de la *même* façon ; le remède dépend donc de la catégorie" +" affichée entre guillemets :" + +#: ../../source/faq.rst:231 bb55ffce4a3049d0b871229316d14d4b +msgid "" +"``Connecting failure`` — check your internet connection; if only a subset" +" of sites fails, lower parallelism with ``-n 10``." +msgstr "" +"``Connecting failure`` — vérifiez votre connexion internet ; si seule une" +" partie des sites échoue, baissez le parallélisme avec ``-n 10``." + +#: ../../source/faq.rst:233 380f20253ca34c9ea8a7cde8c550cc36 +msgid "" +"``Connecting failure (DNS)`` — DNS resolution failed for most sites. Try " +"``--dns-resolver threaded`` (often fixes Windows / VPN / corporate " +"networks); failing that, check your VPN / firewall and consider a public " +"resolver (``1.1.1.1`` or ``8.8.8.8``)." +msgstr "" +"``Connecting failure (DNS)`` — la résolution DNS a échoué pour la plupart" +" des sites. Essayez ``--dns-resolver threaded`` (cela règle souvent le " +"problème sous Windows, en VPN ou en réseau d'entreprise) ; sinon, " +"vérifiez votre VPN et votre pare-feu, et envisagez un résolveur public " +"(``1.1.1.1`` ou ``8.8.8.8``)." + +#: ../../source/faq.rst:237 ed15f78ec1904519aab1309de90d0577 +msgid "``Request timeout`` — raise ``--timeout`` or switch ISP / network." +msgstr "" +"``Request timeout`` — augmentez ``--timeout``, ou changez de fournisseur " +"d'accès ou de réseau." + +#: ../../source/faq.rst:238 61df6881f45c4f64b728fed6c7719305 +msgid "``Captcha`` — switch to another IP address, or supply service cookies." +msgstr "``Captcha`` — changez d'adresse IP, ou fournissez les cookies du service." + +#: ../../source/faq.rst:239 2b68df5a17fd41d49b8d3f267e7bd99a +msgid "" +"``Bot protection`` / ``Access denied`` — switch IP; a residential " +"``--proxy`` or ``--cloudflare-bypass`` is the usual fix." +msgstr "" +"``Bot protection`` / ``Access denied`` — changez d'IP ; un ``--proxy`` " +"résidentiel ou ``--cloudflare-bypass`` est le remède habituel." + +#: ../../source/faq.rst:241 153c51e51cca49968ba213f00de0fc00 +msgid "" +"``Webgate unavailable`` — ``--cloudflare-bypass`` is on but no solver is " +"reachable; start FlareSolverr, or drop the flag to skip protected sites." +msgstr "" +"``Webgate unavailable`` — ``--cloudflare-bypass`` est actif, mais aucun " +"solveur n'est joignable ; démarrez FlareSolverr, ou retirez l'option pour" +" ignorer les sites protégés." + +#: ../../source/faq.rst:244 fbfd239ae2544d29a6c3d5608e6537fb +msgid "" +"If most of your run is one of the last three, see the *Sites fail / " +"timeout / return 403* section above and the full `TROUBLESHOOTING.md " +"`_." +msgstr "" +"Si l'essentiel de votre recherche tombe dans l'une des trois dernières " +"catégories, voir la section *Des sites échouent, expirent ou renvoient " +"403* ci-dessus, ainsi que le `TROUBLESHOOTING.md " +"`_ " +"complet." + diff --git a/docs/source/locale/fr/LC_MESSAGES/features.po b/docs/source/locale/fr/LC_MESSAGES/features.po new file mode 100644 index 00000000..19f3b9ef --- /dev/null +++ b/docs/source/locale/fr/LC_MESSAGES/features.po @@ -0,0 +1,658 @@ +# French translation of the Maigret documentation. +# Copyright (C) 2025, soxoj +# This file is distributed under the same license as the Maigret package. +# +msgid "" +msgstr "" +"Project-Id-Version: Maigret 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-09-15 17:05+0200\n" +"PO-Revision-Date: 2026-09-15 17:20+0200\n" +"Last-Translator: \n" +"Language: fr\n" +"Language-Team: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/features.rst:4 479e20927d724f059ad1ea5f902dc956 +msgid "Features" +msgstr "Fonctionnalités" + +#: ../../source/features.rst:6 6484d057341e4a168c97de336c5c2344 +msgid "This is the list of Maigret features." +msgstr "Voici la liste des fonctionnalités de Maigret." + +#: ../../source/features.rst:11 f61e2f47116d4b94972b0efaa6096fc6 +msgid "Web Interface" +msgstr "Interface web" + +#: ../../source/features.rst:13 294bbc18f2664c50a47136d1ead36ed5 +msgid "" +"You can run Maigret with a web interface, where you can view the graph " +"with results and download reports of all formats on a single page." +msgstr "" +"Vous pouvez lancer Maigret avec une interface web, où vous pouvez " +"consulter le graphe des résultats et télécharger les rapports dans tous " +"les formats depuis une seule page." + +#: ../../source/features.rst:16 60894afb27eb4a15b7da47e20f0101fb +msgid "Web interface: how to start" +msgstr "Interface web : comment la démarrer" + +#: ../../source/features.rst:20 7fe46da3e65c422da7c757cbfdaf93b2 +msgid "Web interface: results" +msgstr "Interface web : les résultats" + +#: ../../source/features.rst:24 5e5351615ca64b27b939f0609d1ad1f1 +msgid "Instructions:" +msgstr "Marche à suivre :" + +#: ../../source/features.rst:26 22af91e9e7ff4a84a9a800944ef29413 +msgid "Run Maigret with the ``--web`` flag and specify the port number." +msgstr "Lancez Maigret avec l'option ``--web`` en précisant le numéro de port." + +#: ../../source/features.rst:32 c3440b2e4fa84098944e08f34c7b1ed3 +msgid "" +"Open http://127.0.0.1:5000 in your browser and enter one or more " +"usernames to make a search." +msgstr "" +"Ouvrez http://127.0.0.1:5000 dans votre navigateur et saisissez un ou " +"plusieurs noms d'utilisateur pour lancer une recherche." + +#: ../../source/features.rst:34 3dfd160b980f415da57058945a2f3919 +msgid "" +"Wait a bit for the search to complete and view the graph with results, " +"the table with all accounts found, and download reports of all formats." +msgstr "" +"Patientez le temps que la recherche se termine, puis consultez le graphe " +"des résultats, le tableau de tous les comptes trouvés, et téléchargez les" +" rapports dans tous les formats." + +#: ../../source/features.rst:39 50b6b82cf6c24d07a586fcb3d7d3997a +msgid "Telegram bot" +msgstr "Bot Telegram" + +#: ../../source/features.rst:41 3c3166f22118428ca282adc1f4c4ff5b +msgid "" +"A community-maintained Telegram bot lets you run Maigret without " +"installing anything locally." +msgstr "" +"Un bot Telegram maintenu par la communauté permet d'utiliser Maigret sans" +" rien installer en local." + +#: ../../source/features.rst:44 c8962593353244ccace601c7b80eb8df +msgid "" +"Working instance: `maigret.app/docs-en `_ " +"(redirect — the hosted bot may move between providers)." +msgstr "" +"Instance en service : `maigret.app/docs-en `_ (redirection, car le bot hébergé peut changer d'hébergeur)." + +#: ../../source/features.rst:47 342c0c7bd4d14f23a8708a07a480eda1 +msgid "" +"Source code: `github.com/soxoj/maigret-tg-bot `_." +msgstr "" +"Code source : `github.com/soxoj/maigret-tg-bot `_." + +#: ../../source/features.rst:51 ad736673a67c4c0da5d8055546b1595e +msgid "Personal info gathering" +msgstr "Collecte d'informations personnelles" + +#: ../../source/features.rst:53 8018434bf9d44a7b8cc2d64329d90b8f +msgid "" +"Maigret does the `parsing of accounts webpages and extraction `_ " +"of personal info, links to other profiles, etc. Extracted info displayed " +"as an additional result in CLI output and as tables in HTML and PDF " +"reports. Also, Maigret use found ids and usernames from links to start a " +"recursive search." +msgstr "" +"Maigret effectue l'`analyse des pages de comptes et l'extraction `_ " +"des informations personnelles, des liens vers d'autres profils, etc. Les " +"informations extraites apparaissent comme résultat complémentaire dans la" +" sortie en ligne de commande, et sous forme de tableaux dans les rapports" +" HTML et PDF. Maigret utilise également les identifiants et noms " +"d'utilisateur trouvés dans les liens pour lancer une recherche récursive." + +#: ../../source/features.rst:57 e816605686c14c2f86c08b9bb8a854e5 +msgid "Enabled by default, can be disabled with ``--no extracting``." +msgstr "Activée par défaut, désactivable avec ``--no extracting``." + +#: ../../source/features.rst:83 5f7a75cb1e534a1795713c3ca5fa3fc9 +msgid "Recursive search" +msgstr "Recherche récursive" + +#: ../../source/features.rst:85 b90df80adc2c4a9594cea049beb5db42 +msgid "" +"Maigret has the ability to scan account pages for :ref:`common " +"identifiers ` and usernames found in links. " +"When people include links to their other social media accounts, Maigret " +"can automatically detect and initiate new searches for those profiles. " +"Any information discovered through this process will be shown in both the" +" command-line interface output and generated reports." +msgstr "" +"Maigret est capable d'examiner les pages de comptes à la recherche " +"d':ref:`identifiants courants ` et de noms " +"d'utilisateur présents dans les liens. Lorsque les gens incluent des " +"liens vers leurs autres comptes de réseaux sociaux, Maigret peut les " +"détecter automatiquement et lancer de nouvelles recherches sur ces " +"profils. Tout ce qui est découvert par ce biais apparaît à la fois dans " +"la sortie en ligne de commande et dans les rapports générés." + +#: ../../source/features.rst:89 59c6a0ba733049eb8de9bdb518b0117f +msgid "Enabled by default, can be disabled with ``--no-recursion``." +msgstr "Activée par défaut, désactivable avec ``--no-recursion``." + +#: ../../source/features.rst:122 f8537054424d4a019b8ae620c86104b4 +msgid "Username permutations" +msgstr "Permutations de noms d'utilisateur" + +#: ../../source/features.rst:124 aac4ccb303bb44849ae6ee621213e3d7 +msgid "" +"Maigret can generate permutations of usernames. Just pass a few usernames" +" in the CLI and use ``--permute`` flag. Thanks to `@balestek " +"`_ for the idea and implementation." +msgstr "" +"Maigret peut générer des permutations de noms d'utilisateur. Il suffit de" +" passer plusieurs noms d'utilisateur en ligne de commande et d'ajouter " +"l'option ``--permute``. Merci à `@balestek " +"`_ pour l'idée et son implémentation." + +#: ../../source/features.rst:149 209c9ad7230c4ac0970cf290fb49a3b4 +msgid "Reports" +msgstr "Rapports" + +#: ../../source/features.rst:151 b2b750c8109e49a8aef8ddf3609918d0 +msgid "" +"Maigret currently supports HTML, PDF, TXT, CSV, XMind 8 mindmap, JSON, " +"and Markdown reports, plus graph exports: an interactive HTML graph " +"(``--graph``) and a Neo4j Cypher script (``--neo4j``) for loading the " +"results into a graph database." +msgstr "" +"Maigret prend actuellement en charge les rapports HTML, PDF, TXT, CSV, " +"carte mentale XMind 8, JSON et Markdown, ainsi que les exports de graphe " +": un graphe HTML interactif (``--graph``) et un script Cypher pour Neo4j " +"(``--neo4j``), qui charge les résultats dans une base de données orientée" +" graphe." + +#: ../../source/features.rst:156 349b1030217b42fc8fc21bdbcc9a3d17 +msgid "HTML/PDF reports contain:" +msgstr "Les rapports HTML et PDF contiennent :" + +#: ../../source/features.rst:158 05417aab0c9340598c4663b376980288 +msgid "profile photo" +msgstr "la photo de profil" + +#: ../../source/features.rst:159 3bbd0fbc731a4c508f6f8bcfd5efdbbd +msgid "all the gathered personal info" +msgstr "toutes les informations personnelles collectées" + +#: ../../source/features.rst:160 78847ee3e4984c3fb4388095808ee499 +msgid "" +"additional information about supposed personal data (full name, gender, " +"location), resulting from statistics of all found accounts" +msgstr "" +"des informations complémentaires sur les données personnelles supposées " +"(nom complet, genre, localisation), déduites des statistiques de " +"l'ensemble des comptes trouvés" + +#: ../../source/features.rst:162 3d7d6cb2d82d484a8a6450b4ed1e0c72 +msgid "" +"Also, there is a short text report in the CLI output after the end of a " +"searching phase." +msgstr "" +"Un court rapport textuel est également affiché en ligne de commande à la " +"fin de la phase de recherche." + +#: ../../source/features.rst:164 83fbef94d39847329f2ceae1d19f8d30 +msgid "" +"The ``--neo4j`` flag serialises the same graph that ``--graph`` builds " +"into an idempotent ``.cypher`` script, importable with ``cypher-shell`` " +"or the Neo4j Browser. See :ref:`neo4j-export` for the schema and import " +"instructions." +msgstr "" +"L'option ``--neo4j`` sérialise le graphe construit par ``--graph`` dans " +"un script ``.cypher`` idempotent, importable avec ``cypher-shell`` ou le " +"Neo4j Browser. Voir :ref:`neo4j-export` pour le schéma et les " +"instructions d'import." + +#: ../../source/features.rst:169 b13d136ad3054aaf82f50ccaf2c3c2d7 +msgid "XMind 8 mindmaps are incompatible with XMind 2022!" +msgstr "Les cartes mentales XMind 8 sont incompatibles avec XMind 2022 !" + +#: ../../source/features.rst:172 3de1b6a6ce0349548af48f2e049f1ec9 +msgid "AI analysis" +msgstr "Analyse par IA" + +#: ../../source/features.rst:174 94e92083aacb4e0bab22f0b03b7bbecc +msgid "" +"Maigret can produce a short, human-readable investigation summary on top " +"of the raw search results using the ``--ai`` flag. It builds the internal" +" Markdown report, sends it to an OpenAI-compatible chat completion " +"endpoint, and streams the model's reply directly to the terminal." +msgstr "" +"Avec l'option ``--ai``, Maigret peut produire une courte synthèse " +"d'enquête lisible, en plus des résultats bruts de la recherche. Il " +"construit le rapport Markdown interne, l'envoie à un point d'entrée de " +"complétion de conversation compatible OpenAI, et diffuse la réponse du " +"modèle directement dans le terminal." + +#: ../../source/features.rst:185 2e295078a99c4e349478af255afdf1e5 +msgid "" +"The summary uses a fixed format with the most likely real name, location," +" occupation, interests, languages, main website, username variants, " +"number of platforms, active years, a confidence rating, and a short list " +"of follow-up leads. While ``--ai`` is active, per-site progress and the " +"short text report are suppressed so the streamed summary is the main " +"output." +msgstr "" +"La synthèse suit un format fixe : nom réel le plus probable, " +"localisation, profession, centres d'intérêt, langues, site web principal," +" variantes de nom d'utilisateur, nombre de plateformes, années " +"d'activité, un indice de confiance et une courte liste de pistes à " +"creuser. Tant que ``--ai`` est actif, la progression site par site et le " +"court rapport textuel sont masqués, afin que la synthèse diffusée reste " +"la sortie principale." + +#: ../../source/features.rst:192 5efa4c4e80864b3aab242f0fb06faa11 +msgid "" +"The endpoint, model, and API key are configured via ``settings.json`` " +"(``openai_api_key``, ``openai_model``, ``openai_api_base_url``) or the " +"``OPENAI_API_KEY`` environment variable. Any OpenAI-compatible API can be" +" used (Azure OpenAI, OpenRouter, a local server, …). See :ref:`ai-" +"analysis` and :ref:`settings` for details." +msgstr "" +"Le point d'entrée, le modèle et la clé d'API se configurent via " +"``settings.json`` (``openai_api_key``, ``openai_model``, " +"``openai_api_base_url``) ou via la variable d'environnement " +"``OPENAI_API_KEY``. N'importe quelle API compatible OpenAI convient " +"(Azure OpenAI, OpenRouter, un serveur local, etc.). Voir :ref:`ai-" +"analysis` et :ref:`settings` pour les détails." + +#: ../../source/features.rst:199 fd0a6689621246be8249f3506802dbd3 +msgid "Tags" +msgstr "Tags" + +#: ../../source/features.rst:201 d4b844a709234973b8d25c1cdc7c5e6e +msgid "" +"The Maigret sites database very big (and will be bigger), and it is maybe" +" an overhead to run a search for all the sites. Also, it is often hard to" +" understand, what sites more interesting for us in the case of a certain " +"person." +msgstr "" +"La base de sites de Maigret est très grande (et continuera de grandir) : " +"lancer une recherche sur tous les sites est parfois excessif. De plus, il" +" est souvent difficile de savoir quels sites nous intéressent vraiment " +"dans le cas d'une personne donnée." + +#: ../../source/features.rst:204 0e1d4cf2b29f45e99f8eba51c6a55990 +msgid "" +"Tags markup allows selecting a subset of sites by interests (photo, " +"messaging, finance, etc.) or by country. Tags of found accounts grouped " +"and displayed in the reports." +msgstr "" +"Le balisage par tags permet de sélectionner un sous-ensemble de sites par" +" centre d'intérêt (photo, messagerie, finance, etc.) ou par pays. Les " +"tags des comptes trouvés sont regroupés et affichés dans les rapports." + +#: ../../source/features.rst:206 ea8c630e68174ea99427d3e75a9b8dbc +msgid "See full description :doc:`in the Tags Wiki page `." +msgstr "Voir la description complète :doc:`sur la page Tags `." + +#: ../../source/features.rst:209 a5ac0a8df67f40f2838b46116c6702f2 +msgid "Censorship and captcha detection" +msgstr "Détection de la censure et des captchas" + +#: ../../source/features.rst:211 832f8e2b8a804d81a93f71ac8f662ff2 +#, python-format +msgid "" +"Maigret can detect common errors such as censorship stub pages, " +"CloudFlare captcha pages, and others. If you get more them 3% errors of a" +" certain type in a session, you've got a warning message in the CLI " +"output with recommendations to improve performance and avoid problems." +msgstr "" +"Maigret sait repérer les erreurs courantes : pages de blocage liées à la " +"censure, pages de captcha CloudFlare, et d'autres encore. Si plus de 3 % " +"des résultats d'une session relèvent d'un même type d'erreur, un " +"avertissement s'affiche en ligne de commande, avec des recommandations " +"pour améliorer les performances et éviter les problèmes." + +#: ../../source/features.rst:215 f802bac3b7da45088d444fa30278700e +msgid "Retries" +msgstr "Nouvelles tentatives" + +#: ../../source/features.rst:217 883e29ba66584ce5989807e91f2b9d36 +msgid "" +"Maigret will do retries of the requests with temporary errors got " +"(connection failures, proxy errors, etc.)." +msgstr "" +"Maigret réessaie les requêtes ayant rencontré une erreur temporaire " +"(échec de connexion, erreur de proxy, etc.)." + +#: ../../source/features.rst:219 d620f8f374f5495fb6f86697f474d306 +msgid "One attempt by default, can be changed with option ``--retries N``." +msgstr "Une tentative par défaut, modifiable avec l'option ``--retries N``." + +#: ../../source/features.rst:222 992f53992514497b8ea244dd679cc29a +msgid "Database self-check" +msgstr "Auto-vérification de la base" + +#: ../../source/features.rst:224 056b798c883845179a9a7645849c4e99 +msgid "" +"Maigret includes a self-check mode (``--self-check``) that validates " +"every site in the database by looking up its known-claimed and known-" +"unclaimed usernames and verifying that the detection results match " +"expectations." +msgstr "" +"Maigret dispose d'un mode d'auto-vérification (``--self-check``) qui " +"valide chaque site de la base : il recherche les noms d'utilisateur " +"connus comme existants et comme inexistants, puis vérifie que les " +"résultats de détection correspondent aux attentes." + +#: ../../source/features.rst:228 5198351c6e054d71bd7e4713ba07af29 +msgid "" +"The self-check is **error-resilient**: if an individual site check raises" +" an unexpected exception (e.g. a network error or a parsing failure), the" +" error is caught, logged, and recorded as an issue — the remaining sites " +"continue to be checked without interruption. This means the process " +"always runs to completion, even when checking hundreds of sites with ``-a" +" --self-check``." +msgstr "" +"L'auto-vérification est **résistante aux erreurs** : si la vérification " +"d'un site déclenche une exception inattendue (erreur réseau, échec " +"d'analyse, etc.), l'erreur est capturée, journalisée et enregistrée comme" +" un problème, et les sites restants continuent d'être vérifiés sans " +"interruption. Le processus va donc toujours jusqu'au bout, même en " +"vérifiant des centaines de sites avec ``-a --self-check``." + +#: ../../source/features.rst:234 9607ee58ae894d45bffdce32b4afeeb3 +msgid "" +"Use ``--auto-disable`` together with ``--self-check`` to automatically " +"disable sites that fail checks. Without it, issues are only reported. Use" +" ``--diagnose`` to print detailed per-site diagnosis including the check " +"type, specific issues, and recommendations." +msgstr "" +"Utilisez ``--auto-disable`` avec ``--self-check`` pour désactiver " +"automatiquement les sites qui échouent. Sans cette option, les problèmes " +"sont seulement signalés. Utilisez ``--diagnose`` pour afficher un " +"diagnostic détaillé par site, comprenant le type de vérification, les " +"problèmes précis et des recommandations." + +#: ../../source/features.rst:251 17167ef126684ef08e1204c050c09b04 +msgid "Archives and mirrors checking" +msgstr "Vérification des archives et des miroirs" + +#: ../../source/features.rst:253 b18f2af770cb45368a948821d4df5c38 +msgid "" +"The Maigret database contains not only the original websites, but also " +"mirrors, archives, and aggregators. For example:" +msgstr "" +"La base de Maigret contient non seulement les sites d'origine, mais aussi" +" des miroirs, des archives et des agrégateurs. Par exemple :" + +#: ../../source/features.rst:255 b0a8dbb769a144b792207968d13013bf +msgid "`Picuki `_, Instagram mirror" +msgstr "`Picuki `_, un miroir d'Instagram" + +#: ../../source/features.rst:256 e4fcdf7b43894ea18390e499271ab2c8 +msgid "" +"(no longer available) `Reddit BigData search `_" +msgstr "" +"(n'est plus disponible) `la recherche Reddit BigData " +"`_" + +#: ../../source/features.rst:257 b3f099e32909431eb66efb0c15cc4f01 +msgid "(no longer available) `Twitter shadowban `_ checker" +msgstr "" +"(n'est plus disponible) le vérificateur de `shadowban Twitter " +"`_" + +#: ../../source/features.rst:259 c1b8bf1cd73845479a486bbdfc3b7eeb +msgid "" +"It allows getting additional info about the person and checking the " +"existence of the account even if the main site is unavailable (bot " +"protection, captcha, etc.)" +msgstr "" +"Cela permet d'obtenir des informations supplémentaires sur la personne et" +" de vérifier l'existence du compte même lorsque le site principal est " +"inaccessible (protection anti-bot, captcha, etc.)" + +#: ../../source/features.rst:264 b67a0daf798149dbb527019cc0eb419a +msgid "Cloudflare webgate bypass" +msgstr "Contournement du webgate Cloudflare" + +#: ../../source/features.rst:268 7546a25ae1f04cb3a2de678c604965b7 +msgid "" +"**Experimental feature.** The Cloudflare webgate is under active " +"development. The configuration schema, CLI flag behaviour, and the set of" +" sites that route through it may change without backwards-compatibility " +"guarantees. Expect rough edges (CF rate limits, occasional solver " +"failures) and report issues so they can be ironed out." +msgstr "" +"**Fonctionnalité expérimentale.** Le webgate Cloudflare est en cours de " +"développement actif. Le schéma de configuration, le comportement de " +"l'option en ligne de commande et l'ensemble des sites qui y sont routés " +"peuvent changer sans garantie de compatibilité ascendante. Attendez-vous " +"à quelques aspérités (limites de débit CF, échecs occasionnels du " +"solveur) et signalez les problèmes pour qu'ils puissent être corrigés." + +#: ../../source/features.rst:274 e13b5e80e27d4347918380b7c974d318 +msgid "" +"Some sites sit behind a full Cloudflare JavaScript challenge or a CF " +"firewall hard block — these are tagged ``protection: " +"[\"cf_js_challenge\"]`` or ``protection: [\"cf_firewall\"]`` in the " +"database and are normally kept disabled because neither aiohttp nor " +"curl_cffi can solve the JS challenge on their own." +msgstr "" +"Certains sites sont protégés par un défi JavaScript Cloudflare complet ou" +" par un blocage ferme du pare-feu CF : ils portent ``protection: " +"[\"cf_js_challenge\"]`` ou ``protection: [\"cf_firewall\"]`` dans la base" +" et sont normalement désactivés, car ni aiohttp ni curl_cffi ne savent " +"résoudre seuls le défi JavaScript." + +#: ../../source/features.rst:279 e14e98d42ed44fb9845f4a2f6bca7059 +msgid "" +"Maigret can offload these checks to a local Chrome-based solver. Two " +"backends are supported, configured in ``settings.json`` under " +"``cloudflare_bypass.modules`` (the first reachable module wins; " +"subsequent ones are tried as a fallback chain):" +msgstr "" +"Maigret peut déléguer ces vérifications à un solveur local basé sur " +"Chrome. Deux backends sont pris en charge, configurés dans " +"``settings.json`` sous ``cloudflare_bypass.modules`` (le premier module " +"joignable l'emporte ; les suivants forment une chaîne de repli) :" + +#: ../../source/features.rst:284 53658267d63d4ee0975d88a63ab246cd +msgid "" +"**FlareSolverr** (recommended). Runs a real Chrome instance and exposes a" +" JSON API. The upstream HTTP status, headers and final URL are preserved," +" so ``checkType: status_code`` and ``checkType: response_url`` keep " +"working through the bypass." +msgstr "" +"**FlareSolverr** (recommandé). Fait tourner une véritable instance de " +"Chrome et expose une API JSON. Le statut HTTP en amont, les en-têtes et " +"l'URL finale sont préservés : les vérifications ``checkType: " +"status_code`` et ``checkType: response_url`` continuent donc de " +"fonctionner à travers le contournement." + +#: ../../source/features.rst:293 8f2f975ca31940aeb6430c09a7e5f3ab +msgid "" +"**CloudflareBypassForScraping** (legacy fallback). Returns rendered HTML " +"only, so the upstream status code is lost — ``checkType: message`` keeps " +"working but ``status_code`` checks misfire (treated as 200 on success)." +msgstr "" +"**CloudflareBypassForScraping** (repli hérité). Ne renvoie que du HTML " +"rendu : le code de statut en amont est perdu. Les vérifications " +"``checkType: message`` continuent de fonctionner, mais celles de type " +"``status_code`` se déclenchent à tort (un succès est traité comme un " +"200)." + +#: ../../source/features.rst:297 649fdad8fc8d4fffa0e9066e394f2747 +msgid "Activate the bypass either with the CLI flag::" +msgstr "Activez le contournement soit avec l'option de ligne de commande ::" + +#: ../../source/features.rst:301 f2df085e2974481bbe96d03c1dd54c46 +msgid "" +"or by setting ``cloudflare_bypass.enabled`` to ``true`` in " +"``settings.json``. The web UI (``python -m maigret.web.app``) reads the " +"same setting — there is no separate toggle in the form, so flipping " +"``enabled`` is what activates the bypass for browser-driven runs." +msgstr "" +"soit en mettant ``cloudflare_bypass.enabled`` à ``true`` dans " +"``settings.json``. L'interface web (``python -m maigret.web.app``) lit le" +" même paramètre : il n'y a pas d'interrupteur distinct dans le " +"formulaire, c'est donc bien ``enabled`` qui active le contournement pour " +"les recherches lancées depuis le navigateur." + +#: ../../source/features.rst:306 30203a1de79a4ec38594f56133db3bb4 +msgid "" +"The bypass only fires for sites whose ``protection`` field intersects " +"``cloudflare_bypass.trigger_protection`` (default ``[\"cf_js_challenge\"," +" \"cf_firewall\", \"webgate\"]``); all other sites use the normal aiohttp" +" / curl_cffi path." +msgstr "" +"Le contournement ne se déclenche que pour les sites dont le champ " +"``protection`` recoupe ``cloudflare_bypass.trigger_protection`` (par " +"défaut ``[\"cf_js_challenge\", \"cf_firewall\", \"webgate\"]``) ; tous " +"les autres sites empruntent le chemin habituel, aiohttp / curl_cffi." + +#: ../../source/features.rst:311 b0cee78cdffd468a8422bb75dad37cc0 +msgid "" +"If all configured modules are unreachable, affected sites get an UNKNOWN " +"status with an actionable error pointing at the first module's URL — the " +"fix is almost always to start the FlareSolverr container." +msgstr "" +"Si aucun des modules configurés n'est joignable, les sites concernés " +"reçoivent le statut UNKNOWN, accompagné d'une erreur explicite pointant " +"vers l'URL du premier module : le remède consiste presque toujours à " +"démarrer le conteneur FlareSolverr." + +#: ../../source/features.rst:315 1f7ba21a5e8a4ce8b9239dffb4619306 +msgid "" +"FlareSolverr session reuse is automatic: Maigret pins a single ``session:" +" -`` per run, so cf_clearance cookies are shared " +"between checks of the same domain (5–10× faster on subsequent requests to" +" that host)." +msgstr "" +"La réutilisation des sessions FlareSolverr est automatique : Maigret fixe" +" une seule ``session: -`` par exécution, si bien que" +" les cookies cf_clearance sont partagés entre les vérifications d'un même" +" domaine (5 à 10 fois plus rapide pour les requêtes suivantes vers cet " +"hôte)." + +#: ../../source/features.rst:321 f9215d5c4d494d8ebb416dd81a6f7bb3 +msgid "Activation" +msgstr "Activation" + +#: ../../source/features.rst:322 caa751fc5dee4a57af2b85cfa91eb239 +msgid "" +"The activation mechanism helps make requests to sites requiring " +"additional authentication like cookies, JWT tokens, or custom headers." +msgstr "" +"Le mécanisme d'activation permet d'interroger les sites qui exigent une " +"authentification supplémentaire : cookies, jetons JWT ou en-têtes " +"personnalisés." + +#: ../../source/features.rst:324 2c80373446a74fa3aa0f8b7929a142ed +msgid "It works by implementing a custom function that:" +msgstr "Il repose sur une fonction dédiée qui :" + +#: ../../source/features.rst:326 3520e93d4f284550a37046b054d4681b +msgid "Makes a specialized HTTP request to a specific website endpoint" +msgstr "Envoie une requête HTTP spécifique à un point d'entrée précis du site" + +#: ../../source/features.rst:327 ac6abe41f22d47f38e582e12b9bb7f57 +msgid "Processes the response" +msgstr "Traite la réponse" + +#: ../../source/features.rst:328 fe331ebd523d4f6bbe86eff5eb387b65 +msgid "Updates the headers/cookies for that site in the local Maigret database" +msgstr "" +"Met à jour les en-têtes et les cookies de ce site dans la base locale de " +"Maigret" + +#: ../../source/features.rst:330 11b64bdd8d4442fbb48dbb61aa169ff1 +msgid "" +"Since activation only triggers after encountering specific errors, a " +"retry (or another Maigret run) is needed to obtain a valid response with " +"the updated authentication." +msgstr "" +"Comme l'activation ne se déclenche qu'après certaines erreurs, il faut " +"une nouvelle tentative (ou une nouvelle exécution de Maigret) pour " +"obtenir une réponse valide avec l'authentification mise à jour." + +#: ../../source/features.rst:332 d3aab7ded9564938bbfd7edd7beef961 +msgid "" +"The activation mechanism is enabled by default, and cannot be disabled at" +" the moment." +msgstr "" +"Le mécanisme d'activation est activé par défaut et ne peut pas être " +"désactivé pour l'instant." + +#: ../../source/features.rst:334 e1fb739f230343648a9269e9156d8f1b +msgid "See for more details in Development section :ref:`activation-mechanism`." +msgstr "" +"Plus de détails dans la section Développement : :ref:`activation-" +"mechanism`." + +#: ../../source/features.rst:339 1562cfeb06714cdb8ef1a326975aa934 +msgid "Extraction of information from account pages" +msgstr "Extraction d'informations depuis les pages de comptes" + +#: ../../source/features.rst:341 c2fe7d33ae3b4e5f9407da29a74ec0a0 +msgid "" +"Maigret can parse URLs and content of web pages by URLs to extract info " +"about account owner and other meta information." +msgstr "" +"Maigret peut analyser des URL et le contenu des pages web correspondantes" +" pour en extraire des informations sur le titulaire du compte, ainsi que " +"d'autres métadonnées." + +#: ../../source/features.rst:343 662b33d4252b4479a952d390a29d66a5 +msgid "" +"You must specify the URL with the option ``--parse``, it's can be a link " +"to an account or an online document. List of supported sites `see here " +"`_." +msgstr "" +"Vous devez indiquer l'URL avec l'option ``--parse`` ; ce peut être un " +"lien vers un compte ou vers un document en ligne. La liste des sites pris" +" en charge est `consultable ici `_." + +#: ../../source/features.rst:345 8c959114771d4786b7ab897d2c5adb9d +msgid "" +"After the end of the parsing phase, Maigret will start the search phase " +"by :doc:`supported identifiers ` found " +"(usernames, ids, etc.)." +msgstr "" +"Une fois la phase d'analyse terminée, Maigret lance la phase de recherche" +" à partir des :doc:`identifiants pris en charge ` qu'il a trouvés (noms d'utilisateur, identifiants, etc.)." + +#: ../../source/features.rst:373 ef504f888bbc4e16ba26424238ba6b5a +msgid "Simple API" +msgstr "Une API simple" + +#: ../../source/features.rst:375 323a72fa184646b893b6db3ab5bdb0e6 +msgid "" +"Maigret can be easily integrated with the use of Python package `maigret " +"`_." +msgstr "" +"Maigret s'intègre facilement grâce au paquet Python `maigret " +"`_." + +#: ../../source/features.rst:377 6c84748652ae44458942673e05b2e7b3 +msgid "" +"Example: the community `Telegram bot `_" +msgstr "" +"Exemple : le `bot Telegram `_ " +"communautaire" + diff --git a/docs/source/locale/fr/LC_MESSAGES/index.po b/docs/source/locale/fr/LC_MESSAGES/index.po new file mode 100644 index 00000000..aa4a6553 --- /dev/null +++ b/docs/source/locale/fr/LC_MESSAGES/index.po @@ -0,0 +1,136 @@ +# French translation of the Maigret documentation. +# Copyright (C) 2025, soxoj +# This file is distributed under the same license as the Maigret package. +# +msgid "" +msgstr "" +"Project-Id-Version: Maigret 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-09-15 17:05+0200\n" +"PO-Revision-Date: 2026-09-15 17:20+0200\n" +"Last-Translator: \n" +"Language: fr\n" +"Language-Team: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/index.rst:37 +msgid "Sections" +msgstr "Sections" + +#: ../../source/index.rst:54 +msgid "Advanced usage" +msgstr "Utilisation avancée" + +#: ../../source/index.rst:62 +msgid "Use cases" +msgstr "Cas d'usage" + +#: ../../source/index.rst:4 fad01d7dff7f42f68a16deaa3fd906e4 +msgid "Welcome to the Maigret docs!" +msgstr "Bienvenue dans la documentation de Maigret !" + +#: ../../source/index.rst:6 900b077c3fb44cbe92ad5c2b8be261a9 +msgid "" +"**Maigret** is an easy-to-use and powerful OSINT tool for collecting a " +"dossier on a person by a username (alias) only." +msgstr "" +"**Maigret** est un outil OSINT puissant et simple d'utilisation qui " +"rassemble un dossier sur une personne à partir d'un simple nom " +"d'utilisateur (alias)." + +#: ../../source/index.rst:8 55318f1d11ad471e9b6b39ca59512f7c +msgid "" +"This is achieved by checking for accounts on a huge number of sites and " +"gathering all the available information from web pages." +msgstr "" +"Pour cela, il recherche des comptes sur un très grand nombre de sites et " +"collecte toutes les informations disponibles sur les pages web." + +#: ../../source/index.rst:10 9794f69651da48878e7d8d0ce2cea9f3 +msgid "" +"The project's main goal — give to OSINT researchers and pentesters a " +"**universal tool** to get maximum information about a person of interest " +"by a username and integrate it with other tools in automatization " +"pipelines." +msgstr "" +"L'objectif principal du projet est de donner aux chercheurs OSINT et aux " +"pentesteurs un **outil universel** pour obtenir un maximum d'informations" +" sur une personne d'intérêt à partir d'un nom d'utilisateur, et pour " +"l'intégrer à d'autres outils dans des chaînes d'automatisation." + +#: ../../source/index.rst:14 720aeb80d8a24cb9b674429476305f4f +msgid "" +"**This tool is intended for educational and lawful purposes only.** The " +"developers do not endorse or encourage any illegal activities or misuse " +"of this tool. Regulations regarding the collection and use of personal " +"data vary by country and region, including but not limited to GDPR in the" +" EU, CCPA in the USA, and similar laws worldwide." +msgstr "" +"**Cet outil est destiné à un usage éducatif et légal uniquement.** Les " +"développeurs n'approuvent ni n'encouragent aucune activité illégale ou " +"aucun usage abusif de cet outil. La réglementation sur la collecte et " +"l'utilisation des données personnelles varie selon les pays et les " +"régions, notamment le RGPD dans l'Union européenne, le CCPA aux États-" +"Unis et des lois similaires partout dans le monde." + +#: ../../source/index.rst:19 d4f32a286e3c4c7a898ab0b82dc633d1 +msgid "" +"It is your sole responsibility to ensure that your use of this tool " +"complies with all applicable laws and regulations in your jurisdiction. " +"Any illegal use of this tool is strictly prohibited, and you are fully " +"accountable for your actions." +msgstr "" +"Il vous appartient de vous assurer que votre utilisation de cet outil " +"respecte l'ensemble des lois et réglementations en vigueur dans votre " +"juridiction. Toute utilisation illégale de cet outil est strictement " +"interdite et vous êtes seul responsable de vos actes." + +#: ../../source/index.rst:23 4fa98ee9737e41538fa3347940b4fdac +msgid "" +"The authors and developers of this tool bear no responsibility for any " +"misuse or unlawful activities conducted by its users." +msgstr "" +"Les auteurs et les développeurs de cet outil déclinent toute " +"responsabilité en cas d'usage abusif ou d'activité illégale de la part de" +" ses utilisateurs." + +#: ../../source/index.rst:27 9a0991e8625d4602969c0714dc9ecc48 +msgid "You may be interested in:" +msgstr "Cela pourrait vous intéresser :" + +#: ../../source/index.rst:28 37d9aa336989400696700609c83cf4ee +msgid ":doc:`Quick start `" +msgstr ":doc:`Démarrage rapide `" + +#: ../../source/index.rst:29 ec10922b61ac4fcda95dcdf834b2a91a +msgid ":doc:`Usage examples `" +msgstr ":doc:`Exemples d'utilisation `" + +#: ../../source/index.rst:30 566754f6b68949b3a912c31f86c09691 +msgid ":doc:`FAQ `" +msgstr ":doc:`FAQ `" + +#: ../../source/index.rst:31 65182c75c2e74e3184bd9a0ef18a91e7 +msgid ":doc:`Command line options `" +msgstr ":doc:`Options de ligne de commande `" + +#: ../../source/index.rst:32 d9ca5fb8c2994a62ab07c8d7cc468eb8 +msgid ":doc:`Features list `" +msgstr ":doc:`Liste des fonctionnalités `" + +#: ../../source/index.rst:33 4f370d1bdd7a43fbb67896a61d1869f2 +msgid ":doc:`Library usage `" +msgstr ":doc:`Utilisation en tant que bibliothèque `" + +#: ../../source/index.rst:34 9f5ac354804b47fdbdc079cc529e527b +msgid ":doc:`Tor, I2P, and proxies `" +msgstr ":doc:`Tor, I2P et proxys `" + +#: ../../source/index.rst:35 2ee7f1fe29a64905a8ef4b91d635bcb0 +msgid "`Run it online without installing `_" +msgstr "`Lancez-le en ligne, sans rien installer `_" + diff --git a/docs/source/locale/fr/LC_MESSAGES/installation.po b/docs/source/locale/fr/LC_MESSAGES/installation.po new file mode 100644 index 00000000..a1e60cd6 --- /dev/null +++ b/docs/source/locale/fr/LC_MESSAGES/installation.po @@ -0,0 +1,571 @@ +# French translation of the Maigret documentation. +# Copyright (C) 2025, soxoj +# This file is distributed under the same license as the Maigret package. +# +msgid "" +msgstr "" +"Project-Id-Version: Maigret 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-09-15 17:05+0200\n" +"PO-Revision-Date: 2026-09-15 17:20+0200\n" +"Last-Translator: \n" +"Language: fr\n" +"Language-Team: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/installation.rst:4 06a66d93711c44e098e3199117c071a0 +msgid "Installation" +msgstr "Installation" + +#: ../../source/installation.rst:6 1f3e8df4b1594961a5b2017919d2ece1 +msgid "" +"Maigret can be installed using pip, Docker, or simply can be launched " +"from the cloned repo. Also, it is available online via the `community " +"Telegram bot `_, source code of a bot is " +"`available on GitHub `_." +msgstr "" +"Maigret s'installe avec pip ou Docker, ou peut simplement être lancé " +"depuis le dépôt cloné. Il est également accessible en ligne via le `bot " +"Telegram communautaire `_, dont le code " +"source est `disponible sur GitHub `_." + +#: ../../source/installation.rst:11 b7a88c45e72c47eeb2f162626ef22c76 +msgid "Windows Standalone EXE-binaries" +msgstr "Binaires EXE autonomes pour Windows" + +#: ../../source/installation.rst:13 c2809428072744c588eacec66d8bcdd0 +msgid "" +"A standalone ``maigret_standalone.exe`` for Windows is published in the " +"`Releases section `_ of the " +"GitHub repository. A fresh build is produced automatically after each " +"commit to the **main** and **dev** branches." +msgstr "" +"Un ``maigret_standalone.exe`` autonome pour Windows est publié dans la " +"`section Releases `_ du dépôt " +"GitHub. Une nouvelle version est construite automatiquement après chaque " +"commit sur les branches **main** et **dev**." + +#: ../../source/installation.rst:18 e30c98267c014253bc76467286f392e6 +msgid "There are two ways to launch the EXE:" +msgstr "Il y a deux façons de lancer l'EXE :" + +#: ../../source/installation.rst:20 c4a5b9064afd4e1fabf88db60e4b9bdf +msgid "" +"**Double-click it from Explorer.** Maigret will prompt you for a " +"username, run a default search, and pause at the end so the printed " +"report links remain on screen until you press Enter." +msgstr "" +"**Double-cliquez dessus depuis l'Explorateur.** Maigret vous demandera un" +" nom d'utilisateur, lancera une recherche par défaut et marquera une " +"pause à la fin, afin que les liens des rapports affichés restent à " +"l'écran jusqu'à ce que vous appuyiez sur Entrée." + +#: ../../source/installation.rst:23 e5f7ec1cf9304f6eae6c22cd2b5618ff +msgid "**Run it from a terminal** for full control over options:" +msgstr "**Lancez-le depuis un terminal** pour maîtriser toutes les options :" + +#: ../../source/installation.rst:25 dbdee53d7f3b43dcaed861971bc41d8e +msgid "Press ``Win+R``, type ``cmd``, and hit Enter (or use PowerShell)." +msgstr "" +"Appuyez sur ``Win+R``, tapez ``cmd`` et appuyez sur Entrée (ou utilisez " +"PowerShell)." + +#: ../../source/installation.rst:26 a8729a58fb004d1ab4ce2fc46aecbcc0 +msgid "" +"Change to the folder where you saved the file, e.g. ``cd " +"%USERPROFILE%\\Downloads``." +msgstr "" +"Placez-vous dans le dossier où vous avez enregistré le fichier, par " +"exemple ``cd %USERPROFILE%\\Downloads``." + +#: ../../source/installation.rst:28 eb986c4f79ee4fd09db66e3ee2a8553b +msgid "Run it with at least one username:" +msgstr "Lancez-le avec au moins un nom d'utilisateur :" + +#: ../../source/installation.rst:37 5af6dbd07f1c415486c2886d222b84a5 +msgid "Reports are written next to the EXE in a ``reports\\`` subfolder." +msgstr "" +"Les rapports sont écrits à côté de l'EXE, dans un sous-dossier " +"``reports\\``." + +#: ../../source/installation.rst:39 54a2539fd6154a4fbd391f335ab1b37e +msgid "Video guide on how to run it: https://youtu.be/qIgwTZOmMmM." +msgstr "Guide vidéo pour le lancer : https://youtu.be/qIgwTZOmMmM." + +#: ../../source/installation.rst:42 94d7a2c0f5d548d39505a7603c7d2b85 +msgid "Code signing" +msgstr "Signature du code" + +#: ../../source/installation.rst:44 1ab5c3b634424b88bef4ff2ed94037e9 +msgid "" +"Windows binaries are built on GitHub Actions from this repository. The " +"project has applied to the `SignPath Foundation `_" +" for a free code signing certificate; once issued, released Windows " +"binaries will be signed as part of the same automated build." +msgstr "" +"Les binaires Windows sont construits par GitHub Actions depuis ce dépôt. " +"Le projet a déposé une demande de certificat de signature de code gratuit" +" auprès de la `SignPath Foundation `_ ; une fois " +"le certificat délivré, les binaires Windows publiés seront signés dans le" +" cadre de la même construction automatisée." + +#: ../../source/installation.rst:51 856db4923f7a434ea6697835d01204cf +msgid "Cloud Shells and Jupyter notebooks" +msgstr "Shells cloud et notebooks Jupyter" + +#: ../../source/installation.rst:53 a41bfce77f3f4edf9fc072968525b594 +msgid "" +"In case you don't want to install Maigret locally, you can use cloud " +"shells and Jupyter notebooks. Press one of the buttons below and follow " +"the instructions to launch it in your browser." +msgstr "" +"Si vous ne souhaitez pas installer Maigret en local, vous pouvez passer " +"par un shell cloud ou un notebook Jupyter. Cliquez sur l'un des boutons " +"ci-dessous et suivez les instructions pour le lancer dans votre " +"navigateur." + +#: ../../source/installation.rst:58 b58b319427fe45c3a4c39224369ad653 +msgid "Open in Cloud Shell" +msgstr "Ouvrir dans Cloud Shell" + +#: ../../source/installation.rst:62 ef3ca92574364f68a70558ebb085e6d3 +msgid "Run on Replit" +msgstr "Exécuter sur Replit" + +#: ../../source/installation.rst:67 6e04705fe7be4601911d0882d3da201d +msgid "Open In Colab" +msgstr "Ouvrir dans Colab" + +#: ../../source/installation.rst:72 0b998ed69a2d4831b6c64bd98a83fdfe +msgid "Open In Binder" +msgstr "Ouvrir dans Binder" + +#: ../../source/installation.rst:79 1f97c5338f344107b23874e0ff130513 +msgid "" +"Cloud Shell: " +"https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/soxoj/maigret&tutorial=README.md" +msgstr "" +"Cloud Shell : " +"https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/soxoj/maigret&tutorial=README.md" + +#: ../../source/installation.rst:81 0997baf81bf34042b29f8ae53ba80296 +msgid "Replit: https://repl.it/github/soxoj/maigret" +msgstr "Replit : https://repl.it/github/soxoj/maigret" + +#: ../../source/installation.rst:83 86c39f5e02f441e69c36261eeed262f1 +msgid "" +"Google Colab: " +"https://colab.research.google.com/gist/soxoj/879b51bc3b2f8b695abb054090645000" +"/maigret-collab.ipynb" +msgstr "" +"Google Colab : " +"https://colab.research.google.com/gist/soxoj/879b51bc3b2f8b695abb054090645000" +"/maigret-collab.ipynb" + +#: ../../source/installation.rst:85 d2f5724223e84c4d95f4ab49a8ce0d9e +msgid "" +"Binder: " +"https://mybinder.org/v2/gist/soxoj/9d65c2f4d3bec5dd25949197ea73cf3a/HEAD" +msgstr "" +"Binder : " +"https://mybinder.org/v2/gist/soxoj/9d65c2f4d3bec5dd25949197ea73cf3a/HEAD" + +#: ../../source/installation.rst:88 89ed6a6dd30c4182aaf4f2fa3e9c7a4f +msgid "Snap (Linux)" +msgstr "Snap (Linux)" + +#: ../../source/installation.rst:90 92125d486460422f8b24cea270654837 +msgid "" +"Maigret is on the `Snap Store `_ for amd64 " +"and arm64. It needs neither Python nor pip:" +msgstr "" +"Maigret est sur le `Snap Store `_ pour " +"amd64 et arm64. Il ne nécessite ni Python ni pip :" + +#: ../../source/installation.rst:95 9dce1ae260ec48888b7ff6ef434552eb +msgid "Get it from the Snap Store" +msgstr "Télécharger depuis le Snap Store" + +#: ../../source/installation.rst:107 9bed91bd19c04740a85961e314059b77 +msgid "" +"The snap is strictly confined: it can read and write your home directory " +"and very little else. Run it from a directory under ``$HOME`` and reports" +" land in ``./reports`` as usual. Running it from somewhere it cannot see," +" ``/tmp`` for instance, fails before the search starts." +msgstr "" +"Le snap est strictement confiné : il peut lire et écrire dans votre " +"répertoire personnel, et presque rien d'autre. Lancez-le depuis un " +"répertoire situé sous ``$HOME`` et les rapports atterriront dans " +"``./reports`` comme d'habitude. Le lancer depuis un endroit qu'il ne voit" +" pas, ``/tmp`` par exemple, échoue avant même le début de la recherche." + +#: ../../source/installation.rst:112 ace0141ecf294c5f8d14e138b89b5ba7 +msgid "" +"Access to USB drives and other removable media is not connected by " +"default:" +msgstr "" +"L'accès aux clés USB et autres supports amovibles n'est pas connecté par " +"défaut :" + +#: ../../source/installation.rst:118 0828b539d0f34b6aaacf3d43288a613a +msgid "" +"Updates arrive on their own through snapd, so the bundled site database " +"and the code both stay current without any action." +msgstr "" +"Les mises à jour arrivent d'elles-mêmes via snapd : la base de sites " +"embarquée et le code restent donc à jour sans aucune intervention." + +#: ../../source/installation.rst:122 1ec82465d26b4120b3d3d4fcbb19dee0 +msgid "Local installation from PyPi" +msgstr "Installation locale depuis PyPI" + +#: ../../source/installation.rst:124 12173ce540f5403388ccc280f250cabd +msgid "" +"Maigret ships with a bundled site database. After installation from PyPI " +"(or any other method), it can **automatically fetch a newer compatible " +"database from GitHub** when you run it—see :ref:`database-auto-update` in" +" :doc:`settings`." +msgstr "" +"Maigret est livré avec une base de sites embarquée. Après une " +"installation depuis PyPI (ou par toute autre méthode), il peut " +"**récupérer automatiquement depuis GitHub une base plus récente et " +"compatible** lors de son exécution, voir :ref:`database-auto-update` dans" +" :doc:`settings`." + +#: ../../source/installation.rst:127 919ab3e4873d4aff96827d2db9de1cb6 +msgid "Python 3.10 or higher and pip is required, **Python 3.11 is recommended.**" +msgstr "" +"Python 3.10 ou supérieur et pip sont requis, **Python 3.11 est " +"recommandé.**" + +#: ../../source/installation.rst:137 1103ac355d6640da9b52fbb153170e1f +msgid "" +"PDF report support is shipped as an **optional extra** because it relies " +"on system-level graphics libraries that pip cannot install for you. If " +"you plan to use ``--pdf``, install Maigret with the ``pdf`` extra:" +msgstr "" +"La prise en charge des rapports PDF est fournie comme **extra " +"facultatif**, car elle repose sur des bibliothèques graphiques système " +"que pip ne peut pas installer à votre place. Si vous comptez utiliser " +"``--pdf``, installez Maigret avec l'extra ``pdf`` :" + +#: ../../source/installation.rst:145 e97dcce05ad04b538bdc67ee648fe977 +msgid "" +"See :ref:`pdf-extra` below for the full background on why PDF support is " +"optional and how to fix the most common build errors." +msgstr "" +"Voir :ref:`pdf-extra` plus bas pour comprendre en détail pourquoi le PDF " +"est facultatif et comment corriger les erreurs de compilation les plus " +"courantes." + +#: ../../source/installation.rst:149 65b089af5d28448a9ee0ad1dc8d9a0a2 +msgid "Isolated installation with pipx" +msgstr "Installation isolée avec pipx" + +#: ../../source/installation.rst:151 276b036bb3c64ba9917e07a42ee7a5e5 +msgid "" +"``pip3 install maigret`` drops Maigret and its dependencies into " +"whichever Python environment happens to be active. If that is the system " +"Python, the install can collide with packages your distribution manages, " +"and on recent Debian, Ubuntu and Fedora pip refuses outright with " +"``error: externally-managed-environment``." +msgstr "" +"``pip3 install maigret`` installe Maigret et ses dépendances dans " +"l'environnement Python actif, quel qu'il soit. Si c'est le Python du " +"système, l'installation peut entrer en conflit avec des paquets gérés par" +" votre distribution ; sur les versions récentes de Debian, Ubuntu et " +"Fedora, pip refuse d'ailleurs catégoriquement, avec ``error: externally-" +"managed-environment``." + +#: ../../source/installation.rst:157 078d4e27d6f74638a16d696510d4dc70 +msgid "" +"`pipx `_ avoids all of that. It gives Maigret its " +"own virtual environment, puts only the ``maigret`` command on your " +"``PATH``, and keeps the dependencies away from everything else on the " +"machine:" +msgstr "" +"`pipx `_ évite tout cela. Il donne à Maigret son " +"propre environnement virtuel, ne place que la commande ``maigret`` dans " +"votre ``PATH`` et tient ses dépendances à l'écart du reste de la machine " +":" + +#: ../../source/installation.rst:168 9317bc2f43ad4f458e577bb555a1d242 +msgid "The ``pdf`` extra works the same way:" +msgstr "L'extra ``pdf`` fonctionne de la même façon :" + +#: ../../source/installation.rst:174 1c98ca1719c0422fbd032def184d62c0 +msgid "Upgrading and removing are one command each:" +msgstr "La mise à jour et la désinstallation tiennent chacune en une commande :" + +#: ../../source/installation.rst:182 bfff887fdbf84278989660d995b1d905 +msgid "" +"If you already use `uv `_, ``uv tool install " +"maigret`` does the same job." +msgstr "" +"Si vous utilisez déjà `uv `_, ``uv tool " +"install maigret`` fait le même travail." + +#: ../../source/installation.rst:186 71e910c286c24fa49484357d20120531 +msgid "Development version (GitHub)" +msgstr "Version de développement (GitHub)" + +#: ../../source/installation.rst:204 2cc8141fb061418bbb9232680bf0e13f +msgid "Docker" +msgstr "Docker" + +#: ../../source/installation.rst:218 97a9de8e485947b1bd8ac653b104c859 +msgid "Troubleshooting" +msgstr "Dépannage" + +#: ../../source/installation.rst:220 522571e237844c87aae52c6e86c584eb +msgid "" +"If you encounter build errors during installation such as ``cannot find " +"ft2build.h`` or errors related to ``reportlab`` / ``_renderPM``, you need" +" to install system-level dependencies required to compile native " +"extensions." +msgstr "" +"Si vous rencontrez des erreurs de compilation pendant l'installation, du " +"type ``cannot find ft2build.h``, ou des erreurs liées à ``reportlab`` / " +"``_renderPM``, vous devez installer les dépendances système nécessaires à" +" la compilation des extensions natives." + +#: ../../source/installation.rst:224 0ee73bf0a7c9417b8c7a9847fe20e853 +msgid "**Debian/Ubuntu/Kali:**" +msgstr "**Debian/Ubuntu/Kali :**" + +#: ../../source/installation.rst:230 9e36d358b98f45a1961561607fc4162a +msgid "**Fedora/RHEL/CentOS:**" +msgstr "**Fedora/RHEL/CentOS :**" + +#: ../../source/installation.rst:236 ../../source/installation.rst:321 +#: c36e50a1c5b24578a4962ae622b47e8e d5a516382529413e8be81b95cb0be1a9 +msgid "**Arch Linux:**" +msgstr "**Arch Linux :**" + +#: ../../source/installation.rst:242 ../../source/installation.rst:335 +#: 666c0f5d202e41c3bd86cb77c223926c beb188bcaf4c42508de02f870c4f704f +msgid "**macOS (Homebrew):**" +msgstr "**macOS (Homebrew) :**" + +#: ../../source/installation.rst:248 9e78be48570447adb214c02a9b625213 +msgid "After installing the system dependencies, retry the maigret installation." +msgstr "" +"Une fois les dépendances système installées, relancez l'installation de " +"Maigret." + +#: ../../source/installation.rst:250 bd967f67b9784fdfa617dc6e53f3b789 +msgid "" +"If you continue to have issues, consider using Docker instead, which " +"includes all necessary dependencies." +msgstr "" +"Si le problème persiste, envisagez plutôt Docker, qui embarque toutes les" +" dépendances nécessaires." + +#: ../../source/installation.rst:256 3ecbbfd49e9348139ee72e10512df817 +msgid "Optional: PDF reports (``maigret[pdf]``)" +msgstr "Facultatif : les rapports PDF (``maigret[pdf]``)" + +#: ../../source/installation.rst:258 fc50376c42d942509ae889b0ada51093 +msgid "The ``--pdf`` report format is shipped as an optional extra. To enable it:" +msgstr "" +"Le format de rapport ``--pdf`` est fourni comme extra facultatif. Pour " +"l'activer :" + +#: ../../source/installation.rst:264 c49adf2626ba433295a740db9484d06e +msgid "" +"If PDF support is not installed and you pass ``--pdf``, Maigret prints a " +"warning and continues without crashing — every other output format " +"(``--html``, ``--json``, ``--csv``, ``--txt``, ``--xmind``, ``--graph``) " +"keeps working." +msgstr "" +"Si la prise en charge du PDF n'est pas installée et que vous passez " +"``--pdf``, Maigret affiche un avertissement et continue sans planter : " +"tous les autres formats de sortie (``--html``, ``--json``, ``--csv``, " +"``--txt``, ``--xmind``, ``--graph``) continuent de fonctionner." + +#: ../../source/installation.rst:270 a7010a5e92e84074ab24613ff6740fea +msgid "Why is PDF optional?" +msgstr "Pourquoi le PDF est-il facultatif ?" + +#: ../../source/installation.rst:272 f2d8cf8c6aac4147a14eca93d6f0fd87 +msgid "" +"Maigret renders PDFs by converting an HTML template, and that conversion " +"pipeline ultimately depends on the ``cairo`` graphics library through a " +"chain of Python packages roughly shaped like::" +msgstr "" +"Maigret produit ses PDF en convertissant un modèle HTML, et cette chaîne " +"de conversion dépend au bout du compte de la bibliothèque graphique " +"``cairo``, via une succession de paquets Python à peu près comme ceci ::" + +#: ../../source/installation.rst:278 8567fbe97a6c47fab6fab0eebaaf8838 +msgid "" +"The bottom of that chain is a C library — ``libcairo2`` — that has to " +"exist on the host *before* pip can build the Python bindings. The Python " +"binding package (``pycairo``) currently ships **only Windows wheels** on " +"PyPI; on Linux and macOS pip falls back to building from source, and the " +"build fails the moment ``pkg-config`` cannot find ``cairo``. The error " +"looks like::" +msgstr "" +"Au bas de cette chaîne se trouve une bibliothèque C, ``libcairo2``, qui " +"doit être présente sur la machine *avant* que pip ne puisse construire " +"les liaisons Python. Le paquet de liaison Python (``pycairo``) ne publie " +"actuellement **que des wheels Windows** sur PyPI ; sous Linux et macOS, " +"pip se rabat donc sur une compilation depuis les sources, qui échoue dès " +"que ``pkg-config`` ne trouve pas ``cairo``. L'erreur ressemble à ceci ::" + +#: ../../source/installation.rst:288 62199bb508f74bc3813f257546f83759 +msgid "" +"Pulling this whole chain for every Maigret install just so the much " +"smaller group of users who actually want PDFs can have them is a poor " +"trade — so ``xhtml2pdf`` is gated behind the ``pdf`` extra." +msgstr "" +"Imposer toute cette chaîne à chaque installation de Maigret, uniquement " +"pour que le groupe bien plus restreint d'utilisateurs qui veulent " +"vraiment des PDF puisse en avoir, serait un mauvais compromis : " +"``xhtml2pdf`` est donc placé derrière l'extra ``pdf``." + +#: ../../source/installation.rst:292 a4126865ad10432ab9cf6b2d33e26480 +msgid "" +"Two more packages — ``arabic-reshaper`` and ``python-bidi`` — are bundled" +" into the same extra. Maigret core never imports them; they are only used" +" by ``xhtml2pdf`` to shape Arabic glyphs and lay out right-to-left text " +"in PDFs. ``python-bidi`` v0.5+ is also a Rust binding, so on niche " +"platforms without a published wheel it would otherwise pull in a Cargo " +"build for users who never asked for PDF support." +msgstr "" +"Deux autres paquets, ``arabic-reshaper`` et ``python-bidi``, sont réunis " +"dans le même extra. Le cœur de Maigret ne les importe jamais ; ils ne " +"servent qu'à ``xhtml2pdf``, pour façonner les glyphes arabes et mettre en" +" page le texte de droite à gauche dans les PDF. ``python-bidi`` v0.5+ est" +" en outre une liaison Rust : sur les plateformes de niche sans wheel " +"publiée, il déclencherait une compilation Cargo chez des utilisateurs qui" +" n'ont jamais demandé le PDF." + +#: ../../source/installation.rst:300 d9c3f909c29441c283b07779c370e608 +msgid "Installing the system prerequisites" +msgstr "Installer les prérequis système" + +#: ../../source/installation.rst:302 4e207f5b27854c2d8b1dcedea0289a20 +msgid "" +"Install the cairo headers, ``pkg-config``, and a working C toolchain " +"*before* running ``pip install 'maigret[pdf]'``." +msgstr "" +"Installez les en-têtes de cairo, ``pkg-config`` et une chaîne de " +"compilation C fonctionnelle *avant* de lancer ``pip install " +"'maigret[pdf]'``." + +#: ../../source/installation.rst:305 ab52341b4c6f4a62b58624da37566ec2 +msgid "**Debian / Ubuntu / Linux Mint / Kali:**" +msgstr "**Debian / Ubuntu / Linux Mint / Kali :**" + +#: ../../source/installation.rst:314 dad4389c52bc4db7984b188d2525ed5d +msgid "**Fedora / RHEL / CentOS:**" +msgstr "**Fedora / RHEL / CentOS :**" + +#: ../../source/installation.rst:328 f3a52a0a27c14654b3f15601a8dcdbfe +msgid "**Alpine Linux:**" +msgstr "**Alpine Linux :**" + +#: ../../source/installation.rst:343 bd33aa76918847e7af4087328369d212 +msgid "**Windows:**" +msgstr "**Windows :**" + +#: ../../source/installation.rst:345 a3d64de62d56499fa54e306c20e8c052 +msgid "" +"No system packages are needed — ``pycairo`` ships prebuilt wheels for " +"Windows. Just run:" +msgstr "" +"Aucun paquet système n'est nécessaire : ``pycairo`` publie des wheels " +"précompilées pour Windows. Lancez simplement :" + +#: ../../source/installation.rst:352 b905ed5326634b5ba7624b27b6c99499 +msgid "**Google Cloud Shell / Colab / Replit / generic CI:**" +msgstr "**Google Cloud Shell / Colab / Replit / CI générique :**" + +#: ../../source/installation.rst:354 0b9a480210c44561a1c2954d9650dacf +msgid "" +"These environments behave like Debian/Ubuntu — install the same " +"``libcairo2-dev pkg-config python3-dev build-essential`` triple before " +"``pip install 'maigret[pdf]'``. If you do not control the base image and " +"cannot ``apt install``, skip the extra and use ``--html`` reports " +"instead; HTML reports contain the same data and open in any browser." +msgstr "" +"Ces environnements se comportent comme Debian/Ubuntu : installez le même " +"trio ``libcairo2-dev pkg-config python3-dev build-essential`` avant ``pip" +" install 'maigret[pdf]'``. Si vous ne maîtrisez pas l'image de base et ne" +" pouvez pas faire ``apt install``, laissez tomber l'extra et utilisez les" +" rapports ``--html`` : ils contiennent les mêmes données et s'ouvrent " +"dans n'importe quel navigateur." + +#: ../../source/installation.rst:361 294ca985b3a9483985b2b65888a845bf +msgid "``maigret: command not found`` after install" +msgstr "``maigret: command not found`` après l'installation" + +#: ../../source/installation.rst:363 80541d64922147d98cecd810f48a6d12 +msgid "If pip prints warnings like::" +msgstr "Si pip affiche des avertissements du type ::" + +#: ../../source/installation.rst:368 c241b60227bf46188300c27f8abbe41c +msgid "" +"…and ``maigret --version`` then fails with ``command not found``, your " +"``--user`` install put the entry-point script in a directory the shell " +"does not search. Add it to ``PATH``:" +msgstr "" +"…et que ``maigret --version`` échoue ensuite avec ``command not found``, " +"c'est que votre installation ``--user`` a placé le script de point " +"d'entrée dans un répertoire que le shell ne parcourt pas. Ajoutez-le au " +"``PATH`` :" + +#: ../../source/installation.rst:377 de778c1f45e34d23900fd1945882fe9d +msgid "" +"Or install into a virtual environment, where the entry point lands in the" +" venv's ``bin/`` automatically:" +msgstr "" +"Ou installez dans un environnement virtuel, où le point d'entrée atterrit" +" automatiquement dans le ``bin/`` du venv :" + +#: ../../source/installation.rst:387 0360ba072a0b44589d39d7066b682e68 +msgid "Optional: Cloudflare bypass solver" +msgstr "Facultatif : le solveur de contournement Cloudflare" + +#: ../../source/installation.rst:391 80057a95b58b4a8db8f45bbd2830826f +msgid "" +"**Experimental.** The Cloudflare webgate is under active development; the" +" configuration schema and CLI behaviour may change without backwards-" +"compatibility guarantees." +msgstr "" +"**Expérimental.** Le webgate Cloudflare est en cours de développement " +"actif ; le schéma de configuration et le comportement en ligne de " +"commande peuvent changer sans garantie de compatibilité ascendante." + +#: ../../source/installation.rst:395 079b60030ede488eaf4b51a68abd3af7 +msgid "" +"Sites tagged ``cf_js_challenge`` / ``cf_firewall`` need a real browser to" +" pass their JavaScript challenge. To check those sites you can run a " +"local `FlareSolverr `_ " +"instance — Maigret will route protected checks to it when ``--cloudflare-" +"bypass`` is set:" +msgstr "" +"Les sites marqués ``cf_js_challenge`` / ``cf_firewall`` exigent un vrai " +"navigateur pour passer leur défi JavaScript. Pour vérifier ces sites, " +"vous pouvez lancer une instance locale de `FlareSolverr " +"`_ : Maigret y redirigera " +"les vérifications protégées lorsque ``--cloudflare-bypass`` est activé :" + +#: ../../source/installation.rst:404 cd5f65e9e39049988fbdd7e9a488db44 +msgid "" +"This is **optional** — Maigret runs without it; only sites whose " +"``protection`` field intersects " +"``settings.cloudflare_bypass.trigger_protection`` require the solver. See" +" :ref:`cloudflare-bypass` for details." +msgstr "" +"C'est **facultatif** : Maigret fonctionne sans. Seuls les sites dont le " +"champ ``protection`` recoupe " +"``settings.cloudflare_bypass.trigger_protection`` ont besoin du solveur. " +"Voir :ref:`cloudflare-bypass` pour les détails." + diff --git a/docs/source/locale/fr/LC_MESSAGES/library-usage.po b/docs/source/locale/fr/LC_MESSAGES/library-usage.po new file mode 100644 index 00000000..e42a1f39 --- /dev/null +++ b/docs/source/locale/fr/LC_MESSAGES/library-usage.po @@ -0,0 +1,142 @@ +# French translation of the Maigret documentation. +# Copyright (C) 2025, soxoj +# This file is distributed under the same license as the Maigret package. +# +msgid "" +msgstr "" +"Project-Id-Version: Maigret 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-09-15 17:05+0200\n" +"PO-Revision-Date: 2026-09-15 17:20+0200\n" +"Last-Translator: \n" +"Language: fr\n" +"Language-Team: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/library-usage.rst:4 912ee46973c845bb83e2007caf60807d +msgid "Library usage" +msgstr "Utilisation en tant que bibliothèque" + +#: ../../source/library-usage.rst:6 1dc5af2d1bc94caf898ae0dfba28ab99 +msgid "" +"Maigret's CLI is a thin wrapper around an async Python API. You can embed" +" Maigret in your own tools, pipelines, and OSINT workflows — no need to " +"shell out." +msgstr "" +"L'interface en ligne de commande de Maigret n'est qu'une fine couche au-" +"dessus d'une API Python asynchrone. Vous pouvez intégrer Maigret à vos " +"propres outils, pipelines et workflows OSINT, sans passer par un appel " +"système." + +#: ../../source/library-usage.rst:8 689a5527381f4eb2986c9928ea5063cd +msgid "" +"This page covers the common patterns. For the full argument list of the " +"underlying function, see ``maigret.checking.maigret`` in the source." +msgstr "" +"Cette page couvre les usages courants. Pour la liste complète des " +"arguments de la fonction sous-jacente, voir ``maigret.checking.maigret`` " +"dans le code source." + +#: ../../source/library-usage.rst:11 9fc2fae4f56f467c98d82f2eb5cae83f +msgid "Installation" +msgstr "Installation" + +#: ../../source/library-usage.rst:18 3593c7ee3c024bb3932f00ce062d2918 +msgid "Minimal example" +msgstr "Exemple minimal" + +#: ../../source/library-usage.rst:20 163725f129db46428386562d5e60daf3 +msgid "A working end-to-end search against the top 500 sites:" +msgstr "Une recherche complète et fonctionnelle sur les 500 premiers sites :" + +#: ../../source/library-usage.rst:52 1b8d59523b644de2826a34890bb83005 +msgid "Key points:" +msgstr "Points importants :" + +#: ../../source/library-usage.rst:54 9febe61ea25341fe89f67792bce0dd7b +msgid "" +"``maigret_search`` is an ``async`` function — wrap it with " +"``asyncio.run(...)`` or ``await`` it from inside your own event loop." +msgstr "" +"``maigret_search`` est une fonction ``async`` : encapsulez-la dans " +"``asyncio.run(...)`` ou faites ``await`` depuis votre propre boucle " +"d'événements." + +#: ../../source/library-usage.rst:55 94cba639a3fd48d59f757a97923bbcce +msgid "" +"``is_parsing_enabled=True`` turns on ``socid_extractor`` so " +"``result[\"ids_data\"]`` is populated with profile fields (bio, linked " +"accounts, uids, etc.). See its `Library usage `_ page for calling" +" it directly, and `Maigret integration `_ for how " +"the two projects fit together." +msgstr "" +"``is_parsing_enabled=True`` active ``socid_extractor``, si bien que " +"``result[\"ids_data\"]`` est rempli avec les champs du profil " +"(biographie, comptes liés, uids, etc.). Voir sa page `Library usage " +"`_ " +"pour l'appeler directement, et `Maigret integration `_ pour " +"comprendre comment les deux projets s'articulent." + +#: ../../source/library-usage.rst:56 9d8f67adc20e46818a07c55a1e8d0d1c +msgid "" +"Each entry in the returned dict has a ``\"status\"`` object with " +"``is_found()``, plus ``url_user``, ``http_status``, ``rank``, " +"``ids_data``, and more." +msgstr "" +"Chaque entrée du dictionnaire renvoyé contient un objet ``\"status\"`` " +"avec ``is_found()``, ainsi que ``url_user``, ``http_status``, ``rank``, " +"``ids_data``, et d'autres champs." + +#: ../../source/library-usage.rst:59 cf296c815a41463dba25bdac37e1ea1f +msgid "Filtering sites" +msgstr "Filtrer les sites" + +#: ../../source/library-usage.rst:61 4f08358e924546e78d3120153934da7f +msgid "``ranked_sites_dict`` accepts the same filters as the CLI:" +msgstr "``ranked_sites_dict`` accepte les mêmes filtres que la ligne de commande :" + +#: ../../source/library-usage.rst:78 7bf2776ae3014fe581e9b36eacd7f9eb +msgid "Running inside an existing event loop" +msgstr "Exécution dans une boucle d'événements existante" + +#: ../../source/library-usage.rst:80 10de59061386431aa4d2f569c60eff6b +msgid "" +"If your application already runs an asyncio loop (FastAPI, aiohttp " +"server, a Discord bot, etc.), ``await`` ``maigret_search`` directly " +"instead of calling ``asyncio.run``:" +msgstr "" +"Si votre application fait déjà tourner une boucle asyncio (FastAPI, un " +"serveur aiohttp, un bot Discord, etc.), faites directement ``await`` sur " +"``maigret_search`` au lieu d'appeler ``asyncio.run`` :" + +#: ../../source/library-usage.rst:98 70183995fad54862aa732fc4a9790811 +msgid "Routing through a proxy" +msgstr "Passer par un proxy" + +#: ../../source/library-usage.rst:100 c960cc0b366f4d05a2a658b63825ad93 +msgid "" +"The same proxy / Tor / I2P flags the CLI exposes are plain keyword " +"arguments:" +msgstr "" +"Les options proxy / Tor / I2P de la ligne de commande sont de simples " +"arguments nommés :" + +#: ../../source/library-usage.rst:115 b29d27764029441fa483a633e5da903b +msgid "Full function signature" +msgstr "Signature complète de la fonction" + +#: ../../source/library-usage.rst:139 cae3576edbd84cf89e8857094185c1b0 +msgid "" +"See :doc:`command-line-options` for a description of each option — the " +"semantics match the CLI flags one-to-one." +msgstr "" +"Voir :doc:`command-line-options` pour la description de chaque option : " +"la sémantique correspond exactement aux options de la ligne de commande." + diff --git a/docs/source/locale/fr/LC_MESSAGES/philosophy.po b/docs/source/locale/fr/LC_MESSAGES/philosophy.po new file mode 100644 index 00000000..e3f222b2 --- /dev/null +++ b/docs/source/locale/fr/LC_MESSAGES/philosophy.po @@ -0,0 +1,131 @@ +# French translation of the Maigret documentation. +# Copyright (C) 2025, soxoj +# This file is distributed under the same license as the Maigret package. +# +msgid "" +msgstr "" +"Project-Id-Version: Maigret 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-09-15 17:05+0200\n" +"PO-Revision-Date: 2026-09-15 17:20+0200\n" +"Last-Translator: \n" +"Language: fr\n" +"Language-Team: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/philosophy.rst:4 9419a206dfa64d9f9bf6375368d36521 +msgid "Philosophy" +msgstr "Philosophie" + +#: ../../source/philosophy.rst:6 50632721642b477ab022ab1b137949d4 +msgid "" +"*The Commissioner Jules Maigret is a fictional French police detective, " +"created by Georges Simenon. His investigation method is based on " +"understanding the personality of different people and their " +"interactions.*" +msgstr "" +"*Le commissaire Jules Maigret est un policier de fiction français, créé " +"par Georges Simenon. Sa méthode d'enquête repose sur la compréhension de " +"la personnalité des gens et de leurs interactions.*" + +#: ../../source/philosophy.rst:10 cfee4a15fc074a97aaa20c8a272c7087 +msgid "TL;DR: Username => Dossier" +msgstr "En bref : un nom d'utilisateur => un dossier" + +#: ../../source/philosophy.rst:12 8d4120f7e65d4cf0bf1ec2f1394234bb +msgid "" +"Maigret is designed to gather all the available information about person " +"by his username." +msgstr "" +"Maigret est conçu pour rassembler toutes les informations disponibles sur" +" une personne à partir de son nom d'utilisateur." + +#: ../../source/philosophy.rst:14 3d6c38de4f3d46b29532fd470a6eac0c +msgid "" +"What kind of information is this? First, links to person accounts. " +"Secondly, all the machine-extractable pieces of info, such as: other " +"usernames, full name, URLs to people's images, birthday, location " +"(country, city, etc.), gender." +msgstr "" +"De quelles informations s'agit-il ? D'abord, des liens vers les comptes " +"de la personne. Ensuite, tous les éléments extractibles automatiquement, " +"tels que : d'autres noms d'utilisateur, le nom complet, les URL des " +"photos, la date de naissance, la localisation (pays, ville, etc.) et le " +"genre." + +#: ../../source/philosophy.rst:18 8d2202a1c40341d7ba45ddd5d1aa8b9f +msgid "" +"All this information forms some dossier, but it also useful for other " +"tools and analytical purposes. Each collected piece of data has a label " +"of a certain format (for example, ``follower_count`` for the number of " +"subscribers or ``created_at`` for account creation time) so that it can " +"be parsed and analyzed by various systems and stored in databases." +msgstr "" +"Toutes ces informations forment un dossier, mais elles sont aussi utiles " +"à d'autres outils et à des fins analytiques. Chaque donnée collectée " +"porte une étiquette d'un format précis (par exemple ``follower_count`` " +"pour le nombre d'abonnés ou ``created_at`` pour la date de création du " +"compte), afin de pouvoir être analysée par différents systèmes et stockée" +" dans des bases de données." + +#: ../../source/philosophy.rst:24 1ae72284813b436aa617c2ec0b2221c9 +msgid "Origins" +msgstr "Origines" + +#: ../../source/philosophy.rst:26 99f6cd04767e447ab5438cc079c92739 +msgid "" +"Maigret started from studying what OSINT investigators actually use in " +"practice — and from the realization that many popular tools do not " +"deliver real investigative value. The original research behind this " +"observation is summarized in the article `What's wrong with namecheckers " +"`_. " +"For a broader landscape of username-checking tools, see the curated " +"`OSINT namecheckers list `_." +msgstr "" +"Maigret est né de l'étude de ce que les enquêteurs OSINT utilisent " +"réellement sur le terrain, et du constat que beaucoup d'outils populaires" +" n'apportent pas de véritable valeur d'enquête. La recherche à l'origine " +"de ce constat est résumée dans l'article `What's wrong with namecheckers " +"`_. " +"Pour un panorama plus large des outils de vérification de noms " +"d'utilisateur, voir la `liste d'outils OSINT namecheckers " +"`_." + +#: ../../source/philosophy.rst:33 74d74e5ae95b48ad82039fd1c87d75f0 +msgid "Two ideas grew out of that research:" +msgstr "Deux idées sont nées de cette recherche :" + +#: ../../source/philosophy.rst:35 b76d9b534a7947b0a821d62c550fd835 +msgid "" +"`socid-extractor `_ " +"(`documentation `_) — a library " +"focused on pulling structured identity data (user IDs, full names, linked" +" accounts, bios, timestamps, etc.) out of account pages and public API " +"responses, so that finding an account is not the end of the pipeline." +msgstr "" +"`socid-extractor `_ " +"(`documentation `_) — une " +"bibliothèque dédiée à l'extraction de données d'identité structurées " +"(identifiants d'utilisateur, noms complets, comptes liés, biographies, " +"horodatages, etc.) depuis les pages de comptes et les réponses d'API " +"publiques, pour que trouver un compte ne soit pas la fin de la chaîne." + +#: ../../source/philosophy.rst:39 7c7af688ca7b4d78a78f6dafc5d1e959 +msgid "" +"**Maigret** itself — which started as a fork of `Sherlock " +"`_ but has long since " +"outgrown the original project in coverage, extraction depth, and check " +"reliability. Today Maigret is used as a component by major OSINT vendors " +"in their commercial products." +msgstr "" +"**Maigret** lui-même, qui a commencé comme un fork de `Sherlock " +"`_ mais a depuis longtemps " +"dépassé le projet d'origine en couverture, en profondeur d'extraction et " +"en fiabilité des vérifications. Aujourd'hui, Maigret est utilisé comme " +"composant par de grands éditeurs OSINT dans leurs produits commerciaux." + diff --git a/docs/source/locale/fr/LC_MESSAGES/privacy.po b/docs/source/locale/fr/LC_MESSAGES/privacy.po new file mode 100644 index 00000000..5d60de17 --- /dev/null +++ b/docs/source/locale/fr/LC_MESSAGES/privacy.po @@ -0,0 +1,54 @@ +# French translation of the Maigret documentation. +# Copyright (C) 2025, soxoj +# This file is distributed under the same license as the Maigret package. +# +msgid "" +msgstr "" +"Project-Id-Version: Maigret 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-09-15 17:05+0200\n" +"PO-Revision-Date: 2026-09-15 17:20+0200\n" +"Last-Translator: \n" +"Language: fr\n" +"Language-Team: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/privacy.rst:4 3ea365e65eb64603a69b0bab4828d720 +msgid "Privacy" +msgstr "Confidentialité" + +#: ../../source/privacy.rst:6 7245b4e2ae184a61aea5a951d22c1a08 +msgid "" +"Maigret runs entirely on your machine. It has no telemetry, no analytics " +"and no update pings, and it sends nothing to the project maintainers." +msgstr "" +"Maigret s'exécute entièrement sur votre machine. Il n'y a ni télémétrie, " +"ni statistiques d'usage, ni vérification de mise à jour, et rien n'est " +"envoyé aux mainteneurs du projet." + +#: ../../source/privacy.rst:9 eac51965e9034c3da052c5809dce3215 +msgid "" +"The usernames you search for are sent to the websites being checked, " +"because that is how the check works: Maigret requests public profile URLs" +" the same way a browser would. Reports are written to local files only." +msgstr "" +"Les noms d'utilisateur que vous recherchez sont envoyés aux sites " +"vérifiés, car c'est ainsi que fonctionne la vérification : Maigret " +"demande les URL des profils publics exactement comme le ferait un " +"navigateur. Les rapports sont écrits uniquement dans des fichiers locaux." + +#: ../../source/privacy.rst:13 a1b4b0ea5592439396e88743155ce39d +msgid "" +"One feature is opt-in and involves a third party: the AI analysis of a " +"report is sent to the OpenAI API, and only if you supply your own API " +"key. Without a key the feature is inactive." +msgstr "" +"Une seule fonctionnalité fait intervenir un tiers, et elle est " +"facultative : l'analyse d'un rapport par IA est envoyée à l'API d'OpenAI," +" et uniquement si vous fournissez votre propre clé d'API. Sans clé, la " +"fonctionnalité reste inactive." + diff --git a/docs/source/locale/fr/LC_MESSAGES/quick-start.po b/docs/source/locale/fr/LC_MESSAGES/quick-start.po new file mode 100644 index 00000000..d617ee29 --- /dev/null +++ b/docs/source/locale/fr/LC_MESSAGES/quick-start.po @@ -0,0 +1,60 @@ +# French translation of the Maigret documentation. +# Copyright (C) 2025, soxoj +# This file is distributed under the same license as the Maigret package. +# +msgid "" +msgstr "" +"Project-Id-Version: Maigret 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-09-15 17:05+0200\n" +"PO-Revision-Date: 2026-09-15 17:20+0200\n" +"Last-Translator: \n" +"Language: fr\n" +"Language-Team: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/quick-start.rst:4 03d07f6e7c524cac827c0528846e6f0b +msgid "Quick start" +msgstr "Démarrage rapide" + +#: ../../source/quick-start.rst:6 009c3ff4ff9f4c95a6ac4812c50fb91b +msgid "" +"After :doc:`installing Maigret `, you can begin searching " +"by providing one or more usernames to look up:" +msgstr "" +"Une fois :doc:`Maigret installé `, vous pouvez lancer une " +"recherche en fournissant un ou plusieurs noms d'utilisateur :" + +#: ../../source/quick-start.rst:8 06ab1e6636264f909fde1256f92e87d0 +msgid "``maigret username1 username2 ...``" +msgstr "``maigret nomdutilisateur1 nomdutilisateur2 ...``" + +#: ../../source/quick-start.rst:10 303ee7d0f61848bfa82a56ae5677b3f8 +msgid "" +"Maigret will search for accounts with the specified usernames across a " +"vast number of websites. It will provide you with a list of URLs to any " +"discovered accounts, along with relevant information extracted from those" +" profiles." +msgstr "" +"Maigret recherche les comptes correspondant aux noms d'utilisateur " +"indiqués sur un très grand nombre de sites. Il vous renvoie la liste des " +"URL des comptes trouvés, accompagnée des informations pertinentes " +"extraites de ces profils." + +#: ../../source/quick-start.rst:14 be975e1e40c04e8d85e6db9c24148640 +msgid "" +"Don't want to install anything? Run Maigret in your browser via the " +"`Telegram bot `_ — same engine, no setup." +msgstr "" +"Vous ne voulez rien installer ? Lancez Maigret dans votre navigateur via " +"le `bot Telegram `_ : le même moteur, sans " +"aucune configuration." + +#: ../../source/quick-start.rst:17 b0e7682f1d984b1b93a62a16712b62d5 +msgid "Maigret search results screenshot" +msgstr "Capture d'écran des résultats de recherche de Maigret" + diff --git a/docs/source/locale/fr/LC_MESSAGES/release-process.po b/docs/source/locale/fr/LC_MESSAGES/release-process.po new file mode 100644 index 00000000..92b933fb --- /dev/null +++ b/docs/source/locale/fr/LC_MESSAGES/release-process.po @@ -0,0 +1,326 @@ +# French translation of the Maigret documentation. +# Copyright (C) 2025, soxoj +# This file is distributed under the same license as the Maigret package. +# +msgid "" +msgstr "" +"Project-Id-Version: Maigret 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-09-15 17:05+0200\n" +"PO-Revision-Date: 2026-09-15 17:20+0200\n" +"Last-Translator: \n" +"Language: fr\n" +"Language-Team: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/release-process.rst:4 17a339e706284f4a85c691897df85738 +msgid "Release process" +msgstr "Processus de publication" + +#: ../../source/release-process.rst:6 aefbb5a49b9341f68f5086531f4363de +msgid "" +"This page describes how a Maigret release is cut, what each git tag in " +"the repository means, and which automation reacts to what. It is written " +"for maintainers and for downstream packagers who need to know which ref " +"to build from." +msgstr "" +"Cette page décrit comment une version de Maigret est publiée, ce que " +"signifie chaque tag git du dépôt et quelle automatisation réagit à quoi. " +"Elle s'adresse aux mainteneurs et aux empaqueteurs en aval, qui doivent " +"savoir depuis quelle référence construire." + +#: ../../source/release-process.rst:12 1e74bb38a83f4bf2bcb877afebcf6256 +msgid "Where the version lives" +msgstr "Où se trouve le numéro de version" + +#: ../../source/release-process.rst:14 b6576061e660449893640bc12d1697e5 +msgid "The version is stored in two files and both have to be changed together:" +msgstr "" +"La version est stockée dans deux fichiers, qui doivent être modifiés " +"ensemble :" + +#: ../../source/release-process.rst:16 bdc5ce0a756048588fc6bd4fc5babe57 +msgid "``pyproject.toml``, the ``version`` field under ``[tool.poetry]``" +msgstr "``pyproject.toml``, le champ ``version`` sous ``[tool.poetry]``" + +#: ../../source/release-process.rst:17 cef162954f8e4b84bc1a036aba630ad8 +msgid "``maigret/__version__.py``, the ``__version__`` string" +msgstr "``maigret/__version__.py``, la chaîne ``__version__``" + +#: ../../source/release-process.rst:19 237e5c1ed8cf4a2a9b443fe1f4b1281e +msgid "" +"``maigret/__version__.py`` is what the snap packaging reads through " +"``craftctl set version``, and ``pyproject.toml`` is what ends up in the " +"PyPI metadata. A mismatch between them produces a package that reports " +"one version and is published as another." +msgstr "" +"``maigret/__version__.py`` est ce que lit l'empaquetage snap via " +"``craftctl set version``, et ``pyproject.toml`` est ce qui se retrouve " +"dans les métadonnées PyPI. Une divergence entre les deux produit un " +"paquet qui annonce une version et qui est publié sous une autre." + +#: ../../source/release-process.rst:25 a92d26566ec94a2f940411d2aaf8dbf4 +msgid "Cutting a release" +msgstr "Préparer une version" + +#: ../../source/release-process.rst:27 f34e7a60d13d4d379930f58cee1bf22b +msgid "" +"Branch off ``main``. The branch is normally named after the version, for " +"example ``0.6.5``." +msgstr "" +"Créez une branche à partir de ``main``. Elle porte normalement le nom de " +"la version, par exemple ``0.6.5``." + +#: ../../source/release-process.rst:29 025928a1d2054936a551727ac52e5a34 +msgid "Bump the two version files on that branch." +msgstr "Incrémentez les deux fichiers de version sur cette branche." + +#: ../../source/release-process.rst:30 b576ce4c678a4c62ae94596beba1db7c +msgid "" +"Open a pull request for the bump, so the change is reviewed like any " +"other." +msgstr "" +"Ouvrez une pull request pour cette montée de version, afin qu'elle soit " +"relue comme n'importe quel autre changement." + +#: ../../source/release-process.rst:32 ad1c5257714046a1b132082636dcbd73 +msgid "" +"The release branch is where the tag will live. It is deliberately " +"separate from ``main``: the tag has to point at a commit whose version " +"files already say the new number, and ``main`` only receives that commit " +"after the release is out." +msgstr "" +"C'est sur la branche de version que vivra le tag. Elle est volontairement" +" distincte de ``main`` : le tag doit pointer sur un commit dont les " +"fichiers de version annoncent déjà le nouveau numéro, et ``main`` ne " +"reçoit ce commit qu'une fois la version publiée." + +#: ../../source/release-process.rst:37 9b0fd23d4f83496aa2b3b0339aa9b63b +msgid "Publishing" +msgstr "Publication" + +#: ../../source/release-process.rst:39 cd1ba051900c45f68ad00bc86f881d50 +msgid "" +"Create a GitHub Release whose tag is ``vX.Y.Z`` and whose target is the " +"release branch. Publishing it is the event that starts everything else, " +"so the release notes should be finished before you publish rather than " +"after." +msgstr "" +"Créez une GitHub Release dont le tag est ``vX.Y.Z`` et dont la cible est " +"la branche de version. C'est sa publication qui déclenche tout le reste, " +"donc les notes de version doivent être terminées avant de publier, pas " +"après." + +#: ../../source/release-process.rst:43 564a58b206c14bc8a6ad3b7404fa9fff +msgid "Two workflows listen for ``release: types: [published]``:" +msgstr "Deux workflows écoutent ``release: types: [published]`` :" + +#: ../../source/release-process.rst:45 ea4d208e7f084977a98696fbff688f94 +msgid "" +"``python-publish.yml`` builds the source distribution and the wheel and " +"uploads them to PyPI through trusted publishing." +msgstr "" +"``python-publish.yml`` construit la distribution source et la wheel, puis" +" les téléverse sur PyPI via le trusted publishing." + +#: ../../source/release-process.rst:47 af70ac77d9864f228f7ca81e486f3876 +msgid "" +"``pyinstaller.yml`` builds ``maigret_standalone.exe`` under Wine and " +"attaches it to the release. The binary appears a few minutes after the " +"release itself, because PyInstaller is slow under Wine." +msgstr "" +"``pyinstaller.yml`` construit ``maigret_standalone.exe`` sous Wine et " +"l'attache à la release. Le binaire apparaît quelques minutes après la " +"release elle-même, car PyInstaller est lent sous Wine." + +#: ../../source/release-process.rst:51 dcbf2f54af9d498d9ab76133fe766e0f +msgid "" +"Both check out ``refs/tags/vX.Y.Z``, so both build the released code " +"rather than the current head of a branch." +msgstr "" +"Les deux font un checkout de ``refs/tags/vX.Y.Z`` : ils construisent donc" +" le code publié, et non la tête actuelle d'une branche." + +#: ../../source/release-process.rst:55 795f5e6ef9c54986aafe1e91e65752e7 +msgid "" +"The ``pypi`` environment has no protection rules, so publishing any " +"release sends a package straight to PyPI with no human gate. Publishing a" +" test release from a branch whose version is not yet on PyPI will publish" +" that version for real." +msgstr "" +"L'environnement ``pypi`` n'a aucune règle de protection : publier une " +"release quelconque envoie le paquet directement sur PyPI, sans validation" +" humaine. Publier une release de test depuis une branche dont la version " +"n'est pas encore sur PyPI publiera cette version pour de bon." + +#: ../../source/release-process.rst:61 5ddb2c3d69154ecbb85d3409d3322111 +msgid "After the release" +msgstr "Après la publication" + +#: ../../source/release-process.rst:63 517ac4e667aa440c80cd998100432260 +msgid "" +"Merge the release branch into ``main``. In practice this happens a couple" +" of minutes after the release is published." +msgstr "" +"Fusionnez la branche de version dans ``main``. En pratique, cela se fait " +"quelques minutes après la publication." + +#: ../../source/release-process.rst:66 07b11fd6ec564244a88153832522526f +msgid "" +"The push to ``main`` is a separate trigger and starts the routine " +"automation: the nightly Windows build, the Docker Hub images, the site " +"database refresh and the test suite." +msgstr "" +"Le push sur ``main`` est un déclencheur distinct, qui lance " +"l'automatisation de routine : la construction nocturne pour Windows, les " +"images Docker Hub, le rafraîchissement de la base de sites et la suite de" +" tests." + +#: ../../source/release-process.rst:70 daa606217c2a4fad89b8dc9a1cbe017f +msgid "" +"Because the release branch is merged with a squash, the commit that lands" +" on ``main`` is not the commit the tag points at. This means ``vX.Y.Z`` " +"is not an ancestor of ``main``. It is expected, and it is why a packager " +"should build from the tag rather than looking for it in the branch " +"history." +msgstr "" +"Comme la branche de version est fusionnée en squash, le commit qui arrive" +" sur ``main`` n'est pas celui sur lequel pointe le tag. Autrement dit, " +"``vX.Y.Z`` n'est pas un ancêtre de ``main``. C'est attendu, et c'est la " +"raison pour laquelle un empaqueteur doit construire depuis le tag plutôt " +"que de le chercher dans l'historique de la branche." + +#: ../../source/release-process.rst:76 1fc5ebf8ebde4634917f70b5e6a06681 +msgid "Tags in this repository" +msgstr "Les tags de ce dépôt" + +#: ../../source/release-process.rst:78 b3d0729bb2b2432fac9969ed9600c617 +msgid "" +"**Release tags**, ``vX.Y.Z``. Immutable, one per release, pointing at the" +" tip of a release branch. These are the only tags a packager should build" +" from." +msgstr "" +"**Tags de version**, ``vX.Y.Z``. Immuables, un par version, pointant sur " +"la tête d'une branche de version. Ce sont les seuls tags depuis lesquels " +"un empaqueteur doit construire." + +#: ../../source/release-process.rst:81 6328e93333ab4c8e8204cf15a6f9b3f0 +msgid "" +"**Nightly tags**, ``nightly-main`` and ``nightly-dev``. Moving tags. " +"Every push to the matching branch rebuilds the Windows binary and force-" +"updates the tag to the built commit, so the tag always matches the " +"attached ``.exe``. The releases behind them are marked as prereleases so " +"they never take the \"latest\" marker from a real release. Never pin " +"anything to these: the ref is stable but its content is not." +msgstr "" +"**Tags nocturnes**, ``nightly-main`` et ``nightly-dev``. Des tags " +"mobiles. Chaque push sur la branche correspondante reconstruit le binaire" +" Windows et force la mise à jour du tag vers le commit construit, de " +"sorte que le tag corresponde toujours au ``.exe`` attaché. Les releases " +"associées sont marquées comme préversions, afin de ne jamais prendre le " +"marqueur « latest » d'une vraie version. N'épinglez jamais quoi que ce " +"soit dessus : la référence est stable, mais son contenu ne l'est pas." + +#: ../../source/release-process.rst:88 7403364086e84a208f960ad875e398b6 +msgid "" +"**Legacy tags**, ``main``, ``dev``, ``test`` and ``dev-564`` through " +"``dev-571``. Left over from an earlier version of the Windows build, " +"which used the branch name directly as the tag name. Nothing creates or " +"updates them any more. Two of them still carry GitHub releases with a " +"Windows binary attached, built in April 2026, so anything downloaded from" +" them is old." +msgstr "" +"**Tags hérités**, ``main``, ``dev``, ``test`` et ``dev-564`` à " +"``dev-571``. Reliquats d'une ancienne version de la construction Windows," +" qui utilisait directement le nom de la branche comme nom de tag. Plus " +"rien ne les crée ni ne les met à jour. Deux d'entre eux portent encore " +"des releases GitHub avec un binaire Windows attaché, construit en avril " +"2026 : tout ce qui en est téléchargé est donc ancien." + +#: ../../source/release-process.rst:95 499996b2bb6e49f2841c32bb58528637 +msgid "" +"A tag named ``main`` shadows the branch of the same name. ``git rev-parse" +" main`` warns that the refname is ambiguous and answers with the tag, so " +"``git show main:some/file`` reads from the tag's commit and not from the " +"branch head. Tools that resolve a bare ref hit this too: a remote build " +"that is told to build ``main`` may build the tag. Use ``refs/heads/main``" +" explicitly, or clone with ``--no-tags``. The site data workflow works " +"around it with a ``git tag -d main`` step before it touches any ref." +msgstr "" +"Un tag nommé ``main`` masque la branche du même nom. ``git rev-parse " +"main`` avertit que la référence est ambiguë et répond avec le tag, si " +"bien que ``git show main:un/fichier`` lit le commit du tag et non la tête" +" de la branche. Les outils qui résolvent une référence nue tombent dans " +"le même piège : une construction distante à laquelle on demande ``main`` " +"risque de construire le tag. Utilisez explicitement ``refs/heads/main``, " +"ou clonez avec ``--no-tags``. Le workflow des données de sites contourne " +"le problème avec une étape ``git tag -d main`` avant de toucher à la " +"moindre référence." + +#: ../../source/release-process.rst:104 24e401ea5e3c47e686b40255ab6cedaf +msgid "Where the artifacts end up" +msgstr "Où atterrissent les artefacts" + +#: ../../source/release-process.rst:106 181b3e7dbf0f41799e28eb956e8f3e66 +msgid "Published automatically on release:" +msgstr "Publiés automatiquement à chaque release :" + +#: ../../source/release-process.rst:108 ad0c797d160441e199fecf92ff51f677 +msgid "**PyPI**, the source distribution and the wheel." +msgstr "**PyPI**, la distribution source et la wheel." + +#: ../../source/release-process.rst:109 f83b2aa49f584014ab6a2516b60ce11b +msgid "**GitHub release assets**, the Windows ``maigret_standalone.exe``." +msgstr "" +"**Les assets de la release GitHub**, le ``maigret_standalone.exe`` pour " +"Windows." + +#: ../../source/release-process.rst:111 27c81092af374faa8a7bdd3eec745e1b +msgid "Published automatically on every push to ``main``:" +msgstr "Publiés automatiquement à chaque push sur ``main`` :" + +#: ../../source/release-process.rst:113 b4f0d324b8794cf4a27fc500fa138912 +msgid "**Docker Hub**, the CLI and web images." +msgstr "**Docker Hub**, les images CLI et web." + +#: ../../source/release-process.rst:115 d7a8efffcb2844a0b8eed26caf6da766 +msgid "Published by hand:" +msgstr "Publiés à la main :" + +#: ../../source/release-process.rst:117 e45ef970948044078020146a411921ee +msgid "" +"**Snap**, built with ``snapcraft`` and uploaded to the ``latest/stable`` " +"channel for amd64 and arm64. Uploading a revision does not touch the " +"store listing: the summary, the description and the icon change only when" +" ``snapcraft upload-metadata `` is run, so run it whenever " +"those fields change in ``snap/snapcraft.yaml``, or the store keeps " +"serving the old text." +msgstr "" +"**Snap**, construit avec ``snapcraft`` et téléversé sur le canal " +"``latest/stable`` pour amd64 et arm64. Téléverser une révision ne touche " +"pas à la fiche du store : le résumé, la description et l'icône ne " +"changent que lorsque ``snapcraft upload-metadata `` est " +"exécuté. Lancez-le donc dès que ces champs changent dans " +"``snap/snapcraft.yaml``, sinon le store continue de servir l'ancien " +"texte." + +#: ../../source/release-process.rst:124 edcc5592473f4eb5bbf9f9fab4d50848 +msgid "Maintained downstream, outside this repository:" +msgstr "Maintenus en aval, en dehors de ce dépôt :" + +#: ../../source/release-process.rst:126 da25d33954774695b15ca4ea695982ba +msgid "" +"The AUR, Homebrew core, MacPorts and nixpkgs normally follow a new " +"release within a day or two without being asked." +msgstr "" +"AUR, Homebrew core, MacPorts et nixpkgs suivent normalement une nouvelle " +"version en un jour ou deux, sans qu'on ait à le demander." + +#: ../../source/release-process.rst:128 edbbf6cb578d4be9acbbfb2d7a000193 +msgid "BlackArch is updated through a pull request to the BlackArch repository." +msgstr "BlackArch est mis à jour via une pull request sur le dépôt BlackArch." + diff --git a/docs/source/locale/fr/LC_MESSAGES/settings.po b/docs/source/locale/fr/LC_MESSAGES/settings.po new file mode 100644 index 00000000..1d4d4a8a --- /dev/null +++ b/docs/source/locale/fr/LC_MESSAGES/settings.po @@ -0,0 +1,569 @@ +# French translation of the Maigret documentation. +# Copyright (C) 2025, soxoj +# This file is distributed under the same license as the Maigret package. +# +msgid "" +msgstr "" +"Project-Id-Version: Maigret 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-09-15 17:05+0200\n" +"PO-Revision-Date: 2026-09-15 17:20+0200\n" +"Last-Translator: \n" +"Language: fr\n" +"Language-Team: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/settings.rst:4 712aa27723a44c47a41b5ec1c1c6f9a4 +msgid "Settings" +msgstr "Paramètres" + +#: ../../source/settings.rst:7 c5ccdfd8a85f4cbdac40dabb3e2b82a2 +msgid "The settings system is under development and may be subject to change." +msgstr "Le système de paramètres est en cours de développement et peut évoluer." + +#: ../../source/settings.rst:9 1699072abb98497c98cb9f53aec2cbb4 +msgid "" +"Options are also configurable through settings files. See `settings JSON " +"file " +"`_" +" for the list of currently supported options." +msgstr "" +"Les options sont également configurables via des fichiers de paramètres. " +"Voir le `fichier JSON de paramètres " +"`_" +" pour la liste des options actuellement prises en charge." + +#: ../../source/settings.rst:13 c6cbc3056c9343738eda818a9f364130 +msgid "" +"After start Maigret tries to load configuration from the following " +"sources in exactly the same order:" +msgstr "" +"Au démarrage, Maigret tente de charger sa configuration depuis les " +"sources suivantes, exactement dans cet ordre :" + +#: ../../source/settings.rst:29 7a538929815f498187ca348a85567bea +msgid "" +"Missing any of these files is not an error. If the next settings file " +"contains already known option, this option will be rewritten. So it is " +"possible to make custom configuration for different users and " +"directories." +msgstr "" +"L'absence de l'un de ces fichiers n'est pas une erreur. Si le fichier de " +"paramètres suivant contient une option déjà connue, cette option est " +"écrasée. Il est donc possible d'avoir une configuration différente selon " +"les utilisateurs et les répertoires." + +#: ../../source/settings.rst:37 a4f24518d9984c04b0e8a8b2fee23b6a +msgid "Database auto-update" +msgstr "Mise à jour automatique de la base" + +#: ../../source/settings.rst:39 402f5cc3c5634bc6863e5b69bcf977d6 +msgid "" +"Maigret ships with a bundled site database, but it gets outdated between " +"releases. To keep the database current, Maigret automatically checks for " +"updates on startup." +msgstr "" +"Maigret est livré avec une base de sites embarquée, mais celle-ci se " +"périme entre deux versions. Pour la garder à jour, Maigret vérifie " +"automatiquement au démarrage si une mise à jour est disponible." + +#: ../../source/settings.rst:41 669b989f8d8d4ed38786d6595015e2ec +msgid "**How it works:**" +msgstr "**Comment cela fonctionne :**" + +#: ../../source/settings.rst:43 38c301861c6747e7a5324bfc4fe1c32d +msgid "" +"On startup, Maigret checks if more than 24 hours have passed since the " +"last update check." +msgstr "" +"Au démarrage, Maigret regarde si plus de 24 heures se sont écoulées " +"depuis la dernière vérification." + +#: ../../source/settings.rst:44 514089cd2e0e4c9e8b143fe28da78667 +msgid "" +"If so, it fetches a lightweight metadata file (~200 bytes) from GitHub to" +" see if a newer database is available." +msgstr "" +"Si c'est le cas, il récupère depuis GitHub un fichier de métadonnées " +"léger (environ 200 octets) pour savoir si une base plus récente est " +"disponible." + +#: ../../source/settings.rst:45 cd91691de90d491fb891524cedf55218 +msgid "" +"If a newer, compatible database exists, Maigret downloads it to " +"``~/.maigret/data.json`` and uses it instead of the bundled copy." +msgstr "" +"S'il existe une base plus récente et compatible, Maigret la télécharge " +"dans ``~/.maigret/data.json`` et l'utilise à la place de la copie " +"embarquée." + +#: ../../source/settings.rst:46 837e88ded4ad42e4b3d3a70dd57e81f2 +msgid "" +"If the download fails or the new database is incompatible with your " +"Maigret version, the bundled database is used as a fallback." +msgstr "" +"Si le téléchargement échoue ou si la nouvelle base est incompatible avec " +"votre version de Maigret, la base embarquée sert de solution de repli." + +#: ../../source/settings.rst:48 13f6ae56504342d9be93259b0fa33003 +msgid "" +"The downloaded database has **higher priority** than the bundled one — it" +" replaces, not overlays." +msgstr "" +"La base téléchargée a une **priorité supérieure** à la base embarquée : " +"elle la remplace, elle ne se superpose pas à elle." + +#: ../../source/settings.rst:50 b3f4963f12094f9e8546f5d595197bb6 +msgid "**Status messages** are printed only when an action occurs:" +msgstr "**Les messages d'état** ne sont affichés que lorsqu'une action a lieu :" + +#: ../../source/settings.rst:59 42e5b4887cde4660a2f0542c07dcedf7 +msgid "**Forcing an update:**" +msgstr "**Forcer une mise à jour :**" + +#: ../../source/settings.rst:61 89faa3328804430cbf93746ada4a4d88 +msgid "" +"Use the ``--force-update`` flag to check for updates immediately, " +"ignoring the check interval:" +msgstr "" +"Utilisez l'option ``--force-update`` pour vérifier immédiatement les " +"mises à jour, sans tenir compte de l'intervalle de vérification :" + +#: ../../source/settings.rst:67 220037a894014d9dbd366fb2a99e6119 +msgid "" +"The update happens at startup, then the search continues normally with " +"the freshly downloaded database." +msgstr "" +"La mise à jour a lieu au démarrage, puis la recherche se poursuit " +"normalement avec la base fraîchement téléchargée." + +#: ../../source/settings.rst:69 0cdb36848da640d7b692f7977f1725a1 +msgid "**Disabling auto-update:**" +msgstr "**Désactiver la mise à jour automatique :**" + +#: ../../source/settings.rst:71 6db5793be50e4c90a24734da0cec98ee +msgid "Use the ``--no-autoupdate`` flag to skip the update check entirely:" +msgstr "" +"Utilisez l'option ``--no-autoupdate`` pour ignorer complètement la " +"vérification :" + +#: ../../source/settings.rst:77 17cfc74f62cf46c7bc54a75f1cca8802 +msgid "Or set it permanently in ``~/.maigret/settings.json``:" +msgstr "Ou définissez-la de façon permanente dans ``~/.maigret/settings.json`` :" + +#: ../../source/settings.rst:85 18273bd5be604dd5ad97821b35719b1b +msgid "" +"This is recommended for **Docker containers**, **CI pipelines**, and " +"**air-gapped environments**." +msgstr "" +"C'est recommandé pour les **conteneurs Docker**, les **pipelines " +"d'intégration continue** et les **environnements isolés du réseau**." + +#: ../../source/settings.rst:87 0faa9c4c7e424e399b9f835443034182 +msgid "**Configuration options** (in ``settings.json``):" +msgstr "**Options de configuration** (dans ``settings.json``) :" + +#: ../../source/settings.rst:93 ../../source/settings.rst:266 +#: 054564c056d1494597e89a3b742ed39e 98e3efc70a3447bc94d733611d6e6975 +msgid "Setting" +msgstr "Paramètre" + +#: ../../source/settings.rst:94 ../../source/settings.rst:267 +#: 7e337b8f63fe4f32be13ca02bb5ace44 e25fa57cf77e4ab889a5bf5a992825f9 +msgid "Default" +msgstr "Valeur par défaut" + +#: ../../source/settings.rst:95 ../../source/settings.rst:207 +#: ../../source/settings.rst:268 1eef0cc76a07448095ccd2b997421ef9 +#: 787e234e02fd4f7a99cbe355d077843d e77ed8266a944fcaa3f90d87537d3095 +msgid "Description" +msgstr "Description" + +#: ../../source/settings.rst:96 06d5a75f72a345fba5c82712a61e59a1 +msgid "``no_autoupdate``" +msgstr "``no_autoupdate``" + +#: ../../source/settings.rst:97 f17a17726d7f4ee8ae5d59efe7d4dca8 +msgid "``false``" +msgstr "``false``" + +#: ../../source/settings.rst:98 95e7c7537f0144dcb59cdb9a2eab5b6f +msgid "Disable auto-update entirely" +msgstr "Désactive entièrement la mise à jour automatique" + +#: ../../source/settings.rst:99 83fcbad2d96647989c7c711cf5305975 +msgid "``autoupdate_check_interval_hours``" +msgstr "``autoupdate_check_interval_hours``" + +#: ../../source/settings.rst:100 cdf137d498454401827eb2036818e001 +msgid "``24``" +msgstr "``24``" + +#: ../../source/settings.rst:101 6c2b200410174d0e934b4c975d0bee3e +msgid "How often to check for updates (in hours)" +msgstr "Fréquence de vérification des mises à jour (en heures)" + +#: ../../source/settings.rst:102 5005644bf3194dcbb9af0cfaf0f046c8 +msgid "``db_update_meta_url``" +msgstr "``db_update_meta_url``" + +#: ../../source/settings.rst:103 29ba9a1f3730400bb470873a1621dc7b +msgid "GitHub raw URL" +msgstr "URL brute GitHub" + +#: ../../source/settings.rst:104 0fdbf51eb2a54f9bb9016db8680409d2 +msgid "URL of the metadata file (for custom mirrors)" +msgstr "URL du fichier de métadonnées (pour un miroir personnalisé)" + +#: ../../source/settings.rst:106 84cd7381bc154facaad49be53c844b1b +msgid "" +"**Using a custom database** with ``--db`` always skips auto-update — you " +"are explicitly choosing your data source." +msgstr "" +"**Utiliser une base personnalisée** avec ``--db`` désactive toujours la " +"mise à jour automatique : vous choisissez explicitement votre source de " +"données." + +#: ../../source/settings.rst:111 0e60ce383c304cd79a73b9ba9900aa90 +msgid "Activation token cache" +msgstr "Cache des jetons d'activation" + +#: ../../source/settings.rst:113 88fccff8940b44f689a41f95715e0c15 +msgid "" +"A handful of sites reject anonymous requests until a short-lived token is" +" obtained: Twitter needs a guest token, Vimeo a JWT, Weibo and Wikimapia " +"a session cookie, OnlyFans a signed header pair, ProtonMail a bearer " +"token. Maigret mints these during a run, the first time such a site " +"answers with a challenge instead of a profile page." +msgstr "" +"Quelques sites rejettent les requêtes anonymes tant qu'un jeton de courte" +" durée n'a pas été obtenu : Twitter demande un jeton invité, Vimeo un " +"JWT, Weibo et Wikimapia un cookie de session, OnlyFans une paire d'en-" +"têtes signés, ProtonMail un jeton bearer. Maigret les génère en cours " +"d'exécution, la première fois qu'un tel site répond par un défi plutôt " +"que par une page de profil." + +#: ../../source/settings.rst:115 2a4f0dcd05724ed49fcffb57e8e6a8e2 +msgid "Minted values are cached in:" +msgstr "Les valeurs générées sont mises en cache dans :" + +#: ../../source/settings.rst:121 714de8be43ad497d9418deb973aae4f0 +msgid "" +"so the next run starts with a warm token and skips the extra round trip. " +"The file is created with ``0600`` permissions because these tokens are " +"session credentials — treat it as one, and do not attach it to a bug " +"report." +msgstr "" +"de sorte que l'exécution suivante démarre avec un jeton déjà chaud et " +"évite un aller-retour supplémentaire. Le fichier est créé avec les " +"permissions ``0600``, car ces jetons sont des identifiants de session : " +"traitez-le comme tel et ne le joignez pas à un rapport de bug." + +#: ../../source/settings.rst:123 270653671f0449f2ad474d0e10f5af8a +msgid "" +"**What is stored:** only the header values that differ from what the site" +" database shipped. Storing the whole header set would pin the shipped " +"values, so a later database update could never change them again." +msgstr "" +"**Ce qui est stocké :** uniquement les valeurs d'en-tête qui diffèrent de" +" celles fournies par la base de sites. Stocker l'ensemble des en-têtes " +"figerait les valeurs livrées, et une mise à jour ultérieure de la base ne" +" pourrait plus jamais les modifier." + +#: ../../source/settings.rst:125 98960ee7d2374592994f81ea5ccdca2d +msgid "" +"**Safe to delete:** yes. The next run mints whatever it needs again; the " +"only cost is one extra request per affected site." +msgstr "" +"**Peut-on le supprimer sans risque :** oui. L'exécution suivante regénère" +" ce dont elle a besoin ; cela ne coûte qu'une requête supplémentaire par " +"site concerné." + +#: ../../source/settings.rst:127 ac64c5f1e78c45c2a293c37c9876b7e7 +msgid "" +"**Why it is not kept in the site database:** the database is package " +"data. It is versioned, checksum-verified and replaced wholesale by :ref" +":`database-auto-update`, and on a system-wide install (distribution " +"package, snap, ``/nix/store``) its directory is not writable at all. " +"Tokens are per-user state with a different lifetime, so they live in a " +"separate file." +msgstr "" +"**Pourquoi il n'est pas conservé dans la base de sites :** la base fait " +"partie des données du paquet. Elle est versionnée, vérifiée par somme de " +"contrôle et remplacée intégralement par la :ref:`database-auto-update` ; " +"de plus, lors d'une installation à l'échelle du système (paquet de " +"distribution, snap, ``/nix/store``), son répertoire n'est pas du tout " +"accessible en écriture. Les jetons, eux, sont un état propre à " +"l'utilisateur, avec une durée de vie différente : ils vivent donc dans un" +" fichier séparé." + +#: ../../source/settings.rst:130 ebb029ea82714466a8b97d847050b429 +msgid "Cloudflare webgate" +msgstr "Webgate Cloudflare" + +#: ../../source/settings.rst:134 202f1602b947481783614809cdbc065e +msgid "" +"**Experimental.** The ``cloudflare_bypass`` block is under active " +"development; field names, defaults, and the trigger-protection routing " +"rules may change without backwards-compatibility guarantees." +msgstr "" +"**Expérimental.** Le bloc ``cloudflare_bypass`` est en cours de " +"développement actif ; les noms de champs, les valeurs par défaut et les " +"règles de routage par protection déclenchante peuvent changer sans " +"garantie de compatibilité ascendante." + +#: ../../source/settings.rst:138 cb36b917c00e40fb8d3ba14fc8a395fe +msgid "" +"The ``cloudflare_bypass`` block in ``settings.json`` configures the " +"optional bypass described in :ref:`cloudflare-bypass`. The same block is " +"honoured by the CLI, the Python API, and the web UI (``python -m " +"maigret.web.app``); set ``enabled: true`` once and every entry point " +"routes cf-protected sites through the solver." +msgstr "" +"Le bloc ``cloudflare_bypass`` de ``settings.json`` configure le " +"contournement facultatif décrit dans :ref:`cloudflare-bypass`. Ce même " +"bloc est pris en compte par la ligne de commande, l'API Python et " +"l'interface web (``python -m maigret.web.app``) : définissez ``enabled: " +"true`` une fois et tous les points d'entrée feront passer les sites " +"protégés par Cloudflare via le solveur." + +#: ../../source/settings.rst:144 3b75de84595f42028bfffc394e04e301 +msgid "" +"**Minimal FlareSolverr setup.** Start the solver in Docker, then drop the" +" following snippet into ``~/.maigret/settings.json`` (or any path listed " +"in :ref:`settings`):" +msgstr "" +"**Configuration FlareSolverr minimale.** Démarrez le solveur dans Docker," +" puis déposez l'extrait suivant dans ``~/.maigret/settings.json`` (ou " +"dans l'un des chemins listés dans :ref:`settings`) :" + +#: ../../source/settings.rst:169 3d652af4ea5a4865a6e16540c63c8ac9 +msgid "" +"That is enough — ``session_prefix`` and ``trigger_protection`` fall back " +"to sensible defaults (``\"maigret\"`` and ``[\"cf_js_challenge\", " +"\"cf_firewall\", \"webgate\"]`` respectively). On the next run, Maigret " +"logs ``Cloudflare webgate active: ...`` and routes matching sites through" +" the solver." +msgstr "" +"Cela suffit : ``session_prefix`` et ``trigger_protection`` reprennent des" +" valeurs par défaut raisonnables (respectivement ``\"maigret\"`` et " +"``[\"cf_js_challenge\", \"cf_firewall\", \"webgate\"]``). À l'exécution " +"suivante, Maigret journalise ``Cloudflare webgate active: ...`` et fait " +"passer les sites correspondants par le solveur." + +#: ../../source/settings.rst:175 2097863779d344e1ae247dc569b4b68f +msgid "Default value (full schema with every supported field):" +msgstr "Valeur par défaut (schéma complet, avec tous les champs pris en charge) :" + +#: ../../source/settings.rst:200 06eb5435ed3146a6971008b016481164 +msgid "**Fields.**" +msgstr "**Champs.**" + +#: ../../source/settings.rst:206 07846b8d0d0a45ba804c0ec91d6e180b +msgid "Field" +msgstr "Champ" + +#: ../../source/settings.rst:208 02494ad45b71492a9e303b7d8f6c52dc +msgid "``enabled``" +msgstr "``enabled``" + +#: ../../source/settings.rst:209 e1811ab924fa4ac0a7b2635c203141a2 +msgid "" +"When ``true``, the bypass is active for every run; when ``false`` (the " +"default), it activates only on ``--cloudflare-bypass``." +msgstr "" +"Lorsqu'il vaut ``true``, le contournement est actif à chaque exécution ; " +"lorsqu'il vaut ``false`` (par défaut), il ne s'active qu'avec " +"``--cloudflare-bypass``." + +#: ../../source/settings.rst:211 9ea31bd9dff64928906a771fff1a2379 +msgid "``trigger_protection``" +msgstr "``trigger_protection``" + +#: ../../source/settings.rst:212 ca70603566b84654ad457beed9aa9d0f +msgid "" +"List of ``site.protection`` values that route a check through the " +"webgate. Sites whose protection is empty or doesn't intersect this list " +"use the default (aiohttp / curl_cffi) checker." +msgstr "" +"Liste des valeurs de ``site.protection`` qui font passer une vérification" +" par le webgate. Les sites dont la protection est vide, ou ne recoupe pas" +" cette liste, utilisent le vérificateur par défaut (aiohttp / curl_cffi)." + +#: ../../source/settings.rst:215 3bfd5c6ea6404a489dded9f36f7c89f2 +msgid "``session_prefix``" +msgstr "``session_prefix``" + +#: ../../source/settings.rst:216 fff9872f0a094dd6998b4b6967874ec7 +msgid "" +"Prefix for the FlareSolverr ``session`` field. Maigret appends the " +"process PID so concurrent runs don't collide. Reusing a session caches " +"cf_clearance between checks of the same domain." +msgstr "" +"Préfixe du champ ``session`` de FlareSolverr. Maigret y ajoute le PID du " +"processus pour que des exécutions concurrentes n'entrent pas en " +"collision. Réutiliser une session met en cache le cf_clearance entre les " +"vérifications d'un même domaine." + +#: ../../source/settings.rst:219 9df6df011a394313b225a818cc62c8b9 +msgid "``modules``" +msgstr "``modules``" + +#: ../../source/settings.rst:220 a9fe0c319fb246e9998bebc72113fd48 +msgid "" +"Ordered list of backend modules. The first reachable module handles the " +"check; later ones serve as a fallback chain." +msgstr "" +"Liste ordonnée des modules de backend. Le premier module joignable traite" +" la vérification ; les suivants forment une chaîne de repli." + +#: ../../source/settings.rst:223 c06ae16380b24123b94106c7e1167569 +msgid "**Module methods.**" +msgstr "**Méthodes des modules.**" + +#: ../../source/settings.rst:225 3d04b828e60845028a7f0481de8f0542 +msgid "" +"``json_api`` — FlareSolverr-compatible POST endpoint at ``url``. " +"Preserves real upstream HTTP status, headers and final URL. Optional " +"``max_timeout_ms`` (default ``60000``) is the per-request budget the " +"solver is allowed to spend on the JS challenge." +msgstr "" +"``json_api`` — point d'entrée POST compatible FlareSolverr à l'adresse " +"``url``. Préserve le vrai statut HTTP en amont, les en-têtes et l'URL " +"finale. Le champ facultatif ``max_timeout_ms`` (``60000`` par défaut) est" +" le budget par requête que le solveur peut consacrer au défi JavaScript." + +#: ../../source/settings.rst:229 1420b85d982147069d53596ac7f48bce +#, python-brace-format +msgid "" +"``url_rewrite`` — legacy CloudflareBypassForScraping endpoint. The " +"``url`` must contain a ``{url}`` placeholder; the original probe URL is " +"URL-encoded and substituted in. Returns rendered HTML only — ``checkType:" +" status_code`` and ``response_url`` checks misfire under this method " +"(treated as a synthetic HTTP 200 on success)." +msgstr "" +"``url_rewrite`` — ancien point d'entrée CloudflareBypassForScraping. " +"L'``url`` doit contenir un emplacement ``{url}`` ; l'URL de sonde " +"d'origine y est insérée après encodage. Ne renvoie que du HTML rendu : " +"les vérifications ``checkType: status_code`` et ``response_url`` se " +"déclenchent donc à tort avec cette méthode (un succès est traité comme un" +" HTTP 200 synthétique)." + +#: ../../source/settings.rst:235 1b9745c5d3af407a9288281aee2fe95e +msgid "**Optional ``proxy`` field (``json_api`` only).**" +msgstr "**Champ facultatif ``proxy`` (``json_api`` uniquement).**" + +#: ../../source/settings.rst:237 b6c0c59d51a94d08ba4d073fdd37b32e +msgid "" +"A module may carry a ``proxy`` entry that the solver routes the upstream " +"request through. Useful when a site enforces ``ip_reputation`` rules that" +" block the solver host. Two forms are accepted:" +msgstr "" +"Un module peut porter une entrée ``proxy``, par laquelle le solveur fait " +"passer la requête en amont. C'est utile quand un site applique des règles" +" d'``ip_reputation`` qui bloquent la machine du solveur. Deux formes sont" +" acceptées :" + +#: ../../source/settings.rst:251 0ac86ff3f5044119a00dbdf68a58a185 +msgid "" +"Only ``url``/``username``/``password`` are forwarded; other keys are " +"dropped. Cloudflare ``Error 1015 / 1020`` responses indicate the IP is " +"rate-limited or banned — switch the proxy rather than retrying. .. _ai-" +"analysis-settings:" +msgstr "" +"Seuls ``url``/``username``/``password`` sont transmis ; les autres clés " +"sont ignorées. Une réponse Cloudflare ``Error 1015 / 1020`` signale que " +"l'IP est limitée en débit ou bannie : changez de proxy plutôt que de " +"réessayer. .. _ai-analysis-settings:" + +#: ../../source/settings.rst:257 a1e518dd3b5947d39bd7987a5cc798a5 +msgid "AI analysis" +msgstr "Analyse par IA" + +#: ../../source/settings.rst:259 e19f1fb9a5cc4be5a6b9e128953afeb9 +msgid "" +"The ``--ai`` flag (see :ref:`ai-analysis`) talks to an OpenAI-compatible " +"chat completion API. Three settings control how that request is made:" +msgstr "" +"L'option ``--ai`` (voir :ref:`ai-analysis`) interroge une API de " +"complétion de conversation compatible OpenAI. Trois paramètres contrôlent" +" la façon dont cette requête est faite :" + +#: ../../source/settings.rst:269 31b8625625904e5483c9f9639ab2bca1 +msgid "``openai_api_key``" +msgstr "``openai_api_key``" + +#: ../../source/settings.rst:270 2863d798e677471fab8d2b8f48ffbc5a +msgid "``\"\"`` (empty)" +msgstr "``\"\"`` (vide)" + +#: ../../source/settings.rst:271 26e54b9ec8054552b525569a0a11a5e0 +msgid "" +"API key. If empty, Maigret falls back to the ``OPENAI_API_KEY`` " +"environment variable." +msgstr "" +"Clé d'API. Si elle est vide, Maigret se rabat sur la variable " +"d'environnement ``OPENAI_API_KEY``." + +#: ../../source/settings.rst:273 ceb65e8a17544b47b0b6efe6d7209ca0 +msgid "``openai_model``" +msgstr "``openai_model``" + +#: ../../source/settings.rst:274 81861a14dba74c349adac984cb651b9f +msgid "``gpt-4o``" +msgstr "``gpt-4o``" + +#: ../../source/settings.rst:275 6131b48ea228457d9ae08a4fd376b145 +msgid "Default model name. Overridable per-run with ``--ai-model``." +msgstr "" +"Nom du modèle par défaut. Remplaçable à chaque exécution avec ``--ai-" +"model``." + +#: ../../source/settings.rst:276 c852e9ea39044dde86a4654d01d1f875 +msgid "``openai_api_base_url``" +msgstr "``openai_api_base_url``" + +#: ../../source/settings.rst:277 5be258415c7a4149817299b196894f5d +msgid "``https://api.openai.com/v1``" +msgstr "``https://api.openai.com/v1``" + +#: ../../source/settings.rst:278 1369709baf5e4a4687c0a7cd466d5000 +msgid "" +"Base URL of the chat completion API. Point this at any OpenAI-compatible " +"service (Azure OpenAI, OpenRouter, a local server, …) to use it instead " +"of OpenAI directly." +msgstr "" +"URL de base de l'API de complétion de conversation. Pointez-la vers " +"n'importe quel service compatible OpenAI (Azure OpenAI, OpenRouter, un " +"serveur local, etc.) pour l'utiliser à la place d'OpenAI." + +#: ../../source/settings.rst:282 63d2dbcdd40a40f085fffa6529ec3bcf +msgid "Example ``~/.maigret/settings.json`` snippet using a non-OpenAI endpoint:" +msgstr "" +"Exemple d'extrait de ``~/.maigret/settings.json`` utilisant un point " +"d'entrée autre qu'OpenAI :" + +#: ../../source/settings.rst:293 71073712475a480e91641719e3bb8f01 +msgid "" +"The key resolution order is ``settings.openai_api_key`` → " +"``OPENAI_API_KEY`` environment variable; the first non-empty value wins." +msgstr "" +"L'ordre de résolution de la clé est ``settings.openai_api_key`` → " +"variable d'environnement ``OPENAI_API_KEY`` ; la première valeur non vide" +" l'emporte." + +#: ../../source/settings.rst:298 f39019712ea04850b9f4cfb253e2ed9e +msgid "" +"``--ai`` sends the full internal Markdown report (which contains the " +"gathered profile data) to the configured endpoint. Only use providers and" +" accounts you trust with that data." +msgstr "" +"``--ai`` envoie au point d'entrée configuré l'intégralité du rapport " +"Markdown interne, qui contient les données de profil collectées. " +"N'utilisez donc que des fournisseurs et des comptes auxquels vous confiez" +" ces données." + diff --git a/docs/source/locale/fr/LC_MESSAGES/supported-identifier-types.po b/docs/source/locale/fr/LC_MESSAGES/supported-identifier-types.po new file mode 100644 index 00000000..eabee5b1 --- /dev/null +++ b/docs/source/locale/fr/LC_MESSAGES/supported-identifier-types.po @@ -0,0 +1,151 @@ +# French translation of the Maigret documentation. +# Copyright (C) 2025, soxoj +# This file is distributed under the same license as the Maigret package. +# +msgid "" +msgstr "" +"Project-Id-Version: Maigret 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-09-15 17:05+0200\n" +"PO-Revision-Date: 2026-09-15 17:20+0200\n" +"Last-Translator: \n" +"Language: fr\n" +"Language-Team: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/supported-identifier-types.rst:4 +#: 4e3ddb50a05a41aa8214a14b15d3adc2 +msgid "Supported identifier types" +msgstr "Types d'identifiants pris en charge" + +#: ../../source/supported-identifier-types.rst:6 +#: e9df9fe1a98a46fd8df7aece5a7aee6d +msgid "" +"Maigret can search against not only ordinary usernames, but also through " +"certain common identifiers. There is a list of all currently supported " +"identifiers." +msgstr "" +"Maigret peut effectuer des recherches non seulement sur des noms " +"d'utilisateur ordinaires, mais aussi sur certains identifiants courants. " +"Voici la liste de tous les identifiants actuellement pris en charge." + +#: ../../source/supported-identifier-types.rst:8 +#: f49a3ce4a041444e87b581bc53fbd426 +msgid "" +"**gaia_id** - Google inner numeric user identifier, in former times was " +"placed in a Google Plus account URL." +msgstr "" +"**gaia_id** - identifiant numérique interne d'un utilisateur Google, " +"autrefois présent dans l'URL d'un compte Google Plus." + +#: ../../source/supported-identifier-types.rst:9 +#: e7a2c873d0d545729a3a56a7a7eceb88 +msgid "**steam_id** - Steam inner numeric user identifier." +msgstr "**steam_id** - identifiant numérique interne d'un utilisateur Steam." + +#: ../../source/supported-identifier-types.rst:10 +#: cb153f404b2b4d7091352146268d2338 +msgid "**wikimapia_uid** - Wikimapia.org inner numeric user identifier." +msgstr "" +"**wikimapia_uid** - identifiant numérique interne d'un utilisateur " +"Wikimapia.org." + +#: ../../source/supported-identifier-types.rst:11 +#: fdd65b9f7a4f43079409417deb8061d4 +msgid "**uidme_uguid** - uID.me inner numeric user identifier." +msgstr "**uidme_uguid** - identifiant numérique interne d'un utilisateur uID.me." + +#: ../../source/supported-identifier-types.rst:12 +#: 09f3da88f83149ed966de82bb2fb6fc9 +msgid "" +"**yandex_public_id** - Yandex sites inner letter user identifier. See " +"also: `YaSeeker `_." +msgstr "" +"**yandex_public_id** - identifiant alphabétique interne d'un utilisateur " +"des sites Yandex. Voir aussi : `YaSeeker `_." + +#: ../../source/supported-identifier-types.rst:13 +#: 7c1bb033f4ce4410b1e785545fe3f596 +msgid "**vk_id** - VK.com inner numeric user identifier." +msgstr "**vk_id** - identifiant numérique interne d'un utilisateur VK.com." + +#: ../../source/supported-identifier-types.rst:14 +#: e9fa70fec80d43c6ae5469e23015687b +msgid "**ok_id** - OK.ru inner numeric user identifier." +msgstr "**ok_id** - identifiant numérique interne d'un utilisateur OK.ru." + +#: ../../source/supported-identifier-types.rst:15 +#: 33a528dbf2b448878889bc9be31d2cbe +msgid "**yelp_userid** - Yelp inner user identifier." +msgstr "**yelp_userid** - identifiant interne d'un utilisateur Yelp." + +#: ../../source/supported-identifier-types.rst:16 +#: f508891fe0a6448c83ed1f5239265b72 +msgid "" +"**qq_id** - QQ (Tencent) numeric account number, also used as the Qzone " +"profile id." +msgstr "" +"**qq_id** - numéro de compte QQ (Tencent), également utilisé comme " +"identifiant de profil Qzone." + +#: ../../source/supported-identifier-types.rst:17 +#: cab2098d1f2e444a8050027f792d61cb +#, python-brace-format +msgid "" +"**bilibili_id** - Bilibili numeric user id (the ``mid`` in a " +"``space.bilibili.com/{mid}`` profile URL)." +msgstr "" +"**bilibili_id** - identifiant numérique d'un utilisateur Bilibili (le " +"``mid`` dans l'URL de profil ``space.bilibili.com/{mid}``)." + +#: ../../source/supported-identifier-types.rst:20 +#: d71124dfbca84622aa08ac9b8d3de901 +msgid "Example" +msgstr "Exemple" + +#: ../../source/supported-identifier-types.rst:22 +#: cd630b1843694f8f81ad45c30a60de23 +msgid "" +"Pass the identifier as the target and select its type with ``--id-type``." +" For example, to look up the QQ number ``10001``:" +msgstr "" +"Passez l'identifiant comme cible et précisez son type avec ``--id-type``." +" Par exemple, pour rechercher le numéro QQ ``10001`` :" + +#: ../../source/supported-identifier-types.rst:28 +#: 9f2559fbc479410a8add02b958af9dfd +msgid "" +"Maigret resolves the account via the Qzone portrait API and, when found, " +"extracts the nickname and avatar. Any site whose ``type`` does not match " +"the given ``--id-type`` is skipped, so a plain ``maigret 10001`` (default" +" ``username``) will not query QQ." +msgstr "" +"Maigret résout le compte via l'API des portraits Qzone et, s'il le " +"trouve, en extrait le pseudonyme et l'avatar. Tout site dont le ``type`` " +"ne correspond pas au ``--id-type`` fourni est ignoré : un simple " +"``maigret 10001`` (``username`` par défaut) n'interrogera donc pas QQ." + +#: ../../source/supported-identifier-types.rst:30 +#: 3fe42649f19140f99c779b2a13da004e +msgid "" +"Or, to look up the Bilibili user id ``2`` (the ``mid`` from " +"``space.bilibili.com/2``):" +msgstr "" +"Ou, pour rechercher l'identifiant d'utilisateur Bilibili ``2`` (le " +"``mid`` de ``space.bilibili.com/2``) :" + +#: ../../source/supported-identifier-types.rst:36 +#: 7b504dd341e7488eb77881a83c9a55a5 +msgid "" +"Maigret resolves the account via the Bilibili user-card API and, when " +"found, extracts the nickname, avatar, signature and follower count." +msgstr "" +"Maigret résout le compte via l'API de fiche utilisateur de Bilibili et, " +"s'il le trouve, en extrait le pseudonyme, l'avatar, la signature et le " +"nombre d'abonnés." + diff --git a/docs/source/locale/fr/LC_MESSAGES/tags.po b/docs/source/locale/fr/LC_MESSAGES/tags.po new file mode 100644 index 00000000..04f42e0c --- /dev/null +++ b/docs/source/locale/fr/LC_MESSAGES/tags.po @@ -0,0 +1,185 @@ +# French translation of the Maigret documentation. +# Copyright (C) 2025, soxoj +# This file is distributed under the same license as the Maigret package. +# +msgid "" +msgstr "" +"Project-Id-Version: Maigret 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-09-15 17:05+0200\n" +"PO-Revision-Date: 2026-09-15 17:20+0200\n" +"Last-Translator: \n" +"Language: fr\n" +"Language-Team: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/tags.rst:4 d0898894c3044d8bb72beefefba4506b +msgid "Tags" +msgstr "Tags" + +#: ../../source/tags.rst:6 6ca5a94c373f4ffaa82b41e62d2b0351 +msgid "" +"The use of tags allows you to select a subset of the sites from big " +"Maigret DB for search." +msgstr "" +"Les tags permettent de sélectionner, pour une recherche, un sous-ensemble" +" de sites dans la grande base de Maigret." + +#: ../../source/tags.rst:9 0bf981113d014f9c948857e5b9cf6c12 +msgid "Tags markup is still not stable." +msgstr "Le balisage par tags n'est pas encore stabilisé." + +#: ../../source/tags.rst:11 307d8a38b7d24f3aaca7e9f6d50f9f89 +msgid "There are several types of tags:" +msgstr "Il existe plusieurs types de tags :" + +#: ../../source/tags.rst:13 804c2388c8d44b5da2f728db804e108e +msgid "" +"**Country codes**: ``us``, ``jp``, ``br``... (`ISO 3166-1 alpha-2 " +"`_). A country tag " +"means that having an account on the site implies a connection to that " +"country — either origin or residence. The goal is attribution, not " +"perfect accuracy." +msgstr "" +"**Codes pays** : ``us``, ``jp``, ``br``... (`ISO 3166-1 alpha-2 " +"`_). Un tag pays " +"signifie qu'avoir un compte sur le site implique un lien avec ce pays, " +"par origine ou par résidence. Le but est l'attribution, pas une " +"exactitude parfaite." + +#: ../../source/tags.rst:15 6d1b4db6ab784ccc9f97bd39eb839aa7 +msgid "" +"**Global sites** (GitHub, YouTube, Reddit, Medium, etc.) get **no country" +" tag** — an account there says nothing about where a person is from." +msgstr "" +"**Les sites mondiaux** (GitHub, YouTube, Reddit, Medium, etc.) ne " +"reçoivent **aucun tag pays** : y avoir un compte ne dit rien de l'origine" +" d'une personne." + +#: ../../source/tags.rst:16 6fa52a5c2b9140e88e8da02992263d89 +msgid "" +"**Regional/local sites** where an account implies a specific country " +"**must** have a country tag: ``VK`` → ``ru``, ``Naver`` → ``kr``, " +"``Zhihu`` → ``cn``." +msgstr "" +"**Les sites régionaux ou locaux**, où un compte implique un pays précis, " +"**doivent** porter un tag pays : ``VK`` → ``ru``, ``Naver`` → ``kr``, " +"``Zhihu`` → ``cn``." + +#: ../../source/tags.rst:17 79797bb380154145a63a54699e0dec22 +msgid "" +"Multiple country tags are allowed when a service is used predominantly in" +" a few countries (e.g. ``Xing`` → ``de``, ``eu``)." +msgstr "" +"Plusieurs tags pays sont admis lorsqu'un service est majoritairement " +"utilisé dans quelques pays (par exemple ``Xing`` → ``de``, ``eu``)." + +#: ../../source/tags.rst:18 f3b5028f93c8463ba11c209f07a11af0 +msgid "" +"Do **not** assign country tags based on traffic statistics alone — a site" +" popular in India by traffic is not \"Indian\" if it is used globally." +msgstr "" +"N'attribuez **pas** de tag pays sur la seule base des statistiques de " +"trafic : un site populaire en Inde en volume de trafic n'est pas « indien" +" » s'il est utilisé dans le monde entier." + +#: ../../source/tags.rst:20 b7bf1e92c0434b75be439d4aaf02c4e6 +msgid "" +"**Site engines**. Most of them are forum engines now: ``uCoz``, " +"``vBulletin``, ``XenForo`` et al. Full list of engines stored in the " +"Maigret database." +msgstr "" +"**Moteurs de sites**. La plupart sont aujourd'hui des moteurs de forum : " +"``uCoz``, ``vBulletin``, ``XenForo`` et consorts. La liste complète des " +"moteurs est stockée dans la base de Maigret." + +#: ../../source/tags.rst:22 2e0e7a897ea647f9b0c21c11323c9e0a +msgid "" +"**Sites' subject/type and interests of its users**. Full list of " +"\"standard\" tags is `present in the source code " +"`_ only " +"for a moment." +msgstr "" +"**Thématique ou type de site, et centres d'intérêt de ses utilisateurs**." +" La liste complète des tags « standard » n'est pour l'instant `présente " +"que dans le code source " +"`_." + +#: ../../source/tags.rst:25 cc5161c0bd4246b69140fad2513e9abc +msgid "Usage" +msgstr "Utilisation" + +#: ../../source/tags.rst:26 b5a35114e48f4be19013c720f9a0e7c3 +msgid "" +"``--tags us,jp`` -- search on US and Japanese sites (actually marked as " +"such in the Maigret database)" +msgstr "" +"``--tags us,jp`` -- rechercher sur les sites américains et japonais (ceux" +" qui sont effectivement marqués comme tels dans la base de Maigret)" + +#: ../../source/tags.rst:28 e110dee84ee54cf28f7209fc15c22fba +msgid "``--tags coding`` -- search on sites related to software development." +msgstr "" +"``--tags coding`` -- rechercher sur les sites liés au développement " +"logiciel." + +#: ../../source/tags.rst:30 83d737e40edc4e8ab8225029c4a151e0 +msgid "``--tags ucoz`` -- search on uCoz sites only (mostly CIS countries)" +msgstr "" +"``--tags ucoz`` -- rechercher uniquement sur les sites uCoz " +"(principalement dans les pays de la CEI)" + +#: ../../source/tags.rst:33 6da443326d5c41eaaa009020d0f5750a +msgid "Blacklisting (excluding) tags" +msgstr "Exclure des tags" + +#: ../../source/tags.rst:34 8f43b8871bfb445abe634af4b31416d9 +msgid "" +"You can exclude sites with certain tags from the search using " +"``--exclude-tags``:" +msgstr "" +"Vous pouvez exclure de la recherche les sites portant certains tags avec " +"``--exclude-tags`` :" + +#: ../../source/tags.rst:36 b988c1bff07d4b55b98971506ca4d460 +msgid "" +"``--exclude-tags porn,dating`` -- skip all sites tagged with ``porn`` or " +"``dating``." +msgstr "" +"``--exclude-tags porn,dating`` -- ignorer tous les sites marqués ``porn``" +" ou ``dating``." + +#: ../../source/tags.rst:38 81f4ce2351c34ab48895b996506d1bde +msgid "``--exclude-tags ru`` -- skip all Russian sites." +msgstr "``--exclude-tags ru`` -- ignorer tous les sites russes." + +#: ../../source/tags.rst:40 1d37e3fb745843c4b656a01548e5dde1 +msgid "" +"You can combine ``--tags`` and ``--exclude-tags`` to fine-tune your " +"search:" +msgstr "" +"Vous pouvez combiner ``--tags`` et ``--exclude-tags`` pour affiner la " +"recherche :" + +#: ../../source/tags.rst:42 54fd1187559b4fb68daca202196ba853 +msgid "" +"``--tags forum --exclude-tags ru`` -- search on forum sites, but skip " +"Russian ones." +msgstr "" +"``--tags forum --exclude-tags ru`` -- rechercher sur les forums, mais en " +"ignorant les forums russes." + +#: ../../source/tags.rst:44 641c53fa9db44ab5bf6575600be686ce +msgid "" +"In the web interface, the tag cloud supports three states per tag: click " +"once to **include** (green), click again to **exclude** " +"(dark/strikethrough), and click once more to return to **neutral** (red)." +msgstr "" +"Dans l'interface web, le nuage de tags propose trois états par tag : un " +"clic pour **inclure** (vert), un deuxième pour **exclure** " +"(sombre/barré), et un troisième pour revenir à l'état **neutre** (rouge)." + diff --git a/docs/source/locale/fr/LC_MESSAGES/tor-and-proxies.po b/docs/source/locale/fr/LC_MESSAGES/tor-and-proxies.po new file mode 100644 index 00000000..fe802788 --- /dev/null +++ b/docs/source/locale/fr/LC_MESSAGES/tor-and-proxies.po @@ -0,0 +1,356 @@ +# French translation of the Maigret documentation. +# Copyright (C) 2025, soxoj +# This file is distributed under the same license as the Maigret package. +# +msgid "" +msgstr "" +"Project-Id-Version: Maigret 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-09-15 17:05+0200\n" +"PO-Revision-Date: 2026-09-15 17:20+0200\n" +"Last-Translator: \n" +"Language: fr\n" +"Language-Team: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/tor-and-proxies.rst:4 fa6f7546f68f4faaa3ec42a09f34b4d0 +msgid "Tor, I2P, and proxies" +msgstr "Tor, I2P et proxys" + +#: ../../source/tor-and-proxies.rst:6 171191cfd184493b9a244848468f6b79 +msgid "" +"Maigret can route checks through an HTTP/SOCKS proxy, the Tor network, or" +" I2P. Three CLI flags cover three distinct goals — knowing which one you " +"need is the most common stumbling block." +msgstr "" +"Maigret peut faire passer ses vérifications par un proxy HTTP/SOCKS, par " +"le réseau Tor ou par I2P. Trois options de ligne de commande couvrent " +"trois objectifs distincts, et savoir laquelle il vous faut est le point " +"de confusion le plus fréquent." + +#: ../../source/tor-and-proxies.rst:9 e71e2266acee47639dba1726d2f105b6 +msgid "``--proxy`` vs ``--tor-proxy`` (and ``--i2p-proxy``)" +msgstr "``--proxy`` ou ``--tor-proxy`` (et ``--i2p-proxy``)" + +#: ../../source/tor-and-proxies.rst:11 1b6c77669e314f4781ff5266c321fef0 +msgid "" +"The most-asked question (see `issue #544 " +"`_):" +msgstr "" +"La question la plus posée (voir l'`issue #544 " +"`_) :" + +#: ../../source/tor-and-proxies.rst:13 98ea5fc1c82a41f9a37b009f0aa4e143 +msgid "" +"**You want every check to go through Tor** (e.g. you're on Tails OS, or " +"behind a country-level block, or your IP is rate-limited). → Use " +"``--proxy``, pointing at your Tor SOCKS port:" +msgstr "" +"**Vous voulez que toutes les vérifications passent par Tor** (par exemple" +" sous Tails OS, derrière un blocage national, ou parce que votre IP est " +"soumise à une limitation de débit). → Utilisez ``--proxy`` en le pointant" +" sur votre port SOCKS Tor :" + +#: ../../source/tor-and-proxies.rst:19 d0830f7ce17e43c28b7d4508bc43a58f +msgid "" +"**You want to reach ``.onion`` sites in the Maigret database**, while the" +" rest of the run still uses your normal connection. → Use ``--tor-" +"proxy``:" +msgstr "" +"**Vous voulez atteindre les sites ``.onion`` de la base de Maigret**, " +"tandis que le reste de la recherche continue d'utiliser votre connexion " +"habituelle. → Utilisez ``--tor-proxy`` :" + +#: ../../source/tor-and-proxies.rst:25 6a0a1236378540c38daa0fce6bd37467 +msgid "" +"``--tor-proxy`` is **only** consulted for sites whose ``url`` is a " +"``.onion`` host. For every other site Maigret uses your direct connection" +" (or ``--proxy`` if set). Without ``--tor-proxy``, ``.onion`` sites are " +"silently skipped." +msgstr "" +"``--tor-proxy`` n'est consulté **que** pour les sites dont l'``url`` est " +"un hôte ``.onion``. Pour tous les autres sites, Maigret utilise votre " +"connexion directe (ou ``--proxy`` s'il est défini). Sans ``--tor-proxy``," +" les sites ``.onion`` sont silencieusement ignorés." + +#: ../../source/tor-and-proxies.rst:27 045ad9aabb5041d4a691e23e24da4f1c +msgid "" +"The same split applies to ``--i2p-proxy``: it is consulted only for " +"``.i2p`` hosts, never for clearweb sites." +msgstr "" +"Le même partage vaut pour ``--i2p-proxy`` : il n'est consulté que pour " +"les hôtes ``.i2p``, jamais pour les sites du web classique." + +#: ../../source/tor-and-proxies.rst:29 6251510d9e294f96a2009752e4ecab50 +msgid "" +"Defaults: ``--tor-proxy`` defaults to ``socks5://127.0.0.1:9050`` and " +"``--i2p-proxy`` to ``http://127.0.0.1:4444``. ``--proxy`` has no default." +" Maigret does **not** launch ``tor`` or an I2P router for you — start the" +" daemon first." +msgstr "" +"Valeurs par défaut : ``--tor-proxy`` vaut ``socks5://127.0.0.1:9050`` et " +"``--i2p-proxy`` vaut ``http://127.0.0.1:4444``. ``--proxy`` n'a pas de " +"valeur par défaut. Maigret ne lance **pas** ``tor`` ni de routeur I2P à " +"votre place : démarrez le démon d'abord." + +#: ../../source/tor-and-proxies.rst:32 12112483f3d34d5e85f17f090d3904e8 +msgid "Tor Browser vs system ``tor``: port numbers" +msgstr "Tor Browser ou ``tor`` système : les numéros de port" + +#: ../../source/tor-and-proxies.rst:34 b90ae276b41d47769726848e88af3694 +msgid "The SOCKS port differs by Tor installation:" +msgstr "Le port SOCKS dépend de l'installation de Tor :" + +#: ../../source/tor-and-proxies.rst:36 fdaa66c468b447cbb88ef4984f8c4831 +msgid "" +"**System ``tor`` daemon** (``apt install tor``, ``brew install tor``, " +"Tails) listens on ``9050``." +msgstr "" +"**Le démon ``tor`` système** (``apt install tor``, ``brew install tor``, " +"Tails) écoute sur ``9050``." + +#: ../../source/tor-and-proxies.rst:37 66adcfa24d5f40088b638e3f29102dc6 +msgid "**Tor Browser bundle** ships its own ``tor`` listening on ``9150``." +msgstr "" +"**Le Tor Browser Bundle** embarque son propre ``tor``, qui écoute sur " +"``9150``." + +#: ../../source/tor-and-proxies.rst:39 38d89ff5ac4849c6b130e35e7de91671 +msgid "If a connection refuses, try the other port:" +msgstr "Si la connexion est refusée, essayez l'autre port :" + +#: ../../source/tor-and-proxies.rst:50 1ad8da514e5e44bfacb06c73b2f577ce +msgid "A note on results over Tor" +msgstr "Une remarque sur les résultats via Tor" + +#: ../../source/tor-and-proxies.rst:52 561fa718451d47a78eefe40558e75b0b +msgid "" +"Most public WAFs (Cloudflare, DDoS-Guard, AWS WAF, Akamai) block Tor exit" +" nodes by default — usually more aggressively than they block datacenter " +"IPs. A Tor run typically produces **more UNKNOWNs and fewer CLAIMEDs** " +"than the same run from a residential connection. This is not a bug in " +"Maigret; it is the cost of anonymity." +msgstr "" +"La plupart des WAF publics (Cloudflare, DDoS-Guard, AWS WAF, Akamai) " +"bloquent les nœuds de sortie Tor par défaut, en général plus " +"agressivement que les IP de datacenter. Une recherche via Tor produit " +"donc typiquement **plus de UNKNOWN et moins de CLAIMED** que la même " +"recherche depuis une connexion résidentielle. Ce n'est pas un bug de " +"Maigret, c'est le prix de l'anonymat." + +#: ../../source/tor-and-proxies.rst:54 f87daa4aeb08476ca863155f04b8dfc7 +msgid "Recommended flags for a Tor run:" +msgstr "Options recommandées pour une recherche via Tor :" + +#: ../../source/tor-and-proxies.rst:60 74e517aacedc483c98933ce39b49f875 +msgid "" +"``--timeout 60`` — Tor circuits add 1–3 seconds per request; the default " +"30 s causes spurious timeouts." +msgstr "" +"``--timeout 60`` — les circuits Tor ajoutent 1 à 3 secondes par requête ;" +" les 30 s par défaut provoquent de faux dépassements de délai." + +#: ../../source/tor-and-proxies.rst:61 69b6401b67104be98e8919fec581bfee +msgid "" +"``--retries 2`` — retries cover transient circuit failures, which are " +"common on Tor." +msgstr "" +"``--retries 2`` — les nouvelles tentatives couvrent les défaillances " +"passagères de circuit, fréquentes sur Tor." + +#: ../../source/tor-and-proxies.rst:62 3cc986f733604f85a76a529455340dd3 +msgid "" +"Optional ``-n 20`` — lowering concurrency (default 100) reduces the " +"chance of exits rate-limiting you." +msgstr "" +"Éventuellement ``-n 20`` — baisser la concurrence (100 par défaut) réduit" +" le risque de se faire limiter par les nœuds de sortie." + +#: ../../source/tor-and-proxies.rst:64 21bf124edd304df0aedfbb6f3b19e6f7 +msgid "" +"If you mainly need to bypass WAFs (rather than to remain anonymous), a " +"residential proxy will usually outperform Tor by a wide margin. See the " +"**\"Lots of sites fail / timeout / return 403\"** section in " +"`TROUBLESHOOTING.md " +"`_." +msgstr "" +"Si votre objectif est surtout de contourner les WAF (et non de rester " +"anonyme), un proxy résidentiel fera en général bien mieux que Tor. Voir " +"la section **« Lots of sites fail / timeout / return 403 »** dans " +"`TROUBLESHOOTING.md " +"`_." + +#: ../../source/tor-and-proxies.rst:67 a6bb212ed1bf46a98733fc79cd456ded +msgid "Running on Tails OS" +msgstr "Utilisation sous Tails OS" + +#: ../../source/tor-and-proxies.rst:69 c9fcdae23de34d1bafbbb43de5107a6e +msgid "" +"Tails forces every outbound connection through Tor at the network layer. " +"Maigret needs no special configuration to comply — pointing ``--proxy`` " +"at the Tails Tor daemon is enough:" +msgstr "" +"Tails force toutes les connexions sortantes à passer par Tor, au niveau " +"réseau. Maigret n'a besoin d'aucune configuration particulière pour s'y " +"conformer : pointer ``--proxy`` sur le démon Tor de Tails suffit :" + +#: ../../source/tor-and-proxies.rst:75 0abaf5f98caf4efa9afe2fa2ba92fff6 +msgid "Things that are **not** needed:" +msgstr "Ce qui n'est **pas** nécessaire :" + +#: ../../source/tor-and-proxies.rst:77 9e6309b4249443609a2e011b8d8550ac +msgid "" +"``torsocks maigret …`` and ``torify maigret …`` — these wrap libc socket " +"calls, but Maigret's HTTP client (``aiohttp`` / ``curl_cffi``) bypasses " +"libc for network I/O, so the wrapper has no effect. Use ``--proxy`` " +"instead." +msgstr "" +"``torsocks maigret …`` et ``torify maigret …`` — ces commandes " +"enveloppent les appels de sockets de la libc, mais le client HTTP de " +"Maigret (``aiohttp`` / ``curl_cffi``) contourne la libc pour ses entrées-" +"sorties réseau : l'enveloppe n'a donc aucun effet. Utilisez ``--proxy`` à" +" la place." + +#: ../../source/tor-and-proxies.rst:78 4621d1bb50734600a8b2a3d438452508 +msgid "" +"``--tor-proxy`` — on Tails, *everything* must go via Tor (the OS enforces" +" this), so the niche \"only .onion via Tor\" mode that ``--tor-proxy`` " +"provides does not apply." +msgstr "" +"``--tor-proxy`` — sous Tails, *tout* doit passer par Tor (le système " +"l'impose), donc le mode de niche « uniquement les .onion via Tor » " +"qu'offre ``--tor-proxy`` ne s'applique pas." + +#: ../../source/tor-and-proxies.rst:81 0c3703841ff84c038c799ef8626734e1 +msgid "Installation over Tor on Tails" +msgstr "Installation via Tor sous Tails" + +#: ../../source/tor-and-proxies.rst:83 fa45ad606e2846afabbe8ccce89ba9b3 +msgid "" +"``pip`` itself does not know about Tor; on Tails you need ``torsocks`` to" +" wrap it:" +msgstr "" +"``pip`` lui-même ne connaît rien à Tor ; sous Tails, il faut l'envelopper" +" avec ``torsocks`` :" + +#: ../../source/tor-and-proxies.rst:89 c4d8e21e134949c78c785038627b1f0a +msgid "" +"After install, the binary lands in ``~/.local/bin/maigret``. If " +"``maigret: command not found``, either add ``~/.local/bin`` to ``PATH`` " +"or invoke it as ``python3 -m maigret ``." +msgstr "" +"Après l'installation, le binaire se trouve dans ``~/.local/bin/maigret``." +" Si vous obtenez ``maigret: command not found``, ajoutez ``~/.local/bin``" +" au ``PATH`` ou lancez-le avec ``python3 -m maigret ``." + +#: ../../source/tor-and-proxies.rst:92 32d9f33c67b04ae9b554f2eb53526da9 +msgid "Persisting Maigret across Tails sessions" +msgstr "Conserver Maigret d'une session Tails à l'autre" + +#: ../../source/tor-and-proxies.rst:94 374910a59f7e44898db86c0b2dc6f743 +msgid "" +"Tails wipes ``~/.local/`` on reboot unless you configure the Persistent " +"Storage to keep it. This is Tails configuration, not Maigret " +"configuration — see the official Tails docs:" +msgstr "" +"Tails efface ``~/.local/`` à chaque redémarrage, sauf si vous configurez " +"le stockage persistant pour le conserver. Cela relève de la configuration" +" de Tails, pas de celle de Maigret : voir la documentation officielle de " +"Tails." + +#: ../../source/tor-and-proxies.rst:96 b55d4cc6ea5f451b905f0d8316bccdaa +msgid "" +"`Persistent Storage on Tails " +"`_" +msgstr "" +"`Le stockage persistant sur Tails " +"`_" + +#: ../../source/tor-and-proxies.rst:97 2d87c620f5694824bfa6688c2de9422b +msgid "" +"`Configuring Persistent Storage features " +"`_" +msgstr "" +"`Configurer les fonctionnalités du stockage persistant " +"`_" + +#: ../../source/tor-and-proxies.rst:99 3c11ded4586246b99b7a399f0d52cf58 +msgid "" +"A step-by-step recipe contributed by a user (persisting " +"``~/.local/lib/python3.9`` and ``~/.local/bin`` and patching ``.bashrc``)" +" is in `issue #544 " +"`__." +" Treat it as a starting point: the Python version and Tails internals " +"change between Tails releases." +msgstr "" +"Une recette pas à pas proposée par un utilisateur (conserver " +"``~/.local/lib/python3.9`` et ``~/.local/bin``, et adapter ``.bashrc``) " +"se trouve dans l'`issue #544 " +"`__." +" Prenez-la comme point de départ : la version de Python et les rouages " +"internes de Tails changent d'une version de Tails à l'autre." + +#: ../../source/tor-and-proxies.rst:102 fbf222bfd6304e13815575af814fdd3f +msgid "Reports on Tails — where to save them" +msgstr "Les rapports sous Tails : où les enregistrer" + +#: ../../source/tor-and-proxies.rst:104 50579126fd04472caa715826fe9018ea +msgid "" +"The default ``reports/`` directory lives next to the working directory " +"and is wiped with the amnesiac session. To save reports somewhere " +"persistent, either pass ``-fo``:" +msgstr "" +"Le répertoire ``reports/`` par défaut se trouve à côté du répertoire de " +"travail et disparaît avec la session amnésique. Pour enregistrer les " +"rapports à un endroit persistant, passez ``-fo`` :" + +#: ../../source/tor-and-proxies.rst:110 51bef7dd6fe648b299e2b01fb58470ed +msgid "" +"or set ``\"reports_path\"`` in your ``settings.json`` to a persistent " +"path. See :doc:`settings`." +msgstr "" +"ou définissez ``\"reports_path\"`` dans votre ``settings.json`` avec un " +"chemin persistant. Voir :doc:`settings`." + +#: ../../source/tor-and-proxies.rst:113 30b403ee53ab4f95bc005902e4cdfbf8 +msgid "Programmatic equivalents (Python library)" +msgstr "Équivalents programmatiques (bibliothèque Python)" + +#: ../../source/tor-and-proxies.rst:115 3b01135fb81e45ba8ada55ff186d97e9 +msgid "" +"The same options are available through the Python API. See :doc:`library-" +"usage` — the relevant keyword arguments are ``proxy=``, ``tor_proxy=`` " +"and ``i2p_proxy=``, accepting the same URL formats as the CLI flags." +msgstr "" +"Les mêmes options sont disponibles via l'API Python. Voir :doc:`library-" +"usage` : les arguments nommés correspondants sont ``proxy=``, " +"``tor_proxy=`` et ``i2p_proxy=``, et ils acceptent les mêmes formats " +"d'URL que les options de la ligne de commande." + +#: ../../source/tor-and-proxies.rst:118 590b68e4e6bf436190e1b915a38a9873 +msgid "See also" +msgstr "Voir aussi" + +#: ../../source/tor-and-proxies.rst:120 de259856ac8948ff9d4f65ba07320707 +msgid ":doc:`command-line-options` — full reference for the three flags." +msgstr ":doc:`command-line-options` — la référence complète des trois options." + +#: ../../source/tor-and-proxies.rst:121 8e7c5aeb11da4c6eb400e7ffb4dd486a +msgid "" +"`TROUBLESHOOTING.md " +"`_ — quick" +" recipes for ``.onion`` / I2P sites and for WAF-induced 403s." +msgstr "" +"`TROUBLESHOOTING.md " +"`_ — des " +"recettes rapides pour les sites ``.onion`` / I2P et pour les 403 " +"provoqués par un WAF." + +#: ../../source/tor-and-proxies.rst:122 900071a16a8f4bb18dc8374f5eff6740 +msgid ":doc:`library-usage` — proxy options for embedded use." +msgstr ":doc:`library-usage` — les options de proxy pour un usage embarqué." + diff --git a/docs/source/locale/fr/LC_MESSAGES/usage-examples.po b/docs/source/locale/fr/LC_MESSAGES/usage-examples.po new file mode 100644 index 00000000..0c654f9c --- /dev/null +++ b/docs/source/locale/fr/LC_MESSAGES/usage-examples.po @@ -0,0 +1,143 @@ +# French translation of the Maigret documentation. +# Copyright (C) 2025, soxoj +# This file is distributed under the same license as the Maigret package. +# +msgid "" +msgstr "" +"Project-Id-Version: Maigret 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-09-15 17:05+0200\n" +"PO-Revision-Date: 2026-09-15 17:20+0200\n" +"Last-Translator: \n" +"Language: fr\n" +"Language-Team: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/usage-examples.rst:4 f63f7ddec3f94e128aceb617a25999c6 +msgid "Usage examples" +msgstr "Exemples d'utilisation" + +#: ../../source/usage-examples.rst:6 7fa1788c3e694e36ad28dab71e1b20da +msgid "You can use Maigret as:" +msgstr "Vous pouvez utiliser Maigret :" + +#: ../../source/usage-examples.rst:8 3146fce50ff449ab95f9382aa0ee3a4e +msgid "a command line tool: initial and a default mode" +msgstr "en ligne de commande : le mode initial et par défaut" + +#: ../../source/usage-examples.rst:9 b99de81bfb5a487cad6416c4acc3c62b +msgid "" +"a `web interface <#web-interface>`_: view the graph with results and " +"download all report formats on a single page" +msgstr "" +"via une `interface web <#web-interface>`_ : afficher le graphe des " +"résultats et télécharger tous les formats de rapport depuis une seule " +"page" + +#: ../../source/usage-examples.rst:10 bd5f91f517374dbfb04b2858221aabf0 +msgid "a library: integrate Maigret into your own project" +msgstr "comme bibliothèque : intégrer Maigret à votre propre projet" + +#: ../../source/usage-examples.rst:13 2fb65b9f51bf44ed8b03e0f5dc2db402 +msgid "Use Cases" +msgstr "Cas d'usage" + +#: ../../source/usage-examples.rst:16 3406325edcf545cb80589b1aefc01dd4 +msgid "" +"Search for accounts with username ``machine42`` on top 500 sites (by " +"default, according to Majestic Million rank) from the Maigret DB." +msgstr "" +"Rechercher des comptes portant le nom d'utilisateur ``machine42`` sur les" +" 500 premiers sites (par défaut, selon le classement Majestic Million) de" +" la base de Maigret." + +#: ../../source/usage-examples.rst:22 fb1b3df0e08d4a27a4fdf731dbc96371 +msgid "" +"Search for accounts with username ``machine42`` on **all sites** from the" +" Maigret DB." +msgstr "" +"Rechercher des comptes portant le nom d'utilisateur ``machine42`` sur " +"**tous les sites** de la base de Maigret." + +#: ../../source/usage-examples.rst:29 76e664ed9de14dacad8b986c02ec566d +msgid "" +"Maigret will search for accounts on a huge number of sites, and some of " +"them may return false positive results. At the moment, we are working on " +"autorepair mode to deliver the most accurate results." +msgstr "" +"Maigret recherche des comptes sur un très grand nombre de sites, et " +"certains d'entre eux peuvent renvoyer des faux positifs. Nous travaillons" +" actuellement sur un mode de réparation automatique afin de fournir les " +"résultats les plus précis possible." + +#: ../../source/usage-examples.rst:33 9582720f4e424daa8f46de69ec95a43f +msgid "If you experience many false positives, you can do the following:" +msgstr "Si vous rencontrez beaucoup de faux positifs, vous pouvez procéder ainsi :" + +#: ../../source/usage-examples.rst:35 150ca233315d43f99412c013883038fc +msgid "Install the last development version of Maigret from GitHub" +msgstr "Installer la dernière version de développement de Maigret depuis GitHub" + +#: ../../source/usage-examples.rst:36 bf9c9afb734f4245b0e5ff0a11cb7dda +msgid "" +"Run Maigret with ``--self-check --auto-disable`` flag and agree on " +"disabling of problematic sites" +msgstr "" +"Lancer Maigret avec les options ``--self-check --auto-disable`` et " +"accepter la désactivation des sites problématiques" + +#: ../../source/usage-examples.rst:38 27110026e8bc43bc91e7e4b3f475d788 +msgid "" +"Search for accounts with username ``machine42`` and generate HTML and PDF" +" reports." +msgstr "" +"Rechercher des comptes portant le nom d'utilisateur ``machine42`` et " +"générer des rapports HTML et PDF." + +#: ../../source/usage-examples.rst:44 964877386e19484f860bb041f0238431 +msgid "or" +msgstr "ou" + +#: ../../source/usage-examples.rst:51 092bce4e7bb343d28f76d0e22e6b2b9f +msgid "Search for accounts with username ``machine42`` on Facebook only." +msgstr "" +"Rechercher des comptes portant le nom d'utilisateur ``machine42`` sur " +"Facebook uniquement." + +#: ../../source/usage-examples.rst:57 294b7878d0bb406483c31185847d61ae +msgid "" +"Extract information from the Steam page by URL and start a search for " +"accounts with found username ``machine42``." +msgstr "" +"Extraire les informations d'une page Steam à partir de son URL, puis " +"lancer une recherche de comptes avec le nom d'utilisateur ``machine42`` " +"ainsi trouvé." + +#: ../../source/usage-examples.rst:63 f9e86af822e44c17bfbf626ab152ef9e +msgid "" +"Search for accounts with username ``machine42`` only on US and Japanese " +"sites." +msgstr "" +"Rechercher des comptes portant le nom d'utilisateur ``machine42`` " +"uniquement sur les sites américains et japonais." + +#: ../../source/usage-examples.rst:69 9d16792882d1486f99e7dbcd1aa62a0f +msgid "" +"Search for accounts with username ``machine42`` only on sites related to " +"software development." +msgstr "" +"Rechercher des comptes portant le nom d'utilisateur ``machine42`` " +"uniquement sur les sites liés au développement logiciel." + +#: ../../source/usage-examples.rst:75 473b81473b344deea48862316675f99a +msgid "" +"Search for accounts with username ``machine42`` on uCoz sites only " +"(mostly CIS countries)." +msgstr "" +"Rechercher des comptes portant le nom d'utilisateur ``machine42`` " +"uniquement sur les sites uCoz (principalement dans les pays de la CEI)." + diff --git a/docs/source/locale/fr/LC_MESSAGES/use-cases/crypto.po b/docs/source/locale/fr/LC_MESSAGES/use-cases/crypto.po new file mode 100644 index 00000000..1c9e717d --- /dev/null +++ b/docs/source/locale/fr/LC_MESSAGES/use-cases/crypto.po @@ -0,0 +1,563 @@ +# French translation of the Maigret documentation. +# Copyright (C) 2025, soxoj +# This file is distributed under the same license as the Maigret package. +# +msgid "" +msgstr "" +"Project-Id-Version: Maigret 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-09-15 17:05+0200\n" +"PO-Revision-Date: 2026-09-15 17:20+0200\n" +"Last-Translator: \n" +"Language: fr\n" +"Language-Team: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/use-cases/crypto.rst:4 ad5968f74ecb4ec89aef75ae544fbc29 +msgid "Cryptocurrency & Web3 Investigations" +msgstr "Enquêtes cryptomonnaies et Web3" + +#: ../../source/use-cases/crypto.rst:6 4e690b83e18b47a695f9367062c40134 +msgid "" +"Blockchain transactions are public, but the people behind wallets are " +"not. Maigret helps bridge this gap by finding Web3 accounts tied to a " +"username, revealing the person behind a pseudonymous crypto persona." +msgstr "" +"Les transactions de la blockchain sont publiques, mais pas les personnes " +"derrière les portefeuilles. Maigret aide à combler cet écart en " +"retrouvant les comptes Web3 liés à un nom d'utilisateur, et révèle ainsi " +"la personne derrière une identité crypto pseudonyme." + +#: ../../source/use-cases/crypto.rst:9 f73fcb5f2a8a48b89855e0e3f0b9ab93 +msgid "Why it matters" +msgstr "Pourquoi c'est important" + +#: ../../source/use-cases/crypto.rst:11 0b01faa3fff84d91a337f6ec1debd594 +msgid "" +"Crypto investigations often start with a wallet address or an ENS name " +"but hit a wall — the blockchain tells you *what* happened, not *who* did " +"it. A username, however, is reused across platforms. If someone trades on" +" OpenSea as ``zachxbt`` and posts on Warpcast as ``zachxbt``, Maigret " +"connects the dots and builds a full profile." +msgstr "" +"Les enquêtes crypto partent souvent d'une adresse de portefeuille ou d'un" +" nom ENS, puis se heurtent à un mur : la blockchain dit *ce qui* s'est " +"passé, pas *qui* l'a fait. Un nom d'utilisateur, en revanche, est " +"réutilisé d'une plateforme à l'autre. Si quelqu'un échange sur OpenSea " +"sous le pseudo ``zachxbt`` et publie sur Warpcast sous ``zachxbt``, " +"Maigret relie les points et construit un profil complet." + +#: ../../source/use-cases/crypto.rst:13 428909a013294e51a223ae633ba9dac0 +msgid "Common scenarios:" +msgstr "Scénarios courants :" + +#: ../../source/use-cases/crypto.rst:15 9c839780b8bc41569e798989b8aeab1c +msgid "" +"**Scam attribution.** A rug-pull promoter uses the same alias on Fragment" +" (Telegram username marketplace), OpenSea, and a personal blog." +msgstr "" +"**Attribution d'une arnaque.** Le promoteur d'un rug pull utilise le même" +" pseudo sur Fragment (la place de marché des noms d'utilisateur " +"Telegram), sur OpenSea et sur un blog personnel." + +#: ../../source/use-cases/crypto.rst:16 b9582bc453a641fbb09ef0a1cc695be6 +msgid "" +"**Sanctions compliance.** Verifying whether a counterparty's online " +"footprint matches known sanctioned individuals." +msgstr "" +"**Conformité aux sanctions.** Vérifier si l'empreinte en ligne d'une " +"contrepartie correspond à des personnes connues comme sanctionnées." + +#: ../../source/use-cases/crypto.rst:17 03a16ee8ce7e40079d0def9b98ca8af3 +msgid "" +"**Due diligence.** Before an OTC deal or DAO vote, checking whether the " +"other party has a consistent online presence or is a freshly created " +"sockpuppet." +msgstr "" +"**Due diligence.** Avant une transaction de gré à gré ou un vote de DAO, " +"vérifier si l'autre partie a une présence en ligne cohérente ou s'il " +"s'agit d'une marionnette fraîchement créée." + +#: ../../source/use-cases/crypto.rst:18 64d680470eb04e43b8eae25764ed4717 +msgid "" +"**Stolen funds tracing.** A stolen NFT appears on OpenSea under a new " +"account — but the username matches a Warpcast profile with real-world " +"links." +msgstr "" +"**Traçage de fonds volés.** Un NFT volé réapparaît sur OpenSea sous un " +"nouveau compte, mais le nom d'utilisateur correspond à un profil Warpcast" +" qui comporte des liens vers le monde réel." + +#: ../../source/use-cases/crypto.rst:21 21c7efb026774d378ba1f99d2fedf131 +msgid "Supported sites" +msgstr "Sites pris en charge" + +#: ../../source/use-cases/crypto.rst:23 aa04605c201b48328b689aec29b54564 +msgid "Maigret currently checks the following crypto and Web3 platforms:" +msgstr "Maigret vérifie actuellement les plateformes crypto et Web3 suivantes :" + +#: ../../source/use-cases/crypto.rst:29 74d2ab3196234ed0a24bba6f77d7e1a6 +msgid "Site" +msgstr "Site" + +#: ../../source/use-cases/crypto.rst:30 1c327513f9e2490f959352ef7472620e +msgid "What it reveals" +msgstr "Ce qu'il révèle" + +#: ../../source/use-cases/crypto.rst:31 a37a5624f8664bedb4664d2b7e86e1c0 +msgid "Notes" +msgstr "Remarques" + +#: ../../source/use-cases/crypto.rst:32 e8b649cb3f8c4d66bfbf3b304840d3d4 +msgid "**OpenSea**" +msgstr "**OpenSea**" + +#: ../../source/use-cases/crypto.rst:33 0bf75621ef5e445c8d6e735b28f052b8 +msgid "NFT collections, trading history, profile bio, linked website" +msgstr "" +"Collections de NFT, historique des échanges, biographie du profil, site " +"web associé" + +#: ../../source/use-cases/crypto.rst:35 b642c2d480ae4503bbcf961c8e8b5f67 +msgid "**Rarible**" +msgstr "**Rarible**" + +#: ../../source/use-cases/crypto.rst:36 2cf8e4b6305f403f88583da83cd69453 +msgid "NFT marketplace profile, collections, listing history" +msgstr "Profil de place de marché NFT, collections, historique des mises en vente" + +#: ../../source/use-cases/crypto.rst:37 455441ef60704ddfb6c542417e8670ef +msgid "Complements OpenSea for NFT attribution across marketplaces" +msgstr "Complète OpenSea pour l'attribution de NFT d'une place de marché à l'autre" + +#: ../../source/use-cases/crypto.rst:38 df35b69bc3664e2091b7aa51004eed7a +msgid "**Zora**" +msgstr "**Zora**" + +#: ../../source/use-cases/crypto.rst:39 bfa1623d071449ea9b10b54231dd1466 +msgid "Zora Network profile, minted NFTs, creator activity" +msgstr "Profil Zora Network, NFT frappés, activité de créateur" + +#: ../../source/use-cases/crypto.rst:40 563ccd10999449e695f04a52cf817e22 +msgid "Ethereum L2 creator platform; useful for on-chain art attribution" +msgstr "" +"Plateforme de créateurs sur un L2 Ethereum ; utile pour l'attribution " +"d'art on-chain" + +#: ../../source/use-cases/crypto.rst:41 b6edd130b2d7463488219cef179f7c07 +msgid "**Polymarket**" +msgstr "**Polymarket**" + +#: ../../source/use-cases/crypto.rst:42 4456236df6d64e4b9ea67cd20f27ed47 +msgid "Prediction-market profile, positions, public portfolio P&L" +msgstr "" +"Profil sur le marché prédictif, positions, gains et pertes du " +"portefeuille public" + +#: ../../source/use-cases/crypto.rst:43 cc25827172b0419fa04045aab5448eb3 +msgid "Useful for political/financial prediction attribution" +msgstr "Utile pour l'attribution de prédictions politiques ou financières" + +#: ../../source/use-cases/crypto.rst:44 f34a2f9604b14a2a92750483eebddfed +msgid "**Warpcast** (Farcaster)" +msgstr "**Warpcast** (Farcaster)" + +#: ../../source/use-cases/crypto.rst:45 b4094c34bd824915b7b07cadc1d2325d +msgid "Decentralized social profile, posts, follower graph, Farcaster ID" +msgstr "" +"Profil social décentralisé, publications, graphe d'abonnés, identifiant " +"Farcaster" + +#: ../../source/use-cases/crypto.rst:46 956648fde130495390d546d664d4cde0 +msgid "" +"Every Farcaster ID maps to an Ethereum address via the on-chain ID " +"registry" +msgstr "" +"Chaque identifiant Farcaster correspond à une adresse Ethereum via le " +"registre d'identifiants on-chain" + +#: ../../source/use-cases/crypto.rst:47 6441dd6494ee4c2981e526fb4cd6ae3f +msgid "**Fragment**" +msgstr "**Fragment**" + +#: ../../source/use-cases/crypto.rst:48 e7cd915496c648c6a5d3cae77464ae25 +msgid "Telegram username ownership, TON wallet address, purchase date and price" +msgstr "" +"Propriété d'un nom d'utilisateur Telegram, adresse de portefeuille TON, " +"date et prix d'achat" + +#: ../../source/use-cases/crypto.rst:49 3915106557874a708db74a66627f5995 +msgid "Valuable for linking Telegram identities to TON wallets" +msgstr "Précieux pour relier des identités Telegram à des portefeuilles TON" + +#: ../../source/use-cases/crypto.rst:50 d70a37c44d6c4c5792604c9b10295974 +msgid "**Paragraph**" +msgstr "**Paragraph**" + +#: ../../source/use-cases/crypto.rst:51 06abf366d32647cdad079565e676c65a +msgid "Web3 blog/newsletter, ETH wallet address, linked Twitter handle" +msgstr "" +"Blog ou newsletter Web3, adresse de portefeuille ETH, compte Twitter " +"associé" + +#: ../../source/use-cases/crypto.rst:52 1782e0619d884ee4ab6b300cdb7bd99e +msgid "Richest cross-platform data among crypto sites" +msgstr "Les données inter-plateformes les plus riches parmi les sites crypto" + +#: ../../source/use-cases/crypto.rst:53 394ec42393ab49b4950f473012e4003f +msgid "**Tonometerbot**" +msgstr "**Tonometerbot**" + +#: ../../source/use-cases/crypto.rst:54 ad20409e25f64f0a8fdbf76976afdb35 +msgid "TON wallet balance, subscriber count, NFT collection, rankings" +msgstr "" +"Solde du portefeuille TON, nombre d'abonnés, collection de NFT, " +"classements" + +#: ../../source/use-cases/crypto.rst:55 6155483eaa594eb2b7299147ec38be1f +msgid "TON blockchain analytics" +msgstr "Analyse de la blockchain TON" + +#: ../../source/use-cases/crypto.rst:56 5d08b167816c45629afd8f3c75cb566c +msgid "**Spatial**" +msgstr "**Spatial**" + +#: ../../source/use-cases/crypto.rst:57 c4bc4d772e534f43848a6badacdde61e +msgid "" +"Metaverse profile, linked social accounts (Discord, Twitter, Instagram, " +"LinkedIn, TikTok)" +msgstr "" +"Profil metaverse, comptes sociaux associés (Discord, Twitter, Instagram, " +"LinkedIn, TikTok)" + +#: ../../source/use-cases/crypto.rst:58 35dc8e345fa04e50948bea44b38d905c +msgid "Rich cross-platform links" +msgstr "Nombreux liens inter-plateformes" + +#: ../../source/use-cases/crypto.rst:59 4df056e2f6fc41faab036e7d982d68cd +msgid "**Revolut.me**" +msgstr "**Revolut.me**" + +#: ../../source/use-cases/crypto.rst:60 78c7530532aa4477839d9feff980bae3 +msgid "" +"Payment handle: first/last name, country code, base currency, supported " +"payment methods" +msgstr "" +"Identifiant de paiement : prénom et nom, code pays, devise de référence, " +"moyens de paiement acceptés" + +#: ../../source/use-cases/crypto.rst:61 d3608dbc954b4bff93a1babddfe28cdc +msgid "" +"Not strictly Web3, but widely used by crypto OTC traders for fiat off-" +"ramps; the public API returns structured KYC-adjacent data" +msgstr "" +"Pas vraiment du Web3, mais très utilisé par les traders crypto de gré à " +"gré pour convertir en monnaie fiduciaire ; l'API publique renvoie des " +"données structurées proches du KYC" + +#: ../../source/use-cases/crypto.rst:64 64ea641f9f484d36af8aeeba844aa40b +msgid "Real-world example: zachxbt" +msgstr "Un exemple réel : zachxbt" + +#: ../../source/use-cases/crypto.rst:66 e8c55d73d1fa41cfbcc66b5df9e8d507 +msgid "" +"`ZachXBT `_ is a well-known on-chain " +"investigator. Let's see what Maigret can find from just the username " +"``zachxbt``:" +msgstr "" +"`ZachXBT `_ est un enquêteur on-chain bien " +"connu. Voyons ce que Maigret trouve à partir du seul nom d'utilisateur " +"``zachxbt`` :" + +#: ../../source/use-cases/crypto.rst:72 10e57caefe734f94b05a25e173bcdefe +msgid "" +"Maigret finds 5 accounts and automatically extracts structured data from " +"each:" +msgstr "" +"Maigret trouve 5 comptes et en extrait automatiquement des données " +"structurées :" + +#: ../../source/use-cases/crypto.rst:74 3617b511943a493ab596981f956c9a86 +msgid "" +"**Fragment** — confirms the Telegram username ``@zachxbt`` is claimed, " +"reveals the TON wallet address (``EQBisZrk...``), purchase price (10 " +"TON), and date (January 2023)." +msgstr "" +"**Fragment** — confirme que le nom d'utilisateur Telegram ``@zachxbt`` " +"est pris, révèle l'adresse du portefeuille TON (``EQBisZrk...``), le prix" +" d'achat (10 TON) et la date (janvier 2023)." + +#: ../../source/use-cases/crypto.rst:76 ffb9995d96bb427b8346b03e69940a91 +msgid "" +"**Paragraph** — the richest result. Returns the real name used on the " +"platform (``ZachXBT``), bio (``Scam survivor turned 2D investigator``), " +"an Ethereum wallet address (``0x23dBf066...``), and a linked Twitter " +"handle (``zachxbt``). The ``wallet_address`` field is especially valuable" +" — it directly links the pseudonym to an on-chain identity." +msgstr "" +"**Paragraph** — le résultat le plus riche. Il renvoie le nom réel utilisé" +" sur la plateforme (``ZachXBT``), la biographie (``Scam survivor turned " +"2D investigator``), une adresse de portefeuille Ethereum " +"(``0x23dBf066...``) et un compte Twitter associé (``zachxbt``). Le champ " +"``wallet_address`` est particulièrement précieux : il relie directement " +"le pseudonyme à une identité on-chain." + +#: ../../source/use-cases/crypto.rst:78 30bc828de2384a779def798b7e020704 +msgid "" +"**Warpcast** — Farcaster profile with a Farcaster ID (``fid: 20931``), " +"profile image, and social graph (33K followers). Every Farcaster ID is " +"tied to an Ethereum address via the on-chain ID registry, so this is " +"another on-chain anchor." +msgstr "" +"**Warpcast** — profil Farcaster avec un identifiant Farcaster (``fid: " +"20931``), une photo de profil et un graphe social (33 000 abonnés). " +"Chaque identifiant Farcaster est lié à une adresse Ethereum via le " +"registre d'identifiants on-chain : voilà donc un autre point d'ancrage " +"on-chain." + +#: ../../source/use-cases/crypto.rst:80 72082fea4d4a4e3e87496872b0443734 +msgid "" +"**OpenSea** — NFT marketplace profile with bio (``On-chain sleuth | 10x " +"rug pull survivor``), avatar (hosted on ``seadn.io`` with an Ethereum " +"address in the URL path), and a link to an external investigations page." +msgstr "" +"**OpenSea** — profil de place de marché NFT avec une biographie (``On-" +"chain sleuth | 10x rug pull survivor``), un avatar (hébergé sur " +"``seadn.io``, avec une adresse Ethereum dans le chemin de l'URL) et un " +"lien vers une page d'enquêtes externe." + +#: ../../source/use-cases/crypto.rst:82 ae0b864542004812bea0fbc8152a5d8d +msgid "" +"**Hive Blog** — blockchain-based blog account created in March 2025. Low " +"activity (1 post), but confirms the username is claimed across blockchain" +" ecosystems." +msgstr "" +"**Hive Blog** — compte de blog sur blockchain créé en mars 2025. Peu " +"d'activité (1 publication), mais cela confirme que le nom d'utilisateur " +"est pris dans les écosystèmes blockchain." + +#: ../../source/use-cases/crypto.rst:84 819b44f6666a4fc0b768b411bcc3e7f5 +msgid "From a single username, Maigret produces:" +msgstr "À partir d'un seul nom d'utilisateur, Maigret produit :" + +#: ../../source/use-cases/crypto.rst:86 b70bb3546f9947bbb20aa33a50b53d75 +msgid "" +"**2 wallet addresses** — one TON (from Fragment), one Ethereum (from " +"Paragraph)" +msgstr "" +"**2 adresses de portefeuille** — une TON (via Fragment), une Ethereum " +"(via Paragraph)" + +#: ../../source/use-cases/crypto.rst:87 9785a32767ce470284606aa06a490d9f +msgid "**1 confirmed Twitter handle** — ``zachxbt`` (from Paragraph)" +msgstr "**1 compte Twitter confirmé** — ``zachxbt`` (via Paragraph)" + +#: ../../source/use-cases/crypto.rst:88 e0bcc86d5b8b46b5a197d5ca7724e36d +msgid "**1 Telegram username** — ``@zachxbt`` (from Fragment)" +msgstr "**1 nom d'utilisateur Telegram** — ``@zachxbt`` (via Fragment)" + +#: ../../source/use-cases/crypto.rst:89 27b0ecce165740a98ced8efa87d8be6c +msgid "**1 external link** — ``investigations.notion.site`` (from OpenSea)" +msgstr "**1 lien externe** — ``investigations.notion.site`` (via OpenSea)" + +#: ../../source/use-cases/crypto.rst:90 8b3cd61f67004c7bbdb2f543efcb7497 +msgid "**Social graph data** — 33K Farcaster followers, blog activity timestamps" +msgstr "" +"**Des données de graphe social** — 33 000 abonnés Farcaster, horodatages " +"de l'activité du blog" + +#: ../../source/use-cases/crypto.rst:92 1ad051a0bb96496ab3f1e712d8020c67 +msgid "" +"This is enough to pivot into blockchain analysis tools (Etherscan, " +"Arkham, Nansen) using the wallet addresses, or into social media analysis" +" using the Twitter handle." +msgstr "" +"C'est assez pour rebondir vers des outils d'analyse blockchain " +"(Etherscan, Arkham, Nansen) grâce aux adresses de portefeuille, ou vers " +"l'analyse des réseaux sociaux grâce au compte Twitter." + +#: ../../source/use-cases/crypto.rst:95 0a44f303252b423d8a1d7cdac7a4a7e2 +msgid "Workflow: from username to wallet" +msgstr "Méthode : du nom d'utilisateur au portefeuille" + +#: ../../source/use-cases/crypto.rst:97 c6611f6f46384343a8bbad6a96c9b7b8 +msgid "**Step 1: Search crypto platforms**" +msgstr "**Étape 1 : chercher sur les plateformes crypto**" + +#: ../../source/use-cases/crypto.rst:103 d64c8d200f3a45219c275796f59be0b7 +msgid "Review the results. Pay attention to:" +msgstr "Passez les résultats en revue. Regardez en particulier :" + +#: ../../source/use-cases/crypto.rst:105 b7062a8925d5403e99ec0445316071de +msgid "" +"**Fragment** — if the username is claimed, you get a TON wallet address " +"directly." +msgstr "" +"**Fragment** — si le nom d'utilisateur est pris, vous obtenez directement" +" une adresse de portefeuille TON." + +#: ../../source/use-cases/crypto.rst:106 5c13573ef4c5406081cc741e4ec92221 +msgid "" +"**Paragraph** — blog profiles often contain an ETH address and a Twitter " +"handle." +msgstr "" +"**Paragraph** — les profils de blog contiennent souvent une adresse ETH " +"et un compte Twitter." + +#: ../../source/use-cases/crypto.rst:107 f5ad2cc976594773894e3e5c07913d3c +msgid "" +"**Warpcast** — Farcaster IDs map to Ethereum addresses via the on-chain " +"registry." +msgstr "" +"**Warpcast** — les identifiants Farcaster correspondent à des adresses " +"Ethereum via le registre on-chain." + +#: ../../source/use-cases/crypto.rst:108 41f7062dca4142a78f5b9a421560dd74 +msgid "**OpenSea** — avatar URLs sometimes contain wallet addresses in the path." +msgstr "" +"**OpenSea** — les URL d'avatar contiennent parfois des adresses de " +"portefeuille dans leur chemin." + +#: ../../source/use-cases/crypto.rst:110 90b45493a4904b10a8ee0e556e178e44 +msgid "**Step 2: Expand with extracted identifiers**" +msgstr "**Étape 2 : élargir avec les identifiants extraits**" + +#: ../../source/use-cases/crypto.rst:112 24abbd1123d84029b19f16109c85b0d8 +msgid "" +"Maigret automatically extracts additional identifiers from found profiles" +" (real names, linked accounts, profile URLs) and recursively searches for" +" them. This is enabled by default. If Maigret finds a linked Twitter " +"handle on a Paragraph profile, it will automatically search for that " +"handle across all sites." +msgstr "" +"Maigret extrait automatiquement des identifiants supplémentaires des " +"profils trouvés (noms réels, comptes associés, URL de profil) et les " +"recherche à son tour, de façon récursive. Cette fonction est activée par " +"défaut. Si Maigret trouve un compte Twitter associé sur un profil " +"Paragraph, il recherchera automatiquement ce compte sur tous les sites." + +#: ../../source/use-cases/crypto.rst:114 08463a16d98d46bd9f240ccfb4e04e05 +msgid "**Step 3: Cross-reference with non-crypto platforms**" +msgstr "**Étape 3 : recouper avec les plateformes non crypto**" + +#: ../../source/use-cases/crypto.rst:116 41434769c1ba43a586e9d1511fc64b6e +msgid "" +"The real power is connecting crypto personas to mainstream accounts. Drop" +" the tag filter:" +msgstr "" +"La vraie puissance consiste à relier des identités crypto à des comptes " +"grand public. Retirez le filtre par tag :" + +#: ../../source/use-cases/crypto.rst:122 dde1e0066e7f4488aae95c979134e2b1 +msgid "" +"This checks all 3000+ sites. A match on GitHub, Reddit, or a forum can " +"reveal the person behind the wallet." +msgstr "" +"Cela vérifie plus de 3 000 sites. Une correspondance sur GitHub, sur " +"Reddit ou sur un forum peut révéler la personne derrière le portefeuille." + +#: ../../source/use-cases/crypto.rst:125 6997e5e52cb24fcab99dd0e437adee62 +msgid "Workflow: from wallet to identity" +msgstr "Méthode : du portefeuille à l'identité" + +#: ../../source/use-cases/crypto.rst:127 9386d3fcae5e42ecbda223074e6e6cd0 +msgid "" +"If you start with a wallet address rather than a username, you can use " +"complementary tools to get a username first:" +msgstr "" +"Si vous partez d'une adresse de portefeuille plutôt que d'un nom " +"d'utilisateur, des outils complémentaires permettent d'obtenir d'abord un" +" nom d'utilisateur :" + +#: ../../source/use-cases/crypto.rst:129 64b47fd982bc4a35afcf41c4170445e1 +msgid "" +"**ENS / Unstoppable Domains** — resolve the wallet address to a human-" +"readable name (``vitalik.eth``). Then search that name in Maigret." +msgstr "" +"**ENS / Unstoppable Domains** — résoudre l'adresse du portefeuille en un " +"nom lisible (``vitalik.eth``). Recherchez ensuite ce nom dans Maigret." + +#: ../../source/use-cases/crypto.rst:130 d129a77a233f45ba8454b34f24cdef3d +msgid "" +"**Etherscan labels** — check if the address has a public label (exchange," +" known entity)." +msgstr "" +"**Étiquettes Etherscan** — vérifier si l'adresse porte une étiquette " +"publique (plateforme d'échange, entité connue)." + +#: ../../source/use-cases/crypto.rst:131 f2fdef2540214fc3a9fcc3561c2d9c10 +msgid "" +"**Fragment** — search the TON wallet address to find which Telegram " +"usernames it purchased." +msgstr "" +"**Fragment** — rechercher l'adresse du portefeuille TON pour savoir quels" +" noms d'utilisateur Telegram elle a achetés." + +#: ../../source/use-cases/crypto.rst:132 abc6d3019c7c4c22865bcb86eb41e7b5 +msgid "" +"**Arkham Intelligence / Nansen** — blockchain attribution platforms that " +"may tag the address with a known identity." +msgstr "" +"**Arkham Intelligence / Nansen** — des plateformes d'attribution " +"blockchain, susceptibles d'associer l'adresse à une identité connue." + +#: ../../source/use-cases/crypto.rst:134 033a0ba3d36d430283c6a12956018fd5 +msgid "Once you have a username candidate, feed it to Maigret." +msgstr "Une fois un nom d'utilisateur candidat en main, donnez-le à Maigret." + +#: ../../source/use-cases/crypto.rst:137 2ce159d123b14d288c5d33703af6f3bc +msgid "Tips" +msgstr "Conseils" + +#: ../../source/use-cases/crypto.rst:139 956c475b1ca54dd4a5deadc9977207da +msgid "" +"**Username reuse is the #1 signal.** Crypto-native users often reuse " +"their ENS name (``alice.eth``) or a variation (``alice_eth``, " +"``aliceeth``) across platforms. Try all variations." +msgstr "" +"**La réutilisation du nom d'utilisateur est le signal numéro un.** Les " +"utilisateurs nés dans la crypto réutilisent souvent leur nom ENS " +"(``alice.eth``) ou une variante (``alice_eth``, ``aliceeth``) d'une " +"plateforme à l'autre. Essayez toutes les variantes." + +#: ../../source/use-cases/crypto.rst:140 7b8f774e36fe49d5bff1cb2b41795ff2 +msgid "" +"**Fragment is uniquely valuable** because it directly links Telegram " +"usernames to TON wallet addresses — a rare on-chain / off-chain bridge." +msgstr "" +"**Fragment a une valeur unique**, car il relie directement des noms " +"d'utilisateur Telegram à des adresses de portefeuille TON : un pont on-" +"chain / off-chain rare." + +#: ../../source/use-cases/crypto.rst:141 04ce594675e048e1b5c68685ad64803a +msgid "" +"**Warpcast profiles are Ethereum-native.** Every Farcaster account is " +"tied to an Ethereum address via the ID registry contract. If you find a " +"Warpcast profile, you implicitly have a wallet address." +msgstr "" +"**Les profils Warpcast sont nativement liés à Ethereum.** Chaque compte " +"Farcaster est rattaché à une adresse Ethereum via le contrat de registre " +"d'identifiants. Trouver un profil Warpcast, c'est donc disposer " +"implicitement d'une adresse de portefeuille." + +#: ../../source/use-cases/crypto.rst:142 63a2fb8b549042b59231e844f8564901 +msgid "" +"**Paragraph often has the richest data** — wallet address, Twitter " +"handle, bio, and activity timestamps in a single API response." +msgstr "" +"**Paragraph offre souvent les données les plus riches** : adresse de " +"portefeuille, compte Twitter, biographie et horodatages d'activité, le " +"tout dans une seule réponse d'API." + +#: ../../source/use-cases/crypto.rst:143 550dc55e4dd94524b296fbc402354403 +msgid "" +"**Use** ``--exclude-tags`` **to skip irrelevant sites** when you're " +"focused on crypto:" +msgstr "" +"**Utilisez** ``--exclude-tags`` **pour écarter les sites hors sujet** " +"lorsque vous vous concentrez sur la crypto :" + diff --git a/docs/source/locale/fr/LC_MESSAGES/use-cases/scientists.po b/docs/source/locale/fr/LC_MESSAGES/use-cases/scientists.po new file mode 100644 index 00000000..8276bc71 --- /dev/null +++ b/docs/source/locale/fr/LC_MESSAGES/use-cases/scientists.po @@ -0,0 +1,485 @@ +# French translation of the Maigret documentation. +# Copyright (C) 2025, soxoj +# This file is distributed under the same license as the Maigret package. +# +msgid "" +msgstr "" +"Project-Id-Version: Maigret 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-09-15 17:05+0200\n" +"PO-Revision-Date: 2026-09-15 17:20+0200\n" +"Last-Translator: \n" +"Language: fr\n" +"Language-Team: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/use-cases/scientists.rst:4 ee298635fb4742a48e2945efa81688f8 +msgid "Academic & Research Investigations" +msgstr "Enquêtes universitaires et scientifiques" + +#: ../../source/use-cases/scientists.rst:6 e6975c6d0c6f447a9c6a23b397d56e10 +msgid "" +"Academic identity has a unique anchor that social-media identity does " +"not: the **ORCID** (Open Researcher and Contributor ID). Every ORCID is " +"verified, globally unique, and tied to a confirmed email — a single " +"confirmed ORCID match between two platforms means the **same human**, " +"with effectively zero false-positive rate." +msgstr "" +"L'identité universitaire dispose d'un point d'ancrage que l'identité des " +"réseaux sociaux n'a pas : l'**ORCID** (Open Researcher and Contributor " +"ID). Chaque ORCID est vérifié, unique au monde et rattaché à une adresse " +"e-mail confirmée. Une seule correspondance d'ORCID confirmée entre deux " +"plateformes signifie donc qu'il s'agit du **même être humain**, avec un " +"taux de faux positifs pratiquement nul." + +#: ../../source/use-cases/scientists.rst:8 951b76d507194d8c94cf29a7c89354c8 +msgid "" +"Maigret uses ORCID as a first-class identifier: extract it once from a " +"username-keyed profile (iNaturalist, GitHub bio, lab homepage), then " +"pivot into the academic graph (ORCID, OpenAlex, arXiv, DBLP, Scholia) — a" +" chain of HTTP calls that turns an anonymous handle into a CV with " +"employer, education, publication list, citation count, co-author graph, " +"and topical area." +msgstr "" +"Maigret traite l'ORCID comme un identifiant de premier rang : extrayez-le" +" une fois depuis un profil indexé par nom d'utilisateur (iNaturalist, " +"biographie GitHub, page d'un laboratoire), puis rebondissez dans le " +"graphe universitaire (ORCID, OpenAlex, arXiv, DBLP, Scholia). Cette " +"chaîne d'appels HTTP transforme un pseudo anonyme en CV, avec employeur, " +"formation, liste de publications, nombre de citations, graphe de co-" +"auteurs et domaines de recherche." + +#: ../../source/use-cases/scientists.rst:11 ed48f48ba1f048e5b57a8b0deeaddef5 +msgid "Why it matters" +msgstr "Pourquoi c'est important" + +#: ../../source/use-cases/scientists.rst:13 0707507f77414ba4aa1f1098298d5e61 +msgid "" +"Most OSINT work on academic targets stalls at the same bottleneck: people" +" use one alias on a citizen-science site, a different alias on Twitter, a" +" third in a forum signature, and only their real name on PubMed. " +"Connecting the personas by hand means trawling Google Scholar, " +"ResearchGate, university web pages, and old conference programmes. ORCID " +"short-circuits this entirely — one verified identifier resolves all of " +"them." +msgstr "" +"La plupart des travaux OSINT sur des cibles universitaires butent sur le " +"même goulot d'étranglement : les gens utilisent un pseudo sur un site de " +"science participative, un autre sur Twitter, un troisième dans la " +"signature d'un forum, et leur vrai nom uniquement sur PubMed. Relier ces " +"identités à la main suppose de ratisser Google Scholar, ResearchGate, les" +" pages des universités et de vieux programmes de conférences. L'ORCID " +"court-circuite tout cela : un seul identifiant vérifié les résout toutes." + +#: ../../source/use-cases/scientists.rst:15 a21c00e5e60e42458fa6d6a08f0a1d15 +msgid "Common scenarios:" +msgstr "Scénarios courants :" + +#: ../../source/use-cases/scientists.rst:17 0d6ca7debd5d44aea14c0d24101f5e71 +msgid "" +"**Researcher background check.** Before a collaboration, a preprint " +"review, or a grant decision — verifying that a claimed h-index, " +"employment history, and publication count actually match the public ORCID" +" record." +msgstr "" +"**Vérification du parcours d'un chercheur.** Avant une collaboration, la " +"relecture d'une préimpression ou une décision de financement, vérifier " +"qu'un indice h annoncé, un parcours professionnel et un nombre de " +"publications correspondent bien au dossier ORCID public." + +#: ../../source/use-cases/scientists.rst:18 8e40cd767dec4332a379f3682699a1c3 +msgid "" +"**Co-author graph reconstruction.** From a single ORCID, OpenAlex returns" +" every co-author, their institutions, and topical clusters — useful for " +"spotting undisclosed conflicts of interest." +msgstr "" +"**Reconstitution du graphe de co-auteurs.** À partir d'un seul ORCID, " +"OpenAlex renvoie tous les co-auteurs, leurs institutions et leurs " +"regroupements thématiques, ce qui aide à repérer des conflits d'intérêts " +"non déclarés." + +#: ../../source/use-cases/scientists.rst:19 e03c81341117451e99b83d91c7314c2d +msgid "" +"**Paper mill / fraud investigation.** When a suspicious paper's authors " +"share an ORCID-claimed identity, the cross-platform footprint (or absence" +" of one) is itself evidence." +msgstr "" +"**Enquête sur une usine à articles ou une fraude.** Lorsque les auteurs " +"d'un article suspect partagent une identité revendiquée par un ORCID, " +"l'empreinte inter-plateformes, ou son absence, constitue en soi un " +"indice." + +#: ../../source/use-cases/scientists.rst:20 ce7f90e5993848f6ba33e6907f0a5ec9 +msgid "" +"**Pseudonym deanonymisation.** A wildlife photographer posts naturalist " +"observations under the handle ``kueda``. iNaturalist's public API returns" +" their ORCID, and one further request reveals their real name, employer " +"(California Academy of Sciences), education (UC Berkeley), and 700+ " +"citable observations." +msgstr "" +"**Désanonymisation d'un pseudonyme.** Un photographe animalier publie ses" +" observations naturalistes sous le pseudo ``kueda``. L'API publique " +"d'iNaturalist renvoie son ORCID, et une requête de plus révèle son vrai " +"nom, son employeur (California Academy of Sciences), sa formation (UC " +"Berkeley) et plus de 700 observations citables." + +#: ../../source/use-cases/scientists.rst:21 db11da3e39074a36b5765df716326430 +msgid "" +"**Award / appointment due diligence.** Confirming a Turing-Award claim, a" +" tenure status, or a society fellowship via the DBLP and ORCID activity " +"timelines rather than a CV PDF." +msgstr "" +"**Due diligence sur une récompense ou une nomination.** Confirmer " +"l'obtention d'un prix Turing, une titularisation ou une distinction d'une" +" société savante à partir des chronologies d'activité DBLP et ORCID, " +"plutôt qu'à partir d'un CV en PDF." + +#: ../../source/use-cases/scientists.rst:24 a178ac647726484a84ef53f127734613 +msgid "Supported sites" +msgstr "Sites pris en charge" + +#: ../../source/use-cases/scientists.rst:26 10b6d6aeb0f1409fb0aa1b088a5bc5c7 +msgid "" +"Maigret currently checks the following ORCID-keyed platforms (use ``--id-" +"type orcid`` when starting from a bare ORCID, or rely on the recursive " +"chain when starting from a username):" +msgstr "" +"Maigret vérifie actuellement les plateformes indexées par ORCID suivantes" +" (utilisez ``--id-type orcid`` si vous partez d'un ORCID seul, ou laissez" +" faire la chaîne récursive si vous partez d'un nom d'utilisateur) :" + +#: ../../source/use-cases/scientists.rst:32 3f65871241f84c0e8e101c8537eda85a +msgid "Site" +msgstr "Site" + +#: ../../source/use-cases/scientists.rst:33 03ff3bfe5ab54bb2979013d8d1c23fc8 +msgid "What it reveals" +msgstr "Ce qu'il révèle" + +#: ../../source/use-cases/scientists.rst:34 804b0a7b47f64aab951de81195af0bc0 +msgid "Notes" +msgstr "Remarques" + +#: ../../source/use-cases/scientists.rst:35 ca39813258694acaaa241fdf366d9e4d +msgid "**ORCID**" +msgstr "**ORCID**" + +#: ../../source/use-cases/scientists.rst:36 54a63873fa1740008b556fb13f8090f5 +msgid "" +"Full name, biography, employment, education, researcher URLs (homepages " +"and social), keywords, country, linked external IDs (Scopus, " +"ResearcherID, Loop), publication summary, email-verified status" +msgstr "" +"Nom complet, biographie, emploi, formation, URL du chercheur (pages " +"personnelles et réseaux sociaux), mots-clés, pays, identifiants externes " +"associés (Scopus, ResearcherID, Loop), résumé des publications, statut de" +" vérification de l'e-mail" + +#: ../../source/use-cases/scientists.rst:37 1b41a5076121434e831dfee66091796e +msgid "" +"All disciplines — ORCID is a field-agnostic identifier issued to any " +"researcher." +msgstr "" +"Toutes les disciplines : l'ORCID est un identifiant indépendant du " +"domaine, délivré à tout chercheur." + +#: ../../source/use-cases/scientists.rst:38 f97f67a7ee96484fb9eef1e6f0d11ea1 +msgid "**OpenAlex**" +msgstr "**OpenAlex**" + +#: ../../source/use-cases/scientists.rst:39 3c9c15e70646477fa5fb3dc23d7bd5f7 +msgid "" +"Display name and name alternatives, works count, total citations, " +"h-index, i10-index, last-known institutions (with country), topical " +"areas, raw author-name variants from publications" +msgstr "" +"Nom affiché et variantes de nom, nombre de travaux, total des citations, " +"indice h, indice i10, dernières institutions connues (avec le pays), " +"domaines thématiques, variantes brutes du nom d'auteur issues des " +"publications" + +#: ../../source/use-cases/scientists.rst:40 ce4c81289ac74c9bbacccec349db2df9 +msgid "" +"All disciplines — indexes works across the entire scholarly literature, " +"from humanities to medicine." +msgstr "" +"Toutes les disciplines : il indexe les travaux de toute la littérature " +"scientifique, des sciences humaines à la médecine." + +#: ../../source/use-cases/scientists.rst:41 f007230daa414d54922bc1025b0e8d90 +msgid "**arXiv**" +msgstr "**arXiv**" + +#: ../../source/use-cases/scientists.rst:42 582078eee6e84c0da02cbd5fbeaf6dea +msgid "Author preprint listing — paper titles, IDs, dates" +msgstr "" +"Liste des préimpressions de l'auteur : titres, identifiants et dates des " +"articles" + +#: ../../source/use-cases/scientists.rst:43 bddc096db3e949eeac716f08857bba0b +msgid "" +"Strongly biased toward physics, math, CS (and quantitative biology, " +"statistics, EE, quantitative finance, economics)." +msgstr "" +"Fortement orienté physique, mathématiques et informatique (ainsi que " +"biologie quantitative, statistiques, génie électrique, finance " +"quantitative et économie)." + +#: ../../source/use-cases/scientists.rst:44 dfeed256081e4cdba98f7a0dc34b62cc +msgid "**DBLP**" +msgstr "**DBLP**" + +#: ../../source/use-cases/scientists.rst:45 09b26e4280694028b8858f837ed04f9d +msgid "" +"Full name, DBLP person ID, paper count, affiliation, awards (e.g. Turing " +"Award), homepage URLs, links to Google Scholar / ResearchGate / Scopus" +msgstr "" +"Nom complet, identifiant DBLP de la personne, nombre d'articles, " +"affiliation, récompenses (prix Turing, par exemple), URL de pages " +"personnelles, liens vers Google Scholar / ResearchGate / Scopus" + +#: ../../source/use-cases/scientists.rst:46 79307d06313c4a64b193a320dc19e081 +msgid "" +"Computer science only — a biologist or pure economist will not be in the " +"index." +msgstr "" +"Informatique uniquement : un biologiste ou un économiste pur ne figurera " +"pas dans l'index." + +#: ../../source/use-cases/scientists.rst:47 9f6da096997544caa7cb79b109c3eb9f +msgid "**Scholia**" +msgstr "**Scholia**" + +#: ../../source/use-cases/scientists.rst:48 813bb08484964990b333ccfdd8cbbfe4 +msgid "" +"Wikidata QID for the author, linked publications, co-author graph, " +"employer/affiliation timeline, topical clusters" +msgstr "" +"QID Wikidata de l'auteur, publications associées, graphe de co-auteurs, " +"chronologie des employeurs et affiliations, regroupements thématiques" + +#: ../../source/use-cases/scientists.rst:49 a1b58b6ea56a42c1bb357dedd13ca055 +msgid "" +"All disciplines, but only if the author has been curated in Wikidata — " +"coverage is broadest for prominent figures (award winners, senior " +"faculty, deceased researchers)." +msgstr "" +"Toutes les disciplines, mais uniquement si l'auteur a été référencé dans " +"Wikidata ; la couverture est la plus large pour les figures en vue " +"(lauréats de prix, professeurs de rang élevé, chercheurs décédés)." + +#: ../../source/use-cases/scientists.rst:52 de06a749073b46328f9aea93e421fefe +msgid "Workflow: from username to ORCID" +msgstr "Méthode : du nom d'utilisateur à l'ORCID" + +#: ../../source/use-cases/scientists.rst:54 5891cccad461443091c2e7927af13841 +msgid "**Step 1: Find a profile that publishes ORCID**" +msgstr "**Étape 1 : trouver un profil qui publie un ORCID**" + +#: ../../source/use-cases/scientists.rst:56 c94819f103da4cfc8ec58159de9f585d +msgid "" +"The most reliable bridges from a username to an ORCID are platforms whose" +" users *want* their academic identity discoverable. In practice:" +msgstr "" +"Les passerelles les plus fiables entre un nom d'utilisateur et un ORCID " +"sont les plateformes dont les utilisateurs *souhaitent* que leur identité" +" universitaire soit trouvable. En pratique :" + +#: ../../source/use-cases/scientists.rst:58 af0ebe5051a9413283aa3c86bf2ead8b +#, python-brace-format +msgid "" +"**iNaturalist** — biologists, naturalists, citizen scientists. Public API" +" ``api.inaturalist.org/v1/users/{username}`` returns the ORCID directly " +"in the ``orcid`` field. Maigret extracts it automatically." +msgstr "" +"**iNaturalist** — biologistes, naturalistes, scientifiques amateurs. " +"L'API publique ``api.inaturalist.org/v1/users/{username}`` renvoie " +"directement l'ORCID dans le champ ``orcid``. Maigret l'extrait " +"automatiquement." + +#: ../../source/use-cases/scientists.rst:59 c46df7f429da4704b01deacdada3972a +#, python-brace-format +msgid "" +"**GitHub** — scientists often paste their ORCID URL into the **bio** or " +"**blog** field on their GitHub profile, or under a *generic* entry in " +"``/users/{u}/social_accounts``. A pattern like " +"``orcid\\.org/(\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX])`` matches both " +"``http://orcid.org/...`` and ``orcid.org/...`` variants." +msgstr "" +"**GitHub** — les scientifiques collent souvent l'URL de leur ORCID dans " +"le champ **bio** ou **blog** de leur profil GitHub, ou dans une entrée " +"*generic* de ``/users/{u}/social_accounts``. Un motif comme " +"``orcid\\.org/(\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX])`` capture aussi bien " +"les variantes ``http://orcid.org/...`` que ``orcid.org/...``." + +#: ../../source/use-cases/scientists.rst:60 9aff91d6847f427aab3845da0b17f789 +msgid "" +"**Lab homepage / institutional bio.** Use ``--parse `` to scrape an " +"arbitrary page for known identifiers — useful when the target's footprint" +" lives at ``faculty.example.edu/~jdoe``." +msgstr "" +"**Page d'un laboratoire ou biographie institutionnelle.** Utilisez " +"``--parse `` pour extraire les identifiants connus d'une page " +"quelconque : utile quand l'empreinte de la cible se trouve à " +"``faculty.example.edu/~jdoe``." + +#: ../../source/use-cases/scientists.rst:62 a4b9e1231c484587ad3ee03658d3f0f1 +msgid "**Step 2: Let the recursive search run**" +msgstr "**Étape 2 : laisser tourner la recherche récursive**" + +#: ../../source/use-cases/scientists.rst:68 60b30eddb42343e4bd9ee036d8b17301 +msgid "" +"Recursive search is enabled by default. As soon as Maigret extracts an " +"``orcid`` field from any found profile, it queues an ``--id-type orcid`` " +"second wave automatically. No manual chaining needed." +msgstr "" +"La recherche récursive est activée par défaut. Dès que Maigret extrait un" +" champ ``orcid`` d'un profil trouvé, il met automatiquement en file " +"d'attente une deuxième vague en ``--id-type orcid``. Aucun enchaînement " +"manuel n'est nécessaire." + +#: ../../source/use-cases/scientists.rst:70 d7f8ce57148949bd97e19554276d3274 +msgid "**Step 3: Start from a bare ORCID**" +msgstr "**Étape 3 : partir d'un ORCID seul**" + +#: ../../source/use-cases/scientists.rst:72 38d34cdd4316459ca47872c652aa6521 +msgid "" +"If you already have the ORCID (e.g. from a paper's author footer, a grant" +" database, or a Wikidata entry):" +msgstr "" +"Si vous disposez déjà de l'ORCID (repris du pied de page des auteurs d'un" +" article, d'une base de données de financements ou d'une fiche Wikidata) " +":" + +#: ../../source/use-cases/scientists.rst:78 f708738f23654018827a8decf9ebe403 +msgid "This bypasses the username-bridge step entirely." +msgstr "Cela évite complètement l'étape de la passerelle par nom d'utilisateur." + +#: ../../source/use-cases/scientists.rst:81 457da1bf6f0f434e9e55a60cfce9f633 +msgid "Workflow: from ORCID to mainstream identity" +msgstr "Méthode : de l'ORCID à l'identité grand public" + +#: ../../source/use-cases/scientists.rst:83 28a7cf74523b4964b3fb48bf8c97ffd4 +msgid "" +"The ORCID record itself contains the link back to ordinary social " +"platforms:" +msgstr "" +"Le dossier ORCID lui-même contient le chemin de retour vers les " +"plateformes sociales ordinaires :" + +#: ../../source/use-cases/scientists.rst:85 20779e6815804c14b7954df92c053c1e +msgid "" +"**ORCID ``researcher-urls``** — a list of self-declared external links. " +"Typical entries: lab homepage, Twitter/Bluesky/Mastodon profile, personal" +" blog. These are entered by the researcher and therefore confirmed." +msgstr "" +"**Les ``researcher-urls`` d'ORCID** — une liste de liens externes " +"déclarés par le chercheur. On y trouve typiquement la page du " +"laboratoire, un profil Twitter/Bluesky/Mastodon ou un blog personnel. " +"Comme ils sont saisis par le chercheur, ils sont confirmés." + +#: ../../source/use-cases/scientists.rst:86 db3d799271fb4908a688ae71a915c16a +msgid "" +"**ORCID ``external-identifiers``** — IDs from sibling academic systems " +"(Scopus Author ID, ResearcherID/Publons, Loop profile). Each unlocks " +"another extraction pipeline." +msgstr "" +"**Les ``external-identifiers`` d'ORCID** — des identifiants issus de " +"systèmes universitaires voisins (Scopus Author ID, ResearcherID/Publons, " +"profil Loop). Chacun ouvre une nouvelle chaîne d'extraction." + +#: ../../source/use-cases/scientists.rst:87 0fcfe145df09492db565f203dfec1a46 +msgid "" +"**OpenAlex ``last_known_institutions``** — current employer with country," +" ROR ID, and OpenAlex institution ID; useful for pivoting into the " +"institution's directory." +msgstr "" +"**Les ``last_known_institutions`` d'OpenAlex** — l'employeur actuel avec " +"son pays, son identifiant ROR et son identifiant d'institution OpenAlex ;" +" utile pour rebondir vers l'annuaire de l'établissement." + +#: ../../source/use-cases/scientists.rst:88 2f353ffc031b4ce5acb3693d1994cfb6 +msgid "" +"**DBLP** ```` **tags** — DBLP records often embed direct links to " +"Google Scholar, ResearchGate, and personal pages." +msgstr "" +"**Les balises** ```` **de DBLP** — les fiches DBLP intègrent souvent" +" des liens directs vers Google Scholar, ResearchGate et des pages " +"personnelles." + +#: ../../source/use-cases/scientists.rst:89 68839ebbc7fa4b54bdd9f8234a71e7d6 +msgid "" +"**Scholia ``wikidata_qid``** — once you have a Wikidata QID, the SPARQL " +"endpoint unlocks the broadest external ID set in any single OSINT system:" +" VIAF, LCCN, GND, Twitter handle, Mastodon handle, IMDb, GitHub, ORCID, " +"and ~200 others." +msgstr "" +"**Le ``wikidata_qid`` de Scholia** — une fois le QID Wikidata en main, le" +" point d'accès SPARQL ouvre l'ensemble d'identifiants externes le plus " +"large de tous les systèmes OSINT : VIAF, LCCN, GND, compte Twitter, " +"compte Mastodon, IMDb, GitHub, ORCID, et environ deux cents autres." + +#: ../../source/use-cases/scientists.rst:92 cda3de64d967460bad46e0cf70ef7881 +msgid "Tips" +msgstr "Conseils" + +#: ../../source/use-cases/scientists.rst:94 399546fd2d2a4aa3a35b86e2ec768d2f +msgid "" +"**Email comes from ORCID** — within the academic chain (ORCID, OpenAlex, " +"arXiv, DBLP, Scholia) it is the only source that returns an email " +"address, and only when the researcher has marked their primary email " +"public. The same response also carries ``history.verified-primary-" +"email``, an ORCID-confirmed flag that means the address was email-" +"validated at registration. Use this as a strong pivot into email-keyed " +"lookups (Holehe, HIBP, Gravatar, etc.)." +msgstr "" +"**L'e-mail vient d'ORCID.** Dans la chaîne universitaire (ORCID, " +"OpenAlex, arXiv, DBLP, Scholia), c'est la seule source qui renvoie une " +"adresse e-mail, et uniquement si le chercheur a rendu publique son " +"adresse principale. La même réponse porte aussi ``history.verified-" +"primary-email``, un indicateur confirmé par ORCID qui signifie que " +"l'adresse a été validée par e-mail lors de l'inscription. C'est un " +"excellent point de pivot vers les recherches par e-mail (Holehe, HIBP, " +"Gravatar, etc.)." + +#: ../../source/use-cases/scientists.rst:95 4d19a19bbc1e4d7db060191d281c3d16 +msgid "" +"**Outside the academic chain, GitLab is the dev platform most likely to " +"leak an email** via its public ``public_email`` field — relevant for " +"scientists who self-host code on a CERN/research-institute GitLab. " +"GitHub's REST API does not expose email by default." +msgstr "" +"**En dehors de la chaîne universitaire, GitLab est la plateforme de " +"développement la plus susceptible de laisser fuiter un e-mail**, via son " +"champ public ``public_email`` : cela concerne les scientifiques qui " +"hébergent leur code sur le GitLab du CERN ou d'un institut de recherche. " +"L'API REST de GitHub, elle, n'expose pas l'e-mail par défaut." + +#: ../../source/use-cases/scientists.rst:96 1df0af5167e840019bf394062fc398a4 +msgid "" +"**Compare OpenAlex** ``raw_author_names`` **against the ORCID** ``other-" +"names``. Discrepancies often expose pre-marriage names, transliterations " +"from non-Latin scripts, or co-author misattributions worth flagging." +msgstr "" +"**Comparez les** ``raw_author_names`` **d'OpenAlex aux** ``other-names`` " +"**d'ORCID.** Les écarts révèlent souvent des noms de jeune fille, des " +"translittérations depuis des écritures non latines, ou des attributions " +"erronées de co-auteurs, qu'il vaut la peine de signaler." + +#: ../../source/use-cases/scientists.rst:97 6a915278a67a4998b3ac1e611999893d +#, python-brace-format +msgid "" +"**Anything fed into** ``--id-type orcid`` **must match** " +"``^\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]$``. The trailing character may " +"legitimately be ``X`` (ISO checksum); strip ``https://orcid.org/`` " +"prefixes before passing the bare ID." +msgstr "" +"**Tout ce que vous passez à** ``--id-type orcid`` **doit correspondre à**" +" ``^\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]$``. Le dernier caractère peut " +"légitimement être un ``X`` (somme de contrôle ISO) ; retirez le préfixe " +"``https://orcid.org/`` avant de passer l'identifiant nu." + diff --git a/docs/source/locale/zh_CN/LC_MESSAGES/development.po b/docs/source/locale/zh_CN/LC_MESSAGES/development.po index fd234b3e..a1e307d9 100644 --- a/docs/source/locale/zh_CN/LC_MESSAGES/development.po +++ b/docs/source/locale/zh_CN/LC_MESSAGES/development.po @@ -970,12 +970,12 @@ msgstr "翻译" msgid "" "The docs are translated via Sphinx's standard gettext workflow. English " "``.rst`` files are the source of truth; translations live as ``.po`` " -"catalogs under ``docs/source/locale//LC_MESSAGES/`` (currently only" -" ``zh_CN``)." +"catalogs under ``docs/source/locale//LC_MESSAGES/`` (currently " +"``zh_CN`` and ``fr``)." msgstr "" "文档通过 Sphinx 的标准 gettext 工作流进行翻译。英文 ``.rst`` 文件是事实来源(source of truth);翻译以 " -"``.po`` 目录形式存放在 ``docs/source/locale//LC_MESSAGES/`` 之下(目前只有 " -"``zh_CN``)。" +"``.po`` 目录形式存放在 ``docs/source/locale//LC_MESSAGES/`` 之下(目前有 " +"``zh_CN`` 和 ``fr``)。" #: ../../source/development.rst:366 92131512d2e146ebbc98e23c3fb2bb53 msgid ""