Skip to content

i18n(fr): revise every page into modern journalistic French - #40

Merged
eaitbrahim merged 1 commit into
mainfrom
i18n/fr-journalistic-revision
Aug 20, 2026
Merged

i18n(fr): revise every page into modern journalistic French#40
eaitbrahim merged 1 commit into
mainfrom
i18n/fr-journalistic-revision

Conversation

@eaitbrahim

Copy link
Copy Markdown
Contributor

Closes #35.

The French edition shipped on every site-map page, but a read-through against
the English source turned up real defects: invented words, agreement errors,
calques that do not parse as French, raw anglicisms, and not one non-breaking
space in the whole edition.

This is a language pass, not a rewrite. Meaning, structure, numbers, links,
and the FR-9 honest framing are unchanged against the English source; the diff
touches French strings only.

Invented or broken words

Where Was Now
about.ts «Apache-2.0 ne peut pas être dégratuité» «La licence Apache-2.0 est irrévocable»
features.ts «Une plateforme factive» «Une plateforme factice»
home.ts «keel l'applique déterministement» «de façon déterministe»
home / compare / compliance / manifest «n'est nette-positive» «ne dégage un résultat net positif»

Grammar, including two inverted negations

  • features.ts — «un pool d'échantillons corrélées» → corrélés.
  • compare.ts — «keel vient de lancer» → «keel vient tout juste d'être lancé».
  • about.ts — «ou faire lire par quelqu'un» → «ou la faire lire à quelqu'un»; «publier, voter et poser des questions vivent sur GitHub» rebuilt.
  • compliance.ts — «Ce n'est pas une fatwa et il ne peut pas en produire» (pronoun flip); «Purification et la forme spot uniquement» (heading articles).
  • install.ts — «installe le même moteur … sur aucune plateforme» said the opposite of EN's "on any platform". Now «quelle que soit la plateforme».
  • install.ts — «keel n'a les moyens ni de l'un ni de l'autre» had no antecedent, because the French had dropped the two platforms the English names. Rebuilt cataphorically.

Mistranslations

  • features.ts — «le lien est là pour nous prendre la main». EN is "the link is how you catch us" — the French said the opposite of holding us to account. Now «c'est par ce lien que vous nous prendriez en défaut».
  • features.ts — thin order books as «carnets fins» → «carnet d'ordres peu liquide».
  • about.ts — «l'épine structurelle d'un navire» → «la colonne vertébrale»; «trade sous le ticker KEEL» → «est cotée sous le symbole KEEL»; «rien ici sur quoi vous revendre de la performance» → «aucune performance à vous vendre».
  • home.ts — «~1,2 % par jambe» (calque of "per leg") → «par sens».
  • home / features / compare — fail-closed as «à échec fermé» / «qui échoue fermé» → «qui bloque par défaut» / «se ferme en cas de défaillance».
  • home / features — «rails qu'aucun ordre ne saute» → «que nul ordre ne contourne».
  • compare.ts — «Alpaca est câblé» → «intégré»; «son flux TradingView d'abord» → «sa logique centrée sur TradingView»; «horloges conscientes des sessions» → «qui tiennent compte des séances»; «communautés ordres de grandeur plus grandes» → «sans commune mesure»; «Intégrée nulle part» → «Non intégrée».
  • community.ts — «il lit et il lie» ("lier" is to tie) → «il lit et il renvoie».
  • community / home — «les débats se vivent sur GitHub» → «ont lieu».
  • compliance.ts — «questions de fait-plus-érudition sur le monde» (untranslated compound); «soldes oisifs» → «soldes dormants»; «Sources premières» → «Sources primaires».
  • docs.ts — «un second tableau dériverait» read as "would be derived"; EN means "would drift" → «se désynchroniserait».
  • news.ts — «lues des Discussions GitHub» → «lues depuis»; «Le projet s'annonce» → «publie ses annonces».
  • install.ts — «N'installez jamais par nom nu» → «par son seul nom»; «passe-droit SmartScreen» → «exemption».
  • ui / home — «Le résultat honnête, dit d'abord» → «annoncé d'emblée»; «Revue savante : non revue» → «Examen par des savants : aucun à ce jour».

One vocabulary across all pages

EN FR
fail closed bloquer par défaut / se fermer en cas de défaillance
rails garde-fous (glossed «garde-fous (rails)» on first use)
gate verrou
allowlist liste blanche
venue / exchange plateforme
benchmark (DCA) référence
taker fee frais de preneur (taker)
drawdown perte maximale (drawdown)
slippage glissement
overfitting surapprentissage
constructive possession (qabd) prise de possession (qabd)
scholarly review examen par des savants

Retired: «par design» (the site already used «par conception» elsewhere), «le
crypto», and raw pool / edge / exchanges / long-only / prop.

Typography

The edition had zero non-breaking spaces. U+00A0 now sits before : ; ? ! % $, inside « », and in figures (3 000, 899 $, ~53 k) — without it a
browser can leave a colon or a closing guillemet alone at the start of a line.
Dates take the French form: le 20 août 2026, not 2026-08-20.

Applied by a scanner that rewrites string-literal contents only, so the
ternaries and URLs in the French regions are untouched.

Two real bugs, not just wording

  • ui.tsnews.comments rendered «0 commentaires». In French zéro takes the
    singular; the empty case now reads «Aucun commentaire».
  • install.ts — the Windows path was over-escaped to C:\\Users\\<vous>\\keel
    and rendered with doubled backslashes. The English is C:\Users\<you>\keel.

Also covered

  • engine-docs.manifest.json — the fr section labels and doc blurbs that feed data/docs-meta.json.
  • inline locale === "fr" labels in src/components/** (Header.astro, ForOperators.astro, DocsIndexPage.astro).

Verification

  • npm run check0 errors.
  • npm run build41 pages built, complete.
  • translatedFromRev values untouched — the English did not move.

Note for the Arabic branch

main moved two merges past the commit i18n/ar-msa-revision was cut from
(#32, #33): the stochastic-modelling paragraph on the home page and the
paper-first sections on install/features. The French for those is revised here;
the Arabic for them is not yet.

🤖 Generated with Claude Code

https://claude.ai/code/session_013cpLPLRD6Mvv4KkyVDbnZn

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\\<vous>\\keel —
  over-escaped against the English source, now C:\Users\<vous>\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) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013cpLPLRD6Mvv4KkyVDbnZn
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
70.4% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

@eaitbrahim
eaitbrahim merged commit 16e88f6 into main Aug 20, 2026
1 of 2 checks passed
eaitbrahim added a commit that referenced this pull request Aug 20, 2026
PR #40 merged the French revision first, so all four conflicts landed in the
French blocks: the new French prose against the three cross-cutting fixes this
branch had made there.

Every conflict resolves in favour of the new French. The three consistency
fixes are then re-applied on top, because #40 reintroduced them:

- home.ts — the French <title> capitalised the brand again ("Keel : le moteur
  …"). Lowercased, keeping the French no-break space before the colon.
- home.ts — the PBO/CSCV expansion was dropped. Restored on the new wording.
- install.ts, features.ts — "TRAIN MORE" for the CLI literal, which is
  TRAIN-MORE.

Revisions reconciled so no page shows a spurious stale banner: home fr and
community fr now carry translatedFromRev equal to their English rev. Verified
across all nine pages — every ar and fr translatedFromRev matches its en rev.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EURzVpngXDN1dk9c5FMFhW
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

i18n(fr): revise every page's French into modern journalistic French

1 participant