From 648730625898fa67de85baf66c6af2a19c3d20ea Mon Sep 17 00:00:00 2001 From: Matt McKay Date: Tue, 14 Jul 2026 20:00:12 +1000 Subject: [PATCH 1/2] Add French translation sync workflow (sync-translations-fr.yml) 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 --- .github/workflows/sync-translations-fr.yml | 35 ++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/workflows/sync-translations-fr.yml diff --git a/.github/workflows/sync-translations-fr.yml b/.github/workflows/sync-translations-fr.yml new file mode 100644 index 00000000..050c8b9f --- /dev/null +++ b/.github/workflows/sync-translations-fr.yml @@ -0,0 +1,35 @@ +# Sync Translations — French +# On merged PR, translate changed lectures into the French target repo. +# Comment \translate-resync on a merged PR to re-trigger sync. +name: Sync Translations (French) + +on: + pull_request: + types: [closed] + paths: + - 'lectures/**/*.md' + - 'lectures/_toc.yml' + issue_comment: + types: [created] + +jobs: + sync: + if: > + (github.event_name == 'pull_request' && github.event.pull_request.merged == true) || + (github.event_name == 'issue_comment' && contains(github.event.comment.body, '\translate-resync')) + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v7 + with: + fetch-depth: 2 + + - uses: QuantEcon/action-translation@v0.15.0 + with: + mode: sync + target-repo: QuantEcon/lecture-python-programming.fr + target-language: fr + source-language: en + docs-folder: lectures + anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }} + github-token: ${{ secrets.QUANTECON_SERVICES_PAT }} From 07b2b6b9259228df398d20cd4a13fb25e8741801 Mon Sep 17 00:00:00 2001 From: Matt McKay Date: Wed, 15 Jul 2026 10:50:32 +1000 Subject: [PATCH 2/2] Pin French sync to action-translation v0.16.0 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. --- .github/workflows/sync-translations-fr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync-translations-fr.yml b/.github/workflows/sync-translations-fr.yml index 050c8b9f..062ab664 100644 --- a/.github/workflows/sync-translations-fr.yml +++ b/.github/workflows/sync-translations-fr.yml @@ -24,7 +24,7 @@ jobs: with: fetch-depth: 2 - - uses: QuantEcon/action-translation@v0.15.0 + - uses: QuantEcon/action-translation@v0.16.0 with: mode: sync target-repo: QuantEcon/lecture-python-programming.fr