Skip to content

Add French translation sync workflow (sync-translations-fr.yml)#573

Merged
mmcky merged 2 commits into
mainfrom
add-sync-translations-fr
Jul 15, 2026
Merged

Add French translation sync workflow (sync-translations-fr.yml)#573
mmcky merged 2 commits into
mainfrom
add-sync-translations-fr

Conversation

@mmcky

@mmcky mmcky commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Wires automated French translation sync for the new QuantEcon/lecture-python-programming.fr edition — step 3 of the fr rollout tracked in QuantEcon/project-translation#3.

The workflow is a clone of sync-translations-fa.yml with three substitutions: target-repo: QuantEcon/lecture-python-programming.fr, target-language: fr, and target-language-appropriate naming. On each merged PR touching lectures/**/*.md or lectures/_toc.yml it opens a translation PR in the target repo; commenting \translate-resync on a merged PR re-triggers it.

Pin: @v0.16.0, unlike its siblings

This PR originally pinned @v0.15.0, matching fa and zh-cn. It now pins @v0.16.0, released 2026-07-15 (bumped in 07b2b6b), whose default model is claude-sonnet-5 rather than claude-sonnet-4-6.

That divergence is deliberate. French is the edition we've looked at on Sonnet 5; fa and zh-cn haven't been, and silently changing the model for two live editions isn't this PR's business. The estate therefore runs two action versions until that's decided on purpose — tracked in QuantEcon/project-translation#5.

Merge order

QuantEcon/lecture-python-programming.fr#1 (the seed) must merge first. It adds the 26 bulk-translated lectures (step 2 of the rollout). Merging this before then would fire syncs into a content-less repo.

The first sync after merge also live-verifies that QUANTECON_SERVICES_PAT can push to the new .fr repo — the one gate that can't be checked ahead of time.

Two caveats about what this turns on

French sync will not apply typography. v0.16.0 ships a deterministic pass for the non-breaking space French needs before ; : ! ?, but it's wired into the CLI seed path only, not sync — verified: applyTypography appears zero times in the action bundle. The seeded corpus is typography-correct; synced sections won't be, so it drifts toward mixed until QuantEcon/action-translation#81 is settled. scripts/typography/apply.mjs is the stopgap.

Severity, honestly: the defect is invisible. Both Sonnet 5 and Opus 4.8 already write Bonjour ! — they just emit an ordinary space where French wants U+00A0, which renders identically and only matters when a line wraps. Synced French will read correctly.

Sonnet 5 has not been measured against Sonnet 4.6 on this corpus. The v0.16.0 default change was justified by a general capability claim, not a measurement on MyST lecture translation — tracked in QuantEcon/action-translation#82. Model upgrades are very likely the right direction; we just don't have the evidence yet, and French will be the first edition on Sonnet 5. If 4.6 turns out better, the fix is a constant and a pin, not a re-seed.

🤖 Generated with Claude Code

Clone of sync-translations-fa.yml with target-repo
QuantEcon/lecture-python-programming.fr, target-language fr, pinned at
action-translation@v0.15.0. Do not merge until the fr bulk bootstrap
(translate init) has landed in the target repo.

Part of the fr rollout tracked in QuantEcon/project-translation#3

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jul 14, 2026

Copy link
Copy Markdown

@github-actions github-actions Bot temporarily deployed to pull request July 14, 2026 10:10 Inactive
@mmcky mmcky marked this pull request as ready for review July 15, 2026 00:50
Copilot AI review requested due to automatic review settings July 15, 2026 00:50
This PR predated the v0.16.0 release, so it pinned v0.15.0 (default model
claude-sonnet-4-6). v0.16.0 defaults to claude-sonnet-5, which is the point of
pointing French at it.

Diverges deliberately from the fa and zh-cn sync workflows, which stay on
v0.15.0/Sonnet 4.6: French is the edition evaluated on Sonnet 5, and silently
changing the model for two established editions is not this PR's business.
@mmcky

mmcky commented Jul 15, 2026

Copy link
Copy Markdown
Contributor Author

Bumped the pin to @v0.16.0 in 07b2b6b.

This PR predated today's v0.16.0 release, so it pinned @v0.15.0 — whose default model is claude-sonnet-4-6. v0.16.0 defaults to claude-sonnet-5, which is the reason to point French at it.

Deliberate divergence from the siblings

sync-translations-fa.yml and sync-translations-zh-cn.yml stay on @v0.15.0 / Sonnet 4.6. French is the edition we evaluated on Sonnet 5; those two have not been, and silently changing the model for two established editions is not this PR's business. The repo therefore runs two action versions for a while — worth knowing when debugging, and worth revisiting deliberately.

Merge order

QuantEcon/lecture-python-programming.fr#1 (the seed) should merge first — it adds the 26 translated lectures. If sync goes live against an empty target, the next merged PR here syncs into a repo with nothing to update.

Two things to know about what this turns on

French sync will not apply typography. v0.16.0 ships a deterministic pass for the non-breaking space French needs before ; : ! ?, but it is wired into the CLI seed path only, not sync (verified: applyTypography appears zero times in the action bundle). The seeded corpus is typography-correct; synced sections will not be, so it drifts toward mixed until QuantEcon/action-translation#81 is settled. scripts/typography/apply.mjs is the stopgap.

Severity, honestly: the defect is invisible. Both Sonnet 5 and Opus 4.8 already write Bonjour ! — they just emit an ordinary space where French wants U+00A0, which renders identically and only matters when a line wraps. Synced French will read correctly.

Sonnet 5 has not been measured against Sonnet 4.6 on this corpus. The v0.16.0 upgrade was justified by a general capability claim, not a measurement on MyST lecture translation — tracked in QuantEcon/action-translation#82. Model upgrades are very likely the right direction; we just do not have the evidence yet, and French will be the first edition on Sonnet 5. If it turns out 4.6 was better, the fix is a constant and a pin, not a re-seed.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new GitHub Actions workflow to automatically sync changed lecture content into the French translation repository (QuantEcon/lecture-python-programming.fr) as part of the multi-language rollout.

Changes:

  • Introduces sync-translations-fr.yml to run on merged PRs touching lecture sources.
  • Adds an issue_comment trigger intended to allow manual re-sync via \translate-resync.
  • Configures the translation sync action to target the French repo/language.

Comment thread .github/workflows/sync-translations-fr.yml
Comment thread .github/workflows/sync-translations-fr.yml
Comment thread .github/workflows/sync-translations-fr.yml
@github-actions github-actions Bot temporarily deployed to pull request July 15, 2026 00:57 Inactive
@mmcky mmcky merged commit 5ab8125 into main Jul 15, 2026
6 checks passed
@mmcky mmcky deleted the add-sync-translations-fr branch July 15, 2026 01:03
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.

2 participants