From 4a8c2d30f388159d1f2d7a769e30830120217270 Mon Sep 17 00:00:00 2001 From: Elmehdi Aitbrahim Date: Thu, 20 Aug 2026 19:18:00 -0400 Subject: [PATCH] i18n(fr): revise every page into modern journalistic French MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The French edition read as translated English: invented words (dégratuité, factive, déterministement), agreement errors, calques that do not parse (« nous prendre la main », « par jambe », « à échec fermé »), raw anglicisms, and not one non-breaking space in the whole edition. This is a language pass, not a rewrite — meaning, numbers, links, and the FR-9 honest framing are unchanged against the English source. - one vocabulary across all pages: garde-fous (rails), verrou (gate), liste blanche (allowlist), plateforme (venue), référence (benchmark), frais de preneur (taker fee), surapprentissage (overfitting), glissement (slippage), examen par des savants (scholarly review) - French typography: U+00A0 before : ; ? ! % $, inside « », and in figures; dates in French form (le 20 août 2026, not 2026-08-20) - ui.ts: `news.comments` said « 0 commentaires »; zéro takes the singular, and the empty case now reads « Aucun commentaire » - install.ts: the Windows path rendered as C:\\Users\\\\keel — over-escaped against the English source, now C:\Users\\keel - engine-docs.manifest.json: the fr section labels and doc blurbs - inline locale === "fr" labels in src/components/** Refs #35 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_013cpLPLRD6Mvv4KkyVDbnZn --- engine-docs.manifest.json | 16 +++--- src/components/ForOperators.astro | 8 +-- src/components/Header.astro | 2 +- src/components/pages/DocsIndexPage.astro | 2 +- src/i18n/pages/about.ts | 58 +++++++++---------- src/i18n/pages/community.ts | 22 ++++---- src/i18n/pages/compare.ts | 72 ++++++++++++------------ src/i18n/pages/compliance.ts | 40 ++++++------- src/i18n/pages/docs.ts | 18 +++--- src/i18n/pages/features.ts | 54 +++++++++--------- src/i18n/pages/home.ts | 46 +++++++-------- src/i18n/pages/install.ts | 68 +++++++++++----------- src/i18n/pages/news.ts | 8 +-- src/i18n/ui.ts | 57 ++++++++++--------- 14 files changed, 236 insertions(+), 235 deletions(-) diff --git a/engine-docs.manifest.json b/engine-docs.manifest.json index 5af6162..6cba518 100644 --- a/engine-docs.manifest.json +++ b/engine-docs.manifest.json @@ -9,7 +9,7 @@ "en": "The single source for keel's vocabulary — every term a keel screen can show, defined here and nowhere else.", "ar": "المصدر الوحيد لمصطلحات كيل — كل مصطلح يمكن أن يعرضه سطر الأوامر معرَّفٌ هنا وحده.", "section": "reference", - "fr": "L'unique source du vocabulaire de keel — chaque terme qu'un écran keel peut afficher est défini ici et nulle part ailleurs." + "fr": "L'unique source du vocabulaire de keel — chaque terme qu'un écran de keel peut afficher est défini ici, et nulle part ailleurs." }, { "path": "docs/fiqh-basis.md", @@ -27,7 +27,7 @@ "en": "Operating a deployment: the account-level obligations no rail can enforce, upgrades, and the three deployment profiles.", "ar": "تشغيل النشر: الالتزامات على مستوى الحساب التي لا يراها أي سكة أمان، والترقيات، وأنماط النشر الثلاثة.", "section": "guides", - "fr": "Exploiter un déploiement : les obligations au niveau du compte qu'aucun rail ne peut faire respecter, les mises à niveau et les trois profils de déploiement." + "fr": "Exploiter un déploiement : les obligations au niveau du compte qu'aucun garde-fou ne peut faire respecter, les mises à niveau et les trois profils de déploiement." }, { "path": "docs/go-live-runbook.md", @@ -36,7 +36,7 @@ "en": "The path to a first supervised live order — promotion, paper, and the human-in-the-loop steps.", "ar": "الطريق إلى أول أمر حقيقي خاضعٍ لإشراف بشري — الترقية، والتجريبي، وخطوات الإشراف.", "section": "guides", - "fr": "Le chemin vers un premier ordre réel supervisé — promotion, papier et étapes avec supervision humaine." + "fr": "Le chemin vers un premier ordre réel supervisé — promotion, papier et étapes soumises à une validation humaine." }, { "path": "docs/experiments/2026-08-13-restated-under-a-production-faithful-engine.md", @@ -45,7 +45,7 @@ "en": "The full record of the measured result: no shipped rule family is net-positive at the taker fee actually paid — every number and the defects that forced a restatement.", "ar": "السجل الكامل للنتيجة المقيسة: لا عائلة قواعد مُصدَّرة تحقق ربحًا صافيًا عند رسوم الآخذ الفعلية — بكل أرقامها والعيوب التي فرضت إعادة البيان.", "section": "research", - "fr": "Le compte rendu complet du résultat mesuré : aucune famille de règles livrée n'est nette-positive aux frais preneur réellement payés — tous les chiffres et les défauts qui ont forcé une reformulation." + "fr": "Le compte rendu complet du résultat mesuré : aucune famille de règles livrée ne dégage un résultat net positif aux frais de preneur réellement payés — tous les chiffres, et les défauts qui ont imposé une rectification." }, { "path": "docs/experiments/2026-08-11-hourly-backtest-turtle-breakout.md", @@ -54,7 +54,7 @@ "en": "Why the hourly profile exists: the same rules measured on ONE_HOUR bars fire 49.4 signals per asset-year instead of 2.15.", "ar": "لماذا يوجد النمط الساعي: القواعد نفسها على شموع الساعة تُطلق 49.4 إشارة لكل أصل-سنة بدل 2.15.", "section": "research", - "fr": "Pourquoi le profil horaire existe : les mêmes règles mesurées sur bougies ONE_HOUR déclenchent 49,4 signaux par actif-année au lieu de 2,15." + "fr": "Pourquoi le profil horaire existe : mesurées sur des bougies ONE_HOUR, les mêmes règles déclenchent 49,4 signaux par actif et par an, au lieu de 2,15." }, { "path": "docs/research/2026-08-18-lahlou-speculation-risk-sources.md", @@ -63,7 +63,7 @@ "en": "Source review on the risk sources of speculation — part of the research corpus behind the fiqh basis.", "ar": "مراجعة مصادر حول منابع خطر المضاربة — من سجل البحث الذي يقف خلف الأساس الفقهي.", "section": "research", - "fr": "Revue de sources sur les sources de risque de la spéculation — partie du corpus de recherche derrière la base fiqh." + "fr": "Revue de littérature sur les origines du risque dans la spéculation — un pan du corpus de recherche qui sous-tend la base fiqh." }, { "path": "docs/research/2026-08-18-money-management-and-fiqh-source-review.md", @@ -72,7 +72,7 @@ "en": "Source review on money management in trading and its fiqh treatment.", "ar": "مراجعة مصادر حول إدارة المال في التداول ومعالجتها الفقهية.", "section": "research", - "fr": "Revue de sources sur la gestion de l'argent dans le trading et son traitement fiqh." + "fr": "Revue de littérature sur la gestion de l'argent dans le trading et son traitement en fiqh." } ], "sections": [ @@ -98,7 +98,7 @@ "id": "research", "en": "Research & experiments", "ar": "البحث والتجارب", - "fr": "Recherche et expérimentations" + "fr": "Recherche et expériences" } ] } diff --git a/src/components/ForOperators.astro b/src/components/ForOperators.astro index 2a5aebe..163023a 100644 --- a/src/components/ForOperators.astro +++ b/src/components/ForOperators.astro @@ -26,10 +26,10 @@ const defaultLinks = ] : locale === "fr" ? [ - { label: "Runbook opérateur (Documentation)", href: `${localePath("en", "docs")}operator-runbook/` }, - { label: "Runbook de mise en production", href: `${localePath("en", "docs")}go-live-runbook/` }, - { label: "Le compte rendu d'expérience complet", href: `${localePath("en", "docs")}experiment-honest-result-restated/` }, - { label: "Code source du moteur", href: "https://github.com/CodeGateSoftware/keel" }, + { label: "Le runbook opérateur (Documentation)", href: `${localePath("en", "docs")}operator-runbook/` }, + { label: "Le runbook de mise en production", href: `${localePath("en", "docs")}go-live-runbook/` }, + { label: "Le compte rendu complet de l'expérience", href: `${localePath("en", "docs")}experiment-honest-result-restated/` }, + { label: "Le code source du moteur", href: "https://github.com/CodeGateSoftware/keel" }, ] : [ { label: "Operator runbook (Docs)", href: `${localePath("en", "docs")}operator-runbook/` }, diff --git a/src/components/Header.astro b/src/components/Header.astro index d0415d0..60419eb 100644 --- a/src/components/Header.astro +++ b/src/components/Header.astro @@ -163,7 +163,7 @@ const localeCodes: Record = { en: "EN", ar: "AR", fr: "FR" }; aria-label={locale === "ar" ? "تبديل بين الوضع النهاري والليلي" : locale === "fr" - ? "Basculer entre le thème clair et sombre" + ? "Basculer entre le thème clair et le thème sombre" : "Toggle light and dark theme"} > = { translatedFromRev: "2026-08-20.1", title: "À propos de keel — nom, licence et FAQ keel.sh & KEEL", description: - "Qui tient keeltrading.com, les licences, et la FAQ de la marque — pourquoi ce keel n'est ni le Keel de Kubernetes (keel.sh) ni Keel Infrastructure (KEEL).", + "Qui édite keeltrading.com, les licences, et la FAQ de la marque — pourquoi ce keel n'est ni le Keel de Kubernetes (keel.sh) ni Keel Infrastructure (KEEL).", intro: [ - "keeltrading.com est le site public de keel, le moteur de conformité Shariah open-source pour le trading de crypto en spot, maintenu par CodeGate Software. Le site est une couche en lecture seule au-dessus de GitHub : la documentation affiche des documents récupérés du dépôt du moteur au moment du build, le fil d'actualité lit les Discussions GitHub, et les boutons de téléchargement pointent vers GitHub Releases. Rien d'interactif ne se passe ici — publier, voter et poser des questions vivent sur GitHub.", - "Le site lui-même est open source ; son pipeline de build est conçu pour que le site ne puisse jamais contredire le dépôt qu'il présente.", + "keeltrading.com est le site public de keel, le moteur open-source de conformité Shariah pour le trading de cryptomonnaies au comptant, maintenu par CodeGate Software. Le site est une couche en lecture seule posée sur GitHub : la documentation affiche des documents récupérés dans le dépôt du moteur au moment du build, le fil d'actualité lit les Discussions GitHub, et les boutons de téléchargement pointent vers GitHub Releases. Rien d'interactif ne se passe ici : publier, voter, poser des questions, tout cela a lieu sur GitHub.", + "Le site lui-même est open source ; sa chaîne de build est conçue pour qu'il ne puisse jamais contredire le dépôt qu'il présente.", ], licenses: { title: "Licences", body: [ - "Le moteur keel est sous licence Apache-2.0 par son propre dépôt (CodeGateSoftware/keel).", - "Le code de ce site est sous MIT. Le contenu du site — prose, traductions, marque — est © CodeGate Software ; la citation avec attribution est bienvenue (voir CONTENT-LICENSE.md).", + "Le moteur keel est publié sous licence Apache-2.0 dans son propre dépôt (CodeGateSoftware/keel).", + "Le code de ce site est sous licence MIT. Le contenu du site — textes, traductions, identité visuelle — est © CodeGate Software ; la citation avec attribution est bienvenue (voir CONTENT-LICENSE.md).", ], }, faqTitle: "FAQ de la marque", faq: [ { - question: "Est-ce le projet Kubernetes appelé Keel ?", + question: "Est-ce le projet Kubernetes appelé Keel ?", answer: [ - "Non. Il existe un outil Kubernetes établi nommé Keel sur keel.sh, qui occupe aujourd'hui les résultats de recherche pour « keel » seul. Ce projet — keel par CodeGate Software — n'a aucun lien avec lui : ni code, ni historique, ni personnes en commun. Nous disons « keel trading » là où l'ambiguïté induirait en erreur, et ce site existe en partie pour rendre cette distinction facile à trouver.", + "Non. Il existe un outil Kubernetes bien établi, Keel, sur keel.sh, qui monopolise aujourd'hui les résultats de recherche sur le seul mot « keel ». Ce projet — keel, de CodeGate Software — n'a aucun lien avec lui : ni code, ni histoire, ni personnes en commun. Nous écrivons « keel trading » partout où l'ambiguïté pourrait induire en erreur, et ce site existe en partie pour rendre cette distinction facile à trouver.", ], }, { - question: "Est-ce Keel Infrastructure, l'action KEEL ?", + question: "Est-ce Keel Infrastructure, l'action KEEL ?", answer: [ - "Non. Une société de minage de bitcoin cotée au Nasdaq (ex-Bitfarms) trade sous le ticker KEEL, donc une recherche « keel trading » ou « keel crypto » peut afficher son graphique boursier. Elle n'a aucun lien avec ce projet. Ce keel est un moteur de conformité open-source par CodeGate Software — si vous êtes arrivé sur keeltrading.com, vous êtes au bon endroit.", + "Non. Une société de minage de bitcoin cotée au Nasdaq (ex-Bitfarms) est cotée sous le symbole KEEL : une recherche sur « keel trading » ou « keel crypto » peut donc faire remonter son cours de Bourse. Elle n'a aucun lien avec ce projet. Ce keel-ci est un moteur de conformité open-source signé CodeGate Software — si vous êtes arrivé sur keeltrading.com, vous êtes au bon endroit.", ], }, { - question: "Pourquoi le nom keel ?", + question: "Pourquoi ce nom, keel ?", answer: [ - "La quille (keel) est l'épine structurelle d'un navire — la pièce qui maintient tout droit et détermine le comportement de la coque. Le nom dit ce qu'est le moteur : ni les voiles, ni le vent, mais la partie dont le métier est de tenir le trading sur une ligne droite et auditable.", + "La quille (keel) est la colonne vertébrale d'un navire — la pièce qui maintient l'ensemble d'aplomb et détermine le comportement de la coque. Le nom dit ce qu'est le moteur : ni les voiles, ni le vent, mais la pièce dont le rôle est de tenir le trading sur une ligne droite et vérifiable.", ], }, { - question: "Quel est le lien entre keeltrading.com et le dépôt du moteur ?", + question: "Quel est le lien entre keeltrading.com et le dépôt du moteur ?", answer: [ - "Ce site est un dépôt séparé (CodeGateSoftware/keeltrading.com) dont le build récupère depuis le dépôt du moteur — les versions pour les numéros et liens d'artefacts, les Discussions pour l'actualité, et des documents épinglés pour la documentation. Si le moteur déplace un document, le build de ce site échoue exprès plutôt que d'afficher du périmé.", + "Ce site vit dans un dépôt distinct (CodeGateSoftware/keeltrading.com) dont le build va chercher ses données dans celui du moteur : les Releases pour les numéros de version et les liens de fichiers, les Discussions pour l'actualité, et des documents épinglés pour la documentation. Si le moteur déplace un document, le build de ce site échoue exprès, plutôt que d'afficher un contenu périmé.", ], }, { - question: "Qu'est-ce que CodeGate Software ?", + question: "Qu'est-ce que CodeGate Software ?", answer: [ - "CodeGate Software est l'organisation qui maintient le projet. keel a commencé comme un outil personnel et est publié en open source pour que ses affirmations de conformité soient auditées plutôt que crues sur parole.", + "CodeGate Software est l'organisation qui maintient le projet. keel a commencé comme un outil personnel ; il est publié en open source pour que ses affirmations de conformité soient auditées, plutôt que crues sur parole.", ], }, ], - openSourceTitle: "Open source — et le piège", + openSourceTitle: "Open source — et où est le piège", openSourceFaq: [ { - question: "Que signifie « open source » concrètement ?", + question: "Que veut dire « open source », concrètement ?", answer: [ - "Que le code source — les instructions réelles que le programme exécute — est publié là où chacun peut le lire, l'utiliser, vérifier ce qu'il fait vraiment et le modifier. keel porte la licence Apache-2.0, l'une des licences open source les plus standard au monde : vous pouvez l'exécuter pour tout usage, l'étudier, le modifier, et même bâtir une entreprise dessus.", - "Pour un outil qui avance des affirmations religieuses et financières, c'est tout l'enjeu. Vous n'avez pas à nous croire sur parole : vous pouvez lire chaque ligne vous-même, ou faire lire par quelqu'un en qui vous avez confiance — chaque rail, chaque porte, chaque chiffre de ce site remonte à du code que vous pouvez ouvrir.", + "Que le code source — les instructions que le programme exécute réellement — est publié là où chacun peut le lire, l'utiliser, vérifier ce qu'il fait vraiment et le modifier. keel porte la licence Apache-2.0, l'une des licences open source les plus répandues au monde : vous pouvez l'exécuter pour n'importe quel usage, l'étudier, le modifier et même bâtir une entreprise dessus.", + "Pour un outil qui avance des affirmations religieuses et financières, c'est tout l'enjeu. Vous n'avez pas à nous croire sur parole : vous pouvez lire chaque ligne vous-même, ou la faire lire à quelqu'un en qui vous avez confiance — chaque garde-fou, chaque verrou, chaque chiffre de ce site remonte à du code que vous pouvez ouvrir.", ], }, { - question: "Pourquoi keel est-il open source — et gratuit ?", + question: "Pourquoi keel est-il open source — et gratuit ?", answer: [ - "Parce que toute la valeur de keel tient dans l'auditabilité. Un moteur de conformité que vous ne pouvez pas inspecter est exactement le modèle « faites-moi confiance » que keel existe pour remplacer : les outils fermés vous demandent de croire leurs verdicts ; keel publie la machinerie et les règles qu'il applique, avec leurs sources. L'ouverture n'est pas un choix marketing plaqué dessus — c'est le produit.", - "Et pour être précis sur « gratuit » : le moteur est gratuit par licence, pas par essai. Apache-2.0 ne peut pas être dégratuité — une copie de la licence accompagne chaque version.", + "Parce que toute la valeur de keel tient dans sa vérifiabilité. Un moteur de conformité que vous ne pouvez pas inspecter, c'est exactement le modèle « faites-nous confiance » que keel entend remplacer : les outils fermés vous demandent de croire leurs verdicts ; keel publie sa machinerie et les règles qu'il applique, sources comprises. L'ouverture n'est pas un argument marketing plaqué par-dessus — c'est le produit.", + "Et pour être précis sur le mot « gratuit » : le moteur est gratuit par licence, pas par période d'essai. La licence Apache-2.0 est irrévocable — une copie l'accompagne à chaque version.", ], }, { - question: "Où est le piège ? Les concurrents facturent des abonnements — pourquoi pas keel ?", + question: "Où est le piège ? Les concurrents facturent un abonnement — pourquoi pas keel ?", answer: [ - "Les services de screening facturent parce que le verdict est leur produit : ils calculent ou rédigent des classifications et vous en vendent l'accès. keel ne vend délibérément pas de verdicts — il applique les vôtres, et son propre résultat honnête dit que les règles de référence ne battent pas leurs frais. Il n'y a rien ici sur quoi vous revendre de la performance, et nous ne ferons pas semblant du contraire.", - "La part honnête de la réponse : keel est aussi jeune et petit, sans entreprise derrière lui pour l'instant. Gratuit, c'est en partie le visage d'un projet honnête à ses débuts. Faire tourner keel n'est pas gratuit pour autant — votre temps, une plateforme de trading et l'accès aux données de marché coûtent de l'argent réel, et nous préférons le dire que d'appeler le trading gratuit.", - "Un détail délibéré : les textes et l'identité de ce site sont sous droit d'auteur (© CodeGate Software), contrairement au code du moteur. Cette frontière est l'étendue exacte de la réflexion commerciale actuelle.", + "Les services de filtrage facturent parce que le verdict est leur produit : ils calculent ou rédigent des classifications et vous en vendent l'accès. keel, lui, ne vend délibérément aucun verdict — il applique les vôtres, et son propre résultat honnête dit que les règles de référence ne couvrent pas leurs frais. Il n'y a ici aucune performance à vous vendre, et nous ne ferons pas semblant du contraire.", + "La part honnête de la réponse : keel est aussi jeune et petit, et aucune entreprise ne le porte pour l'instant. La gratuité est aussi, pour partie, le visage d'un projet honnête à ses débuts. Faire tourner keel n'est pas gratuit pour autant : votre temps, une plateforme de trading et l'accès aux données de marché coûtent de l'argent réel, et nous préférons le dire plutôt que de parler de trading gratuit.", + "Un détail délibéré : les textes et l'identité visuelle de ce site sont protégés par le droit d'auteur (© CodeGate Software), contrairement au code du moteur. Cette frontière résume à elle seule la réflexion commerciale du moment.", ], }, { - question: "Quand keel facturera-t-il, et pour quels services ?", + question: "Quand keel deviendra-t-il payant, et pour quels services ?", answer: [ - "Il n'y a pas de date, pas de grille tarifaire, pas de plan arrêté — en inventer un serait précisément le genre d'affirmation que ce projet refuse de faire. Si des services payants arrivent un jour, ce seront des services autour du moteur — pas le moteur lui-même. Vous en lirez la nouvelle ici et sur GitHub Discussions en premier, avec la même honnêteté que tout le reste : l'annonce dira clairement ce que c'est, ce que ça coûte, et pourquoi.", - "Ce qui peut être promis aujourd'hui : le moteur que vous téléchargez maintenant est sous Apache-2.0, et cela ne peut pas être révoqué. Toute offre payante future devrait valoir d'être payée par-dessus un moteur gratuit — c'est exactement l'exigence qu'un projet comme celui-ci doit s'imposer.", + "Il n'y a ni date, ni grille tarifaire, ni plan arrêté — en inventer un relèverait précisément du genre d'affirmation que ce projet refuse de faire. Si des services payants voient le jour, ce seront des services autour du moteur, pas le moteur lui-même. Vous l'apprendrez ici et dans les Discussions GitHub en premier, avec la même honnêteté que pour le reste : l'annonce dira clairement de quoi il s'agit, ce que cela coûte, et pourquoi.", + "Ce que l'on peut promettre aujourd'hui : le moteur que vous téléchargez maintenant est sous Apache-2.0, et cela ne peut pas être révoqué. Toute offre payante à venir devra justifier son prix face à un moteur gratuit — c'est exactement l'exigence qu'un projet comme celui-ci doit s'imposer.", ], }, ], diff --git a/src/i18n/pages/community.ts b/src/i18n/pages/community.ts index b550a68..b5127b8 100644 --- a/src/i18n/pages/community.ts +++ b/src/i18n/pages/community.ts @@ -125,48 +125,48 @@ export const community: LocalizedPage = { fr: { rev: "2026-08-20.1", translatedFromRev: "2026-08-19.2", - title: "La communauté keel — sur GitHub, par design", + title: "La communauté keel — sur GitHub, par choix", description: - "Questions, idées, sondages et débats de classification se vivent dans les Discussions GitHub de keel. Ce site ne fait que lire et lier — l'interaction reste là où vit le projet.", + "Questions, idées, sondages et débats de classification ont lieu dans les Discussions GitHub de keel. Ce site se contente de lire et de renvoyer : l'échange reste là où vit le projet.", intro: [ - "Tout ce qui a une dimension communautaire se passe sur GitHub Discussions — publier, voter, sonder, répondre. Ce site n'en a délibérément aucune : il lit et il lie, parce que le projet, son histoire et sa modération vivent déjà là-bas.", + "Tout ce qui relève de la communauté se passe dans les Discussions GitHub — publier, voter, sonder, répondre. Ce site n'offre délibérément aucune de ces fonctions : il lit et il renvoie, parce que le projet, son histoire et sa modération vivent déjà là-bas.", ], - note: "Une catégorie mérite une mention particulière : Conformité & classification. « X devrait-il être traité ainsi ? » est une question, pas un bug — et elle a sa place dédiée.", + note: "Une catégorie mérite une mention particulière : Conformité et classification. « X doit-il être traité ainsi ? » est une question, pas un bug — et elle a son espace dédié.", categories: [ { name: "Announcements", slug: "announcements", - description: "Les mises à jour des mainteneurs — le même flux qui alimente la page Actualités de ce site.", + description: "Les mises à jour des mainteneurs — le flux même qui alimente la page Actualités de ce site.", }, { name: "Compliance & classification", slug: "compliance-classification", - description: "Les conversations « X devrait-il être traité ainsi ? » — le débat de classification est une question, pas un bug, et ne doit pas être trié comme tel.", + description: "Les échanges du type « X doit-il être traité ainsi ? ». Le débat de classification est une question, pas un bug : il ne doit pas être trié comme tel.", }, { name: "Ideas", slug: "ideas", - description: "Les propositions de ce que keel devrait faire ensuite. Les meilleures idées arrivent avec le problème qu'elles résolvent, écrit noir sur blanc.", + description: "Les propositions sur ce que keel devrait faire ensuite. Les meilleures idées arrivent avec le problème qu'elles résolvent, énoncé noir sur blanc.", }, { name: "Polls", slug: "polls", - description: "Là où le projet demande à la communauté de trancher entre des options définies.", + description: "L'endroit où le projet demande à la communauté de trancher entre des options définies.", }, { name: "Q&A", slug: "q-a", - description: "Les questions d'exécution, de configuration ou de compréhension de keel — répondues en public pour que le suivant trouve la réponse.", + description: "Les questions sur l'exécution, la configuration ou le fonctionnement de keel — traitées en public, pour que la personne suivante trouve la réponse.", }, { name: "Show and tell", slug: "show-and-tell", - description: "Ce que les gens construisent avec et autour de keel. (Prévu comme flux secondaire sur la page Actualités.)", + description: "Ce que les gens construisent avec keel et autour de keel. (Prévu comme flux secondaire sur la page Actualités.)", }, { name: "General", slug: "general", - description: "Tout ce qui ne rentre pas dans les catégories ci-dessus.", + description: "Tout ce qui n'entre dans aucune des catégories ci-dessus.", }, ], }, diff --git a/src/i18n/pages/compare.ts b/src/i18n/pages/compare.ts index 795c33b..fa37d89 100644 --- a/src/i18n/pages/compare.ts +++ b/src/i18n/pages/compare.ts @@ -119,36 +119,36 @@ export const compare: LocalizedPage = { translatedFromRev: "2026-08-20.4", title: "Comparer keel aux autres bots de trading", description: - "keel comparé à Freqtrade, Jesse et Hummingbot : licence, finalité, portes de promotion, et la machinerie de conformité qu'aucun d'eux n'emporte — des faits structurels tirés des dépôts publics.", + "keel face à Freqtrade, Jesse et Hummingbot : licence, finalité, verrous de promotion et la machinerie de conformité qu'aucun d'eux n'embarque — des faits structurels tirés des dépôts publics.", intro: [ - "Freqtrade, Jesse et Hummingbot sont des bots de trading open-source établis et capables — bien plus mûrs que keel, avec des communautés ordres de grandeur plus grandes. Si vous voulez du trading algorithmique généraliste avec la couverture d'exchanges la plus large, ils sont la meilleure réponse.", - "Cette page énonce, factuellement et depuis les dépôts publics, où keel diffère : keel n'est pas un meilleur bot de trading — c'est une autre chose, un moteur d'application d'une conformité Shariah que vous fournissez.", + "Freqtrade, Jesse et Hummingbot sont des bots de trading open-source solides et éprouvés — bien plus mûrs que keel, avec des communautés sans commune mesure avec la sienne. Si vous cherchez du trading algorithmique généraliste avec la plus large couverture de plateformes, ils constituent la meilleure réponse.", + "Cette page dit, faits à l'appui et dépôts publics en main, où keel diffère : keel n'est pas un meilleur bot de trading — c'est autre chose, un moteur qui applique une conformité Shariah que vous lui fournissez.", ], tableTitle: "Comparaison structurelle", footnote: - "Faits tirés du dépôt public de chaque projet, août 2026. Taille de communauté (étoiles GitHub, même date) : Freqtrade ~53k, Hummingbot ~19,5k, Jesse ~8,3k — keel vient de lancer. La ligne Coût a été vérifiée sur le site de chaque projet le 2026-08-20 ; le prix du plugin Jesse change souvent — revérifiez sur jesse.trade/pricing. Freqtrade, Jesse, Hummingbot et QuantCrawler appartiennent à leurs mainteneurs ; leurs noms n'apparaissent ici que pour les identifier. Alpaca est un courtier, pas un bot — keel livre un adaptateur courtier pour lui via le port venues.", - readingTitle: "Comment lire ceci", + "Faits tirés du dépôt public de chaque projet, août 2026. Taille des communautés (étoiles GitHub, à la même date) : Freqtrade ~53 k, Hummingbot ~19,5 k, Jesse ~8,3 k — keel vient tout juste d'être lancé. La ligne Coût a été vérifiée sur le site de chaque projet le 20 août 2026 ; le tarif du plugin de Jesse change souvent — à revérifier sur jesse.trade/pricing. Freqtrade, Jesse, Hummingbot et QuantCrawler appartiennent à leurs mainteneurs ; leurs noms n'apparaissent ici que pour les identifier. Alpaca est un courtier, pas un bot — keel livre pour lui un adaptateur courtier via le port plateformes.", + readingTitle: "Comment lire ce tableau", reading: [ - "Chaque projet ici fait du backtest de stratégies et peut trader de la crypto. Les différences qui comptent sont structurelles : ce que le moteur refuse de faire, ce qu'il exige avant qu'une règle puisse trader de l'argent réel, et si la conformité est une machinerie ou rien du tout.", - "Aucune case de ce tableau n'est un jugement de valeur. L'ampleur de Freqtrade, le flux de recherche de Jesse et la profondeur de market-making de Hummingbot sont de vraies forces — keel n'en a aucune, par design.", + "Chacun de ces projets sait backtester des stratégies et négocier des cryptomonnaies. Les différences qui comptent sont structurelles : ce que le moteur refuse de faire, ce qu'il exige avant qu'une règle puisse engager de l'argent réel, et si la conformité y est une machinerie ou n'existe pas du tout.", + "Aucune case de ce tableau n'est un jugement de valeur. L'ampleur de Freqtrade, le confort de recherche de Jesse et la profondeur de Hummingbot en tenue de marché sont de vraies forces — keel n'en possède aucune, et c'est voulu.", ], - paidTitle: "Et les services payants ?", + paidTitle: "Et les services payants ?", paidBody: [ - "QuantCrawler est le genre de service payant que beaucoup de particuliers rencontrent d'abord : 9,99 $/mois après un essai gratuit de 30 jours (vérifié le 2026-08-20). Il relaie les alertes webhook TradingView vers votre courtier et copie les trades entre comptes — dix intégrations de courtiers dont Coinbase, avec un accent sur les futures et les comptes prop. C'est un service cloud au code fermé : vous connectez vos identifiants de courtier à leur plateforme, et l'exécution se fait sur leurs serveurs.", - "keel est le compromis inverse : rien d'hébergé, rien de fermé. Le moteur tourne sur votre machine, vos clés ne la quittent jamais, et aucune règle ne peut toucher de l'argent réel avant de franchir la porte de promotion. Ce que keel n'a pas : l'étendue de courtiers de QuantCrawler ni son flux TradingView d'abord — si c'est ce qu'il vous faut, leur réponse est la bonne, au prix de confier vos identifiants à un service. Comme les bots ci-dessus, il n'emporte aucune machinerie de conformité — et cette différence est toute la raison d'être de keel.", + "QuantCrawler est le type de service payant que beaucoup de particuliers croisent en premier : 9,99 $ par mois après trente jours d'essai gratuit (vérifié le 20 août 2026). Il relaie les alertes webhook de TradingView vers votre courtier et recopie les transactions d'un compte à l'autre — dix intégrations de courtiers, dont Coinbase, avec un accent sur les contrats à terme et les comptes de prop trading. C'est un service en ligne au code fermé : vous connectez vos identifiants de courtier à leur plateforme, et l'exécution a lieu sur leurs serveurs.", + "keel fait le choix inverse : rien d'hébergé, rien de fermé. Le moteur tourne sur votre machine, vos clés ne la quittent jamais, et aucune règle ne peut toucher de l'argent réel avant d'avoir franchi le verrou de promotion. Ce que keel n'a pas : l'étendue de courtiers de QuantCrawler, ni sa logique centrée sur TradingView — si c'est ce qu'il vous faut, leur réponse est la bonne, au prix de confier vos identifiants à un service. Comme les bots ci-dessus, il n'embarque aucune machinerie de conformité — et c'est toute la raison d'être de keel.", ], - venuesTitle: "Quelles places, et pourquoi", + venuesTitle: "Quelles plateformes, et pourquoi", venuesBody: [ - "L'adaptateur Coinbase de keel est la référence éprouvée en réel : screening spot attesté, ordres réels, tout le parcours exercé en production. Alpaca est câblé pour le déploiement côté actions — la même application, en papier d'abord, avec horloges de marché conscientes des sessions. L'adaptateur Robinhood est livré dans le dépôt comme place optionnelle de développement, délibérément hors des déploiements jusqu'à la fermeture de ses prérequis de mise en réel.", - "Ce que keel refuse catégoriquement : futures, marge, vente à découvert et tout produit dérivé — le spot long-only est toute la surface, par posture fiqh et par design. L'élargissement des places n'est pas poursuivi ; chaque nouvelle place est une décision d'adaptateur à capacités vérifiées, pas une métrique de croissance.", + "L'adaptateur Coinbase de keel est la référence, éprouvée en conditions réelles : filtrage attesté au comptant, ordres réels, tout le parcours exercé en production. Alpaca est intégré pour un déploiement côté actions — la même application, en papier d'abord, avec des horloges de marché qui tiennent compte des séances. L'adaptateur Robinhood est livré dans le dépôt comme plateforme de développement optionnelle, délibérément écartée des déploiements tant que ses prérequis de passage en réel ne sont pas remplis.", + "Ce que keel refuse catégoriquement : les contrats à terme, la marge, la vente à découvert et tout produit dérivé — le comptant à l'achat constitue toute la surface d'exposition, par posture fiqh autant que par conception. L'élargissement du nombre de plateformes n'est pas un objectif : chaque nouvelle plateforme est une décision d'adaptateur aux capacités vérifiées, pas un indicateur de croissance.", ], - catchLink: "Pourquoi keel est-il gratuit quand les autres facturent des abonnements ? La réponse honnête est sur la page À propos.", + catchLink: "Pourquoi keel est-il gratuit quand les autres facturent un abonnement ? La réponse honnête est sur la page À propos.", wontDoTitle: "Ce que keel ne fera pas", wontDo: [ - "Courir après la couverture d'exchanges : Coinbase est l'adaptateur de référence éprouvé en réel et Alpaca est câblé pour les actions papier ; l'adaptateur Robinhood est optionnel/dev, délibérément hors des déploiements.", - "Trader autre chose que le spot long : pas de levier, pas de vente à découvert, pas de produits dérivés.", - "Promouvoir une règle sur la seule brillance d'un backtest : le contrôle de surapprentissage (PBO/CSCV) peut opposer son veto.", - "Promettre du profit : aucune famille de règles livrée n'est nette-positive aux frais preneur réellement payés, et le site le dit sur sa page d'accueil.", + "Courir après la couverture de plateformes : Coinbase est l'adaptateur de référence, éprouvé en réel, et Alpaca est intégré pour les actions en papier ; l'adaptateur Robinhood reste optionnel et réservé au développement, délibérément écarté des déploiements.", + "Négocier autre chose que du comptant à l'achat : pas de levier, pas de vente à découvert, pas de produits dérivés.", + "Promouvoir une règle sur le seul éclat d'un backtest : le contrôle de surapprentissage (PBO/CSCV) peut y opposer son veto.", + "Promettre du gain : aucune famille de règles livrée ne dégage un résultat net positif aux frais de preneur réellement payés, et le site le dit dès sa page d'accueil.", ], }, }; @@ -160,39 +160,39 @@ export const compareRows = (locale: "en" | "ar" | "fr"): CompareRow[] => { { label: "Coût", values: [ - "Gratuit — open-source, auto-hébergé ; vous ne payez que votre infrastructure et les frais de place", - "Gratuit — open-source, auto-hébergé ; aucune offre officielle payante", - "Le cœur est gratuit (MIT) ; le plugin de trading réel est payant — licences à vie dès 899 $ (remises fréquentes ; abonnement annoncé)", - "Gratuit — Apache-2.0, auto-hébergé ; aucun service payant sur leur site", + "Gratuit — open-source, auto-hébergé ; vous ne payez que votre infrastructure et les frais de la plateforme", + "Gratuit — open-source, auto-hébergé ; aucune offre payante officielle", + "Le cœur est gratuit (MIT) ; le plugin de trading réel est payant — licence à vie à partir de 899 $ (remises fréquentes ; passage à l'abonnement annoncé)", + "Gratuit — Apache-2.0, auto-hébergé ; aucun service payant sur leur site", ], }, { label: "Langage", values: ["Python", "Python", "Python", "Python"] }, { label: "Finalité", values: [ - "Appliquer la conformité Shariah que vous fournissez, sur le spot", + "Appliquer, au comptant, une conformité Shariah que vous fournissez", "Développement généraliste de bots de trading", "Recherche de stratégies et trading", - "Market making / stratégies haute fréquence", + "Tenue de marché et stratégies à haute fréquence", ], }, { label: "Adaptateurs de plateformes", values: [ - "Coinbase (référence éprouvée en réel) + Alpaca (câblé, actions papier) ; adaptateur Robinhood optionnel/dev", - "Beaucoup de grandes plateformes", + "Coinbase (référence éprouvée en réel) + Alpaca (intégré, actions en papier) ; adaptateur Robinhood optionnel, réservé au développement", + "De nombreuses grandes plateformes", "Plusieurs plateformes", - "Beaucoup de CEX et de DEX", + "De nombreuses plateformes centralisées et décentralisées", ], }, { label: "Backtesting", - values: ["Fidèle à la production, glissement à l'échelle de la liquidité", "Oui", "Oui", "Oui"], + values: ["Fidèle à la production, glissement calibré sur la liquidité", "Oui", "Oui", "Oui"], }, { - label: "Porte obligatoire avant le réel", + label: "Verrou obligatoire avant le passage en réel", values: [ - "Deux volets : planchers de performance + contrôle de surapprentissage (PBO/CSCV), plancher de 100 transactions", + "En deux volets : seuils de performance + contrôle de surapprentissage (PBO/CSCV), minimum de 100 transactions", "Non", "Non", "Non", @@ -201,15 +201,15 @@ export const compareRows = (locale: "en" | "ar" | "fr"): CompareRow[] => { { label: "Machinerie de conformité Shariah", values: [ - "Filtrage attesté à échec fermé + 18 rails incontournables (dont qabd)", - "Intégrée nulle part", - "Intégrée nulle part", - "Intégrée nulle part", + "Filtrage attesté qui bloque par défaut + 18 garde-fous incontournables (dont le qabd)", + "Non intégrée", + "Non intégrée", + "Non intégrée", ], }, { - label: "Résultat honnête énoncé sur ses propres règles", - values: ["Oui — en page d'accueil", "Non publié", "Non publié", "Non publié"], + label: "Résultat honnête publié sur ses propres règles", + values: ["Oui — dès la page d'accueil", "Non publié", "Non publié", "Non publié"], }, ]; } diff --git a/src/i18n/pages/compliance.ts b/src/i18n/pages/compliance.ts index ef4a1ee..0817ce2 100644 --- a/src/i18n/pages/compliance.ts +++ b/src/i18n/pages/compliance.ts @@ -171,50 +171,50 @@ export const compliance: LocalizedPage = { translatedFromRev: "2026-08-19.2", title: "La méthodologie de conformité, en termes simples", description: - "Comment fonctionne la conformité Shariah de keel : filtrage attesté à échec fermé, le modèle d'attestation par (plateforme, produit), le contrôle qabd — et ce que keel n'est pas : pas une fatwa, pas un conseil financier, non revu par des savants.", + "Comment fonctionne la conformité Shariah de keel : un filtrage attesté qui bloque par défaut, le modèle d'attestation par (plateforme, produit), le contrôle qabd — et ce que keel n'est pas : ni une fatwa, ni un conseil financier, et sans examen par des savants.", intro: - "La conformité de keel est conçue pour que chaque règle qu'il applique soit écrite, sourcée et fournie par vous — l'opérateur. Rien de religieux n'est déduit, imposé par défaut ou caché dans le code. Cette page explique ce modèle en langage simple ; le document de base fiqh en est l'énoncé de référence, règle par règle.", + "La conformité de keel est conçue pour que chaque règle appliquée soit écrite, sourcée et fournie par vous, l'opérateur. Rien de religieux n'est déduit, imposé par défaut ni dissimulé dans le code. Cette page expose ce modèle en langage courant ; le document de base fiqh en donne l'énoncé de référence, règle par règle.", sections: [ { - title: "Faits calculés contre classifications attestées", + title: "Ce qui se calcule, ce qui s'atteste", body: [ - "Certaines choses sur un actif se connaissent depuis le marché et se calculent simplement. Mais : le cœur du token est-il un secteur interdit, est-ce un 'ayn adossé à un actif ou une créance dayn, verse-t-il un rendement assimilable au riba — ce sont des questions de fait-plus-érudition sur le monde. Aucun module du dépôt ne les déduit des chandeliers, et aucun ne fait semblant. Un humain les enregistre, avec une source et un nom attribué ; keel applique l'enregistrement de façon déterministe et refuse tout ce qui n'est pas attesté.", + "Certaines caractéristiques d'un actif se lisent sur le marché et se calculent sans difficulté. Mais savoir si l'activité principale du token relève d'un secteur interdit, s'il s'agit d'un 'ayn adossé à un actif ou d'une créance dayn, ou s'il verse un rendement assimilable au riba, relève à la fois du fait et de l'analyse savante. Aucun module du dépôt ne déduit cela des chandeliers, et aucun ne prétend le faire. Un humain l'enregistre, avec une source et un nom ; keel applique cet enregistrement de façon déterministe et refuse tout ce qui n'est pas attesté.", ], }, { title: "Le modèle d'attestation par (plateforme, produit)", body: [ - "Une attestation est bornée : elle nomme la plateforme et le produit, porte une source et est attribuée à un nom. Deux opérateurs suivant des écoles différentes peuvent détenir des attestations différentes et obtenir des réponses différentes du même code — par conception, parce que la règle vit dans votre attestation, pas dans le code.", - "Le même modèle couvre la plateforme elle-même : le rail 14 refuse les BUY réels tant que l'opérateur n'a pas attesté l'abonnement, et le rail 17 encode le qabd §65.4 — un actif qu'on ne peut pas retirer n'a peut-être jamais été possédé valablement, donc la capacité de retrait est attestée et appliquée, jamais supposée.", + "Une attestation a des bornes : elle nomme la plateforme et le produit, s'appuie sur une source et est signée d'un nom. Deux opérateurs qui suivent des écoles différentes peuvent détenir des attestations différentes et obtenir du même code des réponses différentes — c'est voulu, parce que la règle réside dans votre attestation, pas dans le code.", + "Le même modèle vaut pour la plateforme elle-même : le garde-fou 14 refuse tout achat réel tant que l'opérateur n'a pas attesté l'abonnement, et le garde-fou 17 encode le qabd §65.4 — un actif impossible à retirer n'a peut-être jamais été valablement possédé, si bien que la capacité de retrait est attestée puis appliquée, jamais présumée.", ], }, { - title: "Purification et la forme spot uniquement", + title: "La purification et la forme « comptant uniquement »", body: [ - "keel est du spot long uniquement, sans levier, sans vente à découvert, sans produits dérivés ; le dimensionnement utilise du cash réel, donc pas de riba par la position elle-même. Là où une obligation ne peut pas être appliquée par le code, elle est énoncée plutôt que balayée : les devoirs au niveau du compte qu'aucun rail ne voit — désactiver les récompenses USDC sur les soldes oisifs, principalement — restent à vérifier par l'opérateur, listés dans le runbook opérateur.", + "keel ne traite que du comptant à l'achat : pas de levier, pas de vente à découvert, pas de produits dérivés ; le dimensionnement se fait sur du cash réel, donc sans riba au titre de la position elle-même. Là où une obligation ne peut pas être appliquée par le code, elle est énoncée plutôt que passée sous silence : les devoirs au niveau du compte qu'aucun garde-fou ne peut voir — désactiver la rémunération USDC des soldes dormants, principalement — restent à vérifier par l'opérateur et figurent dans le runbook opérateur.", ], }, ], doesNot: { title: "Ce que keel ne fait pas", items: [ - "Ce n'est pas une fatwa et il ne peut pas en produire. keel ne déduit jamais une classification Shariah des données de marché ; il applique la règle que vous fournissez.", - "Ce n'est pas un conseil financier et pas un conseil religieux (Shariah).", - "Aucune revue savante de la base fiqh de keel n'a eu lieu. La base est la lecture sourcée d'un opérateur, publiée pour être auditée et contestée ; tant qu'une revue n'a pas lieu, le statut est : non revue.", + "keel n'est pas une fatwa et ne peut pas en produire. Il ne déduit jamais une classification Shariah des données de marché : il applique la règle que vous lui fournissez.", + "Ce n'est ni un conseil financier, ni un conseil religieux.", + "La base fiqh de keel n'a fait l'objet d'aucun examen par des savants. Elle est la lecture sourcée d'un seul opérateur, publiée pour être auditée et contestée ; tant qu'un examen n'a pas eu lieu, le statut reste : non examinée.", "L'attestation est l'acte et la responsabilité de l'opérateur. keel est la machinerie d'application, pas l'autorité.", - "Il ne promet pas de profit — aucune famille de règles livrée n'est nette-positive aux frais preneur réellement payés, et le repère est le simple DCA.", + "Il ne promet aucun gain : aucune famille de règles livrée ne dégage un résultat net positif aux frais de preneur réellement payés, et la référence est le simple achat périodique (DCA).", ], }, attest: { title: "La commande qui compte", body: [ - "Une seule commande enregistre une classification avec sa source et un nom attribué. Tout ce que keel applique ensuite à cet actif remonte à cet enregistrement.", + "Une seule commande enregistre une classification, avec sa source et le nom de qui l'assume. Tout ce que keel appliquera ensuite à cet actif remonte à cet enregistrement.", ], command: "keel assets attest", - commandNote: "Enregistrez une classification Shariah — avec une source et un nom attribué — que keel appliquera ensuite de façon déterministe.", + commandNote: "Enregistrez une classification Shariah — avec une source et un nom — que keel appliquera ensuite de façon déterministe.", }, links: { - title: "Sources premières", + title: "Sources primaires", items: [ { label: "La base fiqh (docs/fiqh-basis.md)", @@ -222,18 +222,18 @@ export const compliance: LocalizedPage = { href: "https://github.com/CodeGateSoftware/keel/blob/main/docs/fiqh-basis.md", }, { - label: "Statut de la revue savante", - note: "Ce qu'une revue savante couvrirait, ce qu'elle signifierait ou non — et le statut actuel : non revue.", + label: "Le statut de l'examen par des savants", + note: "Ce que couvrirait un examen par des savants, ce qu'il signifierait ou non — et le statut actuel : non examinée.", href: "https://github.com/CodeGateSoftware/keel/blob/main/docs/fiqh-basis.md#scholarly-review-status", }, { - label: "Le résultat honnête — compte rendu de l'expérience", - note: "Aucune famille de règles livrée n'est nette-positive aux frais preneur réellement payés ; tous les chiffres sont énoncés.", + label: "Le résultat honnête — le compte rendu de l'expérience", + note: "Aucune famille de règles livrée ne dégage un résultat net positif aux frais de preneur réellement payés ; tous les chiffres sont donnés.", href: "https://github.com/CodeGateSoftware/keel/blob/main/docs/experiments/2026-08-13-restated-under-a-production-faithful-engine.md", }, { label: "Le glossaire (docs/glossary.md)", - note: "L'unique source du vocabulaire — les termes fiqh sont ancrés, jamais inventés.", + note: "L'unique source du vocabulaire — les termes du fiqh y sont ancrés, jamais inventés.", href: "https://github.com/CodeGateSoftware/keel/blob/main/docs/glossary.md", }, ], diff --git a/src/i18n/pages/docs.ts b/src/i18n/pages/docs.ts index c252b8c..dc5eea2 100644 --- a/src/i18n/pages/docs.ts +++ b/src/i18n/pages/docs.ts @@ -87,19 +87,19 @@ export const docs: LocalizedPage = { fr: { rev: "2026-08-20.1", translatedFromRev: "2026-08-19.2", - title: "Documentation keel : glossaire, base fiqh, runbooks", + title: "Documentation keel : glossaire, base fiqh, runbooks", description: - "Glossaire, base fiqh, runbooks opérateur et mise en production, comptes rendus d'expériences et recherche — récupérés au build depuis CodeGateSoftware/keel, jamais copiés à la main.", + "Glossaire, base fiqh, runbooks opérateur et de mise en production, comptes rendus d'expériences et travaux de recherche — récupérés au moment du build depuis CodeGateSoftware/keel, jamais recopiés à la main.", intro: [ - "Ce sont les documents du moteur keel eux-mêmes, affichés ici au moment du build depuis CodeGateSoftware/keel. Rien dans cette page n'est ressaisi ni résumé à la main : si un document épinglé est déplacé ou disparaît en amont, le build de ce site échoue bruyamment plutôt que d'afficher quelque chose de périmé.", + "Ce sont les documents du moteur keel eux-mêmes, affichés ici tels qu'ils ont été récupérés dans CodeGateSoftware/keel au moment du build. Rien sur cette page n'est ressaisi ni résumé à la main : si un document épinglé change de place ou disparaît en amont, le build de ce site s'arrête net plutôt que d'afficher un contenu périmé.", ], howTitle: "Comment ça marche", how: [ - "Un manifeste (engine-docs.manifest.json) épingle le chemin de chaque document dans le dépôt du moteur. À chaque build — y compris la reconstruction horaire — le script de récupération télécharge chacun, réécrit les liens relatifs pour pointer vers leurs sources GitHub, puis le build les affiche. Le build échoue volontairement si un chemin épinglé renvoie 404.", + "Un manifeste (engine-docs.manifest.json) fixe le chemin de chaque document dans le dépôt du moteur. À chaque build — y compris la reconstruction horaire — le script de récupération télécharge chacun d'eux, réécrit les liens relatifs pour les faire pointer vers leur source GitHub, puis le build les affiche. Le build échoue volontairement si un chemin épinglé renvoie une erreur 404.", ], editionNoteTitle: "À propos de l'édition française", editionNote: [ - "Les documents du moteur sont publiés en anglais et constituent le texte de référence. L'édition française ci-dessous résume le glossaire et la base fiqh, et renvoie aux documents originaux complets dans leur langue d'origine.", + "Les documents du moteur paraissent en anglais et font foi. L'édition française ci-dessous résume le glossaire et la base fiqh, et renvoie aux documents originaux dans leur intégralité et dans leur langue d'origine.", ], summariesTitle: "Deux résumés en français", summaries: [ @@ -107,16 +107,16 @@ export const docs: LocalizedPage = { slug: "glossary", title: "Résumé du glossaire", body: [ - "Le glossaire est l'unique source du vocabulaire de keel : chaque terme qu'une interface de keel peut afficher y est défini, et nulle part ailleurs — la documentation pointe vers lui plutôt que de redéfinir et risquer la dérive. Il hérite deux règles d'honnêteté de la base fiqh : les termes fiqh sont ancrés, jamais inventés — leur définition est une citation littérale de la base fiqh, avec une ligne de source nommant le document et la section exacte — et là où la base ne statue pas sur un terme (comme le gharar), le glossaire le dit explicitement au lieu de combler le vide d'une paraphrase ressemblant à un avis juridique.", - "Les paramètres des règles n'y sont pas définis : ce que signifie entry_lookback dans turtle_breakout vit dans la classe qui le définit, affiché par introspection — un second tableau ici dériverait dès qu'une classe changerait.", + "Le glossaire est l'unique source du vocabulaire de keel : chaque terme qu'un écran de keel peut afficher y est défini, et nulle part ailleurs — la documentation y renvoie plutôt que de redéfinir et de risquer l'écart. Il hérite de deux règles d'honnêteté de la base fiqh : les termes du fiqh y sont ancrés, jamais inventés — leur définition est une citation littérale de la base fiqh, accompagnée d'une ligne de source nommant le document et la section exacte — et là où la base ne tranche pas sur un terme (comme le gharar), le glossaire le dit explicitement, au lieu de combler le vide par une paraphrase qui aurait des airs d'avis juridique.", + "Les paramètres des règles n'y sont pas définis : ce que signifie entry_lookback dans turtle_breakout réside dans la classe qui le définit et s'affiche par introspection — un second tableau, ici, se désynchroniserait dès qu'une classe changerait.", ], }, { slug: "fiqh-basis", title: "Résumé de la base fiqh", body: [ - "La base fiqh est écrite pour une développeuse ou un développeur musulman qui décide de confier de l'argent à keel. Elle énonce, règle par règle, le raisonnement Shariah encodé dans le dépôt, et où vit la source de chaque règle — pour que la base soit auditable par qui ne sait pas déjà où chercher. C'est de l'érudition par référence : chaque règle porte une citation vers une source du dépôt, et le code d'application porte les mêmes citations dans ses commentaires.", - "Ce qu'elle n'est pas : une fatwa, ni la prétention que keel puisse en produire. Aucun savant n'a revu ce document ; l'éventualité d'une telle revue est une question délibérément ouverte (#289), et rien ici ne doit être lu comme si elle avait eu lieu. Quand une source se tait sur un point, on écrit « non statué » — le vide n'est jamais comblé par une formulation qui ressemblerait à un avis.", + "La base fiqh est écrite pour une développeuse ou un développeur musulman qui envisage de confier de l'argent à keel. Elle expose, règle par règle, le raisonnement Shariah encodé dans le dépôt et l'endroit où se trouve la source de chaque règle — pour que l'ensemble soit vérifiable même par qui ne sait pas déjà où chercher. Le savoir y est cité, jamais reformulé : chaque règle porte un renvoi vers une source du dépôt, et le code d'application porte les mêmes renvois dans ses commentaires.", + "Ce qu'elle n'est pas : une fatwa, ni la prétention que keel puisse en produire. Aucun savant n'a examiné ce document ; l'éventualité d'un tel examen est une question délibérément ouverte (#289), et rien ici ne doit être lu comme s'il avait eu lieu. Quand une source se tait sur un point, on écrit « non tranché » — le vide n'est jamais comblé par une formule qui ressemblerait à un avis.", ], }, ], diff --git a/src/i18n/pages/features.ts b/src/i18n/pages/features.ts index 8f6acf6..3ae6938 100644 --- a/src/i18n/pages/features.ts +++ b/src/i18n/pages/features.ts @@ -160,63 +160,63 @@ export const features: LocalizedPage = { translatedFromRev: "2026-08-20.2", title: "Fonctionnalités du moteur de conformité — keel", description: - "Filtrage par attestation à échec fermé, dix-huit rails incontournables, portes de promotion avec contrôle de surapprentissage, mesure honnête contre DCA — chaque fonctionnalité renvoie à sa source dans le code.", + "Un filtrage attesté qui bloque par défaut, dix-huit garde-fous incontournables, des verrous de promotion avec contrôle de surapprentissage, une mesure honnête face au DCA — chaque fonctionnalité renvoie à sa source dans le code.", intro: - "Cette page ne décrit que ce que le dépôt du moteur peut montrer. Chaque section renvoie à la source qui le prouve — si une affirmation s'écarte un jour du code, le lien est là pour nous prendre la main.", + "Cette page ne décrit que ce que le dépôt du moteur peut montrer. Chaque section renvoie à la source qui l'atteste : si une affirmation s'écartait un jour du code, c'est par ce lien que vous nous prendriez en défaut.", verifyNote: "Vérifier dans le dépôt", features: [ { - title: "Filtrage d'actifs par attestation — échec fermé", - body: "L'admission sur la liste autorisée est scindée selon ce qui est connaissable. Les faits de marché sont calculés. Les classifications Shariah — le cœur du token est-il un secteur interdit (§28.4), est-ce un 'ayn adossé à un actif ou une créance dayn (§65.5/§67.2), verse-t-il un rendement assimilable au riba — sont attestées, jamais déduites, via keel assets attest. Une attestation absente est un rejet, pas une acceptation par défaut.", + title: "Filtrage des actifs par attestation — blocage par défaut", + body: "L'admission dans la liste blanche est découpée selon ce qu'il est possible de savoir. Les faits de marché se calculent. Les classifications Shariah — l'activité principale du token relève-t-elle d'un secteur interdit (§28.4), s'agit-il d'un 'ayn adossé à un actif ou d'une créance dayn (§65.5/§67.2), le token verse-t-il un rendement assimilable au riba — sont attestées, jamais déduites, au moyen de keel assets attest. Une attestation manquante vaut refus, pas acceptation par défaut.", verify: { label: "compliance/screen.py", href: "https://github.com/CodeGateSoftware/keel/blob/main/keel/compliance/screen.py" }, }, { - title: "Les rails — dix-huit contrôles qu'aucun ordre ne saute", - body: "Des gardes déterministes que rien ne peut contourner, pas même le mode autonomie :", + title: "Les garde-fous (rails) — dix-huit contrôles qu'aucun ordre ne contourne", + body: "Des contrôles déterministes que rien ne peut désactiver, pas même le mode autonome :", points: [ - "La liste autorisée halal, les plafonds de dépense par ordre et par jour, les plafonds d'exposition et de concentration", - "Dimensionnement sensible à la corrélation, plancher de mouvement minimal, pas de martingale ni d'élargissement de stop", - "Disjoncteurs de drawdown total et hebdomadaire, disjoncteur de pertes consécutives / d'érosion d'edge", - "Contrôles de fraîcheur des données et d'équilibre des cotations", - "Rail 14 — attestations d'abonnement/retrait de la plateforme : les BUY réels sont refusés tant que l'opérateur n'a pas attesté", - "Rail 17 — qabd §65.4 : la capacité de retrait est attestée et appliquée, car un actif qu'on ne peut pas retirer n'a peut-être jamais été possédé valablement", - "Une porte d'entrée à spread maximal qui refuse les BUY réels à 50 points de base ou plus, à échec fermé sur un carnet illisible", - "Un veto de rail se nomme lui-même et nomme la commande qui le lève", + "La liste blanche halal, les plafonds de dépense par ordre et par jour, les plafonds d'exposition et de concentration", + "Un dimensionnement qui tient compte des corrélations, un seuil de mouvement minimal, l'interdiction de la martingale et de l'élargissement des stops", + "Des disjoncteurs de perte maximale (drawdown) totale et hebdomadaire, un disjoncteur de pertes consécutives et d'érosion de l'avantage statistique (edge)", + "Des contrôles de fraîcheur des flux de données et de cohérence des cotations", + "Garde-fou 14 — attestations d'abonnement et de retrait sur la plateforme : tout achat réel est refusé tant que l'opérateur n'a pas attesté", + "Garde-fou 17 — qabd §65.4 : la capacité de retrait est attestée puis appliquée, au motif qu'un actif impossible à retirer n'a peut-être jamais été valablement possédé", + "Un plafond d'écart (spread) à l'entrée, qui refuse tout achat réel à partir de 50 points de base et bloque d'office si le carnet est illisible", + "Tout veto d'un garde-fou se nomme et indique la commande qui le lève", ], verify: { label: "execution/guards.py", href: "https://github.com/CodeGateSoftware/keel/blob/main/keel/execution/guards.py" }, }, { - title: "Portes de stratégie — candidate → papier → réel", - body: "Une règle doit franchir trois étapes avant de toucher de l'argent réel. La promotion passe une porte en deux volets : planchers de performance et contrôle de surapprentissage (PBO/CSCV). Le plancher de 100 transactions peut être atteint par le backtest de la règle ou par le pool des mêmes paramètres sur d'autres produits en papier — à condition qu'au moins cinq produits contribuent chacun dix transactions, car un pool d'échantillons corrélées surestime sa puissance.", + title: "Verrous de stratégie — candidate → papier → réel", + body: "Une règle doit franchir trois étapes avant de toucher de l'argent réel. La promotion passe par un verrou en deux volets : des seuils de performance et un contrôle de surapprentissage (PBO/CSCV). Le seuil de 100 transactions peut être atteint par le backtest de la règle, ou en mutualisant le même jeu de paramètres sur d'autres produits en papier — à condition qu'au moins cinq produits y contribuent pour dix transactions chacun, car un ensemble d'échantillons corrélés surestime sa propre puissance.", verify: { label: "agent.py — RULE_REGISTRY", href: "https://github.com/CodeGateSoftware/keel/blob/main/keel/agent.py" }, }, { - title: "Mesure honnête, contre DCA", - body: "keel simulate rejoue les règles réelles sur l'historique récupéré, compare au repère DCA, et écrit un rapport GO-LIVE / TRAIN-MORE nommant chaque porte et ses chiffres. Le backtesteur tarife un glissement par produit à l'échelle de sa liquidité réelle (5–50 pb), pour que les résultats ne puissent pas être flatteurs sur des carnets fins. Sur les règles par défaut, il vous dira très probablement TRAIN MORE — c'est le moteur qui travaille, pas une panne.", + title: "Mesure honnête, face au DCA", + body: "keel simulate rejoue les vraies règles sur l'historique récupéré, les compare à la référence DCA et rédige un rapport GO-LIVE / TRAIN-MORE qui nomme chaque verrou et ses chiffres. Le backtesteur applique à chaque produit un glissement calibré sur sa liquidité réelle (5 à 50 points de base), afin qu'aucun résultat ne puisse être flatté par un carnet d'ordres peu liquide. Sur les règles par défaut, il vous répondra très probablement TRAIN MORE : c'est le moteur qui fonctionne, pas une panne.", verify: { label: "le registre des expériences", href: "https://github.com/CodeGateSoftware/keel/tree/main/docs/experiments" }, }, { title: "Trois profils de déploiement qui ne partagent rien", - body: "Papier quotidien, réel, et un profil horaire de collecte de preuves (paper-hourly) — chacun avec sa base de données et sa configuration. Le profil horaire existe parce que l'horloge quotidienne mesure 2,15 signaux par actif-année (une revue à 100 transactions dans 31 à 84 ans), quand les mêmes règles sur bougies ONE_HOUR en déclenchent 49,4 — environ 940 signaux d'entrée par an en pool, rapprochant la revue de preuves à des semaines au lieu de décennies. Lui aussi est mesuré net-négatif : il existe pour collecter des preuves admissibles, pas du profit.", + body: "Papier quotidien, réel, et un profil horaire de collecte de preuves (paper-hourly) — chacun avec sa propre base de données et sa propre configuration. Le profil horaire existe parce que l'horloge quotidienne ne mesure que 2,15 signaux par actif et par an : à ce rythme, il faudrait de 31 à 84 ans pour réunir les 100 transactions d'une revue. Les mêmes règles sur des bougies ONE_HOUR en déclenchent 49,4 — environ 940 signaux d'entrée par an une fois mutualisés — ce qui ramène cette revue à quelques semaines au lieu de quelques décennies. Lui aussi est mesuré perdant : il existe pour collecter des preuves recevables, pas du profit.", verify: { label: "le runbook opérateur", href: "https://github.com/CodeGateSoftware/keel/blob/main/docs/operator-runbook.md" }, }, { - title: "Un port courtier, pas un enfermement", - body: "Les adaptateurs implémentent un seul contrat — le port keel-broker-api — et s'enregistrent sous le point d'entrée keel.brokers. Coinbase Advanced Trade est l'adaptateur de référence ; Robinhood est livré comme plateforme optionnelle délibérément non câblée ; un adaptateur Alpaca a rejoint en v0.10.0. Une plateforme factive délibérément divergente garde le port honnête : la suite de conformité (~3 000 tests) tourne sur les deux.", + title: "Un port courtier, pas un enfermement propriétaire", + body: "Les adaptateurs mettent en œuvre un seul contrat — le port keel-broker-api — et se déclarent sous le point d'entrée keel.brokers. Coinbase Advanced Trade est l'adaptateur de référence ; Robinhood est livré comme plateforme optionnelle, délibérément non raccordée ; un adaptateur Alpaca s'y est ajouté en v0.10.0. Une plateforme factice, volontairement divergente, maintient le port honnête : la suite de conformité (~3 000 tests) s'exécute sur les deux.", verify: { label: "packages/", href: "https://github.com/CodeGateSoftware/keel/tree/main/packages" }, }, { - title: "Confirmation par défaut ; l'autonomie change qui on interroge", - body: "keel prévisualise chaque ordre et demande au terminal ; sans opérateur, il décline. keel autonomy on change qui on interroge, jamais ce qui est permis. Pour arrêter de trader : keel kill — l'interrupteur échoue fermé.", - verify: { label: "le README, « How keel works »", href: "https://github.com/CodeGateSoftware/keel#how-keel-works" }, + title: "Confirmation par défaut ; l'autonomie change l'interlocuteur, pas la règle", + body: "keel prévisualise chaque ordre et demande confirmation dans le terminal ; sans opérateur, il refuse. keel autonomy on change qui l'on interroge, jamais ce qui est permis. Pour tout arrêter : keel kill — le coupe-circuit se ferme en cas de défaillance.", + verify: { label: "le README, « How keel works »", href: "https://github.com/CodeGateSoftware/keel#how-keel-works" }, }, ], inert: { title: "keel est livré inerte", body: [ - "Rien ne trade tant que vous n'avez pas promu une règle, attesté l'abonnement à la plateforme, alimenté le compte et — en mode confirmation — tapé y. Spot long uniquement : pas de levier, pas de vente à découvert, pas de produits dérivés, et le dimensionnement utilise du cash réel, donc pas de riba.", - "Les obligations au niveau du compte qu'aucun rail ne voit (désactiver les récompenses USDC sur les soldes oisifs, principalement) restent à vérifier par l'opérateur — le runbook opérateur les liste.", - "Et le profil papier est là où toute règle commence — gratuit, exécutions simulées, rien en jeu, sans compte courtier financé ni identifiants (une clé de données de marché gratuite en lecture seule suffit). Ce n'est pas une démo : les trades papier du même jeu de paramètres comptent dans le plancher de la porte de promotion — la preuve papier est la première étape du parcours.", + "Rien ne se négocie tant que vous n'avez pas promu une règle, attesté l'abonnement à la plateforme, approvisionné le compte et — en mode confirmation — tapé y. Uniquement du comptant à l'achat : pas de levier, pas de vente à découvert, pas de produits dérivés, et le dimensionnement se fait sur du cash réel, donc sans riba.", + "Les obligations au niveau du compte qu'aucun garde-fou ne peut voir — désactiver la rémunération USDC des soldes dormants, principalement — restent à la charge de l'opérateur ; le runbook opérateur les recense.", + "Et c'est dans le profil papier que toute règle commence : gratuit, exécutions simulées, rien en jeu, sans compte approvisionné ni identifiants de trading (une clé de données de marché gratuite, en lecture seule, suffit). Ce n'est pas une démonstration : les transactions papier d'un même jeu de paramètres comptent dans le minimum exigé par le verrou de promotion — la preuve papier est la première étape du parcours.", ], }, }, diff --git a/src/i18n/pages/home.ts b/src/i18n/pages/home.ts index e81ae7b..5b4e7d2 100644 --- a/src/i18n/pages/home.ts +++ b/src/i18n/pages/home.ts @@ -161,58 +161,58 @@ export const home: LocalizedPage = { fr: { rev: "2026-08-20.3", translatedFromRev: "2026-08-20.3", - title: "Keel : le moteur open-source de conformité Shariah pour le crypto", + title: "Keel : le moteur open-source de conformité Shariah pour les cryptomonnaies", description: - "keel est un moteur open-source qui applique la conformité Shariah au trading de crypto en spot : filtrage par attestation à échec fermé, rails incontournables, mesure honnête. Pas un moteur de fatwas.", + "Le moteur open-source qui applique la conformité Shariah au trading de crypto au comptant : un filtrage attesté qui bloque par défaut, des garde-fous qu'aucun ordre ne contourne. Pas un moteur de fatwas.", hero: { eyebrow: "Open source · Apache-2.0 · par CodeGate Software", - heading: "Une conformité Shariah que vous pouvez auditer, pas seulement croire", - sub: "keel est un moteur open-source pour le trading de crypto en spot. Avant tout ordre, il passe par des rails de sécurité qu'aucun code ne peut contourner et un filtre d'actifs qui refuse tout ce qui n'est pas attesté. Tout ce qu'il applique est écrit — règle par règle, avec les sources — pour que vous puissiez le vérifier vous-même.", + heading: "Une conformité Shariah que vous pouvez auditer, pas seulement croire sur parole", + sub: "keel est un moteur open-source pour le trading de crypto au comptant (spot). Avant qu'un ordre parte, il traverse des garde-fous qu'aucun code ne peut désactiver et un filtre d'actifs qui refuse tout ce qui n'est pas attesté. Tout ce qu'il applique est écrit — règle par règle, sources à l'appui — pour que vous puissiez le vérifier vous-même.", }, honest: { - title: "Le résultat honnête, dit d'abord", + title: "Le résultat honnête, annoncé d'emblée", body: [ - "Aucune famille de règles livrée n'est nette-positive aux frais preneur réellement payés sur Coinbase (~1,2 % par jambe) — 0 sur 90 configurations dans une matrice de mesure, 0 sur 82 dans une autre. Nous avons contre-vérifié une note de modélisation stochastique — redérivée sur les chiffres réels de keel — et elle a précisé le pourquoi : les frais preneur sont tout le résultat. À l'intérieur de l'allocation mensuelle sans frais de la place, les règles reconstruites se tiennent indissociablement au point mort (taux de réussite de 14,9 % contre un seuil de 14,88 %) ; un pas au-dehors, le seuil saute à 29 % et les mêmes règles deviennent nettement négatives. Le rail d'allocation n'est pas un plafond budgétaire — c'est la frontière de rentabilité.", - "Le but de ce projet est la machinerie d'application et la mesure honnête de ce qui la traverse — pas une promesse de profit. Chaque résultat est comparé à un repère d'achat périodique simple (DCA), et les règles de référence ne le battent pas après frais. Nous préférons que vous le sachiez dès la page d'accueil plutôt que de le découvrir vous-même. Et nous travaillons dur pour améliorer les résultats des algorithmes et des stratégies — nous vous tiendrons informés de nos progrès.", + "Aucune famille de règles livrée ne dégage un résultat net positif aux frais de preneur (taker) réellement payés sur Coinbase (~1,2 % par sens) — 0 configuration sur 90 dans une matrice de mesure, 0 sur 82 dans une autre. Nous avons recoupé une note de modélisation stochastique — en refaisant ses calculs sur les chiffres réels de keel — et elle a précisé le pourquoi : les frais de preneur font tout le résultat. Dans le quota mensuel sans frais offert par la plateforme, les règles reconstruites se situent au point mort, à l'indiscernable près (14,9 % de trades gagnants pour un seuil d'équilibre de 14,88 %) ; un pas au-delà, ce seuil bondit à 29 % et les mêmes règles deviennent nettement perdantes. Le garde-fou de quota n'est pas un plafond budgétaire : c'est la frontière de la rentabilité.", + "Ce projet a pour objet la machinerie d'application, et la mesure honnête de ce qui la traverse — pas une promesse de gain. Chaque résultat est comparé à une référence simple, l'achat périodique (DCA), et les règles de référence ne la battent pas une fois les frais déduits. Nous préférons que vous l'appreniez dès la page d'accueil plutôt que de le découvrir par vous-même. Nous nous employons à améliorer les résultats des algorithmes et des stratégies, et nous rendrons compte de nos progrès.", ], experimentLabel: "Lire le compte rendu de l'expérience", announcementLabel: "Lire l'annonce", }, cards: [ { - title: "Un filtrage qui échoue fermé", - body: "Les faits de marché sont calculés ; les classifications Shariah sont attestées par un humain — avec une source et un nom — jamais déduites des prix. Un actif sans attestation est rejeté, jamais accepté par défaut.", + title: "Un filtrage qui bloque par défaut", + body: "Les faits de marché se calculent ; les classifications Shariah, elles, sont attestées par un humain — avec une source et un nom — jamais déduites des cours. Un actif sans attestation est rejeté, pas admis par défaut.", }, { - title: "Dix-huit rails qu'aucun ordre ne saute", - body: "Plafonds de dépense, disjoncteurs de drawdown, limites d'exposition, pas de martingale, contrôles de fraîcheur des données, un interrupteur d'arrêt à échec fermé — plus ceux dérivés du fiqh : l'attestation d'abonnement à la plateforme et le contrôle de possession constructive (qabd) : un actif qu'on ne peut pas retirer n'a peut-être jamais été possédé valablement.", + title: "Dix-huit garde-fous qu'aucun ordre ne contourne", + body: "Plafonds de dépense, disjoncteurs de perte maximale (drawdown), limites d'exposition, interdiction de la martingale, contrôles de fraîcheur des données, un coupe-circuit qui se ferme en cas de défaillance — auxquels s'ajoutent ceux qui découlent du fiqh : l'attestation d'abonnement à la plateforme et le contrôle de prise de possession (qabd), au motif qu'un actif impossible à retirer n'a peut-être jamais été valablement possédé.", }, { - title: "Des portes qui refusent de flatter", - body: "Une règle parcourt candidate → papier → réel. La promotion franchit des planchers de performance et un contrôle de surapprentissage (PBO/CSCV) — une règle brillante sur un seul jeu de paramètres en échantillon est précisément ce que la seconde porte existe pour soupçonner.", + title: "Des verrous qui ne flattent personne", + body: "Une règle passe par trois états : candidate, papier, réel. Pour être promue, elle doit franchir des seuils de performance et un contrôle de surapprentissage (PBO/CSCV) — car une règle qui brille sur un seul jeu de paramètres, à l'intérieur de l'échantillon, est précisément ce dont le second verrou est là pour se méfier.", }, ], fatwa: { - quote: "keel n'est pas un moteur de fatwas. C'est un moteur d'application d'une règle que vous fournissez.", + quote: "keel n'est pas un moteur de fatwas : c'est un moteur qui applique une règle que vous lui fournissez.", body: [ - "keel ne déduit jamais une classification Shariah des données de marché. Vous l'enregistrez — avec une source et un nom attribué — et keel l'applique déterministement. La règle vit dans votre attestation, pas dans le code : deux opérateurs suivant des écoles différentes obtiennent des réponses différentes du même code, par conception.", - "Aucune revue savante de la base fiqh de keel n'a eu lieu. La base est la lecture sourcée d'un opérateur, publiée comme document précisément pour être auditée et contestée — et chaque opérateur est responsable de ses propres attestations.", + "keel ne déduit jamais une classification Shariah des données de marché. C'est vous qui l'enregistrez — avec une source et un nom — et keel l'applique de façon déterministe. La règle réside dans votre attestation, pas dans le code : deux opérateurs qui suivent des écoles différentes obtiennent, du même code, des réponses différentes. C'est voulu.", + "La base fiqh de keel n'a fait l'objet d'aucun examen par des savants. Elle est la lecture sourcée d'un seul opérateur, publiée sous forme de document précisément pour être auditée et contestée — et chaque opérateur répond de ses propres attestations.", ], - more: "Comment la conformité fonctionne, en termes simples", + more: "Comment fonctionne la conformité, en termes simples", }, review: { - title: "Revue savante : non revue — une question ouverte, par design", + title: "Examen par des savants : aucun à ce jour — une question ouverte, par conception", body: [ - "La base fiqh énonce clairement ce qu'une revue savante couvrirait et ce qu'elle signifierait ou non. Tant que personne ne parcourt ce chemin, le statut est : non revue.", + "La base fiqh dit clairement ce que couvrirait un examen par des savants, et ce qu'il signifierait ou non. Tant que personne n'a fait ce chemin, le statut reste : non examinée.", ], more: "Lire la base fiqh", }, next: { - title: "Et maintenant ?", + title: "Et maintenant ?", items: [ - { title: "Installation", body: "Essayez-le en cinq minutes, en lecture seule et côté papier. Aucun fonds ne bouge." }, - { title: "La conformité, en termes simples", body: "Ce que keel applique, ce qu'il refuse de décider, et où commence votre responsabilité." }, - { title: "Communauté", body: "Questions, idées et débats de classification se vivent sur GitHub Discussions." }, + { title: "Installation", body: "Essayez keel en cinq minutes, en lecture seule et côté papier. Aucun mouvement de fonds." }, + { title: "La conformité, en termes simples", body: "Ce que keel applique, ce qu'il refuse de trancher, et où commence votre responsabilité." }, + { title: "Communauté", body: "Les questions, les idées et les débats de classification ont lieu dans les Discussions GitHub." }, ], }, }, diff --git a/src/i18n/pages/install.ts b/src/i18n/pages/install.ts index 0bca7be..0e4f23c 100644 --- a/src/i18n/pages/install.ts +++ b/src/i18n/pages/install.ts @@ -251,11 +251,11 @@ export const install: LocalizedPage = { translatedFromRev: "2026-08-20.5", title: "Télécharger keel — macOS et Windows", description: - "Téléchargez keel pour macOS ou Windows. Version et liens viennent de GitHub Releases au build ; le parcours en cinq minutes depuis les sources est là aussi.", + "Téléchargez keel pour macOS ou Windows. Le numéro de version et les liens proviennent de GitHub Releases, récupérés au moment du build ; le parcours en cinq minutes depuis les sources figure également ici.", downloadTitle: "Télécharger keel", versionPrefix: "Dernière version", - requirements: "Nécessite Python 3.11 ou plus · téléchargé depuis GitHub Releases — jamais copié ici", - otherPlatforms: "Linux et le reste : les mêmes wheels depuis la page des versions.", + requirements: "Nécessite Python 3.11 ou plus · téléchargé depuis GitHub Releases — jamais recopié ici", + otherPlatforms: "Linux et le reste : les mêmes wheels, depuis la page des versions.", cards: [ { name: "macOS", @@ -270,64 +270,64 @@ export const install: LocalizedPage = { codeComment: "# après avoir téléchargé les wheels dans ce dossier", }, ], - thenTitle: "Puis installez les wheels", + thenTitle: "Installez ensuite les wheels", allFilesTitle: "Tous les fichiers de la version", - paperFirstTitle: "Commencez en papier — gratuit, et rien en jeu", - paperFirstBody: "Pour le premier pas prudent : le profil papier est gratuit et pédagogique — exécutions simulées, aucun ordre réel — conçu pour apprendre le flux avant toute décision en réel. Il n'exige ni compte courtier financé ni identifiants de trading ; la seule clé demandée est une clé de données de marché gratuite, en lecture seule, pour récupérer l'historique des chandeliers. Le profil réel, lui, se mérite délibérément : attestations, porte de promotion et confirmations humaines tapées se dressent sur le chemin.", + paperFirstTitle: "Commencez en papier — gratuit, et sans rien risquer", + paperFirstBody: "Pour un premier pas prudent : le profil papier est gratuit et pédagogique — exécutions simulées, aucun ordre réel — conçu pour apprendre le fonctionnement avant toute décision en réel. Il ne réclame ni compte approvisionné sur une plateforme, ni identifiants de trading ; la seule clé demandée est une clé de données de marché gratuite, en lecture seule, pour récupérer l'historique des bougies. Le profil réel, lui, se mérite délibérément : attestations, parcours de promotion et confirmations tapées à la main se dressent sur la route.", getStarted: { - title: "Nouveau ici ? Commencez par le guide Premiers pas", - body: "Un parcours pas à pas — première simulation, profil papier, console opérateur — avec des captures d'écran de chaque écran.", + title: "Nouveau ici ? Commencez par le guide Premiers pas", + body: "Un parcours pas à pas — première simulation, profil papier, console de l'opérateur — avec une capture de chaque écran.", link: "Ouvrir Premiers pas", }, fromSource: { - title: "Depuis les sources — essayez-le en cinq minutes", - lead: "Tout dans ce parcours est en lecture seule et côté papier : aucun fonds, et rien ici ne peut passer d'ordre. Il vous faut uv et une clé API Coinbase Developer Platform (CDP) gratuite en lecture seule — l'historique de chandeliers passe par le client authentifié, donc keel fetch sans clé échoue avec une AuthenticationError ; dit d'avance pour que l'étape 4 ne soit pas une surprise.", + title: "Depuis les sources — essayez keel en cinq minutes", + lead: "Tout ce parcours est en lecture seule et côté papier : aucun fonds, et rien ici ne peut passer d'ordre. Il vous faut uv et une clé d'API Coinbase Developer Platform (CDP) gratuite, en lecture seule — l'historique des bougies passe par le client authentifié, si bien que keel fetch sans clé échoue sur une AuthenticationError. Autant le dire tout de suite, pour que l'étape 4 ne surprenne personne.", requirements: ["uv (le gestionnaire de paquets Python)", "Python 3.11 ou plus (le dépôt se développe sur 3.14)", "Une clé CDP gratuite en lecture seule — données de marché uniquement"], expectTitle: "À quoi vous attendre", - expect: "keel simulate rejoue les règles réelles de façon déterministe sur l'historique récupéré, compare au repère DCA et écrit un rapport GO-LIVE / TRAIN-MORE. Sur les règles par défaut, il vous dira très probablement TRAIN MORE en nommant les portes qui échouent — c'est le moteur qui fonctionne, pas une panne ; l'honnêteté est la fonctionnalité.", - next: "Les étapes suivantes — promouvoir une règle par la porte, lancer l'agent papier, un premier ordre réel supervisé — sont dans le runbook de mise en production.", + expect: "keel simulate rejoue les vraies règles, de façon déterministe, sur l'historique récupéré, les compare à la référence DCA et rédige un rapport GO-LIVE / TRAIN-MORE. Sur les règles par défaut, il vous répondra très probablement TRAIN MORE en nommant les verrous qui bloquent : c'est le moteur qui fonctionne, pas une panne — l'honnêteté est la fonctionnalité.", + next: "Les étapes suivantes — faire franchir le verrou à une règle, lancer l'agent papier, passer un premier ordre réel sous supervision — figurent dans le runbook de mise en production.", }, fromReleaseWarning: - "N'installez jamais par nom nu. La distribution s'appelle keel-trader ; le nom keel sur PyPI appartient à un projet sans rapport, donc pip install keel récupère le paquet de quelqu'un d'autre. Un build qui affiche DIRTY ou [checkout] n'est pas une version et ne doit jamais tourner sur des fonds réels.", + "N'installez jamais le paquet par son seul nom. La distribution s'appelle keel-trader ; sur PyPI, le nom keel appartient à un projet sans rapport, si bien que pip install keel récupère le paquet de quelqu'un d'autre. Un build qui affiche DIRTY ou [checkout] n'est pas une version publiée et ne doit jamais tourner sur des fonds réels.", unsigned: { - title: "Votre ordinateur va vous avertir à propos de ce téléchargement", - lead: "Les builds macOS et Windows ne sont pas signés, donc votre système refusera la première ouverture en disant qu'il ne peut pas vérifier le développeur. Rien n'est cassé et rien n'a été détecté — votre ordinateur ne sait simplement pas qui a écrit le programme.", + title: "Votre ordinateur va vous mettre en garde au sujet de ce téléchargement", + lead: "Les builds macOS et Windows ne sont pas signés : à la première ouverture, votre système refusera de les lancer, en expliquant qu'il ne peut pas vérifier le développeur. Rien n'est cassé et rien n'a été détecté — votre ordinateur ignore simplement qui a écrit ce programme.", reason: - "La signature de code est un certificat payant, et keel n'a les moyens ni de l'un ni de l'autre : celui d'Apple coûte 99 $ par an, et Azure Trusted Signing pour Windows environ 120 $ par an — plus cher qu'Apple, et depuis 2024 il n'accorde même pas de passe-droit immédiat auprès de SmartScreen, la réputation s'acquérant au volume de téléchargements dans le temps. Il n'existe ni offre moins chère ni option gratuite pour l'open source sur l'une ou l'autre plateforme, et un certificat que nous fabriquerions nous-mêmes ne servirait à rien : macOS ne fait confiance qu'aux certificats émis par Apple.", + "Signer son code suppose un certificat payant, et keel n'a les moyens ni de l'un ni de l'autre : celui d'Apple coûte 99 $ par an, et Azure Trusted Signing, côté Windows, environ 120 $ par an — plus cher qu'Apple, et depuis 2024 il n'ouvre même plus droit à une exemption immédiate auprès de SmartScreen, la réputation se gagnant au volume de téléchargements, dans la durée. Il n'existe ni offre moins chère ni option gratuite pour l'open source sur l'une ou l'autre plateforme, et un certificat que nous fabriquerions nous-mêmes ne servirait à rien : macOS ne fait confiance qu'aux certificats délivrés par Apple.", macosTitle: "macOS", macosSteps: [ - "Ouvrez le .dmg téléchargé, puis glissez keel.app dans votre dossier Applications.", + "Ouvrez le .dmg téléchargé, puis faites glisser keel.app dans votre dossier Applications.", "Éjectez l'image disque.", - "Ouvrez Applications et double-cliquez sur keel. macOS refuse ; cliquez sur Terminé.", + "Ouvrez Applications et double-cliquez sur keel. macOS refuse : cliquez sur Terminé.", "Ouvrez Réglages Système → Confidentialité et sécurité.", - "Descendez jusqu'à la section Sécurité. Une ligne indique que keel a été bloqué, avec un bouton Ouvrir quand même à côté. Cliquez dessus.", - "Authentifiez-vous, puis cliquez encore une fois sur Ouvrir quand même dans la boîte de dialogue qui suit.", - "Vous ne le faites qu'une seule fois. Sur macOS Sequoia (15) et versions ultérieures, le clic droit puis Ouvrir ne fonctionne plus comme raccourci — Apple a supprimé ce chemin délibérément.", + "Descendez jusqu'à la section Sécurité : une ligne indique que keel a été bloqué, avec un bouton Ouvrir quand même à côté. Cliquez dessus.", + "Authentifiez-vous, puis cliquez une seconde fois sur Ouvrir quand même dans la boîte de dialogue suivante.", + "L'opération n'est à faire qu'une seule fois. Sur macOS Sequoia (15) et versions ultérieures, le clic droit puis Ouvrir ne fait plus office de raccourci : Apple a supprimé ce chemin délibérément.", ], windowsTitle: "Windows", windowsSteps: [ - "Avant d'extraire, clic droit sur le .zip téléchargé → Propriétés.", - "En bas de l'onglet Général, cochez Débloquer si la case est présente, puis OK. C'est l'étape que l'on oublie, et la sauter fait revenir l'avertissement à un lancement ultérieur.", - "Clic droit sur le .zip → Extraire tout…, vers un dossier qui vous appartient — par exemple C:\\\\Users\\\\\\\\keel. Pas Program Files : keel n'a pas besoin des droits administrateur et ne doit pas les recevoir.", + "Avant d'extraire, faites un clic droit sur le .zip téléchargé → Propriétés.", + "En bas de l'onglet Général, cochez Débloquer si la case apparaît, puis validez par OK. C'est l'étape que l'on oublie, et la sauter fait réapparaître l'avertissement à un lancement ultérieur.", + "Clic droit sur le .zip → Extraire tout…, vers un dossier qui vous appartient — par exemple C:\\Users\\\\keel. Surtout pas Program Files : keel n'a pas besoin des droits administrateur et ne doit pas les recevoir.", "Ouvrez le dossier extrait et double-cliquez sur keel.exe.", - "Si SmartScreen apparaît — « Windows a protégé votre ordinateur » — cliquez sur Informations complémentaires, puis Exécuter quand même.", + "Si SmartScreen s'affiche — « Windows a protégé votre ordinateur » — cliquez sur Informations complémentaires, puis sur Exécuter quand même.", ], verifyTitle: "Vérifiez d'abord ce que vous avez téléchargé", verifyLead: - "Nous préférons ne pas vous demander simplement de passer outre un avertissement de sécurité — keel est un programme auquel vous confierez peut-être des clés API d'exchange. Chaque version porte une preuve de l'origine de ses fichiers, qui répond à la même question qu'un certificat : ceci a-t-il été construit depuis les sources de keel, par le pipeline de publication de keel ? Un fichier SHA256SUMS.txt est également joint à chaque version.", + "Nous préférons ne pas nous contenter de vous demander de passer outre un avertissement de sécurité : keel est un programme auquel vous confierez peut-être les clés d'API d'une plateforme d'échange. Chaque version porte une preuve de l'origine de ses fichiers, qui répond à la même question qu'un certificat : ce fichier a-t-il bien été construit à partir des sources de keel, par la chaîne de publication de keel ? Un fichier SHA256SUMS.txt accompagne également chaque version.", verifyFail: - "Si l'une des deux vérifications échoue, n'ouvrez pas le fichier. Un échec signifie que ce n'est pas le fichier que nous avons construit, et aucun « Ouvrir quand même » ne rendra cela sûr.", + "Si l'une des deux vérifications échoue, n'ouvrez pas le fichier. Un échec signifie que ce n'est pas le fichier que nous avons construit, et aucun « Ouvrir quand même » n'y changera rien.", notMeaningTitle: "Ce que cela ne signifie pas", notMeaning: [ - "Cela ne signifie pas que le téléchargement est endommagé.", - "Cela ne signifie pas que votre ordinateur a trouvé un problème. Rien n'a été analysé et rien n'a été détecté.", - "Cela ne signifie pas que l'application se comporte différemment. Un build signé et un build non signé de la même version sont le même programme.", + "Cela ne veut pas dire que le téléchargement est endommagé.", + "Cela ne veut pas dire que votre ordinateur a trouvé un problème : rien n'a été analysé, rien n'a été détecté.", + "Cela ne veut pas dire que l'application se comporte autrement. Un build signé et un build non signé d'une même version sont le même programme.", ], - avoidTitle: "D'abord — vous n'avez peut-être pas à vous en occuper", + avoidTitle: "D'abord — vous n'aurez peut-être pas à vous en soucier", avoidBody: - "Le parcours en cinq minutes ci-dessous installe le même moteur sans installeur et sans avertissement, sur aucune plateforme, parce que rien n'est téléchargé en tant qu'application — pip et uv récupèrent directement les wheels publiées, et aucun système d'exploitation n'y objecte. Il faut un terminal et Python 3.11 ou plus, ce qui est précisément la friction que l'application de bureau existe pour supprimer ; mais si vous avez déjà les deux, c'est le chemin le plus court et le reste de cette note ne vous concerne pas.", - avoidLink: "Essayez-le en cinq minutes", - more: "Explication complète, et comment vérifier ce que vous avez téléchargé", + "Le parcours en cinq minutes ci-dessous installe le même moteur sans installeur et sans le moindre avertissement, quelle que soit la plateforme, parce que rien n'est téléchargé sous forme d'application : pip et uv récupèrent directement les wheels publiées, et aucun système d'exploitation n'y trouve à redire. Il faut un terminal et Python 3.11 ou plus — c'est précisément la friction que l'application de bureau doit supprimer ; mais si vous avez déjà les deux, c'est le chemin le plus court, et le reste de cette note ne vous concerne pas.", + avoidLink: "Essayez keel en cinq minutes", + more: "L'explication complète, et comment vérifier ce que vous avez téléchargé", }, }, }; diff --git a/src/i18n/pages/news.ts b/src/i18n/pages/news.ts index bbdf4de..47e3c19 100644 --- a/src/i18n/pages/news.ts +++ b/src/i18n/pages/news.ts @@ -49,12 +49,12 @@ export const news: LocalizedPage = { translatedFromRev: "2026-08-19.2", title: "Actualités keel — annonces et notes de recherche", description: - "Les annonces de keel, lues des Discussions GitHub et actualisées chaque heure. Lecture et réponses sur GitHub ; les textes restent dans leur langue d'origine.", + "Les annonces de keel, lues depuis les Discussions GitHub et actualisées toutes les heures. Lecture et réponses sur GitHub ; les textes restent dans leur langue d'origine.", intro: [ - "Le projet s'annonce sur GitHub Discussions — versions, billets de conformité, notes de recherche et résultats honnêtes. Cette page lit la catégorie Announcements et renvoie chaque élément vers GitHub, où la lecture et les réponses ont réellement lieu.", - "Le flux se rafraîchit à la reconstruction horaire. Les éléments apparaissent dans leur langue d'origine ; ce site ne les traduit pas.", + "Le projet publie ses annonces dans les Discussions GitHub : versions, billets sur la conformité, notes de recherche et résultats honnêtes. Cette page lit la catégorie Announcements et renvoie chaque élément vers GitHub, où la lecture et les réponses ont réellement lieu.", + "Le flux est actualisé à chaque reconstruction horaire. Les éléments apparaissent dans leur langue d'origine : ce site ne les traduit pas.", ], secondaryTitle: "Show and tell", - secondaryBody: "Ce que la communauté construit avec keel a sa propre catégorie — prévue comme flux secondaire ici plus tard. D'ici là, tout vit sur GitHub.", + secondaryBody: "Ce que la communauté construit avec keel a sa propre catégorie — prévue ici plus tard comme flux secondaire. D'ici là, tout se passe sur GitHub.", }, }; diff --git a/src/i18n/ui.ts b/src/i18n/ui.ts index de3f496..ca13965 100644 --- a/src/i18n/ui.ts +++ b/src/i18n/ui.ts @@ -183,7 +183,7 @@ export const ui = { news: "Actualités", community: "Communauté", compliance: "Conformité", - compare: "Comparaison", + compare: "Comparatif", about: "À propos", }, actions: { @@ -191,71 +191,72 @@ export const ui = { readDocs: "Lire la documentation", viewOnGitHub: "Voir sur GitHub", readOnGitHub: "Lire sur GitHub", - viewSource: "Voir la source sur GitHub", + viewSource: "Voir le code source sur GitHub", seeReleases: "Voir les versions sur GitHub", - discussOnGitHub: "Discuter sur GitHub", + discussOnGitHub: "En discuter sur GitHub", }, tracks: { - plainLabel: "En termes simples", + plainLabel: "En clair", operatorsLabel: "Pour les opérateurs", operatorsHint: - "Vous êtes technique ? Voici le même projet vu du siège de l'opérateur : runbooks, références CLI et code source du moteur.", + "Profil technique ? Voici le même projet vu du poste de l'opérateur : runbooks, références de la ligne de commande et code source du moteur.", }, banner: { - staleTitle: "Cette traduction est peut-être en retard sur l'original anglais", + staleTitle: "Cette traduction a peut-être pris du retard sur l'original anglais", staleBody: - "La page anglaise a changé depuis la révision de cette traduction. Pour la formulation actuelle, lisez l'original anglais.", - staleLink: "Lire la page anglaise", + "La page anglaise a changé depuis la relecture de cette traduction. Pour la formulation en vigueur, reportez-vous à l'original.", + staleLink: "Lire la page en anglais", }, marker: { translatedAgainst: (rev: string) => - `Dernière traduction depuis la révision anglaise ${rev}.`, + `Traduit d'après la révision anglaise ${rev}.`, untranslatedOriginal: "Document original — affiché en anglais", }, docs: { fetchedFrom: (repo: string, ref: string) => - `Récupéré au moment du build depuis ${repo}@${ref}. Si un document est déplacé, le build échoue — ce site n'affiche jamais de documents périmés.`, + `Récupéré au moment du build depuis ${repo}@${ref}. Si un document change de place, le build échoue : ce site n'affiche jamais de documentation périmée.`, backToDocs: "Tous les documents", - fetchedAt: (date: string) => `Dernière récupération : ${date}.`, + fetchedAt: (date: string) => `Dernière récupération : ${date}.`, originalLanguageNote: - "Les documents du moteur sont publiés en anglais. L'édition française les résume ; les originaux restent le texte de référence.", - notTranslated: "Ce document n'est pas traduit ; il est affiché en anglais dans sa forme originale.", + "Les documents du moteur paraissent en anglais. L'édition française les résume ; les originaux font foi.", + notTranslated: "Ce document n'est pas traduit : il est affiché en anglais, dans sa forme d'origine.", }, news: { - from: "Annonces des Discussions GitHub", - fetchedAt: (date: string) => `Flux actualisé le ${date} (reconstruction horaire).`, + from: "Annonces publiées dans les Discussions GitHub", + fetchedAt: (date: string) => `Flux actualisé le ${date} (reconstruction toutes les heures).`, empty: - "Aucune annonce récupérée pour l'instant. Lisez-les directement sur GitHub — le flux se remplira à la prochaine reconstruction.", + "Aucune annonce récupérée pour l'instant. Lisez-les directement sur GitHub : le flux se remplira à la prochaine reconstruction.", interactOnGitHub: - "Les textes s'affichent dans leur langue d'origine ; lecture et réponses ont lieu sur GitHub, pas ici.", - comments: (n: number) => (n === 1 ? "1 commentaire" : `${n} commentaires`), + "Les textes s'affichent dans leur langue d'origine ; la lecture et les réponses se passent sur GitHub, pas ici.", + comments: (n: number) => + n === 0 ? "Aucun commentaire" : n === 1 ? "1 commentaire" : `${n} commentaires`, secondary: "Show and tell — ce que la communauté construit avec keel", }, install: { - latest: (tag: string) => `Dernière version : ${tag}`, - unknown: "Dernière version inconnue pour l'instant — ouvrez la page des versions sur GitHub", + latest: (tag: string) => `Dernière version : ${tag}`, + unknown: "Dernière version indisponible pour l'instant — ouvrez la page des versions sur GitHub", neverMirrored: - "Les téléchargements pointent directement vers les fichiers GitHub. Ce site ne copie jamais les binaires.", - copiedAtBuild: (date: string) => `Données de version récupérées de GitHub au build, ${date}.`, + "Les téléchargements pointent directement vers les fichiers hébergés par GitHub. Ce site n'héberge aucun binaire.", + copiedAtBuild: (date: string) => `Données de version récupérées depuis GitHub au moment du build, le ${date}.`, }, footer: { disclaimerTitle: "Avertissements permanents", disclaimer: - "keel est un outil personnel — ni conseil financier, ni fatwa, ni conseil religieux. Consultez un conseiller financier qualifié et un savant compétent avant de trader. Vous êtes seul responsable de vos décisions de trading et de vos propres attestations.", + "keel est un outil personnel : ni conseil financier, ni fatwa, ni conseil religieux. Consultez un conseiller financier qualifié et un savant compétent avant de trader. Vous restez seul responsable de vos décisions de trading et de vos propres attestations.", trademark: - "Alpaca, Coinbase et Robinhood sont des marques de leurs propriétaires respectifs. keel n'a aucun lien avec elles, ni aval, ni parrainage. Les noms de plateformes n'apparaissent que pour identifier ce à quoi le code s'adresse.", + "Alpaca, Coinbase et Robinhood sont des marques déposées par leurs propriétaires respectifs. keel n'a aucun lien avec elles et ne bénéficie ni de leur aval ni de leur parrainage. Leurs noms n'apparaissent ici que pour désigner ce à quoi le code se connecte.", keelsh: - "Sans lien avec le projet Kubernetes également nommé Keel (keel.sh).", + "Sans lien avec le projet Kubernetes qui porte lui aussi le nom Keel (keel.sh).", license: - "Moteur : Apache-2.0 (CodeGateSoftware/keel). Code de ce site : MIT. Contenu du site : © CodeGate Software — la citation avec attribution est bienvenue.", - honesty: "Le résultat honnête, dit d'abord", + "Moteur : Apache-2.0 (CodeGateSoftware/keel). Code de ce site : MIT. Contenu du site : © CodeGate Software — la citation avec attribution est bienvenue.", + honesty: "Le résultat honnête, annoncé d'emblée", }, localeSwitcher: { label: "Langue", }, notFound: { title: "Page introuvable", - body: "Cette page n'existe pas. Le site existe en plusieurs éditions :", + body: "Cette page n'existe pas. Le site est publié dans les éditions suivantes :", }, }, } as const;