Traductions Automatiques du Blog avec Claude et GitHub Actions
Chaque article que j’écris est traduit automatiquement. Claude gère la traduction, commit les résultats sur main, et les versions traduites sont déployées avec l’original.
Le Flux
Le workflow de traduction s’exécute dans GitHub Actions quand du contenu anglais est mergé sur main :
on:
push:
branches: [main]
paths:
- 'content/**/*.en.md'
flowchart LR
B[Merge sur main] --> C[Traductions générées]
C --> D[Committé sur main]
D --> E[Déploiement en production avec toutes les langues]
Le Prompt
Le workflow utilise claude-code-action :
For each .en.md file that was added or modified:
1. Read the English content
2. Create translations for these languages: es, nl, de, it, fr, ja, zh, ru, hi
3. Save each translation as filename.{lang}.md (e.g., hello-world.es.md)
4. Preserve the frontmatter structure exactly, but translate the title
5. Translate the body content naturally
6. Keep code blocks, URLs, file paths, and technical terms unchanged
Un seul prompt gère les 9 langues. “Traduire naturellement” produit une sortie plus fluide que “traduis ce texte.” Les blocs de code et termes techniques restent en anglais.
Gestion du Front Matter
Les articles Hugo ont un front matter YAML. Certains champs doivent être traduits (titre), d’autres non (date, slug) :
“Préserve la structure du frontmatter exactement, mais traduis le titre”
Anglais :
---
title: "Hello World"
date: 2025-12-20
draft: false
---
Hindi :
---
title: "नमस्ते दुनिया"
date: 2025-12-20
draft: false
---
Le Commit
Le workflow configure une identité de bot et contraint ce que Claude peut faire :
- name: Setup git identity
run: |
git config --global user.email "claude[bot]@users.noreply.github.com"
git config --global user.name "claude[bot]"
- name: Translate with Claude
uses: anthropics/claude-code-action@v1
with:
claude_args: "--allowedTools 'Write,Bash(git:*)'"
prompt: |
...
Use `git add`, `git commit`, and `git push` to add the translations directly to main.
--allowedTools limite Claude à l’écriture de fichiers et l’exécution de commandes git.
Qualité
Suffisant pour un blog personnel. Les traductions de Claude sont fluides et capturent bien le sens. Un locuteur natif remarquerait des formulations occasionnellement maladroites, mais c’est mieux que ce que je pourrais faire moi-même.
Autres Utilisations
Le même pattern fonctionne pour la génération de documentation, les résumés de changelog, l’écriture de messages de commit et les notes de version :
- Détecter ce qui a changé
- Envoyer le contenu à Claude avec des instructions
- Committer les résultats sur la branche