Un blog statique qui traduit ses propres URLs en huit langues

/ Article

Traduction automatique. Lire l’original en anglais: A static blog that translates its own URLs into eight languages →

C’est le premier billet, autant qu’il serve à expliquer la machine qui l’a publié. Tout le site est composé de fichiers statiques. Pas de serveur, pas de base de données, rien à faire tourner.

Écrire un billet

Déposez un fichier markdown dans src/content/blog/en/. Le nom du fichier devient l’URL, donc how-i-removed-greptile.md est publié à /blog/how-i-removed-greptile. Le frontmatter est court :

---
title: How I removed Greptile
description: One sentence for search results and social cards.
pubDate: 2026-08-07
tags: [tooling, code-review]
---

Mettez draft: true tant que vous travaillez encore dessus. Les brouillons s’affichent dans npm run dev mais sont exclus du build.

Traduction

Quand un billet arrive sur main, une GitHub Action l’envoie à DeepSeek V4 Flash et écrit huit traductions dans le repo sous forme de fichiers markdown ordinaires. Le slug est aussi traduit, donc la version turque de ce billet vit à une URL turque plutôt qu’à une URL anglaise bricolée avec un préfixe /tr.

Chaque fichier traduit enregistre un hash de la source anglaise dont il provient. Au prochain passage, les billets dont le hash correspond toujours sont ignorés, donc modifier un billet ne retraduit qu’un billet, pas toute l’archive.

Couche Choix
Framework Astro, sortie statique
Hébergement Cloudflare Workers static assets
Traduction DeepSeek V4 Flash sur Fireworks
Contenu Markdown dans git

Déploiement

Fusionner sur main lance le passage de traduction, commit ce qui a changé, build et déploie. Le build prend quelques secondes et le résultat est un dossier de HTML.

La plus belle propriété d’un site statique, c’est que les modes de panne sont ennuyeux. Rien ne peut tomber en panne à 3h du matin, parce qu’il n’y a rien qui tourne.

Appuyez sur T pour basculer entre clair et sombre, et sur B, A, G ou L pour naviguer sur le site.